在本届NSDI的SDN and Network Design session,微软Azure数据中心负责Host SDN team的Daniel Firestone介绍了他们长达8年的Host SDN的项目经验,披露了核心系统——Virtual Filtering Platform (VFP) 【3】这样一个端系统上的可编程端虚拟交换机的设计和实现细节。VFP已经部署在超过一百万台的Azure服务器上,稳定的支持IaaS和PaaS的服务长达4年的时间。 第一阶段的VFP项目着重在可编程性上,允许不同用户能独立的编写网络策略而不相互影响,并且支持网络连接层面的状态化信息,还能够编写灵活的网络策略。 第二阶段的VFP项目则着重关注在可维护性和性能两个层面,一方面提供热部署的功能,另一方面在基于FPGA 实现的SmartNIC的支持下,通过Unified Flow Table设计和Hardware Offloads,使得VFP在保持最开始的灵活软件定义的特性下,能够高效的支持40Gbps和50Gbps的高速数据中心网络。进一步的,SmartNIC对每个服务器上运行着的虚拟机抽象出一块虚拟网卡,虚拟机通过SR-IOV技术即可直接访问这块虚拟网卡,使得虚拟机收发网络数据包都不需要CPU计算单元的参与,做到了CPU-bypass,既节省了CPU资源又降低了网络延迟,并且更具经济性。
在如今的Azure数据中心中,正如下图所示,每一台服务器上都插上了一块FPGA,部署在本机网卡与外部网路之间,并通过PCIe连接到服务器上,FPGA 之间通过 LTL (Lightweight Transport Layer) 通信,在微秒级别的时间内就可以到达数据中心内任何的FPGA,真正做到了低延迟高带宽。这样一种部署的方式和软硬件协同设计的方法让FPGA从CPU中接手网络功能并进一步加速了SDN,使得Host SDN得以在如今的高带宽数据中心网络中部署。软件定义网络以这样一种全新的方式与硬件相融合,兼具灵活性与高效性。
持续火爆的数据中心研究 数据中心的研究一直是NSDI上的焦点,很多的工作都围绕着数据中心的网络来展开。 负载均衡(Load balance)和拥塞控制(Congestion control)一直是数据中心网络中的经典问题。在14年的Sigcomm上,思科发表了CONGA,在如今看来仍然是state-of-art的congestion-aware load balance机制,在今年的NSDI上,他们又卷土重来,在文章Let it flow【4】中提出了一个非常简单的负载均衡方法,延续了他们在CONGA里面的思路:与其在每个数据包上做负载均衡,不如考虑在Flowlet的粒度上做。这里的Flowlet可以认为是以时间维度来切分的批量网络包。其简洁的新负载均衡算法,一言以蔽之,即只要随机的安排Flowlet到可用的网络路径上即可均衡流量。这种看似随机的做法其实却能非常好的感知网络拥堵,从而做到负载均衡。这一做法的深层次原因在于:在拥塞严重的路径上,Flowlet的大小会降低,而在通畅的路径上,Flowlet的大小会增长。这一机制(下图绿色) 比现有的很多流量均衡方法都有显著优势,而比起复杂的机制CONGA(下图红色),也只有10~20%的差别。
在另一个工作Flowtune【5】中,MIT的研究员则关注网络带宽分配的收敛速度问题。在数据中心网络中,网络管理者会事先基于不同的策略定义优化的目标,把网络的带宽迅速的分给当前的数据流。这个优化目标是事先定义好的,比如说可以是流之间公平性(Fairness)或者流完成时间(FCT)。传统的网络带宽分配这方面工作基本都是基于数据包(packet)这个粒度,收敛到目标状态所需要的时间相对较长。这篇文章提出按照Flowlet的粒度来分配网络带宽,每一个Flowlet都由一个中心化的控制器来决定发送速率。这里面关键的问题是如何快速计算出收敛到的最优速率,针对这一挑战,他们提出了一个新的Newton-Exact-Diagonal方法来解决这个问题,并且设计实现了一个在CPU上的多核并行可扩展的系统。 机器学习和网络系统 (责任编辑:本港台直播) |