对于openvswitch来说,我曾经看到过这样一篇文章,大概意思是:ovs的vlan(tag)的内部机制和外部机制是不一样的。 对于同ovs的同vlan的端口,数据流量是没有vlan的存在的。
即当一个端口的数据被发送时,ovs会先行检查本ovs是否是相同vlan(tag)的端口,如果有,则向它们发送一份无vlan的数据。 然后检查是否有“trunk”端口,如果有,则会在数据出这些端口时,为其打上tag。
可能解释的不清楚,大致就是:当使用openvswitch的vlan网络时,尽量使用两个网桥来实现vlan的转换或流表的match,因为当你使用一个ovs并且打上tag后,并设想通过openflow进行一些vlan的match操作,这时候你是抓不到vlan的,因为只有在数据出"trunk"端口才会有vlan标签。而其它时候,vlan是由ovs“代理”掉的。这也是openstack的vlan网络模式需要双ovs实现的原因。