VXLAN技术研究

     overlay 络的诞生很大程度上是因为云计算、虚拟化相关技术的发展,传统的 络无法满足于规模大、灵活性要求高的云数据中心的要求,于是便有了overlay 络的概念。在介绍overlay 络之前,首先说明一个问题,在SDN非常火爆的今天,很多人认为overlay是一种SDN的解决方案,把openflow跟overlay对立或者并列,其实这个不对。overlay只是一种组 方案,openflow是一个控制协议,所以实际 络中,可以是这样的:控制器通过openflow协议控制vSwitch来构建一个overlay 络。

         由于虚拟机迁移的 络属性要求,其从一个物理机上迁移到另一个物理机上,要求虚拟机不间断业务,则需要其IP地址、MAC地址等参数维保持不变,如此则要求业务 络是一个二层 络,且要求 络本身具备多路径多链路的冗余和可靠性。传统的 络生成树(STPSpaning Tree Protocol)技术不仅部署繁琐荣,且协议复杂, 络规模不宜过大,限制了虚拟化的 络扩展性。基于各厂家私有的的IRF/vPC等设备级的( 络N:1)虚拟化技术,虽然可以简化拓扑简化、具备高可靠性的能力,但是对于 络有强制的拓扑形状限制,在 络的规模和灵活性上有所欠缺,只适合小规模 络构建,且一般适用于数据中心内部 络。而为了大规模 络扩展的TRILL/SPB/FabricPath/VPLS等技术,虽然解决了上述技术的不足,但对 络有特殊要求,即 络中的设备均要软硬件升级而支持此类新技术,带来部署成本的上升

         在大二层 络环境下,数据流均需要通过明确的 络寻址以保证准确到达目的地,因此 络设备的二层地址表项大小(即MAC地址表),成为决定了云计算环境下虚拟机的规模的上限,并且因为表项并非百分之百的有效性,使得可用的虚机数量进一步降低,特别是对于低成本的接入设备而言,因其表项一般规格较小,限制了整个云计算数据中心的虚拟机数量,但如果其地址表项设计为与核心或 关设备在同一档次,则会提升 络建设成本。虽然核心或 关设备的MAC与ARP规格会随着虚拟机增长也面临挑战,但对于此层次设备能力而言,大规格是不可避免的业务支撑要求。减小接入设备规格压力的做法可以是分离 关能力,如采用多个 关来分担虚机的终结和承载,但如此也会带来成本的上升。

          当前的主流 络隔离技术为VLAN(或VPN),在大规模虚拟化环境部署会有两大限制:一是VLAN数量在标准定义中只有12个比特单位,即可用的数量为4000个左右,这样的数量级对于公有云或大型虚拟化云计算应用而言微不足道,其 络隔离与分离要求轻而易举会突破4000;二是VLAN技术当前为静态配置型技术(只有EVB/VEPA的802.1Qbg技术可以在接入层动态部署VLAN,但也主要是在交换机接主机的端口为常规部署,上行口依然为所有VLAN配置通过),这样使得整个数据中心的 络几乎为所有VLAN被允许通过(核心设备更是如此),导致任何一个VLAN的未知目的广播数据会在整 泛滥,无节制消耗 络交换能力与带宽。

       对于小规模的云计算虚拟化环境,现有的 络技术如虚拟机接入感知(VEPA/802.1Qbg)、数据中心二层 络扩展(IRF/vPC/TRILL/FabricPath)、数据中心间二层技术(OTV/EVI/TRILL)等可以很好的满足业务需求,上述限制不成为瓶颈。然而,完全依赖于物理 络设备本身的技术改良,目前看来并不能完全解决大规模云计算环境下的问题,一定程度上还需要更大范围的技术革新来消除这些限制,以满足云计算虚拟化的 络能力需求。在此驱动力基础上,逐步演化出Overlay的虚拟化 络技术趋势。

       Overlay在 络技术领域,指的是一种 络架构上叠加的虚拟化技术模式,其大体框架是对基础 络不进行大规模修改的条件下,实现应用在 络上的承载,并能与其它 络业务分离,并且以基于IP的基础 络技术为主。其实这种模式是以对传统技术的优化而形成的。早期的就有标准支持了二层Overlay技术,如RFC3378(Ethernet in IP),就是早期的在IP上的二层Overlay技术。并且基于Ethernet over GRE的技术,H3C与Cisco都在物理 络基础上发展了各自的私有二层Overlay技术——EVI(Ethernet Virtual Interconnection)与OTV(Overlay Transport Virtualization)。EVI与OTV都主要用于解决数据中心之间的二层互联与业务扩展问题,并且对于承载 络的基本要求是IP可达,部署上简单且扩展方便。

       随着云计算虚拟化的驱动,基于主机虚拟化的Overlay技术出现,在服务器的Hypervisor内vSwitch上支持了基于IP的二层Overlay技术,从更靠近应用的边缘来提供 络虚拟化服务,其目的是使虚拟机的部署与业务活动脱离物理 络及其限制,使得云计算的 络形态不断完善。主机的vSwitch支持基于IP的Overlay之后,虚机的二层访问直接构建Overlay之上,物理 不再感知虚机的诸多特性,由此,Overlay可以构建在数据中心内,也可以跨越数据中心之间。当然这样一来硬件交换机便被通道化,地位岌岌可危,因此以cisco为代表的传统老牌硬件厂商开始发力,将overlay技术集成了到了硬件的交换机上,所以现在overlay技术的也就分成了硬件overlay和软件overlay两个方向。

      上文中提到的传统 络的三个问题,落到实际中看就是以下四个问题,我们分别看看overlay 络是如何解决的:

如何解决:overlay 络的本质是在三层 络中实现二层 络的扩展。三层 络可以通过路由的方式在 络中分发,而路由 络本身并无特殊 络结构限制,具备良性大规模扩展能力,并且对设备本身无特殊要求,以高性能路由转发为佳,且路由 络本身具备很强的的故障自愈能力、负载均衡能力。并且三层 络还规避了二层 络的种种弊端,使得整个 络扩展性强且更加健壮。而二层 络如何在三层 络中得到扩展,在传统的 络中是无法实现的,overlay 络中主要靠的是封装技术来实现,具体实现方式后面VXLAN技术的时候会详细介绍。

如何解决:由于overlay组 中, 络设备互联多采用三层互联的方式,这样arp表就无需泛洪到全 ,所以每个tor交换机仅仅需要维护一张本地的mac地址表即可。

如何解决:在Overlay技术中引入了类似12比特VLANID的用户标识,支持千万级以上的用户标识,并且在Overlay中沿袭了云计算“租户”的概念,称之为Tenant ID(租户标识),用24或64比特表示。

如何解决:首先overlay组 是一个三层 络,三层 络就可以有效的避免传统二层中的非正常BUM的流量(比如风暴问题),而overlay组 通常和云环境以及SDN一起使用,所以正常的BUM流量也是基于虚机创建来生成的,不会产生多余的流量。

       目前在overlay技术领域有三大技术路线:VXLAN、NVGRE、STT,其中最火的就是VXLAN技术,包括vmware、cisco、h3c、华为等多个虚拟化以及传统 络厂商,都是以VXLAN技术来构建自己的SDN解决方案。

       VXLAN 文是在原始的二层 文前面再封装一个新的 文,新的 文中和传统的以太 文类似,拥有源目mac、源目ip等元组。当原始的二层 文来到vtep节点后会被封装上VXLAN包头(在VXLAN 络中把可以封装和解封装VXLAN 文的设备称为vtep,vtep可以是虚拟switch也可以是物理switch),打上VXLAN包头的 文到了目标的vtep后会将VXLAN包头解封装,并获取原始的二层 文。outer mac header以及outer ip header里面的相关元组信息都是vtep的信息,和原始的二层 文没有任何关系。所在数据包在源目vtep节点之间的传输和原始的二层 文是毫无关系的,依靠的是外层的包头完成。  

      除此之外还有几个字段需要关注:1、在VXLAN Header 文中封装了24bit的VXLAN ID(VNI),前文中提到的vlan的扩展、租户的扩展就是依靠这个VXLAN ID来实现的;2、在UDP header里面有一个source port的字段,用于VXLAN 络节点之间ECMP的hash;3、在VXLAN Header里的reserved字段,作为保留字段,很多厂商都会加以运用来实现自己组 的一些特性。

  • 数据平面—隧道机制 
  •        VTEP为 拟机的数据包加上了层包头,这些新的 头之有在数据到达目的VTEP后才会被去掉。中间路径的 络设备只会根据外层包头内的目的地址进行数据转发,对于转发路径上的 络来说,一个Vxlan数据包跟一个普通IP包相比,出了个头大一点外没有区别。由于VXLAN的数据包在整个转发过程中保持了内部数据的完整,因此VXLAN的数据平面是一个基于隧道的数据平面。

    • 控制平面—改进的二层协议

            VXLAN不会在虚拟机之间维持一个长连接,所以VXLAN需要一个控制平面来记录对端地址可达情况。控制平面的表为(VNI,内层MAC,外层vtep_ip)。Vxlan学习地址的时候仍然保存着二层协议的特征,节点之间不会周期性的交换各自的路由表,对于不认识的MAC地址,VXLAN依靠组播来获取路径信息(如果有SDN Controller,可以向SDN单播获取)。       另一方面,VXLAN还有自学习的功能,当VTEP收到一个UDP数据 后,会检查自己是否收到过这个虚拟机的数据,如果没有,VTEP就会记录源vni/源外层ip/源内层mac对应关系,避免组播学习。

    下行 文处理:下行 文是指vtep收到从IP 络发来的带有VXLAN封装的 文。

    文解析:对收到的 文进行解析,得到后续处理所需要的各种信息如外层IP头、以太 头,以及VXLAN 头等;

    入接口信息获取:根据 文接收端口的配置信息以及当前 文的封装结构,来决定是否需要进行VXLAN下行 文处理,只有当 文具有VXLAN封装,并且外层目的IP是本接入点需要处理的时候,才会进入后续的解封装,否则仅仅执行普通的路由处理;

    解封装:根据入接口信息,使用外层目的IP、源IP和封装在 文中的VXLAN ID—起作为关键字进行查表,获得解封装信息。然后去掉 文的外层IP头、以太 头,以及VXLAN 头,并且获得VXLAN 头中所携带的VXLAN ID;

    出接口信息获取:根据查表的结果,得到需要转发出去的端口信息;

    文转发:从相应的目的端口发送出去,从而完成VXLAN下行 文的处理过程。

    • ARP 文转发过程:

      1、主机A向主机B发出ARP Request,Src MAC为MAC-A,Dst MAC为全f;

      2、ARP Request 文到达vtep-1后,vtep-1对其封装VXLAN包头,其中外层的Src MAC为vtep-1的MAC-1,Dst MAC为组播mac地址, Src ip为vtep-1的IP-1,Dst ip为组播ip地址,并且打上了VXLAN VNID:10。由于vtep之间是三层 络互联的,广播包无法穿越三层 络,所以只能借助组播来实现arp 文的泛洪。通常情况下一个组播地址对应一个VNID,同时可能会对应一个租户或者对应一个vrf 络,通过VNID进行租户之间的隔离。

      3、打了VXLAN头的 文转发到了其他的vtep上,进行VXLAN头解封装,原始的ARP Request 文被转发给了vtep下面的主机,并且在vtep上生成一条MAC-A(主机A的mac)、VXLAN ID、IP-1(vtep-1的ip)的对应表项;

      4、主机B收到ARP请求,回复ARP Response,Src MAC:MAC-B、Dst MAC:MAC-A;

      5、ARP Response 文到达vtep-2后,被打上VXLAN的包头,此时外层的源目mac和ip以及VXLAN ID是根据之前在vtep-2上的MAC-A、VXLAN ID、IP-1对应表项来封装的,所以ARP Response是以单播的方式回复给主机A;

      6、打了VXLAN头的 文转发到vtep-1后,进行VXLAN头的解封装,原始的ARP Response 文被转发给了主机A;

      7、主机A收到主机B返回的ARP Response 文,整个ARP请求完成。

      说明:这种用组播泛洪ARP 文的方式是VXLAN技术早期的方式,这种方式也是有一些缺点,比如产生一些不可控的组播流量等,所以现在很多厂商已经使用了控制器结合南向协议(比如openflow或者一些私有南向协议)来解决ARP的 文转发问题。

      • 在经过arp 文后,vtep-1和vtep-2上都会形成一个vxlan二层转发表,大致如下(不同厂商表项可能略有不同,但是最主要的是以下元素):

        vtep-1:

        MAC VNI vtep
        MAC-A 10 e1/1
        MAC-B 10 vtep-2 ip

        vtep-2:

        MAC VNI vtep
        MAC-B 10 e1/1
        MAC-A 10 vtep-1 ip


        单播转发的过程如下:

        1、host-A将原始 文上送到vtep;

        2、根据目的mac和VNI的 (这里的VNI获取是vlan和vxlan的mapping查询出的结果),查找到外层的目的ip是vtep-2 ip,然后将外层的源目ip分别封装为vtep-1 ip和vtep-2 ip,源目mac为下一段链路的源目mac;

        3、数据包穿越ip 络;

        4、根据VNI、外层的源目ip,进行解封装,通过VNI和目的mac查表,得到目的端口是e1/1;

        5、host-B接受此原始 文,并回复host-A,回复过程同上一致。

        • VXLAN技术研究

      4)典型的VXLAN组 模式

             软件模式中vtep功能由vswitch实现,图中物理交换 络是一个L3的 络,实际软件overlay的场景下物理的交换 并不一定要是一个L3的 络,只要物理服务器的ip互相可达即可,当然L3的 络是一个比较好的选择,因为L3的 络扩展性比L2好,L2 络一大就会有各种二层问题的存在,比如广播泛洪、未知单播泛洪,比如TOR的mac问题,这个前文已经讲了很多,这里就不多讲了。

      优点:1、硬件交换机的转发平面和控制平面解耦,更加灵活,不受物理设备和厂商的限制;

        &nbsp

      声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2016年1月10日
    下一篇 2016年1月10日

    相关推荐