【前言】
CDP是Cisco DiscoveryProtocol的缩写,它是由思科公司推出的一种私有的二层网络协
议,它能够运行在大部分的思科设备上面。通过运行CDP 协议,思科设备能够在与它们直
连的设备之间分享有关操作系统软件版本,以及IP地址,硬件平台等相关信息。
【特点和配置】
CDP 在思科设备上的配置管理非常简单。
(1)全局下关闭打开 CDP 功能
缺省情况下 CDP 功能是打开的。
全局配置命令cdp run //全局启用 CDP
no cdp run //全局关闭 CDP
配置范例:
R1#sh cdp//显示 CDP 全局配置信息
Global CDP information:
Sending CDP packets every 60seconds//缺省每 60 秒发送一次 CDP 通告
Sending a holdtime value of 180seconds//CDP 通告保持时间为 180 秒
Sending CDPv2 advertisementsisenabled//发送 CDP version 2 的通告
R1#config t//进全局配置模式
Enter configuration commands, one perline.End with CNTL/Z.
R1(config)#no cdp run//全局关闭 CDP
R1(config)#exit
R1#
*Mar1 00:07:45.351: %SYS-5-CONFIG_I: Configured from console by console
R1#sh cdp
//这个时候我们再 show 相关 CDP 信息就会提示 CDP 已经关闭
% CDP is not enabled
(2)端口下关闭打开 CDP 功能
我们除了可以在全局状态下打开关闭CDP功能,我们也可以根据情况配置每个端口的
CDP 功能的打开关闭
配置命令:
接口配置模式下cdp enable//打开接口的 CDP 功能
nocdp enable//关闭接口的 CDP 功能
配置范例:
R1#sh cdp interface s0/0//查看接口的 CDP 配置
Serial0/0 is up, line protocol is up//接口状态
Encapsulation HDLC//接口封装格式
Sending CDP packets every 60 seconds//每 60 秒发送一次 CDP 通告
Holdtime is 180 seconds//CDP 通告保持时间为 180 秒
R1#config t//进全局配置模式
Enter configuration commands, one perline.End with CNTL/Z.
R1(config)#int s0/0//进接口配置模式
R1(config-if)#no cdp enable
R1(config-if)#exit
R1(config)#exit
R1#
//关闭接口 CDP 功能
*Mar1 00:19:23.443: %SYS-5-CONFIG_I: Configured from console by console
R1#sh cdp interface s0/0
R1#sh cdp
//这个时候我们显示 CDP 信息得到空白信息
//全局 CDP 功能还是打开
Global CDP information:
Sending CDP packets every 60seconds
Sending a holdtime value of 180seconds
Sending CDPv2 advertisementsisenabled
(3)调整 CDP 计时器配置
缺省情况下发送计时器为 60秒,保持计时器为 180 秒
配置命令
全局配置模式下
cdp timer xx//配置发送计数器时间为 xx 秒
cdp holdtime xx//配置保持计时器时间为 xx 秒
需要说明的有两点:
第一点:保持计时器时间必须大于发送计时器时间,建议为至少 2 倍发送计时器时
间。
第二点:保持计时器是本机发送出去的 CDP通告所携带,通告接收设备,本CDP
通告保持多长时间。而非针对本机收到的 CDP 通告。
配置范例:
R1#sh cdp//先查看一下当前 CDP 计时器配置
Global CDP information:
Sending CDP packets every 80seconds
Sending a holdtime value of 180seconds
Sending CDPv2 advertisementsisenabled
R1#config t//进全局配置模式
Enter configuration commands, one perline.End with CNTL/Z.
R1(config)#cdp timer ?//看看 cdp 发送计时器的配置范围
<5-254>Rate at which CDPpackets are sent (insec)
R1(config)#cdp timer 90//配置 CDP 发送计时器为 90 秒
R1(config)#cdp holdtime ?//查看 CDP 保持计时器的配置范围
<10-255>Lengthof time(in sec) that receiver must keepthis packet
R1(config)#cdp holdtime 200//配置 CDP 保持计时器的时间为 200
R1(config)#exit
R1#
*Mar1 00:37:43.059: %SYS-5-CONFIG_I: Configured from console by console
R1#sh cdp//通过 show cdp,发现计时器配置已经更改
Global CDP information:
Sending CDP packets every 90seconds
Sending a holdtime value of 200seconds
Sending CDPv2 advertisementsisenabled
(4)允许发送 CDP version2 的通告
缺省情况下思科设备是允许发送CDP version2 的通告。
我们可以通过 no cdpadvertise-v2 关闭 CDPversion2 通告的发送。
配置范例:
R1#sh cdp//检查 cdp 全局配置
Global CDP information:
Sending CDP packets every 10 seconds
Sending a holdtime value of 30seconds
Sending CDPv2 advertisements isenabled
R1#config t//进全局配置模式
Enter configuration commands, one perline.End with CNTL/Z.
R1(config)#no cdp advertise-v2//关闭发送 CDP version 通告功能
R1(config)#exit
R1#show cdp//检查 CDP 全局配置,已经关闭
Global CDP information:
Sending CDP packets every 10seconds
Sending a holdtime value of 30seconds
Sending CDPv2 advertisements is not enabled
R1#debug cdp packets//打开 CDP 报文 debug 模式
CDP packet info debugging is on
R1#//发送 version1 的 CDP 报文
*Mar1 00:52:23.759: CDP-PA: version 1 packet sent out on Serial0/0
对端 R2 上
R2#show cdp nei detail//查看 CDP 邻居详细信息
-------------------------
Device ID: R1
Entry address(es):
Platform: Cisco 3640,Capabilities: Router Switch IGMP
Interface: Serial0/0,Port ID (outgoing port): Serial0/0
Holdtime : 26 sec
Version :
CiscoIOSSoftware,3600Software(C3640-IS-M),Version12.4(10a),RELEASE
SOFTW
ARE (fc2)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2006 by Cisco Systems,Inc.
Compiled Wed 11-Oct-06 20:52 byprod_rel_tea
advertisement version: 1
(5)CDP相关 show 命令
Show cdp//检查 CDP 全局配置信息
Show cdp neighbor
使用范例
R1#show cdp//检查 CDP 全局配置信息
Global CDP information:
Sending CDP packets every 10seconds//发送时间间隔
Sending a holdtime value of 30seconds//保持时间间隔
Sending CDPv2 advertisements is not enabled//CDPv2 的通告功能
R1#show cdp traffic//显示 CDP Counters,包含发送接收到的 CDP 报文数量
CDP counters :
Total packets output: 96,Input: 137//总共接收发送多少 CDP 报文
Hdr syntax: 0, Chksum error: 0,Encaps failed: 1 //错误数量
No memory: 0, Invalid packet:0, Fragmented: 0 //错误数量
CDP version 1 advertisementsoutput: 62, Input: 54//CDPv1 的报文数量
CDP version 2 advertisementsoutput: 34, Input: 83//CDPv2 的报文数量
R1#clear cdp counters//CDP Counters 清零
R1#sh cdp traffic//检查 CDP Counters 清零后的效果
No memory: 0, Invalid packet:0, Fragmented: 0
CDP version 1 advertisementsoutput: 0, Input: 1
CDP version 2 advertisementsoutput: 0, Input: 1
R1#show cdp nei//显示设备发现的邻居情况
Capability Codes: R - Router, T - Trans Bridge,B - Source Route Bridge
S - Switch,H - Host, I - IGMP, r - Repeater
Device IDLocal IntrfceHoldtmeCapabilityPlatformPort ID
R2Ser 0/021R S I3640Ser 0/0
------------------------------------------------------------------------------------------------------
//Device ID设备的主机名(Hostname)
//Local Intrfce :本地接口
//Holdtme:CDP 通告信息保持多长时间,单位秒
//Capability: R 代表是路由器,S 支持交换功能,I 支持 IGMP 多播管理
//Platform:平台信息
//Port ID:
R1#clear cdp table//清除发现的邻居情况
R1#show cdp nei//检查清除后的效果,所有的邻居信息被清除
Capability Codes: R - Router, T - Trans Bridge,B - Source Route Bridge
S - Switch,H - Host, I - IGMP, r - Repeater
Device IDLocal IntrfceHoldtmeCapabilityPlatformPort ID
R1#show cdp neighbors detail//显示 CDP 邻居详细信息
-------------------------
Device ID: R2
Entry address(es):
Platform: Cisco 3640,Capabilities: Router Switch IGMP
Interface: Serial0/0,Port ID (outgoing port): Serial0/0
Holdtime : 19 sec
Version :
CiscoIOSSoftware,3600Software(C3640-IS-M),Version12.4(10a),RELEASE
SOFTW
ARE (fc2)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2006 by Cisco Systems,Inc.
Compiled Wed 11-Oct-06 20:52 byprod_rel_team
advertisement version: 2
R1#show cdp interface//显示接口的 CDP 配置信息
Serial0/0 is up, line protocol is up
Encapsulation HDLC
Sending CDP packets every 10 seconds
Holdtime is 30 seconds
Serial0/1 is up, line protocol is down
Encapsulation HDLC
Sending CDP packets every 10 seconds
Holdtime is 30 seconds
Serial0/2 is up, line protocol is down
Encapsulation HDLC
Sending CDP packets every 10 seconds
Holdtime is 30 seconds
Serial0/3 is up, line protocol is down
Encapsulation HDLC
Sending CDP packets every 10 seconds
Holdtime is 30 seconds
R1#sh cdp interface s0/0//显示某个具体接口的 CDP 配置信息
Serial0/0 is up, line protocol is up
Encapsulation HDLC
Sending CDP packets every 10 seconds
Holdtime is 30 seconds
R1#show cdp entry ?
*all CDP neighborentries
WORDName of CDP neighbor entry
R1#show cdp entry R2//显示邻居 R2 的邻接信息,结果和 showcdp nei detail 一致
-------------------------
Device ID: R2
Entry address(es):
Platform: Cisco 3640,Capabilities: Router Switch IGMP
Interface: Serial0/0,Port ID (outgoing port): Serial0/0
Holdtime : 17 sec
Version
CiscoIOSSoftware,3600Software(C3640-IS-M),Version12.4(10a),RELEASE
SOFTW
ARE (fc2)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2006 by Cisco Systems,Inc.
Compiled Wed 11-Oct-06 20:52 byprod_rel_team
advertisement version: 2
(6)CDP相关 Debug 命令
见下例:
R2#debug cdp ?
adjacencyCDP neighbor info
eventsCDP events
ipCDP ip info
packetsCDP packet-relatedinformation
R2#debug cdp packets//打开 debug CDP 报文功能
CDP packet info debugging is on
R2#
*Mar1 01:16:20.279: CDP-PA: version 2 packet sent out on Serial0/0
*Mar1 01:16:20.283: CDP-PA: version 1 packet sent out on Serial0/0
*Mar1 01:16:26.163: CDP-PA: Packet received from R1 on interface Serial0/0
*Mar1 01:16:26.167: **Entryfoundin cache**
【补充说明】
(1)常见的 CDP 错误日志信息
%CDP-4-DUPLEX_MISMATCH:duplexmismatchdiscoveredon[chars]([chars]),with
[chars] [chars] ([chars]).
解释:CDP 发现双工配置不匹配。
建议:修改接口双工配置,保证它们工作在相同的双工状态下。
%CDP-4-NATIVE_VLAN_MISMATCH:NativeVLANmismatchdiscoveredon[chars]
([dec]), with [chars] [chars] ([dec]).
解释:CDP 发现某 802.1Q Trunk 端口 Native VLAN ID 不一致
建议:将两端 Native VLAN ID 配置修改为一致
(2)CDPVersion1 和 Vesion 2 的区别
CDPVersion1 和 Version2 的主要区别在于 Version2 支持更多 TLV,比如交换机之间的 VTP
Domain,Duplex,Native VLANID 等等。这样极大的扩充了CDP 的功能。
【用途】
从CDP的字面意思我们可以理解到,这是一种设备发现协议。类似的协议有HP的LLDP
(Link Layer Discovery Protocol)还有华为/H3C的NDP(邻居发现协议)协议。
CDP是一个二层的网络协议,默认每60 秒向01-00-0C-CC-CC-CC这个组播地址发送一
次通告,如果在180秒内未获得先前邻居设备的CDP通告,它将清除原来收到的CDP信息。
因为它不依赖任何的三层协议,透过CDP协议,可以帮助我们解决一些三层错误配置的故
障,比如错误的三层地址等等。
用途一:SNMP协议通过CDPMIB发现网络拓扑
SNMP 中结合使用CDP 管理信息基础MIB,能使网络管理应用获知被管理设备类型
和相邻设备的SNMP 代理地址,并向这些设备发送SNMP 查询请求。Cisco 发现协议支
持CISCO-CDP-MIB。通过返回的响应信息,网络管理应用发现支持CDP协议的网络设备,
并依此生成发现的网络拓扑。
用途二:通过CDP协议发现相邻端口Duplex不匹配
从CDP Version2开始,CDP支持传送端口的Duplex,Native VLAN ID以及VTP Domain
等新的TLV 值。双工不匹配是一种比较难发现的网络错误,它并不会带来网络的中断但是
它会造成某些应用性能的急剧下降。
如下例:SW1--------SW2
用途三:通过CDP协议发现相邻Trunk端口的Native VLAN ID不一致
Trunk端口的Native VLAN ID 不一致会导致部分VLAN 通讯出现混乱。
交换机 SW1通过F0/1 与SW2的F0/2 连接。
如下例:
用途四:通过CDP协议PoE 受电设备申请PoE 电源分配
PoE是Power Over Ethernet的缩写,也就是我们常说的Inline Power,为解决一些小型
以太网设备需要单独供电的而推出的一种集中化供电方式。利用现有的5 类双绞线为那些小
型的设备如IP Phone,无线的AP提供电力供应。
在 PoE供电系统中,我们把提供电力供应的设备叫PSE(Power Supply Equipment)
接收电力供应的叫PD(Powered Device)。在思科设备中PSE 往往是那些中心端点支持PoE
供电的交换机或者交换模块。而PD 设备则是那些需要远程供电的IP Phone,无线AP等等。
对于 PSE 和PD设备都为思科的设备,思科允许它们之间通过CDP 交换信息,以期让
PSE 设备获得PD 设备的真实需要的电源供应功率。
用途五:协同ODR工作
ODR是On-Demand Routing的缩写,直译可以翻译成“按需路由”,我们可以把它看做
是基于CDP协议的一种路由协议或者把它看做CDP协议的一种增强功能。在IOS 11.2 及以
后版本开始支持这个特性。
ODR适合用在那些Huband Spoke型的网络结构中(Hub and Spoke的网络拓扑结果我
们可以把它理解成一个中心点,多个分支的网络拓扑。集中分支)。我们只需要在Hub 中心
路由器上启用router odr,分支路由器会自动在它的CDP更新中添加有关它网络的TLV信息。
【报文格式】
CDP协议是一个二层协议,它主要依赖某些二层协议作为它的承载层。
LLC/SNAP:OUI值0x00000C protocol ID 值0x2000.
CiscoHDLC:Protocol ID 值为0x2000
PPP:ProtocolID 值为0x0207
CDP协议Decode例子如下:
CDP协议报文格式
本文出自 “好好活着” 博客,转载请与作者联系!