您现在的位置: 教育资源库 >> 电脑学院 >> 网络技术 >> 协议 >> 正文

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

基于TCP/IP卸载引擎的千兆网卡
作者:未知 文章来源:网络 点击数: 更新时间:2010-1-14

  引言

  千兆网卡为计算机接入到千兆以太网提供了高速接口,但以目前的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的负担大大降低。

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

  图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。

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

  图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。

友情提醒:本文来自教育资源库收集与整理,特别感谢原作者!
本文版权归原作者所有,如需转载或摘录请注明出处:教育资源库 http://edu.5151doc.com

文章录入:魅力教师    责任编辑:5151doc 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    | 设为首页 | 加入收藏 | 联系站长 | 在线投稿 | 版权申明 | 网站登陆 |