国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于改進(jìn)虛擬化環(huán)境中的tcp性能的系統(tǒng)和方法

      文檔序號:10557119閱讀:535來源:國知局
      用于改進(jìn)虛擬化環(huán)境中的tcp性能的系統(tǒng)和方法
      【專利摘要】本文中描述的示例實(shí)施方式提供了用于在具有處在虛擬化主機(jī)內(nèi)的協(xié)議發(fā)送方或協(xié)議接收方的云環(huán)境中的協(xié)議發(fā)送方與協(xié)議接收方之間傳輸數(shù)據(jù)包的系統(tǒng)和方法。協(xié)議加速模塊可以觀測使用協(xié)議發(fā)送方的協(xié)議堆棧配置信息沿協(xié)議發(fā)送方與協(xié)議接收方之間的數(shù)據(jù)路徑傳輸?shù)臄?shù)據(jù)包。協(xié)議加速模塊可以用基于策略的協(xié)議堆棧配置信息來覆蓋協(xié)議堆棧配置信息,使得從協(xié)議加速模塊傳輸至協(xié)議接收方的數(shù)據(jù)包使用基于策略的協(xié)議堆棧配置信息。對于各種實(shí)施方式,不修改協(xié)議發(fā)送方的協(xié)議堆棧配置信息。
      【專利說明】
      用于改進(jìn)虛擬化環(huán)境中的TCP性能的系統(tǒng)和方法
      [0001 ] 本申請要求于2014年5月29日提交的美國專利申請?zhí)?4/290,509、于2014年1月7 日提交的美國專利申請序列號14/149,621、以及于2013年9月26日提交的美國臨時(shí)專利申 請序列號61/882,768的優(yōu)先權(quán),每個(gè)上述申請的全部內(nèi)容通過引用并入本文中。
      技術(shù)領(lǐng)域
      [0002] 本申請涉及一種根據(jù)一個(gè)實(shí)施方式在虛擬化計(jì)算環(huán)境中使用的方法和系統(tǒng),并且 更具體地涉及用于改進(jìn)虛擬化計(jì)算環(huán)境中的網(wǎng)絡(luò)協(xié)議性能的方法和系統(tǒng)。
      【背景技術(shù)】
      [0003] 當(dāng)今,大型企業(yè)主要使用虛擬化數(shù)據(jù)中心作為其信息技術(shù)(IT)的基礎(chǔ)架構(gòu)。虛擬 化為企業(yè)的計(jì)算前景提供兩個(gè)益處。第一個(gè)益處是,隨著每個(gè)物理CPU具有大量內(nèi)核的多核 架構(gòu)的出現(xiàn),物理機(jī)變得顯著強(qiáng)大,因此虛擬化可以對效率提供顯著改進(jìn)。此外,當(dāng)今存儲 器已經(jīng)變得極為廉價(jià)。例如,在許多商業(yè)服務(wù)器中經(jīng)??梢砸姷綌?shù)百吉比特的RAM是可用 的。因此,人們可以將大量的虛擬機(jī)向上整合成一臺物理機(jī)。第二個(gè)益處是,虛擬化提供對 基礎(chǔ)架構(gòu)的顯著控制。隨著計(jì)算資源成為可替代的資源如云模型,對計(jì)算基礎(chǔ)架構(gòu)的供應(yīng) 和管理變得非常容易。因此,企業(yè)IT工作人員建議,除了虛擬化提供的效率和更好的投資回 報(bào)率(R0I)以外,在數(shù)據(jù)中心中提供虛擬化集群以用于企業(yè)IT工作人員的管理利益。
      [0004] 雖然虛擬化正在全球范圍內(nèi)被廣泛采用,但是現(xiàn)代操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議在歷史上 還沒有考慮到用虛擬化來進(jìn)行設(shè)計(jì)。因此,傳統(tǒng)的操作系統(tǒng)(0S)存在在虛擬化環(huán)境中執(zhí)行 效率較低的局限性。基本上,當(dāng)管理程序(hypervisor)形式的中間層被添加至物理服務(wù)器 以將CPU、存儲器和I/O資源進(jìn)行抽象時(shí),產(chǎn)生了之前不存在的新的類型的性能瓶頸,如網(wǎng)絡(luò) 協(xié)議吞吐量的減少(例如,互聯(lián)網(wǎng)協(xié)議/傳輸控制協(xié)議(TCP/IP)吞吐量)。
      [0005] 虛擬機(jī)(VM)通常被分配有稱為vCPU(或虛擬CPU)的虛擬計(jì)算實(shí)例。隨著虛擬化服 務(wù)器在數(shù)據(jù)中心中被很大程度地整合,存在共享可用CPU資源即可用物理內(nèi)核(物理CPU或 pCPU)的大量的VM。分配給所有運(yùn)行中的VM的vCPU與總可用pCPU的比率通常稱為過載使用 率。不同環(huán)境中的過載使用的程度變化很顯著,但是很少接近于1。其主要原因是在許多虛 擬化環(huán)境中平均CPU使用率相當(dāng)?shù)偷氖聦?shí)。由于這個(gè)原因,高過載使用率對于從可用計(jì)算資 源中得到最佳R0I是理想的。
      [0006] 遺憾的是,服務(wù)器整合對于傳輸協(xié)議如TCP的性能具有顯著的負(fù)面影響。在虛擬化 數(shù)據(jù)中心中,通常存在運(yùn)行在TCP協(xié)議上的很多服務(wù)器至服務(wù)器的流量。網(wǎng)絡(luò)延遲(測量為 從一個(gè)服務(wù)器的網(wǎng)絡(luò)接口卡(NIC)至其他服務(wù)器的NIC所花費(fèi)的時(shí)間)通常在幾微秒的量 級。管理程序如VMware在下述方面變得極為有效:將被執(zhí)行以處理個(gè)體包的指令的數(shù)目保 持到非常小的數(shù)目。因此,當(dāng)包從網(wǎng)絡(luò)到達(dá)并且VM被調(diào)度時(shí),由于虛擬化,包經(jīng)歷非常小的 附加延遲。然而,關(guān)鍵問題是,當(dāng)給定VM未被調(diào)度時(shí),用于該VM內(nèi)的給定連接的網(wǎng)絡(luò)數(shù)據(jù)傳 遞被有效地阻止,因?yàn)門CP需要兩端活動(dòng)以用于數(shù)據(jù)傳遞的進(jìn)展。因此即使當(dāng)只有一端正在 將數(shù)據(jù)傳輸?shù)搅硪欢藭r(shí),仍然需要另一端在發(fā)送端能夠傳輸更多數(shù)據(jù)之前用確認(rèn)進(jìn)行回 應(yīng)。
      [0007] 實(shí)證分析表明,實(shí)際企業(yè)集群中的流量模式遵循稱為冪律分布的規(guī)律。在任何給 定時(shí)間處,在給定數(shù)目的VM中,只少數(shù)VM實(shí)際上會有效地產(chǎn)生流量。此外,即使在時(shí)域中該 冪律也是適用的。也就是說,給定VM會時(shí)不時(shí)地產(chǎn)生流量,而不是在所有時(shí)間都產(chǎn)生流量。 基于這些條件,我們可以觀測到,如果存在共享可用CPU資源的其他面向計(jì)算機(jī)的VM,則不 是所有可用網(wǎng)絡(luò)資源都由發(fā)送或接收流量的VM使用,這使得網(wǎng)絡(luò)密集型VM被來回調(diào)度,從 而顯著降低TCP性能。
      [0008] 隨著服務(wù)器被更高程度地整合(在如虛擬桌面基礎(chǔ)架構(gòu)(VDI)空間的環(huán)境中會出 現(xiàn)),吞吐量下降得更加顯著。由于TCP是雙向協(xié)議,因此我們在接收側(cè)和發(fā)送側(cè)兩個(gè)方向上 觀測TCP吞吐量下降。當(dāng)虛擬化TCP發(fā)送方在將包傳輸至虛擬化TCP接收方時(shí),問題變得更 糟,因?yàn)閮啥吮华?dú)立調(diào)度,即意味著這些端中的任何一端可能在給定時(shí)間處彼此獨(dú)立地掉 線。由于各端的調(diào)度輪次可能未對齊的概率可能要高得多,因此吞吐量的下降大致是當(dāng)各 端中僅有一端被虛擬化并且爭奪CHJ資源時(shí)的兩倍。
      [0009] 當(dāng)今存在用于改進(jìn)虛擬化環(huán)境中的TCP處理的各種方法。一種方法是將CPU過量使 用保持得非常低(接近于1)。在這種情況下,CPU連接的問題甚至不會出現(xiàn),并且該問題不會 顯現(xiàn)。這種方法的缺點(diǎn)是在很大程度上喪失了虛擬化即服務(wù)器整合的主要益處。
      [0010] 第二種方法是使VM將TCP處理卸載至稱為TCP卸載引擎(T0E)的專用硬件。由于T0E 具有用于卸載TCP處理的專用硬件,因此即使在VM未被調(diào)度時(shí)也能夠執(zhí)行TCP處理。遺憾的 是,這種方法要求專門的硬件,并且該硬件可能昂貴且難以被改變和重新配置。此外,這種 方法可能要求客戶端0S中具有專有驅(qū)動(dòng)器,這在許多環(huán)境如云環(huán)境中可能難以做到。由于 這些和其他可能的原因,還沒有證明這種方法在當(dāng)今的商業(yè)數(shù)據(jù)中心網(wǎng)絡(luò)中特別受歡迎。
      [0011] 第三種可能的方法是改變調(diào)度器以利于發(fā)送和接收數(shù)據(jù)包的與網(wǎng)絡(luò)綁定的VM。遺 憾的是,難以實(shí)現(xiàn)這第三種方法,因?yàn)榭偸谴嬖诖_保爭奪CHJ資源的不同VM之間的公平性的 內(nèi)在需要。
      [0012] 第四,擁塞控制和確認(rèn)生成可以通過在專門的插件的幫助下將協(xié)議責(zé)任卸載至管 理程序來執(zhí)行。這是侵入性更小的選項(xiàng),因?yàn)檫@不會完全終止TCP連接;然而,由于管理程序 通常在專用的CPU內(nèi)核上被調(diào)度,或者被賦予較高的優(yōu)先級,因此這些管理程序可以顯著提 高不同VM的TCP性能。這種方法已在以下兩個(gè)學(xué)術(shù)論文中被先前提出:(1)2010年11月在路 易斯安那州新奧爾良市(New Orleans,LA)的ACM Supercomputing的論文集中由Ardalan Kangarlou, Sahan Gamage,Ramana Rao Kompe 1 la,Dongyan Xu發(fā)表的vSnoop: Improving TCP Throughput in Virtualized Environments via Acknowledgement Offload;以及 (2)2011 年 10月在葡萄牙的卡斯卡伊斯(Cascais,Portugal)的ACM Symposium on Cloud Computing(S0CC 2011)中由Sahan Gamage,Ardalan Kangarlou,Ramana Rao Kompella, Dongyan Xu發(fā)表的Opportunistic Flooding to Improve TCP Transmit Performance in Virtualized Clouds。
      [0013]然而,這兩篇論文中描述的Xen管理程序方法存在各種局限性。例如,關(guān)于接收路 徑,僅當(dāng)在稱為"共享緩沖器"的小緩沖器中存在空間時(shí),vSnoop才確認(rèn)包,該"共享緩沖器" 位于管理程序與客戶端0S之間的虛擬NIC中。該vSnoop方法依賴于Xen管理程序的特定vNIC 緩沖器,并且受限于Xen vNIC緩沖器的設(shè)計(jì)和實(shí)現(xiàn)方式。如果該緩沖器中沒有空間,則 vSnoop不能確認(rèn)包,因?yàn)樵摪赡芤褋G失。此外,在實(shí)際部署情形中,訪問該緩沖器既難度 大又具有侵入性。另一個(gè)限制是關(guān)于傳輸路徑的。這些論文中描述的特定實(shí)現(xiàn)方式使用Xen 管理程序,該Xen管理程序具有稱為Xen裝置通道的專有虛擬裝置通道,Xen裝置通道用于在 vFlood模塊與客戶端中的TCP堆棧之間進(jìn)行協(xié)調(diào)。這個(gè)特定設(shè)計(jì)要求對管理程序與客戶接 口的邊界進(jìn)行侵入性的改變,這是不理想的。
      [0014] 因此,需要一種既有效又實(shí)際上可部署的用于改進(jìn)虛擬化環(huán)境中的TCP性能的系 統(tǒng)和方法。
      【附圖說明】
      [0015] 在附圖的各圖中以示例的方式而不是限制的方式示出了各種實(shí)施方式,在附圖 中:
      [0016] 圖1是描繪了根據(jù)一個(gè)實(shí)施方式的數(shù)據(jù)中心的圖,圖1示出了物理IT資源和虛擬化 IT資源二者;
      [0017] 圖2是示出了基于硬件的虛擬化系統(tǒng)的示例實(shí)施方式的框圖;
      [0018] 圖3是根據(jù)示例實(shí)施方式的具有多個(gè)VM的虛擬化主機(jī)的框圖;
      [0019]圖4示出了具有vTCP模塊的管理程序的示例實(shí)施方式;
      [0020] 圖5示出了根據(jù)特定實(shí)施方式的vTCP架構(gòu);
      [0021] 圖6示出了根據(jù)示例實(shí)施方式的從物理服務(wù)器至虛擬服務(wù)器的數(shù)據(jù)路徑;
      [0022]圖7示出了根據(jù)示例實(shí)施方式的從虛擬服務(wù)器至物理服務(wù)器的數(shù)據(jù)路徑;
      [0023] 圖8以計(jì)算機(jī)系統(tǒng)的示例形式示出了的機(jī)器的圖形表示,當(dāng)該計(jì)算機(jī)系統(tǒng)內(nèi)的指 令集被執(zhí)行時(shí)可以使該機(jī)器執(zhí)行本文中討論的方法論中的任何一個(gè)或更多個(gè)方法論;
      [0024] 圖9是示出了用于協(xié)議發(fā)送方與協(xié)議接收方之間的加速協(xié)議處理的方法的示例實(shí) 施方式的處理流程圖;
      [0025]圖10是示出了用于早期確認(rèn)協(xié)議處理的方法的示例實(shí)施方式的處理流程圖;
      [0026]圖11是示出了用于包丟失恢復(fù)協(xié)議處理的方法的示例實(shí)施方式的處理流程圖;
      [0027]圖12是示出了用于重復(fù)確認(rèn)的包丟失恢復(fù)協(xié)議處理的方法的示例實(shí)施方式的處 理流程圖;以及
      [0028]圖13是示出了用于流控制協(xié)議處理的方法的另一示例實(shí)施方式的處理流程圖。 [0029]圖14是示出了管理接口的示例實(shí)施方式的框圖。
      [0030]圖15是示出了協(xié)議加速模塊的示例實(shí)施方式的框圖。
      [0031]圖16示出了流表的示例實(shí)施方式。
      [0032] 圖17是示出了根據(jù)一個(gè)實(shí)施方式的用于使用基于策略的TCP堆棧配置信息來傳輸 數(shù)據(jù)包的方法的流程圖。
      [0033] 圖18是示出了根據(jù)一個(gè)實(shí)施方式的用于生成并傳輸診斷信息的方法的流程圖。
      [0034] 圖19是示出了根據(jù)另一實(shí)施方式的用于使用基于策略的TCP堆棧配置信息來傳輸 數(shù)據(jù)包的方法的流程圖。
      [0035] 圖20是示出了根據(jù)實(shí)施方式的用于創(chuàng)建基于策略的TCP堆棧配置信息的方法的流 程圖。
      [0036] 圖21是示出了根據(jù)另一實(shí)施方式的用于創(chuàng)建基于策略的TCP堆棧配置信息的方法 的流程圖。
      [0037] 圖22是示出了根據(jù)實(shí)施方式的用于創(chuàng)建經(jīng)調(diào)整的基于策略的TCP堆棧配置信息的 方法的流程圖。
      【具體實(shí)施方式】
      [0038] 下面的描述包括體現(xiàn)本發(fā)明的說明性實(shí)施方式的系統(tǒng)、方法、技術(shù)、指令序列和計(jì) 算機(jī)程序產(chǎn)品。在下面的描述中,出于說明的目的,闡述了許多具體細(xì)節(jié),以提供對本發(fā)明 主題的各種實(shí)施方式的理解。然而,對于本領(lǐng)域技術(shù)人員來說明顯的是,可以在沒有這些具 體細(xì)節(jié)的情況下實(shí)施本發(fā)明主題的實(shí)施方式。在一般情況下,未詳細(xì)示出公知的指令實(shí)例、 協(xié)議、結(jié)構(gòu)和技術(shù)。
      [0039]如本文所使用的術(shù)語"或者"可以被解釋為包含性的或排他性的含義。另外,盡管 下面討論的各個(gè)示例實(shí)施方式聚焦于市場環(huán)境,但是給出這些實(shí)施方式僅僅是為了使公開 內(nèi)容清楚。因此,包括各種系統(tǒng)架構(gòu)的任何類型的電子出版、電子商務(wù)、社交網(wǎng)絡(luò)或電子商 業(yè)系統(tǒng)和方法可以采用本文中描述的系統(tǒng)和方法的各種實(shí)施方式,并且可以被認(rèn)為落入示 例實(shí)施方式的范圍內(nèi)。下面將詳細(xì)討論各種示例實(shí)施方式中的每個(gè)示例實(shí)施方式。
      [0040] 本文中描述的示例實(shí)施方式提供了一種用于在具有處在虛擬化主機(jī)內(nèi)的協(xié)議發(fā) 送方或協(xié)議接收方的云環(huán)境中的協(xié)議發(fā)送方與協(xié)議接收方之間傳輸數(shù)據(jù)包的系統(tǒng)和方法。 對于一個(gè)實(shí)施方式,所傳輸?shù)臄?shù)據(jù)包可以是TCP數(shù)據(jù)包,使得協(xié)議發(fā)送方和接收方可以是 TCP協(xié)議發(fā)送方和接收方。協(xié)議加速模塊(在各種實(shí)施方式中也稱為vTCP模塊或TCP加速模 塊)可以被安裝并維護(hù)在沿從客戶端0S內(nèi)的協(xié)議發(fā)送方/接收方至物理NIC的數(shù)據(jù)路徑中的 任何位置處。對于一些實(shí)施方式,協(xié)議加速模塊可以被插入或集成在管理程序中。協(xié)議加速 模塊可以觀測使用協(xié)議發(fā)送方(例如,TCP發(fā)送方)的協(xié)議堆棧配置信息(例如,TCP堆棧配置 信息)沿協(xié)議發(fā)送方與協(xié)議接收方之間的數(shù)據(jù)路徑傳輸?shù)臄?shù)據(jù)包。協(xié)議加速模塊可以用基 于策略的協(xié)議堆棧配置信息(例如,基于策略的TCP堆棧配置信息)來覆蓋協(xié)議堆棧配置信 息,使得從協(xié)議加速模塊傳輸至協(xié)議接收方的數(shù)據(jù)包使用基于策略的協(xié)議堆棧配置信息。 對于各種實(shí)施方式,協(xié)議發(fā)送方的協(xié)議堆棧配置信息不修改。
      [0041] 在又一些實(shí)施方式中,在系統(tǒng)的管理接口處創(chuàng)建基于策略的協(xié)議堆棧配置信息。 管理接口可以是用于配置和管理協(xié)議加速模塊的外部管理實(shí)體。管理接口可以提供管理、 配置和控制數(shù)據(jù)中心中的互聯(lián)網(wǎng)協(xié)議(如TCP)的行為的集中式方式。對于示例實(shí)施方式,管 理接口可以包括能夠接收用戶輸入(如數(shù)據(jù)中心管理員)以調(diào)整或修改協(xié)議配置參數(shù)或設(shè) 置的各種輸入裝置和用戶接口。在又一些實(shí)施方式中,可以基于來自協(xié)議加速模塊或者能 夠監(jiān)視和評估沿協(xié)議發(fā)送方與協(xié)議接收方之間的數(shù)據(jù)路徑的協(xié)議行為和性能的另一系統(tǒng) 的反饋來動(dòng)態(tài)地修改協(xié)議配置參數(shù)或設(shè)置。
      [0042] 在各種實(shí)施方式中,協(xié)議配置參數(shù)可以以每個(gè)虛擬機(jī)為單位和/或以每個(gè)流為單 位來配置。在一個(gè)示例中,數(shù)據(jù)流被定義為數(shù)據(jù)包內(nèi)的字段的任意組合。在其他示例中,可 以由用戶(如數(shù)據(jù)中心管理員)使用管理接口來管理和配置多個(gè)虛擬機(jī)。在其他實(shí)施方式 中,外部管理實(shí)體將基于策略的協(xié)議配置信息提供給協(xié)議加速模塊,使得從協(xié)議加速模塊 傳輸至協(xié)議接收方的數(shù)據(jù)包使用基于策略的協(xié)議堆棧配置信息,而不修改協(xié)議發(fā)送方的協(xié) 議堆棧配置信息。
      [0043]傳輸控制協(xié)議(TCP)是由互聯(lián)網(wǎng)工程任務(wù)組(IETF)開發(fā)的傳輸控制協(xié)議。TCP處在 傳輸層,并且是互聯(lián)網(wǎng)協(xié)議套件(IP)的核心協(xié)議之一。TCP提供應(yīng)用程序與互聯(lián)網(wǎng)協(xié)議(IP) 之間的中間層處的通信服務(wù)。由主機(jī)操作系統(tǒng)通過代表用于通信的本地端點(diǎn)的編程接口即 互聯(lián)網(wǎng)插座來管理TCP連接。雖然IP處理數(shù)據(jù)(或消息)的實(shí)際遞送,但是TCP對數(shù)據(jù)傳輸?shù)?個(gè)體單元(稱為片段)進(jìn)行跟蹤,消息被劃分成片段以有效地通過網(wǎng)絡(luò)進(jìn)行路由。TCP被廣泛 使用于許多最流行的互聯(lián)網(wǎng)應(yīng)用,包括萬維網(wǎng)(WWW)、電子郵件、文件傳遞協(xié)議、安全外殼, 對等網(wǎng)絡(luò)文件共享和一些流媒體應(yīng)用。當(dāng)應(yīng)用程序期望使用IP來跨互聯(lián)網(wǎng)發(fā)送一大塊數(shù)據(jù) 時(shí),該軟件可以向TCP發(fā)出單個(gè)請求。
      [0044] IP通過交換包來工作,包是字節(jié)序列并且包括頭以及隨后的正文?;ヂ?lián)網(wǎng)層通過 添加用于目的地IP地址的頭將每個(gè)TCP片段封裝成IP包。當(dāng)目的地計(jì)算機(jī)處的客戶端程序 接收到TCP片段時(shí),TCP層(傳輸層)將個(gè)體片段重新組裝,并且確保當(dāng)TCP層將這些片段流送 到應(yīng)用程序時(shí)這些片段被正確排序且無差錯(cuò)。TCP可靠的流遞送服務(wù)保證接收到的所有字 節(jié)與發(fā)送的字節(jié)相同并且順序正確。TCP規(guī)范的版本可以在IETF RFC 793或更新發(fā)行的 IETF TCP RFC中找到。
      [0045] TCP協(xié)議操作具有三個(gè)階段:(1)連接建立階段,(2)數(shù)據(jù)傳遞階段,以及(3)連接終 止階段。TCP使用三次握手來建立雙向連接。該連接必須在進(jìn)入數(shù)據(jù)傳遞階段之前建立。在 數(shù)據(jù)傳輸完成之后,連接終止階段會關(guān)閉已建立的虛擬電路并且釋放所有已分配的資源。
      [0046] TCP數(shù)據(jù)傳遞提供有序的數(shù)據(jù)傳遞,其中,目的地主機(jī)根據(jù)序列號來重新排列數(shù)據(jù) 包。丟失的數(shù)據(jù)包被重傳輸;例如,TCP流中的未確認(rèn)的任何片段被重傳輸。流控制被用于限 制發(fā)送方傳遞數(shù)據(jù)的速率以保證可靠的遞送。對于流控制,接收方連續(xù)地提示發(fā)送方可以 接收多少數(shù)據(jù)(即,由滑動(dòng)窗口控制)。當(dāng)用于接收的主機(jī)的緩沖器被充滿時(shí),下一個(gè)確認(rèn)在 窗口大小中包含0,以指示停止傳遞并且使得緩沖器中的數(shù)據(jù)能夠被處理。擁塞控制使用幾 種機(jī)制來控制數(shù)據(jù)進(jìn)入網(wǎng)絡(luò)的速率,以使數(shù)據(jù)流保持為低于會觸發(fā)崩潰的速率。對于擁塞 控制,由發(fā)送方使用對數(shù)據(jù)發(fā)送的確認(rèn)或者缺少確認(rèn)來推斷TCP發(fā)送方與接收方之間的網(wǎng) 絡(luò)條件。通過與計(jì)時(shí)器的耦接,TCP發(fā)送方和接收方可以改變數(shù)據(jù)流的行為。
      [0047]本文中描述的各種示例實(shí)施方式通過下述方式來提供TCP性能改進(jìn):將一些TCP處 理(TCP發(fā)送方與TCP接收方之間的)卸載至TCP加速模塊而不修改TCP發(fā)送方和TCP接收方處 的正常TCP處理。位于管理程序內(nèi)的TCP加速模塊也稱為vTCP模塊。由TCP加速模塊執(zhí)行的 TCP處理通常用于快速路徑處理。這是指當(dāng)TCP加速模塊具有用于存儲數(shù)據(jù)包的可用緩沖器 空間時(shí)的成序列的數(shù)據(jù)包的TCP數(shù)據(jù)傳遞處理。
      [0048] TCP加速模塊可以被安裝和維護(hù)在沿從客戶端0S內(nèi)的TCP發(fā)送方/接收方至物理 NIC的數(shù)據(jù)路徑的任何位置處。TCP加速模塊包括其自身的緩沖器,并且不依賴于與vNIC接 口共享的緩沖器。通過具有其自身的緩沖器,TCP加速模塊不依賴于關(guān)于vNIC環(huán)形緩沖器的 占用的最新信息,并且具有位于沿?cái)?shù)據(jù)路徑的各個(gè)位置處的靈活性。TCP加速模塊的各種實(shí) 施方式并入了包損失恢復(fù)算法,以允許從TCP加速模塊與客戶端0S的TCP發(fā)送方/接收方之 間發(fā)生的任何潛在的包丟失中進(jìn)行恢復(fù),如果包被早期確認(rèn)并且如果vTCP緩沖器未滿的 話。
      [0049]在快速路徑處理期間,通過使TCP加速模塊實(shí)現(xiàn)早期確認(rèn)處理連同包損失恢復(fù)處 理來將各種TCP數(shù)據(jù)傳遞處理功能如確認(rèn)生成卸載至TCP加速模塊。由于網(wǎng)絡(luò)擁塞、流量載 荷平衡或者其他不可預(yù)測的網(wǎng)絡(luò)行為,IP包可能被丟失、復(fù)制或者遞送順序出錯(cuò)。TCP檢測 這些問題,請求重傳輸丟失的數(shù)據(jù),將順序出錯(cuò)的數(shù)據(jù)進(jìn)行重新拍列,甚至幫助使網(wǎng)絡(luò)擁塞 最小化。就這些TCP數(shù)據(jù)傳遞處理以快速路徑模式執(zhí)行來說,這些處理可以被卸載至TCP加 速模塊以加速TCP數(shù)據(jù)傳遞。當(dāng)以慢速路徑模式工作時(shí),TCP加速模塊被旁路,并且在不由 TCP加速模塊執(zhí)行TCP處理的情況下發(fā)生TCP發(fā)送方與TCP接收方之間的正常TCP處理。如下 面更詳細(xì)地描述的那樣,可以基于本文中描述的各種實(shí)施方式來實(shí)現(xiàn)各種加速TCP數(shù)據(jù)包 處理技術(shù)。在可替代的實(shí)施方式中,可以使用TCP/IP協(xié)議以外的網(wǎng)絡(luò)或互聯(lián)網(wǎng)協(xié)議。
      [0050]圖1是描繪了根據(jù)一個(gè)實(shí)施方式的數(shù)據(jù)中心100的圖,圖1示出了物理IT資源和虛 擬化IT資源二者。數(shù)據(jù)中心100示出了在一起工作以提供由物理IT資源支持的虛擬化IT資 源的各種部件。將數(shù)據(jù)中心中的IT資源包使得能夠進(jìn)行電力共享、在共享的IT資源使用中 的更高效率以及IT人員的改進(jìn)的可訪問性?,F(xiàn)代數(shù)據(jù)中心房屋將IT資源如服務(wù)器、數(shù)據(jù)庫、 網(wǎng)絡(luò)和電信裝置以及軟件系統(tǒng)集中式。這樣的數(shù)據(jù)中心可以包括物理IT資源和虛擬IT資源 二者。通過虛擬化,服務(wù)器環(huán)境的多個(gè)虛擬拷貝可以由單個(gè)物理服務(wù)器托管。每個(gè)拷貝可以 被提供給不同的用戶、可以被獨(dú)立地配置,并且可以包含該拷貝自己的操作系統(tǒng)和應(yīng)用程 序。
      [0051 ] 圖1中示出的物理IT資源包括:物理服務(wù)器160、161和162;物理存儲裝置170、171 和173;以及網(wǎng)絡(luò)硬件150。硬件中還包括與虛擬化基礎(chǔ)架構(gòu)管理(VIM)工具180通信的計(jì)算 機(jī)系統(tǒng)190、191和192。
      [0052]服務(wù)器虛擬化是使用虛擬化軟件將IT硬件抽象成虛擬服務(wù)器的過程。使用虛擬化 軟件通過分配物理IT資源并且安裝操作系統(tǒng)來創(chuàng)建虛擬服務(wù)器。虛擬服務(wù)器使用該虛擬服 務(wù)器自己的客戶端操作系統(tǒng),該虛擬服務(wù)器自己的客戶端操作系統(tǒng)獨(dú)立于在其中創(chuàng)建該虛 擬服務(wù)器的操作系統(tǒng)。圖1中的虛擬IT資源包括虛擬服務(wù)器或VM 110、115、120、125和130連 同管理程序140、141和142以及VM 180。管理程序140、141和142主要用于生成物理服務(wù)器 的虛擬服務(wù)器實(shí)例。管理程序通常被限定為一臺物理服務(wù)器,因此只能創(chuàng)建該服務(wù)器的虛 擬鏡像。例如,管理程序140可以在VM 110和115中創(chuàng)建物理服務(wù)器160的虛擬鏡像。VIM 180 提供了用于管理跨物理服務(wù)器的多個(gè)管理程序的特征的范圍。
      [0053]稱為支持重傳輸?shù)目隙ù_認(rèn)的技術(shù)用于保證可靠的TCP數(shù)據(jù)包傳遞。這種技術(shù)要 求TCP接收方在接收到數(shù)據(jù)時(shí)用確認(rèn)消息作出響應(yīng)。TCP發(fā)送方保存該TCP發(fā)送方發(fā)送的每 個(gè)數(shù)據(jù)包的記錄。TCP發(fā)送方還維護(hù)從該包被發(fā)送時(shí)開始計(jì)時(shí)的計(jì)時(shí)器,如果在消息被確認(rèn) 之前發(fā)生計(jì)時(shí)器到期或超時(shí),則重傳輸該包。在包被丟失或損壞的情況下需要該計(jì)時(shí)器。參 照圖1,可以在物理服務(wù)器160、161和162中的之一與虛擬服務(wù)器110、115、120、125、130中的 之一之間建立TCP連接。例如,如果可以在服務(wù)器160與虛擬服務(wù)器110之間建立TCP連接,則 由于連接是雙向的,因此物理服務(wù)器160或者虛擬服務(wù)器110可以是TCP接收方或TCP發(fā)送 方。本段落中描述的支持重傳輸?shù)目隙ù_認(rèn)技術(shù)可以用于在物理服務(wù)器160與虛擬服務(wù)器 110之間傳遞TCP包數(shù)據(jù)。
      [0054]圖2是示出了基于硬件的虛擬化系統(tǒng)200的示例實(shí)施方式的框圖。在本實(shí)施方式 中,單個(gè)物理計(jì)算機(jī)系統(tǒng)250(也稱為虛擬化主機(jī)或硬件主機(jī))可以包括虛擬機(jī)(VM)的一個(gè) 或更多個(gè)實(shí)例,如VM 210、220和230。在本實(shí)施方式中,計(jì)算機(jī)系統(tǒng)250安裝有稱為管理程序 240的軟件層,軟件層提供虛擬化平臺,并且可以被用于管理和監(jiān)視計(jì)算機(jī)系統(tǒng)250上的一 個(gè)或更多個(gè)實(shí)例即VM 210、220和230。在本示例中,管理程序240被直接安裝在計(jì)算機(jī)系統(tǒng) 250的本機(jī)硬件上;然而,管理程序也可以作為軟件層而被安裝在稱為主機(jī)操作系統(tǒng)的本機(jī) 操作系統(tǒng)中。
      [0055] 在本實(shí)施方式中,管理程序240安裝有VM 210、220和230這三個(gè)實(shí)例。各VM具有操 作系統(tǒng),如客戶端操作系統(tǒng)212、222和232以及各種程序應(yīng)用,如應(yīng)用軟件211、221和231。如 以上描述的那樣,操作系統(tǒng)212、222、223和應(yīng)用程序211、221、231與共置在相同的物理計(jì)算 機(jī)系統(tǒng)250上的其他VM基本上單獨(dú)地運(yùn)行。各VM 210、220和230與管理程序240直接通信,管 理程序240反過來又與各VM 210、220和230進(jìn)行通信。
      [0056]圖3是根據(jù)示例實(shí)施方式的管理程序310的框圖。管理程序310是提供簡單用戶接 口的虛擬化軟件。管理程序310作為一薄層軟件而存在,其用于處理硬件管理功能以建立虛 擬化管理層。裝置驅(qū)動(dòng)器和系統(tǒng)服務(wù)被優(yōu)化以用于提供虛擬服務(wù)器或VM。虛擬化層被設(shè)計(jì) 成直接與虛擬化主機(jī)320進(jìn)行通信,要求所有相關(guān)聯(lián)的裝置驅(qū)動(dòng)器與支持軟件與管理程序 310兼容。這通常稱為基于硬件的虛擬化。
      [0057]管理程序310可以直接安裝在虛擬化主機(jī)320中,并且提供用于控制、共享和調(diào)度 硬件資源如處理器資源、存儲器和I/O的使用的特征。它們可作為專用資源呈現(xiàn)給每個(gè)虛擬 服務(wù)器的操作系統(tǒng)。CPU 321、存儲器322、網(wǎng)絡(luò)接口323和盤324代表虛擬化主機(jī)320內(nèi)的各 種部件。調(diào)度器311負(fù)責(zé)調(diào)度用于VM 301、302、303和304的CPU資源。隨著更多的VM共享相同 內(nèi)核/CPU 321,針對每個(gè)VM的CPU調(diào)度延遲顯著增加。這種增加對于向VM 301、302、303和 304的TCP傳輸?shù)男阅芫哂胸?fù)面影響。
      [0058]圖4示出了根據(jù)各種實(shí)施方式的管理程序410的框圖,管理程序410包括用于加速 兩個(gè)主機(jī)之間的TCP性能的vTCP模塊420。管理程序450包括虛擬NIC(稱為vNIC),如與VM 401、402、403和404進(jìn)行通信的¥祖0 411、412、413和414。管理程序450包括與虛擬化主機(jī) (未示出)的物理NIC 440進(jìn)行通信的虛擬交換機(jī)(vSwitch)如vSWITCH 430。管理程序450中 還包括vTCP模塊420。vTCP模塊420也稱為TCP加速模塊。在圖4中示出的實(shí)施方式中,虛擬數(shù) 據(jù)路徑包括-10 411、412、413和414、¥1^^模塊420以及¥3¥^吐430。在可替代的實(shí)施方式 中,vTCP模塊420可以位于沿虛擬數(shù)據(jù)通道的其他位置,并且不可知其確切位置。例如,vTCP 模塊420可以位于vSwitch 430的下方而不會影響管理程序450的性能。
      [0059]在示例實(shí)施方式中,vTCP模塊420包括本地緩沖器(未示出),該本地緩沖器可以通 過由管理接口 421示出的外部管理實(shí)體來配置和管理。外部管理實(shí)體的實(shí)例包括VMWare的 vSphere或OpenStack的配置平臺。vTCP模塊420改進(jìn)虛擬化環(huán)境中的TCP吞吐量。vTCP模塊 420無縫插入管理程序450如VMWare ESX、Xen和KVM中并且加速TCP連接,而不會中斷或者需 要來自終端主機(jī)TCP堆棧的合作。
      [0060]在各種實(shí)施方式中,管理接口421可以管理接口421可以提供管理、配置和控制數(shù) 據(jù)中心中的TCP的行為的集中式方式。例如,vTCP模塊420可以提供用于控制TCP的各個(gè)方面 的若干個(gè)"調(diào)諧旋鈕"。這些調(diào)諧旋鈕代表可調(diào)整的協(xié)議參數(shù)或設(shè)置,這些調(diào)整的協(xié)議參數(shù) 或設(shè)置可以被配置成改變沿?cái)?shù)據(jù)路徑(或者協(xié)議加速模塊與協(xié)議接收方之間的數(shù)據(jù)路徑的 至少一部分)的協(xié)議行為。例如,當(dāng)在TCP發(fā)送方與TCP接收方之間傳輸TCP包時(shí),可調(diào)整的參 數(shù)或設(shè)置參考TCP頭字段內(nèi)的一個(gè)或更多個(gè)TCP值。管理接口 421可以包括能夠接收用戶輸 入以修改可配置協(xié)議參數(shù)的各種輸入裝置和/或用戶接口。在又一些實(shí)施方式中,可以基于 來自協(xié)議加速模塊或者能夠監(jiān)視和評估沿協(xié)議發(fā)送方與協(xié)議接收方之間的數(shù)據(jù)路徑的協(xié) 議行為和性能的另一個(gè)系統(tǒng)的反饋來動(dòng)態(tài)地修改協(xié)議配置參數(shù)或設(shè)置。
      [0061] 在示例實(shí)施方式中,管理接口421通過調(diào)整協(xié)議發(fā)送方(例如,TCP協(xié)議發(fā)送方)的 協(xié)議堆棧配置信息的協(xié)議參數(shù)或設(shè)置來創(chuàng)建基于策略的協(xié)議堆棧配置信息(例如,基于策 略的TCP堆棧配置信息)。例如,由TCP發(fā)送方傳輸?shù)腡CP數(shù)據(jù)包包括來自TCP發(fā)送方的TCP堆 棧配置信息的TCP頭值。基于策略的TCP堆棧配置信息是指由管理接口創(chuàng)建的提供給協(xié)議加 速模塊的TCP堆棧配置信息。在各種實(shí)施方式中,協(xié)議加速模塊可以覆蓋發(fā)送方的TCP堆棧 配置信息,同時(shí)在協(xié)議加速模塊與TCP接收方之間傳輸TCP數(shù)據(jù)包。在又一些實(shí)施方式中,基 于策略的TCP堆棧配置信息可以覆蓋發(fā)送方的TCP堆棧配置信息而不修改發(fā)送方的TCP堆棧 配置。可以通過修改、添加或刪除在協(xié)議加速模塊與TCP發(fā)送方之間的數(shù)據(jù)路徑的一部分之 間傳輸?shù)臄?shù)據(jù)包的TCP頭值來覆蓋一個(gè)或更多個(gè)TCP頭值。在一些實(shí)施方式中,可以根據(jù)每 個(gè)虛擬機(jī)或者根據(jù)每個(gè)流來針對TCP數(shù)據(jù)包覆蓋一個(gè)或更多個(gè)頭值。在其他實(shí)施方式中,基 于策略的TCP堆棧配置信息代表用于使用特定準(zhǔn)則將具有不同特性的數(shù)據(jù)包組織成不同類 的流分類信息。
      [0062] 調(diào)諧旋鈕或可配置的TCP參數(shù)或設(shè)置可以根據(jù)每個(gè)虛擬機(jī)和/或根據(jù)每個(gè)流來配 置,其中,流可以是來自包的字段的任意組合(包括通配符),所述字段包括源IP地址、目的 地IP地址、端口和其他協(xié)議字段。此外,這些旋鈕的配置值可以在TCP連接的生命期期間(例 如在連接的開始期間,或者對于數(shù)據(jù)傳遞的第一個(gè)1兆字節(jié)(MB)期間,或者在連接的生命期 內(nèi)的任何這樣的任意時(shí)間段期間)被改變一次或更多次。這些調(diào)整旋鈕使得能夠關(guān)于虛擬 機(jī)(例如,客戶機(jī)操作系統(tǒng))內(nèi)的TCP堆棧如何工作來獨(dú)立地修改TCP的行為。這種靈活性是 非常有用的,尤其是因?yàn)椴僮飨到y(tǒng)使用和出版/提案(例如,RFC)。升級TCP堆??赡懿皇且?種選擇,因?yàn)門CP堆棧可能在運(yùn)行難以取代的舊的應(yīng)用程序。即使在基礎(chǔ)架構(gòu)提供商不具有 對客戶機(jī)操作系統(tǒng)的TCP行為的控制的情況下,仍是困難的。
      [0063] 在示例實(shí)施方式中,由vTCP模塊420提供的各種調(diào)諧旋鈕和設(shè)置可以包括但不限 于:一個(gè)或更多個(gè)擁塞控制算法旋鈕、一個(gè)或更多個(gè)擁塞控制參數(shù)旋鈕以及(3)流量差旋 鈕。在可替代的實(shí)施方式中,對TCP控制數(shù)據(jù)的配置或?qū)CP參數(shù)的設(shè)置可以使用其他形式 的數(shù)據(jù)輸入而不使用一個(gè)或更多個(gè)調(diào)諧旋鈕來實(shí)現(xiàn)。
      [0064] 對于一個(gè)實(shí)施方式,一個(gè)或更多個(gè)擁塞控制算法旋鈕或設(shè)置被用于與用于不同的 流/連接的標(biāo)準(zhǔn)設(shè)置一起應(yīng)用不同的堆棧擁塞控制算法(例如,Cubic、NewReno)。因此,vTCP 模塊420可以提供簡單的方式來覆蓋TCP堆棧中的客戶端操作系統(tǒng)的TCP連接行為而不對客 戶端操作系統(tǒng)進(jìn)行任何修改。
      [0065] 對于其他實(shí)施方式,一個(gè)或更多個(gè)擁塞控制參數(shù)旋鈕或設(shè)置可以被用于選擇用于 各種擁塞控制參數(shù)的不同的設(shè)置,各種擁塞控制參數(shù)例如初始擁塞窗口、慢啟動(dòng)閾值、擁塞 窗口發(fā)生加法增大時(shí)的速率、在遇到包丟失時(shí)擁塞窗口的減小因數(shù)、以及用于觸發(fā)快速重 傳輸?shù)闹貜?fù)ACK閾值。在示例實(shí)施方式中,初始擁塞窗口可以被設(shè)置為默認(rèn)保守值1或3,或 者被設(shè)置為相對新引進(jìn)的最大片段尺寸(MSS)的值10,或者甚至是在IETF TCP規(guī)范或發(fā)布/ 提案(如RFC)中未規(guī)定的一些值。在另一示例實(shí)施方式中,不是每當(dāng)遇到包丟失時(shí)就將擁塞 窗口減少1/2的默認(rèn)行為,而是可以將擁塞窗口設(shè)置成3/4,以確保特定TCP連接保持攻擊 性。
      [0066]在又一些實(shí)施方式中,一個(gè)或更多個(gè)流量差旋鈕旋鈕或設(shè)置可以用于根據(jù)集中定 義的策略基于總體網(wǎng)絡(luò)條件來選擇用于不同TCP連接的不同參數(shù),例如,選擇性地有利于特 定實(shí)時(shí)的或面向期限的連接多于面向塊傳遞的連接。對于示例實(shí)施方式,vTCP模塊420允許 偏離用于特定流的RFC兼容設(shè)置,例如TCP連接的兩端在容易容許這樣的偏離或?qū)嶒?yàn)的數(shù)據(jù) 中心內(nèi)的設(shè)置。對于其他示例實(shí)施方式,面向客戶的或者面向公共互聯(lián)網(wǎng)的連接、符合標(biāo)準(zhǔn) 的TCP行為可能會被暴露。在又一些實(shí)施方式中,鑒于vTCP模塊420中的協(xié)議緩沖器是稀缺 資源,可以優(yōu)先分配給這些連接,以提供有益的附加緩沖空間。
      [0067] 在各種實(shí)施方式中,vTCP模塊420還可以協(xié)助測量和診斷虛擬化環(huán)境中的TCP連接 問題,在這種情況下,調(diào)度在影響TCP連接方面可能發(fā)揮顯著作用。例如,vTCP模塊420可以 測量從虛擬機(jī)(TCP發(fā)送方)至vTCP模塊420的個(gè)體往返時(shí)間(RTT)以及從vTCP模塊420至另 一端(TCP接收方)的RTT。例如,參照圖7,測量從TCP發(fā)送方799至vTCP模塊775的RTT,以及從 vTCP模塊775至TCP接收方798的RTT。
      [0068] 這將有助于理解和診斷當(dāng)遇到差的吞吐量時(shí)的連接。例如,VM與vTCP模塊420之間 的高RTT的證據(jù)將清楚地表明,假如憑經(jīng)驗(yàn)觀測的話,調(diào)度氣泡導(dǎo)致TCP性能顯著下降。在其 他示例中,如果RTT表現(xiàn)為良好,則可能在網(wǎng)絡(luò)內(nèi)部存在擁塞從而造成吞吐量差。因此,使用 vTCP模塊420使診斷變得更容易。vTCP模塊420還可以測量和監(jiān)視許多其他通用的TCP連接 特性,如重復(fù)ACK的數(shù)目、重復(fù)包的數(shù)目、重傳輸?shù)臄?shù)目等,這將使得系統(tǒng)管理員如IT工作人 員能夠以集中的方式獲得TCP信息。在示例實(shí)施方式中,管理接口421可以執(zhí)行對TCP吞吐量 和連接特性的診斷、測量和監(jiān)視。
      [0069] vTCP模塊420通過經(jīng)加速的TCP處理來改進(jìn)TCP發(fā)送方與接收方之間的TCP吞吐量。 vTCP模塊420在管理程序450的內(nèi)部運(yùn)行,管理程序450要么始終被調(diào)度(使用用于特權(quán)管理 程序的專用內(nèi)核)要么按照優(yōu)先級來運(yùn)行。因?yàn)樵趘TCP模塊420內(nèi)實(shí)現(xiàn)了 TCP的基本時(shí)間關(guān) 鍵功能,因此TCP性能顯著提高。在具有足夠的管理程序CPU周期的實(shí)施方式中,可以實(shí)現(xiàn)用 于TCP連接的完全線速率。
      [0070] 圖5示出了根據(jù)特定實(shí)施方式的vTCP模塊500的架構(gòu)。對于各種實(shí)施方式,也被稱 為協(xié)議加速模塊的vTCP模塊500代表帶內(nèi)架構(gòu)。帶內(nèi)架構(gòu)依賴于觀測通過vTCP模塊500的 TCP包,并且客戶端TCP堆棧不知道vTCP模塊500的存在。在接收側(cè)501,TCP數(shù)據(jù)包從網(wǎng)絡(luò)505 發(fā)送至客戶端507。在發(fā)送側(cè)502,TCP數(shù)據(jù)包從客戶端508發(fā)送至網(wǎng)絡(luò)506 wTCP模塊500的帶 內(nèi)架構(gòu)通過向TCP發(fā)送方發(fā)送信號來提供經(jīng)加速的TCP處理以傳輸更多的包(經(jīng)由早期確 認(rèn))并且實(shí)現(xiàn)完全擁塞控制協(xié)議。
      [0071] 接收側(cè)501包括緩沖器521、計(jì)時(shí)器522和擁塞控制模塊523。發(fā)送側(cè)502包括緩沖器 530、計(jì)時(shí)器531和擁塞控制模塊532。由于TCP是全雙工協(xié)議,因此接收側(cè)501和發(fā)送側(cè)502二 者共享流表520。
      [0072]接收側(cè)緩沖器521保存需要由vTCP模塊500加速的每一個(gè)TCP連接的所有包。由于 沒有由vTCP模塊500處理的順序出錯(cuò)的包,因此緩沖器521只包含順序正確的片段或按序列 的數(shù)據(jù)包。接收側(cè)緩沖器521保存沿接收路徑(從網(wǎng)絡(luò)505至客戶端507)的包。除了發(fā)送側(cè)緩 沖器530應(yīng)用于從客戶端508向網(wǎng)絡(luò)506行進(jìn)的包的事實(shí)以外,發(fā)送側(cè)緩沖器530與接收側(cè)緩 沖器521類似。同樣,由于僅順序正確的片段由vTCP模塊500處理,因此緩沖器530僅存儲順 序正確的包。緩沖器530僅包括順序正確的包的事實(shí)使得緩沖器管理功能和vTCP功能相對 較輕。然而,完全可以為順序出錯(cuò)的片段添加額外的緩沖器空間作為簡單擴(kuò)展,特別是在接 收方向上,因?yàn)樵诮邮辗较蛏希瑪?shù)據(jù)中心網(wǎng)絡(luò)可能會丟棄特定包從而導(dǎo)致順序出錯(cuò)的包到 達(dá)。在發(fā)送側(cè)502, VM非常不可能傳輸順序出錯(cuò)的包,因?yàn)関NIC會造成至客戶端0S中的TCP插 座的全程的背壓,使得沒有包丟失。因此,發(fā)送側(cè)緩沖器530可能不需要緩沖這些順序出錯(cuò) 的數(shù)據(jù)包,盡管在需要時(shí)可以添加緩沖。
      [0073]在發(fā)送側(cè)502和接收側(cè)501二者獨(dú)立地需要重傳輸計(jì)時(shí)器,以用于在給定時(shí)間段內(nèi) 沒有接收到確認(rèn)或者發(fā)生超時(shí)的情況下重傳輸包。計(jì)時(shí)器522在接收側(cè)501,計(jì)時(shí)器531在發(fā) 送側(cè)502。
      [0074] TCP處理邏輯510是用于vTCP模塊500的中央核心邏輯,并且本質(zhì)上是事件驅(qū)動(dòng)的。 響應(yīng)于進(jìn)入方向或離開方向的包,邏輯510基本上確定與處理對應(yīng)的動(dòng)作。
      [0075]接收側(cè)501的擁塞控制模塊523確保vTCP模塊與VM內(nèi)的TCP接收方之間的共享緩沖 器不發(fā)生崩潰。擁塞控制模塊523還將由于vTCP模塊與VM內(nèi)的TCP接收方之間的緩沖器的溢 出而丟失了的任何包進(jìn)行恢復(fù)。擁塞控制模塊532在發(fā)送側(cè)502,并且在vTCP模塊500與遠(yuǎn)程 接收方之間應(yīng)用符合TCP標(biāo)準(zhǔn)的擁塞控制算法(例如,NewReno、Cubic)。包丟失恢復(fù)算法/處 理和擁塞控制算法/處理二者被用于確保分別重傳輸沿接收路徑或發(fā)送路徑的丟失的包。
      [0076]流表520可以存儲用于每一個(gè)連接的TCP連接信息和狀態(tài)(例如,最大尺寸片段 (MSS)值、各種TCP選項(xiàng)以及序列號信息)。在各種實(shí)施方式中,TCP連接信息和用于TCP連接 的狀態(tài)由TCP頭字段中的一個(gè)或更多個(gè)TCP頭字段的數(shù)據(jù)來限定,在下面的段落中將簡要地 描述TCP頭字段。在又一些實(shí)施方式中,流表520可以存儲未包含在來自TCP頭字段的數(shù)據(jù)中 的附加的TCP連接和狀態(tài)信息,例如存儲在vTCP緩沖器521中的TCP數(shù)據(jù)包的拷貝的位置信 息。流表520可以存儲由接收側(cè)501和發(fā)送側(cè)502二者使用的共用信息。對于示例實(shí)施方式, 存儲在流表520中的每個(gè)流TCP控制信息包括:預(yù)期要由vTCP模塊500接收的成序列的包的 序列號、預(yù)期要由VM接收的成序列的包的序列號、TCP窗口大小、通過的或者被加速的操作 的當(dāng)前模式(也分別稱為慢速路徑模式和快速路徑模式)以及指向存儲TCP數(shù)據(jù)包的vTCP緩 沖器或協(xié)議加速器緩沖器(如緩沖器521和530)的指針。該指針提供用于具有存儲在包括接 收側(cè)緩沖器521和發(fā)送側(cè)緩沖器530的vTCP緩沖器中的拷貝的TCP數(shù)據(jù)包的位置信息。
      [0077]更具體地,TCP數(shù)據(jù)包包括TCP頭之后的數(shù)據(jù)片段,數(shù)據(jù)片段包含10個(gè)強(qiáng)制性字段 以及可選的擴(kuò)展字段。數(shù)據(jù)頭字段包括以下字段:源端口(標(biāo)識源應(yīng)用程序的端口號);目的 地端口(標(biāo)識目的地應(yīng)用程序的端口號);序列號(指定該片段中的數(shù)據(jù)的第一個(gè)字節(jié)的序 列號);確認(rèn)號(標(biāo)識所接收的最高字節(jié)的位置);數(shù)據(jù)偏移量(指定該片段的數(shù)據(jù)部分的偏 移量);保留代碼(以備將來使用);標(biāo)志或控制位(用于確定該片段的目的的9個(gè)1位標(biāo)志); 窗口(指定目的地愿意接受的數(shù)據(jù)量);校驗(yàn)和(驗(yàn)證片段頭和數(shù)據(jù)的完整性);緊急指針(指 示要盡快遞送的數(shù)據(jù));以及可選項(xiàng)(包括:(1)選項(xiàng)列表的末尾一一指示選項(xiàng)列表的末尾; (2)無操作一一指示選項(xiàng)之間的界限;(3)最大片段尺寸(MSS)-一TCP可以接收的最大片段 尺寸,其只在初始連接請求中發(fā)送)。控制位包括以下1位標(biāo)志:URG(緊急指針字段有效); ACK(確認(rèn)字段有效);PSH(片段請求PUSH) ;RTS(重置連接);SYN(將序列號同步);以及FIN (發(fā)送方已達(dá)到其字節(jié)流的末尾)。支持顯式擁塞通知(ECN)即允許端對端地通知網(wǎng)絡(luò)擁塞 而不丟棄包的三個(gè)附加的1位標(biāo)志包括:NS(ECN--現(xiàn)時(shí)隱蔽保護(hù));CWR(擁塞窗口減少標(biāo) 志);以及ECE(回應(yīng)指示)。數(shù)據(jù)片段的內(nèi)容是為應(yīng)用程序攜帶的有效載荷數(shù)據(jù)。數(shù)據(jù)片段的 長度未在TCP片段頭中指定;然而,數(shù)據(jù)片段的長度可以通過從總IP數(shù)據(jù)報(bào)長度(在IP頭中 指定)中減去TCP頭和封裝IP頭的組合長度來計(jì)算。
      [0078]如上所述,流表520還存儲TCP連接信息和用于每一個(gè)連接的狀態(tài)。TCP包的頭中的 各字段包含TCP連接信息和用于TCP包的狀態(tài)信息。在各種實(shí)施方式中,vTCP模塊500接收并 存儲TCP包數(shù)據(jù)的拷貝(在緩沖器521和/或流表520中),并且進(jìn)一步允許對存儲在流表520 中的TCP頭數(shù)據(jù)信息的拷貝進(jìn)行改變,而不改變將由TCP接收方比如TCP接收方699 (圖6)或 798 (圖7)接收的實(shí)際的TCP包數(shù)據(jù)。例如,TCP流可以包括來自TCP包數(shù)據(jù)的包括下述字段的 任意組合:包含在源端口中的源IP地址、包含在目的地端口中的目的地地址以及可以在TCP 連接的生命期期間的任何時(shí)候以每個(gè)虛擬機(jī)為單位和/或以每個(gè)流為單位配置的TCP頭字 段中存儲的任何其他數(shù)據(jù)。存儲在vTCP模塊500內(nèi)的該數(shù)據(jù)可以稱為可配置TCP控制數(shù)據(jù)。 通過使包括vTCP模塊500的系統(tǒng)的系統(tǒng)管理員能夠配置TCP控制數(shù)據(jù),可以獨(dú)立于TCP堆棧 在虛擬機(jī)(VM)客戶端操作系統(tǒng)(例如,客戶端操作系統(tǒng)212、222或232)內(nèi)如何工作來修改 TCP的行為。這種靈活性可能很有用,尤其是在操作系統(tǒng)使用可能會或可能不會被采用為互 聯(lián)網(wǎng)標(biāo)準(zhǔn)的相當(dāng)保守并且基于IETF的舊發(fā)行版本和/或提案(例如,RFC文檔)的TCP設(shè)置的 情況下。升級TCP堆??赡懿皇强蛇x項(xiàng),因?yàn)橄到y(tǒng)可能在運(yùn)行難以取代的舊的應(yīng)用程序。即 使在基礎(chǔ)架構(gòu)提供商不具有對客戶端操作系統(tǒng)的TCP行為的控制的情況下,仍是困難的。對 于示例實(shí)施方式,系統(tǒng)管理員或IT工作人員可以經(jīng)由圖4中示出的管理接口 421來配置TCP 控制數(shù)據(jù)。
      [0079] vTCP模塊500在兩個(gè)主機(jī)之間執(zhí)行快速路徑(或經(jīng)加速的)TCP處理??焖俾窂教幚?通常相對于慢速路徑處理占主導(dǎo)地位??焖俾窂教幚硎侵府?dāng)vTCP緩沖器具有足夠的空間來 存儲從TCP發(fā)送方傳輸至TCP接收方的成序列的包時(shí)對所述成序列的包的TCP處理。通過使 vTCP模塊500從各主機(jī)中的之一接管TCP處理的特定責(zé)任而不更改任何主機(jī)處的TCP協(xié)議處 理和語義來執(zhí)行用于加速TCP處理的快速路徑。在各種實(shí)施方式中,TCP發(fā)送方或者TCP接收 方位于虛擬機(jī)內(nèi)。TCP的另一端可以是物理系統(tǒng)或者虛擬系統(tǒng)。貫穿本說明書,如圖6所示的 接收數(shù)據(jù)路徑是指TCP接收方位于VM內(nèi)的情況,而如圖7所示發(fā)送數(shù)據(jù)路徑是指TCP發(fā)送方 位于VM內(nèi)的情況。使用經(jīng)加速的快速路徑處理,改進(jìn)了主機(jī)之間的TCP吞吐量,因?yàn)関TCP模 塊接管了用于許多TCP功能的責(zé)任,如確認(rèn)生成、包重傳輸、流控制、擁塞控制等。
      [0080]圖6示出了從TCP發(fā)送方698至TCP接收方699的數(shù)據(jù)路徑600的實(shí)施方式,并且被稱 為接收側(cè)。在本實(shí)施方式中,TCP發(fā)送方698位于物理服務(wù)器630內(nèi),TCP接收方699位于VM 650內(nèi)。對于可替代的實(shí)施方式,物理服務(wù)器630可以用虛擬服務(wù)器來代替。TCP連接由操作 系統(tǒng)通過代表用于通信的本地端點(diǎn)的互聯(lián)網(wǎng)插座的編程接口來管理。操作系統(tǒng)610內(nèi)的TCP 發(fā)送方698通過物理服務(wù)器630的物理NIC 620然后通過數(shù)據(jù)中心網(wǎng)絡(luò)640將數(shù)據(jù)包傳輸至 VM 650的物理NIC 660,然后數(shù)據(jù)包傳輸通過vSwitch 670、vTCP模塊675(用于快速路徑加 速TCP處理)、vNIC 680至VM 0S 695內(nèi)的TCP接收方699。
      [00811在接收方向上,位于物理機(jī)或者物理服務(wù)器630內(nèi)的TCP發(fā)送方698向處在虛擬機(jī) 0S 695內(nèi)的TCP接收方699傳輸數(shù)據(jù)包。此處,大多數(shù)數(shù)據(jù)包向VM 0S 695傳輸,而TCP確認(rèn)包 從TCP接收方699傳輸至TCP發(fā)送方698。如圖6所示,vTCP模塊675位于VM 0S 695中的TCP接 收方699與物理NIC 660之間。vTCP模塊675需要呈現(xiàn)的確切位置可能會發(fā)生變化,并且各種 實(shí)施方式的架構(gòu)和解決方案不可知其確切位置。例如,vTCP模塊675可以被定位在vSwitch 670的下方。
      [0082]下面描述接收側(cè)處的TCP處理中涉及的各個(gè)步驟,包括由vTCP模塊675采取的用于 加速的具體步驟。TCP發(fā)送方698使用標(biāo)準(zhǔn)的三次握手發(fā)起與TCP接收方699的TCP會話。在基 本的TCP三次握手的步驟期間,vTCP模塊675在兩個(gè)方向上觀測在TCP發(fā)送方698與TCP接收 方699之間發(fā)送的所有包,并對初始序列號和TCP會話的其他細(xì)節(jié)進(jìn)行跟蹤。vTCP模塊675還 將解析TCP選項(xiàng),以了解是否已啟用如DSACK和時(shí)間戳的選項(xiàng),并且還注意所使用的窗口比 例因數(shù)。
      [0083] TCP發(fā)送方698開始向TCP接收方699發(fā)送數(shù)據(jù)包。如果vTCP模塊675觀測到成序列 的包,則vTCP模塊675會在本地緩沖器內(nèi)制作該包的拷貝,并代表目標(biāo)TCP接收方699生成早 期確認(rèn)。該本地緩沖器位于vTCP模塊675內(nèi),并且可以通過外部管理實(shí)體如圖4中示出的管 理接口 421來配置和管理。本地緩沖器可以稱為協(xié)議加速器緩沖器。vTCP模塊675在內(nèi)部管 理協(xié)議加速器緩沖器以對包進(jìn)行跟蹤。對于各種實(shí)施方式,vTCP模塊675包括包丟失恢復(fù)處 理?;趤碜訲CP接收方699的確認(rèn)(也稱為"接收方確認(rèn)"或缺少確認(rèn)),vTCP模塊675確定 是否重傳輸包。為了重傳輸包,包的拷貝被存儲在稱為協(xié)議加速器緩沖器的本地緩沖器中 的vTCP模塊675中。如果在超時(shí)時(shí)段內(nèi)沒有接收到接收方確認(rèn),則潛在地可能是因?yàn)榘褋G 失,包損失恢復(fù)處理將確保重傳輸這些包。
      [0084]當(dāng)目標(biāo)TCP接收方699接收到數(shù)據(jù)包時(shí),目標(biāo)TCP接收方699也會生成與這些包對應(yīng) 的確認(rèn)。因?yàn)檫@些數(shù)據(jù)包在早期確認(rèn)處理中已經(jīng)被vTCP模塊675確認(rèn),所以這些確認(rèn)由vTCP 模塊675截獲并丟棄。
      [0085]像常規(guī)的TCP接收方699會進(jìn)行的那樣,對于之前已經(jīng)被確認(rèn)的數(shù)據(jù)包,由vTCP模 塊675針對來自TCP發(fā)送方698的包生成重復(fù)確認(rèn)。如果重復(fù)包到達(dá)而在本地緩沖器中已經(jīng) 存在拷貝,則vTCP模塊675將只是丟棄該包。
      [0086]由于vTCP緩沖器是有限的資源,因此可能被充滿,特別是如果TCP接收方699接受 包緩慢。在這樣的情況下,vTCP模塊675進(jìn)入"關(guān)閉"狀態(tài),在"關(guān)閉"狀態(tài)中,vTCP模塊675不 對來自TCP發(fā)送方698的任何數(shù)據(jù)包成成任何早期確認(rèn)。vTCP模塊675只是將這些包傳遞通 過VM 650,以將對這些包的控制返回給終端主機(jī)。在可替代的方法中,vTCP模塊675可以修 改由接收方699通知的接收窗口,以考慮緩沖器資源的占用,使得發(fā)送方698再也不傳輸窗 口外部的分段。
      [0087]在緩沖器空間被再次開放時(shí),vTCP模塊675啟動(dòng)對按順序的任何數(shù)據(jù)包的早期確 認(rèn)處理。如果包到達(dá)時(shí)順序出錯(cuò),則vTCP模塊675將自行"關(guān)閉",并且讓VM 650處理這些包。 換言之,所需要的任何慢速路徑處理由VM的TCP接收方699處理。只有通常在給定TCP連接的 生命期中占主導(dǎo)地位的快速路徑處理由vTCP模塊675來處理。
      [0088] vTCP模塊675還維護(hù)計(jì)時(shí)器,以在超時(shí)時(shí)段過期后重傳輸從緩沖器至TCP接收方 699的包。重傳輸是重要的,因?yàn)椴荒鼙WC在傳遞該包之后在vTCP模塊675中緩沖的包會被 TCP接收方699連同接收。主機(jī)/客戶端之間的共享緩沖器可能已滿,在這種情況下,包可能 被丟棄。
      [0089]如果不存在從TCP接收方699返回的與之前發(fā)送的包對應(yīng)的確認(rèn),則vTCP模塊675 使用簡單重傳輸算法(例如,使重傳輸計(jì)時(shí)器的時(shí)間加倍),并且以有規(guī)律的間隔再次重傳 輸達(dá)特定次數(shù)。這種方法確保如果包已被早期確認(rèn),則vTCP模塊675保留確保目標(biāo)TCP接收 方699最終得到這些包的責(zé)任??商娲兀瑅TCP模塊675還可以使用完全擁塞控制算法,完全 擁塞控制算法類似于TCP如今使用的確保網(wǎng)絡(luò)資源不過分擁塞的算法。例如,標(biāo)準(zhǔn)擁塞控制 算法可以被實(shí)現(xiàn)為例如New Reno、Cubic。此外,擁塞控制算法的更新的變型可以在加法增 大乘法減小(AIMD)算法的廣泛類中實(shí)現(xiàn),但是這是與標(biāo)準(zhǔn)中提出的算法不同的變型。例如, 在標(biāo)準(zhǔn)擁塞控制算法中,在發(fā)現(xiàn)包丟失的階段中,協(xié)議通常將擁塞窗口減半。我們可以通過 不同的因數(shù)如3/4而不是一半來減小擁塞窗口,使得退避不像標(biāo)準(zhǔn)TCP算法那樣具有侵入 性。
      [0090] vTCP模塊675提供細(xì)粒度的控制,以確定哪些TCP連接需要更好的服務(wù)質(zhì)量(QoS), 并且在共享這些TCP連接的不同連接中對下游資源(從vTCP模塊675至TCP接收方699)賦予 優(yōu)先權(quán)。在默認(rèn)模式下,我們對用于所有連接的緩沖器資源提供公平訪問。然而,在可替代 的實(shí)施方式中,可以根據(jù)需要針對特定網(wǎng)絡(luò)來修改默認(rèn)模式。例如,可以將很多緩沖器給予 一個(gè)連接,而可以將較少的緩沖器給予另一個(gè)連接,并且將零緩沖器空間給予一些其他連 接。
      [0091]圖7示出了從TCP發(fā)送方799至TCP接收方798的數(shù)據(jù)路徑700的實(shí)施方式,并且被稱 為發(fā)送側(cè)。在本實(shí)施方式中,TCP發(fā)送方799位于虛擬化主機(jī)750內(nèi),TCP接收方798位于物理 服務(wù)器730內(nèi)。對于可替代的實(shí)施方式,物理服務(wù)器730可以用另一個(gè)虛擬服務(wù)器來代替。 TCP連接由操作系統(tǒng)通過代表用于通信的本地端點(diǎn)的編程接口即互聯(lián)網(wǎng)插座來管理。處在 操作系統(tǒng)795內(nèi)的TCP發(fā)送方799通過具有vTCP模塊775和vSwitch 770的虛擬化主機(jī)750的 虛擬網(wǎng)卡780并且通過數(shù)據(jù)中心網(wǎng)絡(luò)740將數(shù)據(jù)包傳輸至服務(wù)器730的物理NIC 720,然后由 處在0S 710內(nèi)的TCP接收方698接收該數(shù)據(jù)包。
      [0092] TCP接收方798可以存在于物理服務(wù)器730中(如圖所示)或者甚至存在于虛擬服務(wù) 器中。下面描述接收側(cè)中的TCP處理中涉及的各個(gè)步驟,包括由vTCP模塊775采取的用于加 速的具體步驟。
      [0093] TCP發(fā)送方799使用標(biāo)準(zhǔn)的三次握手發(fā)起與TCP接收方798的TCP會話。在基本的TCP 三次握手的步驟期間,vTCP模塊775在兩個(gè)方向上觀測TCP發(fā)送方799與TCP接收方798之間 的所有包,并對初始序列號和用于TCP會話的其他信息進(jìn)行跟蹤。vTCP模塊775還將解析TCP 選項(xiàng),以了解是否已啟用如DSACK和時(shí)間戳的選項(xiàng),以及了解窗口比例因數(shù)。vTCP模塊775將 局部地在流表如圖5中示出的流表520中對用于該會話的這些會話參數(shù)進(jìn)行跟蹤。
      [0094] TCP發(fā)送方799開始向TCP接收方798發(fā)送數(shù)據(jù)包。如果vTCP模塊775觀測到包"按順 序",則vTCP模塊775將在本地緩沖器如緩沖器530(圖5)內(nèi)制作該包的拷貝,并且生成返回 給TCP發(fā)送方799的早期確認(rèn)。本地緩沖器位于vTCP模塊775內(nèi),并且其大小可以通過外部管 理實(shí)體如VMffare的vSphere或OpenStack的配置平臺如圖4中示出的管理接口 421來配置。
      [0095] TCP接收方798在接收到這些數(shù)據(jù)包時(shí)將最終生成與這些數(shù)據(jù)包對應(yīng)的確認(rèn)。這些 確認(rèn)被vTCP模塊775截獲,并且如果這些確認(rèn)是由早期確認(rèn)模塊已經(jīng)生成的,則被vTCP模塊 775丟棄。
      [0096]如同常規(guī)的TCP接收方798將進(jìn)行的那樣,對于之前已經(jīng)被確認(rèn)的包,由vTCP模塊 775針對從TCP發(fā)送方799側(cè)進(jìn)入的包生成重復(fù)確認(rèn)。如果重復(fù)包到達(dá)而在vTCP緩沖器中已 經(jīng)存在拷貝,則vTCP模塊775將只是丟棄該包。
      [0097]由于vTCP緩沖器是有限的資源,因此可能被充滿,特別是如果TCP接收方798接受 包緩慢。在這樣的情況下,vTCP模塊775進(jìn)入"關(guān)閉"狀態(tài),在"關(guān)閉"狀態(tài)中,vTCP模塊775不 對來自TCP發(fā)送方799的任何數(shù)據(jù)包生成任何早期確認(rèn)。vTCP模塊775只是將這些包傳遞通 過VM,以將對這些包的控制返回給終端主機(jī)。在緩沖器空間再次開放時(shí),vTCP模塊775開始 對按順序的任何數(shù)據(jù)包進(jìn)行早期確認(rèn)處理??商娲?,vTCP模塊775可以修改窗口大小,以 將vTCP模塊775中的緩沖器資源反映給TCP發(fā)送方799,以有效執(zhí)行"流控制"。
      [0098] 如果包到達(dá)時(shí)順序出錯(cuò),則vTCP模塊775將自行"關(guān)閉",并且讓VM處理這些包。換 言之,所需要的任何慢速路徑處理由VM的TCP發(fā)送方799處理。只有被認(rèn)為在給定TCP連接的 生命期中占主導(dǎo)地位的快速路徑處理由vTCP模塊775來處理。
      [0099] vTCP模塊775實(shí)現(xiàn)了TCP完全擁塞控制協(xié)議,該協(xié)議涉及監(jiān)視擁塞窗口增大和減小 的語義。任何可用的TCP擁塞控制協(xié)議(如TCPBi c/Cub i c、高速TCP、里諾)可以在vTCP模塊 775內(nèi)部被仿真。vTCP模塊775還維護(hù)計(jì)時(shí)器,以在給定時(shí)間內(nèi)未收到確認(rèn)的情況下從緩沖 器至TCP接收方798重傳輸包。重傳輸是重要的,因?yàn)椴荒鼙WC在傳遞該包之后在vTCP模塊 775中緩沖的包會被TCP接收方798連同接收。可能是網(wǎng)絡(luò)丟棄了該包,在這種情況下,該包 需要被重傳輸。
      [0100] TCP提供面向連接的可靠的字節(jié)流服務(wù)。TCP通過對TCP片段中的字節(jié)進(jìn)行包來傳 遞連續(xù)的字節(jié)流,該連續(xù)的字節(jié)流被傳遞給IP以用于從TCP發(fā)送方傳輸至TCP接收方。本文 中所述的術(shù)語"TCP包"和"數(shù)據(jù)包"是指被傳遞給IP以用于在協(xié)議發(fā)送方與接收方(分別如 TCP發(fā)送方和TCP接收方)之間傳輸TCP片段。TCP發(fā)送方為所發(fā)送的每個(gè)字節(jié)分配序列號,并 且期望來自TCP接收方返回的肯定確認(rèn)。序列號提供如所接收的字節(jié)是成序列還是順序出 錯(cuò)的信息。在一般情況下,如果在超時(shí)時(shí)間或超時(shí)時(shí)段內(nèi)未接收到肯定確認(rèn),則該數(shù)據(jù)被重 傳輸。TCP還實(shí)現(xiàn)流控制如滑動(dòng)窗口以防止TCP接收方的緩沖器溢出。TCP接收方向TCP發(fā)送 方發(fā)回確認(rèn),該確認(rèn)向TCP發(fā)送方指示TCP接收方可以接收而不會導(dǎo)致TCP接收方緩沖器溢 出的超出最后接收的TCP片段的字節(jié)數(shù)。
      [0101] 圖9是示出了用于協(xié)議發(fā)送方與協(xié)議接收方之間的加速協(xié)議處理的方法的示例實(shí) 施方式的處理流程圖。在示例中,方法900包括:在操作910處觀測在協(xié)議發(fā)送方與協(xié)議接收 方之間傳輸?shù)某尚蛄械臄?shù)據(jù)包,其中,協(xié)議發(fā)送方和協(xié)議接收方中的至少一個(gè)處在虛擬化 主機(jī)內(nèi)。對于可替代的實(shí)施方式,協(xié)議發(fā)送方和協(xié)議接收方二者處在虛擬化主機(jī)內(nèi)。在操作 920處作出協(xié)議加速模塊內(nèi)的協(xié)議包緩沖器未滿的確定。僅當(dāng)數(shù)據(jù)包如TCP數(shù)據(jù)包成序列 (根據(jù)序列號來推斷)并且協(xié)議包緩沖器未滿時(shí),在加速模式的操作中發(fā)生對成序列的數(shù)據(jù) 包的處理。在操作930處,成序列的數(shù)據(jù)包在加速工作模式下處理并被拷貝到協(xié)議包緩沖器 中。成序列的數(shù)據(jù)包在傳遞通過協(xié)議接收方之前被拷貝到協(xié)議包緩沖器中。這使得如果成 序列的數(shù)據(jù)包潛在地丟失,則協(xié)議加速器模塊能夠?qū)崿F(xiàn)包丟失恢復(fù)處理。
      [0102] 對于各種實(shí)施方式,處理一個(gè)或更多個(gè)成序列的數(shù)據(jù)包包括早期確認(rèn)處理和包丟 失恢復(fù)處理,同時(shí)實(shí)現(xiàn)流控制處理和擁塞控制處理。示例實(shí)施方式使用協(xié)議加速模塊來加 速TCP發(fā)送方與TCP接收方之間的TCP/IP協(xié)議處理。
      [0103] 圖10是示出了用于早期確認(rèn)協(xié)議處理的方法的示例實(shí)施方式的處理流程圖。在示 例中,方法1000包括:在操作1010處將一個(gè)或更多個(gè)早期確認(rèn)發(fā)送至協(xié)議發(fā)送方,以得到所 拷貝的一個(gè)或更多個(gè)成序列的數(shù)據(jù)包;在操作1020處在超時(shí)時(shí)段到期之前觀測用于所拷貝 的一個(gè)或更多個(gè)成序列的數(shù)據(jù)包的一個(gè)或更多個(gè)協(xié)議接收方確認(rèn);以及在操作1030處丟棄 用于所拷貝的一個(gè)或更多個(gè)成序列的數(shù)據(jù)包的一個(gè)或更多個(gè)協(xié)議接收方確認(rèn)。早期確認(rèn)處 理在來自TCP接收方的實(shí)際確認(rèn)(也稱為協(xié)議接收方確認(rèn))之前向TCP發(fā)送方發(fā)出信號以繼 續(xù)發(fā)送數(shù)據(jù)包,從而加速發(fā)送數(shù)據(jù)包和TCP處理。
      [0104] 協(xié)議加速模塊如圖5的VTCP模塊500負(fù)責(zé)確保TCP接收方實(shí)際上接收到提供有早期 確認(rèn)的數(shù)據(jù)包。圖11是示出了用于包丟失恢復(fù)協(xié)議處理的方法的示例實(shí)施方式的處理流程 圖。在示例中,方法1100包括:在操作1110處識別出在超時(shí)時(shí)段內(nèi)未觀測用于所拷貝的一個(gè) 或更多個(gè)成序列的數(shù)據(jù)包的一個(gè)或更多個(gè)協(xié)議接收方確認(rèn);以及在操作1120處從協(xié)議包緩 沖器重傳輸一個(gè)或更多個(gè)成序列的數(shù)據(jù)包的拷貝。
      [0105] 圖12是示出了用于從TCP接收方接收的用于重復(fù)確認(rèn)的包丟失恢復(fù)協(xié)議處理的方 法的示例實(shí)施方式的處理流程圖。在示例中,方法1200包括:在操作1210處觀測用于所拷貝 的一個(gè)或更多個(gè)數(shù)據(jù)包的第一協(xié)議接收方確認(rèn);在操作1220處觀測用于所拷貝的一個(gè)或更 多個(gè)數(shù)據(jù)包的第一協(xié)議接收方確認(rèn)的第一副本;在1230處觀測用于所拷貝的一個(gè)或更多個(gè) 數(shù)據(jù)包的第一協(xié)議接收方確認(rèn)的第二副本;在操作1240處基于第一協(xié)議接收方確認(rèn)的一個(gè) 副本的最小值來確定所拷貝的成序列的數(shù)據(jù)包中的一個(gè)或更多個(gè)數(shù)據(jù)包已丟失,丟失的包 是根據(jù)確認(rèn)號來推斷的;以及在1250處,即使超時(shí)時(shí)段尚未過期,仍從協(xié)議包緩沖器重傳輸 丟失的包的拷貝。
      [0106] 對于各種實(shí)施方式,流控制協(xié)議處理實(shí)現(xiàn)滑動(dòng)窗口流控制協(xié)議。例如,當(dāng)滑動(dòng)窗口 流控制協(xié)議針對TCP實(shí)現(xiàn)時(shí),TCP頭中的16位窗口大小字段用于指定窗口大小單位(例如,以 字節(jié)為單位)的數(shù)目。該值指示TCP接收方愿意為該連接緩沖的額外接收的數(shù)據(jù)量(以字節(jié) 為單位),因此TCP發(fā)送方在被要求等待來自TCP接收方的確認(rèn)之前可能最多只發(fā)送該數(shù)據(jù) 量。當(dāng)TCP接收方通知窗口大小為0時(shí),TCP發(fā)送方停止發(fā)送數(shù)據(jù),直到TCP發(fā)送方接收到更新 的用于TCP接收方的窗口大小值為止。
      [0107]圖13是示出了用于流控制協(xié)議處理的方法的另一示例實(shí)施方式的處理流程圖。在 示例中,方法1300包括:在操作1310處觀測指定接收窗口字段值大于零的協(xié)議接收方;在操 作1320處將一個(gè)或更多個(gè)早期確認(rèn)發(fā)送至協(xié)議發(fā)送方以得到所拷貝的一個(gè)或更多個(gè)成序 列的數(shù)據(jù)包;在操作1330處觀測來自指示窗口字段值為零的協(xié)議接收方的更新;以及在操 作1340處在傳遞通過模式下處理一個(gè)或更多個(gè)成序列的數(shù)據(jù)包,直到窗口大小值大于零為 止。
      [0108] 由于網(wǎng)絡(luò)擁塞、流量載荷平衡或者其他不可預(yù)測的網(wǎng)絡(luò)行為,IP包可能被丟失、復(fù) 制或者遞送順序出錯(cuò)。TCP檢測這些問題,請求重傳輸丟失的數(shù)據(jù),將順序出錯(cuò)的數(shù)據(jù)進(jìn)行 重新拍列,甚至幫助使網(wǎng)絡(luò)擁塞最小化。本文中描述的各種實(shí)施方式可以實(shí)現(xiàn)以上所述的 與使用vTCP模塊(也稱為協(xié)議加速模塊)對TCP數(shù)據(jù)包進(jìn)行可靠傳遞相關(guān)的一個(gè)或更多個(gè)下 述TCP數(shù)據(jù)包處理。
      [0109] 本文中描述的示例實(shí)施方式提供了一種用于在具有處在虛擬化主機(jī)內(nèi)的協(xié)議發(fā) 送方或協(xié)議接收方的云環(huán)境中的協(xié)議發(fā)送方與協(xié)議接收方之間傳輸數(shù)據(jù)包的系統(tǒng)和方法。 對于一個(gè)實(shí)施方式,所傳輸?shù)臄?shù)據(jù)包可以是TCP數(shù)據(jù)包,使得協(xié)議發(fā)送方和接收方可以是 TCP協(xié)議發(fā)送方和接收方。協(xié)議加速模塊(在各種實(shí)施方式中也稱為vTCP模塊或TCP加速模 塊)可以被安裝并維護(hù)在沿從客戶端0S內(nèi)的協(xié)議發(fā)送方/接收方至物理NIC的數(shù)據(jù)路徑中的 任何位置處。對于一些實(shí)施方式,協(xié)議加速模塊可以被插入或集成在管理程序中。協(xié)議加速 模塊可以觀測使用協(xié)議發(fā)送方(例如,TCP發(fā)送方)的協(xié)議堆棧配置信息(例如,TCP堆棧配置 信息)沿協(xié)議發(fā)送方與協(xié)議接收方之間的數(shù)據(jù)路徑傳輸?shù)臄?shù)據(jù)包。協(xié)議加速模塊可以用基 于策略的協(xié)議堆棧配置信息(例如,基于策略的TCP堆棧配置信息)來覆蓋協(xié)議堆棧配置信 息,使得從協(xié)議加速模塊傳輸至協(xié)議接收方的數(shù)據(jù)包使用基于策略的協(xié)議堆棧配置信息。 對于各種實(shí)施方式,不修改協(xié)議發(fā)送方的協(xié)議堆棧配置信息。
      [0110] 在又一些實(shí)施方式中,在系統(tǒng)的管理接口處創(chuàng)建基于策略的協(xié)議堆棧配置信息。 管理接口可以是用于配置和管理協(xié)議加速模塊的外部管理實(shí)體。管理接口可以提供管理、 配置和控制數(shù)據(jù)中心中的互聯(lián)網(wǎng)協(xié)議(如TCP)的行為的集中式方式。對于示例實(shí)施方式,管 理接口可以包括能夠接收用戶輸入(如數(shù)據(jù)中心管理員)以調(diào)整或修改協(xié)議配置參數(shù)或設(shè) 置的各種輸入裝置和用戶接口。在又一些實(shí)施方式中,可以基于來自協(xié)議加速模塊或者能 夠監(jiān)視和評估沿協(xié)議發(fā)送方與協(xié)議接收方之間的數(shù)據(jù)路徑的協(xié)議行為和性能的其他系統(tǒng) 的反饋來動(dòng)態(tài)地修改協(xié)議配置參數(shù)或設(shè)置。
      [0111] 在各種實(shí)施方式中,協(xié)議配置參數(shù)可以以每個(gè)虛擬機(jī)為單位和/或以每個(gè)流為單 位來配置。在一個(gè)示例中,數(shù)據(jù)流被定義為數(shù)據(jù)包內(nèi)的字段的任意組合。在其他示例中,可 以由用戶(如數(shù)據(jù)中心管理員)使用管理接口來管理和配置多個(gè)虛擬機(jī)。在其他實(shí)施方式 中,外部管理實(shí)體將基于策略的協(xié)議配置信息提供給協(xié)議加速模塊,使得從協(xié)議加速模塊 傳輸至協(xié)議接收方的數(shù)據(jù)包使用基于策略的協(xié)議堆棧配置信息,而不修改協(xié)議發(fā)送方的協(xié) 議堆棧配置信息。
      [0112]圖14是示出了管理接口的示例實(shí)施方式的框圖。在一個(gè)實(shí)施方式中,管理接口 1400可以代表圖4中示出的管理接口421。在一個(gè)實(shí)施方式中,管理接口 1400包括用戶接口 1410、網(wǎng)絡(luò)接口 1420、分類器模塊1430、協(xié)議配置模塊1440以及測量和診斷模塊1450。網(wǎng)絡(luò) 接口 1420包括傳輸模塊(未示出)和接收模塊(未示出),并且網(wǎng)絡(luò)接口 1420被配置成用于發(fā) 送和接收配置信息(例如,基于策略的配置信息)和診斷信息(例如,測量信息、診斷信息 等)。所有的模塊可以經(jīng)由例如網(wǎng)絡(luò)耦接、共享的存儲器等來彼此通信。應(yīng)當(dāng)理解,每個(gè)模塊 可以被實(shí)現(xiàn)為單個(gè)模塊、組合成其他模塊或者進(jìn)一步細(xì)分為多個(gè)模塊。還可以包括但沒有 示出與示例實(shí)施方式不相關(guān)的其他模塊。在可替代的實(shí)施方式中,可以不使用管理接口 1400中示出的一個(gè)或更多個(gè)模塊。
      [0113] 在示例實(shí)施方式中,協(xié)議配置模塊1440被配置成創(chuàng)建用于通過協(xié)議加速模塊與協(xié) 議接收方之間的數(shù)據(jù)路徑的一部分在協(xié)議發(fā)送方與協(xié)議接收方之間傳輸多個(gè)數(shù)據(jù)包的多 個(gè)數(shù)據(jù)流的基于策略的TCP堆棧配置信息。在傳輸多個(gè)數(shù)據(jù)包的同時(shí),不修改協(xié)議發(fā)送方的 TCP堆棧配置信息。協(xié)議發(fā)送方和協(xié)議接收方中的至少一個(gè)處在虛擬化主機(jī)內(nèi)。在一個(gè)示例 實(shí)施方式中,TCP發(fā)送方698通過vTCP模塊675 (如圖6所示)將數(shù)據(jù)包傳輸至TCP接收端699。 在另一示例實(shí)施方式中,TCP發(fā)送方799通過vTCP模塊775 (如圖7所示)將數(shù)據(jù)包傳輸至TCP 接收方798。位于網(wǎng)絡(luò)接口 1420內(nèi)的傳輸模塊(未示出)被配置成將基于策略的配置信息提 供給至少一個(gè)協(xié)議加速模塊。
      [0114] 在可替代的實(shí)施方式中,協(xié)議配置模塊1440和傳輸模塊中的至少一個(gè)被包括在管 理接口 1400內(nèi)。在又一實(shí)施方式中,協(xié)議配置模塊1440被配置成創(chuàng)建基于策略的TCP堆棧配 置信息以修改用于多個(gè)虛擬機(jī)(例如,圖2中示出的虛擬機(jī)210、220和230)的多個(gè)數(shù)據(jù)流的 TCP協(xié)議的行為。在另一實(shí)施方式中,管理接口 1400被配置成將基于策略的配置信息提供給 至少一個(gè)協(xié)議加速模塊,以用該基于策略的配置信息來配置多個(gè)虛擬機(jī)(例如,圖2中示出 的虛擬機(jī)210、220和230)中的至少一個(gè)虛擬機(jī)。
      [0115] 圖15是示出了協(xié)議加速模塊1500的示例實(shí)施方式的框圖。在一個(gè)實(shí)施方式中,協(xié) 議加速模塊1500可以包括協(xié)議覆蓋模塊1510、網(wǎng)絡(luò)接口 1520、觀測模塊1530、數(shù)據(jù)流識別模 塊1540和監(jiān)視模塊1550。在各種實(shí)施方式中,協(xié)議加速模塊1500可以代表vTCP模塊420(如 圖4所示)、vTCP模塊500(如圖5所示)、vTCP模塊675(如圖6所示)和vTCP模塊775(如圖7所 示)。網(wǎng)絡(luò)接口 1520包括傳輸模塊(未示出)和接收模塊(未示出),并且網(wǎng)絡(luò)接口 1520被配置 成用于發(fā)送和接收數(shù)據(jù)包、配置信息和診斷信息。所有的模塊可以經(jīng)由例如網(wǎng)絡(luò)耦接、共享 的存儲器等來彼此通信。應(yīng)當(dāng)理解,每個(gè)模塊可以被實(shí)現(xiàn)為單個(gè)模塊、組合成其他模塊或者 進(jìn)一步細(xì)分為多個(gè)模塊。還可以包括但沒有示出與示例實(shí)施方式不相關(guān)的其他模塊。在可 替代的實(shí)施方式中,可以不使用協(xié)議加速模塊1500中示出的一個(gè)或更多個(gè)模塊。
      [0116] 在示例實(shí)施方式中,觀測模塊1530被配置成觀測使用協(xié)議發(fā)送方的TCP堆棧配置 信息在協(xié)議發(fā)送方與協(xié)議接收方之間傳輸數(shù)據(jù)包的數(shù)據(jù)流。協(xié)議發(fā)送方和協(xié)議接收方中的 至少一個(gè)處在虛擬化主機(jī)內(nèi)。在一個(gè)示例實(shí)施方式中,TCP發(fā)送方698通過vTCP模塊675(如 圖6所示)將數(shù)據(jù)包傳輸至TCP接收方699。在另一示例實(shí)施方式中,TCP發(fā)送方799通過vTCP 模塊775(如圖7所示)將數(shù)據(jù)包傳輸至TCP接收方798。數(shù)據(jù)流識別模塊1540被配置成識別用 于數(shù)據(jù)流的基于策略的TCP堆棧配置信息。協(xié)議覆蓋模塊1510被配置成在協(xié)議加速模塊 1500與協(xié)議接收方之間用所識別出的用于數(shù)據(jù)流的基于策略的TCP堆棧配置信息來覆蓋協(xié) 議發(fā)送方的TCP堆棧配置。位于網(wǎng)絡(luò)接口 1520內(nèi)的傳輸模塊(未示出)被配置成在協(xié)議發(fā)送 方與協(xié)議加速模塊之間使用發(fā)送方的TCP堆棧配置、并且在協(xié)議加速模塊1500與協(xié)議接收 方之間使用基于策略的TCP堆棧配置來傳輸所識別出的數(shù)據(jù)流。
      [0117] 在又一實(shí)施方式中,監(jiān)視模塊1550被配置成診斷與在協(xié)議發(fā)送方與協(xié)議接收方之 間傳輸多個(gè)數(shù)據(jù)包的多個(gè)數(shù)據(jù)流中的一個(gè)數(shù)據(jù)流的TCP性能相關(guān)的信息。在又一實(shí)施方式 中,診斷信息包括來自協(xié)議發(fā)送方與協(xié)議加速模塊1500之間的數(shù)據(jù)路徑或者協(xié)議加速模塊 1500與協(xié)議接收方之間的數(shù)據(jù)路徑的測量信息。在另一示例實(shí)施方式中,診斷信息包括一 個(gè)或更多個(gè)TCP連接特性。在可替代的實(shí)施方式中,管理接口被配置成創(chuàng)建用于多個(gè)數(shù)據(jù)流 的基于策略的TCP堆棧配置信息。
      [0118] 圖16示出了流表的示例實(shí)施方式。在示例實(shí)施方式中,流表1600可以代表流表520 的一部分。在一個(gè)實(shí)施方式中,流表1600可以被存儲在協(xié)議加速模塊1500內(nèi)的存儲器裝置 中或者協(xié)議加速模塊1500可以訪問的存儲裝置中。在又一實(shí)施方式中,流表1600可以被存 儲在管理接口 1400內(nèi)的存儲器裝置中或者管理接口 1600可以訪問的存儲裝置中。流表1600 包括字段VLAN 1610(也稱為虛擬局域網(wǎng))、虛擬網(wǎng)絡(luò)ID 1620、協(xié)議1630、源IP 1640、目的地 IP 1650、源端口 1660、目的地端口 1670和配置1680。源IP 1640、目的地IP 1650、源端口 1660和目的地端口 1670代表TCP頭字段中的一些字段。對于示例實(shí)施方式,一個(gè)或更多個(gè)以 下字段可以單獨(dú)地或組合地用于識別用于傳輸數(shù)據(jù)包的數(shù)據(jù)流:VLAN 1610、虛擬網(wǎng)絡(luò)ID 1620、協(xié)議1630、源IP 1640、目的地IP 1650、源端口 1660和目的地端口 1670。對于示例實(shí)施 方式,分類的結(jié)果被稱為配置并且在字段配置1680中示出。
      [0119] 行1690和1691代表用于TCP協(xié)議的流表1600中的兩行。在可替代的實(shí)施方式中,可 以使用其他網(wǎng)絡(luò)通信協(xié)議。行1690示出了與第一配置(稱為configl)相關(guān)的示例數(shù)據(jù),行 1691示出了與第二配置(稱為con fig2)相關(guān)的示例數(shù)據(jù)。配置參數(shù)示出如下:
      [0120] Configuration { BufferSize--以字節(jié)為單位的緩沖器的大小 Congestion Co n t ro! A Igori th m---算法為 Reno.、Bic、Cubic DupAckThreshoId--達(dá)到之后發(fā)送方將快速重傳輸?shù)闹貜?fù)AKC 的數(shù)目
      [0121] Initia丨Congestion Window--在接收到AC K之前我們可以初始 發(fā)送的最大尺寸的TCP片段的數(shù)目。 SlowStartThreshold--用于指數(shù)生長期的字節(jié)數(shù) }
      [0122] 配置參數(shù)可以稱為基于策略的TCP堆棧配置信息?;诓呗缘腡CP堆棧配置信息可 以代表如上所示的參數(shù),或者在可替代的實(shí)施方式中,配置參數(shù)可以變化。配置參數(shù) BufferSize、CongestionControlAlgorithm、DupAckThreshoId、InitialCongestionWindow 和SlowStartThreshold代表TCP協(xié)議參數(shù),用于TCP包的流控制和/或擁塞控制。這些參數(shù)可 以用于控制TCP協(xié)議行為。
      [0123] 用于第二配置(config2)的配置參數(shù)示出如下: Configuration con fig 1 = { BufferSize: 100000b CongestionControlAlgorithm : "reno"
      [0124] DupAckThreshoId : 2 I nitialCongestionWindow : 10 SlowStartThreshold : 10000b }
      [0125] 用于第一配置(configl)的配置參數(shù)示出如下: Configuration config2 = { BufferSize : 300000b CongestionControlAlgorithm : "cubic"
      [0126] " DupAckThreshoId: 2 1 nitialCongestion Window : 10 SlowStartThreshold : 10000b
      [0127] }
      [0128] 在可替代的實(shí)施方式中,由協(xié)議加速模塊1500或管理接口 1400使用的流表1600可 以包括附加字段或者與流表1600中示出的示例不同的字段。存儲在流表中的配置參數(shù)或者 在流表1600中引用的配置參數(shù)可以稱為基于策略的TCP堆棧配置信息。
      [0129] 下面是對用于TCP數(shù)據(jù)包的TCP頭中包含的TCP字段的描述。一個(gè)或更多個(gè)TCP頭字 段可以代表TCP堆棧配置信息。通常,協(xié)議發(fā)送方的TCP堆棧配置信息被包含在所傳輸?shù)腡CP 數(shù)據(jù)包內(nèi)。一個(gè)或更多個(gè)TCP堆棧配置信息可以被在協(xié)議加速模塊(例如,1500)或管理接口 (1400)的流表(例如,流表1600)中指定的基于策略的TCP堆棧配置信息覆蓋或修改。對于一 個(gè)實(shí)施方式,用于數(shù)據(jù)流的基于策略的TCP堆棧配置信息修改TCP發(fā)送方的TCP堆棧配置信 息而不改變協(xié)議發(fā)送方的TCP堆棧配置。換言之,TCP協(xié)議的行為被修改而不改變協(xié)議發(fā)送 方的TCP堆棧配置,其中,該協(xié)議發(fā)送方可以客戶端或虛擬化TCP發(fā)送方。因此,可以在不訪 問協(xié)議發(fā)送方的情況下修改TCP協(xié)議的行為。
      [0130] ?源端口(16位):標(biāo)識發(fā)送端口
      [0131 ] ?目的地端口( 16位):標(biāo)識接收端口
      [0132] ?序列號(32位)具有雙重作用:如果SYN標(biāo)志被設(shè)置為(1),則為初始序列號。實(shí)際 的第一個(gè)數(shù)據(jù)字節(jié)的序列號和對應(yīng)ACK中的確認(rèn)號則為該序列號加1。如果SYN標(biāo)志被清零 (〇),則為用于當(dāng)前會話的本片段的第一個(gè)數(shù)據(jù)字節(jié)的累積順序號。
      [0133] ?確認(rèn)號(32位):如果設(shè)置了 ACK標(biāo)志,則該字段的值是接收方期待的下一個(gè)序列 號。這確認(rèn)了接收到之前的所有字節(jié)(如果有的話)。由每端發(fā)送的第一個(gè)ACK確認(rèn)另一端的 初始序列號本身,但沒有數(shù)據(jù)。
      [0134] ?數(shù)據(jù)偏移量(4位):以32位字指定TCP頭的尺寸。最小尺寸的頭為5個(gè)字,最大尺 寸的頭為15個(gè)字,因此給出20個(gè)字節(jié)的最小尺寸和60個(gè)字節(jié)的最大尺寸,使得頭中存在最 多40個(gè)字節(jié)的可選項(xiàng)。該字段得名于這也是從TCP片段的開始至實(shí)際數(shù)據(jù)的偏移的事實(shí)。
      [0135] ?保留(3位):供將來使用并且應(yīng)該被設(shè)置為零
      [0136] #標(biāo)志(9位)(也稱為控制位):包含9個(gè)1位標(biāo)志
      [0137] #NS(1位):ECN現(xiàn)時(shí)隱藏保護(hù)(由RFC 3540添加至頭)。
      [0138] #CWR(1位):由發(fā)送主機(jī)設(shè)置擁塞窗口減少(CWR)標(biāo)志,以指示其接收到TCP片段, 并且在擁塞控制機(jī)制中設(shè)置和回應(yīng)ECE標(biāo)志(由RFC 3168添加至頭)。
      [0139] #ECE(1位):ECN 回應(yīng)指示
      [0140] #URG(位):指示緊急指針字段很重要
      [0141] #ACK(1位):指示確認(rèn)字段很重要。在由客戶端發(fā)送的初始SYN包之后的所有包應(yīng) 該設(shè)置有這個(gè)標(biāo)志。
      [0142] #PSH(1位):Push功能。請求將所緩沖的數(shù)據(jù)推給接收的應(yīng)用程序。
      [0143] #RST(1位):重置連接
      [0144] #SYN(1位):同步序列號。只有從每個(gè)端發(fā)送的第一個(gè)包應(yīng)該設(shè)置有這個(gè)標(biāo)志。一 些其他標(biāo)志基于這個(gè)標(biāo)志來改變原有的意義,而有些標(biāo)志僅當(dāng)被設(shè)置后才有效,其他標(biāo)志 僅當(dāng)被清零后才有效。如果SYN標(biāo)志被設(shè)置為(1),則TCP對等體具有ECN能力。如果SYN標(biāo)志 被清零(〇 ),則在正常傳輸期間接收了在IP頭集中具有擁塞經(jīng)歷標(biāo)志的包(由RFC 3168添加 至頭)。
      [0145] #FIN( 1位):沒有來自發(fā)送方的更多數(shù)據(jù)
      [0146] ?窗口大?。?6位):接收窗口的大小,其指定該片段的發(fā)送方當(dāng)前愿意接收的窗 口大小的單位的數(shù)目(按默認(rèn)單位計(jì)、按字節(jié)計(jì))(超出確認(rèn)字段中的序列號)(參見流控制 和窗口縮放)
      [0147] ?校驗(yàn)和(16位):16位校驗(yàn)和字段被用于頭和數(shù)據(jù)的錯(cuò)誤檢查
      [0148] ?緊急指針(16位):如果URG標(biāo)志被設(shè)置,則該16位字段是從序列號的偏移量,其 指示最后緊急數(shù)據(jù)字節(jié)。
      [0149] ?可選項(xiàng)(可變的能夠被32整除的0至320位):該字段的長度由數(shù)據(jù)偏移量字段確 定。
      [0150] ?填充:TCP頭填充用于確保TCP頭末尾和數(shù)據(jù)開始于32位邊界上。填充由零構(gòu)成。
      [0151] 圖17至圖19示出了描述用于使用基于策略的TCP堆棧配置信息來傳輸數(shù)據(jù)包的方 法的流程圖,以及圖20至圖22示出了描述用于創(chuàng)建基于策略的TCP堆棧配置信息的方法的 流程圖。方法1700至方法2200可以在計(jì)算機(jī)可讀指令中實(shí)施,以由一個(gè)或更多個(gè)處理器來 執(zhí)行,使得方法1700至方法2200可以由數(shù)據(jù)中心100使用一個(gè)或更多個(gè)計(jì)算機(jī)系統(tǒng)800來整 體或部分地執(zhí)行。在示例實(shí)施方式中,該方法1700至方法1900可以由協(xié)議加速模塊1500內(nèi) 的一個(gè)或更多個(gè)模塊來執(zhí)行。在其他示例實(shí)施方式中,方法1700至方法2200可以由管理接 口 1400內(nèi)一個(gè)或更多個(gè)模塊來執(zhí)行。然而,但是應(yīng)當(dāng)理解的是,方法1700至方法2200可以被 部署在各種其他硬件配置或系統(tǒng)配置上,并且不意在被限定于管理接口 1400和/或協(xié)議加 速模塊1500內(nèi)的模塊。
      [0152] 圖17是示出了根據(jù)一個(gè)實(shí)施方式的用于使用基于策略的TCP堆棧配置信息來傳輸 數(shù)據(jù)包的方法的流程圖。在示例中,方法1700包括:在操作1710處觀測用于使用協(xié)議發(fā)送方 的TCP堆棧配置信息在協(xié)議發(fā)送方與協(xié)議接收方之間傳輸多個(gè)數(shù)據(jù)包的數(shù)據(jù)流,并且協(xié)議 發(fā)送方和協(xié)議接收方中的至少一個(gè)處在虛擬化主機(jī)內(nèi)。方法1700包括:在操作1720處識別 用于數(shù)據(jù)流的基于策略的TCP堆棧配置信息。方法1700還包括:在操作1730處在協(xié)議加速模 塊與協(xié)議接收方之間用所識別出的用于數(shù)據(jù)流的基于策略的TCP堆棧配置信息來覆蓋協(xié)議 發(fā)送方的TCP堆棧配置信息。方法1700還包括:在操作1740處在協(xié)議發(fā)送方與協(xié)議加速模塊 之間使用發(fā)送方的TCP堆棧配置、并且在協(xié)議加速模塊與協(xié)議接收方之間使用基于策略的 TCP堆棧配置來傳輸所識別出的數(shù)據(jù)流。
      [0153] 在示例實(shí)施方式中,協(xié)議發(fā)送方的TCP堆棧配置信息覆蓋用于協(xié)議加速模塊與協(xié) 議接收方之間的數(shù)據(jù)流中的一個(gè)數(shù)據(jù)流的基于策略的TCP堆棧配置信息而不改變該協(xié)議發(fā) 送方的TCP堆棧配置信息。在又一實(shí)施方式中,用于多個(gè)數(shù)據(jù)流的基于策略的TCP堆棧配置 信息代表流分類信息,流分類信息用于使用特定準(zhǔn)則將具有不同特性的多個(gè)數(shù)據(jù)包組織成 不同的類。在又一實(shí)施方式中,流分類信息可以將多個(gè)包中的一個(gè)或更多個(gè)包根據(jù)具體應(yīng) 用進(jìn)行分類。
      [0154] 在另一示例實(shí)施方式中,方法1700可以包括:將協(xié)議加速模塊內(nèi)的基于策略的TCP 堆棧配置信息存儲在流表中;由協(xié)議加速模塊觀測該多個(gè)數(shù)據(jù)流中的一個(gè)數(shù)據(jù)流;以及由 協(xié)議加速模塊識別用于該多個(gè)數(shù)據(jù)流中的一個(gè)數(shù)據(jù)流的基于策略的TCP堆棧配置信息。
      [0155] 圖18是示出了根據(jù)一個(gè)實(shí)施方式的用于生成并傳輸診斷信息的方法的流程圖。在 示例中,方法1800包括:在操作1810處由協(xié)議加速模塊生成與在協(xié)議發(fā)送方與協(xié)議接收方 之間傳輸?shù)臄?shù)據(jù)包的TCP性能相關(guān)的診斷信息;以及在操作1820處將診斷信息傳輸至管理 接口。在又一實(shí)施方式中,方法1800可以包括從管理接口接收經(jīng)調(diào)整的用于多個(gè)數(shù)據(jù)流中 的一個(gè)數(shù)據(jù)流的基于策略TCP堆棧配置信息,多個(gè)數(shù)據(jù)流中的一個(gè)數(shù)據(jù)流具有對應(yīng)的分類 器信息,經(jīng)調(diào)整的基于策略的TCP堆棧配置信息是基于診斷信息而調(diào)整的。
      [0156] 在示例實(shí)施方式中,診斷信息包括來自協(xié)議發(fā)送方與協(xié)議接收方之間的數(shù)據(jù)路徑 的一個(gè)或更多個(gè)部分的測量信息。數(shù)據(jù)路徑的一部分可以包括協(xié)議發(fā)送方與協(xié)議加速模塊 之間的測量信息。數(shù)據(jù)路徑的另一部分可以包括協(xié)議加速模塊與協(xié)議接收方之間的測量信 息。在又一實(shí)施方式中,診斷信息包括一個(gè)或多個(gè)TCP連接特性。
      [0157] 圖19是示出了根據(jù)另一實(shí)施方式的用于使用基于策略的TCP堆棧配置信息來傳輸 數(shù)據(jù)包的方法的流程圖。在示例中,方法1900包括:在操作1910處從管理接口接收用于數(shù)據(jù) 流的基于策略的TCP堆棧配置信息;以及在操作1920處存儲用于數(shù)據(jù)流的基于策略的TCP堆 棧配置信息。方法1900還包括:在操作1930處觀測用于使用協(xié)議發(fā)送方的TCP堆棧配置信息 在協(xié)議發(fā)送方與協(xié)議接收方之間傳輸數(shù)據(jù)包的數(shù)據(jù)流,其中,協(xié)議發(fā)送方和協(xié)議接收方中 的至少一個(gè)處在虛擬化主機(jī)內(nèi);在操作1940處識別用于數(shù)據(jù)流的基于策略的TCP堆棧配置 信息;在操作1950處在協(xié)議加速模塊與協(xié)議接收方之間用所識別出的用于數(shù)據(jù)流的基于策 略的TCP堆棧配置信息來覆蓋協(xié)議發(fā)送方的TCP堆棧配置信息;以及在操作1960處在協(xié)議發(fā) 送方與協(xié)議加速模塊之間使用發(fā)送方的TCP堆棧配置、并且在協(xié)議加速模塊與協(xié)議接收方 之間使用基于策略的TCP堆棧配置來傳輸所識別出的數(shù)據(jù)流。
      [0158] 圖20是示出了根據(jù)實(shí)施方式的用于創(chuàng)建基于策略的TCP堆棧配置信息的方法的流 程圖。在示例實(shí)施方式中,方法2000包括:在操作2010處創(chuàng)建用于通過協(xié)議加速模塊與協(xié)議 接收方之間的數(shù)據(jù)路徑的一部分在協(xié)議發(fā)送方與協(xié)議接收方之間傳輸多個(gè)數(shù)據(jù)包的多個(gè) 數(shù)據(jù)流的基于策略的TCP堆棧配置信息而不修改協(xié)議發(fā)送方的TCP堆棧配置信息。協(xié)議發(fā)送 方和協(xié)議接收方中的至少一個(gè)處在虛擬化主機(jī)2010內(nèi)。方法2000還包括:在操作2020處將 基于策略的配置信息提供給至少一個(gè)協(xié)議加速模塊。
      [0159] 在另一實(shí)施方式中,創(chuàng)建基于策略的配置信息包括:調(diào)整用于多個(gè)數(shù)據(jù)流中的至 少一個(gè)數(shù)據(jù)流的基于策略的配置信息中包含的一個(gè)或更多個(gè)TCP堆棧配置值。在又一實(shí)施 方式中,一個(gè)或更多個(gè)TCP配置值中包含的一個(gè)或更多個(gè)TCP頭字段值被調(diào)整。在可替代的 實(shí)施方式中,在協(xié)議發(fā)送方與協(xié)議接收方之間建立連接之前或者在協(xié)議發(fā)送方與協(xié)議接收 方之間所建立的連接期間,用于多個(gè)數(shù)據(jù)流中的至少一個(gè)數(shù)據(jù)流的一個(gè)或更多個(gè)TCP堆棧 配置值被調(diào)整一次或更多次。在又一實(shí)施方式中,用于多個(gè)數(shù)據(jù)流中的至少一個(gè)數(shù)據(jù)流的 一個(gè)或更多個(gè)TCP堆棧配置值被調(diào)整以在協(xié)議發(fā)送方與協(xié)議接收方之間的連接期間傳遞預(yù) 定量的數(shù)據(jù)。在另一示例實(shí)施方式中,用于多個(gè)數(shù)據(jù)流中的至少一個(gè)數(shù)據(jù)流的一個(gè)或更多 個(gè)TCP堆棧配置值被調(diào)整,以在協(xié)議發(fā)送方與協(xié)議接收方之間的連接期間的預(yù)定量的時(shí)間 期間傳遞一個(gè)或更多個(gè)數(shù)據(jù)包。在又一實(shí)施方式中,一個(gè)或更多個(gè)TCP堆棧配置信息的調(diào)整 是以每個(gè)流為單位來調(diào)整的。
      [0160] 圖21是示出了根據(jù)另一實(shí)施方式的用于創(chuàng)建基于策略的TCP堆棧配置信息的方法 的流程圖。在示例中,方法2100包括:在操作2110處創(chuàng)建基于策略的配置信息以修改用于多 個(gè)虛擬機(jī)的多個(gè)數(shù)據(jù)流的TCP協(xié)議的行為;以及在操作2120處將基于策略的配置信息提供 給至少一個(gè)協(xié)議加速模塊,以用從集中式管理接口創(chuàng)建的基于策略的配置信息來配置該多 個(gè)虛擬機(jī)中的至少一個(gè)虛擬機(jī)。
      [0161] 在示例實(shí)施方式中,創(chuàng)建基于策略的配置信息包括:創(chuàng)建具有代表一組數(shù)據(jù)包匹 配規(guī)則的分類器信息的流分類器。
      [0162] 圖22是示出了根據(jù)實(shí)施方式的用于創(chuàng)建經(jīng)調(diào)整的基于策略的TCP堆棧配置信息的 方法的流程圖。在示例中,方法2200包括:在操作2210處從協(xié)議加速模塊接收與在協(xié)議發(fā)送 方與協(xié)議接收方之間傳輸?shù)亩鄠€(gè)數(shù)據(jù)流中的一個(gè)數(shù)據(jù)流對應(yīng)的多個(gè)數(shù)據(jù)包的TCP性能相關(guān) 的診斷信息;在操作2220處基于診斷信息來調(diào)整基于策略的配置信息;以及在操作2230處 將經(jīng)調(diào)整的基于策略的配置信息提供給協(xié)議加速模塊。在又一實(shí)施方式中,診斷信息包括 來自協(xié)議與協(xié)議加速模塊之間的數(shù)據(jù)路徑的一部分的測量信息。在另一實(shí)施方式中,診斷 信息包括來自協(xié)議加速模塊至協(xié)議接收方之間的數(shù)據(jù)路徑的另一部分的測量信息。在另一 實(shí)施方式中,診斷信息包括一個(gè)或更多個(gè)TCP連接特性。
      [0163] 另外,本文中描述的特定實(shí)施方式可以被實(shí)現(xiàn)為邏輯或若干個(gè)模塊、引擎、部件或 機(jī)制。模塊、引擎、邏輯、部件或機(jī)制(統(tǒng)稱為"模塊")可以是能夠執(zhí)行特定操作,并且以某種 方式來配置或布置的有形單元。在特定示例實(shí)施方式中,一個(gè)或更多個(gè)計(jì)算機(jī)系統(tǒng)(例如, 獨(dú)立的客戶端或服務(wù)器計(jì)算機(jī)系統(tǒng))或計(jì)算機(jī)系統(tǒng)的一個(gè)或更多個(gè)部件(例如,處理器或一 組處理器)可以由軟件(例如,應(yīng)用程序或應(yīng)用程序的一部分)或固件來配置(請注意,如本 領(lǐng)域技術(shù)人員已知的那樣,在本文中,軟件和固件通常可以互換地使用)以作為以執(zhí)行本文 中描述的特定操作的模塊。
      [0164] 在各種實(shí)施方式中,模塊可以以機(jī)械方式或電子方式來實(shí)現(xiàn)。例如,模塊可以包括 被永久配置的專用電路或邏輯(例如,在專用的處理器、專用集成電路(ASIC)或陣列內(nèi))以 執(zhí)行特定操作。模塊也可以包括由軟件或固件臨時(shí)配置以執(zhí)行特定操作的可編程邏輯或電 路(例如,包含在通用處理器或其他可編程處理器內(nèi))。應(yīng)該理解的是,以機(jī)械方式來實(shí)現(xiàn)模 塊、在專用和永久配置的電路中實(shí)現(xiàn)模塊、或者在臨時(shí)配置的電路(例如,由軟件配置)中實(shí) 現(xiàn)模塊的決定可以由例如成本、時(shí)間、能源使用和包大小方面的考慮來驅(qū)動(dòng)。
      [0165] 因此,術(shù)語"模塊"應(yīng)當(dāng)被理解為包括有形的實(shí)體,其為物理上構(gòu)成的、永久配置的 (例如,硬連線)或者臨時(shí)配置的(例如,被編程)、以某種方式工作或者執(zhí)行本文中描述的特 定操作的實(shí)體。考慮其中模塊或部件被臨時(shí)配置(例如,被編程)的實(shí)施方式,這些模塊或部 件中的每個(gè)模塊或部件不需要在某一時(shí)間的任何一個(gè)實(shí)例中被配置或?qū)嵗?。例如,?dāng)模 塊或部件包括使用軟件來配置的通用處理器時(shí),該通用處理器可以在不同的時(shí)間處分別被 配置成不同的模塊。軟件可相應(yīng)地配置處理器以在一個(gè)時(shí)間的實(shí)例中構(gòu)成特定模塊,并且 在不同時(shí)間的實(shí)例中構(gòu)成不同的模塊。
      [0166] 模塊可以向其他模塊提供信息并且從其他模塊接收信息。因此,所描述的模塊可 以被視為通信上耦接。當(dāng)同時(shí)存在多個(gè)這樣的模塊時(shí),可以通過連接這些模塊的信號傳輸 (例如,通過適當(dāng)?shù)碾娐泛涂偩€)來實(shí)現(xiàn)。在其中多個(gè)模塊在不同的時(shí)間處被配置或?qū)嵗?的實(shí)施方式中,可以實(shí)現(xiàn)這樣的模塊之間的通信,例如,通過該多個(gè)模塊能夠訪問的存儲器 結(jié)構(gòu)中的存儲裝置和檢索信息來實(shí)現(xiàn)。例如,一個(gè)模塊可以執(zhí)行操作,并且將該操作的輸出 存儲在與該模塊通信上耦接的存儲器裝置中。接著,又一模塊可以在以后的時(shí)間處訪問該 存儲器裝置以檢索和處理所存儲的輸出。模塊還可以發(fā)起與輸入裝置或輸出裝置的通信, 并且可以對資源(例如,信息的集合)進(jìn)行操作。
      [0167] 圖8以計(jì)算機(jī)系統(tǒng)800的示例形式示出了的機(jī)器的圖形表示,指令集824處在計(jì)算 機(jī)系統(tǒng)800內(nèi),當(dāng)指令集824被執(zhí)行時(shí)可以使該機(jī)器執(zhí)行本文中討論的方法論中的任何一個(gè) 或更多個(gè)方法論。在可替代的實(shí)施方式中,機(jī)器作為獨(dú)立裝置工作或者可以連接(例如,聯(lián) 網(wǎng))至其他機(jī)器。在聯(lián)網(wǎng)的部署中,機(jī)器可以在服務(wù)器-客戶端網(wǎng)絡(luò)環(huán)境中以服務(wù)器或客戶 端機(jī)器的身份來工作,或者在對等(或分布式)網(wǎng)絡(luò)環(huán)境中以對等機(jī)器的身份工作。機(jī)器可 以是個(gè)人計(jì)算機(jī)(PC)、平板PC、機(jī)頂盒(STB)、個(gè)人數(shù)字助理(PDA)、蜂窩電話、網(wǎng)絡(luò)服務(wù)工 具、網(wǎng)絡(luò)路由器、交換機(jī)或網(wǎng)橋,或者能夠執(zhí)行要由該機(jī)器采取的指定行為的指令集(順序 的或其他方式的)的任何機(jī)器。此外,雖然僅示出了單個(gè)機(jī)器,但是術(shù)語"機(jī)器"應(yīng)當(dāng)也被理 解為包括單獨(dú)地或聯(lián)合地執(zhí)行指令集(或多個(gè)指令集)以執(zhí)行本文中討論的方法論中的任 何一個(gè)或更多個(gè)方法論的機(jī)器的任何集合。
      [0168] 示例計(jì)算機(jī)系統(tǒng)800包括經(jīng)由總線808彼此進(jìn)行通信的處理器802(例如,中央處理 單元(CPU)、圖形處理單元(GPU)或二者)、主存儲器804和靜態(tài)存儲器806。計(jì)算機(jī)系統(tǒng)800還 可以包括視頻顯示單元810(例如,液晶顯示器(IXD)或陰極射線管(CRT))。計(jì)算機(jī)系統(tǒng)800 還包括輸入裝置812(例如,鍵盤)、光標(biāo)控制裝置814(例如,鼠標(biāo))、盤驅(qū)動(dòng)單元816、信號生 成裝置818(例如,揚(yáng)聲器)和網(wǎng)絡(luò)接口裝置820。
      [0169] 盤驅(qū)動(dòng)單元816包括機(jī)器可讀介質(zhì)822,機(jī)器可讀介質(zhì)822上存儲有實(shí)施本文中描 述的方法論或功能中的任何一個(gè)或更多個(gè)方法論或功能的一個(gè)或更多個(gè)指令集824(例如 軟件)。指令集824也可以完整地或至少部分地處在主存儲器804、靜態(tài)存儲器806中,并且/ 或者在由計(jì)算機(jī)系統(tǒng)800執(zhí)行指令集824期間處在處理器802中。主存儲器804和處理器802 還可以構(gòu)成機(jī)器可讀介質(zhì)。指令824還可以經(jīng)由網(wǎng)絡(luò)接口裝置820通過網(wǎng)絡(luò)826進(jìn)行發(fā)送或 接收。雖然在示例實(shí)施方式中將機(jī)器可讀介質(zhì)822示出為單個(gè)介質(zhì),但是術(shù)語"機(jī)器可讀介 質(zhì)"應(yīng)被理解為包括存儲一個(gè)或更多個(gè)指令集824的單個(gè)介質(zhì)或多個(gè)介質(zhì)(例如,集中式或 分布式數(shù)據(jù)庫和/或相關(guān)聯(lián)的緩存和服務(wù)器)。"機(jī)器可讀介質(zhì)"還應(yīng)被理解為包括能夠?qū)χ?令集(例如,指令集824)進(jìn)行存儲、編碼或?qū)嵤┮杂蓹C(jī)器執(zhí)行并且使機(jī)器執(zhí)行各種實(shí)施方式 的方法論中的任何一個(gè)或更多個(gè)方法論的任何介質(zhì),或者能夠?qū)τ蛇@樣的指令集使用或者 與這樣的指令集相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲、編碼或?qū)嵤┑娜魏谓橘|(zhì)。因此,術(shù)語"機(jī)器可 讀介質(zhì)"應(yīng)該被理解為包括但不限于固態(tài)存儲器、光介質(zhì)和磁介質(zhì)。
      [0170] 盡管參照具體示例實(shí)施方式描述了本發(fā)明主題的概述,但是可以在不脫離本發(fā)明 的實(shí)施方式的更寬的精神和范圍內(nèi)對這些實(shí)施方式進(jìn)行各種修改和改變。僅為了方便而使 用術(shù)語"發(fā)明"在本文中單獨(dú)地或共同地指出本發(fā)明主題的這些實(shí)施方式,而不意在將本申 請的范圍主動(dòng)限制為任何單個(gè)發(fā)明或發(fā)明概念,如果實(shí)際上公開了一個(gè)以上發(fā)明或發(fā)明概 念的話。
      [0171]對本文中示出的實(shí)施方式進(jìn)行了充分詳細(xì)的描述,以使本領(lǐng)域普通技術(shù)人員能夠 實(shí)踐所公開的教示??梢詮谋疚闹惺境龅膶?shí)施方式得到并使用其他實(shí)施方式,使得可以在 不脫離本公開內(nèi)容的范圍的情況下作出結(jié)構(gòu)性和邏輯性的替換和改變。因此,詳細(xì)描述不 應(yīng)被限制性地使用,并且各種實(shí)施方式的范圍僅由所附權(quán)利要求連同這些權(quán)利要求所授權(quán) 的等同方案的全部范圍來限定。
      [0172]此外,可以為本文中描述的資源、操作或結(jié)構(gòu)提供多個(gè)實(shí)例作為單個(gè)實(shí)例。此外, 各種資源、操作、模塊、引擎和數(shù)據(jù)存儲裝置之間的界限在某種程度上是任意的,并且在特 定說明性配置的背景下示出了特定操作??梢栽O(shè)想功能的其他分配,并且這些功能的其他 分配可以落入本發(fā)明的各種實(shí)施方式的范圍內(nèi)。在一般情況下,作為分離的資源呈現(xiàn)在示 例配置中的結(jié)構(gòu)和功能可以被實(shí)現(xiàn)為組合的結(jié)構(gòu)或資源。類似地,作為單個(gè)資源呈現(xiàn)的結(jié) 構(gòu)和功能可以被實(shí)現(xiàn)為分離的資源。這些以及其他變化、修改、添加和改進(jìn)落入由所附權(quán)利 要求代表的本發(fā)明的實(shí)施方式的范圍內(nèi)。本說明書和附圖相應(yīng)地被視為說明性的而非限制 性的。
      【主權(quán)項(xiàng)】
      1. 一種方法,包括: 觀測用于使用協(xié)議發(fā)送方的TCP堆棧配置信息在所述協(xié)議發(fā)送方與協(xié)議接收方之間傳 輸多個(gè)數(shù)據(jù)包的多個(gè)數(shù)據(jù)流中的一個(gè)數(shù)據(jù)流,其中,所述協(xié)議發(fā)送方和所述協(xié)議接收方中 的至少一個(gè)處在虛擬化主機(jī)內(nèi); 使用機(jī)器的處理器來識別用于所述多個(gè)數(shù)據(jù)流中的所述一個(gè)數(shù)據(jù)流的基于策略的TCP 堆棧配置信息; 在協(xié)議加速模塊與所述協(xié)議接收方之間用所識別出的用于所述多個(gè)數(shù)據(jù)流中的所述 一個(gè)數(shù)據(jù)流的所述基于策略的TCP堆棧配置信息來覆蓋所述協(xié)議發(fā)送方的所述TCP堆棧配 置信息;以及 在所述協(xié)議發(fā)送方與所述協(xié)議加速模塊之間使用所述發(fā)送方的所述TCP堆棧配置信 息、并且在所述協(xié)議加速模塊與所述協(xié)議接收方之間使用所述基于策略的TCP堆棧配置信 息來傳輸所識別出的所述多個(gè)數(shù)據(jù)流中的所述一個(gè)數(shù)據(jù)流。2. 根據(jù)權(quán)利要求1所述的方法,其中,在所述協(xié)議加速模塊與所述協(xié)議接收方之間用所 識別出的用于所述多個(gè)數(shù)據(jù)流中的所述一個(gè)數(shù)據(jù)流的所述基于策略的TCP堆棧配置信息來 覆蓋所述協(xié)議發(fā)送方的所述TCP堆棧配置信息進(jìn)一步包括: 在所述協(xié)議加速模塊與所述協(xié)議接收方之間用所識別出的用于所述多個(gè)數(shù)據(jù)流中的 所述一個(gè)數(shù)據(jù)流的所述基于策略的TCP堆棧配置信息來覆蓋所述協(xié)議發(fā)送方的所述TCP堆 棧配置信息而不改變所述協(xié)議發(fā)送方的所述TCP堆棧配置信息。3. 根據(jù)權(quán)利要求1所述的方法,其中,用于所述多個(gè)數(shù)據(jù)流的所述基于策略的TCP堆棧 配置信息代表用于使用特定準(zhǔn)則將具有不同特性的所述多個(gè)數(shù)據(jù)包組織成不同類的流分 類信息。4. 根據(jù)權(quán)利要求3所述的方法,其中,所述流分類信息能夠?qū)⑺龆鄠€(gè)數(shù)據(jù)包中的一個(gè) 或更多個(gè)數(shù)據(jù)包根據(jù)具體應(yīng)用進(jìn)行分類。5. 根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括: 由所述協(xié)議加速模塊生成與在所述協(xié)議發(fā)送方與所述協(xié)議接收方之間傳輸?shù)乃鰯?shù) 據(jù)包的TCP性能相關(guān)的診斷信息;以及 將所述診斷信息傳輸至管理接口。6. 根據(jù)權(quán)利要求5所述的方法,其中,所述診斷信息包括來自所述協(xié)議發(fā)送方與所述協(xié) 議加速模塊之間的以及所述協(xié)議加速模塊與所述協(xié)議接收方之間的數(shù)據(jù)路徑的一個(gè)或更 多個(gè)部分的測量信息。7. 根據(jù)權(quán)利要求6所述的方法,其中,所述診斷信息包括一個(gè)或更多個(gè)TCP連接特性。8. 根據(jù)權(quán)利要求6所述的方法,進(jìn)一步包括: 從管理接口接收用于所述多個(gè)數(shù)據(jù)流的所述基于策略的TCP堆棧配置信息;以及 存儲用于所述多個(gè)數(shù)據(jù)流的所述基于策略的TCP堆棧配置信息。9. 根據(jù)權(quán)利要求5所述的方法,進(jìn)一步包括: 從所述管理接口接收用于所述多個(gè)數(shù)據(jù)流中的所述一個(gè)數(shù)據(jù)流的經(jīng)調(diào)整的基于策略 的TCP堆棧配置信息,所述多個(gè)數(shù)據(jù)流中的所述一個(gè)數(shù)據(jù)流具有對應(yīng)的分類器信息,所述經(jīng) 調(diào)整的基于策略的TCP堆棧配置信息是基于所述診斷信息而調(diào)整的。10. 根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括: 其中,存儲所述基于策略的TCP堆棧配置信息進(jìn)一步包括:將所述基于策略的TCP堆棧 配置信息存儲在所述協(xié)議加速模塊內(nèi),所述基于策略的TCP堆棧配置信息被存儲在流表中; 其中,觀測所述多個(gè)數(shù)據(jù)流中的所述一個(gè)數(shù)據(jù)流進(jìn)一步包括:由所述協(xié)議加速模塊觀 測所述多個(gè)數(shù)據(jù)流中的所述一個(gè)數(shù)據(jù)流;以及 其中,使用所述機(jī)器的所述處理器來識別用于所述多個(gè)數(shù)據(jù)流中的所述一個(gè)數(shù)據(jù)流的 所述基于策略的TCP堆棧配置信息進(jìn)一步包括:由所述協(xié)議加速模塊識別用于所述多個(gè)數(shù) 據(jù)流中的所述一個(gè)數(shù)據(jù)流的所述基于策略的TCP堆棧配置信息。11. 一種方法,包括: 創(chuàng)建用于通過協(xié)議加速模塊與協(xié)議接收方之間的數(shù)據(jù)路徑的一部分在協(xié)議發(fā)送方與 所述協(xié)議接收方之間傳輸多個(gè)數(shù)據(jù)包的多個(gè)數(shù)據(jù)流的基于策略的TCP堆棧配置信息而不修 改所述協(xié)議發(fā)送方的TCP堆棧配置信息,其中,所述協(xié)議發(fā)送方和所述協(xié)議接收方中的至少 一個(gè)處在虛擬化主機(jī)內(nèi);以及 將所述基于策略的TCP堆棧配置信息提供給至少一個(gè)協(xié)議加速模塊。12. 根據(jù)權(quán)利要求11所述的方法,其中,創(chuàng)建所述基于策略的TCP堆棧配置信息包括: 調(diào)整用于所述多個(gè)數(shù)據(jù)流中的至少一個(gè)數(shù)據(jù)流的所述基于策略的TCP堆棧配置信息中 包含的一個(gè)或更多個(gè)TCP堆棧配置值。13. 根據(jù)權(quán)利要求12所述的方法,其中,調(diào)整用于所述多個(gè)數(shù)據(jù)流中的所述至少一個(gè)數(shù) 據(jù)流的所述基于策略的TCP堆棧配置信息中包含的所述一個(gè)或更多個(gè)TCP堆棧配置值包括: 調(diào)整所述一個(gè)或更多個(gè)TCP堆棧配置值中包含的一個(gè)或更多個(gè)TCP頭字段值。14. 根據(jù)權(quán)利要求12所述的方法,其中,調(diào)整用于所述多個(gè)數(shù)據(jù)流中的所述至少一個(gè)數(shù) 據(jù)流的所述基于策略的TCP堆棧配置信息中包含的所述一個(gè)或更多個(gè)TCP堆棧配置值包括: 在所述協(xié)議發(fā)送方與所述協(xié)議接收方之間建立連接之前或者在所述協(xié)議發(fā)送方與所 述協(xié)議接收方之間所建立的連接期間一次或更多次地調(diào)整用于所述多個(gè)數(shù)據(jù)流中的所述 至少一個(gè)數(shù)據(jù)流的所述一個(gè)或更多個(gè)TCP堆棧配置值。15. 根據(jù)權(quán)利要求12所述的方法,其中,調(diào)整用于所述多個(gè)數(shù)據(jù)流中的所述至少一個(gè)數(shù) 據(jù)流的所述基于策略的TCP堆棧配置信息中包含的所述一個(gè)或更多個(gè)TCP堆棧配置值包括: 調(diào)整用于所述多個(gè)數(shù)據(jù)流中的所述至少一個(gè)數(shù)據(jù)流的所述一個(gè)或更多個(gè)TCP堆棧配置 值,以在所述協(xié)議發(fā)送方與所述協(xié)議接收方之間的連接期間傳遞預(yù)定量的數(shù)據(jù)。16. 根據(jù)權(quán)利要求12所述的方法,其中,調(diào)整用于所述多個(gè)數(shù)據(jù)流中的所述至少一個(gè)數(shù) 據(jù)流的所述基于策略的TCP堆棧配置信息中包含的所述一個(gè)或更多個(gè)TCP堆棧配置值包括: 調(diào)整用于所述多個(gè)數(shù)據(jù)流中的所述至少一個(gè)數(shù)據(jù)流的所述一個(gè)或更多個(gè)TCP堆棧配置 值,以在所述協(xié)議發(fā)送方與所述協(xié)議接收方之間的連接期間的預(yù)定量的時(shí)間期間傳遞所述 多個(gè)數(shù)據(jù)包。17. 根據(jù)權(quán)利要求11所述的方法,其中,創(chuàng)建所述基于策略的TCP堆棧配置信息包括: 以每個(gè)流為單位來調(diào)整一個(gè)或更多個(gè)TCP堆棧配置值。18. 根據(jù)權(quán)利要求11所述的方法,其中,創(chuàng)建所述基于策略的TCP堆棧配置信息包括: 創(chuàng)建所述基于策略的TCP堆棧配置信息以修改用于多個(gè)虛擬機(jī)的所述多個(gè)數(shù)據(jù)流的 TCP協(xié)議的行為。19. 根據(jù)權(quán)利要求18所述的方法,其中,將所述基于策略的TCP堆棧配置信息提供給所 述至少一個(gè)協(xié)議加速模塊進(jìn)一步包括: 用從集中式管理接口創(chuàng)建的所述基于策略的TCP堆棧配置信息來配置所述多個(gè)虛擬機(jī) 中的至少一個(gè)虛擬機(jī)。20. 根據(jù)權(quán)利要求12所述的方法,其中,創(chuàng)建所述基于策略的TCP堆棧配置信息進(jìn)一步 包括: 創(chuàng)建具有分類器信息的流分類器,所述分類器信息代表一組數(shù)據(jù)包匹配規(guī)則。21. 根據(jù)權(quán)利要求12所述的方法,進(jìn)一步包括: 從所述協(xié)議加速模塊接收與在所述協(xié)議發(fā)送方與所述協(xié)議接收方之間傳輸?shù)乃龆?個(gè)數(shù)據(jù)流中的一個(gè)數(shù)據(jù)流所對應(yīng)的所述多個(gè)數(shù)據(jù)包的TCP性能相關(guān)的診斷信息; 基于所述診斷信息來調(diào)整所述基于策略的TCP堆棧配置信息;以及 將經(jīng)調(diào)整的所述基于策略的TCP堆棧配置信息提供給所述協(xié)議加速模塊。22. 根據(jù)權(quán)利要求21所述的方法,其中,所述診斷信息包括來自所述協(xié)議發(fā)送方與所述 協(xié)議加速模塊之間的以及所述協(xié)議加速模塊與所述協(xié)議接收方之間的數(shù)據(jù)路徑的一個(gè)或 更多個(gè)部分的測量信息。23. 根據(jù)權(quán)利要求21所述的方法,其中,所述診斷信息包括一個(gè)或更多個(gè)TCP連接特性。24. -種系統(tǒng),包括: 機(jī)器的處理器; 觀測模塊,所述觀測模塊被配置成觀測用于使用協(xié)議發(fā)送方的基于策略的TCP堆棧配 置信息在所述協(xié)議發(fā)送方與協(xié)議接收方之間傳輸多個(gè)數(shù)據(jù)包的多個(gè)數(shù)據(jù)流中的一個(gè)數(shù)據(jù) 流,其中,所述協(xié)議發(fā)送方和所述協(xié)議接收方中的至少一個(gè)處在虛擬化主機(jī)內(nèi); 數(shù)據(jù)流識別模塊,所述數(shù)據(jù)流識別模塊被配置成使用所述機(jī)器的所述處理器來識別用 于所述多個(gè)數(shù)據(jù)流中的所述一個(gè)數(shù)據(jù)流的所述基于策略的TCP堆棧配置信息; 協(xié)議覆蓋模塊,所述協(xié)議覆蓋模塊被配置成在協(xié)議加速模塊與所述協(xié)議接收方之間用 所識別出的用于所述多個(gè)數(shù)據(jù)流中的所述一個(gè)數(shù)據(jù)流的所述基于策略的TCP堆棧配置信息 來覆蓋所述協(xié)議發(fā)送方的所述基于策略的TCP堆棧配置;以及 傳輸模塊,所述傳輸模塊被配置成在所述協(xié)議發(fā)送方與所述協(xié)議加速模塊之間使用所 述協(xié)議發(fā)送方的所述基于策略的TCP堆棧配置、并且在所述協(xié)議加速模塊與所述協(xié)議接收 方之間使用所述基于策略的TCP堆棧配置信息來傳輸所識別出的所述多個(gè)數(shù)據(jù)流中的所述 一個(gè)數(shù)據(jù)流。25. 根據(jù)權(quán)利要求24所述的系統(tǒng),進(jìn)一步包括: 監(jiān)視模塊,所述監(jiān)視模塊被配置成診斷與在所述協(xié)議發(fā)送方與所述協(xié)議接收方之間傳 輸所述多個(gè)數(shù)據(jù)包的所述多個(gè)數(shù)據(jù)流中的所述一個(gè)數(shù)據(jù)流的TCP性能相關(guān)的信息。26. 根據(jù)權(quán)利要求25所述的系統(tǒng),其中,所述診斷信息包括來自所述協(xié)議發(fā)送方與所述 協(xié)議加速模塊之間的以及所述協(xié)議加速模塊與所述協(xié)議接收方之間的數(shù)據(jù)路徑的一個(gè)或 更多個(gè)部分的測量信息。27. 根據(jù)權(quán)利要求25所述的系統(tǒng),其中,所述診斷信息包括一個(gè)或更多個(gè)TCP連接特性。28. 根據(jù)權(quán)利要求24所述的系統(tǒng),進(jìn)一步包括: 管理接口,所述管理接口被配置成創(chuàng)建用于所述多個(gè)數(shù)據(jù)流的所述基于策略的TCP堆 棧配置信息。29. -種系統(tǒng),包括: 機(jī)器的處理器; 協(xié)議配置模塊,所述協(xié)議配置模塊被配置成使用所述機(jī)器的所述處理器來創(chuàng)建用于通 過協(xié)議加速模塊與協(xié)議接收方之間的數(shù)據(jù)路徑的一部分在協(xié)議發(fā)送方與所述協(xié)議接收方 之間傳輸多個(gè)數(shù)據(jù)包的多個(gè)數(shù)據(jù)流的基于策略的TCP堆棧配置信息而不修改所述協(xié)議發(fā)送 方的TCP堆棧配置信息,其中,所述協(xié)議發(fā)送方和所述協(xié)議接收方中的至少一個(gè)處在虛擬化 主機(jī)內(nèi);以及 傳輸模塊,所述傳輸模塊被配置成將所述基于策略的TCP堆棧配置信息提供給至少一 個(gè)協(xié)議加速模塊。30. 根據(jù)權(quán)利要求29所述的系統(tǒng),其中,所述協(xié)議配置模塊和所述傳輸模塊中的至少一 個(gè)被包括在管理接口內(nèi)。31. 根據(jù)權(quán)利要求29所述的系統(tǒng),其中,所述協(xié)議配置模塊被配置成創(chuàng)建所述基于策略 的TCP堆棧配置信息以修改用于多個(gè)虛擬機(jī)的所述多個(gè)數(shù)據(jù)流的TCP協(xié)議的行為。32. 根據(jù)權(quán)利要求30所述的系統(tǒng),其中,所述管理接口被配置成用所述基于策略的TCP 堆棧配置信息來配置多個(gè)虛擬機(jī)中的至少一個(gè)虛擬機(jī)。33. -種不具有暫態(tài)信號并且實(shí)施指令的有形機(jī)器可讀存儲介質(zhì),所述指令當(dāng)由機(jī)器 執(zhí)行時(shí)使所述機(jī)器執(zhí)行多個(gè)操作,所述操作包括: 觀測用于使用協(xié)議發(fā)送方的TCP堆棧配置信息在所述協(xié)議發(fā)送方與協(xié)議接收方之間傳 輸多個(gè)數(shù)據(jù)包的多個(gè)數(shù)據(jù)流中的一個(gè)數(shù)據(jù)流,所述多個(gè)數(shù)據(jù)流中的所述一個(gè)數(shù)據(jù)流包括傳 輸一個(gè)或更多個(gè)數(shù)據(jù)包,其中,所述協(xié)議發(fā)送方和所述協(xié)議接收方中的至少一個(gè)處在虛擬 化主機(jī)內(nèi); 使用機(jī)器的處理器來識別用于所述多個(gè)數(shù)據(jù)流中的所述一個(gè)數(shù)據(jù)流的基于策略的TCP 堆棧配置信息; 在協(xié)議加速模塊與所述協(xié)議接收方之間用所識別出的用于所述多個(gè)數(shù)據(jù)流中的所述 一個(gè)數(shù)據(jù)流的所述基于策略的TCP堆棧配置信息來覆蓋所述協(xié)議發(fā)送方的所述基于策略的 TCP堆棧配置;以及 在所述協(xié)議發(fā)送方與所述協(xié)議加速模塊之間使用所述發(fā)送方的所述基于策略的TCP堆 棧配置、并且在所述協(xié)議加速模塊與所述協(xié)議接收方之間使用所述基于策略的TCP堆棧配 置信息來傳輸所識別出的所述多個(gè)數(shù)據(jù)流中的所述一個(gè)數(shù)據(jù)流。
      【文檔編號】G06F9/54GK105917310SQ201480058870
      【公開日】2016年8月31日
      【申請日】2014年9月25日
      【發(fā)明人】拉馬納·康佩拉, 蘇米特·辛格
      【申請人】阿普福米克斯有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1