了解 link 层多播

understanding link layer multicasting

我是网络编程的新手,尤其是 L2。

我正在使用 C 实现 LLDP(Link 层发现协议)。我知道 link 层上的多播适用于直接连接的 LAN 设备。我的目标是让它跨 VLAN 工作(例如:10.1.1.0 池​​中的设备应该能够接收 192.168.1.0 中的设备发送的 L2 多播数据包)。 有没有可能的方法来实现这个..或者我在这里遗漏了一些重要的东西?

LLDP 上的 Wireshark wiki 说:

LLDP Data Units (LLDPDUs) are sent to the destination MAC address 01:80:c2:00:00:0e. This address is defined as the "LLDP_Multicast" address. This address is defined within a range of addresses reserved by the IEEE for protocols that are to be constrained to an individual LAN. AN LLDPDU will not be forwarded by MAC bridges (e.g. switches) that conform to IEEE Std 802.1D-2004.

  1. 那么这是否意味着交换机或路由器只是忽略来自另一个子网中的另一个设备的 link 层多播数据包? link 层上的多播是否仅适用于直接连接的设备?

  2. 数据link层多播地址的范围是什么?

Link- 本地多播不会传播到 link。因此,忽略或不忽略来自另一个 link 的 link 本地多播的问题将永远不会出现。

您将无法成功创建源自一个 link 并在另一个 link 上接收的 LLDP 实现。您将需要创建一个完全不同的协议来执行您想要的操作,并且您将需要更改网络设备上的软件以识别此新协议。这对于 运行 专有软件的网络设备是不可能的。

从你的问题来看,你似乎在混合使用 L2 和 L3 技术。如果您正在处理 L2 多播,IP 地址在那里没有任何意义。

关于问题:

1) 在谈论交换机时,您必须考虑交换机是否符合 802.1D 标准。一个哑交换机(隔壁商店的 la Generic 5 美元)会将您的 LLDP PDU 视为广播帧,并将其分发到除接收它的端口之外的所有其他端口。这是因为MAC地址以01开头,表示设置了组地址位。

符合 802.1D 标准的交换机不会将此帧转发到任何地方。它 可能 在本地处理它以了解发送它的设备。如果交换机启用了 LLDP 协议支持,就会发生这种情况。

路由器将以与 802.1D 兼容交换机相同的方式运行。它不会转发 LLDP 帧,如果启用了 LLDP,可能 处理它。

PC 的作用与路由器相同。

2) 范围将取决于 link 的端点。任何智能设备都会终止 LLDP 帧的旅程。哑交换机会将其视为广播帧。