博通SDK关于IPMC的操作

来源:互联网 发布:眼睛 风格 知乎 编辑:程序博客网 时间:2024/05/22 13:39

最近在做基于博通的三层交换机,其中涉基到三层组播功能的开发

现在在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.0>show counter

GTBCA.ge2               :                21,185                +172               2/s
GT64.ge2                :                14,896                +108               2/s
GT127.ge2               :                 5,426                 +41
GT255.ge2               :                 2,242                 +17
GT511.ge2               :                   422                  +4
GT1023.ge2              :                   267                  +2
GTPKT.ge2               :                23,256                +172               2/s
GTBYT.ge2               :             2,219,533             +16,903             190/s
GTPOK.ge2               :                23,256                +172               2/s
RDBGC0.ge12             :                 3,820                +479               8/s
RDBGC2.ge12             :                 3,820                +479               8/s
GRMCA.ge12              :                 4,272                +479               8/s
GRBCA.ge12              :                   802                  +3
GR127.ge12              :                 4,701                +482               8/s
GRPKT.ge12              :                 5,115                +482               8/s
GRBYT.ge12              :               537,432             +50,104             926/s
GRPOK.ge12              :                 5,115                +482               8/s
GTBCA.ge12              :                20,381                +169               2/s
GT64.ge12               :                14,626                +108               2/s
GT127.ge12              :                 4,599                 +38
GT255.ge12              :                 2,129                 +17
GT511.ge12              :                   414                  +4
GT1023.ge12             :                   267                  +2
GTPKT.ge12              :                22,038                +169               2/s
GTBYT.ge12              :             2,090,005             +16,615             190/s
GTPOK.ge12              :                22,038                +169               2/s
RDBGC0.ge14             :                 3,890                 +47
RDBGC2.ge14             :                 4,908                 +47
GRMCA.ge14              :                 6,021                 +47
GRBCA.ge14              :                15,775                +169               2/s
GR64.ge14               :                12,199                +114               2/s
GR127.ge14              :                 4,613                 +38
GR255.ge14              :                 4,129                 +58
GR511.ge14              :                   424                  +4
GR1023.ge14             :                   461                  +2
GRPKT.ge14              :                21,834                +216               3/s
GRBYT.ge14              :             2,410,982             +24,480             400/s
GRPOK.ge14              :                21,834                +216               3/s
GTBCA.ge14              :                   653                  +3
GT127.ge14              :                   829                  +3
GTPKT.ge14              :                 1,142                  +3
GTBYT.ge14              :               122,299                +288
GTPOK.ge14              :                 1,142                  +3

从counter可以看出

ge12口收到组播包

GRMCA.ge12              :                 4,272                +479               8/s

ge14品缺少了GTMCA、没有发出组播包

BCM.0> dump l3_ipmc
L3_IPMC.ipipe0[0]: <VALID=1,PORT_TGID=0,MODULE_ID=0,L3_BITMAP=0xa0000,L2_BITMAP=0x8000,IPMC_TUNNEL_TYPE=0,HIGIG_TRUNK_OVERRIDE=0,EVEN_PARITY=0>

三层组播同vlan内组播验证失败


下面接着上面验证三层跨vlan组播

先看SDK下面的提示

 ipmc repl set MCGroup=<group_no> Port_map=<pbmp>
               VlanList=<list>

其中参数MCGroup不知道怎么和组播组联系在一起的,至少从命令行上没有明显的提示

BCM.0> dump l3_entry_ipv4_multicast
L3_ENTRY_IPV4_MULTICAST.ipipe0[816]: <VRF_ID=0,VLAN_ID=1,VALID=1,V6=0,SOURCE_IP_ADDR=0x6f6f6f6f,RPE=0,RESERVED=0,PRI=0,L3MC_INDEX=0,IPMC=1,HIT=1,GROUP_IP_ADDR=0xeb030303,EVEN_PARITY=1,DST_DISCARD=0>

所以 就取值L3MC_INDEX (不确定对不对)

 BCM.0>ipmc repl set MCGroup=0 port_map=ge16 vlanlist=2

IPMC: Invalid configuration

命令不成功

预期结果:

ge16口可以收到组播数据包,ge18口收不到

实际结果:

ge


结果 同vlan内ipmc组播失败,跨vlan组播失败,原因在查找
        



0 0
原创粉丝点击