一文读懂VLAN和VXLAN技术
扫描二维码
随时随地手机看文章
VLAN(Virtual Local Area Network)的中文名为“虚拟局域网”。VLAN是一种将局域网设备从逻辑上划分成一个个网段,从而实现虚拟工作组的数据交换技术。这一技术主要应用于交换机和路由器中,但主流应用还是在交换机之中。但又不是所有交换机都具有此功能,只有VLAN协议的第二层以上交换机才具有此功能。802.1Q的标准的出现打破了虚拟网依赖于单一厂商的僵局,从一个侧面推动了VLAN的迅速发展。
1、交换机端口工作模式简介
交换机端口有三种工作模式,分别是Access,Hybrid,Trunk。
Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口;
Trunk类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口;
Hybrid类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,可以用于交换机之间连接,也可以用于连接用户的计算机。
Hybrid端口和Trunk端口在接收数据时,处理方法是一样的,唯一不同之处在于发送数据时:Hybrid端口可以允许多个VLAN的报文发送时不打标签,而Trunk端口只允许缺省VLAN的报文发送时不打标签。
2、基本概念(tag,untag,802.1Q)
untag就是普通的ethernet报文,普通PC机的网卡是可以识别这样的报文进行通讯;
tag报文结构的变化是在源mac地址和目的mac地址之后,加上了4bytes的vlan信息,也就是vlan tag头;一般来说这样的报文普通PC机的网卡是不能识别的
下图说明了802.1Q封装tag报文帧结构
带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的归属。
3、交换机接口出入数据处理过程
3-1、端口接收报文时的处理:
Acess端口收报文:
收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则直接丢弃(缺省)
trunk端口收报文:
收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有判断该trunk端口是否允许该 VLAN的数据进入:如果允许则报文携带原有VLAN标记进行转发,否则丢弃该报文。
hybrid端口收报文:
收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则判断该hybrid端口是否允许该VLAN的数据进入:如果可以则转发,否则丢弃。
备注:PVID为Port-base Vlan ID,也就是端口的虚拟局域网ID号,关系到端口收发数据帧时的VLAN TAG 标记。
3-2、端口发送报文时的处理
Acess端口发报文:
将报文的VLAN信息剥离,直接发送出去
trunk端口发报文:
比较端口的PVID和将要发送报文的VLAN信息,如果两者相等则剥离VLAN信息,再发送,否则报文将携带原有的VLAN标记进行转发。
hybrid端口发报文:
判断该VLAN在本端口的属性
如果是untag则剥离VLAN信息,再发送,如果是tag则比较端口的PVID和将要发送报文的VLAN信息,如果两者相等则剥离VLAN信息,再发送,否则报文将携带原有的VLAN标记进行转发。
4、示例讲解
多交换机的情况下,VLAN是怎么工作的呢?下图所示的这种情况,两个交换机VLAN相同,都是默认VLAN 1,即两个交换机之间的联系同在VLAN 1之内。路由器是所有节点的出口。
这时单播,多播和广播数据自由传输,所有节点属于同一IP地址。这时节点之间的通信不会有问题,因为交换机的SAT显示它们在同一VLAN。
而下面这种连接方式就会有问题。由于VLAN在连接端口的主机之间创建了三层边界,它们将无法通信。
仔细看上图,这里有很多问题。第一,所有主机都在同一IP网,尽管连接到不同的VLAN。第二,路由器在VLAN 1,因此与所有节点隔离。最后,两台交换机通过不同的VLAN互连。每一点都会造成通信阻碍,合在一起,网络各元素之间会完全无法通信。
交换机用满或同一管理单元物理上彼此分离的情形是很常见的。这种情况下,VLAN需要通过trunk延伸至相邻交换机。trunk能够连接交换机,在网络间传载VLAN信息。如下图所示:
对之前的拓扑的改进包括:
PC 1和PC 2分配到192.168.1.0网段以及VLAN 2。
PC 3和PC 4分配到192.168.2.0网段以及VLAN 3。
路由器接口连接到VLAN 2和VLAN 3。
交换机间通过trunk线互连。
注意到trunk端口出现在VLAN 1,他们没有用字母T来标识。trunk在任何VLAN都没有成员。现在VLAN跨越多交换机,同一VLAN下的节点可以物理上位于任何地方。
再次解释下什么是Trunk:
Trunk是在两个网络设备之间承载多于一种VLAN的端到端的连接,将VLAN延伸至整个网络。没有VLAN Trunk,VLAN也不会非常有用。VLAN Trunk允许VLAN数据流在交换机间传输,所以设备在同一VLAN,但连接到不同交换机,能够不通过路由器来进行通信。
一个VLAN trunk不属于某一特定VLAN,而是交换机和路由器间多个VLAN的通道。如下图所示,交换机S1和S2,以及S1和S3之间的链路,配置为传输从VLAN10,20,30以及90的数据流。该网络没有VLAN trunk就无法工作。
当安装好trunk线之后,帧在trunk线传输是就可以使用trunk协议来修改以太网帧。这也意味着交换机端口有不止一种操作模式。缺省情况下,所有端口都称为接入端口。当一个端口用于交换机间互连传输VLAN信息时,这种端口模式改变为trunk,节点也路由器通常不知道VLAN的存在并使用标准以太网帧或“untagged”帧。trunk线能够使用“tagged”帧来标记VLAN或优先级。
因此,在trunk端口,运行trunk协议来允许帧中包含trunk信息。如下图所示:
PC 1在经过路由表处理后向PC 2发送数据流。这两个节点在同一VLAN但不同交换机。步骤如下:
以太网帧离开PC 1到达Switch 1。
Switch 1的SAT表明目的地是trunk线的另一端。
Switch 1使用trunk协议在以太网帧中添加VLAN id。
新帧离开Switch 1的trunk端口被Switch 2接收。
Switch 2读取trunk id并解析trunk协议。
源帧按照Switch 2的SAT转发至目的地(端口4)。
5、工程实践
我们利用cisco packet trace工具来对上述描述的vlan的技术点进行工程实践,内容包括通过四台PC、两台交换机,通过一个trunk链路建立两个vlan的过程。
1、通过cisco packet trace我们首先建立一个如下图的网络拓扑结果。pc1接switch1的0/1端口;pc2接switch1的0/2端口;laptop0接switch2的0/1端口;laptop1接switch2的0/2端口;trunk链路有两台交换机的普通端口0/3互联。
2、分别为四台PC分配静态的IP。如图所示PC3为192168.10.1;根据vlan规划,PC2的IP为192.168.20.1;laptop0的IP192.168.20.1;laptop1的IP192.168.20.2;
3、配置switch1,命令如下
Switch》enable
Switch#configure terminal
Switch(config)#hostname SA
SA(config)#vlan 10
SA(config-vlan)#exit
SA(config)#vlan 20
SA(config-vlan)#exit
SA(config)#interface fa0/1
SA(config-if)#switchport access vlan 10
SA(config-if)#exit
SA(config)#interface fa0/2
SA(config-if)#switchport access vlan 20
SA(config-if)#exit
SA(config)#interface fa0/3
SA(config-if)#switchport mode trunk
SA(config-if)#switchport trunk allowed vlan all
通过测试
4、配置switch2,命令如下
Switch》enable
Switch#configure terminal
Switch(config)#hostname SB
SB(config)#vlan 10
SB(config-vlan)#exit
SB(config)#vlan 20
SB(config-vlan)#exit
SB(config)#interface fa0/1
SB(config-if)#switchport access vlan 10
SB(config-if)#exit
SB(config)#interface fa0/2
SB(config-if)#switchport access vlan 20
SB(config-if)#exit
SB(config)#interface fa0/3
SB(config-if)#switchport mode trunk
SB(config-if)#switchport trunk allowed vlan all
通过测试
5、检查vlan间的互通性,从PC3(192.168.10.1)ping PClaptop0和laptop1情况如下: