数据中心的发展以及SDN、Vxlan简介

SDN:softwaredefined networking,官方定义软件定义网络,目的是控制与数据层面分离。

通俗一点来解释:传统的网络设备会有独立的系统,每台设备利用自己的控制层面形成单独的转发信息,例如网络工程师熟悉的OSPF每台运行进程的设备有独立的LSDB,通过交互来形成各自独立的路由表、既然各大网络厂商(Cisco、Juniper、Huawei等)有成熟的底层系统,IETF有成熟的各种协议,看起来一切很完美。但是凡事都有两面性,传统的网络设备价格相对昂贵,在交互各自的信息以及计算时消耗了大量的网络与计算资源。

这时候我们的一位主角出厂了,先看一下经典的一张SDN架构图:

SDN是一种架构,分为了3个层面:


数据中心的发展以及SDN、Vxlan简介



1.转发层:上图的基础设施层,提供数据的转发,原来的控制层面单独分离出去,仅需要一些基础功能的“傻瓜”白牌交换机;

2.控制层:狭义的来讲就是SDN控制器,既然转发层只做单纯的数据转发,那么原本的控制数据,就由本层通过南向的协议(OF,OLD,ONOS等)下发一条条的流标来“告诉”如何去处理数据,利用netconf,ovsdb等对南向设备下发配置;另外对北向提供API接口,利用可编程、可视化等简化操作提高自动化能力;

3.应用层:利用可编程的应用和平台对控制器进行控制调度。比如openstack的云OS去基于用户自动下发需求,由SDN控制器完成相关调度;

以上可以说是实验室理论,也可以说是狭义的SDN概念,优势显而易见:可编程可视化、控制层面分离使SDN控制器站在上帝视角控制全场、网络设备的功能瘦身大量节约资金的投入。但是近些年来,网络一直是硬件厂商的天下,基础设施的白牌话,严重影响了厂商的利益,所以狭义的SDN举步维艰。既然如此那近几年为何SDN为何忽然“火”起来?一切要从SDN的主战场数据中心说起:

简述数据中心发展史:

一切技术都是顺应需求推动在发展

一、最初的数据中心,多以提供www的业务为主,这决定了传统三层的南北向为主的IDC设计,我们简单看一下:


数据中心的发展以及SDN、Vxlan简介



Access接入层:一般为ToR交换机,提供物理服务器的接入,是面向计算存储资源的第一层;

Aggregation汇聚层:对接入层交换机进行数据汇聚,基于vlan隔离广播域,实现L2/L3的转换,并提供service服务如LB,FW等;

Core核心层:提供跨汇聚及北向出口的高速的L3的转发;

顺便说一下在传统IDC中,南北向流量可以理解为用户基于互联网访问到数据中心的,或者数据中心通过Core访问到互联网的流量;东西向流量指的是数据中心内部,跨越Core/Agg/Acess的内部流量。

三层结构最显著的点是:接入层的L2的流量会在汇聚层终结,接入与汇聚间通过堆叠或者vPC等基于避免环路和STP;汇聚层继而通过L3+ECMP在汇聚和核心层间高速转发;跨越汇聚的东西向流量需要经过L2-L3-L3-L2如此传输;

二、传统大二层架构。还是那句一切技术都应顺应需求,云计算和虚拟化的发展,使得数据中心的主要流量演变成成东西向,各业务和服务要基于大的二层环境来设计部署,传统的三层架构演变成下图的传统大二层:


数据中心的发展以及SDN、Vxlan简介


该架构Core作为L2/L3的终结,内部的vlan网关、北向的出口全部由Core来承担,所有东西向流量无需跨越L3的传输,汇聚层的作用极大的削弱,也为后面的Clos架构做了铺垫。这种设计解决了东西向流量为主的IDC环境的需求,但也存在一些弊端:

1.次优路径最为显著,在跨越网段的数据传输过程中,无论server是否在同一Access甚至Aggregation交换机下,都需要穿越Core,造成大量的带宽浪费和数据时延如下图:


数据中心的发展以及SDN、Vxlan简介



2.随着虚拟机的大规模部署,ARP表会爆炸式增长,对Core交换机性能产生很大的冲击;

