思科发现协议CDP

使用 CDP 发现网络

Cisco 发现协议 (CDP) 是功能强大的网络监控与故障排除工具。网络管理员使用 CDP 作为信息收集工具,通过它来收集与直连的 Cisco 设备有关的信息。CDP 是 Cisco 专有的一款工具,您可以用它来了解与直连的 Cisco 设备有关的协议与地址概要信息。默认情况下,每台 Cisco 设备会定期向直连的 Cisco 设备发送消息,我们将这种消息称为 CDP 通告。这些通告包含特定的信息,如连接设备的类型、设备所连接的路由器接口、用于进行连接的接口以及设备型号等。

大多数网络设备本身都不是独立工作的。在网络中,Cisco 设备通常都会有其它相邻的 Cisco 设备。从其它设备收集到的信息有助于设计网络、排除故障以及调整设备。缺少网络拓扑记录或缺乏详细信息时,您可将 CDP 作为网络发现工具,利用它来构建网络逻辑拓扑结构。

熟悉邻居的一般性概念有助于理解 CDP 以及后面的内容中讨论的动态路由协议。



第 3 层邻居

此时,在我们的拓扑配置中,只有直连的邻居。在第 3 层,路由协议把共享同一网络地址空间的设备视为邻居。

例如 R1 和 R2 就是邻居。两者都是 172.16.1.0/24 网络的成员。R2 和 R3 也是邻居,因为它们均共享 192.168.1.0/24 网络。但 R1 和 R3 不是邻居,因为它们不共享任何网络地址空间。如果使用电缆将 R1 与 R3 相连,并为二者配置同一网络中的 IP 地址,则它们也会成为邻居。

第 2 层邻居

CDP 只工作在第 2 层。因此,CDP 邻居是指那些物理上直连并共享同一数据链路的 Cisco 设备。在“CDP 协议”图中,网络管理员登录的是 S3。S3 只会接收来自 S1、S2 和 R2 的 CDP 通告。

假设图中的所有路由器和交换机都是运行 CDP 的 Cisco 设备,那么 R1 的邻居有哪些?您能说出每台设备的 CDP 邻居吗?

单击图中的“拓扑”按钮。

在本章的拓扑结构中,我们可以看到以下 CDP 邻居关系:
R1 和 S1 是 CDP 邻居。
R1 和 R2 是 CDP 邻居。
R2 和 S2 是 CDP 邻居。
R2 和 R3 是 CDP 邻居。
R3 和 S3 是 CDP 邻居。

请注意第 2 层邻居与第 3 层邻居的不同。由于交换机只工作在第 2 层,因此交换机与路由器在第 3 层不是邻居。但是,交换机是其直连路由器的第 2 层邻居。

CDP 工作方式

观察右图中 show cdp neighbors 和 show cdp neighbors detail 命令的输出。请注意,R3 已收集到关于 R2 的一些详细信息,以及与 R3 快速以太网接口连接的交换机有关的一些详细信息。

CDP 工作在连接物理介质与上层协议 (ULP) 的数据链路层。由于 CDP 工作在数据链路层,因此支持不同网络层协议(如 IP 和 Novell IPX)的两台或两台以上的 Cisco 网络设备(例如路由器)便可彼此互相了解。

Cisco 设备启动时会默认启动 CDP。CDP 会自动发现运行 CDP 的邻近 Cisco 设备,无论这些设备运行的是何种协议或协议簇。CDP 还会与直连的 CDP 邻居交换硬件和软件设备信息。

CDP 提供每台 CDP 邻居设备的以下信息:
设备标识符 - 例如,为交换机配置的主机名
地址列表 - 每种支持的协议最多对应一个网络层地址
端口标识符 - 本地和远程端口的名称 - ASCII 字符格式的字符串,例如 ethernet0
功能列表 - 例如,该设备是路由器还是交换机
平台 - 设备的硬件平台,例如 Cisco 7200 系列路由器


CDP show 命令

CDP 协议收集到的信息可通过 show cdp neighbors 命令来查看。对于每个 CDP 邻居,此命令将显示以下信息:
邻居设备 ID
本地接口
保持时间(以秒为单位)
邻居设备功能代码
邻居硬件平台
邻居远程端口 ID

单击图中的 show cdp neighbors detail。

show cdp neighbors detail 命令也会显示邻居设备的 IP 地址。无论是否能 ping 通邻居,CDP 都会显示邻居的 IP 地址。当两台 Cisco 路由器无法通过共享的数据链路进行路由时,此命令非常有用。show cdp neighbors detail 命令也有助于确定某个 CDP 邻居是否存在 IP 配置错误。

对于网络发现,通常只要知道 CDP 邻居的 IP 地址就能 telnet 到该设备。通过所建立的 Telnet 会话,便可收集与邻居直连的 Cisco 设备有关的信息。按照这种方式,您可以 telnet 遍整个网络,并据此构建逻辑拓扑。在下一个 Packet Tracer 练习中,我们将进行这方面的练习。

禁用 CDP

CDP 会带来安全风险吗?答案是肯定的。在之前的课程中,您可能已在数据包捕获实验中捕获过 CDP 数据包。由于某些 IOS 版本默认情况下会向外发送 CDP 通告,因此必须知道如何禁用 CDP。

单击图中的“禁用 CDP”。

如果需要对整台设备彻底禁用 CDP,可使用以下命令:

Router(config)#no cdp run