技术中心
 
 

All Programmable SDN交换机加速网络功能虚拟化

   日期:2015-09-30    
核心提示:向网络功能虚拟化(NFV)和软件定义网络(SDN)的转变代表了近20年来最具变革性的架构网络发展趋势。由于NFV和SDN承诺系统开放性和网络中立性,因此有望给未来的通信网络和业务的成形造成深远影响。

基于赛灵思FPGA的可编程COTS NIC可将NFV软件应用性能提升50倍。

向网络功能虚拟化(NFV)和软件定义网络(SDN)的转变代表了近20年来最具变革性的架构网络发展趋势。由于NFV和SDN承诺系统开放性和网络中立性,因此有望给未来的通信网络和业务的成形造成深远影响。

硬件和NFV/SDN变革遍地开花

过去几十年间的网络基础架构业务在很大程度上可谓是大型机业务模式的延续,在这种模式下,屈指可数的几家大型公司提供专有局端基础设备,而这些设备又运行专有的软件,这样构建的全部意图都是为了不与竞争对手的系统进行通信。在大多数情况下,基础架构厂商为其客户的每个网络节点都创建定制硬件,并将每个节点都构建成最低可编程性和可升级性节点,以确保那些希望对网络进行扩展或升级的客户会从同一厂商旗下购买下一代设备;或者让客户完全无法选择从其他公司购买全新网络,最终只能重蹈覆辙。

在过去五年中,来自运营商、学术机构以及厂商的新贵一直在呼吁,即通过最大化硬件与软件的可编程性来过渡到无处不在的硬件、网络中立、开放系统以及软件兼容性。NFV和SDN是这一发展趋势的先锋,为这一不断成长且一定会成功的革命高举旗帜。

凭借NFV,公司可通过软件在商用的通用硬件平台上运行各种网络功能,这与在昂贵的定制专有硬件上运行每项特定网络任务截然不同。将这些无处不在的开放式平台的可编程性最大化,使公司能够在数据中心甚至更小的网络节点中运行众多之前由特定硬件设备执行的任务。NFV允许运营商根据需要只将给定服务的新网络软件上传到商用硬件资源,从而可以进一步减少创建新的网络服务所需的时间。运营商因此可以轻松扩展网络并为其公司选择同类最佳功能,而不用被迫购买和使用软件灵活性有限的新型专有硬件。

NFV是有效的,因为网络中的很多节点都具有一般性的功能要求。具备一般性要求的节点包括交换机和路由器、数百万流分类、访问控制列表(ACL)、状态流感知、深度数据包检测 (DPI)、隧道网关、流量分析、性能监控、分段、安全性、虚拟路由器和交换机。但NFV自身也面临诸多挑战。预计因特网和数据中心流量在未来几年内将呈指数级增长,因此网络局端基础设备必须能够应对流量的巨大增长。仅依靠软件可编程性并不足以使通用硬件能够随着带宽需求的增长而进行轻松扩展。无处不在的硬件需经过重新编程来优化总体系统性能。这允许厂商和运营商以“更智能,而不是更辛苦的工作”方式来利用NFV和SDV,从满足运营商的最终客户(即消费者)不断提高的网络要求。真正的软/硬件可编程基础架构才是真正实现NFV和SDN的愿景的唯一方式。

SDN同时在物理与虚拟设备中的网络控制层与底层数据转发层之间使用基于标准的软件抽象,这消除了传统分布式网络基础架构复杂且静态的本质,是一种现代的联网方法。在过去五年中,行业制定了一项标准数据层抽象协议OpenFlow,其提供的新颖实用方法可以借助基于集中软件的控制器来配置网络架构。

具有集中软件配置的开放式SDN平台通过可编程性和自动化显著提升了网络敏捷性,同时大幅降低了网络运营成本。OpenFlow等业界标准数据层抽象协议使提供商可以自由使用任何类型和品牌的数据层设备,因为所有底层网络硬件均可通过一种通用抽象协议来进行寻址。重要的是,OpenFlow便于使用“裸机交换机”,同时避免传统厂商的套牢,使运营商同样能够自由选择目前可在IT基础设施的其他领域(如服务器)中轻松找到的网络。

由于SDN还处于起步阶段,因此标准仍在不断演进。这意味着设备厂商和运营商需要防范风险,并利用FPGA的硬件及软件的可编程性,以最大的灵活性对SDN设备进行设计和操作。目前上市的基于FPGA的SDN设备即使对于大规模部署也相当实惠。基于FPGA的SDN设备具有高度的高硬件与软件灵活性并且尽可能符合OpenFlow协议要求。

