如何阻止报文从交换芯片的其中一个端口发送?
目前在做二层交换机的开发项目,遇到这样一个问题,不知道如何解决,具体问题是这样的:现在交换机有3个端口,其中两个端口(Port 0 ,Port 1)与PC机相连,另一个端口与CPU控制器连接。
(1)当Port 0接收到一个特定的多播报文后,交由CPU进行处理,但是报文的源地址跟目的地址都不会改变,CPU改写特定参数后再转发出去。
(2)由于报文的目的地址为多播地址,导致修改后的报文会从Port 0 和Port 1两个端口都转发出去,
如何使修改后的报文只能Port 1端口转发,而避免从Port0 转发?
希望知道该如何解决这个问题的前辈给予指教,谢谢~
修改目的mac,可以吗 目的MAC跟源MAC地址都不能修改
回复 2# tc1989tc
二层有vlan吧?把端口划分到不同的vlan即可 这属于开发层面了吧? 维护一个all interface list (port0, port1), 维护一个 multicast incoming interface(port0), 那 multicast outgoing interface list (OIL) = all interface list (port0, port1) - incoming interface(port0)
简言之,就是记住multicast 的入接口, 然后转发的时候把它剪掉。 交换芯片应该支持组播的 flood mask吧。如果不支持的话,支持vlan吗,vlan应该也可以做。另外,如果支持芯片header的话,可以考虑在报文前加header,告诉switch这个报文从哪个port出去?
LZ这是做什么项目
页:
[1]