在网络中,您希望有一个清晰的地图来了解设备之间的互连。然而,我们并不是一直都有地图。或者,如果我们拥有它,它也不是 100% 最新的。因此,我们需要找到一种替代方法来了解设备之间的互连。幸运的是,Cisco 来帮助我们使用CDP – Cisco 发现协议。通过这个简单而强大的协议,我们可以在我们处理它的过程中最终发现网络拓扑。

本文附带 Cisco Packet Tracer 实验室,您可以使用以下链接免费下载。要从本文的内容中获得最大收益,请立即下载该实验室,然后在阅读本文时按照它进行操作。



CDP 和 LLDP 实验室介绍

拓扑

CDP 和 LLDP 是两个允许您发现网络拓扑的协议。因此,作为本实验的一部分,您将不得不发现一些网络拓扑,因此我们不会在此处展示。因此,我们在云中有一个隐藏的拓扑部分。


python lldp发现设备生成拓扑图 lldp拓扑自动发现_python

除了三个交换机之外,网络的其余部分都是隐藏的,无法被发现。


从拓扑结构中可以看出,我们将三台交换机连接在一起,其中一台连接到云。我们将使用这些交换机来调整 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 来说是不可能的,其中传输和接收被视为同一项目。

下表显示了我们将在此配置中使用的命令。

命令

描述

Device(config)#cdp run

全局开启 CDP(默认开启)

Device(config)#lldp run

全局开启 LLDP(默认关闭)

Device(config-if)#cdp enable

在单个接口上打开 CDP(如果您已全局禁用它)

Device(config-if)#lldp transmit

开启单接口发送LLDP报文

Device(config-if)#lldp receive

在单个接口上打开 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


python lldp发现设备生成拓扑图 lldp拓扑自动发现_python_02

这是分布交换机上 CDP 邻居表的内容。


这个命令的输出非常简单,但还是让我们分解一下。

  • 设备 ID - 此字段表示邻居的主机名
  • 本地接口——我们收到广告的当前设备(在本例中为配电交换机)上的接口
  • Holdtime – 从表中删除这个邻居之前的秒数,每次我们收到来自这个邻居的广告时,它都会重新设置为 180
  • Capability – 远程设备的能力,参考命令中的图例
  • 平台– 远程设备的设备模型(在本例中,我们有两个 Catalyst 2960)
  • 端口 ID – 广告/消息发起的远程设备上的接口

基于此,我们知道 Distribution 的 FastEthernet 0/1 连接到 Access1st 上的 GigabitEthernet 0/1。我们可以将其添加到我们的拓扑图中。

LLDP 发现

如果您查看之前的输出,您会发现缺少某些内容。事实上,分布交换机正确地看到了两个接入交换机,但它没有看到其他任何东西。但是,我们清楚地看到一条电缆进入云端:缺少邻居。这是因为那个邻居没有和我们一起运行 CDP,所以我们需要检查LLDP 邻居表。该命令是show lldp neighbors.


python lldp发现设备生成拓扑图 lldp拓扑自动发现_IP_03

这是 LLDP 表的内容。


注意:如果您看到同一设备的多个条目,这可能是由于 Packet Tracer 错误。

此命令的输出与 CDP 的输出完全相同,我们不再赘述。相反,我们可以将 WestRouter 添加到我们的拓扑图中,连接到我们的分布式交换机的 GigabitEthernet 0/1。


python lldp发现设备生成拓扑图 lldp拓扑自动发现_Cisco_04

这是迄今为止发现的拓扑。


添加一些细节

此时,我们应该提出一个问题:我们如何连接到该 WestRouter 以查看它是否也有邻居?我们需要知道它的IP地址。与 CDP 不同,数据包跟踪器上的 LLDP 并没有给我们一个简单的方法。相反,我们需要使用我们在交换机故障排除文章中学到的技巧:从 MAC 检索 IP 地址。我们需要做的第一件事是检索 MAC 地址,我们可以使用show lldp neighbors details.


python lldp发现设备生成拓扑图 lldp拓扑自动发现_python_05

这些是 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以查看我们拥有的所有邻居。


python lldp发现设备生成拓扑图 lldp拓扑自动发现_python_06

这些是 WestRouter 的邻居。


如果我们继续绘制网络,我们应该创建类似的东西。