3.公有云和多租户使传统的4096个vlan不足以支撑。

三、Clos,Fat-tree架构,Clos是一种fabric的架构,提供了高速无阻尼的传输,具体的设计原理不做赘述,具体的模型就是现在数据中心的Spine-Leaf架构。


数据中心的发展以及SDN、Vxlan简介




1.Spine层处于核心层面,与Leaf节点三层互联,并通过IGP实现ECMP,在上图Cisco的架构中,数据的南北向通过BorderLeaf内的Router与互联网互联,Huawei的Leaf-Spine的架构中,serviceleaf(FW,LB等)及borderleaf(Router)的很多功能是直连到Spine上实现;

2.Spine 与服务器直连,并且负责L2/L3的终结。

3.Spine、Leaf可以在不改变现有架构的基础上横向扩展,如果规模继续扩大,也可以纵向做5跳的更深一层面的Spine扩展。

稳定性,扩展性已经得已解决,但是L2/L3的终结依然在Leaf,数据中心跨越机柜或者说Leaf的二层扩展,就要用到我们的overlay技术。

Trill、FabricPath、Qfabrci等等MacinMac的二层技术被提出,例如Trill是基于Spine-Leaf underlay的isis的tlv来传递二层流量。所有的underlay设备被称为RB,外层以太网的DA/SA为Egress/IngressRB的Mac地址,只转发时逐条修改,由isis提供控制层面和ECM。我们所需的“大二层”实现了,不过要求所有的underlay设备支持,并且vlan的数量并没有得以解决。

与此同时,以VMware为代表的虚拟化软件厂商,围绕overlay技术打造基于软件的tunnel技术,以实现“跨越”物理交换机的大二层技术。并有IETF制定了NVo3的相关标准,其中Vxlan,NvGre,STT都是基于该标准制定的大二层技术。

NvGre是微软提出的,在Hyper-V中的MacinGre的技术,STT是由大名鼎鼎的Nicira(SDN的奠基者STT,Ovs,openstack Neatron的研发公司),另外就是现在基本一统天下的VMware和Arista联合提出的Vxlan。

下图我们简单分析一下Vxlan的封装格式:


数据中心的发展以及SDN、Vxlan简介



在硬件的Vtep中,一般是由Leaf交换机在原始的数据报文前封装Udp及Vxlan报头,是一种MacinUDP的overlay技术。

UDP报头的目的端口默认为4789,源端口基于内层以太网的帧头hash得出,用来做ECMP;

Vxlan报头中的VNI类似我们Vlan的vid,24bit所以最大支持1600W个Vxlan;

在我们看一下Vxlan的数据传输过程前,首先了解几个vxlan的关键概念:

NVE:网络虚拟边缘节点NVE,实现网络虚拟化功能的网络实体。报文经过NVE封装转换后,NVE间就可基于三层基础网络建立二层虚拟化网络。

VTEP: VTEP是VXLAN隧道端点,封装在NVE中,用于VXLAN报文的封装和解封装。VTEP与物理网络相连,分配有物理网络的IP地址,该地址与虚拟网络无关。VXLAN报文中源IP地址为本节点的VTEP地址,VXLAN报文中目的IP地址为对端节点的VTEP地址,一对VTEP地址就对应着一个VXLAN隧道。

Gataway:和VLAN类似,不同VNI之间的VXLAN,及VXLAN和非VXLAN之间不能直接相互通信。为了使VXLAN之间,以及VXLAN和非VXLAN之间能够进行通信,VXLAN引入了VXLAN网关。

VXLAN网关分为:

  • 二层网关:用于解决租户接入VXLAN虚拟网络的问题,也可用于同一VXLAN虚拟网络的子网通信。
  • 三层网关:用于VXLAN虚拟网络的跨子网通信以及外部网络的访问。

根据三层网关部署方式的不同,VXLAN三层网关又可以分为集中式网关和分布式网关。我们先看集中式网关的传输过程:


数据中心的发展以及SDN、Vxlan简介


