CISCO发现协议(CDP)理论与实验

CISCO 发现协议( cisco discovery protocol )是由 cisco 设计的专用协议,能够帮助管理员收集关于本地连接和远程连接设备的相关信息。通过使用 CDP 可以收集相邻设备的硬件和协议信息,此信息对于故障诊断和网络文件归档非常有用。
 
★    获取 CDP 定时器和保持时间信息
 
通过打入 SHOW CDP 可以将显示两个全局参数的信息,这两个参数可以在 CISCO 的设备上进行配置。
1 CDP 定时器的意思指多长时间 CDP 会将分组传输到所有活动接口的时间量。(后有实验证明)
2 CDP 保持时间是指该信息将从已经接收到该信息的设备上存留多少时间。(后有实验证明)
CISCO 路由器和交换机都使用相同的参数。
通过 SHOW CDP 命令默认在路由器上将显示如下内容。
R1#show cdp
Global CDP information:
        Sending CDP packets every 60 seconds
        Sending a holdtime value of 180 seconds
在交换机上将显示如下内容。
SW1#show cdp
Global CDP information:
        Sending CDP packets every 60 seconds
        Sending a holdtime value of 180 seconds
        Sending CDPv2 advertisements is  enabled
可见默认情况下路由器发送 V1 版本的 CDP 信息,而交换机默认发送 V2 版本的 CDP 信息。
这两条输出信息分别代表的含义为:
Sending CDP packets every 60 seconds
60 秒发送一次 CDP 更新信息包。
Sending a holdtime value of 180 seconds
此信息保持时间为 180 秒。
 
★    修改 CDP 定时器与保持时间信息。
 
在全局模式下使用命令 CDP TIMER CDP HOLDTIME 在路由器上配置 CDP 定时器和保持时间。
SW1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
SW1(config)#cdp ?   
  advertise-v2  CDP sends version-2 advertisements
  holdtime      Specify the holdtime (in sec) to be sent in packets
  timer         Specify the rate at which CDP packets are sent       (in sec)
  run          
 
SW1(config)#cdp timer 90
SW1(config)#cdp holdtime 240
SW1(config)#
SW1#show
00:15:39: %SYS-5-CONFIG_I: Configured from console by console
SW1#show cdp
Global CDP information:
        Sending CDP packets every 90 seconds
        Sending a holdtime value of 240 seconds
        Sending CDPv2 advertisements is  enabled
 
★    启动与关闭 CDP
 
在路由器的全局配置模式下可以使用 NO CDP RUN 命令完全的关闭 CDP 。若要在路由器接口上关闭或打开 CDP ,使用 NO CDP ENABLE CDP ENABLE 命令。
 
★    收集邻居信息
 
Show cdp neighbor 命令可以显示有关直连设备的信息。要记住 CDP 分组不经过 CISCO 交换机这非常重要,它只能看到与它直接相连的设备。在连接到交换机的路由器上,不会看到连接到交换机上的其他所有设备。如下配置。
 
 
(图一)
R1 分别与 R2 SW1 直连,此时我们在 R1 上使用 show cdp neighbor 命令后的输出为如下所显示。
R1#show cdp nei
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
                  S - Switch, H - Host, I - IGMP, r - Repeater
 
Device ID        Local Intrfce     Holdtme    Capability  Platform  Port ID
SW1                 Eth 0          154          T S       WS-C2912-XFas 0/1
R2                  Ser 0          161           R        2500      Ser 0
R1#
如实验结果所示,路由器 R1 只显示出与它直连的路由器 R2 和交换机 SW1 ,而不会显示与交换机 SW1 直接相连的 R3 的路由信息。
 
下面列出 show cdp neighbor 命令为每个设备显示的信息。
 
Device ID: 直连设备的主机名
 
Local interface : 要接收 CDP 分组的端口或接口(直接控制的本地设备)
 
Holdtime : 如果没有接收到其他 CDP 分组,路由器在丢弃接收到的信息之前将要保存的时间量。
 
Capability : 邻居设备的类型,如路由器,交换机或中继器。
 
