VXLAN概述:思科Nexus 9000系列交换机

你会学到什么

传统的网络分段是通过VLAN提供的,也就是IEEE802.1Q。VLAN提供二层边界和广播域的逻辑分组。但是由于低效的VLAN使用、数据中心网络设备部署的严格要求以及4094个VLAN有限的扩展性,使用VLAN变成了IT部门和云提供商构建大型多租户数据中心的限制因素。

思科和其它几个领先的供应商提出了Virtual Extensible LAN (VXLAN)标准来解决数据中心网络对传统的VLAN技术的挑战。VXLAN提供弹性负载部署以及更多的二层可扩展性。思科Nexus 9000系列交换机由Nexus 9500模块化交换机和Nexus 9300固定交换机组成。它们是为了下一代数据中心设计的带有基于工业领先硬件的VXLAN功能。它提供了三层上的二层连接扩展,并且在VXLAN和非VXLAN架构下都可以简单进行集成。他们使能大规模虚拟化和多租户数据中心设计在一个共享的物理架构上。

Nexus 9000系列交换机可以运行在ACI模式或者NX-OS模式。在ACI模式下,9000和APIC一起使用提供一个应用为中心架构。在NX-OS模式下,9000就像一个经典的交换机。VXLAN在两种模式下的实现是不一样的。本白皮书提供NX-OS模式下的VXLAN的一个概述。

VXLAN综述

和名字一样,vxlan的设计是为了提供vlan一样的二层以太网服务,但是提供更好的可扩展性和灵活性。和VLAN比,VXLAN提供以下优势

  • 支持在数据中心中灵活的部署多租户组:它提供了一个在网络基础设施之上的二层分组,这样租户可以被部署在数据中心中的任意物理节点上。
  • 更大的扩展性来提供更多的二层分组:VLAN用12比特的VID来寻址2层分组,因此只有4094个VLAN。VXLAN使用24比特的组ID也就是VXLAN网络识别符(VNID),使得在同一个管理域上可以最多有1600万个VXLAN分组。
  • 更好的使用底层架构中可用的网络路径:VLAN使用生成树协议来做链路保护,因为阻塞了冗余的路径导致网络中一般的连接都没法使用。而VXLAN包在网络中的传输基于三层头,可以使用三层路由、ECMP路由和链路汇聚协议的优势来使用所有的路径。

VXLAN封装和包格式

VXLAN是一个在三层网络上的一个二层overlay机制。它使用MAC地址在UDP封装(MAC-in-UDP)来提供那个一个在整个数据中心网络中扩展二层分组的方法。VXLAN是一个为了在一个物理架构上支持灵活、大规模多租户环境的解决方案。在物理数据中心网络中的传输层协议是IP加UDP。

VXLAN定义的MAC-in-UDP封装机制,把原来的二层帧加上一个VXLAN头之后加到一个UDP-IP包里面,通过MAC-in-UDP封装,VXLAN把二层网络加到了三层网络上。

从图1可以看出,VXLAN加上了一个8字节的VXLAN头,包括24位的VNID和一些保留位。VXLAN头和原来的以太网帧被放到了UDP payload上。24位的VNID被用来识别二层分组和保持组间的二层隔离。有了24个比特的VNID,VXLAN可以支持1600万的分组。

VXLAN隧道端点

VXLAN使用vxlan隧道端点设备(VTEP)来对应租户端点设备,并进行VXLAN封装和解封装。每个VTEP功能有两个接口:一个接口对应本地LAN上的交换机接口,用以支持通过bridging的本地端点通信,另一个是传输IP网络的IP接口。

IP接口有一个唯一的IP地址来标识传输IP网络上的VTEP设备,也就是基础VLAN。VTEP设备通过这个IP地址来封装以太网帧并在IP网络上进行传输。VTEP设备也发现在同一个vxlan分组下的remoteVTEPs,并且通过IP接口学习MAC地址到VTEP的映射关系。为了IP网络上构建二层互联,我们得到VTEP的功能模块和逻辑拓补如图2。

VXLAN分组独立于下层网络拓扑,相对的,VTEP之间的下层网络拓扑独立于上层VXLAN。它基于外层IP地址头路由封装的包,发起通信的VETP作为源IP地址,目标VTEP作为目的IP地址。

VXLAN包转发流

vxlan使用无状态隧道来利用三层网络传输overlay二层网络上VTEP之间的流。一个vxlan包转发流如图3。

图3中,vxlan分组10中的主机A和主机B通过VTEP1和VTEP2之间的vxlan隧道进行通信。这个例子假设通信两方已经完成地址学习,并且MAC-VTEP映射已经在两个VTEP上存在了。

当主机A发送流到主机B,它把主机B的MAC-B作为目的MAC地址构建以太网帧并发往VTEP-1。VTEP1中,有一个MAC-B到VTEP2之间的映射在映射表当中,它通过添加vxlan、udp和外部IP地址头对主机的以太网帧进行vxlan封装。在外部IP地址头当中,源IP地址是VTEP1的IP地址,目的IP地址是VTEP2的IP地址。然后VTEP1对VTEP2的IP地址进行一个IP地址查询来获取传输网络中的下一跳,然后使用下一跳的MAC地址重新封装以太网帧来发送到下一跳设备(译者注:物理拓扑是点对点的,逻辑拓扑是灵活的,虚拟化就要求物理拓扑也变的灵活一些)。

