安装终端仿真器软件(例如,HyperTerminal) 以便将调试输出捕获到文件上。例如:在HyperTerminal中,点击Transfer, 然后点击CaptureText并选择相应的选项。有关更多信息,请参考“ 捕获 Hyperterminal 中文本输出”文献。有关其他终端仿真器软件,请参考软件文献。
通过以下业务时间标记命令来启用毫秒(msec)时间标记:
router(config)#service timestamps debug datetime msec
router(config)#service timestamps log datetime msec
这些命令将时间标记以MMM DD HH:MM:SS的格式添加到调试中,从而根据系统时钟来显示日期和时间。若未设置系统时钟,则日期和时间之前带有星号(*)以说明日期和时间可能不正确。
通常合理的办法是配置毫秒时间标记,这是因为:在查看调试输出时,通过这种办法可实现更高级别的准确性。对于相互联系的调试事件,毫秒时间标记提供了更好的指示说明。但是,值得注意的是,在控制面板端口输出大量信息时,可能不与事件的实际定时发生联系。例如,若启用标有200 VC方框中的 debug x25 all ,并将输出记录到缓冲器(使用 no logging console 和logging buffered 命令)的情况下,调试输出(在缓冲器范围内)所显示的时间标记可能不是数据包通过接口时的准确时间。因此,不要使用msec时间标记来证明性能情况,但可使用这种时间标记来获得事件发生时间的相对信息。
停止调试
若要停止调试,则使用 no debug all 或 undebug all 命令。通过show debug命令来验证是否已经关闭调试。请注意,通过 no logging console 和 terminal no monitor 命名,只能分别使输出不在控制面板、Aux或 vty上发生,而不能停止调试,并因此用尽路由器资源。
三、使用 debug ip packet 命令
通过 debug ip packet 命令,可产生有关数据包的信息,这种数据包未经路由器进行快速转换。但是,由于生成每个数据包的输出,所以输出尺寸扩大,并因此使路由器处于“挂起”状态。所以,如本文所描述的那样,只在最严格的控制下使用 debug ip packet 。
限制 debug ip packet 输出的最佳办法是 创建与调试链接的访问列表。只有符合访问列表标准的数据包需要使用debug ip packet。不必在所有接口上都应用此访问列表,但非常适用于调试操作。
在使用 debugging ip packet之前,请注意:在缺省状态下,路由器进行快速交换,或在特定配置情况下进行CEF交换。也就是说,如果这些方法可用,则不向处理器提供数据包,因此,调试不显示任何内容。若要使调试显示内容,则需要通过no ip route-cache (适用于单点发送数据包)或no ip mroute-cache(适用于组播数据包)来禁止路由器上的快速交换。这种办法适用于传输业务的接口。通过 show ip route 命令来验证这种情况。
警告:对于处理大量数据包的路由器,启用路由器上快速交换可增加CPU利用率,从而使设备处于“挂起”状态,并失去对等连接。 对于运行多协议标记 (MPLS) 交换的路由器,不要禁用路由器上的快速交换。MPLS是与CEF一起使用的。因此,禁用接口上的快速交换可导致很严重的后果。
下面研究一个示例方案:
router_122上所配置的访问列表是:
access-list 105 permit icmp host 10.10.10.2 host 13.1.1.1
access-list 105 permit icmp host 13.1.1.1 host 10.10.10.2
此访问列表允许所有互联网控制消息协议(ICMP)数据包从主机router_121(IP地址为10.10.10.2)传输到主机router_123(IP地址为13.1.1.1),以及传输到其他方向上。允许数据包传输到任一方向是很重要的,否则路由器可能会丢弃返回的ICMP数据包。
下面只删除router_122一个接口上的快速交换。因此,从IOS截取数据包的角度来看,只能看到传输到该接口的数据包的调试。通过调试,这类数据包将出现"d="。因为还没有关闭其他接口上的快速交换,返回的数据包将不使用debug ip packet。下面的输出显示了禁用快速交换的过程:
router_122(config)#interface virtual-template 1
router_122(config-if)#no ip route-cache
router_122(config-if)#end
现在必须通过以前定义的访问列表(访问列表 105)来激活debug ip packet。
router_122#debug ip packet detail 105
IP packet debugging is on (detailed) for access list 105
router_122#
00:10:01: IP: s=13.1.1.1 (Serial3/0), d=10.10.10.2 (Virtual-Access1),
g=10.10.10.2, len 100, forward
00:10:01: ICMP type=0, code=0
! -- 从13.1.1.1到10.10.10.2的ICMP包
! -- 显示此包是因为
! -- 它满足访问列表105中的源和目的地要求。
00:10:01: IP: s=13.1.1.1 (Serial3/0), d=10.10.10.2 (Virtual-Access1),
g=10.10.10.2, len 100, forward
00:10:01: ICMP type=0, code=0
00:10:01: IP: s=13.1.1.1 (Serial3/0), d=10.10.10.2 (Virtual-Access1),
g=10.10.10.2, len 100, forward
00:10:01: ICMP type=0, code=0