VLAN---背景、原理、实验1(划分vlan)

32 篇文章 61 订阅
29 篇文章 0 订阅

一、背景介绍

Underlay、Overlay、大二层介绍:

云计算的核心思想就是将所有资源,包括服务器、网络、存储等等,虚拟化为一片云,让用户不再需要关心实际物理资源是如何部署的。而这其中,传统网络也必须转型为新型的云网络才能满足需求。传统网络在转型为支持大规模计算虚拟化的云网络时会有什么样的问题呢?最典型的问题是,在服务器虚拟化的场景中,虚拟机迁移后如果位于不同的三层网络中,则需要修改服务器的IP地址,但很多应用并不允许随意修改IP地址。那么最直接的解决方案便是使虚拟机迁移之后仍然位于同一个二层网络中。随着网络规模的不断扩大,传统的二层技术由于存在收敛时间过长,部署复杂等局限性,已经不再适合组建大规模的二层网络,于是这期间出现了许多用于实现大二层网络的新技术。为了屏蔽虚拟机迁移带来的物理网络位置变化的影响,这些新技术的核心思想无一例外的都是在数据平面上使用隧道技术穿越底层的三层网络,将物理拓扑抽象为包含一对对源和目的节点的逻辑拓扑。而这些技术所采用的不同的数据封装方式以及控制平面的建立方式,决定了它们在实际应用中,有的逐渐被淘汰,而有的成为了广泛应用的事实标准。作为在这期间脱颖而出的隧道技术,VXLAN(Virtual eXtensible LAN,可扩展虚拟局域网络)定义了一个简单高效的数据转发平面,又以其优越的兼容性成为了构建新型大二层网络数据平面的主流标准。

因此,传统网络中,为了使用云计算的大规模数据,避免迁移造成的IP和mac地址改变,对网络产生影响,就有了大二层的概念,也就是说虚拟机迁移这个动作对用户是透明的,所以在迁移前后必须保证虚机的MAC/IP 是保持不变的,这样就意味着迁移必须在一个二层广播域内完成(一个IP子网=一个广播域)。然而,由于二层网络汇聚到交换机上,处于同一个广播域中,此时同一个广播域的通信可能由于数据太大造成广播风暴,影响网络质量,所以引入vlan进行广播域的隔离。

Underlay网络:以太网从最开始设计出来就是一个分布式网络,没有中心的控制节点,网路中的各个设备之间通过协议传递的方式学习网络的可达信息,由每台设备自己决定要如何转发,这直接导致了没有整体观念,不能从整个网络的角度对流量进行调控。由于要完成所有网络设备之间的互通,就必须使用通用的语言,这就是网络协议,RFC就是网络协议的法律,相当于国际法,各个设备供应商遵从国际法行事,就基本保证了整个网络世界的正常运行。Underlay就是当前数据中心网路基础转发架构的网络,只要数据中心网络上任意两点路由可达即可,指的是物理基础层。我们可以通过物理网络设备本身的技术改良、扩大设备数量、带宽规模等完善Underlay网络,其包含了一切现有的传统网络技术。

Overlay 网络:Overlay在网络技术领域,指的是一种网络架构上叠加的虚拟化技术模式,其大体框架是对基础网络不进行大规模修改的条件下,实现应用在网络上的承载,并能与其它网络业务分离,并且以基于IP的基础网络技术为主。Overlay 技术是在现有的物理网络之上构建一个虚拟网络,上层应用只与虚拟网络相关。

二、VLAN原理介绍

传统的二层网络实现广播域的隔离利用VLAN技术。VLAN,翻译成中文是“虚拟局域网”。LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。VLAN所指的LAN特指使用路由器分割的网络——也就是广播域。简单来说,同一个VLAN中的用户间通信就和在一个局域网内一样,同一个VLAN中的广播只有VLAN中的成员才能听到,而不会传输到其他的VLAN中去,从而控制不必要的广播风暴的产生。同时,若没有路由,不同VLAN之间不能相互通信,从而提高了不同工作组之间的信息安全性。网络管理员可以通过配置VLAN之间的路由来全面管理网络内部不同工作组之间的信息互访。

