|
|
51CTO旗下网站
|
|
移动端

VLAN和VXLAN技术详解

VLAN(Virtual Local Area Network)的中文名为"虚拟局域网"。VLAN是一种将局域网设备从逻辑上划分成一个个网段,从而实现虚拟工作组的数据交换技术。这一技术主要应用于交换机和路由器中,但主流应用还是在交换机之中。

作者:Senmurv来源:网络安全课堂|2019-01-21 15:57

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情况如下:

【编辑推荐】

  1. 浅谈数据中心VxLAN技术
  2. 交换机与VLAN:办公室太复杂,我要回学校
  3. 为什么说不要用VLAN、VPC解决东西向隔离问题
  4. 实例讲解如何使用VLAN设计局域网、VLAN的汇聚链接
  5. Openstack Vlan模式下的隔离和数据流向
【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

鸟哥的Linux私房菜 基础学习篇(第二版)

本书全面而详细地介绍了Linux操作系统。全书分为5个部分:第一部分着重说明Linux的起源及功能,如何规划和安装Linux主机;第二部分介绍Linu...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