性能加速需求

或许,对NFV和SDN而言,要超越开放性最关键的要求就是高性能。尽管NFV硬件看起来比专有系统更便宜,但NFV架构需要保持极富竞争力的大数据量,满足下一代网络的复杂处理要求并不断提升能效。

实际上,NFV基础设施小组规范(Infrastructure Group Specification)包含一个特殊部分,其描述了对加速功能的需求,以提升网络性能。此规范描述了处理器组件如何将某些功能转移到网卡 (NIC) 以支持某些加速功能,包括TCP分段、互联网协议(IP)分片、DPI、数百万条目的过滤、加密、性能监控/计数、协议互通与OAM以及其他加速功能。

驱动这种加速的主要引擎是NIC,其配备了物理以太网接口,供服务器连接到网络。如图1中所示,当某个数据包通过10GE、40GE或100GE端口到达NIC时,根据标签信息(如IP、MAC或VLAN)将数据包放置在虚拟端口 (VP) 或代表特定虚拟机(VM)的队列中。随后位于服务器上的合适的虚拟机直接对数据包进行DMA访问以进行处理。每个虚拟网络功能(VNF)都在不同虚拟机上运行,并且某些网络功能需要使用多个甚至数十个虚拟机。

OpenFlow控制硬件加速功能,比如NIC上的硬件加速功能可以视为是SDN交换机的扩展。可在多个虚拟机和/或内核上通过部署多个VNF来为众多功能处理NFV性能。这为NFV带来了两大性能挑战。第一项挑战在于“vSwitch”,这通常是一个软件,用来处理以太网NIC与虚拟机之间的网络流量。第二项性能挑战在于均衡在多个VM之间输入的40/100GE数据。添加IP分片、TCP分段、加密或其他专用硬件功能时,NFV软件需要辅助以满足性能需求并降低功耗。理想情况下,其外形应该比较紧凑,以减少存放网络设备所需要的板级空间。

为处理NFV挑战和各种网络功能,用于NFV和SDN的NIC卡必须性能极高,而且尽可能灵活。多家芯片厂商都试图成为第一家上市NFV硬件的厂家,他们已经提议构建针对NIC卡的平台,它们各自都具有不同程度的可编程性。Intel目前是主要的NIC组件提供商,配有用于加速数据包处理的DPDK包。EZchip提供了运行Linux并可用C语言编程的NPS多线程CPU。Marvell为其Xelerated处理器提供了两个完整的数据层软件套件以用于城域以太网和统一光纤应用接入(Unified Fiber Access Application),这两个套件由运行在NPU上的应用程序包和运行在主机CPU上的控制层API组成。Cavium已经为其Octeon产品系列选择了更通用的软件开发套件。Broadcom、Intel和Marvel L2/L3交换机主要用于搜索和vSwitch负载转移。同时,Netronome的新款Flow-NIC配备了能在该公司的专用网络处理器硬件上运行的软件。

尽管所有这些产品都声称是开放式 NFV方法,但实则不然。所有这些方法都涉及到苛刻并且可以说是限制过多的硬件实现方案,这些实现方案仅具备软件可编程,并且在SoC或标准处理器方面再次依赖于苛刻且专有的硬件实现方案。

用于NFV性能加速的ALL PROGRAMMABLE ETHERNITY NIC

要加强可编程性同时还要大幅提高性能,很多公司都在研究一种能将现有CPU与FPGA结合使用的组合方法。在过去两年中,很多数据中心运营商(尤其是Microsoft公司)发布了论文来阐述他们通过混合架构所实现的性能大幅提升。Microsoft发布的名为“Catapult Project”的白皮书指出,在功耗仅增加了10%的情况下,性能提高了95%。Intel指出,在数据中心NIC中将FPGA与CPU组合所产生的效能是其花费167亿美元收购第二大FPGA厂商Altera公司的主要原因。

同样,CPU与FPGA组合方法也适用于在虚拟机上运行虚拟联网功能的NFV。在这种方法中,FPGA用作完全可编程NIC,经扩展可用来加速在服务器的CPU/VM上运行的虚拟网络功能。

但是完全基于FPGA的NIC卡是NFV的理想COTS硬件架构。多家FPGA固件厂商都可以提供固件,以提高在FPGA NIC上运行的NFV的性能。并且FPGA公司最近开发了C语言编译器技术(如赛灵思的SDAccel和SDSoC开发环境)以实现OpenCL和C++设计输入和编程加速,从而进一步向更多用户推广NFV设备设计。

