《云数据中心网络与SDN:技术架构与实现》——3.3 关键技术

举报
华章计算机 发表于 2019/06/06 14:40:45 2019/06/06
【摘要】 本书摘自《云数据中心网络与SDN: 技术架构与实现》——书中第3章,第3.3.1节,作者是张晨。

3.3 关键技术

本节将对SDDCN的关键技术,包括网络边缘、网络核心、服务链、可视化、安全和高可用进行概要性的介绍。这些关键技术并不是独立的,彼此之间会有很多的交叉,希望读者能够将它们结合起来进行理解。

3.3.1 网络边缘

网络边缘把控着流量的入口,负责在流量开始传输前对其进行一些预处理。相比传统的数据中心,云数据中心的负载形态和流量特征都发生了深刻的变革,而传统网络中接入层的设计,从各个方面来看都难以满足新的要求,对于网络边缘的改造势在必行。

传统数据的中心里,主要工作负载为服务器,与Internet互通的南北向流量占主导地位,因此通常采用3-Tier的Hierarchy网络设计。接入层是网络的边缘,服务器直接物理上联接入交换机,在接入的布线方式上通常采用EOR(End of Row)或者TOR(Top of Rack)。EOR方式中,接入交换机位于独立的网络机柜,服务器的接入需要经过长距离的走线,EOR的布线管理起来很复杂,但接入设备管理起来较为容易。TOR方式中,接入交换机位于各个服务器机柜的架顶,简化了服务器接入的布线,但是接入设备数量较多难以管理。除了转发以外,接入交换机主要的功能还包括VLAN标记、端口安全和QoS等。

1.虚拟交换机

云数据中心里,虚拟机代替服务器成为主要的工作负载,虚拟机间的东西向流量爆发,传统数据中心的层次化网络设计已经难以有效承载东西向流量,以Leaf-Spine模型为代表的扁平化设计开始流行。由于虚拟机网络的第一跳发生在服务器内部,因此vSwitch成为云数据中心网络边缘的核心技术。不过,在vSwitch中实现过多的网络功能会造成很多的开销,影响服务器中能够容纳虚拟机的数量,因此一些功能需要被卸载到vSwitch下一跳的物理交换机中。在Leaf-Spine的网络架构下,TOR取代EOR成为主要的布线方式,通常由vSwitch和TOR共同来完成网络边缘的接入工作。

随着SDN在云数据中心的广泛流行,vSwitch和TOR上能够执行的功能也变得更为灵活。OpenFlow的使用极大地拓展了ACL的语意,带来了更为多样的匹配条件和处理动作。VxLAN逐渐取代VLAN成为云数据中心网络虚拟化的主流技术,带来了更多的租户数量和不受物理限制的大二层。另一个常见的场景是,虚拟机经常会发生迁移,网络边缘的策略也需要随之进行自动地变更,如VLAN和QoS等,而SDN控制器上的全局视图也有助于实现策略跟随的自动化。此外,如果流量对于L4~L7层的服务有要求,那么在网络边缘上还要支持服务链功能。关于服务链,后面会有一个小节的内容对其进行单独的介绍。

vSwitch的代表性技术是由Nicira发起的,目前承接于Linux基金会的OpenvSwitch(OVS)。OVS同时支持各版本的OpenFlow和丰富的传统网络协议,以OVSDB作为OVS的管理协议基本上已经成为业界的事实标准。当然,要支持灵活的控制必然会带来的是实现的复杂性,因此OVS的虚拟转发通道在效率上是要低于传统的Linux Bridge的,不过随着OVS对于DPDK技术的深度整合,目前OVS在转发性能上也得到了长足的提升。OVS目前已经在各个领域得到了广泛的应用,大多数SDDCN解决方案在网络边缘都采用了OVS作为Hypervisor Switch,以获得对网络边缘的灵活控制能力。不过即使开启了DPDK,由OVS来实现VxLAN等隧道的封装/解封装,开销还是很大的,因此在对于吞吐量有要求的生产环境中,可以通过TOR来卸载隧道的封装/解封装。另外,SmartNIC也可以用于卸载vSwitch的部分功能,但目前仍不足够成熟。相比vSwitch-vSwtich VxLAN,TOR-to-TOR的VxLAN还有另外一个好处,那就是可以有效地减少VxLAN隧道的数量,降低Overlay的维护复杂度。对于一些其他的功能,则可以视情况在OVS和TOR间进行拆解,若使用TOR实现,性能要好一些,但是要考虑到TOR所支持的功能集合以及转发表容量。

2.基于Overlay+SDN的虚拟网络

SDN能够为VxLAN隧道的封装提供全局的视图,包括如何在VTEP间建立隧道、虚拟机的接入位置,VLAN ID和VNI的映射关系,等等。全局视图的来源有两种:一种是由OpenStack这种云管理平台直接将虚拟机的接入位置告知SDN控制器。这种方式下,SDN控制器通过Proactive方式将转发表预置在数据平面。另一种是SDN控制器不通过与CMS交互来学习虚拟机位置,而是当虚拟机上线时触发Hypervisor告知控制器,这种方式下SDN控制器只能通过Reactive的方式动态生成转发表。两种方式互有优缺点:Proactive方式中,流量到来时可以直接在数据平面本地完成匹配转发,控制信道的实时压力较小,但是这种方式会将很多不常用到的转发表推送下去,在使用TOR进行隧道处理时会造成硬件资源的浪费。Reactive方式中,首包会产生延迟或者被丢弃,而且控制信道的实时压力较大,但是数据平面上只会存在需要用到的转发表。实际情况中,有可能需要在两种方式间进行平衡。