具体的原理介绍建议详见此文:https://baijiahao.baidu.com/s?id=1628398215665219628&wfr=spider&for=pc

三、基于Linux的VLAN实验

1、拓扑设置

本次实验是在Linux操作系统之上的,为了能够更直观的看出网络的结构,实验利用mininet进行网络拓扑的构建。由于,ovs既可以支持openflow协议作为sdn交换机,也可以作为普通的二层交换机使用,因此,实验选用ovs作为交换机,每个交换机各连接3台主机,具体的网络拓扑如下图所示。

拓扑设置完成之后,开始运行拓扑,并在mininet命令行下输入命令links,查看网卡的对于关系,如下图所示。

2、分配ip,设置流表

为各个主机设置ip,具体的IP地址分配如下所示。

mininet> h1_1 ip addr add 10.0.1.1/16 dev h1_1-eth0
mininet> h2_1 ip addr add 10.0.1.2/16 dev h2_1-eth0
mininet> h3_1 ip addr add 10.0.1.3/16 dev h3_1-eth0
mininet> h1_2 ip addr add 10.0.2.1/16 dev h1_2-eth0
mininet> h2_2 ip addr add 10.0.2.2/16 dev h2_2-eth0
mininet> h3_2 ip addr add 10.0.2.3/16 dev h3_2-eth0

ovs可以作为普通的二层交换机使用,但是需要下发流表,使其actions=normal,设置命令如下,分别为s1和s2设置流表作为普通的二层交换机使用。

root@yang-VirtualBox:/home/yang# ovs-ofctl add-flow s1 priority=0,actions=normal
root@yang-VirtualBox:/home/yang# ovs-ofctl dump-flows s1
# cookie=0x0, duration=4.127s, table=0, n_packets=0, n_bytes=0, priority=0 actions=NORMAL
root@yang-VirtualBox:/home/yang# ovs-ofctl add-flow s2 priority=0,actions=normal
root@yang-VirtualBox:/home/yang# ovs-ofctl dump-flows s2
# cookie=0x0, duration=2.614s, table=0, n_packets=2, n_bytes=140, priority=0 actions=NORMAL

此时,当交换机设置完成之后,6台主机之间就可以相互ping通了,这个时候整个网络拓扑属于二层结构,所有主机属于同一个广播域内。接下来,设置vlan,让同一水平线的两台主机才能够ping通,也就是h1_1和h1_2、h2_1和h2_2、h3_1和h3_2能够相互ping通。

