按照IEEE802.1Q标准,vlan帧的格式如下:

此处的Tag就是vlan tag,即我们常说的vlan标签。
具体含义如下:
①TPID为固定值0x8100,表明加了一个vlan标签
②PRI为优先级,0~7
③CFI,取0表示为规范格式,取1表示非规范格式
④vlan ID为vlan号,取值范围1-4094
首先提一个概念,即PVID(Port Vlan ID),这是端口的一个基本属性,可手动设置,默认值为1。其次,所有的以太网帧在交换机中进行处理的时候,都是按照上图格式来进行处理的,即帧都是带了vlan tag的。
华为交换机的端口有三种模式,分别是access,trunk,hybrid。

1、access端口接收帧时:
①如果接收的帧有vlan tag时,该帧的vlan ID和access端口的PVID相同时,将改帧送入交换机;该帧的vlan ID和access端口的PVID不同时,丢弃帧。
②如果接收的帧没有vlan tag时,access端口会将该帧打上vlan tag,vlan ID即为本端口的PVID,送入交换机。
2、access端口发送帧时:
access端口只能发送vlan ID和端口PVID相同的帧,发送出去时会剥掉vlan tag。
例子:
[]port link-type access[]port default vlan 10此时该端口为access端口,PVID为10。该端口只能发送vlan ID为10的帧,发送出来的帧没有vlan tag。该端口可以接收vlan ID为10的帧(如交换机传出的帧);也可以接收没有vlan tag的帧(如PC传出的帧),此帧将打上vlan tag(vlan ID=10)传入交换机。

1、trunk端口接收帧时:
①接收没有vlan tag的帧,trunk端口将帧打上vlan tag,vlan ID和本端口的PVID相同,若该PVID在trunk端口的放行vlan中,送入交换机,若PVID不在trunk端口的放行vlan中,丢弃该帧。
②接收有vlan tag的帧,若帧的vlan ID在trunk端口的放行vlan中,送入交换机,若vlan ID不在trunk端口的放行vlan中,丢弃该帧。
2、trunk端口发送帧时:
trunk端口只能发送放行vlan中的帧,若该帧的vlan ID和trunk的PVID相同,则剥掉vlan tag发送;若该帧的vlan ID和trunk的PVID不同,则保留原有vlan tag发送。
例子:
[]port link-type trunk[]port trunk pvid vlan 5[]port trunk allow-pass vlan 10 20 30此时该端口为trunk端口,PVID为5,放行vlan为10,20,30。该端口可以发送vlan ID为10,20,30的帧时,发送出去的帧是有vlan tag的。该端口可以接收vlan ID为10,20,30的帧。
[]port link-type trunk[]port trunk pvid vlan 5[]port trunk allow-pass vlan 5 10 20 30此时该端口为trunk端口,PVID为5,放行vlan为5,10,20,30。该端口可以发送vlan ID,5,10,20,30的帧,发送vlan ID为10、20、30的帧时,帧是有vlan tag的;发送vlan ID为5的帧,帧是没有vlan tag的。该端口可以接收vlan ID为5,10,20,30的帧,也可以接收没有vlan tag的帧。

1、hybrid端口接收帧时:
①接收没有vlan tag的帧,hybrid端口将帧打上vlan tag,vlan ID和本端口的PVID相同,若该PVID在hybrid端口的放行vlan中,送入交换机,若PVID不在hybrid端口的放行vlan中,丢弃该帧。
②接收有vlan tag的帧,若帧的vlan ID在hybrid端口的放行vlan中,送入交换机,若vlan ID不在hybrid端口的放行vlan中,丢弃该帧。
2、hybrid端口发送帧时:
hybrid端口只能发送放行vlan中的帧,可以通过命令来控制发送时是否携带vlan tag。
例子:
[]port hybrid pvid vlan 10[]port hybrid tagged vlan 10 20 30[]port hybrid untagged vlan 100 200 300此端口为hybrid端口,PVID为10,放行的vlan有10、20、30、100、200、300。端口接收帧时同trunk是一样。端口发送帧时,vlan ID为10、20、30的帧是有vlan tag的;vlan ID为100、200、300的帧是没有vlan tag的。