中午好,我的网工朋友。
VXLAN(Virtual eXtensible Local Area Network,虚拟可扩展局域网)可以说是目前最热门的网络虚拟化技术。
自2014年引入以来,VXLAN已逐渐成为现代数据中心网络架构的重要组成部分。
而同样作为网络虚拟化技术之一的VLAN(Virtual Local Network,虚拟局域网)早在1998年就已经提出,可以说是网络虚拟化技术的“骨灰级元老”,长期以来得到了广泛的应用。
VLAN /VXLAN到底是什么、有什么区别、为什么有了VLAN还需要VXLAN、二者究竟在什么场景使用?
今天咱就一起来说道说道,这篇的图解很有意思,欢迎阅读、转发、推荐,轻松易懂。
今日文章阅读福利:《 图解网络系列全套书籍(电子版)》
私信我,发送暗号“图解”,即可获得网工行业经典读物《图解HTTP》《图解TCP/IP》《图解网络硬件》三件套。
01 VLAN
01 VLAN的原理
交换机是一个 L2 设备,插在同一个交换机的网络设备组成了一个 L2 网络,L2 网络之间通过 MAC 地址通信,同时这个 L2 网络也是一个广播域。
同属于一个广播域的两个设备想要通信,一设备须得向网络中的所有设备发送请求信息,只有对应MAC地址的设备才是真正的接收方。
但实际上却是数据帧传遍整个网络,所有设备都会收到,且直接丢弃。
如此一来,将造成一系列不好的后果:网络整体带宽被占用、潜在的信息安全风险、占用CPU资源……
因此,VLAN应运而生!
VLAN 是一项把 L2 网络再做分区隔离的技术。
VLAN直接在Ethernet Frame的头部加上4个字节的VLAN ID用来标识不同的二层网络,处理起来也比较简单。
在读取Ethernet数据的时候,只需要根据EtherType相应的偏移4个字节就行。
从技术上讲,VLAN 是一种用“数字”(也就是VLAN ID)标记单个 L2 网段Ethernet Frame的机制。
简单来说就像是一个交换机被拆成了多个虚拟交换机,原本的一个广播域也分成了多个。
举例来看,下图的交换机在接口上设置了两个 VLAN,ID 分别是 1 和 2,两个同时也分割出了两个广播域。
因为这种分割是虚拟的不是物理的,所以叫做 Virtual LAN。
连接到特定单个 VLAN 的计算机和服务器只能看到属于同一 VLAN 的帧。不同ID的帧在逻辑上属于不同的网络。
02 VLAN的好处
VLAN的原理我们大概已经了解了,总结一下,VLAN究竟能够解决什么问题?
1、限制广播域。
广播域被限制在一个局域网内,节省了带宽,提高了网络处理能力。
2、增强局域网的安全性。
不同局域网内的报文在传输时是相互隔离的,即一个VLAN内的用户不能和其它VLAN内的用户直接通信,如果不同VLAN要进行通信,则需要通过路由器或三层交换机等三层设备。
3、灵活构建虚拟工作组。
用局域网可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活。
03 VLAN的缺点
VLAN也并非没有缺点。
1、随着虚拟化技术的发展,一台物理服务器往往承载了多台虚拟机,公有云或其它大型虚拟化云数据中心动辄需容纳上万甚至更多租户,VLAN技术最多支持4000多个VLAN,逐渐无法满足需求。
2、公有云提供商的业务要求将实体网络租借给多个不同的用户,这些用户对于网络的要求有所不同,而不同用户租借的网络有很大的可能会出现IP地址、MAC地址的重叠。
传统的VLAN并没有涉及这个问题,因此需要一种新的技术来保证在多个租户网络中存在地址重叠的情况下依旧能有效通信的技术。
3、虚拟化技术使得单台主机可以虚拟化出多台虚拟机同时运行,而每台虚拟机都会有其唯一的MAC地址。
这样,为了保证集群中所有虚机可以正常通信,交换机必须保存每台虚机的MAC地址,这样就导致了交换机中的MAC表异常庞大,从而影响交换机的转发性能。
02 VXLAN
01 VXLAN是什么?
VXLAN是另一种网络虚拟化技术,有点类似于 VLAN,但功能更强大。
在传统的VLAN网络中,共享同一底层 L2 网段的 VLAN 不能超过 4096 个。
只有 12 比特用于对Ethernet Frame格式中的 VLAN ID 字段进行编码。
VXLAN协议定义了8个字节的VXLAN Header,引入了类似VLAN ID的网络标识,称为VNI(VXLAN Network ID)。
VNI由24比特组成,这样总共是1600多万个,从而满足了大规模不同租户之间的标识、隔离需求。
VXLAN 是基于 L3 网络构建的虚拟 L2 网络,是一种Overlay网络。
VXLAN 不关心底层物理网络拓扑,它将Ethernet Frame封装在 UDP 包中,只要它能承载 UDP 数据包,就可以在远端网段之间提供以太网L2连接。
每个 VXLAN 节点上的出站L2 Ethernet Frame都会被捕获,然后封装成 UDP 数据包,并通过 L3 网络发送到目标 VXLAN 节点。
当 L2 Ethernet Frame 到达 VXLAN 节点时,就从 UDP 数据包中提取(解封装),并注入目标设备的网络接口。
这种技术称为隧道。
因此,VXLAN 节点会创建一个虚拟 L2 网段,从而创建一个 L2 广播域。
因为VXLAN通过UDP传输Ethernet Frame,那相应的可以在一个L3网络上传递L2的数据。
又或者说是在一个L3网络上构建了L2网络。
物理网络的二层边界还存在,但是现在虚机的网络数据可以跨越物理二层网络的限制,在三层网络传输。
下面看一下VXLAN报文:
如上图所示,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地址。
02 VXLAN的好处
同样的,我们再来总结一下VXLAN解决了哪些问题:
- VXLAN支持大量租户:
支持多达1600万个相互隔离的二层网络,解决传统二层网络VLAN资源不足问题。 - VXLAN网络易于维护:
基于IP网络构建大二层网络,将原始二层数据帧封装成VXLAN报文在IP网络中透传,充分利用现有IP网络技术,部署和维护更容易。@ 网 络 工 程 师 俱 乐 部 - VXLAN网络保证虚拟机动态迁移:
采用“MAC in UDP”的封装方式,保证虚拟机迁移前后的IP和MAC不变。
03 VLAN和VXLAN的区别?
下表展示了VLAN和VXLAN的一些区别。
VLAN 和 VXLAN 之间存在不少差异。但是一个就真的比另一个更好吗?
尽管前文谈到了VXLAN的种种优点,但在可以预见的未来,VXLAN还是不能完全替代VLAN。
VXLAN最多是在构建数据中心时的一个选项,而不是唯一的选项。
首先VXLAN是一种Overlay网络,不能独立存在,必须依赖Underlay网络,而在构建Underlay网络时,还是需要借助VLAN。
其次,VXLAN的优势主要体现在大规模环境下,如果数据中心的规模只有百十台,那直接用VLAN就可以了,没必要上VXLAN。
此外,支持VXLAN的网络设备虽然也很常见,但通常要贵得多。
另外,正确配置 VXLAN 隧道需要大量人工配置或使用复杂的自动配置工具。
一种常见的方法是使用 BGP EVPN,但这对底层网络设备必须支持的协议的要求也增加了。
所以VXLAN就一定比VLAN更好吗?
这没有一个标准的答案,而是取决于我们试图解决的问题。
整理:老杨丨10年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部