一、 概述
TCP/IP协议已经成為(wèi)互联网应用(yòng)最基本的协议。传统方式下,TCP/IP协议由中央处理(lǐ)器、微处理(lǐ)器以软件的形式处理(lǐ)。然而,随着以太网速率从1000Mbits/s提高到10Gbits/s再到40Gbits/s、100Gbits/s,CPU已经很(hěn)难满足TCP/IP协议处理(lǐ)的需要了。因此,為(wèi)了减轻CPU的协议处理(lǐ)负担,TCP/IP协议处理(lǐ)技术显得越来越重要。其中,TCP/IP卸载引擎(TCP/IP Offload Engine,ToE)技术成為(wèi)研究的热点。
二、 传统TCP的处理(lǐ)
在传统的以太网环境中,TCP/IP协议的处理(lǐ)都是通过软件方式在中央处理(lǐ)器上实现。如图1所示,网络数据由网卡进入计算机系统,传统网卡主要实现网络协议物(wù)理(lǐ)层和数据链路层功能(néng),然后将口数据包交付CPU操作系统 ,CPU操作系统首先对数据进行TCP/IP协议处理(lǐ),最后将数据交付应用(yòng)程序。由于CPU是一个通用(yòng)的部件,它不是专门针对TCP/IP协议处理(lǐ)而设计,因而它处理(lǐ)协议的能(néng)力不强。在吉比特网络中,如果TCP/IP协议处理(lǐ)仍在CPU中执行,不但协议处理(lǐ)的效率不高,而且占用(yòng)大量的CPU资源,浪费存储空间和大量的功耗。同时,还使其它的应用(yòng)程序得不到充分(fēn)的CPU资源,从而影响整个系统性能(néng),导致高速的带宽资源得不到充分(fēn)的利用(yòng)。由于网络带宽增加的速度遠(yuǎn)超过处理(lǐ)器速度的增長(cháng),在今后网络应用(yòng)的瓶颈不再是带宽资源,而是处理(lǐ)器的速度面对网络带宽和速度的飞速增長(cháng),传统的通过软件进行TCP/IP协议处理(lǐ)的方式已经越来越成為(wèi)高性能(néng)网络计算的瓶颈。
图
1 网络处理(lǐ)的传统处理(lǐ)流程
三、 ToE的处理(lǐ)流程
ToE(TCP/IP Offload Engine)是一门使用(yòng)硬件代替软件来处理(lǐ)TCP/IP协议的技术,从而将系统微处理(lǐ)器从TCP/IP协议处理(lǐ)负担中解放出来,提高了网络性能(néng);同时也為(wèi)没有(yǒu)TCP/IP协议处理(lǐ)能(néng)力的系统提供了一种解决方案。传统方式下,TCP/IP协议由操作系统处理(lǐ),ToE技术将TCP/lP协议的处理(lǐ)分(fēn)离到网卡,如图2所示。
图2ToE处理(lǐ)方式与传统处理(lǐ)方式对比
四、 ToE的实现
本设计主要通过硬件实现TCP/IP协议传输机制,支持TCP/IP的建立、释放握手机制;同时支持TCP的超时重传、慢开始、快重传的机制。实现将TCP/IP协议完全卸载到硬件实现,软件负责一些状态的管理(lǐ)及配置任務(wù),大大减软的软件的任務(wù)量同时提升TCP/IP数据的处理(lǐ)效率。
在ToE的功能(néng)实现时,本设计基于FPGA实现的网络接口卡功能(néng),除此之外基于FPGA还可(kě)以后期添加交换、QoS、安全等功能(néng),从而支持更加灵活的功能(néng)实现。具體(tǐ)的ToE功能(néng)实现结构如图3所示。
图3 ToE实现结构图
主要由接收侧处理(lǐ)模块RX,发送侧处理(lǐ)模块TX和连接控制模块CC组成,三部分(fēn)的逻辑关系如3图所示。
CC模块主要完成是TCP/IP流的状态管理(lǐ),主要负责连接及释放的握手机制,并维护建立连接的TCP/IP流状态表。
RX模块负责数据的接收处理(lǐ),包括TCP/IP的头部校验和校验、去MAC头以及接收缓存管理(lǐ)以及接收数据的窗口管理(lǐ)等操作。
TX模块负责数据的发送数据,包括添加TCP/IP的头部校验和、添加MAC头、发送窗口控制、超时重传控制、慢开始、快重传控制以及数据输出缓存管理(lǐ)及数据分(fēn)段的管理(lǐ)等。
通过测试本设计的在1G接口的处理(lǐ)速率可(kě)以达960Mbps,10G接口的速率可(kě)达9Gbps。