傳輸控制協(xié)議(tcp)是一種最初針對(duì)低速地面鏈路而設(shè)計(jì)的傳輸層協(xié)議。然而,隨著高速傳輸介質(zhì)和復(fù)雜的訪問(wèn)機(jī)制的發(fā)展,用純軟件方式實(shí)現(xiàn)tcp需要強(qiáng)大的計(jì)算和存儲(chǔ)能力。
近年來(lái),網(wǎng)絡(luò)速度、cpu和內(nèi)存的速度呈爆炸式增長(zhǎng)。由于以太網(wǎng)速度的增長(zhǎng)速度遠(yuǎn)遠(yuǎn)大于cpu或內(nèi)存,所以目前的網(wǎng)絡(luò)性能仍然主要受制于內(nèi)存與cpu速度。
tcp卸載是一種用于加速tcp/ip連接的技術(shù),它克服了上述局限性,將復(fù)雜的tcp處理從主機(jī)cpu轉(zhuǎn)移到專用的tcp加速器上。通常,用于加速的tcp卸載引擎(toe)是一個(gè)主機(jī)cpu共址的專用子系統(tǒng)。可達(dá)到同樣目標(biāo)的一種可選機(jī)制,是將復(fù)雜的tcp/ip處理轉(zhuǎn)移至用高速鏈路與tcp服務(wù)器連接的網(wǎng)絡(luò)處理器(np)上(一種專用的可編程硬件設(shè)備)。
這種可選機(jī)制采用的網(wǎng)絡(luò)處理器不但具備通用處理器(gpp)的低成本與高靈活性,而且還具有定制硅芯片解決方案的速度與可擴(kuò)展性。此外,np還可減輕tcp服務(wù)器上需要大量?jī)?nèi)存和cpu資源的處理負(fù)擔(dān)。它還提供可擴(kuò)展性極高的解決方案,尤其是存在原有設(shè)備或?qū)Τ杀久舾械脑O(shè)備的情況下。
防御網(wǎng)絡(luò)通常與長(zhǎng)延遲衛(wèi)星鏈路、易出錯(cuò)的無(wú)線信道一起,構(gòu)成高性能服務(wù)器與網(wǎng)絡(luò)。衛(wèi)星鏈路是降低整體性能的鏈路中最薄弱的環(huán)節(jié)。采用這種可選機(jī)制可使帶有toe的np連接至薄弱部分,從而讓np-toe能消除長(zhǎng)延遲和信道錯(cuò)誤的不利影響,并提高網(wǎng)絡(luò)整體性能。
對(duì)于成本與尺寸受限的低端企業(yè)級(jí)產(chǎn)品而言,通過(guò)在中央網(wǎng)絡(luò)單元中引入toe來(lái)解決內(nèi)存/cpu瓶頸是一種具有可擴(kuò)展性和成本效益的解決方案。與提高主機(jī)自身的性能(如使用鍵盤(pán)、顯示器和鼠標(biāo)——kvm交換機(jī))相比,該方法尤其具有優(yōu)勢(shì)。
圖1列舉了一種部署方案,其中遠(yuǎn)程鍵盤(pán)、監(jiān)視器和鼠標(biāo)控制多臺(tái)與基于ip的kvm(kvm-over-ip)交換機(jī)相連的遠(yuǎn)程托管服務(wù)器。遠(yuǎn)程控制計(jì)算機(jī)的鼠標(biāo)與鍵盤(pán)事件通過(guò)因特網(wǎng)從kvm交換機(jī)傳輸?shù)椒?wù)器。服務(wù)器通過(guò)kvm交換機(jī)將壓縮的監(jiān)視器數(shù)據(jù)發(fā)送至遠(yuǎn)程計(jì)算機(jī)。帶有toe的np使kvm交換機(jī)能夠?qū)cp的處理負(fù)擔(dān)轉(zhuǎn)移到np,從而簡(jiǎn)化了kvm交換機(jī)硬件。
圖1:帶有toe的np提升網(wǎng)絡(luò)性能的部署實(shí)例。
采用tcp接合技術(shù)的toe
tcp卸載可在企業(yè)tcp主機(jī)和遠(yuǎn)程np兩種網(wǎng)絡(luò)實(shí)體上進(jìn)行,它是通過(guò)利用分離的tcp連接(也稱為tcp接合)而得以實(shí)現(xiàn)的。tcp接合是一種著名的tcp性能增強(qiáng)技術(shù)。在tcp接合中,兩個(gè)獨(dú)立的tcp連接可以跨接一次會(huì)話:一個(gè)從客戶端到np,另一個(gè)從np到服務(wù)器。圖2說(shuō)明了采用tcp接合技術(shù)的toe的基本操作步驟。
服務(wù)器發(fā)送的數(shù)據(jù)由np在本地確認(rèn),從而減少服務(wù)器的緩沖需求并且加快擁塞窗口的擴(kuò)大。np在遠(yuǎn)端(客戶端)的確認(rèn)(ack)到達(dá)之前緩沖數(shù)據(jù)。在未收到確認(rèn)通知的情況,np執(zhí)行定時(shí)器管理以向遠(yuǎn)端重發(fā)tcp段。利用本地確認(rèn)還可以避免tcp服務(wù)器受np和客戶端之間網(wǎng)絡(luò)擁塞和延遲過(guò)長(zhǎng)的影響。這可以減輕服務(wù)器的內(nèi)存負(fù)擔(dān)。
np還可以為服務(wù)器向客戶端發(fā)送的數(shù)據(jù)(包括校驗(yàn)和計(jì)算)執(zhí)行可選的網(wǎng)絡(luò)地址轉(zhuǎn)換(nat)。盡管上述功能需要大量計(jì)算并且給gpp帶來(lái)繁重負(fù)擔(dān),但np非常適合處理此類操作。
與路由等傳統(tǒng)np應(yīng)用相比,tcp卸載應(yīng)用需要具備包間依賴性和基于連接的狀態(tài)機(jī)。此外,這種應(yīng)用還要處理傳輸層功能,而這超越了由np執(zhí)行的傳統(tǒng)鏈路層和網(wǎng)絡(luò)層的處理能力。
tcp處理過(guò)程中主要有兩個(gè)復(fù)雜之處。緩沖器管理包括對(duì)擁塞網(wǎng)絡(luò)中未確認(rèn)段、亂序段和延遲段進(jìn)行存儲(chǔ)。定時(shí)器管理包括估算重發(fā)超時(shí)(rto)估算以及觸發(fā)未確認(rèn)段的重發(fā)。
在高性能服務(wù)器或網(wǎng)絡(luò)與長(zhǎng)延遲無(wú)線和/或窄帶網(wǎng)絡(luò)一起運(yùn)行的情況下(防御和移動(dòng)網(wǎng)絡(luò)大多如此),這種機(jī)制非常有用。在這種情況下,由于立即確認(rèn)使可察覺(jué)的延遲更短,所以np上的tcp卸載功能可縮短慢啟動(dòng)階段。請(qǐng)注意,當(dāng)處理任務(wù)很輕時(shí),慢啟動(dòng)階段決定了應(yīng)用性能。
另外,tcp擁塞控制針對(duì)有線部分的擁塞以及易錯(cuò)無(wú)線信道的性能下降而調(diào)整。由于錯(cuò)誤恢復(fù)功能受限于np和客戶端,所以np上的tcp卸載可以防止服務(wù)器中的窗口崩潰。這可以提高整體吞吐量。
圖2:從服務(wù)器到客戶端的數(shù)據(jù)處理框圖。
利用網(wǎng)絡(luò)處理器實(shí)現(xiàn)帶toe的tcp接合技術(shù)
在開(kāi)發(fā)執(zhí)行被提議的替代機(jī)制的概念原型中,我們采用杰爾app340處理器(圖3)。app3xx系列np具有2gbps的吞吐能力。該器件包含分類器、由調(diào)度程序、緩沖器管理器與流編輯器(sed)組成的流量管理器、狀態(tài)引擎以及片上控制處理器(即嵌入式主機(jī))。嵌入式主機(jī)處理低速通道(控制與管理),器件的其余部分則處理快速通道或數(shù)據(jù)管道。
分類器用于識(shí)別連接及其狀態(tài);狀態(tài)引擎讓tcp狀態(tài)變量能被np上的各種功能模塊訪問(wèn);流量管理器運(yùn)行tcp擁塞控制協(xié)議,并執(zhí)行調(diào)度決策;sed則被用于執(zhí)行序號(hào)處理及網(wǎng)絡(luò)地址轉(zhuǎn)換(nat)的穿透(traversal)。
app340允許流量整形功能模塊控制每個(gè)隊(duì)列的數(shù)據(jù)包調(diào)度。np為每個(gè)數(shù)據(jù)流維護(hù)多個(gè)目的隊(duì)列,包括到客戶端的主要傳輸、到客戶端的數(shù)據(jù)包重發(fā)以及到服務(wù)器的傳輸。
app340支持分級(jí)調(diào)度,這樣就可以利用輔助隊(duì)列在每個(gè)目的隊(duì)列的同一級(jí)別傳送控制信息。這些控制數(shù)據(jù)包由數(shù)據(jù)包生成引擎(pge)根據(jù)狀態(tài)機(jī)在內(nèi)部生成。它們被用于觸發(fā)調(diào)度機(jī)制,例如在調(diào)度隊(duì)列中保持?jǐn)?shù)據(jù)包,并只在tcp狀態(tài)機(jī)需要時(shí)釋放數(shù)據(jù)包。
這種利用分級(jí)調(diào)度架構(gòu)控制tcp段調(diào)度的能力,以及保持包間狀態(tài)依賴性的能力使app340架構(gòu)非常適合tcp處理。
圖3:從客戶端到服務(wù)器的數(shù)據(jù)處理框圖。
tcp連接的建立
在數(shù)據(jù)包到達(dá)np端口時(shí),分類器模塊根據(jù)tcp端口號(hào)和ip地址確定數(shù)據(jù)包流。如果數(shù)據(jù)包流不存在,則將數(shù)據(jù)包發(fā)送到嵌入式主機(jī)以建立連接。
一旦收到與tcp協(xié)議的三方握手(syn、syn-ack和ack)相對(duì)應(yīng)的初始數(shù)據(jù)包時(shí),主機(jī)解析tcp選項(xiàng)并獲取相應(yīng)參數(shù),如序列號(hào)(sn)和最大段長(zhǎng),并將它們轉(zhuǎn)發(fā)到狀態(tài)引擎和sed。另外,它還更新分類器中的查找樹(shù),從而關(guān)聯(lián)數(shù)據(jù)流標(biāo)識(shí)符與tcp連接。
然后,將數(shù)據(jù)包傳回分類器,以便重新插入數(shù)據(jù)包流。外發(fā)的tcp握手?jǐn)?shù)據(jù)包接受nat穿透處理,并且忽略其它toe功能。類似地,主機(jī)處理連接終止。分類器解析fin字段并將數(shù)據(jù)包發(fā)至主機(jī)。
來(lái)自服務(wù)器的tcp數(shù)據(jù)流
當(dāng)用于已建立的數(shù)據(jù)流的tcp數(shù)據(jù)段進(jìn)入分類器時(shí),利用查找樹(shù)可獲取流標(biāo)識(shí)符。
app340是一種基于模塊的處理器。它采用兩階段分類處理,第一階段處理單個(gè)模塊。第二階段處理重組后的協(xié)議數(shù)據(jù)單元。如果數(shù)據(jù)段到達(dá)時(shí)是亂序的,則將其保留在分類器中firstpass重排序緩沖器中,直到有序段到達(dá)。
對(duì)于有序段,則檢查tcp狀態(tài),以了解當(dāng)前滑動(dòng)窗口大小(cwnd)、接收器通知窗口(rwnd)、np的內(nèi)存限制以及正在傳輸?shù)臄?shù)據(jù)包大小是否允許傳輸該數(shù)據(jù)包。如果數(shù)據(jù)包可以傳輸,則轉(zhuǎn)發(fā)到sed進(jìn)行nat轉(zhuǎn)換并發(fā)送到遠(yuǎn)端客戶端。流量整形器(ts)的轉(zhuǎn)發(fā)緩沖器中保存一個(gè)副本,另一個(gè)副本被發(fā)送到sed,用于生成一個(gè)立即本地確認(rèn)。sed利用傳來(lái)的tcp/ip報(bào)頭、最末ack的sn和最后收到的字節(jié)數(shù)生成本地ack。
如果tcp滑動(dòng)窗口被占滿,則ts停止調(diào)度數(shù)據(jù)包。數(shù)據(jù)包在停止?fàn)顟B(tài)結(jié)束之前一直有效保存在ts中(圖4)。
來(lái)自客戶端的tcp數(shù)據(jù)流
當(dāng)ack到達(dá)分類器時(shí),分類器提取確認(rèn)號(hào)并將其轉(zhuǎn)發(fā)至狀態(tài)引擎。狀態(tài)引擎更新cwnd,以反映tcp流的慢速啟動(dòng)或擁塞避免階段。該引擎還更新rwnd、未確認(rèn)數(shù)據(jù)的大小以及tcp滑動(dòng)窗口的占滿狀態(tài)。
生成一個(gè)觸發(fā)信號(hào)發(fā)送到ts,以從重發(fā)隊(duì)列中刪除已確認(rèn)的數(shù)據(jù)包。ts調(diào)度所有來(lái)自伙伴(partner)控制隊(duì)列確認(rèn)數(shù)據(jù)包和相關(guān)數(shù)據(jù)包,然后在sed將其清除。若tcp滑動(dòng)窗口先前已被占滿,則生成觸發(fā)信號(hào)發(fā)送到ts,以恢復(fù)對(duì)tcp數(shù)據(jù)段的處理(圖5)。然后,該確認(rèn)在np上結(jié)束。
如果客戶端數(shù)據(jù)包帶有背負(fù)(piggybacked)數(shù)據(jù),則按照上述方式更新?tīng)顟B(tài)機(jī)。然后修改報(bào)頭中的確認(rèn)號(hào),以反映最近生成的本地確認(rèn)號(hào),并將它轉(zhuǎn)發(fā)給服務(wù)器。另外,在狀態(tài)引擎中更新下一個(gè)來(lái)自客戶端的預(yù)期sn,以便將該sn用作隨后本地確認(rèn)的sn。
重發(fā)與重發(fā)超時(shí)(rto)估算
對(duì)于重發(fā)緩沖器中的每個(gè)數(shù)據(jù)包,內(nèi)部pge生成的伙伴控制隊(duì)列保留該段的傳輸時(shí)間。當(dāng)一個(gè)確認(rèn)到達(dá)時(shí),按確認(rèn)到達(dá)時(shí)間與傳輸時(shí)間差計(jì)算往返時(shí)間,然后按照ietfrfc2988推薦標(biāo)準(zhǔn)估算重發(fā)超時(shí)(rto)。
如果數(shù)據(jù)包處于重發(fā)序列之中,則pge生成由當(dāng)前時(shí)間、重發(fā)時(shí)間或者當(dāng)前時(shí)間外加rto組成的控制數(shù)據(jù)包。
對(duì)pge進(jìn)行編程,以生成周期性的觸發(fā)信號(hào)。每次進(jìn)行此操作時(shí),ts都會(huì)檢查重發(fā)時(shí)間。每個(gè)帶有過(guò)期定時(shí)器的數(shù)據(jù)包被調(diào)度發(fā)送到sed,同時(shí)相應(yīng)的控制數(shù)據(jù)包也被清除。重復(fù)此操作,直到處理完所有帶有過(guò)期定時(shí)器的數(shù)據(jù)包。回傳并存儲(chǔ)每個(gè)重發(fā)段的副本,以用于下一次重發(fā)。ietfrfc2001規(guī)定的快速重發(fā)算法由pge實(shí)現(xiàn),一旦收到來(lái)自客戶端的三個(gè)重復(fù)確認(rèn),它便生成一個(gè)重發(fā)觸發(fā)信號(hào)。
基于np的toe使服務(wù)器性能可以不依賴于np和客戶端之間的網(wǎng)絡(luò)特征。其性能反而可以反映np和服務(wù)器之間的鏈路特征。此外,服務(wù)器的內(nèi)存需求仍獨(dú)立于網(wǎng)絡(luò)擁塞和客戶端網(wǎng)絡(luò)的往返時(shí)延。
我們可以看到,在遠(yuǎn)程np采用tcp卸載機(jī)制可以充分提高低端設(shè)備的tcp性能,而且服務(wù)器可以免受與各種客戶端環(huán)境相關(guān)的資源需求變化的影響。另外,具有很長(zhǎng)無(wú)線組件的高性能客戶端網(wǎng)絡(luò)可通過(guò)nptoe減輕擁塞及鏈路損失,從而顯著改善用戶體驗(yàn)。
責(zé)任編輯:gt
-
處理器
+關(guān)注
關(guān)注
68文章
19824瀏覽量
233708 -
監(jiān)視器
+關(guān)注
關(guān)注
1文章
785瀏覽量
33870 -
服務(wù)器
+關(guān)注
關(guān)注
13文章
9717瀏覽量
87362
發(fā)布評(píng)論請(qǐng)先 登錄
NVMe協(xié)議研究掃盲
淺析TOE — TCP卸載引擎技術(shù)及應(yīng)用
利用NI LabVIEW的并行化技術(shù)來(lái)提高測(cè)試的吞吐量
怎么利用FPGA協(xié)處理器提高無(wú)線子系統(tǒng)的性能?
Linux系統(tǒng)下超線程技術(shù)怎么提高處理器的性能?
基于Cortex-M處理器的***技術(shù)簡(jiǎn)介
Wi-Fi協(xié)議中的MIMO技術(shù)是什么
基于EFI和雙核處理器的協(xié)處理器模型
Supermicro(R)利用新處理器和高速互連技術(shù)拓展高性能解決方案
利用Floorplanner工具提高嵌入式處理器系統(tǒng)的性能
通過(guò)利用現(xiàn)代處理器架構(gòu)的并行性提高SDR的性能

評(píng)論