All Programmable SDN 交换机加速网络功能虚拟化
时间:09-07
来源:互联网
点击:
用于 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 倍。
要加强可编程性同时还要大幅提高性能,很多公司都在研究一种能将现有 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 倍。
赛灵思 FPGA 自动化 Linux Marvell SoC Altera Xilinx LTE 相关文章:
- 赛灵思为以太网AVB网络流媒体传输推出高服务质量连接解决方案(01-12)
- 赛灵思扩大生态系统,重塑嵌入式视觉、工业物联网系统设计的未来(04-24)
- 基于赛灵思FPGA的数字频域干扰抵消器(11-23)
- 基于Virtex-5的串行传输系统设计与验证(12-24)
- 利用串行RapidIO交换机设计模块化无线基础系统(03-12)
- 一种可编程ExpressCard解决方案(07-15)