在网络中,您希望有一个清晰的地图来了解设备之间的互连。然而,我们并不是一直都有地图。或者,如果我们拥有它,它也不是 100% 最新的。因此,我们需要找到一种替代方法来了解设备之间的互连。幸运的是,Cisco 来帮助我们使用CDP – Cisco 发现协议。通过这个简单而强大的协议,我们可以在我们处理它的过程中最终发现网络拓扑。
本文附带 Cisco Packet Tracer 实验室,您可以使用以下链接免费下载。要从本文的内容中获得最大收益,请立即下载该实验室,然后在阅读本文时按照它进行操作。
CDP 和 LLDP 实验室介绍
拓扑
CDP 和 LLDP 是两个允许您发现网络拓扑的协议。因此,作为本实验的一部分,您将不得不发现一些网络拓扑,因此我们不会在此处展示。因此,我们在云中有一个隐藏的拓扑部分。
除了三个交换机之外,网络的其余部分都是隐藏的,无法被发现。
从拓扑结构中可以看出,我们将三台交换机连接在一起,其中一台连接到云。我们将使用这些交换机来调整 CDP 和 LLDP 行为,然后我们将使用 telnet 来探索云。
要求
我们将这个实验室分为两部分。首先,我们将在我们可以看到的三个交换机上配置和调整 CDP(思科发现协议)和 LLDP(链路层发现协议)。这就是我们要做的所有配置。然后我们将不得不使用我们配置的协议以及 telnet 来发现云中的其他设备并连接到它们。这里我们有配置要求
- 接入交换机必须在接入端口 (
Fa0/1 - 24
)上禁用 CDP - 分布交换机必须同时运行 CDP 和 LLDP
对于本实验的发现部分,我建议您写一张表格。使用以下列:主机名、IP 地址和设备类型(交换机或路由器)。随着我们进行发现,您将填充它。此外,您还必须绘制我们发现的网络拓扑。这意味着您将绘制交换机和路由器,以及将它们互连的链接。因此,准备一张纸。
类型 | 密码 |
VTY 密码 | cisco |
启用密码 | cisco |
设备的访问凭证。
在我们深入配置和探索之前,我们应该先谈谈这些协议的工作原理。这就是下一节的内容。
关于 CDP 和 LLDP 的一些理论
什么是 CDP 和 LLDP?
CDP 和 LLDP 都是可以在 IEEE 802 环境(以太网)中运行的邻居发现协议。两种协议几乎完全相同地做同样的事情,主要区别在于供应商。CDP 是 Cisco 专有协议,而 LLDP 是开放标准协议。事实上,CDP 代表思科发现协议,而 LLDP 代表链路层发现协议。同样,两者的工作方式完全相同。
邻居发现协议使用一个简单而强大的概念。设备会发布有关自身的信息并侦听来自其他设备的信息。这些协议是完全无状态的,因此我们没有任何会话建立或丢失数据包的重传。相反,每个设备总是周期性地发送相同的信息。如果您错过了它们,我们将不得不等待下一个。设备将其主机名、管理 IP 地址(在 CDP 中)、功能(它是路由器、交换机还是其他什么?)及其软件版本通知其他设备。
有趣的是,邻居发现消息不会被转发——不在第 2 层或第 3 层。这意味着接收 CDP 消息的交换机不会将其发送给其他任何人,而是会为自己保留。这是由于这些协议的目的:找出直接连接的邻居。因此,任何通过 CDP 或 LLDP 发现的邻居都直接连接到我们的设备,中间没有中间设备。请注意,这不包括无源设备,例如集线器或接线板。设备会将它们收到的消息存储在它们的 CDP/LLDP 表中。
除了被网络管理员用来发现拓扑之外,CDP 和 LLDP 还有另一个用途。IP 电话利用这两种协议找出为 VoIP 和其他信息保留的 VLAN。
Cisco 设备上的 CDP 和 LLDP
世界上几乎所有 Cisco 设备都将原生支持CDP。在这些设备中,CDP 已经在全局启用,并将在所有设备的接口上发送和侦听消息。大多数 Cisco 设备还将支持 LLDP,因为这允许它们与其他供应商进行互操作。但是,在这些设备中,默认情况下 LLDP 处于关闭状态。与 CDP 相比,LLDP 是一个非常强大的工具,因为您可以指定要发送到其他设备的信息片段。这超出了本文的范围,甚至在 Packet Tracer 中也不支持。尽管如此,我们可以(并且将会)单独打开接口上消息的传输和接收。这对于 CDP 来说是不可能的,其中传输和接收被视为同一项目。
下表显示了我们将在此配置中使用的命令。
命令 | 描述 |
| 全局开启 CDP(默认开启) |
| 全局开启 LLDP(默认关闭) |
| 在单个接口上打开 CDP(如果您已全局禁用它) |
| 开启单接口发送LLDP报文 |
| 在单个接口上打开 LLDP 消息的接收 |
CDP 和 LLDP 配置命令。
循序渐进的 CDP/LLDP 实验室
CDP和LLDP的配置
我们必须为这个实验室配置要求。我们要做的第一件事是在接入交换机的所有接入端口上禁用 CDP。因此,我们需要连接到接入交换机(在本例中 Access1st
)。为了完成这个任务,我们需要输入no cdp enable
我们拥有的所有 FastEthernet 接口。下面是我们需要输入的命令。
Access1st(config)#
Access1st(config)#interface range FastEthernet 0/1 - 24
Access1st(config-if-range)#no cdp enable
Access1st(config-if-range)#exit
Access1st(config)#
对两台接入交换机执行相同操作后,我们就可以在分布交换机上打开 LLDP。这非常简单:只需连接到它并输入lldp run
配置提示。之后,您将看到实验室的分数达到 100%。这是因为我们不需要配置任何其他东西。相反,从现在开始,我们将专注于设备的发现。
已知拓扑中的 Cisco 发现协议
只是为了照顾我们的第一步,我们将开始在可以在 Packet Tracer 上看到的拓扑部分中使用 CDP。即使我们在接入交换机的接入端口上禁用了 CDP,我们也会在上行链路上启用它。因此,我们希望看到分布交换机和接入交换机之间的 CDP 消息。要查看它们是否正常工作,我们需要检查我们的分布交换机的 CDP 表。我们通过键入来做到这一点show cdp neighbors
。
这是分布交换机上 CDP 邻居表的内容。
这个命令的输出非常简单,但还是让我们分解一下。
- 设备 ID - 此字段表示邻居的主机名
- 本地接口——我们收到广告的当前设备(在本例中为配电交换机)上的接口
- Holdtime – 从表中删除这个邻居之前的秒数,每次我们收到来自这个邻居的广告时,它都会重新设置为 180
- Capability – 远程设备的能力,参考命令中的图例
- 平台– 远程设备的设备模型(在本例中,我们有两个 Catalyst 2960)
- 端口 ID – 广告/消息发起的远程设备上的接口
基于此,我们知道 Distribution 的 FastEthernet 0/1 连接到 Access1st 上的 GigabitEthernet 0/1。我们可以将其添加到我们的拓扑图中。
LLDP 发现
如果您查看之前的输出,您会发现缺少某些内容。事实上,分布交换机正确地看到了两个接入交换机,但它没有看到其他任何东西。但是,我们清楚地看到一条电缆进入云端:缺少邻居。这是因为那个邻居没有和我们一起运行 CDP,所以我们需要检查LLDP 邻居表。该命令是show lldp neighbors
.
这是 LLDP 表的内容。
注意:如果您看到同一设备的多个条目,这可能是由于 Packet Tracer 错误。
此命令的输出与 CDP 的输出完全相同,我们不再赘述。相反,我们可以将 WestRouter 添加到我们的拓扑图中,连接到我们的分布式交换机的 GigabitEthernet 0/1。
这是迄今为止发现的拓扑。
添加一些细节
此时,我们应该提出一个问题:我们如何连接到该 WestRouter 以查看它是否也有邻居?我们需要知道它的IP地址。与 CDP 不同,数据包跟踪器上的 LLDP 并没有给我们一个简单的方法。相反,我们需要使用我们在交换机故障排除文章中学到的技巧:从 MAC 检索 IP 地址。我们需要做的第一件事是检索 MAC 地址,我们可以使用show lldp neighbors details
.
这些是 LLDP 邻居的详细信息,我们正在寻找 MAC 地址(突出显示)。
从图中可以看出,MAC 地址标识为Chassis ID。现在,我们需要做的就是在交换机的 ARP 表中查找该 MAC 地址。我们在上一篇文章中已经知道如何使用show ip arp
命令从MAC地址中获取IP地址。因此,我们刚刚发现 WestRouter 的 IP 地址为10.0.1.1
。
WestRouter 的拓扑
现在是时候发现云了!从分布式交换机,telnet 到 WestRouter 发出telnet 10.0.1.1
并使用ictshore密码登录。从现在开始,我们将只使用 CDP。发布show cdp neighbors
以查看我们拥有的所有邻居。
这些是 WestRouter 的邻居。
如果我们继续绘制网络,我们应该创建类似的东西。
从 WestRouter,我们发现了另外两个设备。
现在,CDP 有一个惊人的扩展,让我们可以直接看到连接设备的 IP 地址。因此,我们不需要在 ARP 和 MAC 地址表中进行任何查找。相反,我们只是使用 CDP 作为发现拓扑的综合工具。我们可以通过发布来查看我们正在寻找的所有细节show cdp neighbors detail
。
突出显示,三个邻居的 IP 地址。
此时,我们有了需要连接的 IP 地址。该过程将是相同的:连接、检查邻居、报告图纸、收集 IP 地址、连接到邻居,然后重复。
CenterSwitch 的拓扑
如果您 telnet 到CenterSwitch,您将看到这些邻居。
CenterSwitch 上的 CDP 邻居表。
如您所见,邻居发现非常简单,而且您现在应该对此充满信心。因此,让我们继续我们的绘图(见下文)。
我们的拓扑变得更加复杂。
来自Bottom1st的拓扑
在我们连接到我们从 CenterSwitch 发现的任何其他路由器之前,我们需要记住Bottom1st。我们从 WestRouter 发现了这个开关,我们应该检查它以保持数学方法。因此,远程登录并检查邻居:预期的输出是下面的。
这些是Bottom1st 的邻居。
由于我们已经知道 WestRouter 和 SouthRouter,所以我们不需要在图中添加任何设备。但是,我们不知道Bottom1st 和SouthRouter 之间的链接,因此我们应该添加它。
这是缺失的链接。
NorthRouter、EastRouter 和 SouthRouter 的拓扑
如果您 telnet 到NorthRouter,您将看到一个邻居:CenterSwitch。我们已经知道了,所以我们应该继续研究其他设备。一旦您远程登录到下一个设备——即EastRouter,您将看到以下两个邻居。
EastRouter 的 CDP 邻居。
如果您在SouthRouter上发出相同的命令,您将再次找到 Bottom2nd。验证这一点,然后将这个新开关映射到绘图中,如下所示。
另一个设备加入我们的拓扑
来自Bottom2nd的拓扑
如果您远程登录到Bottom2nd,您会发现三个邻居:EastRouter、SouthRouter 和 IslandRouter。通过连接到 IslandRouter 并检查其邻居,您可以验证它仅连接到 Bottom2nd。因此,我们完成了拓扑。它看起来就像下面一样。
这是我们实验室的完整拓扑。
如果拓扑不够用,或者如果您想 telnet 到特定设备并再次检查其邻居,我们开发了下表,其中包含我们找到的设备列表和相关的 IP 地址。
Device | IP |
Access1st | 10.0.1.10 |
Access2nd | 10.0.1.11 |
Distribution | 10.0.1.5 |
WestRouter | 10.0.1.1, 10.0.2.1, 10.0.3.1 |
Bottom1st | 10.0.3.2 |
SouthRouter | 10.0.2.4, 10.0.3.3, 10.0.4.1 |
CenterSwitch | 10.0.2.5 |
NorthRouter | 10.0.2.2 |
EastRouter | 10.0.2.3, 10.0.4.2 |
Bottom2nd | 10.0.4.3 |
IslandRouter | 10.0.4.4 |
本实验室中的设备。
结论
在本实验中,我们发现了两个关键协议的所有秘密:CDP 和 LLDP。除了理论之外,我们还学习了配置命令以及启用或禁用它们的方法。然而,我们在本文中学到和实践的最重要的事情是邻居发现过程。因此,您现在知道如何从头开始发现网络是如何构建的。回顾一下,这些是您需要遵循的步骤。
- 连接到设备
- 检查其邻居(在 CDP 和 LLDP 中)
- 在图纸上报告邻居并写下他们的 IP 地址
- 连接到每个邻居并重复该过程
如果您在参加 CCNA 之前正在阅读本文,这里是我们使用的命令。
-
cdp run
并lldp run
全局打开 CDP/LLDP(或在命令前使用“no”关键字关闭) -
cdp enable
打开每个接口的 CDP(或在命令前使用“no”关键字关闭) -
lldp transmit
并lldp receive
在每个接口的基础上打开 LLDP 传输或接收(或在命令前使用“no”关键字关闭) -
show cdp neighbors
并show lldp neighbors
快速查看邻居列表 -
show cdp neighbors
详细了解每个邻居的IP地址