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]