VLAN vs. VXLAN:云时代下各施所长

d7b2bae747208cd4f0e72512ea0f8926.gif

来源于:SDNLAB

VXLAN(Virtual eXtensible Local Area Network,虚拟可扩展局域网)可以说是目前最热门的网络虚拟化技术。自2014年引入以来,VXLAN已逐渐成为现代数据中心网络架构的重要组成部分。

而同样作为网络虚拟化技术之一的VLAN(Virtual Local Network,虚拟局域网)早在1998年就已经提出,可以说是网络虚拟化技术的“骨灰级元老”,长期以来得到了广泛的应用。

VLAN /VXLAN到底是什么、有什么区别、为什么有了VLAN还需要VXLAN、二者究竟在什么场景使用?让我们带着这些疑问一起看下去吧。

9389036c553d7475261eb30762180e7d.png

VLAN

交换机是一个 L2 设备,插在同一个交换机的网络设备组成了一个 L2 网络,L2 网络之间通过 MAC 地址通信,同时这个 L2 网络也是一个广播域。

同属于一个广播域的两个设备想要通信,一设备须得向网络中的所有设备发送请求信息,只有对应MAC地址的设备才是真正的接收方,但实际上却是数据帧传遍整个网络,所有设备都会收到,且直接丢弃。

bb3f0d59d917522c84807a6eb3aa30e7.png

| 早期以太网,来源:iximiuz.com

如此一来,将造成一系列不好的后果:网络整体带宽被占用、潜在的信息安全风险、占用CPU资源……

因此,VLAN应运而生!

a5d5516beb380ff494e79726a9d54bb4.png

| L2 Ethernet Frame,来源:iximiuz.com

VLAN 是一项把 L2 网络再做分区隔离的技术。

VLAN直接在Ethernet Frame的头部加上4个字节的VLAN ID用来标识不同的二层网络,处理起来也比较简单,在读取Ethernet数据的时候,只需要根据EtherType相应的偏移4个字节就行。

93d55a4fe839f83f18f29c1c64870fbd.png

从技术上讲,VLAN 是一种用“数字”(也就是VLAN ID)标记单个 L2 网段Ethernet Frame的机制。简单来说就像是一个交换机被拆成了多个虚拟交换机,原本的一个广播域也分成了多个。

举例来看,下图的交换机在接口上设置了两个 VLAN,ID 分别是 1 和 2,两个同时也分割出了两个广播域。因为这种分割是虚拟的不是物理的,所以叫做 Virtual LAN。

8c6c88e422cdafec5159dddf3c4d8691.png

| 单个网桥上的两个虚拟 LAN,来源:iximiuz.com

连接到特定单个 VLAN 的计算机和服务器只能看到属于同一 VLAN 的帧。不同ID的帧在逻辑上属于不同的网络。

d47f6803312aba954508dad93bf981b3.png

| VLAN 网络基础设施,来源:codilime

VLAN的原理我们大概已经了解了,总结一下,VLAN究竟能够解决什么问题?

1、限制广播域。广播域被限制在一个局域网内,节省了带宽,提高了网络处理能力。

2、增强局域网的安全性。不同局域网内的报文在传输时是相互隔离的,即一个VLAN内的用户不能和其它VLAN内的用户直接通信,如果不同VLAN要进行通信,则需要通过路由器或三层交换机等三层设备。

3、灵活构建虚拟工作组。用局域网可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活。

不过VLAN也并非没有缺点。

1、随着虚拟化技术的发展,一台物理服务器往往承载了多台虚拟机,公有云或其它大型虚拟化云数据中心动辄需容纳上万甚至更多租户,VLAN技术最多支持4000多个VLAN,逐渐无法满足需求。

2、公有云提供商的业务要求将实体网络租借给多个不同的用户,这些用户对于网络的要求有所不同,而不同用户租借的网络有很大的可能会出现IP地址、MAC地址的重叠。传统的VLAN并没有涉及这个问题,因此需要一种新的技术来保证在多个租户网络中存在地址重叠的情况下依旧能有效通信的技术。

3、虚拟化技术使得单台主机可以虚拟化出多台虚拟机同时运行,而每台虚拟机都会有其唯一的MAC地址。这样,为了保证集群中所有虚机可以正常通信,交换机必须保存每台虚机的MAC地址,这样就导致了交换机中的MAC表异常庞大,从而影响交换机的转发性能。

f234da8d8b615591e3af712372df789b.png

VXLAN

VXLAN是另一种网络虚拟化技术,有点类似于 VLAN,但功能更强大。

在传统的VLAN网络中,共享同一底层 L2 网段的 VLAN 不能超过 4096 个。只有 12 比特用于对Ethernet Frame格式中的 VLAN ID 字段进行编码。

VXLAN协议定义了8个字节的VXLAN Header,引入了类似VLAN ID的网络标识,称为VNI(VXLAN Network ID),由24比特组成,这样总共是1600多万个,从而满足了大规模不同租户之间的标识、隔离需求。

