◆吴中军 张 颖
基于FPGA的高速转发网络安全平台设计
◆吴中军1张 颖2
(1.中国电子科技集团公司第三十研究所 四川 610093;2.陆军参谋部第一通讯站 北京 100042)
不管是对于核心的路由器、交换机、或者网络安全设备,高速转发引擎都是其中的重点、难点、以及关键技术。本文围绕着高传输带宽的需求,低时延的需求,基于FPGA技术实现了一种10Gbps速率的全线速的高速转发网络安全平台。并讨论了基于FPGA的高速转发引擎的流水线设计以及并行设计方案,并对其性能指标进行了试验分析。
FPGA;10Gbps转发引擎;并行设计;流水线设计
伴随着社会的发展与进步,网络对于高带宽、低时延、高质量的QOS等的需求都越来越高。尤其是光纤传输方式在这些年得到了长足的发展与进步,网络中每一年对于高带宽需求的增长已经超过了摩尔定律的增长速度。所以位于网络关键节点的交换机、路由器、网络安全等设备其吞吐量、时延等性能指标就有了更高的需求。
为了适应下一代互联网的发展,以及关键技术的掌握和国产化。早在二十世纪初国家就启动了一批重大专项研究,比如高性能宽带信息网(3TNet)工程。在项目自主研发了T比特级的光传输系统[1]、T比特级的交换路由设备、T比特级的网络应用环境。本文以此为基础,实现一种基于FPGA的高速转发平台,可以灵活的搭载重构设计部分网络安全功能,可以作为关键网络节点的安全设备,并给出实现方案。
以性能指标支持10Gbps的网络数据包线速处理为要求,那么就必须在速率达到10Gbps的情况下,实现以太网的最短包长即40字节的网络包的线速处理转发,那么可以得出FPGA转发一个数据包的最大如下所示:
(数据包包长)40*8bit/10Gbps = 32ns
表1为在10Gbps的吞吐量下,平台对于不同数据包包长的报文的转发处理时间。
表1 转发平台线速处理时间表
报文长度(byte)处理时间(ns) 4032 4839 6452 9677 128103
由表1可以看出,要完成速率为10Gbps的最短 40字节数据包的线速处理转发,该转发平台对该长度的数据包的最长转发时间为32ns,假如使用125Mhz的内部时钟,那么需要短短的4个周期来处理转发该数据包。对于FPGA的设计使用来说,单单仅靠加大时钟频率或者总线的宽度来提高处数据的带宽,会造成很多别的方面的印象。比如时钟频率过高会使得数据总线上数据有效的保持时间大大缩短,这样就降低了数据采样的精确度,即增加了数据采样的难度。这就不可避免的增加了FPGA的设计中布局布线难度,使得书序错误频发。另外受FPGA器件水平和国内可购买的高速大规模FPGA技术参数的限制,目前转发引擎FPGA内部系统时钟超过200M则会造成很多系统性问题。
基于上面的叙述,在高速转发引擎的设计中,为了提升性能,引入了并行处理方式和流水线操作的处理方式[2]。流水线处理是一种高速设计中的常用方法。该数据处理方式是指将一个复杂过长的时序过程划分为若干个可以串行连接的子过程,其各个子过程都可以被叫做流水线的“级”,而且每个子过程都可以有效地的在时间上与其它子过程同步执行。
如图2所示,这就是一个流水线全过程示意图。对于流水线而言,其设计的关键是子过程模块时序安排的合理性,各个流水段都要合理划分。对于流水线中的各个流水段,其时间最长的流水段会造成整个流水线的“堵塞”,所以合理的划分流水段就显得尤其重要。流水线处理方式能极大的提高效率的原因就是其多次复制了所有的处理模块,这是一种典型的“资源换速度”的方式。
图2 流水线结构图
并行处理方式就是对一个总的任务,将其划分为空间和功能上相互独立的且完成时间较短的N个简单的任务子单元si(i = 1, 2,… ,N),而N个简单的任务子单元si可以在相同的时间内同时完成,这样组合在一起一个复杂的任务就得以完成。即通过并行处理方式可以有效的降低复杂度,并降低时延。一个简单的并行处理方式的示意图如图3所示。
图3 并行流水线结构
限制网络传输带宽的主要因素是输入传输带宽、内部传输带宽、输出传输带宽,如三个带宽的示意图如图4所示。
图4 高速转发引擎带宽分析
在这里先对下文公式用到的符号做以下定义:端口速率-R;链路的承载效率-a;数据报文长度-L;添加端口标签的字节数-M;路由标签标签的字节数-N;数据送往交换网络的平面数-K,FPGA内部时钟频率-C;FPGA内部数据传输总线位度-W。
已知10Gbps带宽接口的实际速率为,R = 2. 488× 4= 9. 952 Gbps,可以采用VC-4容器的OC-192SDH帧[3],其承载效率为261/270,而类HDLC帧[4]的承载效率可以表示为L/(L+9),那么对长度为L的以太网数据包,其链路层的承载效率a可以表示为:
转发平台的输入、输出带宽、内部传输带宽的关系可以用下面的表达式来表述:
参考FPGA供应商Xilinx[5]和Altera[6]的芯片水平,在数据包长度L = 40字节的时候,使用125Mhz时钟和128比特位宽的方式来进行数据传输,这样可以使内部传输带宽达到16Gbps。这样就能满足一个高性能的线速网络安全转发平台的要求。
对于转发平台的查表设计,本文给出了一个支持流水线操作的NSE[7,8]+SRAM查表搜索结构[9—12],NSE(搜索引擎)中存放每一个表项的关键字,SRAM中存放查找表的结果,其具体查表过程如图5所示。
图 5 NSE+SRAM的流水线查表操作
如上述结构,可以将查表过程分为三个子过程,即送入查表关键字、输出匹配地址、读取查表结果,这三个子过程可以支持流水线操作。所以一次成功的查表的时间就由最长的子流水段的时间所决定,对于实际应用环境,组播查表关键字的生成就决定了最长的查表时间,其为4个时钟周期,而在NSE支持的125Mhz工作频率下,完全可以满足性能达到10Gbps带宽的转发平台的设计要求。
FPGA技术的发展与进步,为以FPGA为基础而实现的高速转发平台提供了良好的基础芯片和开发平台。FPGA芯片的主要技术性能具体表现在以下几个方面。
(1)高速MGT:Xilinx[13]和Altera[14]两个FPGA主流供应商都针对高速FPGA的开发,集成了24个以上的MGT(Multi-Gigabit Transciver)模块。这些模块可以实现10Gbps以上的数据传输带宽要求,同时抗噪能力、功耗消耗都更理想。
(2)封装和电平:FPGA供应商都提供大量的不同的封装类型,以及大规模的I/O引脚数。并且每个引脚都支持阻抗匹配技术,可以减少片外电阻设计。支持多种单端和差分电平标准。
(3)时钟:大多数FPGA都提供多达12个以上的DCM,使用DCM可以补偿由于时钟传输延时以及电路板布局限制产生的限号不稳定情况。DCM能更好的适合具有多个时钟域和关键时序要求的系统。
(4)片内块RAM:大多是FPGA都提供超过10Mb嵌入式Block RAM可以实现对报文的高容量且高速的缓存,可以支持多种数据处理功能方面的应用。
基于前文的分析图6给出了一个性能为10Gbps带宽的转发平台的设计方案。在FPGA内部完成数据包包头的检查,主要包括版本号、校验和、TTL等关键字段;在设计时可以在其后面串接安全功能模块,并采用流水线的方式实现以提高性能;在FPGA外部采用搜索引擎芯片NSE和片外SRAM芯片如2.2节介绍的来配合FPGA内部模块的功能完成查表;通过PCIE通道实现CPU和FPGA的数据通信,可以通过CPU向FPGA下发指令,以及实现某些数据包的上传CPU功能;在CPU上还可进行二次开发,实现一些FPGA难以实现的功能。
图 6 10Gbps转发平台设计方案
该方案具有很强的灵活性和可移植性,开发者可以根据该平台开发添加适合自己产品的功能模块。
本文采用Xilinx公司的k7系列FPGA,龙心3A国产处理器。125m时钟128位宽的数据总线,按照设计要求,其可以达到16Gb的吞吐量。
采用TestCenter网络测试仪进行性能测试(该网络测试仪包长计算包括包头)。经测试,在不添加安全功能模块的前提下,系统的吞吐量如表2所示。可以看出其完全满足10Gbps线速转发平台的要求。
表2 转发平台吞吐量测试
包长(byte)吞吐量(GB) 6415.87 12815.90 25615.92 51215.94 102415.97