1 引言
作为网络工程师,在网络环境出现故障时,及时定位故障并解决故障是十分重要的。本文以CISCO路由式网络为基础,介绍使用诊断工具对Cisco路由器进行故障诊断的方法。限于篇幅,我们所介绍的内容和示例主要是基于IP报文的,基于IPX和Appletalk等协议的诊断技术与此类似。
2 路由器的功能特性和体系结构
在学习Cisco路由器上可使用的各种故障排除和诊断工具之前,了解路由器的基本体系结构是十分重要的。网络工程师应该理解诊断命令执行时所起的作用以及对于路由器性能所产生的影响。
交换与路由是我们在网络互联中经常遇到的术语。此处所说的交换与局域网中的帧级交换是完全不同的概念。交换过程是指路由器如何在两个不同的接口间传送报文。
比如,路由器在以太网接口0接收到一个报文。路由器首先从报文中获取MAC头信息,然后检查网络层报文头。路由器检查路由表是否有与报文的目的地址匹配的表项。假设路由表中包含匹配的项,并且下一跳地址是另外一个路由器,该路由器可以通过以太网接口1到达。然后路由器需要检查下一跳的第二层地址。如果它没有该地址,则需要在以太网接口1发送ARP广播报文。如果没有接收到ARP响应,路由器则将该报文丢弃。如果有响应信息,路由器则建立到下一跳路由器的以太网帧。在这个例子中,路由器从接收到以太网帧到建立并发送以太网帧的整个过程称为交换过程。需要注意的是,ARP解析过程通常不认为是交换过程的一部分。上面的过程中,执行路由表查询以寻找下一跳的地址表明采用了交换过程。这是一种最简单的报文交换方法,因而其开销和延迟都比较大。所有的路由协议最终都依赖于路由表的建立,路由器通过接收运行相同协议的相邻路由器发送的路由更新报文来更新相应的路由表,我们称之为路由过程(routing process),它主要由路由处理器完成。
目前在国内应用比较广泛的Cisco路由器包括2500系列、4000系列、7000系列和7500系列,这些路由器进行路由的过程基本上是相似的,但是交换的过程却根据其系统结构的不同而不同。
7000系列支持过程交换、快速交换、自治交换和硅交换。Cisco 7500系列路由器比7000系列在体系结构方面有很多改进。路由处理器和交换处理器的功能被集成到路由器交换处理器(RSP)中。这一新的体系结构减少了快速交换时系统总线的负载。集成后的功能对路由处理器和交换处理器都作了性能、稳定性、可扩充性和安全等方面的优化。7500系列路由器既不支持自治交换也支持硅交换,它支持更加灵活的优化交换。
Cisco 4000/2500系列路由器的硬件结构比7000/7500系列路由器的硬件结构简单。这些设备只在交换过程中才共享存储器。所有的报文缓存和Cache都位于共享存储器中,因此只支持快速交换或过程交换。
需要知道过程交换需要通过查询路由表来做出路由选择,而且其他交换技术都是通过缓存来提高交换速度的,因为其缓存的位置不同而分别称为不同的技术。
#p#实例:Router# show interface e0/0
Ethernet0/0 is up, line protocol is down
Hardware is AmdP2, address is 0009.4375.5e20 (bia 0009.4375.5e20)
Internet address is 192.168.1.53/24
MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec,
reliability 172/255, txload 3/255, rxload 39/255
Encapsulation ARPA, loopback not set
Keepalive set (10 sec)
ARP type: ARPA, ARP Timeout 04:00:00
Last input never, output 00:00:07, output hang never
Last clearing of "show interface" counters never
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output
drops: 0
Queueing strategy: fifo
Output queue :0/40 (size/max)
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
0 packets input, 0 bytes, 0 no buffer
Received 0 broadcasts, 0 runts, 0 giants, 0 throttles
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
0 input packets with dribble condition detected
50 packets output, 3270 bytes, 0 underruns
50 output errors, 0 collisions, 2 interface resets
0 babbles, 0 late collision, 0 deferred
50 lost carrier, 0 no carrier
0 output buffer failures, 0 output buffers swapped out
(1) 接口和活动状态
在上面的显示中,内容表示硬件接口是活动的,而处理行协议的软件过程相信此接口可用。如果路由器操作员拆卸此硬件接口,第一个字段将显示信息is administratively down.如果路由器在活动间隔内收到5000个以上的错误,单词Disabled将出现在此字段中,以显示连路由器自动禁用此端口。行协议字段还显示以前提到的三个描述之一:up、down、administratively down.如果字段项是up,则表示处理行协议和软件过程相信此接口可用,因为她正在接收keepalives的目的也是如此,其他设备可以确定某个空闲连接是否仍然活动。对于以太网接口,Keepalives的默认值是10s。我们不久将注意到,Keepalives设置可以通过为特定接口使用show interfaces命令来获得。可以用keepalive interface 命令来改变keepalives设置。此命令的格式如下:Keepalive seconds
(2) 硬件字段为你提供接口的硬件类型
在以上的例子中,硬件是CISCO扩展总线(CxBus)以太网,即接口处理器的533-Mbps数据总线。因此,硬件通知我们高速CxBus接口处理器用于支持以太网连接。同时还要注意显示字段包括接口的Mac地址。Mac是48位长的。因为Mac地址的头24位是表示生产厂家ID,所以十六进制数00-10-79是由IEEE分配给Csico的标识符。
(3) Internet地址
如果某个接口是为IP路由配置,那么将为它分配一个Internet地址。此地址后面是他的子网掩码。IP地址是205.141.192.1/24。反斜杠(/)后面表示此地址的头24位表示网络,他等于子网掩码255.255.255.0。
(4) MTU
最大传输单元(MTU)表示运行在接口上的协议的信息字段所支持的最大字节数。因为以太网桢的信息字段的最大长度是1500字节,所以它的MTU显示为1500字节。对于几乎所有的以太网应用程序,默认的1500字节MTU应该是有效的。对于令牌环,默认的MTU值为8192字节;但是应该注意的一点是RFC1191建议的MTU值为16-Mbps令牌环选择17914的,而为4-Mbps令牌环选择4464字节。最小的MTU是64个字节,而最大的值是65535字节。如果IP数据报超过最大的MTU,将对它进行分段,这将增加额外开销,因为每个最后的数据报都包含它自己的报头。虽然在高速LAN连接中,通常无需担心与分段有关的额外开销,但在低速串行接口上,这可能会是一个比较严重的问题。可以用MTUinterface命令来改变默认的MTU,此命令格式如下:
mtu bytes
字节数可以是从64~6553。
(5) BW
接口带宽(BW)通常指的是接口的运行速率,用每秒千字节表示。因为以太网运行速率为10Mbps,所以BW值显示为10 000Kb。
可以用Bandwidth命令设置信息带宽值,但实际上不用它来调整接口的带宽,因为对于某些类型的介质,如以太网,带宽是固定的。对于其他的介质,如串行线,通常通过调整硬件来调整其运行速率。例如通过DSU/CSU上设置不同的时钟速率来提高或降低串行接口的运行速率。因此,bandwidth命令主要目的是使当前带宽与高层协议通信。可以通过以下命令格式设置带宽值,千位表示以千位每秒表示的带宽。Bandwidth kilobits
(6) DLY
此字段表示接口的延迟,用微秒表示。以太网的延迟(DLY)为1000s。可以使用delay interface命令为接口设置延迟值。此命令的格式如下:
delay tens-of-microseconds
(7) 可靠性
可靠性字段表示接口的可靠性,用255分之几表示。此字段中所显示的值由在5分钟内的幂平均值计算。因为以太网为每个桢计算CRC,所以可靠性是基于CRC错误率,而不是位错误率。255/255表示接口在5分钟内100%可靠。
虽然没有可靠性命令,可以考虑定期使用的一个重要命令是clear conuter EXEC命令。此命令的功能是清楚或重置接口计数器。此命令的一般格式取决于正在使用的路由器。下面显示的是第二种格式用于Cisco7000系列产品:
clear counter [type number]
clear counter [type slot/port]
type表示特定的接口类型。如果你不指定特定接口,所有接口的计数器都被清除。
(8) 负载
接口上的发送和接收负载均显示为255分之几。与可靠性字段类似,负载字段也是计算5分钟内的幂平均值。从上面可以看出,发送(Txload)负载表示为3/255,而接收(rxload)负载为39/255。因为以太网运行速率为10Mbps,所以可以通过将每分数乘以运行速率来获得接口活动的一般指示。这是因为每个以太网桢都至少有26个额外字节,而当信息字段少于45字节时,将使PAD字符添加到信息字段中。【未完待续】
#p#2. 路由器与Internet接入设备的连接路由器的主要应用互联网的连接,路由器与互联网接入设备的连接情况主要有以下几种:
(1).通过异步串行口连接
异步串口主要是用来与Modem设连接,用于实现远程计算机通过公用电话网拨入局域网络。除此之外,也可用于连接其他终端。当路由器通过电缆与Modem连接时,必须使用AYSNC-to-DB25或AYSNC-to-DB9适配器来连接。路由器与Modem或终端的连接如图12所示。
(2).同步串行口
在路由器中所能支持的同步串行端口类型比较多,如Cisco系统就可以支持5种不同类型的同步串行端口,分别是:EIA/TIA-232接口、EIA/TIA-449接口、V.35接口、X.21串行电缆总成和EIA-530接口,所对应的适配器图示分别如图13、图14、图15、图16、图17所示。但是在这里要注意的一点就是,因为一般来说适配器连线的两端是采用不同的外形(一般称带插针之类推适配器头一端称之为“公头”,而带有孔的适配器一端通常称之为“母头”,注意“EIA-530”接口两端都是一样的接口类型),这主要是考虑到连接的紧密。图中的“公头”为DTE(数据终端设备,Data Terminal Equipment)连接适配器,下方“母头”为DCE(数据通信设备,Data Communications Equipment)连接适配器。如图18所示为同步串行口与Internet接入设备连接的示意图,在连接时只需要对应看一下连接用线与设备端接口类型就可以知道正确选择了。





