TOE 是TCP Offload Engine,即TCP卸載引擎,也叫TCP減負引擎,它旨在使用網(wǎng)卡上集成專用處理器來轉(zhuǎn)移并處理TCP數(shù)據(jù)包對主CPU請求的任務(wù)。TOE技術(shù)的實現(xiàn)方式是通過采用TOE芯片的專用網(wǎng)卡,將包括TCP協(xié)議在內(nèi)的四層處理請示從主機處理器轉(zhuǎn)移到網(wǎng)卡,相當于TOE網(wǎng)卡承擔(dān)了主CPU處理TCP數(shù)據(jù)的絕大部分任務(wù),減輕了CPU的負荷,其最終的結(jié)果是在加速網(wǎng)絡(luò)響應(yīng)的同時提高服務(wù)器的性能。
1、TOE技術(shù)的實現(xiàn)過程
圖1 TOE網(wǎng)卡工作原理
TOE網(wǎng)卡主要工作過程如圖1所示:
(1)服務(wù)器A向服務(wù)器B傳輸數(shù)據(jù);
(2)A主機中的TCP棧向TOE網(wǎng)卡傳輸數(shù)據(jù)指針;
(3)TOE網(wǎng)卡進行所有TCP協(xié)議處理工作并通過網(wǎng)絡(luò)傳遞數(shù)據(jù)包;
(4)B主機中的TOE網(wǎng)卡接收數(shù)據(jù)包,重排數(shù)據(jù)流并將之存放在內(nèi)存中。
普通網(wǎng)卡則是先把數(shù)據(jù)包緩存到主機內(nèi)存中,然后主機中的TCP協(xié)議棧重新組裝數(shù)據(jù)流,最后把數(shù)據(jù)拷貝到應(yīng)用程序[1]。
2、TOE網(wǎng)卡的優(yōu)勢
普通網(wǎng)卡用軟件方式進行一系列TCP/IP相關(guān)操作,因此,會在三個方面增加服務(wù)器的負擔(dān),這三個方面是:中斷處理、協(xié)議處理、數(shù)據(jù)復(fù)制。
2.1 協(xié)議處理
圖2 TCP/IP卸載前后主CPU占用比例
當網(wǎng)絡(luò)速度達到G(干兆)比特數(shù)量級時,主CPU就越來越繁忙,其中很大一部分處理負荷都是來自對TCP/IP協(xié)議的處理,例如對IP數(shù)據(jù)包的校驗處理、對TCP數(shù)據(jù)流的可靠性和一致性處理,如圖2所示。由于目前對TCP/IP協(xié)議進行處理都是采用通用CPU及其配套的系統(tǒng)結(jié)構(gòu),而這種體系下CPU的主要功能是進行通用計算,并非進行輸入輸出操作。因此在網(wǎng)絡(luò)帶寬和速度飛速發(fā)展的情況下,網(wǎng)絡(luò)鏈路速度高于CPU對TCP/IP協(xié)議棧的處理速度將導(dǎo)致系統(tǒng)的輸入輸出系統(tǒng)成為網(wǎng)絡(luò)瓶頸。
2.2 中斷處理
傳統(tǒng)的處理過程是:網(wǎng)絡(luò)上每個應(yīng)用程序在收發(fā)大量數(shù)據(jù)包時,要引發(fā)大量的網(wǎng)絡(luò)I/O中斷,對這些I/O中斷信號進行響應(yīng),成了服務(wù)器的沉重負擔(dān)。比如,一個典型的64Kbps的應(yīng)用程序在向網(wǎng)絡(luò)發(fā)送數(shù)據(jù)時,為了將這些數(shù)據(jù)裝配成以太網(wǎng)的數(shù)據(jù)包,并對網(wǎng)絡(luò)接收確認信號進行響應(yīng),要在服務(wù)器和網(wǎng)卡間觸發(fā)60多個中斷事件,這么高的中斷率和協(xié)議分析工作量已經(jīng)是相當可觀的了。雖然某些網(wǎng)絡(luò)操作系統(tǒng)具有中斷捆綁功能,能夠有效減少中斷信號的產(chǎn)生,但卻無法減少服務(wù)器和網(wǎng)卡間響應(yīng)事件的處理總量。
TCP卸載引擎網(wǎng)卡的工作原理則不同。普通網(wǎng)卡處理每個數(shù)據(jù)包都要觸發(fā)一次中斷,TCP卸載引擎網(wǎng)卡則讓每個應(yīng)用程序完成一次完整的數(shù)據(jù)處理進程后才觸發(fā)一次中斷,顯著減輕服務(wù)器對中斷的響應(yīng)負擔(dān)。還是以64Kbps的應(yīng)用程序為例,應(yīng)用程序向網(wǎng)絡(luò)發(fā)送數(shù)據(jù)全部完成后,才向服務(wù)器發(fā)送一個數(shù)據(jù)通道減負事件中斷,數(shù)據(jù)包的處理工作由TCP卸載引擎網(wǎng)卡來做,而不是由服務(wù)器來做,從而消除了過于頻繁的中斷事件對服務(wù)器的過度干擾。網(wǎng)絡(luò)應(yīng)用程序在收發(fā)數(shù)據(jù)時,經(jīng)常是同一數(shù)據(jù)要復(fù)制多份,在這種情形下,TCP卸載引擎網(wǎng)卡發(fā)揮的效益最明顯。
2.3 數(shù)據(jù)復(fù)制
普通網(wǎng)卡通過采用支持校驗功能的硬件和某些軟件,能夠在一定程度上減少發(fā)送數(shù)據(jù)的復(fù)制量,但卻無法減少接收數(shù)據(jù)的復(fù)制量。對大量接收數(shù)據(jù)進行復(fù)制通常要占用大量的機器工作周期。普通網(wǎng)卡先將接收到的數(shù)據(jù)在服務(wù)器的緩沖區(qū)中復(fù)制一份,經(jīng)系統(tǒng)處理后分配給其中一個TCP連接,然后,系統(tǒng)再將這些數(shù)據(jù)與使用它的應(yīng)用程序相關(guān)聯(lián),并將這些數(shù)據(jù)由系統(tǒng)緩沖區(qū)復(fù)制到應(yīng)用程序的緩沖區(qū)。TCP卸載引擎網(wǎng)卡在接收數(shù)據(jù)時,在網(wǎng)卡內(nèi)進行協(xié)議處理,因此,它不必將數(shù)據(jù)復(fù)制到服務(wù)器緩沖區(qū),而是直接復(fù)制到應(yīng)用程序的緩沖區(qū),這種“零拷貝”方式避免了網(wǎng)卡和服務(wù)器間的不必要的數(shù)據(jù)往復(fù)拷貝。
表1中列出了TOE技術(shù)的測試比較數(shù)據(jù),可以明顯看出TOE技術(shù)在吞吐率和收據(jù)收發(fā)對CPU占用方面的技術(shù)優(yōu)勢。
表1 TOE技術(shù)的測試數(shù)據(jù)
網(wǎng)絡(luò)環(huán)境 |
吞吐率(Mb/s) |
發(fā)送數(shù)據(jù)CPU消耗量 |
接收數(shù)據(jù)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技術(shù)的限制因素
實際上TOE解決方案一直僅限于在8 KB或以上的環(huán)境中發(fā)送大型數(shù)據(jù)塊的情況。通常,存儲備份和檢索系統(tǒng)及企業(yè)數(shù)據(jù)庫均使用大型數(shù)據(jù)有效負載。此外TOE應(yīng)用限制也有諸多限制:修改操作系統(tǒng)、依賴于特定TOE網(wǎng)卡等。
4、TOE技術(shù)的推廣應(yīng)用
Adaptec推出一種全新的網(wǎng)絡(luò)加速卡。該產(chǎn)品將使高強度計算應(yīng)用中的服務(wù)器性能得到提高。Adaptec網(wǎng)絡(luò)加速器將TCP/IP處理進程從主機中卸載下來,使CPU的處理能力能夠被更多地投入到網(wǎng)絡(luò)化應(yīng)用中。
WIZnet推出一系列以太網(wǎng)芯片,此系列芯片是一種TOE技術(shù)的新思路。以太網(wǎng)芯片,使用邏輯門電路實現(xiàn)全硬件TCP/IP協(xié)議棧,獨立于MCU運作,負載所有TCP/IP協(xié)議棧的處理過程,可以極大減輕主CPU的TCP/IP處理負荷,減少I/O中斷次數(shù),傳輸速度的提高不再是難題,深受市場的青睞[2]。