SDN还有助于网络边缘对流量进行优化。二层流量的优化体现在对于BUM流量的处理上,借助于控制器中的全局视图,ARP Request得以在本地进行代理,一些情况下DHCP也可以由SDN控制器在本地直接处理。SDN(尤其是OpenFlow)的灵活性对网络的边界造成了极大的冲击,人们发现三层流量也不一定要通过物理路由器来处理了,任播思想的流行和分布式路由技术的发展,使得三层流量能够在vSwitch/TOR本地进行路由,这样不仅可以简化网络路径,还能够避免路由的单点故障。不过,分布式路由技术也可能导致其他的一些问题,比如网络边缘功能过于复杂、故障定位困难等。

通过SDN对流量进行优化时,使用OpenFlow可以获得相当的灵活性。由于VM间的通信仍然不得不依赖于大量的ARP,因此ARP泛洪的抑制是大多数控制器必须要解决的问题。使用标准的OpenFlow需要由控制器来代理回复ARP Reply,当网络规模比较大的时候,控制器处理ARP的压力会急剧增大,因此更好的方式是使用OpenFlow Nicira Extension将ARP Reply的内容预置在OVS中,由OVS本地在数据平面本地对ARP进行代理回复。DHCP同样依赖于广播,不过其数量远不如ARP频繁,因此大多数SDDCN方案中DHCP仍然通过广播交给DHCP服务器去处理。不过,OpenFlow控制器同样可以代理DHCP的回复,但是由于DCHP的构造是基于UDP之上的,因此OVS无法在数据平面本地处理DHCP,必须由控制器进行回复。分布式路由既可以完全由OpenFlow来实现,也可以使用OpenFlow结合vRouter来实现,不同的SDDCN解决方案的设计有所不同。目前业界更接受OpenFlow结合vRouter的实现方式,不过直接使用OpenFlow实现路由,整体性能一般来说会稍好一些。

3.虚拟网络与物理网络的对接

由于很多的原因(如数据库要跑在物理机上、P-V的工作负载迁移、物理防火墙的部署等),虚拟化环境需要对接物理环境实现二层互通,这个对接工作通常也需要由网络边缘来实现。二层的对接,需要vSwitch/TOR来作为L2 Gateway完成异构二层网络间的封装转换,同时L2 Gateway往往还需要运行MAC自学习和xSTP等传统二层网络的控制逻辑。由于二层的对接处会承载大量的东西向流量,因此需要为L2 Gateway设计有效的高可用机制。对接了二层后,仍需要考虑的一个问题是:该二层的IP Gateway是部署在虚拟环境中,还是物理环境中?这要根据企业实际的情况进行择优处理。值得读者注意的是,即使使用了SDN来解决L2的对接,仍然难以避免泛洪的使用,这是因为物理工作负载的MAC地址SDN控制器最初是不得而知的。

与外界的三层对接,需要在网关节点上(可以为ToR,也可以为服务器)运行传统的路由协议,如OSPF/BGP等。TOR通常能够支持这些协议的运行,而服务器中的vSwitch并不具备三层的功能,因此通常需要将vSwitch和协议栈做集成部署,或者将vSwitch直接替换成vRouter来完成路由的工作。SDN控制器在该场景下的功能一个是通过某种方式(一般是在控制器上运行OSPF和BGP)获取到协议栈/vRouter所学习到的外界路由,另一个是将外界路由和DC内部路由进行重分布。如果采用的是vSwitch + 协议栈的方案,由于协议栈只有控制平面,转发仍然要依赖于vSwitch的datapath,那么SDN控制器就需要向vSwitch下发流表进行转发。如果采用的是vRouter的方案,则不需要这么做,因为vRouter通常是转控一体的。另外,控制器也可以不依赖于网关节点上的协议栈/vRouter,而是直接与下一跳的物理路由器交互OSPF/BGP,然后通过合适的方式指导vSwitch/TOR进行转发的处理,不过这种做法并不太常见。

当使用分布式路由时,与外界的三层对接情况要复杂一些。通常情况下,分布式路由只处理东西向流量,南北向流量仍然需用集中地进行路由和NAT,此时控制器需要将外界的路由反射给各个Hypervisor,以完成南北向流量的引导。还有一种可能的部署,是将所有的服务器都与外界相连,南北向流量的处理也完全分布式地进行。这种部署的优点是消除了南北向流量的处理瓶颈,缺点是难以对流量进行安全的控制,而且会造成额外的布线成本。另外,实现SNAT时往往需要带状态,而OpenFlow/vSwitch目前还没有形成有效的规范去保证带状态处理的性能。

相比OpenFlow,EVPN使用传统的分布式思路解决了网络边缘的上述问题,同样支持VTEP自动发现、ARP抑制、分布式网关、虚拟机迁移等。EVPN多为传统的设备厂商所支持,其结合SDN的方式主要有两种:一种是在SDN控制器上运行BGP,作为RR反射Overlay的路由;另一种是控制器通过NETCONF或其他配置协议或接口,实现EVPN的自动化开通。混合部署EVPN和OpenFlow也是可行的,此时控制器需要完成两种控制方式间的路由重分布,在EVPN路由和OpenFlow流表间进行转换。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。