1、如何用环回测试检测端口工作状态环回测试是很常用的一种测试,通常用于检查和分析端口或线路问题。如下图所示,我们在设备端口上用命令 loopback(某些端口上命令格式为 loopback diagnostic)使接口从内部将自己发送的信号转接到自己的接收端(如红线所示) ,通过检查数据发送和接收的情况来判断端口工作状态是否正常。如果需要对端口进行完全的检测,可以使用符合标准的短跳线将端口收发短接构成环。如果端口正常,可以将线路的一部分或全部包括到环中进行测试,即在线路中的某个点上进行短接构成环(如紫红色线所示) 。这些点可以是在配线架、CSU/DSU、传输设备等之上。在某些类型的端口上,还可以用
2、命令 loopback line 在端口上将对方发送的信号转接到对方的接收短,构成测试环。观察环回测试成功与否,首先看端口有没有形成环,如用命令 show interface 看看端口是不是已经从 down 状态变到 up 状态,状态中有没有“(looped)” 的字样。端口的某些封装形式,如串行口上的 PPP、帧中继等封装会检测环路,阻止端口变成 up 状态,所以可能要临时改为 HDLC 封装以便进行测试。其次是通过 ping 产生一定的流量,观察有没有丢包,show interface 检查端口计数器有没有显示 input/output 错误,有没有 CRC、Frame 等错误。注意在点对
3、点 类型的端口上ping 路由器本身的地址比 ping 对端路由器的地址延时要小一半,原因可以参考下面的分析。在 ATM 等二层端口上不能直接产生测试数据包,可能需要额外的配置,如在 8500 交换机上可以这样配置:interface atm 1/0/0 /需要进行环回测试的 ATM 二层端口!inter atm 0.1 point-to-pointatm pvc 0 100 interface atm 0/1/0 0 100 encap aal5snapip address 172.31.20.1 255.255.255.0!如果测试发现有丢包情况,可以通过命令 show controlle
4、r 了解更多细节情况。如以下命令显示了某 ATM 端口上的 BIP 错误情况: Routershow controllers atm 3/0/3IF Name: ATM3/0/3 Chip Base Address: BC38E000Port type: OC3 Port rate: 155000 Kbps Port medium: MM FiberPort status:Good Signal Loopback:None Flags:8308.Key: txcell - # cells transmittedrxcell - # cells receivedb1 - # section BI
5、P-8 errorsb2 - # line BIP-8 errorsb3 - # path BIP-8 errorsocd - # out-of-cell delineation errors - not implementedg1 - # path FEBE errorsz2 - # line FEBE errorschcs - # correctable HEC errorsuhcs - # uncorrectable HEC errorstxcell:275849733, rxcell:143010088b1:26, b2:104, b3:34, ocd:0g1:12, z2:0, ch
6、cs:0, uhcs:20.一般而言,环回测试直接了当:观察有没有象意料中的一样形成环,形成环之后有没有发现传输错误,然后根据测试结果调整线路或者设备。但是有的时候,环路测试的结果比较有迷惑性,下面举两个例子:有一次在通讯机房里做环路测试,从本地 E1 传输设备上到本地路由器做环测试没有问题,从本地 E1 传输设备到远端路由器做环测试也没有问题,但从远端 E1 传输设备到本地路由器之间打环测试就会丢包。由于从本地 E1 传输设备到远端路由器做环测试没有问题,所以本地 E1 传输设备和远端 E1 传输设备之间的线路不应该有问题,但只要将这段线路包括进来之后测试就会出现丢包。最后发现原来是这个通讯
7、机房里安装了微波传输设备,干扰大,线路屏蔽不好所以出现丢包。另外一次是一台 8540 ATM 交换机和 12406 路由器 ATM 端口通过一段短短的尾纤相连却发现大量 CRC 错误,更换了端口模块、尾纤都没有排除故障,反复观察才发现原来8540 交换机的时钟同步信号存在问题。还有一个特殊情况就是 3750、3550、2950 等以太网交换机在端口上发送 keep alive 信息以检查端口是否激活,如果端口被环回,按照默认的错误检测处理(errdisable)规则,端口将会关闭。除非设置了错误恢复 (errdisable recovery)功能,否则在管理员干预之前端口不会恢复到正常工作状态
8、。更严重的是网络中短暂的环路( 如错误的连接、生成树配置错误) 等都会引发这个错误,所以建议用端口配置命令 no keepalive 关闭端口激活检测或通过全局配置命令 no errdisable detect cause loop 防止因环回错误关闭端口,中断网络连接。附:点对点端口上的 ping 数据观察与分析(ping 对端地址需要一个来回,ping 自己的地址需要两个来回)测试情况,R1 端口地址为 172.31.20.1,对端 R2 地址为 172.31.20.254R1#pingProtocol ip:Target IP address: 172.31.20.254 /ping R
9、2 地址Repeat count 5: 1.Sending 1, 100-byte ICMP Echos to 172.31.20.254, timeout is 2 seconds:!Success rate is 100 percent (1/1), round-trip min/avg/max = 8/8/8 ms(debug 输出)Apr 10 12:19:03.994: IP: s=172.31.20.1 (local), d=172.31.20.254 (Serial4/0/0), len 100, sendingApr 10 12:19:03.994: ICMP type=8,
10、code=0 R1 发出一个 Echo Request(type=8),R2 收到后以 Echo Reply 相应Apr 10 12:19:04.002: IP: s=172.31.20.254 (Serial4/0/0), d=172.31.20.1 (Serial4/0/0), len 100, rcvd 3Apr 10 12:19:04.002: ICMP type=0, code=0 R1 收到 Echo Reply(type=0),计算延时(002-994=8ms)。R1#pingProtocol ip:Target IP address: 172.31.20.1 /ping R1
11、自己的地址Repeat count 5: 1Sending 1, 100-byte ICMP Echos to 172.31.20.1, timeout is 2 seconds:Success rate is 100 percent (1/1), round-trip min/avg/max = 16/16/16 ms(debug 输出)Apr 10 12:18:00.106: IP: s=172.31.20.1 (local), d=172.31.20.1 (Serial4/0/0), len 100, sendingApr 10 12:18:00.106: ICMP type=8, co
12、de=0 R2 发出一个 Echo Request(type=8)Apr 10 12:18:00.114: IP: s=172.31.20.1 (Serial4/0/0), d=172.31.20.1 (Serial4/0/0), len 100, rcvd 3Apr 10 12:18:00.114: ICMP type=8, code=0 R2 收到 Echo Request,判断的目标地址为 R1,所以将包发回Apr 10 12:18:00.114: IP: s=172.31.20.1 (local), d=172.31.20.1 (Serial4/0/0), len 100, sendingApr 10 12:18:00.114: ICMP type=0, code=0 R1 收到自己发出的 Echo Request,以 Echo Reply(type=0)相应并通过端口发送Apr 10 12:18:00.122: IP: s=172.31.20.1 (Serial4/0/0), d=172.31.20.1 (Serial4/0/0), len 100, rcvd 3Apr 10 12:18:00.122: ICMP type=0, code=0 R2 将包发回。R1 收到 Echo Reply (type=0),计算延时(112-106=16ms)。