Server1的数据帧到达Leaf1(VTEP),剥离原有的VID,封装Vxlan报头及VNI,如果目的IP是Server2,同一网段,基于Flood在相同VNI下泛洪,最终至Server2;如果目的IP为不同网段,则数据传输为:Leaf1 Vxlan封装,至网关Spine节点,Spine的Vxlan三层网关查找路由,发送至10.20.1.X所在的VNI的网络,然后在10.20.1.X的网络内泛洪,最终发送至Server3。

集中式网关的优势:部署简单,所有的网关均在spine节点,Leaf只需要对数据报文进行封装,无需进行路由。

缺点:1.因为所有网关在Spine存在单点故障,可以用多活网关来优化;

2.性能瓶颈,每个Spine节点最多不超过4K的Vxlan网关,可以通过多组来优化;

3.此优路径,哪怕同网段的互访,也要经过Spine节点;

我们再来研究一下分布式网关:


数据中心的发展以及SDN、Vxlan简介



由Leaf节点来充当Vxlan的三层网关,数据封装和传输过程类似。不过同样存在一个问题,既然三层网关在Leaf节点,那么三层功能就要由Leaf来承担,例如上图,Leaf1节点下,无10.20.1.X的虚拟机,但是为了能访问该网段,也需要创建该网段的Vxlan网关,随着Leaf的不断增加这变得不切实际。

并且Vxlan是数据层面的协议,所有的BUM(Broadcast,位置Unicast,Multicast)传输需要基于Flood(Cisco是基于组播)传输,这造成了大量的带宽和性能浪费,这是需要一个控制层面的协议来传递二层的ARP信息。

EVPN完美的解决了这个问题,EVPN(EthernetVirtual Private Network)是一种用于二层网络互联的VPN技术。EVPN技术采用类似于BGP/MPLS IP VPN的机制,在BGP协议的基础上定义了一种新的NLRI(Network Layer Reachability Information,网络层可达信息)即EVPN NLRI,EVPN NLRI定义了几种新的BGP EVPN路由类型,用于处在二层网络的不同站点之间的MAC地址学习和发布。

原有的VXLAN实现方案没有控制平面,是通过数据平面的流量泛洪进行VTEP发现和主机信息(包括IP地址、MAC地址、VNI、网关VTEP IP地址)学习的,这种方式导致数据中心网络存在很多泛洪流量。为了解决这一问题,VXLAN引入了EVPN作为控制平面,通过在VTEP之间交换BGP EVPN路由实现VTEP的自动发现、主机信息相互通告等特性,从而避免了不必要的数据流量泛洪。

综上所述,EVPN通过扩展BGP协议新定义了几种BGP EVPN路由,这些BGP EVPN路由可以用于传递VTEP地址和主机信息,因此EVPN应用于VXLAN网络中,可以使VTEP发现和主机信息学习从数据平面转移到控制平面。

EVPN确实足够优秀,但毕竟是单独设备计算和传输二层的信息,如果有一个集中的管理者能够收集到所有设备的上线信息,并且能基于这些信息,自动的帮我们搭建和拆除Vxlan隧道,并且能基于用户的可视化环境直观的规划网络环境,正好SDN契合了我们的需求。

SDN能够向北提供API给openstack的Neatrol并开放可编程接口,南向方面不再必须要求白盒交换机,网络厂商也作出让步提供支持ODL、ONF等协议支持的物理交换机,如Cisco的Nexus9K,HuaweiCE等。通过SNMPv3去自动发现网络设备,Netconf下发配置,流标去控制转发,并且所有的一切控制层面仅仅发生在overlay层面。

另外公有云和私有云的发展,更是推动了云网一体化,用户仅仅在Portal页面选取所需的计算、网络、存储资源,一切要更敏捷更自动,SDN丰富的北向接口完全契合了用户的需求。

目前Segment routing的流量工程的发展,也极大的推动了SDN的发展,以往的TE是基于mpls,很难做到基于链路的实际状态来选择最优的路径,只能到达一个个的点,才能决定下一跳的传输。SDN正是站在了控制层面的上帝视角,为SR下发全局的标签,最高效最正确的引导流量工程。

以上结合数据中心的发展,以及不同阶段的需求简单分享了我对SDN和Vxlan的理解,如有不妥,还请提出交流。


分享到:


相關文章: