linux bridge在虚拟化场景和docker中用的比较多,之前也知道它的原理,基本上就是类似二层交换机,根据mac地址和vid转发。但是对于vlan的处理网上的文档比较少,所以这次就看一下源码,分析下不配置vlan时如何转发,vlan又如何生效。
不配置vlan时,bridge纯靠mac转发,可通过如下两个命令之一查看mac转发表
//此命令只显示单播转发表,比较符合硬件交换机的显示规范,
//匹配到mac的,从port转发出去(可通过brctl showbsp br1查看端
//口号和端口的对应关系)
root@node2:~# brctl showmacs br1
port no mac addr is local? ageing timer
2 12:27:96:8c:f4:58 yes 0.00
2 12:27:96:8c:f4:58 yes 0.00
1 66:e6:6f:a8:d4:97 yes 0.00
1 66:e6:6f:a8:d4:97 yes 0.00
//通过此命令可显示所有的单播和组播表项
root@node2:~# bridge fdb show br br1
33:33:00:00:00:01 dev br1 self permanent
66:e6:6f:a8:d4:97 dev vetha master br1 permanent
66:e6:6f:a8:d4:97 dev vetha vl