包基于外层IP地址头(VTEP-2作为目的地址)通过传输网络路由到VTEP2。VTEP-2接收到包,它剥离外部以太网、IP、UDP和VXLAN头,基于原始以太网帧中的目的MAC地址转发到主机B。

思科Nexus 9000系列交换机支持基于硬件的VXLAN功能,它在三层网络上扩展了二层连接性,并且提供了在VXLAN和非VXLAN之间的一个高性能网关。以下部分提供9000NX-OS下的vxlan实现细节。

对于广播、unknow单播和组播流量的二层机制

vxlan使用已有的二层机制:flooding、动态MAC地址学习来进行:

  • 传输广播、unknown单播、组播
  • 发现远程VTEPS
  • 学习远程主机MAC地址以及每个vxlan下MAC到VTEP的映射

对于这些流类型,IP组播被用来降低参与vxlan分组的flooding主机范围。

每个vxlan分组,或者VNID被映射到传输IP网络的一个IP组播组(译者注:D类地址)。每个VTEP设备都独立配置,并通过IGMP协议作为一个IP主机加入这个组播组。IGMP加入触发了PIM(协议独立组播)并通知传输网络上的特定组播组。组播分发树基于VTEP在传输网络的位置构建组播分发树。vxlan分组的组播隧道如图4:

图4中的这个组播组是用来传输VXLAN广播、unknown单播和组播流量以及vxlan分组上的有限的二层flooding。VETP之间的通信通过flooding或者组播组上的组播流进行。

远程VTEP发现和租户寻址学习

9000使用经典2层数据平面flooding和学习机制来进行VTEP发现和租户寻址学习。图4是一个学习进程的例子。

租户vxlan分组有VNID10和使用组播组239.1.1.1在传输网络上。在数据中心有3个VTEP参与这个vxlan。假设位置之间没有进行地址学习。终端系统A(IP-A,MAC-A)发起IP通信和终端系统B(with IP-B,MAC-B)。整个通讯序列如图5:

  1. 终端系统A发送一个ARP请求到它的二层vxlan网络上的IP-B
  2. VTEP-1接收到了这个请求。它没有IP-B的映射。VTEP-1封装了这个ARP请求到一个IP组播包当中,并且转发到vxlan组播组。封装的组播包中有VTEP-1的IP作为源IP地址,vxlan组播组地址作为目的IP地址。
  3. IP组播包被分发到整个组当中。VTEP-2和VTEP-3接收到了这个封装的组播包,因为他们也在同一个vxlan组播组里面。他们解封装了这个包并且check了vxlan当中的VNID。如果匹配他们配置的vxlan组VNID,他们就转发ARP请求到本地vxlan网络。他们也从外层IP头学习VTEP-1的IP地址,并且检查包来获得终端系统A的MAC地址。把这种映射放到本地表当中。
  4. 终端系统B接收到了由VTEP-2发送的ARP请求。他给出自己的MAC地址作为响应,并且学习了IP-A到MAC-A的映射。
  5. VTEP-2接收到了终端系统B的ARP回复,里面有MAC-A作为目的MAC地址。它也知道了MACA-IP1的映射关系。它使用单播隧道转发ARP回复到VTEP-1。在封装的单播包当中,源IP就是IP-2,目的IP就IP-1。ARP回复呗封装在UDPpayload里面。
  6. VTEP-1接收到来自VTEP-2封装的ARP回复之后。它解封装并且转发ARP回复到终端系统A。它也从外层IP头学习了VTEP-2的IP地址。并且学到了MACB到IP2的映射。
  7. 后面的系统A和B之间的IP包都是通过单播转发的。基于VTEP-1和VTEP-2的映射信息以及vxlan隧道。
  8. VTEP-1也可以选择用代理ARP来做后面的针对IP-B的ARP请求,来降低传输网上的flooding。

ECMP和LACP与VXLAN的负载共享

封装的VXLAN包在VTEP之间的转发基于传输网络。大部分数据中心传输网络设计和部署多个冗余的路径,利用多个路径的负载共享技术来分发流量负载到所有的可用路径上。vxlan流量也想利用这种传输网络的有点。

一个典型的vxlan传输网络是一个IP路由网络会使用标准的IP ECMP来均衡多条最佳路径上的流量负载。为了避免失序的报转发,往往部署基于流的ECMP。一个ECMP流由源和目的IP地址以及可选的IP头中的源和目的TCP/UDP端口确定。

因为VTEP之间所有的vxlan流都有相同的外部源和目的IP地址,所有的VTEP必须使用相同的目的UDP端口(IANA分配的4789或者用户自定义的端口),ECMP流定义唯一可以区分vxlan流和传输网络端点的就是源UDP端口。一个相似的情况是LACP哈希,如果基于路由和ECMP解析的出口接口是一个LACP端口。LACP用VXLAN外部头来做负载共享哈希,这就导致源UDP端口变成唯一的可以用来识别vxlan流的元素。

