>
首页 » 技术文章 » 基于TCP/IP卸载引擎的千兆网卡

基于TCP/IP卸载引擎的千兆网卡

作者:周敬利,王志华,姜明华,徐 漾,余胜生  时间:2006-10-28 02:21  来源:
摘 要:研究了TCP/IP卸载引擎的原理和设计方法,并提供了一套参考实现。实验证明,该技术有效地提高了千兆网卡的传输性能,降低了计算机的占用率。

关键词:TCP/IP卸载引擎;千兆网卡;RTOS;嵌入式

引言

千兆网卡为计算机接入到千兆以太网提供了高速接口,但以目前的CPU主频速度来连接千兆以太网很难达到1Gbps的线速,而且CPU资源被大量消耗。虽然CPU性能每个月18就翻一番,但无法跟上网络速率每年增加10倍的速度。

传统上TCP/IP协议栈是由服务器上的CPU处理的。而CPU随着网络传输速度超过,已经不堪大量协1Gbps ,CPU已经不堪大量TCP/IP协议处理的重负。失序包的重组,大量的内存拷贝和中断给主机的CPU增加了极大的负担。根据Thumb定律,在没有DMA和I/O通道的情况下,每处理的网络流量,就需要1bps的周期。即要处理1Gbps网络带宽,就需要一个1GHz主频的CPU全负荷运行。网络协议的处理占用了大量的服务器资源,而上层的应用得不到及时处理,使服务器整体性能降低。

随着NAS、SAN、iSCSI(Internet SCSI)等技术的广泛应用,需要服务器的网络接口有更高的性能,普通千兆网卡已经不能满足要求。TCP/IP卸载引擎(TOE)技术,就是在这种背景下产生的。本文在研究了TOE技术的同时提出了一种设计方案,并依据该方案给出了基于TOE技术的千兆网卡的参考实现。

TCP/IP卸载引擎技术

所谓卸载是指将CPU上的计算或处理转移到专门的处理单元上进行。如目前的普通千兆基本上都有校验和卸载,就是一种卸载技术。但这种卸载还是不彻底的卸载,很难发挥千兆的极限带宽。与传统方式对比,TCP/IP卸载引擎引入了一种新的网络接口体系结构。它将TCP/IP协议栈的处理工作从服务器CPU上卸载下来,交给网卡(NIC)来处理。在具有TCP/IP卸载引擎的网卡上有专门的处理器或硬件来完成协议处理,简化了整个TCP/IP的处理路径,从而减轻了CPU和服务器I/O系统的TCP/IP处理负担,消除了服务器的网络瓶颈。

普通网卡和主机之间是通过网卡驱动进行通信的,一般网卡将接收到的数据传到应用层要经历多次中断(如对CPU的硬中断、对接收进程的软中断)和多次数据拷贝(如DMA将数据包传到主机内存,应用通过系统调用将数据拷贝到用户空间),数据路径较长。利用TOE进行TCP/IP卸载则简化了该处理路径。如图所示1。将TOE整个或部分协议TCP/IP栈卸载到网卡中处理,绕过了主机CPU处理TCP/IP协议的路径。在主机上安装了TOE的驱动后,内核空间的应用(各种网络服务)和用户空间的应用都可以直接与TOE通信。TOE网卡接收到数据后,自动完成协议栈各层协议处理,将解封装后的TCP segment提交给上层应用,发送过程相反。通过TOE处理,中断和数据拷贝次数都会大大降低,CPU的负担大大降低。

图1 TOE的实现策略

TOE网卡与主机之间的接口的定义是实现TOE的关键和难点。目前还没有这种接口定义的标准,各个TOE厂商也有不同的具体实现。例如WindRiver公司提出了Socket Class作为主机和卸载的TCP/IP之间的接口。Socket Class是一种基于消息的机制,将主机的socket API映射到卸载后的协议栈上。主机上的socket API应用仍使用原有的socket API,因为在主机上运行了一个socket适配层驱动(TOE),将所有的socket API请求转换为Socket Class消息。

Socket Class将TOE上的TCP/IP协议栈定义为Socket Device,在TOE初始化时产生一个称为的句柄来处target ID理主机与Socket Device之间的通信。在主机端,每个socket进程就是一个initiator,也称为Socket Device的用户。针对initiator和target ID之间不同的socket操作,分别有一种消息与之对应,如SocketSend,SocketBind,SocketConnect,SocketClose,SocketIoctl。SocketSend消息的格式如图2。

图2 SocketSend消息格式

TOE千兆网络网卡的设计与实现

设计方案
TOE可以用ASIC芯片实现,根据卸载程度又分为全卸载(Full-offload)和数据路径卸载(Data-path offload)。全卸载是将TCP/IP协议栈全部卸载到性能优化的硬件逻辑中处理。数据路径卸载则是将TCP/IP中的数据移动用芯片ASIC处理,而将TCP连接管理建立,拆除和错误恢复等交给主机CPU的处理。利用芯片ASIC专门做TCP/IP协议卸载的优势是其高性能和可升级性(到10Gbps及以上)较好。但是这种方法灵活性不够,一旦设计完成后很难加入新的功能,而且ASIC的设计难度较大。

我们选择的方案是利用嵌入式处理器(Embedded CPU)运行实时操作系统(Real-time Operating System,RTOS),再加上一个MAC/PHY来实现TOE千兆网卡。在主机上处理的协议被卸载到中进行处理。这种实现不仅卸载TCP/IP协议栈,而且卸载其他凡是能嵌入到RTOS中的协议。这种方案的优点是其解决方案灵活且可扩展性强,例如将iSCSI(Internet SCSI)协议集成到固件中即可开发出iSCSI HBA。

