VLAN、tag和untag深入问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VLAN、tag和untag深入问题
untag就是普通的ethernet报文,普通PC机的网卡是可以识别这样的报文进行通讯;
tag报文结构的变化是在源mac地址和目的mac地址之后,加上了4bytes的vlan信息,也就是vlan tag头;一般来说这样的报文普通PC机的网卡是不能识别的
以太网端口有三种链路类型:Access、Hybrid和Trunk。
Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口;Trunk类型的端口可以属于多个VLAN,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口;Hybrid 类型的端口可以属于多个VLAN,可以接收和发送多个VLAN的报文,可以用于交换机之间连接,也可以用于连接用户的计算机。
Hybrid端口和Trunk端口的不同之处在于Hybrid端口可以允许多个VLAN的报文发送时不打标签,而Trunk端口只允许缺省VLAN的报文发送时不打标签。
Access端口只属于1个VLAN,所以它的缺省VLAN就是它所在的VLAN,不用设置;
Hybrid端口和Trunk端口属于多个VLAN,所以需要设置缺省VLAN ID。
缺省情况下,Hybrid端口和Trunk端口的缺省VLAN为VLAN 1
如果设置了端口的缺省VLAN ID,当端口接收到不带VLAN Tag的报文后,则将报文转发到属于缺省VLAN的端口;当端口发送带有VLAN Tag的报文时,如果该报文的VLAN ID与端口缺省的VLAN ID相同,则系统将去掉报文的VLAN Tag,然后再发送该报文。
另外需要注意的是:
(1)Trunk端口不能和isolate-user-vlan同时配置;Hybrid端口可以和isolate-user-vlan同时配置。
但如果缺省VLAN是在isolate-user-vlan中建立了映射的VLAN,则不允许修改缺省VLAN ID,只有在解除映射后才能进行修改。
(2)本Hybrid端口或Trunk端口的缺省VLAN ID和相连的对端交换机的Hybrid端口或Trunk端口的缺省VLAN ID必须一致,否则报文将不能正确传输。
以下案例请大家深入理解华为hybrid模式
[Switch-Ethernet0/1]int e0/1
[Switch-Ethernet0/1]port link-type hybrid
[Switch-Ethernet0/1]port hybrid pvid vlan 10
[Switch-Ethernet0/1]port hybrid vlan 10 20 untagged
[Switch-Ethernet0/1] int e0/2
[Switch-Ethernet0/2]port link-type hybrid
[Switch-Ethernet0/2]port hybrid pvid vlan 20
[Switch-Ethernet0/2]port hybrid vlan 10 20 untagged
此时inter e0/1和inter e0/2下的所接的PC是可以互通的,但互通时数据所
走的往返vlan是不同的。
以下以inter e0/1下的所接的pc1访问inter e0/2下的所接的pc2为例进行说明
pc1所发出的数据,由inter0/1所在的pvid vlan10封装vlan10的标记后送入交换机,交换机发现inter e0/2允许vlan 10的数据通过,于是数据被转发到inter e0/2上,由于inter e0/2上vlan 10是untagged的,于是交换机此时去除数据包上vlan10的标记,以普通包的形式发给pc2,此时pc1->p2走的是vlan10
再来分析pc2给pc1回包的过程,pc2所发出的数据,由inter0/2所在的pvid vlan20封装vlan20的标记后送入交换机,交换机发现inter e0/1允许vlan 20的数据通过,于是数据被转发到inter e0/1上,由于inter e0/1上vlan 20是untagged的,于是交换机此时去除数据包上vlan20的标记,以普通包的形式发给pc1,此时pc2->pc1走的是vlan20
交换机接口出入数据处理过程!
收报文:
Acess端口1、收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则直接丢弃(缺省)
发报文:
Acess端口: 1、将报文的VLAN信息剥离,直接发送出去
收报文:
trunk端口: 1、收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有判断该trunk端口是否允许该 VLAN的数据进入:如果可以则转发,否则丢弃
发报文:
trunk端口: 1、比较端口的PVID和将要发送报文的VLAN信息,如果两者相等则剥离VLAN信息,再发送,如果不相等则直接发送
收报文:
hybrid端口: 1、收到一个报文判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则判断该hybrid端口是否允许该VLAN的数据进入:如果可以则转发,否则丢弃
发报文:
hybrid端口:1、判断该VLAN在本端口的属性(disp interface 即可看到该端口对哪些VLAN是untag,哪些VLAN是tag)
2、如果是untag则剥离VLAN信息,再发送,如果是tag则直接发送,如果TAG VLANID= PVID,则剥离TAG;
Tag为IEEE802.1Q协议定义的VLAN的标记在数据帧中的标示;ACCESS端口,TRUNK 端口是厂家对某一种端口的叫法,并非IEEE802.1Q协议的标准定义;
这个数据交换的过程比较复杂,如果想解释的话,首先要了解一下几个
IEEE802.1Q协议的定理;
1、下面是定义的各种端口类型对各种数据帧的处理方法;
Tagged数据帧Untagged数据帧
in out in out
Tagged端口原样接收原样发送按端口PVID打
TAG标记按照PVID打TAG标记
Untagged端口丢弃去掉TAG标记按端口PVID打
TAG标记
原样发送
2、所谓的Untagged Port和tagged Port不是讲述物理端口的状态,而是讲诉物理端口所拥有的某一个VID的状态,所以一个物理端口可以在某一个VID上是Untagged Port,在另一个VID上是tagged Port;
3、一个物理端口只能拥有一个PVID,当一个物理端口拥有了一个PVID的时候,必定会拥有和PVID的TAG等同的VID,而且在这个VID上,这个物理端口必定是Untagged Port;
4、PVID的作用只是在交换机从外部接受到Untagged 数据帧的时候给数据帧添加TAG标记用的,在交换机内部转发数据的时候PVID不起任何作用;
5、拥有和TAG标记一致的VID的物理端口,不论是否在这个VID上是Untagged Port 或者tagged Port,都可以接受来自交换机内部的标记了这个TAG标记的tagged 数据帧;
6、拥有和TAG标记一致的VID的物理端口,只有在这个VID上是tagged Port,才可以接受来自交换机外部的标记了这个TAG标记的tagged 数据帧;
以下是神州数码对命令的定义(各个厂家对命令的定义可能不一定一致,但是都必须遵循上面的定理):
1、Trunk端口就是在一个物理端口上增加这个交换机所有VLAN的VID标示,并且除了和这个物理端口PVID标示一致的VID标示为Untagged Port外,在其他的VID 上都是Tagged Port;
2、Access端口就是指拥有一个和PVID标记相同的VID的物理端口,在这个VID上,遵循定理一定为untagged Port;
在了解了以上的基础理论之后,现在我给大家举个例子,供大家理解:
一个数据包从PC1发出经过SW1的ACCESS端口->SW1-trunk端口
->SW2-trunk->SW2-ACCESS->PC2的数据包的变化过程?
我现在给他们分两种情况:
1.ACCESS 端口,是VLAN 100的端口;
我们先把上述的描述变换为IEEE802.1Q的标准描述:
一个数据包从PC1(Untagged 数据帧)机发出经过->ACCESS端口(PVID定义为100,VID=100=Untagged Port)->
SW1-TRUNK端口(PVID定义为1〈出厂配置,没有更改〉,VID=1=Untagged Port,VID=100=tagged Port)->
SW2交换机的TRunk端口(PVID定义为1〈出厂配置,没有更改〉,VID=1=Untagged Port,VID=100=tagged Port)->
SW2的ACCESS端口(PVID定义为100,VID=100=Untagged Port)->PC数据包发生了怎么样的变化?(Untagged 数据帧)
首先假设两台交换机刚刚开机(MAC地址表为空)从PC机发出的数据帧进入SW1交换机的ACCESS端口以后,会按照这个端口的PVID打100的Tag标记,根据交
换机的转发原理,交换机会把这个数据帧转发给VID=100的所有端口(除了进口以外),这个过程叫做VLAN Flood;由于SW1-Trunk端口拥有VID=100,所以
才可接受这个标记Tag为100的tagged数据帧;由于SW1-Trunk端口在VID=100上为tagged Port,所以在发送数据帧出交换机的时候,不改变Tagged数据帧的
结构;原样转发,到了SW2交换机的Trunk端口的时候,由于Trunk端口拥有
VID=100,所以才可接受这个标记Tag为100的tagged数据帧;;SW2交换机Trunk
端口,接收到标记tag为100的tagged数据帧,并不作任何的更改;SW2交换机收到到标记tag为100的tagged数据帧,根据交换机的转发原理,交换机会把这
个数据帧转发给VID=100的所有端口(除了进口以外);(受到一个未知目的MAC 数据帧);这样SW2交换机的ACCESS端口就可以收到标记tag为100的tagged
数据帧;SW2交换机的ACCESS端口在发出标记tag为100的tagged数据帧的时候,因为ACCESS PVID=100,所以会去掉TAG标记,转发untagged数据帧给PC2;
这样PC机就收到了这个数据;
2,ACCESS的端口,是VLAN 1的端口;
一个数据包从PC1(Untagged 数据帧)机发出经过
ACCESS端口(PVID定义为1,VID=1=Untagged Port)->SW1-TRUNK端口(PVID定义为1〈出厂配置,没有更改〉,VID=1=Untagged Port,)->
SW2交换机的TRunk端口(PVID定义为1〈出厂配置,没有更改〉,VID=1=Untagged Port,)->SW2的ACCESS端口(PVID定义为100,VID=100=Untagged
Port)->PC数据包发生了怎么样的变化?(Untagged 数据帧)
首先假设两台交换机刚刚开机(MAC地址表为空)从PC机发出的数据帧进入SW1交换机的ACCESS端口以后,会按照这个端口的PVID打1的Tag标记,根据交换
机的转发原理,交换机会把这个数据帧转发给VID=1的所有端口(除了进口以外),这个过程叫做VLAN Flood;由于SW1-Trunk端口拥有VID=1,所以才可接
受这个标记Tag为1的tagged数据帧;由于SW1-Trunk端口在VID=1上为UNTAGGED Port,所以在发送数据帧出交换机的时候,将剥去TAG,然后转发;由于
SW2-TRUNK端口在VID=1上是UNTAGGED PORT,所以在接受数据帧的时候,打上PVID=1的TAG.根据交换机的转发原理,交换机会把这个数据帧转发到VID=1的
所有端口上(除了进来的端口)由于SW2-ACCESS 端口是VLAN 1的端口,所以可以收到带有TAG=1的数据帧;由于SW2-ACCESS端口的PVID=1,数据帧被发送
出交换机端口,将剥离TAG,送给PC2.。