43

中国银联:开放交换机组网技术和前沿进展

 4 years ago
source link: https://www.sdnlab.com/23251.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在第三届未来网络发展大会SDN/NFV技术与应用创新分论坛上中国银联电子商务与电子支付特别研究员周雍恺先生,发表了主题为《开放交换机组网技术和前沿进展》演讲。

05yinglian668.jpg

本次演讲内容主要有三大部分的内容,第一部分是开放交换机前沿进展,内容涉及SwitchOS的系统和可编程。第二部分主要介绍组网尤其是云原生中心的数据组网。第三个部分是金融业对开放交换机做一些研究以及验证。本文对第一、二部分内容做了整理。

网络技术的堆栈

周雍恺先生谈到了网络技术的堆栈,网络技术堆栈可以分成控制平面和技术平面,在控制平面有比较熟悉的Neutron接口,还有K8S接口。对于开源控制器比较有名的是ODL和ONOS,南向接口最出名的是OpenFlow,还有P4,当然传统厂商可能更倾向于BGP和OPFLEX接口。

05yinglian01.png

再看数据平面,数据平面可以分成交换机操作系统、硬件抽象层和交换芯片。上图中左侧下方红色字表示的是交换机操作系统,开源的系统包括SONiC、FBOSS等。对硬件抽象层,现在发展比较好的是SONiC的SAI层。交换芯片目前正在向可编程的方向发展。网络的开放应该还是大势所趋,开源软件(红色的部分)能够实现对网络堆栈全站的覆盖,标准硬件和开源软件构成的开放交换机生态也逐渐形成。

开放交换机的技术特征可分为三个部分。第一个是小交换机可以组大网,即相对于原来框式比较复杂的大交换机,现在用标准的小盒子也能够扩展出一张非常大的网络。第二个是标准硬件加上开放控制,在整个的硬件体系上,怎么样能够构建更加可控性的一个交换机操作系统,更加精简化的操作活动。第三是芯片的可编程,对于SDN来说芯片可编程才是真正的SDN,因为它已经把可编程的平面下沉到了流水线的层次。接下来进行详细介绍。

05yinglian02.png

小交换机组大网

在谈小交换机组大网之前,先介绍一下框式和盒式交换的差别,框式交换机可以通过小交换机进行模拟,用小交换机模拟它的好处有几下几点:1)白盒小交换机比较便宜,可节约成本。2)架构可扩展,因为框式交换机一旦被设计出来,它的整个数量就完全确定了。3)小交换机还可以多路径分担负载,4)提升可控性,但可管理性的难度也会逐渐增加。下图用于比较用框式和盒式堆三层网络,对于框式交换机如果只是组几千个节点,一台框式交换机就可以搞定了,但是如果是几万个节点,就需要框式堆框式,每一个框里面也有好几个芯片,一路算下来,从一个点到另外一个点要经过11跳,而盒式交换机组成三层网络只需要5跳,所以在时延和跳数上是肯定有精简的。

05yinglian03.png

现在盒式交换机单芯片的端口密度已经足够大了,最高的12.8T(有128个100G的端口)都已经出来了,所以三层的CLOS组网可能是一个很大的网。两级组网最大可以组到十万台的数据规模,这对服务器来说已经够用了,因为再往上电力就可能跟不上。三级组网的CLOS的组网数量取决于中间层交换机的端口密度。

05yinglian04.png

在2013年和2014年期间FaceBook F16发布了一个经典的组网F4,该组网有48个交换机,1000台服务器。CLOS结构可扩展到数十万台服务器规模的数据中心,在任意两个节点之间都有2×4×4=32条冗余路径。当然这个是以前的方式,现在已经是改成了16+100G的互联,如果有六栋楼的话,这种互联方式可以把六栋楼的交换机连起来。

05yinglian05.png

网络的开放控制

在这一部分中,周雍恺先生首先谈到了路由控制,路由控制分两种传统的路由控制和SDN路由控制。对于传统的路由控制,周雍恺先生用开源网络操作系统SONiC和Stratum进行了比较。

05yinglian06.png

SONiC

对于SONiC来说,下图是一个简单的架构图,比较核心的是SAI层,这一层目前比较重要可能是因为它的生态发展比较好,因为它下面支持的芯片非常多。用户既可以用Switch P4这样纯可编程的芯片来支持SAI,也可以通过博通的芯片来实现SAI的接口,最终映射到下面的Chip Target。

05yinglian07.png

05yinglian08.png

开放交换机创新的技术中不得不提一下堆叠,通常情况下,服务器为了保证高可用性,一般是双连到两台交换机上,如果有一个交换机挂了,另外一条交换机可以接上。上图中可以看到TOR1和TOR2之间有两条线,这两条线的作用是同步MAC、ARP等状态。为了达到高可用性,最极端的做法是把两台交换机虚拟成一台控制平面,当用户登上TOR1和TOR2时会发现它们的管理地址是一模一样的,这个虚拟程度是很高,但是额外复杂度、不稳定性也增加了。

但是要感谢阿里,阿里提出了比较创新的去堆叠的技术VPC-lite技术,他们的想法是把ARP下发到两条链上,这样TOR1和TOR2就不用同步ARP表了。这种方式其实和原来的功能是一样的,但原来的堆叠线没有了,实践方面也要简单很多。

SONiC现在已经成为OCP的一大招牌,因为OCP基本上是以硬件为主,对于软件方面,现在主推SONiC,也是目前生态最成熟的一个开放交换机操作系统,这套操作系统是微软的华人工程师创建的,而且该系统整体的设计非常前卫,它里面很多组件的模块性都比较好。在采用方面,微软和领英也在用。中国对SONiC的贡献非常大,由阿里牵头的ODCC项目组专门成立了一个凤凰项目,该负责SONiC在中国的推广。阿里是SONiC生产应用最早的也是规模比较大的企业。腾讯、百度包括京东也正在开展密集的验证测试,而且不久也会正式生产上线。

05yinglian09.png

Stratum

SONiC和相比,Stratum就更前卫了,它是以IT的方式来管理整个CT。它还是比较有意思的,整个设计最顶层是远端的控制器,接口端主要分成三类,一个是P4ruetime,然后就是gOMI和gNOI,这三种接口使得整个下发策略的效率比较快。下图是整个的Stratum的设计。但是Stratum很多代码都是适配博通的代码,所以它需要把P4语言做很多转换,转换成博通的SDKLE。

05yinglian10.png

单独的Stratum是没有办法进行组网独立工作的,在上层它需要ONOS配合,下层是通过Trellis组件提供Fabric SDN的控制。这个系统就是纯SDN路由,所以一旦链路端掉线,系统很快就会响应。

05yinglian11.png

Stratum最早是由谷歌开源的,所以谷歌在内部肯定已经用了Stratum,但是谷歌的控制器不是ONOS。国内在去年12月份左右,腾讯举办了一个Developer Day,同时 UCloud、阿里、锐捷都在积极跟进或者密切关注。

05yinglian12.png

RDMA

在网络的开放控制中SDN解决的是路由控制的问题,而RDMA要解决的是流量控制。要解决什么样的流量呢?首先看下图,如果是点对点两两互打的话,这个对交换机来说并没有什么太大的压力,每两点产生的流量再大,基本上交换芯片都可以处理过来。但是如果碰到多打一的情况,交换机芯片再强大也处理不了。对这种情况只能从源端进行解决,把原来的大流量变成原来的三分之一,出口那边才可能承住如此多的流量。在源端分流最原始的方法是从TCP的端侧流控,但这样有一个缺点,速度比较慢,有可能那边反馈过来的时候在交换机里已经产生丢包了。于是RDMA诞生了,RDMA其实就是端到端的全程流控,整个网络都可以参与流量拥塞的反压。这种多打一的情况经常出现在大数据训练场景下。

另外对于25G和100G网络这种情况也非常突出,因为25G和100G网络速度太快了,它的交换机的缓存撑不了很长时间,一旦有挤压,交换机就会迅速溢出,所以RDMA技术基本上会运用在25G、100G网络中。

05yinglian13.png

下图是RDMA的技术实现,首先在网络侧需要优化配置PFC和ECN等参数,整个RDMA最难的就是这些参数该怎么配。智能网卡侧实现数据远程搬运,降低CPU的流控负担。原来TCP协议站也要重新改写。RDMA最终的目标有三点,高吞吐、低时延和不丢包。

05yinglian14.png

RDMA最早应用于科学计算方面,是一套比较封闭,而且价格比较昂贵技术。在以太网中,RDMA主要应用于Cloud、Storage和 Network里面大吞吐量,低时延的场景。目前,RDMA已经广泛使用,主要还是BAT里面的应用,最近阿里宣称他自己建成了全球最大的一个RDMA的网络,主要用于为AI训练任务和分布式存储。其他的互联网公司用例也比较多,这里特别要说到的就是微软,他是最早把RDMA运用到这个场景中的。华为也推出了比较重要的产品。迈络思为RDMA贡献也很大,它是InfiniBand与RDMA技术的主要发明者。在金融行业,招商和浦发已经有生产应用和深度验证,银联也在验证。