(3).ISDN BRI端口
Cisco路由器的ISDN BRI模块一般可分为两类,一是ISDN BRI S/T模块,二是ISDN BRI U模块,前者必须ISDN 的NT1终端设备一起才能实现与Internet的连接,因为S/T端口只能接数字电话设备,不适用当前现状,但通过NT1后就可连接现有的模拟电话设备了,连接图如图19所示。而后者由于内置有NT1模块,我们称之为“NT1+”终端设备,它的“U”端口可以直接连接模拟电话外线,因此,无需再外接ISDN NT1,可以直接连接至电话线墙板插座,如图20所示。

与前面讲的一样,路由器的配置端口依据配置的方式的不同,所采用的端口也不一样,主要的仍是两种,一种是本地配置所采用的“Console”端口,另一种是远程配置时采用的“AUX”端口,下面分别讲一下各自的连接方式。
(1). Console端口的连接方式
当使用计算机配置路由器时,必须使用翻转线将路由器的Console口与计算机的串口/并口连接在一起,这种连接线一般来说需要特制,根据计算机端所使用的是串口还是并口,选择制作RJ-45-to-DB-9或RJ-45-to-DB-25转换用适配器,如图21所示。

(2). AUX端口的连接方式
当需要通过远程访问的方式实现对路由器的配置时,就需要采用AUX端口进行了。AUX其实与上面所讲的接口结构与RJ-45一样,只是里面所对应的电路不同,实现的功能也不同而已,根据Modem所使用的端口情况不同,来确定通过AUX端口与Modem进行连接所也必须借助于RJ-45 to DB9或RJ-45 to DB25的收发器的选择。路由器的AUX端口与Modem的连接方式如图22所示。
通过以上比较详细的介绍,相信大家对路由器的各种接口及连接方法有了一个较全面的了解,相信也增加了自己动手为自己公司的路由器连接、配置的信心。
#p#2. 广域网接口
在上面就讲过,路由器不仅能实现局域网之间连接,更重要的应用还是在于局域网与广域网、广域网与广域网之间的连接。但是因为广域网规模大,网络环境复杂,所以也就决定了路由器用于连接广域网的端口的速率要求非常高,在以太网中一般都要求在100Mbps快速以太网以上。下面介绍几种常见的广域网接口。
(1).RJ-45端口
利用RJ-45端口也可以建立广域网与局域网VLAN(虚拟局域网)之间,以及与远程网络或Internet的连接。如果使用路由器为不同VLAN提供路由时,可以直接利用双绞线连接至不同的VLAN端口。但要注意这里的RJ-45端口所连接的网络一般就不太可有是10Base-T这种了,一般都是100Mbps快速以太网以上。如果必须通过光纤连接至远程网络,或连接的是其他类型的端口时,则需要借助于收发转发器才能实现彼此之间的连接。如图5所示为快速以太网(Fast Ethernet)端口。
2).AUI端口
AUI端口我们在局域网中也讲过,它是用于与粗同轴电缆连接的网络接口,其实AUI端口也被常用于与广域网的连接,但是这种接口类型在广域网应用得比较少。在Cisco 2600系列路由器上,提供了AUI与RJ-45两个广域网连接端口(如图6所示),用户可以根据自己的需要选择适当的类型。
3).高速同步串口
在路由器的广域网连接中,应用最多的端口还要算“高速同步串口”(SERIAL)了,如图7所示。
这种端口主要是用于连接目前应用非常广泛的DDN、帧中继(Frame Relay)、X.25、PSTN(模拟电话线路)等网络连接模式。在企业网之间有时也通过DDN或X.25等广域网连接技术进行专线连接。这种同步端口一般要求速率非常高,因为一般来说通过这种端口所连接的网络的两端都要求实时同步。
#p#4).异步串口异步串口(ASYNC)主要是应用于Modem或Modem池的连接,如图8所示。它主要用于实现远程计算机通过公用电话网拨入网络。这种异步端口相对于上面介绍的同步端口来说在速率上要求就松许多,因为它并不要求网络的两端保持实时同步,只要求能连续即可,主要是因为这种接口所连接的通信方式速率较低。
(5).ISDN BRI端口
因ISDN这种互联网接入方式连接速度上有它独特的一面,所以在当时ISDN刚兴起时在互联网的连接方式上还得到了充分的应用。ISDN BRI端口用于ISDN线路通过路由器实现与Internet或其他远程网络的连接,可实现128Kbps的通信速率。ISDN有两种速率连接端口,一种是ISDN BRI(基本速率接口);另一种是ISDN PRI(基群速率接口)。ISDN BRI端口是采用RJ-45标准,与ISDN NT1的连接使用RJ-45-to-RJ-45直通线。如图9所示的BRI为ISDN BRI端口。
3. 路由器配置接口
路由器的配置端口有两个,分别是“Console”和“AUX”,“Console”通常是用来进行路由器的基本配置时通过专用连线与计算机连用的,而“AUX”是用于路由器的远程配置连接用的。
1.Console端口
Console端口使用配置专用连线直接连接至计算机的串口,利用终端仿真程序(如Windows下的“超级终端”)进行路由器本地配置。路由器的Console端口多为RJ-45端口。如下图10所示就包含了一个Console配置端口。
2.AUX端口
AUX端口为异步端口,主要用于远程配置,也可用于拔号连接,还可通过收发器与MODEM进行连接。AUX端口与Console端口通常同时提供,因为它们各自的用途不一样。接口图示仍参见上述图10。
限制方法:使用IP访问控制列表
interface Vlan1
ip address 1.1.1.254 255.255.255.0
ip access-group 100 in
!
access-list 100 permit ip host 1.1.1.1 host 2.1.1.1
突破方法:非法用户将IP地址自行改为1.1.1.1即可访问Server。 非法用户抢占地址1.1.1.1将会引起IP地址冲突问题。如果用户将IP地址设成网关的IP,还会影响到整个VLAN的通讯。通过修改Windows 设置,可以防止用户修改“网络”属性,但这一方法也很容易被突破。
测试2.在测试1的基础上加上静态ARP绑定可以防止IP地址盗用。
实现方法:在测试1配置的基础上设置arp 1.1.1.1 0001.0001.1111 ARPA
注意以下的命令是错误的,因为ARP的端口参数是三层(路由)端口而非二层(交换)端口:
arp 1.1.1.1 0001.0001.1111 ARPA GigabitEthernet0/11
设置完成之后,如果非法用户把地址改为1.1.1.1,它发送到路由器的包正常,但是从目标服务器2.1.1.1返回的数据包在路由器上转发的时候,目标MAC地址将总是设为0001.0001.1111,非法用户不能接收。
类似办法:使用“ARP SERVER”按一定的时间间隔广播网段内所有主机的正确IP-MAC映射表
突破方法:修改MAC地址很容易,在Windows网络连接设置修改网卡的配置,在“高级”页面中找到Network Address设置为指定的值即可。
测试3.使用Port Secure
原理:如果限制了指定端口只能被特定MAC地址的机器,用户若更改了MAC地址端口将会进入不可用状态。
设置方法:
interface g 0/1
switchport mode access
switchport port-security
设置完成之后,交换机端口上首次连接的PC的MAC地址将会记录到交换机中,成为唯一能够使用该端口的MAC地址。如果该PC更换MAC地址,默认将会使用端口置于shutdown状态,无法与网络连通。
可以使用命令设置安全冲突的处理方法:
sw port-security violation [protect | restrict | shutdown ]
protect 丢弃来自非法源地址的包,不告警
restrict 丢弃来自非法源地址的包,发送syslog告警
shutdown(默认) 关闭端口,发送SNMP trap、Syslog 告警,除非管理员执行命令shut/no shut,否则端口一直处理down状态。
突破方法:代理服务器。用户在同一VLAN内能够对外访问的主机上安装代理服务器,通过代理访问。
测试4.使用VLAN,PVLAN隔离用户
原理:将授权用户和非授权用户划分到不同的VLAN中,并使用访问控制列表限制VLAN间的通讯。也可以使用PVLAN隔离使同一VLAN间某些主机之间不能直接通讯。。
interface range g 0/10
description Connect to PC1
switchport access vlan 7
interface range g 0/11
description Connect to PC2
switchport access vlan 8
mac access-list extended macacl
permit host 0000.0c31.ba9b any
permit any host 0000.0c31.ba9b
interface FastEthernet0/1
no ip address
ip access-group ipacl in
mac access-group macacl in
ip access-list extended ipacl
permit ip any host 1.1.1.1
permit ip host 1.1.1.1 any
突破方法:该用户跑到授权用户的机器上访问
这是非典型的突破方法,目前还没有很好的解决方法。
其他可能的限制方法:
1.认证代理:用户访问特定资源前必须在某个网页上输入用户名和密码,否则不通
2.802.1x:用户通过802.1x认证同时由DHCP服务器分配IP地址,否则不通
3.PPPoE:用户需安装PPPoE客户端软件,使用用户名和密码登录网络才能使用
讨论更新:一位叫Maying的朋友看了本文之后到BBS发帖子询问:“如何在路由器上设置过滤掉某个特定mac地址的流量?不希望使用这个mac地址的主机通过路由器!”。
这个要求比较新鲜。当你针对一个MAC地址进行过滤的时候,这一动作发生在第二层。而路由器一般执行的是第三层路由的任务,只有很少情况下做桥接的时候才对进入的MAC地址进行过滤,所以这样的过滤最好设置在二层交换设备上。
但这个要求对路由器来说也不是不可能的任务,麦子使用以下配置达到了要求的效果:
ip cef //Rate-limit 需要cef的支持,路由器可能默认未启用cef
interface Ethernet0/0
ip address 192.168.1.254 255.255.255.0
rate-limit input access-group rate-limit 100 8000 1500 2000 conform-action drop exceed-action drop
//如果源MAC地址为指定值则丢弃(其他的都允许)
access-list rate-limit 100 0001.0001.abcd //要限制的MAC地址
这时候要注意,目标工作站到达该路由器之前不能经过其他三层设备,否则MAC地址会被改掉。
讨论更新:Maying朋友再问:“我的路由器是Cisco 1720, 不支持CEF,怎么办?”
Cisco 1720路由器能够支持CEF, 但要求是12.0(3)T以上IP PLUS版本的软件,12.2(11)YV 起标准IP版软件也可以支持CEF。如果路由器目前IOS软件版本不够,需要升级。
也可以使用桥接(IRB)的方法来解决,这种方法只需要12.0(2)T 以上标准IP版软件即可。配置如下:
bridge irb //启用IRB支持
interface Ethernet0/0
no ip address //路由做到逻辑端口BVI 1上
bridge-group 1 //加入桥接组1
!
interface BVI1
ip address 192.168.1.254 255.255.255.0 //为桥接组1提供路由
!
bridge 1 protocol ieee //运行生成树协议防止环路
bridge 1 route ip //路由IP流量
bridge 1 address 0001.0001.abcd discard //丢弃来着于MAC地址0001.0001.abcd的数据包
3 故障诊断与排除命令
Cisco ISO操作系统软件提供了一组功能丰富的命令,可以用来进行故障查找与排除、问题诊断以及性能检测。命令大致可以分为两类:show命令和debug命令。同时,还包含一组用于连接这两类命令的clear命令。下面我们分别讲解各命令
3.1 show命令
在这一节中,我们将讲述最常用的show命令,阐述这些命令的输出以及这些命令适用于解决的故障类型。为了叙述清楚,这些命令被分为全局系统命令、与接口相关的命令和与协议相关的命令。我们仅讨论最常使用的命令。
全局系统命令
本节将列出与路由器软件和硬件相关的输出命令,其中包括存储区和电源。show version命令是最基本的命令之一,它显示路由器本身以及其所使用的软、硬件的基本信息。show hardware命令的功能与show version命令类似。
命令的输出信息包括:IOS的版本、路由器持续运行的时间约23周、最近一次重启动的原因、路由器主存的大小、共享存储器的大小、闪存的大小、IOS映像的文件名,以及路由器从何处启动等信息。show version命令显示了路由器的许多非常有用的信息。在解决问题时,通常应该从这个命令开始收集数据。
如果路由器的多个接口同时丢失报文,则可能由于路由器内存不足或者CPU过载。用户可以使用show memory命令检查内存利用率(如下所示)。CPU利用率可以使用show process命令检查。
YH-Router#show memory
Head Total(b) Used(b) Free(b) Lowest(b) Largest(b)
Processor 60DB19C0 19195456 6162924 13032532 11615164 11250780
Fast 60DB19C0 131072 128344 2728 2728 2684
show memory的前两行显示了存储器的一般信息,它表明系统有足够可用的内存。同时它还显示内存中没有碎片,因为在13.03兆字节可用内存中最大的可用块接近11.25兆字节。内存碎片表明内存被划分为了许多不连续的块。它将导致内存的利用率降低,严重时可能产生内存错误从而也严重影响路由器的性能。
现在看一看路由器中有许多内存碎片的情形(如下所示)。此时我们有足够多的可用内存(8.4兆字节),但是其中最大的块仅为0.5兆字节。连续内存中没有足够大的可用块,这有可能导致严重的内存分配问题。这些问题有时表现为一个或多个接口间歇性的丢失报文。此时路由器产生内存碎片错误消息。
HX-Router#sh mem
Head Total(b) Used(b) Free(b) Lowest(b) Largest(b)
Processor 60DB19C0 19195456 10713712 8481744 192680 586748
Fast 60DB19C0 131072 90936 40136 40136 40092
使用命令show memory free,用户可以看到可用内存被划分为许多很小的碎片。需要注意的是,路由器中存在一定数量的内存碎片是正常的。虽然并没有一个很严格的界限来划分内存碎片的可接受程度,但是可用块的大小至少应该不小于可用内存的一半。用户可以通过重新启动路由器来解决这个问题。在重新启动时,系统重新分配内存和缓存空间。此时,用户应该监视内存分配的过程。如果再次发生类似的情况,则应该咨询Cisco TAC。
用户可以使用show process cpu命令检查路由器的CPU是否过载。该命令将给出路由器CPU的利用率,同时显示路由器中不同进程的CPU占用率。在下述示例中,路由器的CPU工作正常。在通常情况下,在5分钟内CPU的平均利用率小于60%是可以接受的。如果怀疑CPU利用率出现了问题,则需要不断地监视这一参数,因为它可能在短时间内发生变化。最好每10秒钟使用一次该命令。通过这种方法,可以清楚地了解CPU利用率的波动情况。
YH-Router#sh process cpu
CPU utilization for five seconds:15%/4%;one minute:175;five minutes:19%
PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process
1 460184 5380085 85 0.00% 0.00% 0.00% 0 NTP
2 252749536 2384205 106010 0.00% 2.35% 2.65% 0 Check Heaps
......
13 26155236 9135958 2862 0.32% 0.25% 0.22% 0 IP Background
14 317720 150150 2116 0.00% 0.00% 0.00% 0 IP Cache ager
......
23 51598380 135094851 381 0.32% 0.24% 0.28% 0 IPX Input
24 86792124 23662071 3667 0.98% 0.87% 0.89% 0 IPX RIP
25 438480948 123384161 3553 7.94% 3.31% 3.91% 0 IPX SAP
......
如果CPU的平均利用率超过了80%,则表明路由器过载。下一步需要检测那一些进程导致了CPU利用率过高。在上面的显示中,我们可以看到进程IPX SAP占用了绝大部分的CPU处理能力,但是它还在可以接受的范围之内。有时候,如果SRB background参数持续过高,则表明发生了路由网桥风暴。
show process memory命令可以用来给出路由器可用内存的一般信息,然后显示每一个进程所占用的内存空间的详细信息。
如果路由器由于临时重启动而完全崩溃,则相应的错误消息将包含在show version命令的输出中。show stack命令用于跟踪路由器的堆栈,提供路由器临时重新启动的原因。如果由于错误而导致重新启动,堆栈记录将在输出的末尾显示。为了抽取与故障相关的信息,堆栈记录需要解码。这一工作通常由Cisco TAC工程师完成。此外,拥有相应CCO登录ID的用户可以通过将show stack命令的输出发送到CCO而获得解码信息。堆栈记录解码的结果有时与Cisco路由器的bug有关。
当用户向Cisco TAC报告故障时,支持技术人员通常要求用户发送show tech_support命令的输出结果。这个命令将导致下述命令的按序执行:Show version、Show controllers、Show buffers、Show interface、Show stack、Show process cpu、Show process memory和Show running-config。这些命令的组合将给出路由器配置以及大多数关键性能参数的详细信息。show tech_support命令的输出对于Cisco TAC技术人员解决复杂网络问题是十分有用。
与接口相关的命令
下面我们将阐述一些直接与路由器活跃接口相关的命令。show ip interface brief将显示每一个路由器接口的IP地址信息以及第二层的状态信息(如下所示)。其他与IP对应的协议的相关性信息可以通过相应命令属性获得,比如show ipx interface brief。
YH-Router#sh ip in brief
Interface IP-Address OK? Method Status Protocol
TokenRing0/0 172.26.12.3 YES NVRAM up up
TokenRing0/1 172.27.12.3 YES NVRAM up up
TokenRing0/2 172.28.12.3 YES NVRAM up up
TokenRing0/3 unassigned YES NVRAM administratively down down
Ethernet1/0 172.30.12.3 YES NVRAM up up
Ethernet1/0 172.31.12.3 YES NVRAM up up
Ethernet1/0 172.32.12.3 YES NVRAM up up
Ethernet1/0 172.33.12.3 YES NVRAM up up
show interface命令可以获得更多的信息。我们以以太网为例来讨论这些通用接口参数。
YH-Router#sh int e1/0
Ethernet1/0 is up,line protcol is up
Hardware is cxBus Ethernet,address is 00e0.f78a.6d40(bia 00e0.f78a.6d40)
Description:seg=E2 LAB SRV1
Internet address is 172.30.12.3/16
MTU 1500bytes,BW 10000Kbit,DLY 1000usec,rely 255/255,load 1/255
Encapsulation ARPA, loopback not set, keepalive set(10sec)
ARP type:ARPA,ARP Timeout 04:00:00
Last input 00:00:00,output 00:00:00,output hang never
Queueing strategy:fifo
Output queue 0/40,44 drops;input queue 0/75,66114 drops
5 minute input rate 181000 bits/sec,23 packets/sec
5 minute output rate 43000 bits/sec,26 packets/sec
525599659 packets input,2042735431 bytes, 0 no buffer
Received 4004547 broadcasts,10 runts,0 giants
139 input errors, 0 CRC, 129 frame, 0 overrun, 0 ignored, 0 abort
0 input packets with dribble condition detected
481020335 packets output, 1069273018 bytes, 47 underruns
20 output errors, 95880485 collisions, 0 interface resets
0 babbles, 0 late collision, 0 deferred
0 lost carrier, 0 no carrier
0 output buffer failures, 0 output buffers swapped out
其中:
Ethernet 1/0 is up 表明OSI模型的第一层成功启动。
Line protocol up 表明第二层成功启动 。
Description 用户自定义的描述。使用这一功能给出接口准确的描述是十分重要的。在一个大型组织中,一个局部网络的工程师很难定位发生故障的路由器。
MTU 指定最大传输单元,用户可以配置。
BW、Dly、rely、load(带宽、延迟、可靠性和负载):这些参数与IGRP/EIGRP标准有关。带宽和延迟的配置可以影响到路由选择。在工作正常的接口中,可靠性的值为255。除非在十分繁忙的条件下,否则负载通常不应超过150/255。
Encapsulation 它指在接口的第二层封装。在以太网中,对于IP,Cisco的缺省设置为ARPA,而IPX的缺省设置为Novell-Ether。
从输出中还能获取哪些其他的信息呢?读者可以看到,ARP cache timeout的值为4小时(该值为缺省设置)。从路由器接口输入到输出的时间不到1秒钟。输出从未被挂起。接口计数器最后一次被清0是在5个星期以前。在评估接口的统计信息时,这些数据是十分有用的。在通常情况下,可以将计数器清0以便作进一步的监视。
接口所采用的是FIFO排队规则。输出队列和输入队列的缺省长度分别为40和75。队列中都不包含报文。在计数器最后一次被清0后,输入队列丢失了许多报文。但是,正如我们前面所说的,计数器5个星期未被清0;因此,该值不能说明一定发生了网络故障。在这种情况下,应该首先将计数器清0,然后再监视输出队列的丢失报文数。
同时,命令的输出中还显示每1秒钟通过路由器接口的平均信息量(以字节为单位)以及报文数。这些参数的总量信息、路由器接口观测到的所有广播报文的数量也在命令的输出中显示。如果广播报文的数量增长非常迅速,尤其是如果相对于输入报文的数量非常高,则表明在局域网段中有广播风暴。由于某些特定的应用程序需要频繁使用广播报文,因此确定广播报文的数量阀值是很困难的。但是,如果广播报文的数量超过了整个输入报文的30%,则需要使用局域网协议分析仪进一步检测网络。
#p#我们还可以获取接口的下列错误检测信息:
Runts 是指大小小于最小值的报文。在示例的以太网中,该值为64。以太网中指定最小报文大小大小是由于在这种传输模式下的工作站需要检测碰撞。如果以太网段中包含以太网中继器并且其距离符合规定的标准,最小报文大小大小可以使处在这种传输模式下的工作站检测线路中的任何碰撞。
Giants 指大小超过线路可以承受的最大报文大小的报文。以太网的MTU通常为1500字节,或者最大的封装数据为1500字节。
Input errors 指到达报文中检测到的错误,也可能表明网段本身发生了错误。
Output errors 指输出报文中的错误,它可能表明路由器接口本身发生了故障。
CRCs 由于报文不正确的以太网校验和而检测到的循环冗余校验错。它可能由于网段的噪声引起,或者由于网卡故障、报文冲突引发。CRC的频率应是每100000个输入报文中发生一次。
Frame errors 指接收到的帧的类型与路由器以太网帧类型(IP协议帧类型为ARPA)不匹配。
Aborts 在碰撞检测中过度的重传而导致的问题。在以太网中,重传的最大次数不超过15次。
Dribble condition 指接收到的帧比MTU大,但不属于Giants。
Babble 是指持续接收到可疑的帧。
Deferred 如果线路繁忙,报文在传输时将被延缓发送。
Interface resets 在检测到过多的错误时,路由器将重置接口。这些错误可能存在于局域网段中,也可能是接口本身的错误。在此不能够判断具体是那儿发生故障,但是,如果伴随着大量的输出错误,则表明路由器接口本身发生故障。
Collisions 在以太网中,冲突被分为两大类:early和late。early collision 由发送方在帧的前64个字节进入线路之前检测到的冲突。early collision是以太网CSMA/CD访问方法中的组成部分。early collision通常导致小的被中断的帧或称为runt。Late collision发生在帧的多个字节(大于64)被发送到线路中时产生的冲突。在理论上,以太网不会产生此类冲突。产生late collision的原因包括:
电缆违反了距离规则。
发生故障的NIC卡不正确地监听线路。
Lost carrier 表明在计数器最后一次清0后,载波和线路协议发生的故障。此类故障通常与路由器无关。例如,载波丢失可能是因为路由器与集线器之间的电缆连接中断。
Buffer parameters show interface命令还提供与缓冲区分配有关的故障信息,它包括no buffer、overruns、ignored、underruns、buffer failures和swapped out buffers等。
上面,我们详细讨论了show interface命令的用法。这些命令的输出提供了与路由器接口相关以及与传输介质相关的参数等有价值的信息。
show controller命令提供连接到路由器接口物理线路以及传输介质的详细信息。并且提供状态的历史信息。其中一些详细信息很少被使用,它们一般仅被TAC技术人员用于解决十分复杂的问题。
与协议相关的命令
本节将讨论如何使用与不同协议相关的显示命令。
show protocol命令给出了路由器运行的协议信息以及路由这些协议的每一个接口的地址信息(如下所示)。
YH-Router#sh protocol
Global values:
Internet Protocol routing is enabled
Novell routing is enabled
Serial0 is up, line protocol is up
Internet address is 171.137.8.130/25
Novell address is AB890880.0000.30e8.b7c8
Serial1 is administratively down, line protocol is down
TokenRing0 is up, line protocol is up
Internet address is 171.137.6.1/25
Novell address is AB890600.0000.30e8.b7c8
......
3.2 Debug命令
Cisco IOS 软件中包含大量的调试命令。这些命令可以在路由器正常工作或者发生网络故障时获得在路由器中交换的报文和帧的细节信息。调试命令在排除网络故障时的特殊功能,可以减少用户对协议分析仪的需求。在使用调试命令时,需要注意以下几点:
在没有完全掌握调试命令的工作过程以及它所提供的信息时,不要使用调试命令。
调试命令仅能捕获通过过程交换的报文。调试命令会明显增加处理器的负载。某一些命令的负载很小,但是另一些处理器敏感的命令会极大地增加处理器的负担。建议读者在使用调试命令之前,使用命令show process cpu检查CPU的负载。即使CPU的负载很小,在使用处理器敏感的命令时仍需要十分慎重。在不能确定的情况下,可以查询Cisco调试命令参考手册。对CPU十分敏感的命令将会产生警告信息。通常情况下,调试命令的大量输出将会增加处理器的负担。
调试命令针对故障排除,监视时最好不要使用这些命令。在获得了足够的信息后,应立刻中止调试命令的执行。
下面我们将阐述在Cisco IOS中可以使用的各种调试命令。为了叙述清楚,我们将所有的调试命令分为三类:
全局(系统)调试命令、接口调试命令以及协议调试命令。与show命令类似,这些命令之间并没有严格的界限。
首先,需要了解的是有哪些调试命令可以使用。使用与调试相关的帮助,输入“debug ?”,我们将获得了一个命令的列表,其中每一个命令都包含若干的属性,它们在排除故障时提供各种不同的作用。
