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