首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

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

为处理 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 - 这一高级方框图显示了虚拟机的负载均衡和交换机。



在图 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 缓冲;帧分段;加密。



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




返回列表