基于FPGA的网络处理技术的性能和灵活性分析
扫描二维码
随时随地手机看文章
网络处理是指对在通信和网络设备中传送的数据包进行的处理,网络处理不仅出现在网络核心,还出现在MAN/LAN(图1)中。
网络处理可通过几类半导体器件实现,因而网络OEM能根据特定需求选择适当的器件组合。那么究竟由谁决定需求呢?这些需求是由通信运营商和互联网业务提供商(ISP)决定的。业务提供商要求网络设备的架构和增值功能不仅能为客户提供不同类型的业务,而且还能增加收入。业务提供商与商业用户签署了数百万美元的业务品质协议(SLA),以确保特定的业务类型和品质。因此业务提供商在开发构成网络设备的半导体器件中,为获得适当的特性和灵活性,需要投入大量资金。
揭开网络处理的面纱
网络处理最基本的概念是建立在预定义分类和规则上的网络数据包智能分组处理分析、流程和实现准则。需要注意的是,分类和规则必须可定制,以满足不同业务提供商的需求。本文将重点讨论线路卡。每个线路卡的入口和出口信道上均带有数据通路和控制通路,数据通路负责以线速率处理和传送分组数据而不产生较大的延迟,而控制通路则负责提供处理智能、强化规则、处理意外情况并监控统计数字。
图2显示了线路卡网络处理的核心功能,其中虚线包围的3个模块给出了主要的网络处理功能。尽管网络处理限制在线路卡以内,但也足以影响整个系统的架构。例如,某些路由器专用于一组独立的线路卡,以获取专项功能(如安全处理)。根据网络处理所需的设备,系统可以(或不必)需要这些线路卡。
选择适当的半导体器件
网络处理可采用多种半导体解决方案,但可广义地归为ASIC和可编程器件两类。那么这两类器件是如何实现网络系统设计的呢?应用于网络处理的ASIC和可编程器件的主要原理与任何其他应用并无区别。从高端角度看,ASIC可为固定功能提供较高性能,但灵活度很有限。虽然ASIC的流片费用(NRE)较高并且产品的上市时间较长,但其高产量还是颇具成本效益。
另一方面,可编程解决方案可提供较高的系统速率,包括复杂功能(特殊和异常处理)、灵活性和最短的产品上市时间。可编程器件无需流片费用,价格比相应的ASIC略为昂贵。因为可编程解决方案灵活度较高并可升级,因而具有比ASIC更长的产品寿命,由此降低了整体系统的成本。
尽管上面对ASIC和可编程解决方案进行了区分,但目前还没有能综合两种半导体优势并满足各种需求的完美解决方案。器件的最终选择取决于特定需求,首先考虑应用于网络处理的可编程解决方案。
1.可编程解决方案
可编程解决方案主要有两类:网络处理器(NPU)和FPGA,两者都是可编程的。NPU可提供以处理器为中心(即以软件为中心)的可编程特性,而FPGA则提供以硬件为中心的可编程特性。设计人员很快就能认识到以软件为中心的方法的性能将低于以硬件为中心的方法。理解网络处理和网络处理器之间的差异相当重要:网络处理是一种功能,而网络处理器则是一类可编程器件。
2.实现网络处理器
网络处理器最初被用于设计网络设备中的现成器件,这些器件在各方面提供灵活性和扩展性的同时,还提供了充分的性能。几家大型和小型半导体公司参与了竞争,并推出带有极高灵活性和超短产品上市时间的线速网络处理器。大多数NPU均带有多种编程特性经过优化的嵌入式RISCCPU以及适用于通用分组处理功能的类ASIC硬件电路(图3)。每个RISC引擎经过优化以执行特定任务。该思想有利于在硬件电路中处理常规层2/层3功能,而RISC引擎则处理复杂和特殊情形。当然,所需的任何定制均可委托给RISC引擎。NPU通常采用汇编/微代码,有时也采用定制的C语言实现可编程特性。
3.FPGA
FPGA是对数据进行高速并行处理的理想器件,具有极强的灵活性和扩展性。FPGA总是通过增添简单实用的网络设备,解决由NPU引发的问题并紧跟市场。例如,Virtex-IIProFPGA包含高性能的可编程架构、嵌入式PowerPC处理器和3.125Gbps收发器,从而成为网络处理的理想选择。FPGA是OEM跨接层2/层3不同传输流并实现高速功能(如安全协处理器)的最佳选择。通过增强网络特性,FPGA可提供高性能的数据和控制处理功能。但与NPU不同,FPGA不带有内置的网络处理功能,因而必须通过编程以进行网络处理。对于NPU,OEM必须开发汇编代码(或某种层次的C代码)以实现网络处理功能;而对于FPGA,OEM必须采用硬件描述语言(HDL)、具有知识产权的内核和C语言实现FPGA中的数据通路和控制通路。
可编程解决方案如何解决网络处理问题?
首先考虑那些能从可编程解决方案(NPU或FPGA)中获得巨大利益的特定网络处理功能。
1.深度分组处理
尽管层2和层3处理在ASIC中很容易实现,但为了在类似的传输流中区分不同的优先级,还需要在层4和层5中进行更深层的分组处理。可编程解决方案可更深入地处理这些分组。与需要多个NPU进行深层分组处理的NPU解决方案不同,FPGA解决方案只需一块FPGA,这是因为FPGA中的硬件并行处理完全可以同NPU中基于RISC的处理方法相媲美。多个NPU不仅为硬件和软件分区带来新挑战并增加了软件的复杂度,而且还增大了系统延迟和功耗。一般而言,如果采用NPU或FPGA进行更深层处理,则完全不需要ASIC。
2.软件可升级性
采用集中处理器设计的主要优势在于软件。控制层软件是诸多OEM的关键增值业务,并能使他们与竞争对手的业务彼此区分。因此,代码复用功能对于产品的上市时间以及支持原有产品至关重要。C代码的开发相对较快并能轻松地升级/接口到新处理器。DSP设计人员和架构设计人员对此有深刻的理解,并当代码复用比性能更重要时采用DSP处理器。
然而NPU不具备代码复用,因为NPU的软件大多是不可移植的,即这些软件是专有的汇编代码或因定制程度过高而丧失移植性的C代码。汇编代码是处理器专用开发工具,通常开发周期较长,从而加大了设计商的开发风险。事实上,一家公司为NPU设计的代码甚至难以移植到该公司后续开发的NPU中。NPU业界清醒地认识到这一点,因而正致力于行业的标准化,以使设计人员重拾信心。另一方面,虽然FPGA具有较强的软件升级功能,但在利用HDL或C代码开发数据层处理以及利用C代码开发控制层处理时,仍将面对诸多难题。采用专用的汇编代码修改特性比采用业界标准的HDL和C代码风险更高,也更困难。某些FPGA制造商提供了基于平台和工具集方法的工具,以实现软件在各代FPGA中的无缝移植。
3.硬件可升级性
硬件的可升级特性确保了较长的产品寿命,因而成为可编程解决方案的一个关键特性。此外,可升级性还有助于网络设备跟踪标准和协议的持续变化。否则,该设备将很快落伍。NPU只在处理器中提供可编程特性,其类似ASIC的定制硬件并不能直接进行编程。因此,NPU在硬件升级上的劣势与ASIC非常相似。FPGA顾名思义就是现场可编程,因而能轻松升级,以很好地满足需求变化。
4.复杂分类查询
像VPN(虚拟专用网)和IPSec这样的业务需要复杂查询功能。查询和分类可通过复杂的迭代算法实现,但迭代算法抑制了NPU中RISC引擎的效能,进而影响系统的整体性能。为此,NPU可采用两种策略:(a)增加NPU的时钟频率以获取净空范围。(b)增加多个NPU解决问题。过高的时钟频率将引发信号完整性问题并增加主板的复杂度,而多个NPU则将引发类似上述深层分组处理的问题。NPU的查询需要成本较高的内存子系统,而FPGA能在逻辑电路的状态机内实现查询,但这也并非总是有效的。或许查询协处理器和SDRAM正是不可或缺的。
5.记账
记账方法将随运营商拓展的新业务而发生改变。这些记账方法因提供商而异,因而不能以固定功能加以实现。可编程解决方案可通过保持和解释数据统计而迅速提供记账架构,其目标是使支持外设的数目达到最小。NPU和FPGA都提供了必要的记账灵活性。
6.更少的器件
假定一个设备(如路由器)带有多个线路卡,那么线路卡上较少的器件就能带来累积效益。器件数目和期望性能之间总存在一个平衡点,因而将所有器件堆积在一个设备中将破坏整体性能。例如,如果能在主分组处理器件上实现安全处理功能,不仅能减少器件数目,还可从增加的性能中受益。NPU最初承诺能以较少的器件执行所有功能,但最终没能实现。基于网络处理的解决方案需要多个专用协处理器以达到性能要求。令FPGA受限的并非性能,而是规格效率。某些需要查询和密集控制的应用可通过采用协处理器/嵌入式处理器来更好地实现,因此FPGA逻辑电路也适用于高速数据处理。
7.产品上市时间
产品上市时间是推动网络处理可编程解决方案发展的主要动力之一。NPU利用以处理器为中心的模式,保证了较短的产品上市时间。然而,汇编代码开发、多个NPU的系统分区、协处理器的数据相关性延缓了产品上市时间。但必须指出的是,与ASIC相比,这样的产品上市时间已经大大缩短。FPGA不仅可以通过缩短开发周期,还能通过缩短调试周期以加快产品上市时间。两者之间最大的区别在于软件:NPU采用汇编代码,而FPGA则采用HDL。
NPU需要对诸多功能进行维护,FPGA则是任何可编程设计的最佳选择方案。利用网络处理解决该问题无需借助多个协处理器,因为这并不是当初引入NPU的初衷。适当的解决方案是有选择地合理利用FPGA、NPU及一至两个协处理器。
FPGA实现的网络处理实例
本文提出了一种基于新型FPGA的解决方案:Virtex-IIProFPGA实现了数据通路和控制功能,而协处理器则负责数据包分类和查询。下面以2.5Gbps(OC-48)线路卡为例进行说明。
1.利用VPN和管理规则设计2.5Gbps线路卡
2.5Gbps(OC-48)线速率正日益受到广泛关注,因为OC-48能有效地对带宽和成本进行折衷。采用IPSec的加密VPN正是业务提供商探寻的高优先级业务。路由器制造商在下一代线路卡开发中,一直希望应用系统能具备以下大部分或全部功能(图4):VPN支持多个局部路由表和IPSec加密/解密;支持基于SONET的分组传输的全双工OC-48;支持基于MPLS的VPN;成千上万个VPN组,多项管理规则/VPN组;数百万个词头;支持DiffSERV;采用VPN组的QoS级别分类。ToS域和TCP/UDP源和目的端口数目。每个VPN组中均可建立数千条QoS准则。
2.方案选择
设计选择通常与所需的规则数目、性能(每秒处理的分组数据包/信元)、器件数目和功耗相关。本文重点关注分类和流量管理。为实现上述功能,线路卡通常采用的器件包括:
(1)网络处理器和协处理器分类占用的计算量最大。NPU需要许多专用存储器(如外置ZBTSRAM),因而功耗很大。IPSec通常用于VPN中的网络安全功能,因而既需要支持控制路径,也需要支持数据路径。由于NP耗尽了所有能量,因而需要能同时进行IPSec安全处理和流量管理的协处理器。
(2)FPGA和备用协处理器
FPGA确保了线速率IPSec的安全性,并提供比NPU更快的分类和查询功能。对IPSec而言,Virtex-IIPro在嵌入式PowerPC处理器软件中实现了控制路径/密码交换,还在FPGA逻辑电路中以Gbps级的线速率实现了数据路径AES/3-DES加密/解密。如果QoS规则需要经常改变,外置VLIW协处理器就能实现分类(FSM密集)功能。嵌入式PowerPC处理器可用于执行全部的控制和管理层功能。
(3)存储器子系统
CAM查询子系统可提供很高的查询速率,并支持很大的表项结构。但CAM的功耗(每器件消耗20W)很大,而且为了支持较大的表项,通常需要大量的CAM和SRAM器件。昂贵的ZBTSRAM可提供较高的速率,并在层2和层3数据包分类中支持NPU,但也需要消耗较大的功率。
SDRAM是最经济的器件,因而应用于大多数系统中。低功率的SDRAM通过采用管道和多线程架构实现了较高的性能以及较大的表项。但如果设计业务只是为了通过提高处理器速率而补偿性能的话,那么就明显不适合了。FPGA、VLIW/RISC处理器和SDRAM的结合为带有VPN和IPSec的2.5Gbps线路卡提供了最佳解决方案。
目前,网络处理内核和分组处理参考设计均适合于采用FPGA平台设计。此外,Virtex-IIProFPGA还支持所有的通用并行(单端和差动)和串行系统接口标准,以使其轻松地与任何协议进行接口并与线路卡上的任何器件相连。