Platform :CISCO 设备类型在上面的输出中 cisco 2500 catalyst 2912 是直连在路由器 R1 上的设备。
 
Port ID : 与路由器 R1 直接相连的设备在发送更新时所用的接口。
 
另一个提供相邻设备信息的命令为 show cdp neighbor 命令,此命令可以在路由器或交换机上运行,它显示连接到此设备上的每个设备的详细信息,下面为命令输出的例子。
 
R1#show cdp neighbor detail
-------------------------
Device ID: SW1
Entry address(es):
  IP address: 50.50.50.1
Platform: cisco WS-C2912-XL,  Capabilities: Trans-Bridge Switch
Interface: Ethernet0,  Port ID (outgoing port): FastEthernet0/1
Holdtime : 239 sec
 
Version :
Cisco Internetwork Operating System Software
IOS (tm) C2900XL Software (C2900XL-C3H2S-M), Version 12.0(5)WC14, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2006 by cisco Systems, Inc.
Compiled Thu 16-Feb-06 14:39 by antonino
 
-------------------------
Device ID: R2
Entry address(es):
  IP address: 10.10.10.2
Platform: cisco 2500,  Capabilities: Router
Interface: Serial0,  Port ID (outgoing port): Serial0
Holdtime : 126 sec
 
Version :
 --More--
CDP-EV: Bad version number in header
CDP-PA: Packet received from SW1 on interface Ethernet0
**Entry  found in cache**
Cisco Internetwork Operating System Software
IOS (tm) 3000 Software (IGS-I-L), Version 11.0(3), RELEASE SOFTWARE (fc1)
Copyright (c) 1986-1995 by cisco Systems, Inc.
Compiled Tue 07-Nov-95 15:04 by deannaw
 
R1#
 
通过这条命令给出了直连设备的主机名、相关型号、类型、本地发出更新的接口和对方接收 CDP 更新信息的接口,保持时间以及 IOS 的版本号等。
 
说明:你只能看到直连设备的 IP 地址。
 
Show cdp entry * 命令与 show cdp neighbor details 命令所显示的为相同的信息。下面是 show cdp entry * 命令的路由器输出的例子。
 
R1#show cdp entry *
-------------------------
Device ID: SW1
Entry address(es):
  IP address: 50.50.50.1
Platform: cisco WS-C2912-XL,  Capabilities: Trans-Bridge Switch
Interface: Ethernet0,  Port ID (outgoing port): FastEthernet0/1
Holdtime : 204 sec
 
Version :
Cisco Internetwork Operating System Software
IOS (tm) C2900XL Software (C2900XL-C3H2S-M), Version 12.0(5)WC14, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2006 by cisco Systems, Inc.
Compiled Thu 16-Feb-06 14:39 by antonino
 
-------------------------
Device ID: R2
Entry address(es):
  IP address: 10.10.10.2
Platform: cisco 2500,  Capabilities: Router
Interface: Serial0,  Port ID (outgoing port): Serial0
Holdtime : 121 sec
 
Version :
Cisco Internetwork Operating System Software
IOS (tm) 3000 Software (IGS-I-L), Version 11.0(3), RELEASE SOFTWARE (fc1)
Copyright (c) 1986-1995 by cisco Systems, Inc.
Compiled Tue 07-Nov-95 15:04 by deannaw
         
R1#
 
★    收集接口流量信息。
 
Show cdp traffic 命令显示接口流量的信息,包括发送和接收 CDP 分组的数量,以及 CDP 出错信息。
 
下面显示的是在路由器上使用 show cdp traffic 命令后的输出结果。
 
R1#show cdp traffic
CDP counters :
        Packets output: 750, Input: 626
        Hdr syntax: 212, Chksum error: 0, Encaps failed: 0
        No memory: 0, Invalid packet: 0, Fragmented: 0
R1#
 
这并非是路由器上可以收集到的最重要的信息,但是它显示了设备发送和接收的 CDP 分组数。
以上路由期发送了 750 CDP 组播数据包,接收了 626 个组播数据包,封装失败、错误、无效以及碎片包裹均为 0
 
