我对网络编程相当陌生,尤其是二级语言。
我正在C语言中研究LLDP(链路层发现协议)的实现。我知道链路层上的多播在直接连接的LAN设备上工作。我的目标是让它跨VLAN工作(例如:10.1.1.0池中的设备应该能够接收192.168.1.0中的设备发送的二级多播数据包)。
有没有可能达到这个目的……或者我错过了一些重要的东西?
LLDP上的Wireshark wiki说:
LLDP数据单元(lldpdu)被发送到目标MAC地址01:80:c2:00:00:0e。该地址被定义为“LLDP_多播”地址。这个地址是在IEEE为协议保留的一个地址范围内定义的,这些协议将被限制在一个单独的LAN上。符合IEEE 802.1D-2004标准的MAC网桥(如交换机)不会转发LLDPDU。
那么,这是否意味着交换机或路由器只是忽略来自另一个子网中另一设备的链路层多播数据包?
链路层上的多播是否只在直接连接的设备上工作?
数据链路层多播地址的作用域是什么?
最佳答案
从你的问题看来,你是在混合L2和L3技术。如果你正在处理二级多播,IP地址没有意义。
至于问题:
1)在谈到交换机时,必须考虑交换机是否符合802.1D标准。哑交换机(A.la Generic$5来自隔壁商店)将您的LLDP PDU视为广播帧,并将其分发到所有其他端口,但接收到的端口除外。这是因为MAC地址以01
开头,这表示设置了组地址位。
兼容802.1D的交换机不会将此帧转发到任何位置。它可能会在本地处理它以了解发送它的设备。如果交换机启用了LLDP协议支持,则会发生这种情况。
路由器将以与802.1D兼容交换机相同的方式工作。它不会转发LLDP帧,如果启用LLDP,它可能会对其进行处理。
一台个人电脑的功能将与路由器相同。
2)作用域将取决于链接的端点。任何智能设备都将终止LLDP帧的行程。一个哑开关会把它当作一个广播帧。
关于c - 了解链路层多播,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35389482/