当网络中增加了一台路由器或者交换机,那么现有的网络设备是如何自动发现这个“新邻居”的呢?对于思科网络来说,主要是CDP发现协议在其中起作用。简单的说,CDP发现协议就是用来获取邻居设备的信息。这些信息包括被连接设备的类型(交换机或者路由器)、连接到的路由器的接口或者本地连接的接口和设备的数量的等等。在这篇文章中,笔者主要想介绍一下这个CPD协议的维护以及如何来排除跟这个协议相关的故障。
一、获取邻居设备的相关信息
CDP发现协议的主要作用就是用来发现所有与本地设备直接连接的思科网络设备。注意这句话说有个定语“直接相连”非常关键。如果两个设备之间还连接其它设备的话,那么就不能够发现。
每个运行CDP发现协议的路由器都会与自己的邻居交换协议信息。网络管理员在有需要的情况下,可以将CDP信息交换的结果显示在连接到本地路由器的控制台上。如下图所示,在任何一台路由器或者交换机的设备上,输入以下命令:show cdp neighbors命令,就可显示出与这台路由器或者交换机“直接相连”的设备的相关信息。
从上面这个图形中,我们可以得出如下结论。
一是关于CDP的维护大部分都必须在特权模式下进行。如上图所示,在开始的时候,笔者使用了Enable命令进入到了特权模式。只有在这个模式下,才能够查看邻居设备的信息。注意,必须要在特权模式下进行操作。
二是这个命令的输入技巧。这个命令比较长,如果一个个字符的去输入显然比较费时费力。而且neighbors这个单词又比较容易拼写错误。此时就需要用到IOS软件的历史纪录命令。在实际工作中,只需要输入nei三个字符,然后按一下Tab键,系统就会自动补齐后面的支付,而不需要输全。这对英文不怎么好的用户来说,是一个福音。
三是这个命令所反映出来的信息。如上图所示,这个命令可以反映出设备标示的ID 、本地接口、连接保持时间、功能、平台、端口标示、VTP管理域名、本地Vlan、工作模式(全双工或者半双工)等等丰富的信息。如果这些信息还不能够满足网络管理员需求的话,那么用户还可以在这个命令后面加一个参数detail。如此的话,就可以显示更加详细的信息。
这些信息对于日常的网络维护是非常有帮助的。如能够让管理员了解网络上相关设备的所有概况,帮助管理员更加好的理解现有网络的拓扑结构。对于后续网络的维护与优化也具有非常大的价值。
二、维护与监控CDP信息
1、启用或者关闭CDP协议。
默认情况下,CDP发现协议是全局启用的。不过如果与比较老的思科设备共同使用的时候,可能需要手工启动这个发现协议。如当路由器与1900系列的交换机进行互联的时候,那么就需要在交换机上手工启用这个协议。如果需要在路由器上全局启用CDP发现协议的话,则可以通过CDP RUN命令。而在IOS 10.3以后的版本中,还支持在接口模式下使用CDP发现协议。如果要启用这个特性的话,就需要进入到接口配置模式,然后使用cdp enable在接口上启用CDP。不过与全局模式相反,默认情况下,在接口上的CDP发现协议缺省是没有启用的。
2、查看数据帧传输的信息。在网络维护与优化的时候,需要知道数据帧传输的相关信息。要了解这些信息的话,网络管理员就可以使用show cdp interface命令来查看。结果如下下图所示:
可见使用这个命令可以获取CDP用于通告和发现数据帧传输的信息。这些信息包括保持时间、CDP分组发送的频率、接口封装的时间以及街口的管理和协议情况等等。毋庸置疑,这些信息对于后续维护,特别是CDP性能的优化,具有很大的参考价值。
3、禁用CDP发现协议。
虽然CDP协议能够自动发现新增加的网络设备,但是从网络管理员眼中,它是一把双刃剑。一方面提高了网络的灵活性,另一方面也给网络造成了不小的安全隐患。如某个攻击者如果攻破了一台路由器或者交换机,那么就可以通过CDP发现协议来了解与其相连的弯路设备的相关信息。这就为其进行下一步的攻击提供了非常重要的信息。为此有时候出于安全的目的而不喜欢使用某个设备的信息的时候,就需要禁用这个特定设备的CDP发现协议。如果要在全局级别下禁用CDP协议的话,那么可以在全局配置模式下使用no cdp run命令来实现。
不过在采取这个操作之前,笔者认为管理者需要先了解全局配置与接口配置之间的关系。在上面笔者谈到过,在IOS10.3以后的版本中,CDP协议同时支持全局模式与接口模式。在何种情况下,如果关闭了全局配置模式下的CDP发现协议,那么对于接口模式下的CDP发现协议有什么影响呢?这里需要注意,如果在全局配置模式下禁用CDP发现协议的话,那么在接口上也就不能够启用CDP发现协议。