进行设计时,主要考虑嵌入式CPU和实时操作系统的选择。嵌入式CPU的选择要完成整个TCP/IP协议栈的处理,而且要使TOE网卡达到千兆速度,因此要求I/O处理性能很高。同时还要考虑到该CPU的功耗问题,因为嵌入式CPU通常没有专用的风扇散热,所以功耗一定要低。我们选择Intel XSclae微体系结构CPU,XScale从StrongARM发展而来,但相对后者其工作电压大幅降低而且性能更高。选用IOP310 I/O的处理器芯片组把基于XScale微结构的处理80200器和它的80312 I/O配套芯片集成在一起。该芯片组有从333MHz到733MHz的种时钟速度,最大功耗仅为1W。

RTOS的选择除了考察其实时性,还要求有出色的I/O处理性能。WindRiver公司的IxWorks符合以上要求,在IxWorks操作系统之上还有一套专门用来开发高性能设备I/O的平台TINA。TINA中包含有IxWorks实时操作系统,卸载后优化的TCP/IP协议栈,Gigabit Ethernet接口驱动,以及与主机通信的Socket Class消息系统。

硬件参考设计
嵌入式CPU采用了处理器Intel IOP310 I/O芯片组,该芯片组由一个Intel 80200 CPU和一个Intel 80312 I/O配套芯片组成,硬件设计参考见图3。

图3 硬件设计原理图

选用的芯片及其作用分别介绍如下:

1、 Intel 80200是基于Intel XScale微体系结构的高性能嵌入式微处理器。其主频为600MHz,外频为66MHz。

2、 Intel 80312 I/O配套芯片专用于I/O处理和内部及外部总线的桥芯片。具有内存/PCI/ 消息/DMA控制器,与SDRAM和FLASH之间的接口速度为100MHz。

3、 Intel 82543GC千兆以太网MAC(Media Access Controller)。

4、 Intel LXT1000千兆以太网收发器(PHY)提供千兆铜线接入方式;也可采用Agilent HDMP-1636 SERDES提供千兆光纤接口。

5、 SDRAM作为板上系统内存,采用标准144引脚64位,SODIMM大小为128MB。

6、 FLASH存放RTOS启动映像(Boot-image)文件,选用8MB的Intel Strata Flash(28F640J3A)。
7、 EEPROM存放启动配置文件、产品ID、MAC地址等信息。采用1kB大小的Microwire Serial EEPROM 93C46B。

还选用了一个82C59作为外部中断控制器,一个82C54作为外部时钟。相应的芯片都需要提供时钟的晶振(Oscillator) Intel 80200的晶振为66MHz,Intel 82543GC的晶振为125MHz,82C54外部时钟的晶振为3.686MHz。

除了以上选用的芯片外,还应考虑设置调试接口,至少应该提供一个RS232串行调试接口。Intel 80200支持功能更高的JTAG调试,因此在硬件板上预留一个JTAG调试口也是有必要的。RS232串口调试不需要专门的设备,只需一根普通串口线将开发主机和目标板相连即可;如果采用JTAG调试方法,需要相应的仿真器(Emulator)做调试,我们选用了VisionICE for XScale仿真器。

实验及结论

我们采用嵌入式芯片设计开发出的TOE千兆网卡,在Linux操作系统环境下做了性能测试。硬件环境是两台Pentium III 933MHz PC机,256MB内存,主板集成64bit/66MHz PCI以接插TOE千兆网卡;软件环境是RedHat Linux7.3;测试工具是Netperf-2.1pl3。

用Netperf测试网络吞吐率,两台测试机分别为Server和Client。主要针对Server的性能进行测试。Client端安装的千兆网卡是Intel PRO/1000,Server端则先后安装了TOE千兆网卡和Intel PRO/1000作性能对比测试。对Server的网络性能测试主要是网络吞吐率和CPU占用率,测试结果如图4 、5所示。其中Netperf的测试参数是:接收缓存大小为64kB,发送缓存大小为64kB,发送消息大小为64kB。

图4 网络吞吐率测试结果

图5 CPU占用率测试结果

测试结果表明,TOE千兆网卡的网络吞吐率高于普通千兆网卡,而CPU占用率却低得多。例如在最大传输单元(MTU)为9000B时,普通千兆网卡的网络吞吐率为669Mbps TOE千兆网卡则达到了952Mbps,性能提高了42%。此时,前者的CPU占用率为41%,而后者只有15%。各种MTU的测试都说明TOE千兆网卡保持在高吞吐率水平,而CPU占用率一般都较低。

本文研究了TOE技术的基本原理和该技术的实现机制,给出了一种参考设计。测试结果表明,依据该设计思想开发的TOE千兆网卡,可以提高服务器网络接口的吞吐率,且极大地降低服务器本身的资源占用。该技术的应用前景广泛,对国民生产和国防研究都具有深远的意义。


相关推荐

Ctrack选用u-blox GPS和蜂巢式模组开发车队管理解决方案

u-blox  嵌入式  Ctrack  2014-05-21

动作撷取追踪的嵌入式体感控制新技术

嵌入式  体感控制  2013-12-06

嵌入式系统的固件更新

嵌入式  Flash  RAM  缓冲区  2013-09-12

汽车电子向一体化集成、网络化与智能化发展

汽车电子  嵌入式  2013-05-23

东芝开发嵌入式SRAM低功耗技术智能手机

东芝  嵌入式  SRAM  2013-02-23

飞思卡尔基于ARM平台全系列MCU引领嵌入式应用新趋势

飞思卡尔  ARM  嵌入式  2013-01-29
在线研讨会
焦点