1

我对网络编程非常陌生,尤其是 L2。

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

LLDP 上的 Wireshark wiki 说:

LLDP 数据单元 (LLDPDU) 被发送到目标 MAC 地址01:80:c2:00:00:0e。该地址被定义为“LLDP_Multicast”地址。该地址是在 IEEE为限制在单个 LAN 中的协议保留的地址范围内定义的。符合 IEEE Std 802.1D-2004 的 MAC 网桥(例如交换机)不会转发 LLDPDU。

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

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

4

2 回答 2

1

链路本地多播不会从链路传播。因此,永远不会出现忽略或不忽略来自另一个链路的链路本地多播的问题。

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

于 2016-02-14T08:21:35.147 回答
1

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

至于问题:

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

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

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

PC 的行为与路由器相同。

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

于 2016-02-14T12:46:11.800 回答