BCM56960指的是博通的一个型号的交换芯片。以下内容涉及到的原理其实在大多数的BCM芯片中都差不多。
L2表的表项内容形式:
BCM.0> l2 show
mac=00:00:00:00:00:34 vlan=1 GPORT=0x19 modid=102 port=25/xe0 Hit
其中蓝色字体就是具体的一条表项的内容,这只是其中一种形式,也就是smac+vlan+端口信息。
那么这么一条L2表项是如何生成的呢?
关于L2表的表项生成,有两种方式:
1、通过smac学习
2、手动添加
首先smac学习,指的是当一个报文进入端口之后,查找L2表项,如果没有发现匹配到smac地址,那么L2表就会自动生成一条新表项来记录这个报文smac+vlan+端口信息。但是端口的smac学习功能是需要打开才行,一般默认是打开的。手动打开的配置可以参考以下例子:
/*设置port=35的学习模式
不同的学习模式相互独立*/
cint;
cint_reset();
uint32 flag;
flag=BCM_PORT_LEARN_ARL|BCM_PORT_LEARN_FWD;
print bcm_port_learn_set(0,35,flag);
print flag;
exit;
那么手动添加又是如何?
手动添加顾名思义就是人为添加,以下是其中一个配置的例子:
cint;
cint_reset();
print bcm_l2_clear(0);
print bcm_l2_init(0);
int vlanid=250;
bcm_l2_addr_t l2addr;
bcm_mac_t mac;
mac[5]=0x33;
print bcm_l2_addr_t_init(&l2addr,mac,vlanid);
print l2addr;
l2addr.flags=0;
l2addr.port=25;
l2addr.modid=102;
print bcm_l2_addr_add(0,&l2addr);
print bcm_l2_addr_get(0,mac,vlanid,&l2addr);
print l2addr;
exit;
我们来看下新生成的表项:
BCM.0> l2 show
mac=00:00:00:00:00:33 vlan=250 GPORT=0x19 modid=102 port=25/xe0
L2的表项的生成方式讲解就到此结束。