大二层网络----Vxlan技术

1. 二层转发的概念

  二层转发即交换机依据mac地址进行转发,交换机维护一张mac表,接受到报文后识别报文的目的mac地址,然后将数据包转发到mac表对应的端口上。VxLAN技术首先会抽象一个overlay平面,这个overlay平面就等同于一个二层交换机,其次会定义若干VTEP节点,VTEP节点就相当于二层交换机的端口,同时维护一个vtep节点的mac表,数据报文到达vtep节点后,解析目的vtep的mac地址,然后将数据包转发到mac 表对应的vtep节点上,与二层交换极其类似,因此VxLAN这种在物理平面上抽象出的逻辑平面又被称为大二层平面。这种技术主要用在数据中心里面。

2. 现今数据中心面临的挑战

a、 虚拟机规模受网络设备表项规格的限制

    在传统二层网络环境下,数据报文是通过查询MAC地址表进行二层转发。服务器虚拟化后,VM的数量比原有的物理机发生了数量级的增长,伴随而来的便是VM网卡MAC地址数量的空前增加。而接入侧二层设备的MAC地址表规格较小,无法满足快速增长的VM数量。

b、网络隔离能力有限

    VLAN作为当前主流的网络隔离技术,在标准定义中只有12比特,因此可用的VLAN数量仅4096个。对于公有云或其它大型虚拟化云计算服务这种动辄上万甚至更多租户的场景而言,VLAN的隔离能力无法满足。

c、虚拟机迁移范围受限

    由于服务器资源等问题(如CPU过高,内存不够等),虚拟机迁移已经成为了一个常态性业务。虚拟机迁移是指将虚拟机从一个物理机迁移到另一个物理机。为了保证虚拟机迁移过程中业务不中断,则需要保证虚拟机的IP地址、MAC地址等参数保持不变,这就要求虚拟机迁移必须发生在一个二层网络中。而传统的二层网络,将虚拟机迁移限制在了一个较小的局部范围内。

为了应对传统数据中心网络对服务器虚拟化技术的限制,VXLAN技术应运而生,其能够很好的解决上述问题。

3. Vxlan格式及封装格式

    Vxlan通过将逻辑网络中通信的数据帧封装在物理网络中进行传输,封装和解封装的过程由VTEP节点完成。Vxlan将逻辑网络中的数据帧添加Vxlan首部后,封装在物理网络中的UDP报文中传送,Vxlan首部的格式如下:

    Vxlan传输过程中,将用户数据报文添加Vxlan首部后,依次添加UDP首部,IP首部,以太网帧首部后,在物理网络中传输,数据帧的封装格式可以用下图来描述:

    需要注意的是,外部UDP首部的目的端口号为4789,该数值为默认Vxlan解析程序的端口,外层IP首部中的源IP和目的IP地址均为通信双方的VTEP地址,协议的其余部分和传统网络相同。

这里有一个问题,为什么Vxlan封装采取的是MAC in UDP的形式而不是MAC in IP或者MAC in TCP呢?

为什么Vxlan封装采取的是MAC in UDP?

4. Vxlan的技术优势

a、针对虚拟机规模受设备表项规格限制

    Vxlan将原始的数据报文封装成UDP报文,并使用VTEP节点的IP地址和MAC地址作为外层头,这样报文对网络中的其他设备只表现为封装后的参数,可以极大的降低大二层网络对MAC地址规格的需求。

b、针对网络隔离能力限制

    Vxlan网络标识VNI(VXLAN Network Identifier),由24比特组成,支持多达16M的Vxlan段,有效得解决了云计算中海量租户隔离的问题。

c、针对虚拟机迁移范围受限

    Vxlan技术在三层网络之上,构建出了一个虚拟的大二层网络Overlay平面,只要虚拟机路由可达,就可以将其规划到同一个大二层网络中。VM发出的原始报文进行封装后通过Vxlan隧道进行传输,隧道两端的VM不需感知传输网络的物理架构。这样,对于具有同一网段IP地址的VM而言,即使其物理位置不在同一个二层网络中,但从逻辑上看,相当于处于同一个二层域。这就解决了虚拟机迁移范围受限问题。

5. Vxlan通信过程

a、Host1向Host2发送数据包,封装源宿MAC,源宿IP后将数据包转发给VTEP1; 

b、VTEP1接收到数据包,从自己维护的映射表中找到 MAC-Host2 对应的 VTEP-2,然后执行 Vxlan封装,加上 Vxlan头,UDP 头,以及外层 IP 和 MAC 头。此时的外层 IP 头,目标地址为 VTEP-2 的 IP,源地址为 VTEP-1 的 IP。同时由于下一跳是 R1,所以外层 MAC 头中目标地址为 R1 的 MAC。 

c、R1接收到数据包后,发现外层MAC地址指向自己,从自己维护的路由表中查到IP-VTEP2的路由,发现下一跳是R2,于是将外层D-MAC修改为R2的MAC地址,然后将数据包转发给R2; 

d、R2收到数据包后,查到IP-VTEP2的MAC地址,修改D-MAC为VTEP-2的MAC地址,然后将数据包转发给VTEP2; 

e、VTEP2收到数据包后,发现D-IP指向自己,然后进行解封装,依次去掉外层 MAC 头,外层 IP 头,UDP 头 和 Vxlan头,依据内层D-MAC将数据包转发给Host2。 

从上面的传输过程可以看出,抽象出来的VTEP节点通过Vxlan隧道组成一个大二层的平面,实现云数据中心的各项复杂需求。

 

转载自:http://www.subtime.cn/article/vxlan/

posted @ 2021-02-20 17:29  .dier  阅读(3258)  评论(0编辑  收藏  举报