★    收集端口和接口信息
 
Show cdp interface 命令可显示路由器接口或者交换机、路由器端口的状态。
 
可以通过使用 no cdp run 命令完全关闭路由器上的所有 CDP CDP 也可以用 no cdp enable 命令关闭单个接口的 CDP ,如果要打开相应端口的 cdp 可以使用 cdp enable 命令启用端口。在默认的情况下,所有的端口默认为 cdp enable 即启动状态。
 
使用 show cdp interface 命令可以显示每个接口的 cdp 信息,包括每个接口的线路封装类型,定时器和保持时间。
 
下面列举 show cdp interface 所显示的信息。
 
R1#show cdp interface
Ethernet0 is up, line protocol is up, encapsulation is ARPA
  Sending CDP packets every 60 seconds
  Holdtime is 180 seconds
Serial0 is up, line protocol is up, encapsulation is HDLC
  Sending CDP packets every 60 seconds
  Holdtime is 180 seconds
Serial1 is administratively down, line protocol is down, encapsulation is HDLC
  Sending CDP packets every 60 seconds
  Holdtime is 180 seconds
R1#
 
从以上实验调试结果可看到 E0 接口与 S0 接口状态为 UP ,而 S1 接口的状态为 administratively down ,但是此时 CDP 仍然在所有接口运行。
 
若要关闭路由器上的一个接口的 CDP ,可在接口模式下使用 no cdp enable 命令。
 
如下所示
 
R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#int e 0
R1(config-if)#no cdp enable
R1(config-if)#end
 
使用 show cdp interface 验证所做的修改。
 
R1#show cdp interface
Serial0 is up, line protocol is up, encapsulation is HDLC
  Sending CDP packets every 60 seconds
  Holdtime is 180 seconds
Serial1 is administratively down, line protocol is down, encapsulation is HDLC
  Sending CDP packets every 60 seconds
  Holdtime is 180 seconds
R1#
 
注意!上面路由器在输出中没有列出接口 E0 ,说明此时已经成功关闭了 E0 接口的 CDP 功能。要想重新启动 E0 接口的 CDP 功能可在 E0 接口上运行命令 cdp enable ,此时 E0 口的 CDP 功能将得到重新恢复。
 
如下调试结果。
 
R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#int e 0
R1(config-if)#cdp enable
R1(config-if)#exi
R1(config)#exi
R1#show interfa
%SYS-5-CONFIG_I: Configured from console by console
R1#show cdp interface
Ethernet0 is up, line protocol is up, encapsulation is ARPA
  Sending CDP packets every 60 seconds
  Holdtime is 180 seconds
Serial0 is up, line protocol is up, encapsulation is HDLC
  Sending CDP packets every 60 seconds
  Holdtime is 180 seconds
Serial1 is administratively down, line protocol is down, encapsulation is HDLC
  Sending CDP packets every 60 seconds
  Holdtime is 180 seconds
R1#
 
★    保持时间是如何计时与清除超时信息的。
   
我们知道 CDP 过了保持时间以后会自动被清除,那么保持时间是如何被清除的可见如下实验。
首先我们先到交换机 SW1 上去关闭交换机与路由器 R1 的直连端口 fastethernet 0/1
 
SW1#conf t      
Enter configuration commands, one per line.  End with CNTL/Z.
SW1(config)#int fa 0/1
SW1(config-if)#no cdp enable
SW1(config-if)#exi
SW1(config)#
 
然后我们到路由器 R1 上查看保持时间。
 
R1#show cdp nei
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
                  S - Switch, H - Host, I - IGMP, r - Repeater
 
Device ID        Local Intrfce     Holdtme    Capability  Platform  Port ID
SW1                 Eth 0          6            T S       WS-C2912-XFas 0/1
R2                  Ser 0          136           R        2500      Ser 0
R1#show cdp nei
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
                  S - Switch, H - Host, I - IGMP, r - Repeater
 