python lldp发现设备生成拓扑图 lldp拓扑自动发现_IP_07

从 WestRouter,我们发现了另外两个设备。


现在,CDP 有一个惊人的扩展,让我们可以直接看到连接设备的 IP 地址。因此,我们不需要在 ARP 和 MAC 地址表中进行任何查找。相反,我们只是使用 CDP 作为发现拓扑的综合工具。我们可以通过发布来查看我们正在寻找的所有细节show cdp neighbors detail


python lldp发现设备生成拓扑图 lldp拓扑自动发现_开发语言_08

突出显示,三个邻居的 IP 地址。


此时,我们有了需要连接的 IP 地址。该过程将是相同的:连接、检查邻居、报告图纸、收集 IP 地址、连接到邻居,然后重复。

CenterSwitch 的拓扑

如果您 telnet 到CenterSwitch,您将看到这些邻居。


python lldp发现设备生成拓扑图 lldp拓扑自动发现_IP_09

CenterSwitch 上的 CDP 邻居表。


如您所见,邻居发现非常简单,而且您现在应该对此充满信心。因此,让我们继续我们的绘图(见下文)。


python lldp发现设备生成拓扑图 lldp拓扑自动发现_Cisco_10

我们的拓扑变得更加复杂。


来自Bottom1st的拓扑

在我们连接到我们从 CenterSwitch 发现的任何其他路由器之前,我们需要记住Bottom1st。我们从 WestRouter 发现了这个开关,我们应该检查它以保持数学方法。因此,远程登录并检查邻居:预期的输出是下面的。


python lldp发现设备生成拓扑图 lldp拓扑自动发现_IP_11

这些是Bottom1st 的邻居。


由于我们已经知道 WestRouter 和 SouthRouter,所以我们不需要在图中添加任何设备。但是,我们不知道Bottom1st 和SouthRouter 之间的链接,因此我们应该添加它。


python lldp发现设备生成拓扑图 lldp拓扑自动发现_Cisco_12

这是缺失的链接。


NorthRouter、EastRouter 和 SouthRouter 的拓扑

如果您 telnet 到NorthRouter,您将看到一个邻居:CenterSwitch。我们已经知道了,所以我们应该继续研究其他设备。一旦您远程登录到下一个设备——即EastRouter,您将看到以下两个邻居。


python lldp发现设备生成拓扑图 lldp拓扑自动发现_后端_13

EastRouter 的 CDP 邻居。


如果您在SouthRouter上发出相同的命令,您将再次找到 Bottom2nd。验证这一点,然后将这个新开关映射到绘图中,如下所示。


python lldp发现设备生成拓扑图 lldp拓扑自动发现_IP_14

另一个设备加入我们的拓扑


来自Bottom2nd的拓扑

如果您远程登录到Bottom2nd,您会发现三个邻居:EastRouter、SouthRouter 和 IslandRouter。通过连接到 IslandRouter 并检查其邻居,您可以验证它仅连接到 Bottom2nd。因此,我们完成了拓扑。它看起来就像下面一样。


python lldp发现设备生成拓扑图 lldp拓扑自动发现_Cisco_15

这是我们实验室的完整拓扑。


如果拓扑不够用,或者如果您想 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。除了理论之外,我们还学习了配置命令以及启用或禁用它们的方法。然而,我们在本文中学到和实践的最重要的事情是邻居发现过程。因此,您现在知道如何从头开始发现网络是如何构建的。回顾一下,这些是您需要遵循的步骤。

  1. 连接到设备
  2. 检查其邻居(在 CDP 和 LLDP 中)
  3. 在图纸上报告邻居并写下他们的 IP 地址
  4. 连接到每个邻居并重复该过程

如果您在参加 CCNA 之前正在阅读本文,这里是我们使用的命令。

  • cdp runlldp run全局打开 CDP/LLDP(或在命令前使用“no”关键字关闭)
  • cdp enable 打开每个接口的 CDP(或在命令前使用“no”关键字关闭)
  • lldp transmitlldp receive在每个接口的基础上打开 LLDP 传输或接收(或在命令前使用“no”关键字关闭)
  • show cdp neighborsshow lldp neighbors快速查看邻居列表
  • show cdp neighbors 详细了解每个邻居的IP地址