9000系列交换机实现的vxlan,用内部帧头的一个哈希值作为vxlan源UDP端口。这样,一个vxlan流可以通过外部头中的IP地址加上UDP端口组合来唯一标识。因此哈希得到的UDP端口引入了想要的给ECMP和LACP做负载均衡的熵水平。

9000作为基于硬件的vxlan网关

vxlan作为一种给虚拟数据中心overlay的新技术正在被数据中心越来越多的采用。尤其是对于hypervisor中的给虚拟机之间通信用的虚拟网络。但是,数据中心很有可能包含很多并不支持vxlan的设备,比如经典的hypervisors物理服务器,网络服务应用,比如物理防火墙和负载均衡器以及存储设备等。这些设备需要继续呆在经典的vlan分组里面。一个在vxlan组里面的虚拟机要访问一个由经典vlan分组只呢个的设备提供的服务,这种情况也不少见。通过vxlan网关,vxlan到vlan之间的连接可以被建立。

一个vxlan网关是一个VTEP设备,它可以组合vxlan分组和经典的vlan分组到一个共同的二层域。在一个vxlan网关上的IEEE802.1Q VLAN和VXLAN逻辑映射,如图6。

思科9000系列交换机可以提供一个基于硬件的vxlan网关。它可以无缝的连接vxlan和vlan分组,组成一个转发域,从而跨越三层边界并且不牺牲转发性能。9000可以让你省掉了增加一个额外的物理设备或者虚拟设备来做网关的功能。基于硬件的封装和解封装给所有的帧提供了线速性能。用9000搭建的vxlan网关如图7。

传输网络中的MTU大小

由于MAC-to-UDP封装,vxlan在原来的帧当中引入了50字节的overhead。因此,传输网络中的MTU需要增加50字节。如果overlay使用1500字节的MTU,传输网络需要至少配置MTU到1550个字节。如果overlay应用要使用更大的大于1500的包长。传输网络需要支持Jumbo-frame。

传输网络中的ECMP和LACP哈希算法

在之前的章节中提到,9000给源UDP端口号引入了一些熵给传输网络中的ECMP和LACP。作为一种增强这个实现的方法,如果ECMP和LACP哈希算法直接用UDP源端口作为输入去做哈希就可以针对VXLAN封装的流量获得最佳的负载均衡结果。

组播组扩展

9000的vxlan实现用组播隧道来做广播、unknown单播和组播流量转发。理想的,一个vxlan组映射到一个IP组播组来提供最佳的组播转发。但是在核心网络上多个vxlan分组共享一个IP组播组也是有可能的。

vxlan使用24位的VNID字段,可以最多支持1600万的逻辑2层分组。如果一个逻辑二层分组对应一个IP组播组,会增加需要的组播组地址空间以及核心网上设备的转发状态。可能,传输网络的组播可扩展性就会成为一个问题。如果这样的话,就需要将多个vxlan分组映射到同一个组播组来缓解核心设备上组播控制平面的资源,并且获得vxlan的可扩展性。但是这种映射造成的是次优的组播转发。给组播组中的一个租户转发的流量,现在转发到了同一个组播组当中的其它租户的VTEPs。这就导致了组播数据平面资源的低效使用。因此,控制平面可扩展性和数据平面效率之间的权衡就是一个解决方案。

尽管次优的复制和转发,多租户vxlan网络共享一个组播组并没有带来租户网络上任何的2层冲突。VTEP在收到一个组播网络中封装的包之后,它会检查和验证VXLAN头当中的VNID。VTEP如果不认识这个VNID那么他就丢弃这个跑。只有当VNID匹配VTEP本地的VXLAN VNID的时候,它才转发到它的vxlan组。其它租户网络不会受到这个包。因此vxlan分组之间的隔离没有被破坏。

总结

VXLAN通过MAC-in-UDP的方式提供了一个在三层网络架构上进行扩展二层网络的解决方案。VXLAN通过二层扩展使得灵活的部署工作负载成为可能。它也是一个通过从共享传输网络中解耦租户二层分组来构建多租户数据中心的一个方法。

虚拟主机在持续的采用VXLAN,但是在数据中心中很少有一个完整的虚拟环境。更常见的是,一个数据中心同时存在虚拟机、裸金属主机和物理服务应用。虚拟机需要访问物理主机和应用上的服务,这个提出了从vxlan分组中的虚拟机去访问vlan分组中的设备的一个需求。

9000提供基于硬件性能的vxlan功能。作为一个vxlan网关部署的话,9000可以简单的连接vxlan和经典的vlan分组,创建一个共同的转发域。这样租户设备可以灵活的部署在两种环境下,获得虚拟的单跳连接性。和基于软件的vxlan网关解决方案相比,9000提供线速的性能,这对于设计vxlan和vlan的应用性能来说至关重要。

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值