Device ID        Local Intrfce     Holdtme    Capability  Platform  Port ID
SW1                 Eth 0          0            T S       WS-C2912-XFas 0/1
R2                  Ser 0          130           R        2500      Ser 0
R1#show cdp nei
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
                  S - Switch, H - Host, I - IGMP, r - Repeater
 
Device ID        Local Intrfce     Holdtme    Capability  Platform  Port ID
R2                  Ser 0          126           R        2500      Ser 0
R1#
 
我们可以从中看到 SW1 保持时间的变化规律,连续的三个 show cdp neighbor 命令,看到保持时间是逐步递减的,一直减到 0 1 秒不差。然后从列表中消失。
 
★    如何查看单台直连设备的 CDP 信息。
 
我们可以通过如下两条命令来查看领接设备的相应信息。如 R1 直连 R2 ,从 R1 上打入命令:
Show cdp entry R2 pro show cdp entry R2 ver 分别可以查看设备 R2 的协议与 IOS 版本信息,实验步骤与调试如下:
注意: HOSTNAME 主机名需区大小写。
 
R1#show cdp entry R2 pro
R1#show cdp entry R2 protocol
Protocol information for R2 :
  IP address: 10.10.10.2
R1#show cdp entry R2 ver
R1#show cdp entry R2 version
 
Version information for R2 :
  Cisco Internetwork Operating System Software
IOS (tm) 3000 Software (IGS-I-L), Version 11.0(3), RELEASE SOFTWARE (fc1)
Copyright (c) 1986-1995 by cisco Systems, Inc.
Compiled Tue 07-Nov-95 15:04 by deannaw
 
R1#
 
★    CDP  DEBUG 调试命令与测试。
 
查看 CDP 定时器,用 DEBUG 动态查看信息收集 CDP 的组播更新,在启动 CDP 时是即时发送更新包,还是等到定时器满才发送更新包,更新是从主机名是什么以及哪个接口发送而来的更新,可以从中查获 CDP 是否正常发送更新数据包。
 
调试过程如下。
 
首先我们回到交换机 SW1 上,进入交换机 fa 0/1 接口,输入命令 no cdp enable 关闭 fa 0/1 接口的 CDP 功能,回到 R1 中查看无任何信息显示,再次回到 SW1 上输入命令 cdp enable 启动 fa 0/1 的以太接口,再次回到 R1 中查看仍无任何 SW1 的更新包进入 R1 的直连接口,因此可证明 CDP 协议按照定时器指定时间发送更新而非触发更新。
 
当我们在 SW1 上关闭 fa 0/1 接口时 fa 0/1 接口就停止了发送 CDP 更新,但是它却没有机制告诉与它直连的接口禁止发送更新包,因此与交换机直连的路由器始终在定时器满时发送更新。
 
SW1(config-if)#no cdp enable
 
R1#debug cdp packets
CDP packet info debugging is on
R1#
CDP-PA: Packet received from R2 on interface Serial0
**Entry  found in cache**
R1#
CDP-PA: Packet sent out on Ethernet0
CDP-PA: Packet sent out on Serial0
R1#
CDP-PA: Packet received from R2 on interface Serial0
**Entry  found in cache**
R1#
CDP-PA: Packet sent out on Ethernet0
CDP-PA: Packet sent out on Serial0
R1#
 
若要关闭动态 packet 调试信息,可输入 no debug cdp pac 即可关闭。
 
R1#no debug cdp pac
CDP packet info debugging is off
R1#
 
★    CDP 事件调试
 
当启动了 CDP 事件调试命令的时候, CDP 即会对相应所发生的事件做出反映。
 
启动 CDP 事件调试
 
R1#debug cdp events
CDP events debugging is on
 
当邻居设备启动 CDP 时,启动事件调试的一端会出现 R1# CDP-EV: Bad version number in header 的提示信息,而在记时器到达更新的时候也会同样发出 R1# CDP-EV: Bad version number in header 的提示信息。
CISCO 发现协议( CDP )理论与实验
原创作者ID: IT傻博士 转载请保留作者信息。
 [url]www.one-tom.com[/url]
 

你可能感兴趣的:(职场,协议,Cisco,休闲)