VLAN
VLAN技术要点主要有两点:
1.支持VLAN的交换机的内部交换原理;
2.设备之间交换机之间,交换机与路由器之间,交换机与主机之间)交互时,VLAN TAG的添加和移除。
VLAN通信主要涉及交换机、路由器、PC这三种设备:
PC:大部分的PC(专用的,或用于测试的除外)是工作在应用层的,缺省情况下是不支持其实也不需要)VLAN TAG的。也就是说,PC发出的都是UNTAGED数据帧。
Router:路由器是支持VLAN TAG的。也就是说,路由器可以发出TAGED数据帧,也可以发出UNTAGED数据帧。需要说明的是,路由器是处理数据包的三层信息的,对于二层信息(包括VLAN信息),路由器只是检查其有效性,之后将其剥离。这个过程就是我们常说的‘终结’,也就是说,路由器会终结掉报文的VLAN信息的。
Switch:以太网交换机。VLAN技术就是主要针对于交换机提出的,所以,在讨论VLAN概念时都是立足于交换机来讨论。很显然,交换机既支持收发TAGED数据帧,也支持收发UNTAGED数据帧。从严格意义上讲,引入VLAN后,交换机的行为不再是‘透明传输’,因为数据帧经过交换机后可能发生了变化。
典型配置
交换机连接不同典型设备时的常用配置。
1). 连接PC
在通常情况下,PC只支持收发UNTAG的数据帧,所以,连接PC的端口只需要加入一个VLAN,而且,在该VLAN中的属性为UNTAG。
2). 连接Router
路由器既支持收发TAG数据帧,也支持收发UNTAG数据帧。通常情况下,不同的VLAN数据帧都能通过该端口与路由器互通。所以连接路由器的端口可以属于多个VLAN,而且,只能在一个VLAN中的属性是UNTAG的,在其他的VLAN中都是TAG的。
3). 连接Switch
也就是交换机的级联。通常情况下是不同性能的交换机进行级联。这种情况和连接路由器的情况基本相同。
交换机收发数据帧的处理总结
分几种情况讨论交换机的接收和发送处理:接收端口和发送端口在VLAN中属性;收到的数据帧是TAG的还是UNTAG的。
1). 端口接收到数据帧
a). 如果是TAG的数据帧,检查该接收端口是否在该VLAN数据帧中所携带的VLAN TAG)中
– 接收端口在该VLAN中,则在该VLAN中根据交换原理即,‘源MAC学习,目的MAC转发‘的原理)交换该数据包
– 接收端口不在该VLAN中,丢弃该数据帧
b). 如果是UNTAG的数据帧,检查该接收端口是否在某个VLAN中的属性是UNTAG
– 接收端口在某个VLAN中的属性是UNTAG的,则在该VLAN中根据交换原理交换该数据包
– 接收端口在任何VLAN中的属性都不是UNTAG的,丢弃该数据包
注:根据这个原理可知,一个端口最多在一个VLAN中的属性是UNTAG的,否则,收到一个UNTAG的数据帧之后,就无法确定在哪个VLAN中进行交换。
2). 端口发送数据帧
a).检查该端口在该VLAN就是交换该数据帧的VLAN)中的属性
– 该端口在该VLAN种的属性是TAG的,发送的数据帧为TAG的数据帧
– 该端口在该VLAN种的属性是UNTAG的,发送的数据帧为UNTAG的数据帧
注:由于数据已经被交换到该端口,说明该端口肯定在该VLAN里。
PVID
PVID为Port-base Vlan ID,也就是端口的虚拟局域网ID号,关系到端口收发数据帧时的VLAN TAG 标记。
所有能感知VLAN的交换机,报文在交换机内部转发过程中都是带Tag的。在交给交换芯片处理之前,或者交换芯片交给端口时会根据端口的设置添加或去掉Tag。
如果没有进行配置,默认所有的端口都处于Access模式。一般来说,对端口来说与VLAN相关的有三个属性,PVID、Tag Vlan、Untag Vlan。PVID有且只有一个,Tag Vlan和Untag Vlan可能有一个,多个,也可以没有,但两个至少其中一个有一个。PVID的作用是:如果此端口收到一个Untag的报文,则交换机会根据PVID的值给此报文打上等于PVID的Tag,然后交给交换芯片处理;如果交换芯片要将一个报文从此端口发送,发现此报文的Tag值与PVID相同,则会将Tag去掉,然后从此端口发送出去。Tag Vlan和Untag Vlan主要是用于报文发送的处理,如果交换芯片要将报文从此端口发送,发现报文的Tag在此端口的Tag Vlan中,且不等于PVID,则此报文将以Tag的形式发送出去,如果在Untag Vlan中,则以Untag形式发出去。如果报文的Tag既不在Tag Vlan中,也不在Untag Vlan中,则只有一种可能,交换芯片出毛病了。这就是交换机处理Vlan Tag的基本原则了。
端口
Access端口负责接终端设备,它收到一个帧的时候,如果这个帧没有标记它就用自己的pvid给他打上标记,它在发出一个帧时如果VID=PVID就去掉标记以保证传送给终端设备的帧没有被变动过,pvid是在划分vlan时候每个端口都有的属性,默认情况下思科交换机中每个端口初始pvid是1,表示他是vlan1的成员们如果你给他划分了其他VLAN那么PVID相应会发生更改ACCESS端口的特点是 只允许符合PVID的流量通过。
Trunk的意思是,它是一条中继链路,允许各种VLAN通过。它的规则和Access差不多,当收到一个没有tag的标记的时候就用自己的pvid给他标记,当发送一个帧时候如果vid=pvid则去掉pvid,与Access不同的是,Trunk有一个属于自己的本征VLAN,用来发送一些cdp,bpdu等交换机间联系的数据或者管理流量,从交换机自身产生的帧在发出去的时候是不会带标记的,因为VID=pvid所以标记被去掉,而对端接收到没有标记的帧时候就会用自身本征VLAN的信息给他加上标记,然后查看交换表如果发现目的地址是自己则去掉标记,如果发现目的mac地址不是自己则继续转发给其他Trunk同时去掉标记(因为一个交换机只有一个本征VLAN所有pvid=vid去掉标记)
Hybrid是Access与Trunk的混合模式,它允许VID=pvid。Hybrid与Trunk一样,在该端口上可以传送多个vlan的包,一般用于交换机与交换机之间,或者交换机与服务器之间的链接。如果收到的数据包不带vlan,则加上pvid进行转发;如果收到的数据包带vlan,则判断该端口是否允许该vlan进入,如果可以则进行转发,否则丢弃。
802.1Q帧格式
现在使用最广泛的VLAN协议标准是 IEEE 802.1Q,许多厂家的交换机/路由器产品都支持IEEE 802.1Q标准。
802.1Q Tag的长度是4 bytes,它位于以太网帧中源MAC地址和长度/类型之间。802.1Q Tag包含4个字段。
Type:长度为2 bytes,表示帧类型,802.1Q tag帧中Type字段取固定值0x8100,如果不支持802.1Q的设备收到802.1Q帧,则将其丢弃。
PRI:priority字段,长度为3 bit,表示 以太网帧的优先级,取值范围是0~7,数值越大,优先级越高。当交换机/路由器发生传输拥塞时,优先发送优先级高的数据帧。
CFI:Canonical Format Indicator规范格式指示符),长度为1bit,表示MAC地址是否是经典格式。CFI为0说明是经典格式,CFI为1表示为非经典格式。该字段用于区分以太网帧、FDDI帧和令牌环网帧,在以太网帧中,CFI取值为0。
VID:VLAN ID,长度为12 bit,取值范围是0~4095,其中0和4095是保留值,不能给用户使用。