为加速NFV性能,NFV解决方案提供商增加了VM的数量,目的是在多个VM上分配VNF。在操作多个VM时,出现了新的挑战,这与均衡虚拟机间的流量负载同时还要支持 IP分片有关。此外,在支持VM之间的交换以及VM与NIC之间的交换方面也存在挑战。纯软件vSwitch元件根本不具备足以解决这些挑战的性能。另外,还必须要保持VM的完整性,以便VM能够适当存储特定的突发数据包并且不会无序交付数据包。

Ethernity的ENET FPGA专用于解决NFV的性能问题,其配备了虚拟交换机/路由器实现方案,使系统能够根据L2、L3和L4标签来加速vSwitch交换数据的功能,同时保持为每个VM分配一个专用虚拟端口。如果某个特定VM不可用,ENET则可以将流量保存100ms之久;而一旦可用,ENET将通过DMA将数据传输给VM。我们的ENET安装了标准CFM数据包生成器和数据包分析器,可提供延迟测量功能,从而可以测量VM的可用性和运行健康状况,并且指示 ENET的状态负载均衡器(关于每个VM在负载分配方面的可用性)。数据包重新排序引擎可以在某些情况下保持帧的顺序,例如,如果某个数据包出现无序移动,这可能导致对一项功能使用多个VM。

图2描述了VM负载均衡ENET解决方案的方框图。

在图2中,分类模块执行L2、L3和L4字段的层级分类,以保持支持长时间活动TCP(telnet、FTP等不会立即关闭)的连接和流的路由。负载均衡器必须确保该连接上携带的多个数据包不会将负载均衡到其他可用的服务主机。ENET包括老化机制功能,以删除不活动的流。

在分类模块中,我们根据L2、L3和L4字段配置了均衡哈希算法。此算法包含分段,以便负载均衡器能够根据内部隧道 (inner tunnel) 信息(如VXLAN或NVGRE)来执行均衡,而IP分片连接则可以由特定连接/CPU来进行处理。对于VM到VM连接而言,分类器和搜索引擎会将会话转发到目标VM,而不是vSwitch软件。同时,分类器功能根据其路由器输出来为每个输入流分配报头操控规则,同时监控修改 IP地址或卸载协议。

对于每个新流,目标选择模块的负载均衡器根据加权循环调度算法(WRR)技术从可用的VM中分配目标地址。将根据从VM负载监控模块派生的信息来配置WRR。

分层流量管理器模块在可用的VM之间实现分层WRR,并为每个VM 保持一个输出虚拟端口,以根据优先级、VM和物理端口分成三个调度层级。CPU层级表示特定VM,同时优先级层级可能在服务于特定VM的不同服务/流之间分配加权。ENET通过操作外部DDR3,可以支持100ms的缓存以克服特定VM的瞬时负载。

VM负载监控使用ENET可编程数据包生成器和数据包分析器对电信级以太网服务进行监控,这符合Y.1731和802.1ag标准。VM负载监控模块维护有关每个CPU/VM可用性的信息,对VM使用以太网CFM延迟测量报文(DMM)协议生成之类的指标。通过对每个数据包加盖时间戳并测量发送与接收之间的时间差,此模块可以确定每个VM的可用性,并据此指示可用VM上的目标选择模块。

资源选择模块所确定的是从主机发送至用户的哪些传出流量将被分类并确定数据包的资源。ENET中的报头操控模块将执行网络地址转换(NAT)以将输入地址替换为正确的VM IP地址,从而使NIC能够将流、数据包或服务转发至正确的VM。对于输出流量,NAT将执行相反操作并将数据包连同其原始IP地址一并发送给用户。此外,报头操控模块还将执行隧道封装。此时,报头操纵模块将执行分类器通过分类所分配的操作规则,并将在CPU操作之间剥离隧道报头或其他报头。在相反方向,其将原始隧道附加到输出用户端口。

随着运营商网络用户数量的增加,流表(flow table)的大小可能快速增加从而超过标准服务器的缓存容量。对于当前OpenFlow系统尤为如此,因为当前OpenFlow系统需要40个不同字段、IPv6地址、多协议标签交换(MPLS)和提供商骨干网桥(PBB)。ENET搜索引擎和包解析器可以支持对多个字段进行分类并提供数百万个流,因而可以从软件设备中卸载分类和搜索功能。

