我对网络编程相当陌生,尤其是L2。
我正致力于在C中实现LLDP(链路层发现协议),我理解链路层上的多播工作在直接连接的局域网设备上。我的目标是让它在VLAN中工作(例如: 10.1.1.0池中的设备应该能够接收设备在192.168.1.0中发送的L2多播数据包)。是否有可能实现这个..or --我在这里缺少一些重要的东西吗?
自民党的Wireshark wiki说:
LLDP数据单元(LLDPDU)被发送到目标MAC地址01:80:c2:00:00:0e.。这个地址被定义为"LLDP_Multicast“地址。此地址是在IEEE 为要受限于单个的协议保留的地址范围内定义的。LLDPDU不会被符合IEEE802.1D-2004标准的MAC网桥(例如交换机)转发。
发布于 2016-02-14 12:46:11
从您的问题来看,您似乎正在混合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-14 08:21:35
链接-本地多播将不会在一个链接上传播。正因为如此,忽略或者不忽略来自另一个链路的链路本地多播的问题永远不会出现。
您将无法成功地创建一个LLDP实现,该实现起源于一个链接,并在另一个链接上接收。你需要创建一个完全不同的协议来做你想做的事情,并且你需要改变网络设备上的软件来识别这个新协议。这在运行专有软件的网络设备中是不可能的。
https://stackoverflow.com/questions/35389482
复制相似问题