10Gbps线速转发引擎的并行流水线设计与实现
2008-05-30
作者:王昊宇
摘 要: 设计了一种基于FPGA平台的并行处理" title="并行处理">并行处理流水线结构,配合高速查表" title="查表">查表,可支持10Gbps" title="10Gbps">10Gbps接口的报文转发。该设计已应用在国家863计划重大课题“可扩展到T比特的高性能IPv4/v6路由器基础平台及实验系统”中,并通过测试。
关键词: 并行处理 流水线 转发引擎
当前,线路传输技术发展迅速,光传输技术更是进步飞速,无论是单波长载荷速率还是单纤可用波长数量,都以惊人的速度增长。目前,已出现各种10Gbps的接口类型,如POS、LAN、WAN等。作为T比特路由器的核心部分,转发引擎" title="转发引擎">转发引擎的线速报文转发能力决定了路由器所能够支持的最高端口速率。T比特路由器中线速转发引擎必须支持10Gbps接口,而传统的报文处理结构由于单包处理时间过长,已无法满足线速转发的性能需求。
1 线速转发引擎的结构设计
转发引擎是高性能T比特路由器的关键部分之一,其设计的合理性、性能的优劣直接影响路由器的整体性能。当前,业界的硬件转发引擎主要有两种方案:一种是基于网络处理器" title="网络处理器">网络处理器的转发引擎,一种是基于FPGA平台的转发引擎。本设计采用FPGA作为设计平台,如此选择主要是出于以下两点考虑:
(1)目前支持端口速率为10Gbps的线速处理的商用网络处理器还不成熟,尤其是没有自主知识产权、安全性弱、受芯片提供商的制约,所以网络处理器并不是最佳选择;
(2)采用FPGA是为设计单片转发系统(SOC)奠定基础,最终目的是要实现我国自主的高性能网络处理器。
数据包的10Gbps线速转发,报文转发率达到31.25Mpps以上,支持IPv4、IPv6和MPLS三种类型报文的处理,支持IPv4、IPv6优先级分类,支持组播以及1M路由表项等,都是T比特路由器必须实现的关键技术指标。为此,10Gbps线速转发引擎采用基于大规模FPGA、TCAM和SRAM的全硬件流水并行结构,利用硬件的高速特性和高可靠性,实时处理路由分组的各项信息并对路由分组进行硬件线速转发。
下面给出一种基于FPGA的转发引擎结构,该引擎采用并行处理方式和流水线结构,有效地降低了报文的处理时间,实现了对多协议报文的支持,达到了10Gbps线速转发的性能需求。
2 并行处理结构的设计
并行机制就是对同一段时间内需要处理的每个任务各采用一个处理通道的并行方式进行操作,从而使多个任务所需的处理时间降至最少。转发引擎要进行报头分析、QoS实现、安全检测、直连检查、单播查表、组播查表等处理。并行处理方式就是按照各个功能模块之间在处理顺序上的关联性,将以上的功能模块进行并行处理;并尽可能对并行技术进行进一步挖掘。以报头分析模块为例,可进一步分为版本号检查、TTL检查、地址范围检查、有效负载长度检查等四个小模块,进而进行小模块的并行处理。并行处理结构如图1所示。
采用并行处理技术之后的总处理时间只是其中关键并行模块的处理时间,关键并行模块是指所有并行处理模块中处理时间最长的模块。
3 流水线机制的设计
若要在数据速率高达10Gbps的条件下实现IPv6最短包(长度为40字节)的线速转发,则转发引擎处理一个数据包的最长时间为:IP报文长度(字节)×8(比特)/端口速率(Gbps)=40×8/10=32ns。即使采用100MHz的时钟,处理时间也只有3.2个周期,要在如此短的时间里完成复杂的IP报文处理,必须采用流水线设计。
3.1 系统级流水线
基于FPGA的转发引擎内部各大模块间的流水线,本文称为系统级流水线。转发引擎的系统级流水线结构如图2所示。
该流水线结构将转发处理分为接口转换、报头提取、路由查表、报头处理与修改、输出控制等五个流水操作子进程。它们都是在时间上先后执行的串行任务单元,且前后子进程之间的操作相互独立。转发引擎采用流水线操作以后,只要各子进程能满足给定接口速率下最短报文的处理时间要求,则整个转发引擎就支持该接口速率。
3.2 流水线查表设计
在该流水线各段中,需要时间最长的功能段为路由查表。在查表模块进一步引入流水线设计,可以减少整个转发处理的流水时间,使之能够满足路由器性能要求。
硬件查表通常由TCAM完成,传统的TCAM查表流程如图3所示。
传统查表由TCAM搜索和TCAM读表项两个操作串行进行,无流水线操作,整个过程需要十几个时钟周期。
在本文提出的由TCAM和SRAM共同完成路由查表的流水线结构中,查表分两级进行:由TCAM完成搜索过程,再由SRAM读出查表结果。这样可将查表时间缩短为4个周期。
在本流水查表方案中,TCAM表项仅存储查表关键字,查表结果则存储在SRAM的相应地址空间中。对于单播查表,目的IP地址作为查表关键字保存在TCAM的某个地址中,目的接口号作为查表结果则保存在SRAM中的相应地址空间中,这样就构成一条完整的单播表项。其流程如图4所示。
图4给出了两种流水线设计方案,它们的区别主要在于是否将TCAM的RBUS直接连接到SRAM的地址总线上。
(1) 方案(a)是将TCAM的RBUS直接作为SRAM的读取地址,优点是PCB制作略为简单,减少FPGA中User I/O资源紧张的问题,缺点是写表项的时间较长。因为写SRAM表项必须通过相应的TCAM操作才能进行,即写TCAM表项和写SRAM表项均通过TCAM来完成,所以写一条完整表项的时间为二者处理时间之和。
(2)方案(b)是将TCAM的结果总线RBUS与SRAM的地址总线通过FPGA连接起来,虽然增加了PCB制作的难度,但由于写表项时TCAM和SRAM的写操作可同时进行,因而写一条完整表项的时间为这二者处理时间的较大值。通常TCAM的读写时间远大于SRAM的读写时间。
通过TCAM写SRAM表项的时间往往与单独写TCAM表项的时间相当,即方案(a)写表项的时间大大超过方案(b),因而方案(b)具有更好的线速转发性能。
4 工程实现
通过采用并行处理技术和流水线技术设计的转发引擎在实际工程中得到了很好的应用,工程中采用的FPGA为VIRTEX PRO系列的XC2VP70芯片。借助思博伦通信公司(Spirent Communications)的Adtech AX/4000网络测试仪构造的测试环境如图5所示。
图5中,测试仪与10GPOS线卡相连,双向发送与接收数据,线卡将10Gbps数据输入转发引擎,再由转发引擎送往高速交换网络。在测试过程中,选择40、64、128、256、512、1024、1280和1500字节的定长包进行分组转发率和丢包率测试。测试表明,在10G VAN和10G LAN接口下,转发引擎不丢包,即丢包率为0。在10GPOS接口下,转发引擎的吞吐率和丢包率如图6所示。
图中表明,在单一包长测试条件下,在负荷为100%、包长大于等于109.5字节时的丢包率低于1.07×10-6%,吞吐率接近于1%,该转发引擎可以实现40字节IPv6报文的10Gbps线速转发。
在测试过程中,还做了模拟实际应用的混合包传输(40字节包占25%,172字节包占20%,360字节包占15%,552字节包占20%,1500字节包占20%)测试。图7表示在模拟实际包长分布条件下,不同负荷时的转发引擎丢包率。
图中所示的测试结果表明,端口负荷低于90%时,丢包率低于3.0×10-4%。以上结果表明,该转发引擎能实现100%报文通过率的10Gbps线速转发。
10Gbps线路接口的出现,对转发引擎的设计是个极大的挑战:在不到4个时钟周期的时间内,需要实现各种协议类型的报文的线速转发。本文提出的一种基于FPGA的并行流水线转发引擎结构,很好地解决了10Gbps线速转发的问题。该引擎结构已经应用在863重大课题“可扩展到T比特的IPv4/v6 路由器基础平台及实验系统”中,并通过了测试。
随着线路传输技术的发展,链路接口速率即将突破40Gbps,这对转发引擎的结构设计又将是进一步的挑战,研究支持40Gbps的线速转发引擎将是我们下一步的研究方向。
参考文献
1 Howard Johnson and Martin Graham Prentice Hall. High-Speed Digital Design.ISBN 0-13-395724-1,1993[M]
2 P.Newman,G.Minshall and L.Huston.IP Switching and Giga-bit Routers. IEEE Communications Magazine, 1997;(1)[J]
3 Synopsys Design Analyzer. Manuals for SYNOPSYS Toolset[Z]. Synopsys Inc.,2000
4 Netlogic Microsystems.http://netlogicmicro.com
5 许恪,熊勇强,吴建平.宽带IP路由器的体系结构分析,软件学报,2000;(3):1~8