最后,通过ENET数据包报头操控引擎,ENET可将卸载任何协议处理并为VM以及TCP分段或者各种协议之间的联网(包括用于虚拟EPC(vEPC)实现的3GPP、XVLAN、MPLS、PBB、NAT/PAT等)提供原始数据信息。

除了固件之外,Ethernity还开发了我们称之为ACE-NIC的NFV NIC(图3)。要创建NIC,我们将ENET SoC固件(已部署到电信级以太网网络中的数十万个系统中)部署到单个Xilinx Kintex®-7 FPGA中。我们还将五个分立组件的功能集成到同一个FPGA中。NIC和SR-IOV支持;网络处理(包括分类、负载均衡、数据包修改、交换、路由以及OAM);100ms缓冲;帧分段;加密。

ACE-NIC是一款支持OpenFlow的硬件加速NIC,并在COTS服务器中运行。ACE-NIC将vEPC和vCPE NFV平台的性能提升50倍,极大降低了与NFV平台相关的端对端时延。新的ACE-NIC配备了四个10GE端口以及专为基于Ethernity ENET流处理器的FPGA SoC设计的软件和硬件,支持PCIe Gen3。ACE-NIC还配备了与FPGA SoC连接的板载DDR3,支持100ms缓冲并可搜索一百万条目。

Ethernity ENET流处理器SoC平台使用具有专利、独有的基于流的处理引擎来处理大小可变的任何数据单元,提供多协议联网、流量管理、交换、路由、分段、时间戳和网络处理。此平台在Xilinx 28nm Kintex-7XC7K325T FPGA上支持高达80Gbps的速率,或在更大型FPGA上支持更高速率。

ACE-NIC附带基本功能,比如纳秒精度以内的按帧时间戳、数据包生成器、数据包分析器、100ms缓冲、帧过滤以及VM之间的负载平衡。为提供多个云设备,其还能够按虚拟机分配虚拟端口。

此外,ACE-NIC还带有NFV vEPC的专用加速功能。这些功能包括帧报头操纵和卸载、16K虚拟端口交换实现、可编程帧分段、QoS、计数器和计费信息,这些功能可以由面向vEPC的OpenFlow进行控制。通过其独特的软件及硬件设计,ACE-NIC将软件性能提高了50倍。

ALL PROGRAMMABLE ETHERNITY SDN交换机

同样,Ethernity在FPGA中集成ENET SoC固件以创建全ALL PROGRAMMABLE SDN交换机,并支持OpenFlow的1.4版本和全套电信级以太网交换机功能,从而加速白盒SDN交换机部署的上市进程。

ENET SoC电信级以太网交换机是符合MEF标准的L2、L3和L4交换机/路由器,可以在分布于超过128个物理通道的16,000个内部虚拟端口之间交换和路由五个级别数据包报头的帧。其支持FE、GbE和10GbE以太网端口以及四种级别的流量管理调度层级。由于ENET的内在架构支持分段帧,因此ENET可以通过零拷贝技术执行IP分片和功能重新排序,这样一来,分段与重组便不再需要专用的存储和转发。此外,ENET还具有集成的可编程数据包生成器和数据包分析器,可简化CFM/OAM操作。最终,ENET可以在3GPP、LTE、移动回程和宽带接入中运行。其支持多个协议之间的互通,这些只需要通过零拷贝操作,并且不需要重新路由帧来进行报头操控。

显然,通信行业正处在新时代的开端。我们确信可以看到NFV和SDN领域会有很多创新。NFV性能提升或SDN交换机的任何新兴解决方案必须能够支持新版SDN。随着Intel收购Altera以及寻求更高可编程性的硬件架构不断增多,我们确信处理器与FPGA的组合架构也会越来越多,同时还会有新的创新方式来实现NFV性能提升。

基于FPGA的NFV NIC加速可以基于通用处理器来提供NFV的灵活性,同时提供GPP无法维持的必要吞吐量,并且还要执行GPP无法支持的特定网络功能加速。通过在FPGA平台上有效组合SDN与NFV,我们可以设计出All Programmable网络设备,从而推动网络应用领域中全新的IP厂商生态系统创新。

 

图1 – 在数据包到达时,NIC进入代表特定虚拟机的虚拟端口 (VP)。数据包随后通过DMA发送到服务器上的合适的虚拟机以进行处理。

 

图2 - 这一高级方框图显示了虚拟机的负载均衡和交换机。

 

图3 – Xilinx Kintex FPGA位于Ethernity NFV网卡的中心。

 
标签: SDN FPGA 虚拟网络
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作
 
推荐图文
推荐技术
可能喜欢