VXLAN 是基于 L3 网络构建的虚拟 L2 网络,是一种Overlay网络。VXLAN 不关心底层物理网络拓扑,它将Ethernet Frame封装在 UDP 包中,只要它能承载 UDP 数据包,就可以在远端网段之间提供以太网L2连接。

ca3d94a90fa0fe860298bab4f8ebaed7.png

| VXLAN 网络包结构,来源:iximiuz.com

每个 VXLAN 节点上的出站L2 Ethernet Frame都会被捕获,然后封装成 UDP 数据包,并通过 L3 网络发送到目标 VXLAN 节点。当 L2 Ethernet Frame 到达 VXLAN 节点时,就从 UDP 数据包中提取(解封装),并注入目标设备的网络接口。这种技术称为隧道。因此,VXLAN 节点会创建一个虚拟 L2 网段,从而创建一个 L2 广播域。

88fbab704a2e428eacc474b7bb8935ac.png

| VXLAN 网络,来源:iximiuz.com

因为VXLAN通过UDP传输Ethernet Frame,那相应的可以在一个L3网络上传递L2的数据。又或者说是在一个L3网络上构建了L2网络。物理网络的二层边界还存在,但是现在虚机的网络数据可以跨越物理二层网络的限制,在三层网络传输。

下面看一下VXLAN报文:

ff855a40df18000388f8cbe8c2dcdb17.png

| VXLAN报文格式(以外层IP头为IPv4格式为例),来源:华为

如上图所示,VTEP对VM发送的原始以太帧(Original L2 Frame)进行了以下“包装”:

  • VXLAN Header:增加VXLAN头(8字节),其中包含24比特的VNI字段,用来定义VXLAN网络中不同的租户。此外,还包含VXLAN Flags(8比特,取值为00001000)和两个保留字段(分别为24比特和8比特)。

  • UDP Header:VXLAN头和原始以太帧一起作为UDP的数据。UDP头中,目的端口号(VXLAN Port)固定为4789,源端口号(UDP Src. Port)是原始以太帧通过哈希算法计算后的值。

  • Outer IP Header:封装外层IP头。其中,源IP地址(Outer Src. IP)为源VM所属VTEP的IP地址,目的IP地址(Outer Dst. IP)为目的VM所属VTEP的IP地址。

  • Outer MAC Header:封装外层以太头。其中,源MAC地址(Src. MAC Addr.)为源VM所属VTEP的MAC地址,目的MAC地址(Dst. MAC Addr.)为到达目的VTEP的路径中下一跳设备的MAC地址。

同样的,我们再来总结一下VXLAN解决了哪些问题:

VXLAN支持大量租户:支持多达1600万个相互隔离的二层网络,解决传统二层网络VLAN资源不足问题。

VXLAN网络易于维护:基于IP网络构建大二层网络,将原始二层数据帧封装成VXLAN报文在IP网络中透传,充分利用现有IP网络技术,部署和维护更容易。

VXLAN网络保证虚拟机动态迁移:采用“MAC in UDP”的封装方式,保证虚拟机迁移前后的IP和MAC不变。

下表展示了VLAN和VXLAN的一些区别。

bcca24cd0216ab9647ffc357306998ed.png

| VLAN vs. VXLAN

VLAN 和 VXLAN 之间存在不少差异。但是一个就真的比另一个更好吗?

尽管前文谈到了VXLAN的种种优点,但在可以预见的未来,VXLAN还是不能完全替代VLAN。

VXLAN最多是在构建数据中心时的一个选项,而不是唯一的选项。

首先VXLAN是一种Overlay网络,不能独立存在,必须依赖Underlay网络,而在构建Underlay网络时,还是需要借助VLAN。

其次,VXLAN的优势主要体现在大规模环境下,如果数据中心的规模只有百十台,那直接用VLAN就可以了,没必要上VXLAN。

此外,支持VXLAN的网络设备虽然也很常见,但通常要贵得多。此外,正确配置 VXLAN 隧道需要大量人工配置或使用复杂的自动配置工具。一种常见的方法是使用 BGP EVPN,但这对底层网络设备必须支持的协议的要求也增加了。

所以VXLAN就一定比VLAN更好吗?

这没有一个标准的答案,而是取决于我们试图解决的问题。

参考:

思科社区:VLAN和VXLAN的区别

https://zhuanlan.zhihu.com/p/36165475

https://chanjarster.github.io/post/network/vlan-vxlan/

https://iximiuz.com/en/posts/computer-networking-101/

https://info.support.huawei.com/info-finder/encyclopedia/zh/VXLAN.html

557e468456f607350f676029532da690.gif

 
 

10T 技术资源大放送!包括但不限于:Linux、虚拟化、容器、云计算、网络、Python、Go 等。在 开源Linux 公众号内回复 10T,即可免费获取!

Linux学习指南
有收获,点个在看
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值