Cisco CDP 是否需要 dot1q 本地标记?

网络工程 VLAN 发展计划
2021-07-17 08:43:40

路由器可以通过交换机中继接收 CDP 广告的唯一方法是在路由器上创建一个配置了“encapsulation dot1Q 1 native”的子接口。如果此子 if 被禁用,则不会处理广告,并且显示邻居不会显示任何内容。有多个处于 up 状态的 sub-ifs,但知道这些 sub-ifs 将处理 cdp 广告。只有 dot1q 原生 sub-if 会。问题是 cdp 是否只发送封装在非标记以太网帧中的广告?cdp 是否需要在每台设备上配置本机 vlan?

2个回答

CDP 帧可以标记或不标记发送。我认为您最好直接从链接的 CIsco 技术说明中阅读,该说明很好地解释了行为,并且是专门为您的场景编写的 - 交换机使用子接口将流量发送到路由器。

https://www.cisco.com/c/en/us/support/docs/network-management/discovery-protocol-cdp/118736-technote-cdp-00.html

总而言之,为了满足 Stack Exchange 对 post 的要求,

重要的

CDP 的行为可能会因您运行的软件平台(IOS、IOS-XE、IOS-XR、NX-OS 等)而异。上面链接的 Cisco 文档适用于运行 IOS 的通用路由器和交换机。

概括

这两种类型的设备(交换机和路由器)的共同行为是 CDP 总是选择最低的 VLAN 来发送 CDP 数据包。它是否被标记取决于任一设备上的配置。

交换机始终使用 VLAN 1 发送 CDP 数据包,因为无法从 VLAN 数据库中删除 VLAN 1。如果您没有更改该中继端口的本地 VLAN,则 CDP 数据包将不带标签地发送。如果您更改了中继端口上的本地 VLAN,则交换机将发送标记在 VLAN 1 上的 CDP 数据包。

路由器将使用在子接口(即处于 Up 状态)上配置的最低 VLAN 发送 CDP 数据包,但以下例外。如果 VLAN 1 没有子接口,路由器将使用主接口发送 CDP 数据包。它使用主接口,因为它默认位于 VLAN 1 中,并且 VLAN 1 被视为路由器上的本地 VLAN。

R1#show run | section interface GigabitEthernet0/0
interface GigabitEthernet0/0
 no ip address
 duplex auto
 speed auto
interface GigabitEthernet0/0.10
 encapsulation dot1Q 10
interface GigabitEthernet0/0.20
 encapsulation dot1Q 20

R1#show int gi0/0    
GigabitEthernet0/0 is up, line protocol is up 
  Hardware is CN Gigabit Ethernet, address is 8843.e1e3.c460 (bia 8843.e1e3.c460)
  MTU 1500 bytes, BW 100000 Kbit/sec, DLY 100 usec, reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation 802.1Q Virtual LAN, Vlan ID  1., loopback not set

这种默认情况下的 CDP 数据包是不带标签的。

变化和影响

  1. 如果您在路由器上为 VLAN 1 创建一个子接口,然后将其关闭,则路由器将在下一个最低 VLAN 上发送 CDP 数据包 - 它们将被标记,因为路由器上的本地 VLAN 仍然是 VLAN 1。交换机将从路由器接收 CDP 数据包,但由于您禁用了路由器的 VLAN 1 子接口,路由器将丢弃传入的 CDP 数据包,因为它发送所有未标记帧的接口已关闭。

  2. 如果您随后将路由器上的本地 VLAN 从 VLAN 1 更改为最低的 VLAN 子接口,则路由器发送的 CDP 数据包应该是未标记的,但这是不正确的 - 它们仍将被标记。无论这是设计特性还是 IOS 中的错误,如果路由器配置了任何非 1 的 VLAN,即使您已将 VLAN 配置为本地,路由器也会发送从子接口标记的 CDP 数据包。路由器将接收来自交换机的未标记的 CDP 数据包,因为现在有一个已配置的处于 up 状态的子接口被设置为本地 VLAN。从安全的角度来看,您不希望将路由器上的本地 VLAN 更改为用于数据流量的子接口。您可以只为 CDP 创建一个,但我看不出将 CDP 移出路由器上的 VLAN 1 的好处。

需要记住的几点。

  • CDP 不是协商协议。它以周期性间隔(默认为 60 秒)向所有处于 Up 状态的接口发送 CDP 数据包
  • 对于任何物理接口,它并不关心它是否在一个 VLAN 上接收 CDP 数据包并在另一个 VLAN 上发送 CDP 数据包。
  • 控制流量和数据流量之间存在差异。如果您在中继交换机端口上配置了交换机端口中继允许 vlan 10,20并且没有更改本地 VLAN 的默认值 1,则交换机仍将在该中继上将 CDP 作为未标记的帧发送出去,因为 CDP 是控制平面流量(不受允许列表的影响)并且始终从交换机在 VLAN 1 上发送。任何数据流量都不会被无标记地从这个交换机端口发送出去。

解决您的问题

  1. 确定您的交换机是否正在向您的路由器发送标记或未标记的 CDP 数据包(您是否更改了中继上的本地 VLAN?)。
  2. 您是否因为您在 VLAN 1 中创建了一个子接口并将其关闭而阻止了路由器上的传入 CDP 流量,或者没有与传入标记的 CDP 数据包具有相同 VLAN 的子接口。

在您的情况下,这是因为有人在路由器上为 VLAN 1 创建了一个子接口并将其关闭,可能是因为他们认为这会使网络更安全 - 但事实并非如此。当连接的设备是路由器(在该允许列表中没有本地 VLAN 1)时,您应该始终在交换机中继端口上有一个手动配置的 VLAN 允许列表。

CDP 将仅以未标记的形式发送,它将由物理接口接收,而不是由子接口接收,因此在所有情况下都将被接收