一个Bridge可以抽象为两部分:交换模块(基于VLAN ID做报文交换)和接口,如下图所示:




vlan pool 默认分配算法 默认vlan id_Access


在此介绍接口在报文的进与出时,Bridge接口关于VLAN ID的处理方式。


处理方式有三种模式:Access、Trunk、Hybrid。这三种模式都是报文在进入或者离开接口时,针对报文的VLAN ID的处理策略。


一 名词介绍


Tag报文:指的是报文中有VLAN ID,简称Tag。


Untag:指的是报文中没有VLAN ID,简称Untag。


VID:就是VLAN ID。


PVID:基于VID的端口,PVID与报文无关,是Bridge端口的一种属性,简单的说,就是端口的默认VLAN ID。


Default VID:端口默认VLAN ID,也可以称为PVID。Bridge端口默认VLAN ID,默认取值为“1”,当然,也可以修改为其他默认值。


VLAN Native:这个是Cisco创造的名词。就是默认VID,即PVID。


二 Bridge的三种接口模式:Access、Trunk、Hybrid


1 Access接口模式


报文进入和离开Bridge的Access模式接口如下图:



vlan pool 默认分配算法 默认vlan id_vlan pool 默认分配算法_02


1.1 报文入接口原则


针对Tag报文:直接丢弃。


针对Untag报文:打上Default VID Tag,送入交换模块。


1.2 报文出接口原则


从交换模块转发到端口带有Tag标签的报文(肯定带有Tag标签,而且这VID等于Default VID),先去除Tag,再从接口出去。


2 Trunk接口模式


报文进入和离开Bridge的Trunk模式接口的情况如下图:



vlan pool 默认分配算法 默认vlan id_级联_03


Trunk模式,首先要配置允许进入接口的VLAN ID列表,比如配置为:10,11,30~50,表示允许这些VLAN ID可以进入端口,其他则不允许进入。


2.1 报文入接口原则


针对Tag报文,VLAN ID不在Trunk允许范围内:直接丢弃(哪怕这个报文的VID等于这个端口的Default VID)。


针对Tag报文,VLAN ID在Trunk允许范围内:送入进入交换模块,并且VLAN ID保持不变。


针对Untag报文:打上Default VID Tag,送入交换模块。


2.2 报文出接口原则


从交换模块转发到端口的带有Tag标签的报文,如果VLAN ID等于Default VID,先去除Tag,再从接口出去。


从交换模块转发到端口的带有Tag标签的报文,如果VLAN ID不等于Default VID,则不去除Tag,VLAN ID保持不变,再从接口出去。


3 Hybrid接口模式


Hybrid模式,在Trunk模式的基础上又多了一部分内容。Trunk模式,在报文出接口时,如果VLAN ID等于default VID,那么VLAN Tag会去除。而Hybird模式,允许配置哪些VLAN ID的报文,在出接口时,需要去除VLAN Tag,比如配置在VLAN ID在40~50这个范围内容的报文,但其出接口,VLAN Tag要去除。如下图所示:



vlan pool 默认分配算法 默认vlan id_级联_04


3.1 报文入接口原则(与Trunk模式相同)。


针对Tag报文,VLAN ID不在Trunk允许范围内:直接丢弃(哪怕这个报文的VID等于这个端口的Default VID)。


针对Tag报文,VLAN ID在Trunk允许范围内:送入进入交换模块,并且VLAN ID保持不变。


针对Untag报文:打上Default VID Tag,送入交换模块。


3.2 报文出接口原则


从交换模块转发到端口的带有Tag标签的报文,如果VLAN ID等于Default VID,先去除Tag,再从接口出去。


从交换模块转发到端口的带有Tag标签的报文,如果VLAN ID在去除VID范围内,先去除Tag,再从接口出去。


从交换模块转发到端口的带有Tag标签的报文,如果VLAN ID不在去除标签VID范围内,也不等于Default VID,则不去除Tag,VLAN ID保持不变,再从接口出去。


三 VLAN接口模式的应用举例


Access接口模式的典型场景是:Bridge对接Host或者VM。Trunk或Hybrid接口模式的典型使用场景是:Bridge之间的对接(级联)。Hybrid模式比Trunk模式更加灵活。两种典型场景,如下图:



vlan pool 默认分配算法 默认vlan id_使用场景_05


Neutron计算节点中的几个Bridge,它们的VLAN接口模式与这种典型使用场景也非常吻合,如下图:



vlan pool 默认分配算法 默认vlan id_使用场景_06


图中VM发出的报文是untag报文。qbr实际起到的是安全作用,并不是真正承担Bridge作用,而且与VM是1:1,它的接口VLAN模式是Access。


抛开安全不谈,我们可以把qbr当做一根线。这个时候我们看到:br-int下接VM,上接br-ethx。所以,br-int与qbr/VM对接的接口,其接口VLAN模式是Access,而br-int与br-ethx,属于Bridge之间互连(级联),所以它们之间的接口都是Trunk模式。


两个计算节点之间的br-ethx互连也是属于Bridge之间的互联(级联),所以它们之间的接口也是属于trunk模式。