最近在做基于博通的三层交换机,其中涉基到三层组播功能的开发
现在在SDK下面操作,先对其有一个感性的认识
下面为基本环境:
ge12,ge14在vlan 1下面,ge16,ge18在vlan 2下面,
首先要关掉vlan内对未来组播的洪泛
BCM.0> vlan MulticastFlood 1 2
BCM.0> vlan MulticastFlood 2 2
BCM.0> vlan show
vlan 1 ports cpu,ge0-ge15,ge17,ge19-ge28 (0x00000000000000003ff5ffff), untagged ge0-ge15,ge17,ge19-ge28 (0x00000000000000003ff5fffe) MCAST_FLOOD_NONE
vlan 2 ports cpu,ge16,ge18 (0x0000000000000000000a0001), untagged ge16,ge18 (0x0000000000000000000a0000) MCAST_FLOOD_NONE
使能三层组播
BCM.0> ipmc config enable=1
我们现在向vlan 1 的ge12端口打组播235.3.3.3的数据流
下面验证三层组播转发同vlan内转发
BCM.0> ipmc table add src_ip=111.111.111.111 mc_ip=235.3.3.3 vlanid=1 l2_map=ge14 l3_map=ge16,ge18
预期结果
ge14端口可以收到组播数据包
实际结果
ge14端口收不到组播包
但是sdk下面查看l2_map是有的
BCM.0> ipmc table show
SRC IP ADDRESS MC IP ADDRESS VLAN PORT V COS TS L3_MAP L2_MAP L2_UT_MAP VRF CLASS HIT
111.111.111.111 235.3.3.3 1 0 1 -1 0 0x0000000000000000000a0000 0x000000000000000000008000 0x000000000000000000000000 0 0 y
原因分析
BCM.