一,为何有VLAN?
以太网中广播无处不在,如何在二层分隔广播域?(参考《vlan学习笔记大全》)
物理位置上相差万里的计算机如何统一管理?(有待进一步确认)
二,VLAN有何效果?
可以认为制定了这样一个规则:只有属于同一个组内的成员才可以互相通信,不同组之间的成员是不能直接通信的。而且通信采用广播的形式告知组内成员,而非组内的成员都被隔离于广播之外。
那么引申出一个问题:不同组的成员间如何通信呢?见一中已经说明VLAN是在二层分离广播域,所以,要解决这个问题,就需要用到三层的路由功能。
三,VLAN基础知识
建议参考《vlan学习笔记大全》,说得非常清楚。
四,VLAN技术, tag , untag, vid...
自己设过vlan的人可能都知道,涉及到计算机的端口一般都设置为untag,例如管理vlan就是untag的。
untag就是普通的ethernet报文,普通PC机的网卡是可以识别这样的报文进行通讯;
tag报文结构的变化是在源mac地址和目的mac地址之后,加上了4bytes的vlan信息,也就是vlan tag头;一般来说这样的报文普通PC机的网卡是不能识别的;
带802.1Q的帧是在标准以太网帧上插入了4个字节的标识。其中包含:2个字节的协议标识符(TPID),当前置0x8100的固定值,表明该帧带有802.1Q的标记信息。2个字节的标记控制信息(TCI),包含了三个域。Priority域,占3bits,表示报文的优先级,取值0到7,7为最高优先级,0为最低优先级。该域被802.1p采用。规范格式指示符(CFI)域,占1bit,0表示规范格式,应用于以太网;1表示非规范格式,应用于Token Ring。VLAN ID域,占12bit,用于标示VLAN的归属。
为什么会有这种区别呢?因为可能一条链接上不能仅仅能配一个vlan,我们先了解access, trunk, hybrid的概念。
以太网端口的三种链路类型:Access、Hybrid和Trunk:
Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口;
Trunk类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口;
Hybrid类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,可以用于交换机之间连接,也可以用于连接用户的计算机。
Hybrid端口和Trunk端口在接收数据时,处理方法是一样的,唯一不同之处在于发送数据时:Hybrid端口可以允许多个VLAN的报文发送时不打标签,而Trunk端口只允许缺省VLAN的报文发送时不打标签。
五,PVID
这是个很常见的词,什么意思呢?PVID vlan就是cisco中的native vlan,也就是我们说的缺省vlan。
Access端口只属于1个VLAN,所以它的缺省VLAN就是它所在的VLAN,不用设置;当Acess端口收到一个报文时,先判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则直接丢弃;Acess端口发报文时,将报文的VLAN信息剥离,直接发送出去。
Hybrid端口和Trunk端口属于多个VLAN,所以需要设置缺省VLAN ID。缺省情况下,Hybrid端口和Trunk端口的缺省VLAN为VLAN 1
如果设置了端口的缺省VLAN ID,当端口接收到不带VLAN Tag的报文后,则将报文转发到属于缺省VLAN的端口;当端口发送带有VLAN Tag的报文时,如果该报文的VLAN ID与端口缺省的VLAN ID相同,则系统将去掉报文的VLAN Tag,然后再发送该报文。
trunk端口收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有判断该trunk端口是否允许该 VLAN的数据进入:如果可以则转发,否则丢弃;发报文时比较端口的PVID和将要发送报文的VLAN信息,如果两者相等则剥离VLAN信息,再发送,如果不相等则直接发送;
hybrid端口收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则判断该hybrid端口是否允许该VLAN的数据进入,如果可以则转发,否则丢弃(此时端口上的untag配置是不用考虑的,untag配置只对发送报文时起作用);hybrid端口发报文:1、判断该VLAN在本端口的属性(disp interface 即可看到该端口对哪些VLAN是untag, 哪些VLAN是tag)2、如果是untag则剥离VLAN信息,再发送,如果是tag则直接发送。
六,802.1Q协议说明
VLAN Identified( VID ): 这是一个12位的域 指明VLAN的ID ,一共4096个,每个支持802.1Q协议的主机发送出来的数据包都会包含这个域 以指明自己所属的VLAN。
Canonical Format Indicator( CFI ) 这一位主要用于总线型的以太网与FDDI 令牌环网交换数据时的祯格式。Priority 这3 位指明祯的优先级 一共有8种优先级 主要用于当交换机阻塞时 优先发送优先级高的数据包。
Vid取值 | 意义 |
0 | 空的vid,表示该标签头所包含的信息中vid是无效的,但是优先级信息是有效的。该vid是保留的,任何设备不能将0配置成端口pvid或者是vlan条目的vid。 |
1 | 在桥端口处理输入数据时使用的缺省vid,该vid可以修改。 |
FFF | 保留vid,任何设备不能将FFF配置成端口pvid或者是vlan条目的vid。 |
七,QinQ详解
参考:http://cisco.chinaitlab.com/VLan/729550.html
参考文章可以解答,为什么有QinQ?
QinQ中常说的C-Vlan和S-Vlan怎么回事呢?
C-Vlan = Custom Vlan; S-Vlan: Service Vlan;其中,C-Vlan用于在公网中穿梭,为外层vlan;S-Vlan为内层VLAN。
八,各模式简单说明
transparent: keep c-vlan; Add 0;
tag: keep c-vlan; Add s-vlan;
retag: remove c-vlan, add c-vlan;
remove: remove c-vlan, add 0;