嘿,运维!你与VXLAN有场约会……

图片来源:网络

作者

Bert

如有转载,请联系本公众号。

VXLAN概述 ▍

顾名思义,VXLAN(Virtual eXtensible Local Area Network)提供了类似VLAN的二层网络服务,并且比VLAN更具备扩展性和灵活性,该技术将数据中心物理网络架构(underlay)与数据中心逻辑网络架构(overlay)解耦,满足了云计算对数据中心网络架构灵活部署和弹性扩展的需求。

对比VLAN,VXLAN优势如下:

•业务灵活部署:VXLAN可以在共享的数据中心物理网络架构之上提供逻辑的大二层扩展,用户或者管理员可以实现业务的灵活按需部署。

•优良的弹性:VXLAN使用24-bit VNI(VXLAN Network Identifier),允许多达

1600万的VXLAN段(segment)在相同的管理域中共存。

•更佳的底层网络利用率:VLAN为避免环路,使用STP阻断(block)冗余链路。VXLAN采用UDP封装,利用第三层IP路由、等成本路径(ECMP)和链路聚合(LACP)技术使用了全部可用路径。

VXLAN数据包格式

VXLAN是一种承载协议,定义了MAC-over-UDP的封装方案,由内(inner)到外(outer)分别增加了8字节VXLAN头部,8字节UDP头部,20字节IP头部和14字节以太网头部,合计增加了50字节封装。

VXLAN包格式如图1所示:

图1

VXLAN术语

•VXLAN隧道端点(VTEP):VTEP(VXLAN Tunnel Endpoint )负责VXLAN报文的封装与解封装。每个VTEP具备两个接口:一个是本地桥接接口,负责原始以太帧接收和发送,另一个是IP接口,负责VXLAN数据帧接收和发送。VTEP可以是物理交换机或软件交换机。

VTEP如图2所示:

图2

•VXLAN IP网关:VXLAN IP网关(VXLAN IP Gateway)负责VXLAN和非VXLAN之间、不同VXLAN之间的网络通讯。

VXLAN网关如图3所示:

图3

•VXLAN组播:VXLAN组播(multicast)用于减小VXLAN主机的广播洪泛范围,实现远程VTEP发现、完成远程主机MAC地址与MAC-to-VTEP映射学习。每个VXLAN段可被映射到一个组播组,VTEP设备通过Internet Group Management Protocol(IGMP)协议加入这个组播组。。

VXLAN组播组部署如图4所示:

图4

VXLAN技术

•远程VTEP发现和MAC地址学习

本文仅讨论经典模式的远程VTEP发现和MAC地址学习机制。图5中显示了VTEP发现和MAC地址学习过程。有三个VTEP参与VXLAN 10,使用组播组239.1.1.1,终端设备A(使用IP-A,MAC-A)与终端设备B(使用IP-B,MAC-B)通讯。

①终端设备A发送ARP请求,请求终端设备B的MAC地址;

②VTEP-1收到终端设备A发送的ARP请求,此时VTEP-1还没有终端设备B对应的地址映射表项,VTEP-1将ARP请求进行VXLAN封装,VNI设置为10,outer-src-ip是VTEP-1的IP,outer-dst-ip是加入的组播地址,封装完成后转发至VXLAN组播组;

③VTEP-2、VTEP3加入相同的组播组,所有组成员都会收到VTEP-1发送的组播报文,解封装后检查VNI与本地VNI是否匹配,如匹配则将ARP请求发送至本地网络,同时记录终端设备A的VNI、inner MAC、outer IP的对应关系,构建控制平面地址映射表项。如VNI不匹配则丢弃数据包。

④终端设备B通过VTEP-2收到ARP请求后,以单播方式发送ARP响应,并且记录IP-A-to-MAC-A映射。

⑤VTEP-2收到终端设备B的ARP响应后进行VXLAN封装,此时VTEP-2已经构建控制平面地址映射表项,通过VXLAN封装后以UDP单播方式发送。Outer-src-ip是VTEP-2的IP地址,outer-dst-ip是VTEP-1的IP地址;

⑥VTEP-1收到封装后的ARP响应后,解封装比对VNI,如匹配将ARP响应发送至终端设备A,同时记录VNI、inner MAC、outer IP的对应关系,构建控制平面表项;

⑦此时VTEP-1、VTEP-2均已成功构建控制平面地址映射信息,后续VXLAN数据使用单播在VTEP-1和VTEP-2之间传输。

小贴士:VTEP可以配置ARP proxy,减少ARP组播请求。

图5

•VXLAN数据转发

VTEP为原始数据帧增加UDP报头,新的报头到达目的VTEP后才会被去掉,中间路径的网络设备只会根据外层(outer)包头内的目的地址进行数据转发。在图6中,VXLAN 10中的Host-A和Host-B通过VTEP-1和VTEP-2之间的VXLAN隧道相互通信。这个例子假设在两边都已经完成了地址学习,并且在两个VTEP上都有相应的MAC-to-VTEP映射。

①当Host-A向Host-B发送流量时,它会将主机的MAC-B地址作为目标MAC地址,并将其发送到VTEP-1。

②VTEP-1在其映射表中映射了MAC-B到VTEP-2,通过在数据包中添加VXLAN、UDP和外部IP地址头来执行VXLAN封装。在外部IP地址头中,源IP地址是VTEP-1的IP地址,目标IP地址是VTEP-2的IP地址。VTEP-1对VTEP-2的IP地址进行IP地址查找,找到传输网络中的下一个跳,然后使用下一跳设备的MAC地址进一步封装数据帧,发送到下一跳设备。

③ROUTER-1和ROUTER-2通过查找路由表,依据外部IP地址头信息进行转发。

④这些信息包基于其外部IP地址头信息被路由到VTEP-2,后者的IP地址为VTEP-2。

VTEP-2接收数据包之后,它会去掉外部以太网、IP、UDP和VXLAN头信息,并根据以太网帧中原始的目标MAC地址将数据包转发给Host-B。

图6

结论

数据中心的云计算网络架构规划、部署和配置是一项复杂的工作。虚拟网络抽象不但隐藏了底层网络部署的复杂性,而且能够更好的管理网络资源,最大程度减少了网络部署耗时和配置错误。TCP平台将虚拟网络(overlay)承载在数据中心传统网络(underlay)之上,允许用户像定义传统L2/L3网络那样定义自己的虚拟网络,一旦虚拟网络完成定义,TCP平台会将此逻辑虚拟网络通过overlay 技术映射到underlay网络并自动分配网络资源。

后续我们还将分享:VXLAN在云计算中心的部署实践、服务链(SFC)在云计算基础架构中的应用、NFV在云计算基础机构中的应用,以及云计算安全等话题,敬请期待。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180904G0OVM600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券