浅析TOE — TCP卸载引擎技术及应用
TOE 是TCP Offload Engine,即TCP卸载引擎,也叫TCP减负引擎,它旨在使用网卡上集成专用处理器来转移并处理TCP数据包对主CPU请求的任务。TOE技术的实现方式是通过采用TOE芯片的专用网卡,将包括TCP协议在内的四层处理请示从主机处理器转移到网卡,相当于TOE网卡承担了主CPU处理TCP数据的绝大部分任务,减轻了CPU的负荷,其最终的结果是在加速网络响应的同时提高服务器的性能。
1、TOE技术的实现过程
图1 TOE网卡工作原理
TOE网卡主要工作过程如图1所示:
(1)服务器A向服务器B传输数据;
(2)A主机中的TCP栈向TOE网卡传输数据指针;
(3)TOE网卡进行所有TCP协议处理工作并通过网络传递数据包;
(4)B主机中的TOE网卡接收数据包,重排数据流并将之存放在内存中。
普通网卡则是先把数据包缓存到主机内存中,然后主机中的TCP协议栈重新组装数据流,最后把数据拷贝到应用程序[1]。
2、TOE网卡的优势
普通网卡用软件方式进行一系列TCP/IP相关操作,因此,会在三个方面增加服务器的负担,这三个方面是:中断处理、协议处理、数据复制。
2.1 协议处理
图2 TCP/IP卸载前后主CPU占用比例
当网络速度达到G(干兆)比特数量级时,主CPU就越来越繁忙,其中很大一部分处理负荷都是来自对TCP/IP协议的处理,例如对IP数据包的校验处理、对TCP数据流的可靠性和一致性处理,如图2所示。由于目前对TCP/IP协议进行处理都是采用通用CPU及其配套的系统结构,而这种体系下CPU的主要功能是进行通用计算,并非进行输入输出操作。因此在网络带宽和速度飞速发展的情况下,网络链路速度高于CPU对TCP/IP协议栈的处理速度将导致系统的输入输出系统成为网络瓶颈。
2.2 中断处理
传统的处理过程是:网络上每个应用程序在收发大量数据包时,要引发大量的网络I/O中断,对这些I/O中断信号进行响应,成了服务器的沉重负担。比如,一个典型的64Kbps的应用程序在向网络发送数据时,为了将这些数据装配成以太网的数据包,并对网络接收确认信号进行响应,要在服务器和网卡间触发60多个中断事件,这么高的中断率和协议分析工作量已经是相当可观的了。虽然某些网络操作系统具有中断捆绑功能,能够有效减少中断信号的产生,但却无法减少服务器和网卡间响应事件的处理总量。
TCP卸载引擎网卡的工作原理则不同。普通网卡处理每个数据包都要触发一次中断,TCP卸载引擎网卡则让每个应用程序完成一次完整的数据处理进程后才触发一次中断,显著减轻服务器对中断的响应负担。还是以64Kbps的应用程序为例,应用程序向网络发送数据全部完成后,才向服务器发送一个数据通道减负事件中断,数据包的处理工作由TCP卸载引擎网卡来做,而不是由服务器来做,从而消除了过于频繁的中断事件对服务器的过度干扰。网络应用程序在收发数据时,经常是同一数据要复制多份,在这种情形下,TCP卸载引擎网卡发挥的效益最明显。
2.3 数据复制
普通网卡通过采用支持校验功能的硬件和某些软件,能够在一定程度上减少发送数据的复制量,但却无法减少接收数据的复制量。对大量接收数据进行复制通常要占用大量的机器工作周期。普通网卡先将接收到的数据在服务器的缓冲区中复制一份,经系统处理后分配给其中一个TCP连接,然后,系统再将这些数据与使用它的应用程序相关联,并将这些数据由系统缓冲区复制到应用程序的缓冲区。TCP卸载引擎网卡在接收数据时,在网卡内进行协议处理,因此,它不必将数据复制到服务器缓冲区,而是直接复制到应用程序的缓冲区,这种“零拷贝”方式避免了网卡和服务器间的不必要的数据往复拷贝。
表1中列出了TOE技术的测试比较数据,可以明显看出TOE技术在吞吐率和收据收发对CPU占用方面的技术优势。
表1 TOE技术的测试数据
网络环境 |
吞吐率(Mb/s) |
发送数据CPU消耗量 |
接收数据CPU消耗量 |
1GBE,TCP |
769 |
0.5CPUs |
1.2CPUs |
WSD SAN |
891 |
0.2CPUs |
0.2CPUs |
10GBE,TCP |
7700 |
0.5CPUs |
12CPUs |
10GBE,TOE |
9000 |
0.5CPUs |
0.5CPUs |
3、TOE技术的限制因素
实际上TOE解决方案一直仅限于在8 KB或以上的环境中发送大型数据块的情况。通常,存储备份和检索系统及企业数据库均使用大型数据有效负载。此外TOE应用限制也有诸多限制:修改操作系统、依赖于特定TOE网卡等。
4、TOE技术的推广应用
Adaptec推出一种全新的网络加速卡。该产品将使高强度计算应用中的服务器性能得到提高。Adaptec网络加速器将TCP/IP处理进程从主机中卸载下来,使CPU的处理能力能够被更多地投入到网络化应用中。
WIZnet推出一系列以太网芯片,此系列芯片是一种TOE技术的新思路。以太网芯片,使用逻辑门电路实现全硬件TCP/IP协议栈,独立于MCU运作,负载所有TCP/IP协议栈的处理过程,可以极大减轻主CPU的TCP/IP处理负荷,减少I/O中断次数,传输速度的提高不再是难题,深受市场的青睐[2]。