我对网络编程比较陌生,尤其是L2。
我正在C中实现LLDP(链路层发现协议)。我知道链路层上的多播可以在直接连接的LAN设备上工作。我的目标是让它跨VLAN运行(例如:10.1.1.0池中的设备应该能够接收192.168.1.0中设备发送的L2组播数据包)。 有没有办法实现这个目标..或者我错过了一些重要的东西吗?
LLDP上的Wireshark维基说:
LLDP数据单元(LLDPDU)被发送到目的地MAC地址 01:80:c2:00:00:0e 。该地址被定义为“LLDP_Multicast”地址。此地址在IEEE 保留的地址范围内定义,用于限制为单个LAN的协议。符合IEEE Std 802.1D-2004的MAC网桥(例如交换机)不会转发LLDPDU。
这是否意味着交换机或路由器只是忽略来自另一个子网中另一台设备的链路层组播数据包? 链路层上的组播只能在直连设备上工作吗?
数据链路层组播地址的范围是什么?
答案 0 :(得分:1)
链接本地多播不会从链接传播。因此,忽略或不忽略来自其他链接的链接本地多播的问题永远不会出现。
您将无法成功创建一个源自一个链路并在另一个链路上接收的LLDP实施。您需要创建一个完全不同的协议来执行您想要的操作,并且您需要更改网络设备上的软件以识别此新协议。对于运行专有软件的网络设备,这是不可能的。
答案 1 :(得分:1)
从您的问题来看,您似乎正在混合使用L2和L3技术。如果您正在处理L2多播,那么IP地址没有任何意义。
至于问题:
1)谈到交换机时,您必须考虑交换机是否符合802.1D标准。一个哑开关(a。来自隔壁商店的通用$ 5)会将您的LLDP PDU视为广播帧,并将其分发到除收到它之外的所有其他端口。这是因为MAC地址以01
开头,表示组地址位已设置。
符合802.1D标准的交换机不会将此帧转发到任何地方。 可能在本地处理它以了解发送它的设备。如果交换机启用了LLDP协议支持,则会发生这种情况。
路由器的行为方式与符合802.1D标准的交换机相同。如果LLDP已启用,它将不转发LLDP帧,可能处理它。
PC的行为与路由器相同。
2)范围取决于链接的端点。任何智能设备都将终止LLDP帧的旅程。哑巴开关会将其视为广播帧。