05yinglian15.png

05yinglian16.png
05yinglian17.png

可编程芯片

对于Switch来说,它最基本的就是要实现A点到B点两个端口数据包的快速交换处理加转发。对于Programmble来说,最简单的就是对于任何芯片都可以实现可编程,比如CPU可以编程,网络处理器NP也可以编程。交换机芯片最主要的要求是全限速转发,现在最大的总交换容量已经达到了12.8T,单端口100G和400G也出来了,所以交换机速度越来越快。可编程芯片有三个特点,首先它肯定是ASIC,第二要实现可编程的前提是性能不降级,第三要有特定的编程模型。

05yinglian18.png

在编程模型方面,就拿P4来说,它原来是固定的流水线,然后升级为PISA协议无关的架构流水线。下图是P4的一个流水线,从图中可以看到每一级都是长的一模一样的,中间是一个TM用来连接入流水线和出流水线。它的核心仍然是高速交换、处理相关的数据,多了灵活匹配和灵活编辑,小容量的高速存储和查找功能。使用P4语言,用户可以自定义报文头、自定义表项,然后还可以通过控制流把它串起来。当然也有几点匹配不了,比如URL的匹配实现不了,还有新的Hash算法实现不了,还有做大容量的存储不可以在交换芯片上实现。

05yinglian19.png

从体系架构的视角来看,更高性能始终是体系架构永恒的追求。从最早的单核再到多核,后来发现摩尔定律也不一定行了,于是各种芯片(GPU、TPU和FPGA)出来了。对于P4的芯片来说,它多用于多节点分布式的协作,像原来的两两单播可以变成组播加速。

05yinglian20.png

整个P4应用场景差不多可以写成四个虚拟的P4程序,第一个Telemetry是INT的功能,这个是当时P4的主打功能,还是很惊艳的。其次是NFV,然后是Cluster,它可以实现可编程SW+服务器集群的架构。最后一个是Fabric的P4,它可以做到服务和通信的卸载。

05yinglian21.png

上述内容是周雍恺先生第一部分内容。下面介绍第二部分云原生时代的开放交换机组网

从2015年开始容器化、微服务等等就开始火了,随之云原生一词也渐渐传入大家耳中。云原生的目标是“业务”极速上线,这是整个的数据中心未来的一个发展方向。数据中心最早使用的是资源池化(Iaas的编排系统),对网络存储资源进行统一的管理。但是对于从应用的构建、部署的方式、弹性伸缩和高可用保障方面它并没有本质性的改变,所以当时很多大佬们就提出来了云原生的概念,就是说明原来的应用其实并不是原生的,所以说现在提出的Paas服务化的理念是什么呢?就是整个系统的能力都是下沉到平台级层面,应用主要关注逻辑,不再需要关注弹性和高可用。

05yinglian22.png

从七层网络架构来看云原生网络对组网的要求,周雍恺先生介绍了CNI接口和ServiceMesh(服务网格)。CNI接口是基础的二三层网络联通,它的接口非常简单,就是下图中列举的四个方法,主要就是要实现一个PC的网络。四到七层高级网络功能通过ServiceMesh(服务网格)实现,其中四到七层中的云原生更加强调以服务为中心的想法,就是把原来的实例IP给弱化了,更加关注服务的IP,其实就是一个虚IP或者是EIP。四到七层的网络还提供安全可靠灵活高效的服务间通信。

05yinglian23.png

周雍恺先生还举了一个Istio服务网格的例子,Istio服务网格在K8S里面怎么运行呢?主要是通过Iptables进行服务间负载均衡,Istio就是在POD里面加入了一个sidecar容器,下图是整个Istio的控制平面,它的控制平面和前面的Stratum有点像,都有配置策略下发和搜集网络数据部分。整个Istio周围还有非常丰富的组件可以构成一个完整的闭环,还可以做分布式调用追踪,所以功能非常强大。

05yinglian24.png

开放交换机的生态已经成型了,相关技术还是有非常大的创新活力。云原生将成为未来DC网络的重要驱动力。整个开放交换机市场成熟度还需要进一步打磨,企业用户有义务积极试用,创新更多的应用场景。

以上内容是周雍恺先生演讲的内容,部分内容有删减。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK