按照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
[default vlan 10 ]port
此时该端口为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
[5 ]port trunk pvid vlan
[10 20 30 ]port trunk allow-pass vlan
此时该端口为trunk端口,PVID为5,放行vlan为10,20,30。
该端口可以发送vlan ID为10,20,30的帧时,发送出去的帧是有vlan tag的。
该端口可以接收vlan ID为10,20,30的帧。
[ ]port link-type trunk
[5 ]port trunk pvid vlan
[5 10 20 30 ]port trunk allow-pass vlan
此时该端口为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。
例子:
[10 ]port hybrid pvid vlan
[10 20 30 ]port hybrid tagged vlan
[100 200 300 ]port hybrid untagged vlan
此端口为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的。