3、在为ovs设置vlan之前,先介绍一下vlan的模式和ovs设置vlan的命令。(https://zhuanlan.zhihu.com/p/37408055

vlan的模式介绍

目前OVS的端口支持四种VLAN模式,分别是trunk、access、native-tagged、native-untagged,刚创建的端口默认是不设置任何的VLAN模式。

对这几个VLAN模式的介绍如下:

模式说明
默认在默认模式下(VLAN_mode没被设置),如果指定了端口的tag属性,那么这个端口就工作在access模式,并且其trunk属性的值应该保持为空。否则,这个port就工作在trunk模式下,如果trunk被指定,则使用指定的trunk值。
trunktrunk模式的端口允许传输所有在其trunk属性中指定的那些VLAN对应的数据包。其他VLAN的数据包就会被丢弃。从trunk模式的端口中进入的数据包其VLAN ID不会发生变化。如果进入的数据包不含有VLAN ID,则该数据包进入交换机后的VLAN为0。从trunk模式的端口出去的数据包,如果VLAN ID不为空,则依然保持该VLAN ID,如果VLAN ID为空,则出去后不再包含802.1Q头部
accessaccess模式的端口只允许不带VLAN的数据包进入,不管数据包的VLAN ID是否与其tag相同,只要含有VLAN ID,这个数据包都会被端口drop。数据包进入access端口后会被打上和端口tag相同的VLAN,而再从access端口出去时,数据包的VLAN会被删除,也就是说从access的端口出去的数据包和进来时一样是不带VLAN的。
native-taggednative-tagged端口类似于trunk端口,它们之间的区别是如果进入native-tagged端口的数据包不含有802.1Q头部,即没有指定VLAN,那么该数据包会被当作native VLAN,其VLAN ID由端口的tag指定。
native-untaggednative-untagged端口类似于native-tagged端口,不同点是native VLAN中的数据包从native-untagged端口出去时,会被去掉802.1Q头部。

这里,我们主要说明一下access和trunk之间的区别:

(1)基本概念

Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口;Trunk类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口;

(2)处理流程

Acess端口收报文:收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则直接丢弃(缺省)

Acess端口发报文:将报文的VLAN信息剥离,直接发送出去

trunk端口收报文:  收到一个报文,判断是否有VLAN信息,如果没有则打上端口的PVID,并进行交换转发;如果有判断该trunk端口是否允许该 VLAN的数据进入:如果允许则报文携带原有VLAN标记进行转发,否则丢弃该报文。

trunk端口发报文:  比较端口的PVID和将要发送报文的VLAN信息,如果两者相等则剥离VLAN信息,再发送,否则报文将携带原有的VLAN标记进行转发。 

(3)对比示例

上图中,pc1不能ping通pc2,因为同一交换机内从pc1进入交换机A的access口的数据包被打上了VLAN10的标记,而和pc2相连的access的是VLAN20,从上面总结的2)条不满足,无法ping通。同理,pc1和pc3也不能ping通。

pc2和pc3能互ping通。因为数据包从pc2进入交换机A的access口时,被打上了VLAN20的标记;交换机A与B想连的access口是VLAN20,所以数据包可以从该口发出。发出的时候去掉了VLAN20的标记,到B时,由于没有标记,可以被B的左边的access口接收并打上VLAN10的标记。由于B的右边的access口也属于VLAN10,所以数据包可以从该口出(出的时候去除掉VLAN10的标记,并到达pc3)

上图中pc1和pc3可以相通,因为数据包从pc1进入A的access口是打上了VLAN10的标记,A的右边trunk口可以接受数据包,并转发到B的trunk口(无论vid是否等于pvid)。而B的acces属于VLAN10所以pc3能收到数据包。

同理,pc2和pc6相通。

OVS配置vlan的命令

设置VLAN mode

ovs-vsctl set port <port name> VLAN_mode=trunk|access|native-tagged|native-untagged

设置VLAN tag

ovs-vsctl set port <port name> tag=<tag值>

设置VLAN trunk

ovs-vsctl set port <port name> trunk=100,200

删除port的配置

ovs-vsctl remove port <port name> <config item> <config value>
# 例如
ovs-vsctl remove port <port name> tag 100
ovs-vsctl remove port <port name> trunk 200

查看port的属性

ovs-vsctl list interface <port name>

ovs的详细命令可参考:https://download.csdn.net/download/weixin_40042248/15353952

4、为ovs设置vlan

为s1和s2两个交换机的对应端口设置vlanid,命令如下。

root@yang-VirtualBox:/home/yang# ovs-vsctl set port s1-eth1 tag=11
root@yang-VirtualBox:/home/yang# ovs-vsctl set port s2-eth2 tag=11
root@yang-VirtualBox:/home/yang# ovs-vsctl set port s1-eth2 tag=22
root@yang-VirtualBox:/home/yang# ovs-vsctl set port s2-eth3 tag=22
root@yang-VirtualBox:/home/yang# ovs-vsctl set port s1-eth3 tag=33
root@yang-VirtualBox:/home/yang# ovs-vsctl set port s2-eth4 tag=33

设置完成之后,查看交换机,可以看出每个网卡都设置好了tag。 

设置完成后,此时就只能同一vlan中的主机才能够相互ping通了。

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楊木木8023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值