TOE技术以及TCP网卡工作原理
TCP/IP协议早已是
网络
的标准语言。随着Internet SCSI、Remote Diret Memory Access这些
网络
存贮标准的问世和实用化,从某种意义上说,TCP/IP又成了一种存贮协议。
我们知道,用TCP/IP协议处理
网络
流量,要占用大量服务器资源。为了减轻服务器的压力,一种称为TCP减负引擎(TCP Offload Engine :TOE)的
技术
应运而生。TCP减负引擎一般由软硬两部分组件构成,将传统的TIP/IP协议栈的功能进行延伸,把
网络
数据流量的处理工作全部转到网卡上的集成硬件中进行,服务器只承担TCP/IP控制信息的处理任务。这种为服务器减轻负担的
技术
,得到了大多数厂商的肯定。
普通网卡用软件方式进行一系列TCP/IP相关操作,因此,会在三个方面增加服务器的负担,这三个方面是:数据复制、协议处理和中断处理。
网络
上每个应用
程序
在收发大量数据包时,要引发大量的
网络
I/O中断,对这些I/O中断信号进行响应,成了服务器的沉重负担。比如,一个典型的64Kbps的应用
程序
在向
网络
发送数据时,为了将这些数据装配成以太网的数据包,并对
网络
接收确认信号进行响应,要在服务器和网卡间触发60多个中断事件,这么高的中断率和协议分析工作量已经是相当可观的了。虽然某些
网络
操作
系统
具有中断捆绑功能,能够有效减少中断信号的产生,但却无法减少服务器和网卡间响应事件的处理总量。
TCP减负引擎网卡的工作原理与普通网卡不同。普通网卡处理每个数据包都要触发一次中断,TCP减负引擎网卡则让每个应用
程序
完成一次完整的数据处理进程后才触发一次中断,显著减轻服务器对中断的响应负担。还是以64Kbps的应用
程序
为例,应用
程序
向
网络
发送数据全部完成后,才向服务器发送一个数据通道减负事件中断,数据包的处理工作由TCP减负引擎网卡来做,而不是由服务器来做,从而消除了过于频繁的中断事件对服务器的过度干扰。
网络
应用
程序
在收发数据时,经常是同一数据要复制多份,在这种情形下,TCP减负引擎网卡发挥的效益最明显。
普通网卡通过采用支持校验功能的硬件和某些软件,能够在一定程度上减少发送数据的复制量,但却无法减少接收数据的复制量。对大量接收数据进行复制通常要占用大量的机器工作周期。普通网卡先将接收到的数据在服务器的缓冲区中复制一份,经
系统
处理后分配给其中一个TCP连接,然后,
系统
再将这些数据与使用它的应用
程序
相关联,并将这些数据由
系统
缓冲区复制到应用
程序
的缓冲区。TCP减负引擎网卡在接收数据时,在网卡内进行协议处理,因此,它不必将数据复制到服务器缓冲区,而是直接复制到应用
程序
的缓冲区,这种“零拷贝”方式避免了网卡和服务器间的不必要的数据往复拷贝。
TCP减负引擎网卡能显著减轻由数据大量移动造成的服务器过载负担。实测证明,对于文件服务器和以内容服务为主的服务器应用环境来说,如果用TCP减负引擎网卡代替普通网卡,相当于为服务器增加了一个CPU。