優(yōu)先權申明
本申請要求2015年2月10日提交的美國專利申請no.14/619,008;和2015年2月9日提交的美國專利申請no.14/617,876的優(yōu)先權益;兩者均要求于2014年9月17日提交的題為“用于向數(shù)據(jù)中心應用提供服務質量的系統(tǒng)和方法”的62/051,674的優(yōu)先權,所有這些都通過引用整體并入本文。
本申請涉及根據(jù)一個實施方式的用于在虛擬化計算環(huán)境中使用的方法和系統(tǒng),并且更具體地涉及用于改善虛擬化計算環(huán)境中的網絡協(xié)議性能的方法和系統(tǒng)。
背景技術:
調制解調器數(shù)據(jù)中心已經進入虛擬化領域,其中像cpu、存儲器和磁盤這樣的資源在虛擬機之間進行虛擬化和共享。通常,為了提供可預測和有保證的性能,盡力向虛擬機分配這些資源的固定量。網絡是已經做了大量工作來提供性能隔離的這樣一種資源。
軟件定義網絡(sdn)在虛擬化網絡層并提供控制平面的更好可管理性方面取得了長足的進步。但是在互聯(lián)網協(xié)議(ip)/網絡層(通常不具有端到端連接語義的可視性)提供保證并不一定意味著轉化為數(shù)據(jù)中心應用的性能提高,也不會最佳地利用數(shù)據(jù)中心的網絡資源。最終,數(shù)據(jù)中心管理員關心其應用的性能,并為應用提供性能保證。
現(xiàn)有的網絡性能隔離機制可以大致分為限制給定流的帶寬的速率限制技術。盡管這些技術可以限制總體帶寬使用,但這些技術無法增加流的帶寬份額,浪費網絡資源。
附圖說明
各種實施方式通過示例的方式而非限制的方式在附圖的各圖中示出,附圖中:
圖1a示出根據(jù)示例性實施方式的具有用于發(fā)送和接收數(shù)據(jù)包的多主機的數(shù)據(jù)中心。
圖1b示出根據(jù)示例性實施方式的具有駐留在虛擬化主機上的傳輸控制協(xié)議(tcp)發(fā)送器與tcp接收器之間的流的數(shù)據(jù)中心。
圖1c示出根據(jù)另一示例性實施方式的在tcp發(fā)送器與駐留在虛擬化主機上的tcp接收器之間的流的數(shù)據(jù)中心。
圖1d示出根據(jù)示例性實施方式的沒有分層帶寬管理器的兩個流的初始帶寬使用。
圖1e示出根據(jù)示例性實施方式的沒有分層帶寬管理器的兩個流的當前帶寬使用。
圖1f示出根據(jù)示例性實施方式的具有從分層帶寬管理器分配的附加帶寬的兩個流的當前帶寬使用。
圖2a是示出根據(jù)示例性實施方式的在虛擬化系統(tǒng)內的虛擬機管理(vmm)之上操作的虛擬傳輸控制協(xié)議(vtcp)模塊的框圖。
圖2b是示出根據(jù)示例性實施方式的在虛擬化系統(tǒng)內作為應用操作的vtcp模塊的框圖。
圖2c是示出根據(jù)示例性實施方式的在主機操作系統(tǒng)內作為容器操作的vtcp模塊的框圖。
圖2d是示出根據(jù)示例性實施方式的在虛擬化系統(tǒng)內的客戶操作系統(tǒng)內作為容器操作的vtcp模塊的框圖。
圖2e是示出根據(jù)示例性實施方式的在虛擬化系統(tǒng)內作為虛擬機操作的vtcp模塊的框圖。
圖3a示出根據(jù)示例性實施方式的帶寬(bw)管理系統(tǒng)的框圖。
圖3b示出根據(jù)另一示例性實施方式的bw管理系統(tǒng)的框圖。
圖3c示出根據(jù)示例性實施方式的bw管理系統(tǒng)的框圖。
圖3d示出根據(jù)示例性實施方式的bw管理器的框圖。
圖3e示出根據(jù)示例性實施方式的服務質量(qos)管理器的框圖。
圖3f示出根據(jù)示例性實施方式的窗口管理器(wm)的框圖。
圖4a示出根據(jù)示例性實施方式的具有帶有多個虛擬機(vm)的多個租戶的服務器的框圖。
圖4b示出根據(jù)示例性實施方式的運行多個應用的服務器的框圖。
圖4c示出在多個服務器之間分配帶寬資源的服務器的框圖。
圖4d示出根據(jù)示例性實施方式的其帶寬份額由兩個應用使用的vm的框圖。
圖5a示出根據(jù)示例性實施方式的tcp報頭字段。
圖5b示出根據(jù)示例性實施方式的用于業(yè)務的分類的示例性字段。
圖6a示出根據(jù)示例性實施方式的用于顯示由分層帶寬管理器分配的帶寬份額的分層帶寬樹(hbt)。
圖6b示出根據(jù)示例性實施方式的對應于圖6a的hbt的bw管理器模塊。
圖6c示出了根據(jù)示例性實施方式的圖6a中示出的hbt細分為多個子樹。
圖6d示出了根據(jù)示例性實施方式的圖6a中示出的hbt具有多個分層級別。
圖6e示出了根據(jù)示例性實施方式的圖6a中示出的hbt具有由bw管理器模塊分配的帶寬份額。
圖6f示出根據(jù)示例性實施方式的通過各種分類參數(shù)過濾的hbt。
圖6g示出根據(jù)示例性實施方式的具有父節(jié)點和配置用于最低保證的子節(jié)點的子樹的實例。
圖7a示出根據(jù)示例性實施方式的與葉節(jié)點相關聯(lián)的bw管理系統(tǒng)的一部分。
圖7b示出根據(jù)示例性實施方式的具有由qos管理器分配和優(yōu)先化的帶寬份額的hbt。
圖7c示出根據(jù)示例性實施方式的與具有分配的應用優(yōu)先級份額的葉節(jié)點相關聯(lián)的bw管理系統(tǒng)的一部分。
圖7d示出根據(jù)示例性實施方式的bw管理系統(tǒng)的一部分,其與具有分配的流份額的葉節(jié)點相關聯(lián),所分配的流份額用于所分配的優(yōu)先級份額中的一個。
圖8a示出根據(jù)示例性實施方式的在具有wm流請求的無壓模式下操作的qos管理器的實例。
圖8b示出根據(jù)示例性實施方式的在具有qos流響應的無壓模式下操作的qos管理器的實例。
圖9a示出根據(jù)示例性實施方式的在具有wm流請求的欠壓模式下操作的qos管理器的實例。
圖9b示出根據(jù)示例性實施方式的在具有qos流響應的欠壓模式下操作的qos管理器的實例。
圖10a示出在兩個主機之間傳輸?shù)膖cp數(shù)據(jù)包。
圖10b示出根據(jù)示例性實施方式的以由分層帶寬管理器管理的數(shù)據(jù)流在兩個主機之間傳輸?shù)膖cp數(shù)據(jù)包。
圖10c示出了根據(jù)示例性實施方式的針對流1在兩個主機之間傳輸?shù)膖cp數(shù)據(jù)包。
圖10d示出了根據(jù)示例性實施方式的針對流2在兩個主機之間傳輸?shù)膖cp數(shù)據(jù)包。
圖10e示出根據(jù)示例性實施方式的具有隨時間增加的流1和2的輸出流速的表格。
圖10f示出根據(jù)示例性實施方式的用于具有流1和2的葉節(jié)點的分層帶寬管理器的一部分。
圖11a示出了代表tcp接收器從tcp發(fā)送器接受數(shù)據(jù)包的方法的示例性流程圖。
圖11b示出根據(jù)一個實施方式的用于控制發(fā)送主機使用滑動窗口協(xié)議傳輸數(shù)據(jù)包的速率的方法的示例性流程圖。
圖11c示出根據(jù)另一實施方式的用于控制發(fā)送主機使用滑動窗口協(xié)議傳輸數(shù)據(jù)包的速率的方法的示例性流程圖。
圖11d示出根據(jù)一個實施方式的用于確定每個流的帶寬請求的方法的示例性流程圖。
圖11e示出根據(jù)一個實施方式的用于確定針對流的集合的帶寬請求的方法的示例性流程圖。
圖11f示出根據(jù)一個實施方式的用于確定流的每個集合的帶寬響應的方法的示例性流程圖。
圖11g示出根據(jù)一個實施方式的用于確定每個流的帶寬響應的方法的示例性流程圖。
圖11h示出根據(jù)一個實施方式的用于為單獨流生成窗口大小的方法的示例性流程圖。
圖12示出根據(jù)一個實施方式的用于管理用于與服務器機器相關聯(lián)的流的集合的帶寬的方法的示例性流程圖。
圖13是示出了根據(jù)一些示例性實施方式的可以安裝在機器上的軟件體系結構的實例的框圖。
圖14示出根據(jù)示例性實施方式的以計算機系統(tǒng)的形式的機器的示意性表示,在該計算機系統(tǒng)中,可執(zhí)行一組指令以使機器執(zhí)行本文所討論的任何一個或多個方法。
在本文中提供的標題僅為了方便起見,并不一定影響所使用的術語的范圍或含義。
具體實施方式
下面的描述包括體現(xiàn)本發(fā)明的說明性實施方式的系統(tǒng)、方法、技術、指令序列和計算機程序產品。在以下描述中,為了說明的目的,闡述了很多具體細節(jié)以便提供對發(fā)明主題的各種實施方式的理解。然而,對于本領域的技術人員明顯的是,可在沒有這些具體細節(jié)的情況下,實踐發(fā)明主題的實施方式。一般來說,未詳細示出眾所周知的指令實例、協(xié)議、結構和技術。
服務器虛擬化是使用虛擬化軟件將it硬件抽象到虛擬服務器的過程。通過分配物理it資源并安裝操作系統(tǒng),通過虛擬化軟件創(chuàng)建虛擬服務器。虛擬服務器使用自己的客戶操作系統(tǒng),這些操作系統(tǒng)與創(chuàng)建它們所在的操作系統(tǒng)無關。
描述了以有效地使用網絡資源的方式向數(shù)據(jù)中心應用提供傳輸層(層4)服務質量(qos)的方法和系統(tǒng)。在各種示例性實施方式中,公開了用于控制由tcp發(fā)送器向tcp接收器發(fā)送數(shù)據(jù)包的速率的系統(tǒng)和方法。bw管理系統(tǒng)代表tcp接收器以流速接受來自tcp發(fā)送器的數(shù)據(jù)包。bw管理系統(tǒng)基于接收主機從bw管理系統(tǒng)接收所接受的數(shù)據(jù)包的估計速率來計算要向tcp發(fā)送器通告的窗口大小wa。bw管理系統(tǒng)向tcp發(fā)送器通告窗口大小wa以控制由tcp發(fā)送器傳輸?shù)臄?shù)據(jù)包的流速。bw管理系統(tǒng)以基于向tcp發(fā)送器通告的窗口大小的調整的流速,代表tcp接收器接受來自tcp發(fā)送器的數(shù)據(jù)包。
在各種實施方式中,公開了通過管理兩個主機之間的數(shù)據(jù)流來為應用提供端到端qos保證的系統(tǒng)和方法。bw管理器模塊通過對業(yè)務類別分配帶寬限制來管理關聯(lián)的業(yè)務類別的流的集合的帶寬。qos管理器模塊基于對業(yè)務類別所分配的帶寬限制來將應用優(yōu)先級份額分配給業(yè)務類別并且分配與應用優(yōu)先級份額相關聯(lián)的流份額。wm模塊通過調整通告給第一主機的窗口大小來管理各個單獨流的帶寬。通告的窗口大小控制第一主機向第二主機傳輸數(shù)據(jù)包的速率。通告的窗口大小基于來自qos管理器的分配的流份額。
在數(shù)據(jù)中心網絡中的虛擬機上運行的應用的性能取決于系統(tǒng)和網絡資源的可用性。已經開發(fā)了大量的機制來在競爭的應用之間分配系統(tǒng)資源以提供可預測的性能。但是,僅此并不能保證應用所需的qos。需要對網絡資源進行智能管理,以幫助應用實現(xiàn)其預期的性能水平。軟件定義網絡(sdn)領域的研究和開發(fā)改善了網絡層的控制平面的可管理性,確保主機可以相互通信。然而,sdn解決方案沒有提供應用層qos所需的信息或機制。
數(shù)據(jù)中心應用的網絡工作量包含在流中。流傳統(tǒng)上被定義為從源到目的地的數(shù)據(jù)包序列,并且由源和目的地的網絡地址和端口號唯一地標識。源和目的地還可以分別稱為發(fā)送主機和接收主機。這些流的大部分遵循用于將數(shù)據(jù)從源(例如,tcp發(fā)送器)傳送到目的地(例如,tcp接收器)的tcp協(xié)議。在控制端到端連接語義的網絡傳輸層(例如,tcp/ip)操作允許用于數(shù)據(jù)中心應用的真正的qos。協(xié)議加速模塊(也稱為vtcp模塊或tcp加速模塊)是通過在tcp和用戶數(shù)據(jù)報協(xié)議(udp)流的使用期內主動地管理會話來為應用提供端到端qos保證的網絡機制。
本文描述的示例性實施方式提供用于在云環(huán)境中的協(xié)議發(fā)送器和協(xié)議接收器之間傳輸數(shù)據(jù)包的系統(tǒng)和方法,云環(huán)境具有駐留在虛擬化主機內的協(xié)議發(fā)送器或協(xié)議接收器。對于一個實施方式,所傳輸?shù)臄?shù)據(jù)包可以是tcp數(shù)據(jù)包,使得協(xié)議發(fā)送器和接收器可以是tcp協(xié)議發(fā)送器和接收器。協(xié)議加速模塊(在各種實施方式中也稱為vtcp模塊或tcp加速模塊)可以沿著從客戶os內的協(xié)議發(fā)送器/接收器到物理網絡接口卡(nic)的數(shù)據(jù)路徑的任何地方安裝和維護。對于一些實施方式,協(xié)議加速模塊可以插入或集成在管理程序內。在其他實施方式中,vtcp模塊可以在操作系統(tǒng)(主機os或客戶os)內運行,作為應用運行或部署為服務器。在示例性實施方式中,協(xié)議加速模塊包括用于為與物理服務器相關聯(lián)的流的集合分配帶寬的bw管理系統(tǒng)。在各種實施方式中,物理服務器還可以稱為服務器機器。
圖1a示出根據(jù)示例性實施方式的具有用于發(fā)送和接收數(shù)據(jù)包的多個主機的數(shù)據(jù)中心。數(shù)據(jù)中心100包括用于在兩個主機之間傳輸數(shù)據(jù)的數(shù)據(jù)中心網絡105。每一個主機可以表示數(shù)據(jù)流(也稱作流)中的端點。在數(shù)據(jù)中心網絡105內,流表示在兩個端點之間交換的一系列數(shù)據(jù)包。在示例性實施方式中,每個端點包含相同的唯一地址和端口。業(yè)務類別表示流的集合。業(yè)務類別內的流的集合與一些用戶定義的分類規(guī)則(例如,端口號、ip地址、vlan等)匹配。
物理服務器104使用物理網絡接口卡(nic)103與數(shù)據(jù)中心網絡105通信,并且物理服務器106使用物理nic107與數(shù)據(jù)中心網絡105通信。物理服務器104與其上運行的操作系統(tǒng)101可以稱作物理主機。物理主機可以是tcp發(fā)送器或tcp接收器,也稱為tcp發(fā)送器/接收器102。在示例性實施方式中,物理服務器106表示包含兩個vm的實例化(vm119和vm120)的單個物理計算機系統(tǒng)。在該實施方式中,物理服務器106具有安裝其上的被稱為管理程序110的軟件層,該軟件層提供虛擬化平臺并且可用于管理和監(jiān)測vm119和120的一個或多個實例化。具有虛擬化軟件(例如,管理程序110)的物理服務器106可以被稱為具有vm的多個實例化的虛擬化主機。管理程序110用于生成物理服務器106的虛擬服務器實例。在示例性實施方式中,管理程序110限于一個物理服務器,并且因此可以僅創(chuàng)建物理服務器106的虛擬圖像。
管理程序110或其他虛擬機管理軟件(未示出)允許創(chuàng)建多個虛擬機以在相同的物理機器(即,物理服務器106)上并行地單獨運行。每個虛擬機vm119和120具有其自身的一組虛擬硬件(ram、cpu、nic),操作系統(tǒng)(例如,客戶操作系統(tǒng)115和116)和完整配置的應用(例如,應用軟件117和118)裝載于該組虛擬硬件上。
管理程序110包括vtcp模塊109,也稱為協(xié)議加速模塊或tcp加速模塊。在示例性實施方式中,vtcp模塊109可以用于加速tcp發(fā)送器與tcp接收器之間的數(shù)據(jù)包的傳輸,而不改變發(fā)送tcp數(shù)據(jù)包的主機的tcp配置。
在圖1a中,vtcp模塊109包括bw管理系統(tǒng)125。bw管理系統(tǒng)125負責管理與物理服務器106或虛擬化主機相關聯(lián)的數(shù)據(jù)流的帶寬。參考圖1b,數(shù)據(jù)流130表示在物理服務器106上運行的vm119與物理服務器104之間的端到端連接。更具體地,圖1b示出tcp發(fā)送器/接收器113傳輸tcp數(shù)據(jù)包至tcp發(fā)送器/接收器102。參考圖1c,數(shù)據(jù)流140表示在物理服務器106上運行的vm120與物理服務器104之間的端到端連接。更具體地,圖1c示出tcp發(fā)送器/接收器102傳輸tcp數(shù)據(jù)包至tcp發(fā)送器/接收器114。在替代實施方式中,tcp發(fā)送器和tcp接收器都可以駐留在虛擬化主機上。
參考回圖1a,與物理服務器相關聯(lián)的數(shù)據(jù)流可以被稱為全面業(yè)務類別。對于示例性實施方式,物理服務器可以是物理服務器106。在可替換的實施方式中,bw管理系統(tǒng)125可以不與虛擬化主機相關聯(lián)。全面業(yè)務類別指用于物理服務器的所有流。在一些實施方式中,物理服務器的帶寬受該服務器的整個鏈路容量的限制。換言之,與物理服務器106相關聯(lián)的數(shù)據(jù)流的最大帶寬由物理nic107與物理服務器106之間的數(shù)據(jù)鏈路的最大容量確定。hbt用于示出bw管理系統(tǒng)125如何管理物理服務器的流的帶寬。圖6a至圖6b示出hbt的實例。根節(jié)點表示物理服務器106和與服務器相關聯(lián)的所有流(也稱為全面業(yè)務類別)。其他節(jié)點表示與虛擬資源相關聯(lián)的業(yè)務類別,虛擬資源和物理服務器106相關聯(lián)。虛擬資源可以表示單個vm或多個vm,其被稱為vm的租戶或池。虛擬資源的實例在圖4a、圖4c和圖4d中示出。hbt表示可以由不同等級的不同業(yè)務類別過濾的流的全面業(yè)務類別。以下對bw管理系統(tǒng)125和hbt進行更詳細地描述。bw管理系統(tǒng)125內的各種組件和模塊在下面描述的幾個其他附圖中討論,例如圖3a至圖3f。
虛擬nic(vnic)111將vm119邏輯連接至管理程序110,并且vnic112將vm120邏輯連接至管理程序110。第一虛擬數(shù)據(jù)路徑包括vnic111、vtcp模塊109、及虛擬交換機108。第二虛擬數(shù)據(jù)路徑包括vnic112、vtcp模塊109、及虛擬交換機108。在可替換的實施方式中,vtcp模塊109可以沿著虛擬數(shù)據(jù)路徑位于別處。在另一實施方式中,vtcp模塊109可以操作為在vm上運行的應用(參見圖2b),駐留在主機操作系統(tǒng)內(參見圖2c),駐留在客戶操作系統(tǒng)(參見圖2d)或者部署為服務器(參見圖2e)。在其他實施方式中,bw管理系統(tǒng)125可以不駐留在vtcp模塊109內。在另一實施方式中,bw管理系統(tǒng)125可以不與虛擬化主機相關聯(lián)。
物理服務器104的tcp發(fā)送器和/或接收器102駐留在操作系統(tǒng)101中。tcp發(fā)送器和/或接收器113駐留在客戶操作系統(tǒng)115中,并且tcp發(fā)送器和/或接收器114駐留在客戶操作系統(tǒng)116中。諸如tcp數(shù)據(jù)包的數(shù)據(jù)包從在圖1a中示出的主機傳輸并接收。雖然在圖1a中示出兩個vm,替換實施方式可包括任意數(shù)量的vm。在另一實施方式中,數(shù)據(jù)包可以在兩個虛擬化主機或者兩個物理主機之間傳輸。在其他實施方式中,可以傳輸使用其他協(xié)議(諸如udp)的數(shù)據(jù)包。
圖1d示出兩個流的初始帶寬使用。系統(tǒng)150示出兩個流,每個具有500mbps的初始帶寬使用。流155在主機151與主機152之間,并且流156在主機151與主機153之間。
圖1e和圖1f示出了如圖1d所示的相同的兩個流,除了流155已將其當前帶寬使用降低到200mbps,并且流156具有800mbps的增加的帶寬速率之外。圖1e中示出的系統(tǒng)160不具有bw管理系統(tǒng);圖1f中示出的系統(tǒng)170包括bw管理系統(tǒng)125。因為系統(tǒng)160不具有bw管理系統(tǒng)125以在流155和156(在圖1e中示為流165和166)之間重新分配指派的帶寬,所以流165以200mbps操作,并且流166以500mbps操作,以及在當前使用為500mbps之后丟棄接收的數(shù)據(jù)包。另一方面,圖1f所示的bw管理系統(tǒng)125能夠將帶寬從流155分配到流156,流155在圖1f中示出為流175,流175未充分利用其500mbps的初始帶寬分配,流156在圖1f中示出為流176,流176過度使用其500mbps的初始帶寬分配。
圖2a是示出了基于硬件的虛擬化系統(tǒng)200的示例性實施方式的框圖。在該實施方式中,稱為硬件250的單個物理計算機系統(tǒng)可包含虛擬機(vm)的一個或多個實例化,諸如vm210、220和230。在該實施方式中,硬件250具有稱為管理程序240的軟件層(也可稱為安裝在硬件250上的vmm),其提供虛擬化平臺。管理程序240可以用于管理并監(jiān)測硬件250上的vm210、220和230的一個或多個實例化。在該示例中,管理程序240直接安裝在硬件250的本地硬件上;然而,管理程序還可以作為軟件層安裝在稱為主機操作系統(tǒng)的本機操作系統(tǒng)中。bw管理系統(tǒng)(未示出)是vtcp模塊109的一部分并且在管理程序240上運行。
在這個實施方式中,管理程序240具有安裝在硬件250上的vm(例如,vm210、220和230)的三個實例化。各個vm210、220、230具有操作系統(tǒng)(諸如客戶操作系統(tǒng)212、222和232)以及各種程序應用(諸如應用軟件211、221和231)。在各種實施方式中,操作系統(tǒng)212、222、223和應用軟件211、221、231基本上與共同位于相同物理硬件250上的其他vm隔離運行。
圖2b是示出根據(jù)示例性實施方式的在虛擬化系統(tǒng)內作為應用軟件操作的vtcp模塊109a-109c的框圖。在圖2b中,系統(tǒng)201內的vm(210、220、230)中的每一個包括操作為軟件應用的vtcp模塊(分別為109a、109b、109c)。vm210包括具有app211a、211b和vtcp模塊109a的應用軟件211。vm220包括具有app221a、221b和vtcp模塊109b的應用軟件221。vm230包括具有app231a、231b和vtcp模塊109c的應用軟件231。bw管理系統(tǒng)125a、125b、及125c分別駐留在vtcp模塊109a、109b、及109c內。
圖2c是示出根據(jù)示例性實施方式的駐留在主機操作系統(tǒng)101內的vtcp模塊的框圖。系統(tǒng)202包括硬件250和在硬件250上運行的軟件260。軟件206包括操作系統(tǒng)101(也稱作主機os)、容器引擎263(例如,docker)、多個容器(例如,容器261和262)。在示例性實施方式中,docker(即,容器引擎)可以用于通過提供附加抽象層以及操作系統(tǒng)級虛擬化(例如,在linux上)的自動化來使軟件容器內的應用的部署自動化。因此,可以避免或者最小化啟動vm的開銷。參考圖2c,每個容器261、262內分別是應用軟件267、268。應用軟件267包括在容器261內,并且應用軟件268包括在容器262內。vtcp模塊109位于操作系統(tǒng)101(即,主機os)內。在示例性實施方式中,bw管理系統(tǒng)125是vtcp模塊109的組件。
圖2d是示出了分別駐留在客戶操作系統(tǒng)212、222內的vtcp模塊109a、109b的框圖,客戶操作系統(tǒng)212、222駐留在虛擬化系統(tǒng)內。vtcp模塊109a駐留在客戶操作系統(tǒng)212內并且vtcp模塊109b駐留在客戶操作系統(tǒng)222內。在這個實施方式中,管理程序240具有安裝在硬件250上的vm的兩個實例化(例如,vm210和220)。在各種實施方式中,vtcp模塊109a和109b分別各自包括bw管理系統(tǒng)125a和125b。vm210包括客戶操作系統(tǒng)212、容器引擎279、容器275(包括應用軟件271)和容器276(包括應用軟件272)。vm220包括客戶操作系統(tǒng)222、容器引擎280、容器277(包括應用軟件273)和容器278(包括應用軟件274)。用戶可以通過創(chuàng)建經由ip地址和/或協(xié)議端口號過濾的業(yè)務類別來基于每個容器設置最小帶寬預留和/或最大帶寬容量。
圖2e是示出根據(jù)示例性實施方式的操作為vm并且部署為服務器的vtcp模塊的框圖。在系統(tǒng)204中所示的實施方式中,管理程序240具有安裝在硬件250上的vm的四個實例化。四個vm包括vm210、vm220、vm230和vm235,其被稱為部署為服務器的vtcp模塊。
圖3a示出根據(jù)示例性實施方式的bw管理系統(tǒng)125。在各種實施方式中,bw管理系統(tǒng)125在vtcp模塊109中實現(xiàn)。在可替換的實施方式中,bw管理系統(tǒng)125可以駐留在其他類型的加速協(xié)議模塊中。例如,協(xié)議加速模塊可以不必局限于tcp協(xié)議或者用于虛擬化環(huán)境中。如在圖2a至圖2e中所示,vtcp模塊109可以駐留在vmm管理程序240、vm(例如,vm210、vm220、或者vm230)、主機操作系統(tǒng)101、客戶操作系統(tǒng)212或者222、或者具有部署為服務器的vtcp模塊109的vm235內。在一些實施方式中,bw管理系統(tǒng)125被配置為接受來自發(fā)送主機的數(shù)據(jù)包(例如,圖3a中311處,來自tcp發(fā)送器的數(shù)據(jù)包)。bw管理系統(tǒng)125代表接收主機接受數(shù)據(jù)包(例如,312處至tcp接收器的數(shù)據(jù)包)。由bw管理系統(tǒng)125接受的數(shù)據(jù)包在bw管理系統(tǒng)125將數(shù)據(jù)包轉發(fā)至接收主機之前可以暫時由bw管理系統(tǒng)125存儲。
bw管理系統(tǒng)125可以被稱為網絡機構,其通過在tcp流以及使用其他協(xié)議的流(諸如用戶數(shù)據(jù)報協(xié)議(udp)流)的使用期(或使用期的至少一部分)中主動地管理會話來為應用提供端到端服務質量(qos)保證。在各種實施方式中,可以分類業(yè)務流(也稱為“業(yè)務類別”或“流的業(yè)務類別”或“業(yè)務子類別”)以使用特定標準將具有不同特性的數(shù)據(jù)包組織成不同的類別。由另一參數(shù)過濾的業(yè)務類別可稱為業(yè)務子類別。
圖5b提供可以用于對流的業(yè)務類別進行分類的過濾器的一些實例。用于對業(yè)務進行分類的表525包括用于提供與列531中的過濾器相對應的數(shù)據(jù)源的列521。列531中的過濾器表示可用于配置與hbt中的節(jié)點相關聯(lián)的業(yè)務類別的業(yè)務分類參數(shù)。hbt的實例在圖6a-圖6g中示出。圖5b中示出的過濾器包括列531中的以下過濾器:物理端口532、虛擬端口533、vlan534、vn535、ip源536、ip目的地537、協(xié)議538、端口源539和端口目的地540。其他示例性實施方式可以使用其他過濾器來對業(yè)務進行分類。
bw管理系統(tǒng)125通過對針對在服務器機器上運行的軟件應用的入站和出站數(shù)據(jù)流(與業(yè)務的類別相關聯(lián))進行速率限制來解決qos。在示例性實施方式中,服務器機器可以駐留在具有虛擬化資源的云計算環(huán)境中。在其他實施方式中,服務器機器可以不表示虛擬化資源。bw管理系統(tǒng)125可以用于通過影響對發(fā)送主機(例如,tcp發(fā)送器)可以向接收主機(例如,tcp接收器)傳輸?shù)臄?shù)據(jù)量的控制,來控制業(yè)務類別的業(yè)務的入站速率。在各種實施方式中,從發(fā)送主機發(fā)送數(shù)據(jù)包的速率由諸如tcp數(shù)據(jù)包的窗口大小的參數(shù)控制。在使用非tcp協(xié)議的其他實施方式中,其他參數(shù)可以用于控制從發(fā)送主機發(fā)送數(shù)據(jù)包的速率。各種滑動窗口協(xié)議可用于控制發(fā)送主機傳輸數(shù)據(jù)包的速率。
再次參考圖3a,bw管理系統(tǒng)125使用三組件結構來管理針對物理服務器的所有流的帶寬,該三組件結構包括示例性實施方式中的bw管理器模塊320、qos管理器模塊330和wm模塊340。在可替換的實施方式中,模塊320、330及340可以單獨使用,或者以不同組合一起使用以實現(xiàn)bw管理系統(tǒng)125。在各種實施方式中,與物理服務器相關聯(lián)的流可以稱為由全面業(yè)務類別表示的流的集合。
在示例性實施方式中,bw管理器模塊320將帶寬預留(也稱作min值)分配給業(yè)務類別。在另外的實施方式中,bw管理器模塊分配max值,用于定義對可以由業(yè)務類別實現(xiàn)的最大帶寬的限制。業(yè)務類別的子分類可以以分層方式(如圖6a至圖6g中的hbt所示)進一步劃分帶寬預留(min值)和對可實現(xiàn)的最大帶寬的限制(max值)。子分類可以通過由一個或多個參數(shù)過濾業(yè)務類別完成。在各種實施方式中,業(yè)務類別的子分類還可以稱為業(yè)務子類別。在各種實施方式中,管理器模塊320通過控制與全面業(yè)務類別相關聯(lián)的各個單獨流的集合的帶寬使用以符合分配給hbt中的節(jié)點的帶寬限制來主動地管理各個單獨流(individualflow)。
qos管理器模塊330與和hbt中的葉節(jié)點相關聯(lián)的bw管理器模塊320通信。qos管理器模塊330還與wm模塊340通信。更具體地,qos管理器模塊330從wm模塊340接收每個流的帶寬請求,并且向wm模塊340提供每個流的帶寬響應。qos管理器模塊330將與業(yè)務類別相關聯(lián)的流的集合的帶寬請求發(fā)送到bm管理器模塊320,并從bm管理器模塊320接收用于與業(yè)務類別相關聯(lián)的流的集合的帶寬響應。在下面結合圖3b更詳細描述各種模塊320、330及340之間的通信。
wm模塊340基于每個流向qos管理器模塊330做出帶寬請求,并且從qos管理器模塊330接收每個流的帶寬響應,以基于每個流管理帶寬。該bw管理系統(tǒng)125可以通過使用這三個組件(bw管理器模塊320、qos管理器模塊330和wm模塊340)來幫助在各個單獨流等級和業(yè)務類別等級上實現(xiàn)期望的帶寬。在各種實施方式中,數(shù)據(jù)中心管理員可以使用bw管理系統(tǒng)125來配置網絡中在多個主機上運行的多個應用的qos。
在示例性實施方式中,如圖3a中所示,bw管理系統(tǒng)125配置有位于頂部的bw管理器模塊320、位于bw管理器模塊320下面的qos管理器模塊330、以及在底部的wm模塊340。bw管理器模塊320分配并管理與hbt中的節(jié)點相關聯(lián)的各種業(yè)務類別的帶寬限制。在示例性實施方式中,qos管理器模塊330將qos策略應用于基于應用優(yōu)先級的業(yè)務類別中的流。在示例性實施方式中,wm模塊340使用滑動窗口協(xié)議控制各個單獨流的帶寬。以下還將更詳細地論述這些模塊320、330和340中的每個。
在示例性實施方式中,bw管理器模塊320為hbt中的每個節(jié)點創(chuàng)建帶寬管理器。對于各種實施方式,hbt表示與物理服務器或者服務器機器相關聯(lián)的流的集合。如上所述,節(jié)點可以是由一個或多個流分類參數(shù)過濾的流的集合的表示,也稱為業(yè)務類別或業(yè)務子類別。
圖3a中示出的bw管理器模塊320包括九個bw管理器321-329。bw管理器321-323與根節(jié)點相關聯(lián),bw管理器324-326與其他節(jié)點(即,非根節(jié)點或者非葉節(jié)點)相關聯(lián),以及bw管理器327-329與葉節(jié)點相關聯(lián)。bw管理器模塊320可包括用于為一個或多個hbt創(chuàng)建表示節(jié)點的業(yè)務類別(以及稱為業(yè)務子類別的業(yè)務類別的子分類)的節(jié)點創(chuàng)建模塊(未示出)。每個業(yè)務類別和子類別可以表示hbt中的節(jié)點。對于圖3a中示出的實例,bw管理器模塊320可以管理用于與三個物理服務器相關聯(lián)并由三個單獨的hbt表示的流的集合的帶寬。bw管理器321、322及323各自對應于不同的hbt的根節(jié)點。
在各種實施方式中,bw管理器模塊320被配置為根據(jù)業(yè)務類別管理與服務器機器相關聯(lián)的流的集合的帶寬。業(yè)務類別布置在hbt中,其中,流的集合表示最高級別的全面業(yè)務類別。hbt中的根節(jié)點表示全面業(yè)務類別。與全面業(yè)務類別相關聯(lián)的流的集合劃分為表示業(yè)務類別的更小的集合。葉業(yè)務類別表示hbt的最低級別的業(yè)務類別。每個葉業(yè)務類別由至少一個業(yè)務類別參數(shù)過濾。業(yè)務類別中的流表示兩個主機之間的端到端的連接。在一些實施方式中,主機中的至少一個表示虛擬化主機。在其他實施方式中,沒有主機表示虛擬化主機。
結合圖6a-圖6g描述hbt的實例。在圖3a中示出的bw管理系統(tǒng)125示出bw管理器模塊320、qos管理器模塊330和wm模塊340,各自具有稱作管理器(例如,bw管理器、qos管理器、及wm)的多個組件。在各種實施方式中,模塊320、330及340可以看作是彼此獨立操作,即使它們彼此通信。
在圖3a中示出的實例中,bw管理器模塊320包括多個bw管理器321-329,每個管理器與各種節(jié)點(例如,根節(jié)點、葉節(jié)點、或者其他節(jié)點)相關聯(lián)。qos管理器模塊330包括qos管理器331-333。wm模塊340包括分別布置在wm子模塊341、344及347內的wm342-343、345-346及348-349。與葉節(jié)點相關聯(lián)的bw管理器模塊(例如,327-329)與qos管理器和wm通信。在一些實施方式中,葉節(jié)點中的每一個與bw管理器相關聯(lián)。在葉節(jié)點處與bw管理器相關聯(lián)的是qos管理器和wm。bw管理器的示例性實施方式在圖3d中示出,qos管理器的示例性實施方式在圖3e中示出,并且wm的示例性實施方式在圖3f中示出。下面將連同圖3d-圖3f論述關于bw管理器、qos管理器及wm的更多細節(jié)。應當理解,包括在bw管理器模塊320、qos管理器模塊330和wm模塊340內的管理器的數(shù)量可以根據(jù)與一個或多個全面業(yè)務類別相關聯(lián)的流的集合中的流的數(shù)量以及全面業(yè)務類別如何過濾為由節(jié)點表示的業(yè)務類別而變化。
圖3b示出bw管理系統(tǒng)125的另一實施方式。在圖3b中示出的bw管理系統(tǒng)125示出bw管理器模塊320、qos管理器模塊330、及wm模塊340之間的通信和交互的實例。在各種實施方式中,當數(shù)據(jù)包從發(fā)送主機發(fā)送時,通信從wm模塊340發(fā)送到qos管理器模塊330,從qos管理器模塊330發(fā)送到bw管理器模塊320,然后從bw管理器模塊320發(fā)送到qos管理器模塊330,從qos管理器模塊330發(fā)送到wm模塊340。bw管理系統(tǒng)125通過控制針對流的集合中的單獨流傳輸數(shù)據(jù)包的速率來主動地管理與全面業(yè)務類別相關聯(lián)的流的集合。在示例性實施方式中,模塊340、330及320之間的通信包括wm流請求3401、qos集合請求3301(響應于wm流請求3401)、bw集合響應3302(響應于qos集合請求3301)、及qos流響應3402(響應于wm流請求3302)。在一些實施方式中,qos流響應3402在qos管理器模塊330接收到wm流請求3401之后幾乎是瞬時的。在各種示例性實施方式中,請求包括基于每個流或者針對流的集合的帶寬請求量。wm流請求3401表示每個流的帶寬請求。qos集合請求3301表示與業(yè)務類別相關聯(lián)的流的集合的帶寬請求。在其他示例性實施方式中,響應可包括基于每個流或者針對流的集合的分配的帶寬量。qos流響應3402表示每個流的帶寬響應。bw集合響應3302表示針對與業(yè)務類別相關聯(lián)的流的集合的帶寬響應。
在示例性實施方式中,模塊340、330和320之間的通信流可以是多個wm和與bw管理器相關聯(lián)的qos管理器之間的通信,bw管理器與表示hbt中的葉節(jié)點的業(yè)務類別相關聯(lián)。例如,參考圖7b,wm775-780和qos管理器331與bw管理器327相關聯(lián),bw管理器327與由葉節(jié)點327表示的業(yè)務類別相關聯(lián)。在圖7b所示的示例性實施方式中,在與流的集合相關聯(lián)的管理器(wm775-780、qos管理器331和bw管理器327)之間通信請求(3401和3301)和響應(3402和3302),流的集合與葉節(jié)點720相關聯(lián)。
bw管理器模塊320包括bw邏輯模塊360,qos管理器模塊330包括qos邏輯模塊361,以及wm模塊340包括流邏輯模塊362。在各種實施方式中,bw邏輯模塊360可以分布在一個或多個bw管理器321-329之間。bw管理器321-329可以彼此通信以管理與hbt中的節(jié)點相關聯(lián)的各種業(yè)務類別的帶寬限制。對于各種實施方式,帶寬限制可稱為分配給hbt中的各個節(jié)點的min值和max值。
對于示例性實施方式,qos邏輯模塊361可以表示qos管理器331-333中包括的qos邏輯模塊3610。例如,在圖3e中示出qos管理器331內包括的qos邏輯模塊3610。在各種實施方式中,qos管理器模塊內的qos管理器互相不通信。
對于示例性實施方式,流邏輯模塊362可以表示wm342-343、345-346、及348-349內的一個或多個流邏輯模塊3620。在各種實施方式中,wm互相不通信。圖3f示出wm342中的流邏輯模塊3620的實例。邏輯模塊360、361和362的功能也將在下面分別結合圖3d、圖3e和圖3f進行進一步詳細描述。
wm模塊340將表示每個流的帶寬請求的wm流請求3401發(fā)送至qos管理器模塊330。流邏輯模塊362確定wm流請求3401中請求的帶寬量。在各種實施方式中,wm流請求3401中請求的帶寬量等于針對單獨流的wmax/rtt2。在各種實施方式中,計算第一單獨流的wmax/rtt2的帶寬請求是基于接收主機從bw管理系統(tǒng)125接收針對單獨流的數(shù)據(jù)包的估計速率。
關于圖10a-圖10f更詳細地描述wmax/rtt2的公式。qos邏輯模塊361處理wm流請求3401,并且計算表示與業(yè)務類別相關聯(lián)的流的集合的聚集帶寬量的qos集合請求3301。qos邏輯模塊361聚集跨所有應用優(yōu)先級別針對應用優(yōu)先級別的總請求大小(稱為r),所有應用優(yōu)先級別與關聯(lián)于業(yè)務類別的集合流相關聯(lián)。聚集的總請求大小r表示qos集合請求3301中請求或者指示的聚集帶寬量。在一些實施方式中,qos邏輯模塊361跟蹤每個應用優(yōu)先級別(對于與業(yè)務類別相關聯(lián)的流的集合)的wm流請求3401的帶寬量,然后跨所有應用優(yōu)先級別(對于與業(yè)務類別相關聯(lián)的流的集合)聚集關于每個流所請求的帶寬來計算r。
在示例性實施方式中,可能有稱作p1、p2和p3的三個應用優(yōu)先級別。p1可以表示高應用優(yōu)先級別,p2可以表示中等優(yōu)先級別以及p3可以表示低應用優(yōu)先級別。每個應用優(yōu)先級別具有稱為用于p1的rp1、用于p2的rp2和用于p3的rp3的聚集總請求大小,其中所有三個應用優(yōu)先級別的聚集總請求大小r等于rp1+rp2+rp3。圖7c示出具有三個應用優(yōu)先級別p1、p2、及p3的qos管理器331的一部分的實例。
bw邏輯模塊360處理由bw管理器模塊320接收的qos集合請求3301。在各種實施方式中,可以在bw管理器模塊320響應于qos集合請求3301發(fā)送bw集合響應3302之前,在與hbt相關聯(lián)的bw管理器(例如,321-329)之間發(fā)送多個通信。
在各種實例中,bw邏輯模塊360負責通過控制與業(yè)務類別中的每一個相關聯(lián)的單獨流的集合的帶寬使用,來控制與全面業(yè)務類別相關聯(lián)的各個單獨流的集合的帶寬使用,使得業(yè)務類別中的每一個符合分配給表示業(yè)務類別的節(jié)點的帶寬限制。在各種實施方式中,在wm流請求3401中指定的帶寬量表示在特定時間點的各個單獨流的當前使用,并且在qos集合請求3301中指定的聚集的帶寬請求量表示在特定時間點針對業(yè)務類別的流的集合的當前使用,其中,業(yè)務類別表示具有分配的帶寬限制的節(jié)點。
qos集合請求3301和bw集合響應3302表示與流的集合相關聯(lián)的通信,流的集合與業(yè)務類別(或者全面業(yè)務類別的業(yè)務子類別)相關聯(lián)。bw邏輯模塊360確定在bw集合響應3302中分配的帶寬量,并將bw集合響應3302發(fā)送至qos管理器模塊330。由bw管理器模塊320分配至qos管理器模塊330的帶寬量稱作分配帶寬(b)。qos邏輯模塊361基于應用優(yōu)先級信息來處理指定由qos管理器模塊330接收的分配帶寬(b)的bw集合響應3302。在各種實施方式中,用戶配置或者指派應用優(yōu)先級,例如,高優(yōu)先級、中優(yōu)先級或者低優(yōu)先級。通常,與較高優(yōu)先級應用相關聯(lián)的流被分配有分配帶寬(b)的較大份額。qos邏輯模塊361確定應用優(yōu)先級份額和流份額的分配。在各種實施方式中,分配給應用優(yōu)先級別中的每一個的分配帶寬(b)的部分可以稱為分配帶寬(b)的百分比份額。百分比份額的分配將與圖7c一起進一步論述。
在各種實施方式中,每個應用優(yōu)先級別(也稱為應用優(yōu)先級份額)的分配的帶寬限制的百分比份額是當bw管理系統(tǒng)125接收新的數(shù)據(jù)包時可以修改的動態(tài)值。在各種實施方式中,qos邏輯模塊361負責將流份額分配給應用優(yōu)先級份額的各個單獨流。在一些實施方式中,qos流響應3402指定具有qos分配的帶寬量的流份額。結合圖3e進一步論述確定分配給每個流份額的帶寬量的各種因素。
針對來自與業(yè)務類別相關聯(lián)的流的集合的流,qos管理器模塊330將qos流響應3402提供至wm模塊340。qos流響應3042指定分配給與業(yè)務類別相關聯(lián)的流的集合中的流的帶寬。如圖3b中所示,針對流份額的分配的帶寬可稱為qos分配。
qos流響應3402由wm模塊340接收。在示例性實施方式中,對于tcp流,流邏輯模塊362確定每個流的窗口大小wa,該窗口大小wa被通告給發(fā)送主機(例如,tcp發(fā)送主機)以代表接收主機控制數(shù)據(jù)包被發(fā)送到接收主機的速率(并且由bw管理系統(tǒng)125接受)。如圖3b中所示,qos流響應3402表示每個流的帶寬響應,其指示稱作qos分配的帶寬值。qos分配量可以等于、大于或小于wm流請求3401的量。
wm流請求3401中指示的帶寬量可以由等式wmax/rtt2表示。如以上討論的,響應于wm流請求3401中指示的帶寬量(wmax/rtt2)計算qos分配。qos分配(表示qos流響應3402中指示的帶寬量)用于計算通告的窗口大小wa。在各種實施方式中,通告的窗口大小wa等于qos分配×rtt1。在下面結合圖10a-圖10f更詳細地論述兩個主機之間的數(shù)據(jù)流、以及wm流請求3401wmax/rtt2和窗口大小wa的計算。
在各種實施方式中,模塊320、330及340之間的通信在相關聯(lián)的管理器之間。例如,在一個實施方式中,各個葉節(jié)點(表示用于hbt中最低級別的業(yè)務類別的流的集合)與bw管理器相關聯(lián)。與葉節(jié)點相關聯(lián)的bw管理器中的每一個還與qos管理器和多個wm相關聯(lián)。wm管理器中的每一個與來自與業(yè)務類別相關聯(lián)的流的集合的各個單獨流相關聯(lián)。
例如,參考圖7a,葉節(jié)點701與bw管理器327以及用于業(yè)務類別的流735-738、745-748和755-758的集合相關聯(lián)。qos管理器331與bw管理器327以及用于業(yè)務類別的流735-738、745-748和755-758的集合相關聯(lián)。wm731-734、wm741-744和wm751-754各自與來自用于業(yè)務類別的流735-738、745-748和755-758的集合的單獨流相關聯(lián)。
對于各種實施方式,bw管理系統(tǒng)125代表接收主機以由發(fā)送主機發(fā)送的流速接受第一單獨流的數(shù)據(jù)包。bw管理系統(tǒng)125被配置為管理業(yè)務類別的帶寬,該業(yè)務類別表示與分層帶寬(hbt)中的節(jié)點相關聯(lián)的流的集合。第一單獨流包括在與一個或多個業(yè)務類別相關聯(lián)的單獨流的集合內。在另一實施方式中,bw管理系統(tǒng)125通過管理節(jié)點的帶寬使用來符合分配給節(jié)點的帶寬限制,來控制發(fā)送主機使用滑動窗口協(xié)議傳輸?shù)谝粏为毩鞯臄?shù)據(jù)包的速率。bw管理系統(tǒng)125以基于滑動窗口協(xié)議調整的流速接收第一單獨流的數(shù)據(jù)包。
在其他實施方式中,權利要求1的方法,其中,bw管理系統(tǒng)125的控制通過基于分配給與業(yè)務類別相關聯(lián)的單獨流的集合中的單獨流的應用優(yōu)先級別管理與該業(yè)務類別相關聯(lián)的帶寬分配,來控制發(fā)送主機使用滑動窗口協(xié)議傳輸?shù)谝粏为毩鞯臄?shù)據(jù)包的速率。
在一些實施方式中,業(yè)務類別包括表示與來自hbt中的節(jié)點的多個節(jié)點相關聯(lián)的單獨流的集合的多個業(yè)務類別,并且全面業(yè)務類別表示來自hbt中的節(jié)點的根節(jié)點。在另一實施方式中,全面業(yè)務類別表示具有與服務器機器相關聯(lián)的流的集合的根節(jié)點。全面業(yè)務類別劃分為由多個節(jié)點表示的多個業(yè)務類別。多個節(jié)點表示與全面業(yè)務類別相關聯(lián)的單獨流的集合的子集。
在一些實施方式中,接收主機表示傳輸控制協(xié)議(tcp)接收器,并且發(fā)送主機表示tcp發(fā)送器。
在示例性實施方式中,bw管理系統(tǒng)125通過由bw管理系統(tǒng)計算要通告給發(fā)送主機的窗口大小,來控制發(fā)送主機使用滑動窗口協(xié)議傳輸?shù)谝粏为毩鞯臄?shù)據(jù)包的速率,所通告的窗口大小基于對針對第一單獨流的帶寬請求的帶寬響應。
在又一實施方式中,bw管理系統(tǒng)125通過基于接收主機針對第一單獨流的從bw管理系統(tǒng)接收所接受的數(shù)據(jù)包的估計的速率計算第一單獨流的帶寬請求,來計算要通告給發(fā)送主機的窗口大小。
在一些實施方式中,接收主機正在接收所接受的數(shù)據(jù)包的估計速率基于bw管理系統(tǒng)125用來向接收主機發(fā)送所接受的數(shù)據(jù)包的擁塞窗口和接收主機通告的窗口的最小值以及bw管理系統(tǒng)125與用于第一單獨流的接收主機之間的往返時間。
在其他實施方式中,bw管理系統(tǒng)125向發(fā)送主機傳輸確認數(shù)據(jù)包,其中確認數(shù)據(jù)包包括計算的窗口大?。徊⑶一谟嬎愕拇翱诖笮∫哉{整的流速接收第一單獨流的數(shù)據(jù)包。
在各種示例性實施方式中,bw管理系統(tǒng)125包括窗口管理器(wm)模塊320、服務質量(qos)管理器模塊330和帶寬(bw)管理器模塊340。bw管理系統(tǒng)125進一步通過使wm模塊340生成帶寬請求,使用滑動窗口協(xié)議控制發(fā)送主機傳輸用于第一單獨流的數(shù)據(jù)包的速率,該帶寬請求指示用于與業(yè)務類別相關聯(lián)的單獨流的集合中的單獨流的帶寬量。帶寬量基于接收主機針對單獨流之一從bw管理系統(tǒng)125接收所接受的數(shù)據(jù)包的估計速率。qos管理器模塊330發(fā)送指示帶寬量的帶寬請求。
在另一示例性實施方式中,qos管理器模塊330接收指示帶寬量的帶寬請求;聚集與業(yè)務類別相關聯(lián)的單獨流的集合中的單獨流的帶寬量,以產生聚集的帶寬量;并將指示聚集的帶寬量的帶寬請求發(fā)送至bw管理器模塊320。
在又一示例性實施方式中,bw管理器模塊320接收指示聚集帶寬量的帶寬請求;基于與業(yè)務類別相關聯(lián)的單獨流的集合的帶寬使用和分配給hbt中的根節(jié)點和多個節(jié)點的帶寬限制,來確定用于與業(yè)務類別相關聯(lián)的單獨流的集合的可用帶寬;并且基于用于與業(yè)務類別相關聯(lián)的單獨流的集合的可用帶寬來向與業(yè)務類別相關聯(lián)的單獨流的集合分配帶寬。bw管理器模塊320將指示分配的帶寬的帶寬響應發(fā)送至qos管理器模塊。
在又一示例性實施方式中,qos管理器模塊330接收指示分配的帶寬的帶寬響應;基于與來自單獨流的集合的單獨流相關聯(lián)的應用優(yōu)先級別,對分配給與業(yè)務類別相關聯(lián)的單獨流的集合的帶寬的百分比份額進行分配,單獨流的集合與業(yè)務類別相關聯(lián);并將來自所分配的百分比份額的流份額分配給來自與業(yè)務類別相關聯(lián)的單獨流的集合的單獨流。wm模塊發(fā)送指示所分配的流份額的帶寬響應。
在另一示例性實施方式中,qos管理器模塊320通過確定與業(yè)務類別相關聯(lián)的單獨流的集合中的單獨流的操作模式,將來自分配的百分比份額的流份額分配給來自與業(yè)務類別相關聯(lián)的單獨流的集合的單獨流;以及基于操作模式分配流份額。
在其他示例性實施方式中,wm模塊340接收指示所分配的流份額的帶寬響應;并且基于第一單獨流的分配的流份額生成用于第一單獨流的窗口大小以通告至發(fā)送主機。
在一些實施方式中,wm管理器340通過基于指示第一單獨流的所分配的流份額的帶寬響應以及針對第一單獨流在發(fā)送主機和bw管理系統(tǒng)之間的往返時間生成用于第一單獨流的窗口大小,基于第一單獨流的分配的流份額生成第一單獨流的窗口大小以通告給發(fā)送主機。
在各種實施方式中,發(fā)送主機和接收主機中的至少一個表示與服務器機器相關聯(lián)的虛擬化資源。在其他實施方式中,發(fā)送主機和接收主機中的至少一個表示docker實例。
在各種示例性實施方式中,bw管理系統(tǒng)125代表接收主機以發(fā)送主機發(fā)送的流速接受第一單獨流的數(shù)據(jù)包,帶寬管理系統(tǒng)125被配置為管理業(yè)務類別的帶寬,業(yè)務類別表示與分層帶寬(hbt)中的節(jié)點相關聯(lián)的流的集合。第一單獨流包括在與一個或多個業(yè)務類別相關聯(lián)的單獨流的集合內。bw管理系統(tǒng)125通過基于分配給與業(yè)務類別相關聯(lián)的單獨流的集合中的單獨流的應用優(yōu)先級別來管理與業(yè)務類別相關聯(lián)的單獨流的帶寬分配,來控制發(fā)送主機使用滑動窗口協(xié)議傳輸?shù)谝粏为毩鞯臄?shù)據(jù)包的速率,并且基于滑動窗口協(xié)議以調整的流速接收第一單獨流的數(shù)據(jù)包。在又一實施方式中,bw管理系統(tǒng)125通過管理節(jié)點的帶寬使用以符合分配給節(jié)點的帶寬限制來控制發(fā)送主機傳輸?shù)谝粏为毩鞯臄?shù)據(jù)包的速率,由此控制發(fā)送主機使用滑動窗口協(xié)議傳輸?shù)谝粏为毩鞯臄?shù)據(jù)包的速率。
圖3c示出bw管理系統(tǒng)125的另一實施方式。圖3c中示出的bw管理系統(tǒng)125包括bw管理器模塊320、qos管理器模塊330、wm模塊340、流緩沖器354、流表355、配置接口模塊356、以及帶寬使用跟蹤模塊357。bw管理系統(tǒng)125可以托管在通信地耦合以允許服務器機器之間的通信的專用或共享服務器機器上。服務器機器還可以稱為一個或多個物理服務器。組件本身通信地彼此耦合并且與各種數(shù)據(jù)源通信地耦合(例如,經由適當?shù)慕涌?,以允許在組件之間傳遞信息或者以便允許組件共享和訪問公用數(shù)據(jù)。此外,組件可以經由數(shù)據(jù)庫服務器(未示出)訪問一個或多個數(shù)據(jù)庫。
應當理解,圖3c中所示的模塊的每個模塊可以實現(xiàn)為單個模塊,組合成其他模塊,或進一步細分為多個模塊。例如,在示例性實施方式中,bw管理器模塊320可包括bw管理器321-329,qos管理器模塊330可包括qos管理器331-333,并且wm模塊340可包括wm342-343、wm345-346和wm348-349。還將理解,bw管理系統(tǒng)125的一個或多個模塊或功能可以在vtcp模塊109中實現(xiàn)。在其他實施方式中,bw管理系統(tǒng)125可以被配置為管理與一個或多個物理服務器或者服務器機器相關聯(lián)的帶寬。也可包括與示例性實施方式不相關的其他模塊,但是未示出。
對于各種實施方式,bw管理器模塊320包括bw邏輯模塊360,qos管理器模塊330包括qos邏輯模塊361,以及wm模塊340包括流邏輯模塊362。這些邏輯模塊本質上是事件驅動的。在示例性實施方式中,bw管理系統(tǒng)125的邏輯可包括以下模塊中的一個或多個:bw邏輯模塊360、qos邏輯模塊361和流邏輯模塊362。在一些實施方式中,圖3b中未示出的其他邏輯可包括在bw管理系統(tǒng)125中。
在bw管理系統(tǒng)125的配置期間,bw邏輯模塊360的一個功能是向hbt內的各個節(jié)點分配min值、max值或min值和max值。如果min和max值由用戶配置,那么這些值將分配給節(jié)點。如果未配置min和max值,則bw管理器模塊320向min值分配0,并分配從父節(jié)點繼承的max值。在圖3d所示的示例性實施方式中,與帶寬分配模塊3202組合的帶寬邏輯模塊3600可以用于向hbt中的各個節(jié)點分配min值和max值的帶寬限制。參考回至圖3c,存在bw邏輯模塊360實現(xiàn)幫助管理分配給hbt中的節(jié)點的帶寬的多個規(guī)則。
bw邏輯模塊360可以在bw管理系統(tǒng)125的配置期間實現(xiàn)各種其他規(guī)則,例如,第一規(guī)則可以描述為:子樹中的子節(jié)點的分配的min值的總和等于或小于子樹中的父節(jié)點的分配的min值;并且第二規(guī)則可以描述為:子樹中的子節(jié)點的分配的max值等于或小于子樹中的父節(jié)點的分配的max值。將參考圖3d更詳細地論述這些規(guī)則。
一旦已經配置了bw管理系統(tǒng)125,分配給節(jié)點的min值表示預留的帶寬,使得節(jié)點保證所預留的帶寬。在節(jié)點處不能保證超過min值的帶寬。在bw管理器模塊320積極地管理與業(yè)務類別相關聯(lián)的流的集合的帶寬的同時,bw管理器模塊320可以盡力提供額外的帶寬直到max值,但它不由bw管理器模塊320保證。例如,一個或多個節(jié)點可以請求相同的可用帶寬。如果可以將服務器內的可用帶寬重新分配給請求額外帶寬(即,高于其min值的帶寬)的節(jié)點,則可以改善(對于特定服務器的)業(yè)務流(或者與改善的業(yè)務流相關的性能)。在一些實施方式中,bw邏輯模塊360可以確定分配給節(jié)點的可用帶寬。
下面是在bw邏輯模塊360積極管理與一個或多個節(jié)點相關聯(lián)的流的集合的同時,由bw邏輯模塊360實現(xiàn)以向請求節(jié)點分配帶寬的規(guī)則的實例。該規(guī)則可稱為當前使用規(guī)則。在各種實施方式中,當前使用規(guī)則規(guī)定子樹中的子節(jié)點處的當前帶寬使用的總和不能超過子樹中的父節(jié)點的max值。在各種實施方式中,bw邏輯模塊360可以用于實現(xiàn)當前使用規(guī)則。
在其他實施方式中,bw邏輯模塊360可以用于確定與流的業(yè)務類別相關聯(lián)的節(jié)點(稱為父節(jié)點)處的可用帶寬。例如,父節(jié)點具有相關聯(lián)的bw管理器,該相關聯(lián)的bw管理器從請求節(jié)點(其為父節(jié)點的子節(jié)點)接收低于該父節(jié)點處所分配的min值的帶寬請求(也稱為聚集帶寬請求b)。與父節(jié)點相關聯(lián)的bw管理器知道它已經分配給其子節(jié)點多少min值,并且可以確定存在可用帶寬。另一方面,如果從請求節(jié)點到父節(jié)點的帶寬請求高于分配給父節(jié)點的min值,則與父節(jié)點相關聯(lián)的bw管理器向其父節(jié)點請求來自其父節(jié)點的可用帶寬。只要父節(jié)點已經超過其分配的min值,并且另一父節(jié)點可用于接收帶寬請求,則在hbt中的父節(jié)點上的請求繼續(xù)向上。
在各種實施方式中,qos邏輯模塊361的功能中的一個是限定閾值(根據(jù)分配帶寬(b)的分數(shù))。qos管理器模塊330在bw集合響應3302中從bw管理器模塊320接收分配帶寬b。在一些實施方式中,用戶可以提供可以由qos邏輯模塊361用來計算閾值的配置信息。配置信息可包括分配到各種應用優(yōu)先級別的百分比。在操作期間,qos邏輯模塊361基于閾值確定應該激活哪個模式(無壓或者欠壓模式)。閾值確定哪種操作模式可以用于分配流份額?;诓僮髂J?,在qos邏輯模塊361分配流份額期間,qos邏輯模塊361將不同的規(guī)則應用于bw集合響應3302中指定的帶寬分配b。qos邏輯模塊361的另一功能是基于應用優(yōu)先級別或分級來為優(yōu)先級應用份額和單獨流份額分配帶寬。圖7c至圖7d示出了由qos管理器模塊330分配的25個應用優(yōu)先級份額和流份額的實例。qos邏輯模塊361從bw管理器模塊320接收bw集合響應3302。如以上關于圖3b所述,bw集合響應3302在與bw管理器模塊320和qos管理器模塊330相關聯(lián)的流的集合的特定時間點,提供由bw管理器模塊320向qos管理器模塊330分配的帶寬量(也稱為分配帶寬(b))。由bw管理器模塊320分配的帶寬量是基于bw管理器模塊320從qos管理器模塊330接收的qos集合請求3301隨時間變化的計算量。
如上所述,qos邏輯模塊361基于(用于業(yè)務類別的)流的應用優(yōu)先級別確定應用優(yōu)先級份額和流份額的分配。在示例性實施方式中,bw集合響應3302將稱為分配帶寬(b)的量分配給qos管理器模塊330,并且qos邏輯模塊361通過分配應用優(yōu)先級百分比份額(到每個應用優(yōu)先級別)來劃分各種應用優(yōu)先級別中的分配帶寬(b)。分配給應用優(yōu)先級別中的每一個的分配帶寬(b)的部分(或分配給應用優(yōu)先級別的百分比份額)可以被稱為應用優(yōu)先級份額。在各種實施方式中,每個優(yōu)先級應用份額的百分比份額是當bw管理系統(tǒng)125接收新的數(shù)據(jù)包(與用于業(yè)務類別或者子類別的流的集合相關聯(lián))時可以修改的動態(tài)值。一旦已經分配了應用優(yōu)先級份額,則qos邏輯模塊361然后確定要分配給與應用優(yōu)先級份額相關聯(lián)的流份額中的每一個的帶寬量。如上所述,流份額的分配基于單獨流的操作模式,例如無壓模式或欠壓模式。不同的規(guī)則或者公式可以用于基于與單獨流相關聯(lián)的操作模式計算流份額。
與圖8a-圖8b和圖9a-圖b一起論述用于確定分配給每個流份額的帶寬量的各種因素。qos管理器模塊330以分配的流份額向一個或多個流提供qos流響應3402。流份額的分配的帶寬可稱為qos分配,如圖3b中所示。將參考圖3e和圖7a-圖7d、圖8a-圖8b、及圖9a-圖9b進一步討論用于qos管理器330的qos邏輯模塊361。
流邏輯模塊362的主要功能之一是確定bw管理系統(tǒng)125期望向tcp發(fā)送器通告的窗口大小。在各種實施方式中,流邏輯模塊362計算wm流請求3401和要為單獨流向發(fā)送主機通告的窗口大小wa。由wm流請求3401請求的單獨流的帶寬量由等式wmax/rtt2表示。一旦由流邏輯模塊362為單獨流計算wmax/rtt2,bw管理系統(tǒng)125計算單獨流的qos分配。流邏輯模塊362可以使用qos分配計算通告的窗口wa。圖10b-圖10f示出wm模塊340計算wm流請求3401(在圖3b中示出)使用的示圖。
bw管理器模塊320、qos管理器模塊330和wm模塊340彼此通信以主動地管理用于流集合的帶寬。流的集合可以表示一個或多個業(yè)務類別或業(yè)務的子類別(也稱為業(yè)務子類別)。圖3b中描述的實例可以示出模塊320、330和340之間的各種通信,以管理表示與hbt中的葉節(jié)點相關聯(lián)的流的集合的業(yè)務子類別。在示例性實施方式中,通信包括wm流請求3401、qos集合請求3301、bw集合響應3302和qos流響應3402。
在示例性實施方式中,與帶寬請求(針對單獨流和流的集合)相關的這些通信表示在特定時間點請求的帶寬或分配的帶寬。在一個實施方式中,帶寬請求隨著與業(yè)務子類別相關聯(lián)的流集合中的流的每一個改變而改變。在一些實施方式中,響應(基于請求)幾乎瞬間生成。一旦通信由模塊320、330和340接收,則它們各自的邏輯模塊360、361和362執(zhí)行處理請求并生成響應。在各種示例性實施方式中,與wm模塊340相關聯(lián)的流邏輯模塊362計算wm流請求3401。由qos邏輯模塊361和bw邏輯模塊360執(zhí)行的計算用于響應于wm流請求3401生成qos流響應3402。流邏輯模塊362接收qos流響應3402,其可以是等于、小于或大于wm流請求3401的值。表示從qos響應3402分配給單獨流的帶寬的qos分配由流邏輯模塊362用來計算通告給發(fā)送主機的窗口大小wa。
更具體地,如圖3b中描述的,wm流請求3401向qos管理器模塊330發(fā)送針對與業(yè)務子類別相關聯(lián)的單獨流的帶寬量wmax/rtt2的請求。與業(yè)務子類別相關聯(lián)的單獨流所請求的該帶寬可以由qos邏輯模塊361加速或減速,然后在發(fā)送到bw管理器模塊320的qos集合請求3301中聚集。qos集合請求3301表示用于業(yè)務子類別的流的集合的總帶寬請求。bw邏輯模塊360基于分配給bw管理系統(tǒng)125中的一個或多個節(jié)點的min和max值來計算bw集合響應3302。如上所述,如果超過或預期超過min值,與來自業(yè)務子類別的流的集合相關聯(lián)的bw管理器請求來自其父節(jié)點的許可。bw管理器評估來自qos集合請求3301的聚集帶寬請求(用于與業(yè)務子類別相關聯(lián)的流的集合),以確定相關bw管理器是否請求來自其父節(jié)點的許可。然后使用類似的標準來確定其父節(jié)點是否請求來自其父節(jié)點的許可等。在bw管理器模塊320主動管理與一個或多個節(jié)點相關聯(lián)的流的集合的帶寬的同時,各種bw管理器彼此通信以向請求節(jié)點分配帶寬。如上所述,一個規(guī)則可以是子樹中的子節(jié)點處的當前帶寬使用的總和不能超過子樹中的父節(jié)點的max值。在圖6c和圖6g中示出子樹的一些實例。
在示例性實施方式中,qos集合請求3301(其表示針對業(yè)務子類別的流的集合所請求的聚集帶寬)還可以表示子節(jié)點的當前帶寬使用的總和。單獨的或與其他bw管理器通信的bw管理器可以確定是否存在與一個或多個父節(jié)點相關聯(lián)的可用帶寬。bw邏輯模塊360然后基于請求節(jié)點的一個或多個父節(jié)點的可用帶寬來計算bw集合響應3302,請求節(jié)點是與業(yè)務子類別的流的集合相關聯(lián)的子節(jié)點。
bw集合響應3302由qos管理器模塊330接收并且表示稱作分配帶寬(b)的量。分配帶寬(b)表示由bw管理器模塊320分配給業(yè)務子類別的流的集合的帶寬。qos邏輯模塊361然后將分配帶寬(b)的份額分配給用于業(yè)務子類別中的流的集合的各種應用優(yōu)先級別。所分配的份額可以稱為應用優(yōu)先級份額的應用優(yōu)先級別的百分比份額。然后,qos邏輯模塊361將來自應用優(yōu)先級別的百分比份額(與應用優(yōu)先級別相關聯(lián))的份額分配給業(yè)務子類別中的流的集合中的單獨流。
在另外的實施方式中,qos管理器模塊330向wm模塊340發(fā)送qos流響應3402以用于業(yè)務子類別的流的集合內的單獨流。在qos流響應3402中向單獨流分配的帶寬的量稱為qos分配。在各種實施方式中,通告的窗口大小wa等于qos分配×rtt1。值rtt1表示發(fā)送主機和bw管理系統(tǒng)125之間的往返時間。
如上所述,bw集合響應3302是隨著wm流請求3401改變而隨時間改變的動態(tài)值。在示例性實施方式中,qos流響應3402也是隨時間改變的動態(tài)值。在各種實施方式中,qos流響應基于wm流請求3401中請求的帶寬wmax/rtt2,其可以由qos管理器模塊330或bw管理器模塊320,或者qos管理器模塊330和bw管理器模塊320修改。在一些實施方式中,qos分配可以等于、小于或者大于wm流請求3401中請求的帶寬wmax/rtt2。在各種實施方式中,bw管理系統(tǒng)125向tcp發(fā)送器通告期望的窗口大小wa,使得從tcp發(fā)送器和tcp接收器發(fā)送的tcp數(shù)據(jù)包以bw管理系統(tǒng)125期望的速率發(fā)送。bw管理系統(tǒng)期望的速率可以表示可能不丟棄tcp數(shù)據(jù)包的速率。將參考圖3f進一步論述用于wm的流邏輯模塊362。
流緩沖器354可包括接收側緩沖器(未示出)和傳輸側緩沖器(未示出)。在一些實施方式中,接收側緩沖器可以保存需要由vtcp模塊109加速或由bw管理系統(tǒng)125管理的每個tcp連接的所有數(shù)據(jù)包。接收側緩沖器沿著接收路徑(從網絡105至客戶os)保存數(shù)據(jù)包。在其他實施方式中,傳輸側緩沖器應用于從客戶os向網絡105發(fā)送的數(shù)據(jù)包??蛻鬿s可以是在圖1a中示出的客戶os115或者116。
流表355可以表示存儲tcp連接信息和每個連接的狀態(tài)的一個或多個表。在各種實施方式中,tcp連接的tcp連接信息和狀態(tài)可以由一個或多個tcp報頭字段中的數(shù)據(jù)來定義。在另一實施方式中,流表355可以存儲未包括在來自tcp報頭字段的數(shù)據(jù)中的附加tcp連接和狀態(tài)信息,諸如用于存儲在流緩沖器354中的tcp數(shù)據(jù)包的副本的位置信息。在各種實施方式中,vtcp模塊109接收并存儲tcp數(shù)據(jù)包數(shù)據(jù)的副本(在緩沖器354和/或流表355中),并且在不改變將由tcp接收器接收的實際tcp數(shù)據(jù)包數(shù)據(jù)的情況下還允許改變存儲在流表355中的tcp報頭信息的副本。
在各種實施方式中,vtcp模塊109可以略過tcp發(fā)送器的tcp堆棧配置信息,例如窗口大小,而tcp數(shù)據(jù)包在vtcp模塊109和tcp接收器之間傳輸??梢酝ㄟ^修改、添加或刪除在vtcp模塊109和tcp發(fā)送器之間的數(shù)據(jù)路徑的一部分之間傳輸?shù)臄?shù)據(jù)包的tcp報頭值來覆蓋一個或多個tcp報頭值。在一些實施方式中,可以基于每個流或每個vm針對tcp數(shù)據(jù)包而覆蓋一個或多個報頭值。該tcp報頭信息(包括窗口大小)可以存儲在流表355中。
配置接口模塊356被配置為向用戶提供接口以配置由bw管理系統(tǒng)125使用的各種可配置參數(shù)。配置接口模塊356從用戶接收配置參數(shù)或者設置??膳渲玫膖cp參數(shù)或設置可以由用戶在每個虛擬機、每個流或每個應用的基礎上配置,其中,流可以是來自數(shù)據(jù)包的字段的任何組合(包括通配符),包括源ip地址、目的地ip地址、端口及其他協(xié)議字段。此外,這些調節(jié)符(knob)的配置值可以在tcp連接的生命周期,例如在連接開始期間,或者對于第一兆字節(jié)(mb)的數(shù)據(jù)傳送,或連接的生命周期內的任何這種任意周期內改變一次或多次。
配置接口模塊356接收配置參數(shù),然后存儲這些參數(shù)或使它們可被bw管理系統(tǒng)125內的相關邏輯訪問以用于進一步處理。
可配置參數(shù)的一個實例包括用于hbt中的節(jié)點中的每一個的min值和max值。在各種實施方式中,min值和max值是由bw邏輯模塊360使用以向各種節(jié)點分配min值和max值的配置參數(shù)。
可配置參數(shù)的另一實例包括將優(yōu)先級別分配給在服務器機器上運行的應用。應用優(yōu)先級別參數(shù)由qos管理器模塊330用于基于流的應用優(yōu)先級別來在與葉節(jié)點相關聯(lián)的各種流之間分配帶寬份額。例如,來自http應用的流可以優(yōu)先高于來自ftp應用的流。結果,與http應用相關聯(lián)的流比與ftp應用相關聯(lián)的流獲得葉節(jié)點的帶寬更大的份額。由qos管理器模塊330使用的一些其他可配置參數(shù)包括縮放因子(a),其指示如果存在一些備用容量,則加速或減速屬于給定優(yōu)先級別的流的速度有多快。qos管理器模塊330還可以配置有分配給應用優(yōu)先級份額的帶寬的百分比。該分配的帶寬規(guī)定應當分配給給定應用優(yōu)先級別的流的總帶寬的份額。
在各種實施方式中,配置接口模塊356可包括用于存儲配置參數(shù)的表。在可替換的實施方式中,配置參數(shù)可以存儲在流表355中。
圖10a-圖10f提供兩個主機之間的流的實例。在各種實施中,vtcp模塊109或者bw管理系統(tǒng)125代表接收主機接受來自發(fā)送主機的數(shù)據(jù)包。如圖2a-2e中所示,并且參考圖3c,bw管理系統(tǒng)125(或125a-125c)駐留在沿著主機之間的數(shù)據(jù)路徑的各種位置。當數(shù)據(jù)包從發(fā)送主機發(fā)送到接收主機時,數(shù)據(jù)包被bw管理系統(tǒng)125接受,并且在bw管理系統(tǒng)125將數(shù)據(jù)包發(fā)送到接收主機之前至少臨時地存儲在流緩沖器354中。流表355被配置為將與數(shù)據(jù)包相關的數(shù)據(jù)包信息和其他配置信息存儲在流緩沖器354中。配置接口模塊356被配置為接收來自用戶的配置信息和設置。
在各種實施方式中,圖3c的帶寬使用跟蹤模塊357被配置為跟蹤流的集合的帶寬使用。帶寬使用跟蹤模塊357可包括業(yè)務類別帶寬使用跟蹤模塊3203(在圖3d中示出)或狀態(tài)跟蹤模塊3303的至少一部分(在圖3e中示出)或流使用跟蹤模塊3406(如圖3f中示出)。帶寬使用跟蹤模塊357跟蹤服務器的流的集合的帶寬使用。這些跟蹤值可以表示估計值或實際值。
還可以在各個等級跟蹤帶寬使用,例如基于應用優(yōu)先級的每個流、每個流的集合,基于業(yè)務子類別的每個流的集合,或基于業(yè)務類別的每個流的集合的跟蹤。在示例性實施方式中,流使用跟蹤模塊3406駐留在wm342(如圖3f中所示)內并跟蹤單獨流的當前使用。在各種實施方式中,當前帶寬使用由wmax/rtt2表示。wmax/rtt2的帶寬請求量可以表示特定時間點的帶寬使用值。當前帶寬使用可以參考估計的或者實際的帶寬值。在示例性實施方式中,當前帶寬使用隨著從發(fā)送主機發(fā)送數(shù)據(jù)包的速率改變而隨時間改變。在其他實施方式中,狀態(tài)跟蹤模塊3303駐留在qos管理器331(圖3e中所示)內,并且通過應用優(yōu)先級別跟蹤流的集合的當前使用。在一些實施方式中,狀態(tài)跟蹤模塊3303跟蹤qos邏輯模塊361縮放單獨流之前和之后的當前使用,然后聚集應用優(yōu)先級別的縮放值,然后將應用優(yōu)先級別合計到qos集合請求3301中。縮放值可以表示通過縮放因子縮放wm流請求3401或基于等份額或比例份額的分配類型進行調整。
在各種實施方式中,在節(jié)點級別,bw管理器模塊320跟蹤hbt內的各個等級處與服務器相關聯(lián)的流的集合的當前使用。hbt內的節(jié)點中的每一個表示業(yè)務類別或者子類別的流的集合。bw管理器模塊320使用該帶寬使用跟蹤信息來確定是否向請求帶寬的節(jié)點重新分配帶寬。
在各種實施方式中,帶寬使用跟蹤模塊357包括或可訪問用于跟蹤當前帶寬使用的跟蹤表。
在各種實施方式中,bw管理器模塊320被配置為通過向業(yè)務類別分配帶寬限制,管理與虛擬資源相關聯(lián)的業(yè)務類別的、與服務器相關聯(lián)的流的集合的帶寬。業(yè)務類別布置在hbt中,其中,流的集合表示最高級別的全面業(yè)務類別。hbt中的根節(jié)點表示全面業(yè)務類別。與全面業(yè)務類別相關聯(lián)的流的集合被細分為表示也稱為葉業(yè)務子類別的業(yè)務類別的較小集合。葉業(yè)務子類別表示hbt的最低級別的業(yè)務類別。葉業(yè)務子類別中的每一個由至少一個業(yè)務類別參數(shù)過濾。業(yè)務類別中的流表示兩個主機之間的端到端的連接。
在一些實施方式中,qos管理器模塊330被配置為基于所分配的帶寬限制為業(yè)務類別分配葉業(yè)務子類別的應用優(yōu)先級份額和應用優(yōu)先級份額的流份額。應用優(yōu)先級份額表示基于應用優(yōu)先級別分配給流的優(yōu)先級組的帶寬份額。流份額表示基于所選擇的操作模式分配給流的優(yōu)先級組中的單獨流的帶寬份額。圖7c-圖7d提供分配的優(yōu)先級份額和分配的流份額的實例。
在示例性實施方式中,wm342(在圖3a中示出并且在圖3f中進一步示出)被配置為通過調整通告給第一主機的窗口大小來管理針對單獨流的帶寬。通告的窗口大小控制第一主機向第二主機傳輸數(shù)據(jù)包的速率。通告的窗口大小基于來自qos管理器模塊330的分配的流份額。
圖3d示出根據(jù)示例性實施方式的帶寬管理器的框圖。在圖3d中示出的bw管理器327與hbt中的節(jié)點相關聯(lián)。bw管理器327包括帶寬分配模塊3202、業(yè)務類別帶寬使用跟蹤模塊3203、bw邏輯模塊3600、及批準跟蹤模塊3206。bw邏輯模塊3600包括以下模塊的一個或多個:規(guī)則管理模塊3204、帶寬請求批準模塊3205、及批準跟蹤模塊3206。在各種實施方式中,bw邏輯模塊3600提供功能以管理與由葉節(jié)點(也稱為業(yè)務子類別)表示的業(yè)務類別相關聯(lián)的流的帶寬。盡管bw管理器327表示葉節(jié)點,但是其它節(jié)點和根節(jié)點的bw管理器還可包括圖3d中所示的一個或多個模塊或組件。
在示例性實施方式中,節(jié)點創(chuàng)建模塊(未示出)被配置為創(chuàng)建多個節(jié)點。hbt中的節(jié)點的每一個表示hbt中的業(yè)務類別中的一個。hbt包括具有來自多個節(jié)點的父節(jié)點的至少一個子樹以及來自多個節(jié)點的至少一個子節(jié)點。在另一實施方式中,節(jié)點創(chuàng)建模塊3201被配置為創(chuàng)建與多個節(jié)點中的每一個相關聯(lián)的bw管理器。
在各種實施方式中,bw邏輯模塊3600被配置為基于min值和max值應用各種規(guī)則,以控制與節(jié)點處的業(yè)務類別相關聯(lián)的流的集合的帶寬。
在一些實施方式中,帶寬分配模塊3202被配置為在hbt的配置期間將min值分配給hbt中的節(jié)點。min值表示分配給與節(jié)點處的業(yè)務類別相關聯(lián)的流的集合的帶寬預留。在其他實施方式中,帶寬分配模塊3202被配置為向節(jié)點分配max值,max值表示可用于與節(jié)點處的業(yè)務類別相關聯(lián)的流的集合的最大容量。帶寬分配模塊3202對min值和max值的分配可以用于實現(xiàn)分配的聚集總和min值規(guī)則和配置的max值規(guī)則。
在另一實施方式中,子類別帶寬使用跟蹤模塊3203被配置為將與節(jié)點處的業(yè)務類別相關聯(lián)的流的集合的當前使用與分配給節(jié)點的min值進行比較。業(yè)務類別帶寬使用跟蹤模塊3203還被配置為識別何時期望與節(jié)點處的業(yè)務類別相關聯(lián)的流的集合的當前使用超過分配給節(jié)點的min值。業(yè)務類別帶寬使用跟蹤模塊3203可以用于實現(xiàn)當前使用規(guī)則。在各種實施方式中,業(yè)務類別帶寬使用跟蹤模塊3203和帶寬分配模塊3202結合規(guī)則管理模塊3204可以用于實現(xiàn)上述第一、第二和第三規(guī)則。
在示例性實施方式中,bw邏輯模塊3600包括規(guī)則管理模塊3204,其被配置為由與第一子樹中的父節(jié)點相關聯(lián)的bw管理器從與第一子樹中的子節(jié)點相關聯(lián)的bw管理器接收第一帶寬請求。規(guī)則管理模塊3204還被配置為由與第一子樹中的父節(jié)點相關聯(lián)的bw管理器確定來自第一子樹中的子節(jié)點的第一帶寬請求是否不將第一子樹中所有子節(jié)點的min值的聚集總和增加為高于第一子樹中父節(jié)點的min值。bw邏輯模塊3600還可包括帶寬請求批準模塊3205,其被配置為通過與第一子樹中的父節(jié)點相關聯(lián)的bw管理器批準用于來自第一子樹中的子節(jié)點的第一帶寬請求的帶寬值。帶寬請求批準模塊3205還可以被配置為將批準的帶寬值通信到與第一子樹中的子節(jié)點相關聯(lián)的bw管理器。bw邏輯模塊3600還可包括批準跟蹤模塊3206,其被配置為利用批準的帶寬值更新第一子樹中的父節(jié)點的分配的帶寬。
在另一示例性實施方式中,bw邏輯模塊3600包括規(guī)則管理模塊3204,其被配置為由與第一子樹中的父節(jié)點相關聯(lián)的bw管理器接收來自與第一子樹中的子節(jié)點相關聯(lián)的bw管理器的第一帶寬請求(例如,qos集合請求3301)。規(guī)則管理模塊3204還可配置為由與第一子樹中的父節(jié)點相關聯(lián)的bw管理器確定來自第一子樹中的子節(jié)點的第一帶寬請求是否增加第一子樹中所有子節(jié)點的min值的聚集總和而高于第一子樹中父節(jié)點的min值。bw邏輯模塊3600可包括帶寬請求批準模塊3205,該帶寬請求批準模塊被配置為發(fā)送第二帶寬請求至第一子樹中的父節(jié)點的父節(jié)點。第一子樹中的父節(jié)點的父節(jié)點表示第二子樹中的子節(jié)點。帶寬請求批準模塊3205還可配置為由與第二子樹中的父節(jié)點相關聯(lián)的bw管理器確定來自第二子樹的子節(jié)點的第二帶寬請求是否不增加第二子樹中所有子節(jié)點的min值的聚集總和而高于第二子樹中的父節(jié)點的min值。帶寬請求批準模塊3205還可配置為通過與第二子樹中的父節(jié)點相關聯(lián)的bw管理器批準用于來自第二子樹中的子節(jié)點的第二帶寬請求的帶寬值。帶寬請求批準模塊3205還可以被配置為將批準的帶寬值通信到與第二子樹中的子節(jié)點和第一子樹中的子節(jié)點相關聯(lián)的bw管理器。bw邏輯模塊3600還可包括批準跟蹤模塊3206,該批準跟蹤模塊被配置為利用第一子樹中的父節(jié)點的批準的帶寬值更新第二子樹中的父節(jié)點的所分配的帶寬。
圖3e示出根據(jù)示例性實施方式的qos管理器331的框圖。qos管理器331包括狀態(tài)跟蹤模塊3303、接口模塊3304、及qos邏輯模塊3610。在示例性實施方式中,qos邏輯模塊3610包括流份額邏輯模塊3305和優(yōu)先級份額邏輯模塊3309。
狀態(tài)跟蹤模塊3303被配置為跟蹤應用優(yōu)先級別(例如,p1、p2、及p3)的狀態(tài)。對于示例性實施方式,狀態(tài)跟蹤模塊3303跟蹤每個應用優(yōu)先級別(例如,高優(yōu)先級應用、中優(yōu)先級應用和低優(yōu)先級應用)的狀態(tài)。在各種實施方式中,狀態(tài)跟蹤模塊3303跟蹤total_request_sizerpx、比例因子(a)和針對應用優(yōu)先級別b的百分比(%)份額(向與業(yè)務類別相關聯(lián)的流的集合分配的帶寬)。對于各種實施方式,這三個參數(shù)稱作狀態(tài)跟蹤信息或者參數(shù)。在一些實施方式中,應用優(yōu)先級別各自與優(yōu)先級等級相關聯(lián),例如,p1表示高優(yōu)先級應用,p2表示中優(yōu)先級應用或p3表示低優(yōu)先級應用。圖7a示出了狀態(tài)跟蹤模塊715,該狀態(tài)跟蹤模塊可以在示例性實施方式中使用狀態(tài)跟蹤模塊3303來實現(xiàn)。
將在下面結合圖7a-圖7d、圖8a-圖8b(無壓模式)和圖9a-圖9b(欠壓模式)的描述更詳細論述狀態(tài)跟蹤模塊3303。進一步結合圖8a-圖8b和圖9a-圖9b的描述來描述接口模塊3304。將在下面結合圖8a-圖8b(無壓模式)和圖9a-圖9b(欠壓模式)更詳細論述與狀態(tài)跟蹤模塊3303結合的qos邏輯模塊3610。圖7c示出了hbt703的一部分,其包括用于在應用優(yōu)先級別之間分配帶寬的優(yōu)先級份額邏輯模塊3309。圖7d示出hbt704的一部分,其包括用于在應用優(yōu)先級別中的流份額當中分配帶寬的流份額邏輯模塊3305。流份額基于操作模式(諸如無壓模式或者欠壓模式)分配。當分配流份額時,不同的規(guī)則可以應用于各種實施方式中的不同的模式。
再次參考圖3e,接口模塊3304被配置以為qos管理器模塊330提供接口以用于與bw管理器模塊320和wm模塊340通信。參考圖3b,例如,接口模塊3304可以從wm模塊340接收wm流請求3401,并且向wm模塊340發(fā)送qos流響應3402(響應于接收wm流請求3401)。在另一實例中,接口模塊3304可以接收bw集合響應3302并且發(fā)送qos流響應3402(響應于接收到bw集合響應3302)。在一個實例中,流份額邏輯模塊3305包括模式選擇模塊3306、無壓模式模塊3307、及欠壓模式模塊3308中至少一個。模式選擇模塊3306確定是應用第一操作模式(例如,無壓模式)還是第二操作模式(例如,欠壓模式)。在一個實施方式中,如果total_request_size(r)小于或者等于閾值選擇無壓模式,并且如果total_request_size(r)大于閾值選擇欠壓模式。如果模式選擇模塊3306確定應用無壓模式,那么無壓模式模塊3307應用第一組模式操作規(guī)則。如果模式選擇模塊3306確定應用欠壓模式,那么欠壓模式模塊3308應用第二組模式操作規(guī)則。以下分別結合圖8a-圖8b和圖9a-圖9b更詳細地描述無壓模式和欠壓模式。
對于各種實施方式,優(yōu)先級份額邏輯模塊3309確定用于應用優(yōu)先級份額的所分配的帶寬,并且流份額邏輯模塊3305確定用于流份額的所分配的帶寬。圖7d示出了應用優(yōu)先級份額的分配的帶寬和用于應用優(yōu)先級份額中的一個的流份額的分配的帶寬的實例。
圖3f示出根據(jù)示例性實施方式的wm342的框圖。wm342包括接口模塊3406和流邏輯模塊3620。接口模塊3406為wm342提供用于在wm342和與其相關聯(lián)的qos管理器(例如,qos管理器331)之間提供和接收通信的功能。接口模塊3406可包括流請求模塊3403和流響應分配模塊3404。在示例性實施方式中,流請求模塊3403提供wm流請求(例如,圖3b中所示的wm流請求3401),并且流響應分配模塊3404提供qos流響應(例如,圖3b中示出的qos流響應3402),并且流響應分配模塊3404提供qos流響應(例如,圖3b所示的qos流響應3402)。在示例性實施方式中,通常為發(fā)送到qos管理器模塊330的每個wm流請求提供qos流響應。在各種實施方式中,接口模塊3406基于每個流提供通信。
流邏輯模塊3620包括窗口大小生成模塊3405。在各種實施方式中,wm模塊340包括多個wm(例如,wm342)。wm中的每一個可包括窗口大小生成模塊3405,該窗口大小生成模塊配置為生成由bw管理系統(tǒng)125發(fā)送主機(例如,tcp發(fā)送器)通告的用于單獨流的窗口大小wa。在各種實施方式中,流邏輯模塊362計算wm流請求3401和針對單獨流向發(fā)送主機通告的窗口大小wa。由wm流請求3401請求的單獨流的帶寬量由等式wmax/rtt2表示。一旦由流邏輯模塊362針對單獨流計算wmax/rtt2,bw管理系統(tǒng)125計算單獨流的qos分配。流邏輯模塊362可以使用qos分配計算通告的窗口wa。與圖10a-圖10f一起更詳細地描述包括窗口大小生成模塊3405的流邏輯模塊3620。
在示例性實施方式中,wm模塊340包括多個wm342。每個wm342包括窗口大小生成模塊3405,該窗口大小生成模塊被配置為:基于tcp接收器正在接收針對單獨流的數(shù)據(jù)包的估計速率以及第一主機和用于單獨流的系統(tǒng)之間的往返時間,生成bw管理系統(tǒng)125向tcp發(fā)送器通告的單獨流的窗口大小。
在另一實施方式中,每個wm342包括接口模塊3406,其被配置為:基于向tcp發(fā)送器通告的窗口大小發(fā)送用于估計的當前流使用的wm流請求;以及接收對wm流請求的qos流響應,其指示所分配的流份額。
hbt可以用于可視地解釋bw管理系統(tǒng)125基于業(yè)務類別為與服務器相關聯(lián)的流提供qos的方式。在圖6a中示出hbt600的實例。在示例性實施方式中,每個hbt(例如,hbt600)對應于運行虛擬化軟件以創(chuàng)建vm的多個實例的物理服務器(例如圖1a所示的服務器106)。在可替換的實施方式中,例如docker環(huán)境,虛擬化軟件可以不用于創(chuàng)建多個vm實例。
hbt中的節(jié)點(除根節(jié)點之外)表示示例性實施方式中與虛擬化資源相關聯(lián)的業(yè)務類別。在其他實施方式中,業(yè)務類別可以表示未虛擬化的資源。例如,虛擬資源可以是vm,具有一個或多個vm的租戶或vm池。圖4a示出了具有兩個租戶410和420的服務器401,其中每個租戶410、420各自具有兩個vm。如根節(jié)點所表示的,hbt中的最高級別表示服務器401的流的全面業(yè)務類別,如圖4a所示。與服務器401相關聯(lián)的虛擬資源被細分為兩個租戶410和420。在該實例中,租戶410、420中的每一個分配5gpbs的帶寬。租戶410、420可以表示具有分配有一個或多個vm的實體或組織。例如,從分配給租戶410的總共5gbps中,vm411分配3gbps并且vm412分配2gbps。另外,從分配給租戶420的總共5gbps中,vm413分配3gbps并且vm414分配2gbps。每個vm由圖4a中的葉節(jié)點表示??赡懿皇欠掌鞯乃刑摂M資源都可以分配資源。這些資源可用于未來的租戶。應當理解,與服務器相關聯(lián)的vm和租戶的數(shù)量可以改變。
參考圖4a和圖6a,在一個實例中,服務器401對應于根節(jié)點601。租戶410對應于節(jié)點610,并且租戶420對應于節(jié)點620。vm411、vm412、vm413、及vm401各自分別對應于節(jié)點611、612、621、及622。節(jié)點611、612、621、及622各自是葉節(jié)點。葉節(jié)點表示hbt中最低級別的節(jié)點。根節(jié)點601下方的每個節(jié)點對應于一個或多個虛擬化資源。
對應于服務器的根節(jié)點601與表示與物理服務器相關聯(lián)的所有流的全面業(yè)務類別相關聯(lián)。hbt中的葉節(jié)點和其他節(jié)點各自與業(yè)務類別相關聯(lián)。每個業(yè)務類別由一個或多個標準或參數(shù)(通常由用戶配置)過濾。物理服務器可以在用于多個流的端到端連接中與主機中的一個相關聯(lián)。例如,主機可以表示vm、docker或其他類似的對象。vm411、412、413或414中的任一個內的客戶操作系統(tǒng)可以表示tcp發(fā)送器、tcp接收器或兩者。在各種實施方式中,tcp接收器可以稱為接收主機,并且tcp發(fā)送器可以稱為發(fā)送主機。流可包括活動和非活動會話。bw管理系統(tǒng)125可以在兩個主機之間創(chuàng)建的會話的整個有效期內管理流的帶寬。流中的每一個與在服務器401上運行的應用相關聯(lián)。參考圖4b,服務器401可以具有安裝其上的多個應用。例如,服務器401可以關于與應用421、422、423中的每一個相關聯(lián)的多個流運行http應用421、ssh應用422和ftp應用423。
hbt內的每個節(jié)點表示業(yè)務類別。除根節(jié)點之外,不同分層級別的節(jié)點可以以不同的業(yè)務類別進行過濾。圖6f示出了通過與分層級別0上的ip地址(例如,服務器)相關聯(lián)的業(yè)務類別、與分層級別i相關聯(lián)的端口以及然后分層級別2的協(xié)議過濾的hbt660的實例。用于過濾業(yè)務類別的參數(shù)的其他實例以業(yè)務類別表525在圖5b中示出。
hbt中的最低節(jié)點稱作葉節(jié)點。參考圖6a,葉節(jié)點由節(jié)點611、612、621及622表示。bw管理系統(tǒng)125內的bw管理器模塊320包括多個bw管理器,如圖3a所示。bw管理器模塊320可以用于管理一個或多個樹的帶寬,其中每個樹具有一個根節(jié)點。例如,圖6b示出了對應于單個hbt600的bw管理器模塊607。bw管理器模塊607包括多個bw管理器,其中bw管理器602、615、616、617、625、626和627中的每一個對應于hbt600中的節(jié)點。在其他實施方式中,bw管理器模塊320可以用于管理與多個服務器相關聯(lián)的流。
如上所述,hbt中的每個節(jié)點可以具有對應的bw管理器。參考回圖3a,bw管理器321、322、及323表示用于根節(jié)點的bw管理器。bw管理器324、325和326表示用于其他節(jié)點(即,除了根節(jié)點和葉節(jié)點之外的所有節(jié)點)的bw管理器。bw管理器327、328和329表示葉節(jié)點的bw管理器。對于可替換實施方式,bw管理器根節(jié)點、bw管理器其他節(jié)點、及bw管理器葉節(jié)點的數(shù)目可以改變。與節(jié)點相對應的bw管理器負責管理該節(jié)點處的帶寬,其包括管理分配給該節(jié)點的所有虛擬資源的帶寬。
如上所述,在各種實施方式中,bw管理系統(tǒng)125創(chuàng)建與分層樹中的每個節(jié)點相關聯(lián)的bw管理器。bw管理器模塊320可包括用于創(chuàng)建與用于一個或多個樹的子類別相關聯(lián)的節(jié)點的節(jié)點創(chuàng)建模塊(未示出)。在一些實施方式中,每個業(yè)務類別具有為其創(chuàng)建的對應節(jié)點。如果業(yè)務類別已配置有最小帶寬預留(min),則bw管理器確??捎糜谠擃悇e中的所有流的聚集帶寬大于或等于預留的帶寬。類似地,如果業(yè)務類別配置有最大允許帶寬或帶寬上限(max),則bw管理器有責任確保流(在此業(yè)務類別中)的聚集帶寬不超過帶寬上限。min值和max值稱作分配到節(jié)點的帶寬限制。節(jié)點處的帶寬的當前使用由帶寬管理器模塊320管理以確認所分配的帶寬限制。
分層樹內的節(jié)點可以具有用戶配置的最小值(min)和/或最大值(max)。在示例性實施方式中,在bw管理系統(tǒng)125配置一個或多個hbt時,分配min值和max值,而不是當bw管理系統(tǒng)125主動管理與一個或多個hbt相關聯(lián)的一個或多個業(yè)務類別或子類別(也稱作業(yè)務子類別)的帶寬時。對于各種實施方式,在整個說明書中,業(yè)務類別和業(yè)務子類別可以可互換地使用,除了業(yè)務類別與根節(jié)點相關聯(lián)(其稱作全面業(yè)務類別而不是業(yè)務子類別)之外。
min是指針對特定節(jié)點的預留或保證的帶寬量。max指用于特定節(jié)點的上限。如果配置了節(jié)點的min值和max值,則將這些值分配給該節(jié)點。如果沒有為節(jié)點配置min值,則在示例性實施方式中對應的bw管理器分配值“0”。如果沒有為節(jié)點配置max值,則在示例性實施方式中對應的bw管理器分配從該節(jié)點的父繼承的值。在一些實施方式中,min值總是小于或等于max值,使得不允許配置min值>max值。在一些實施方式中,與每個節(jié)點或節(jié)點創(chuàng)建模塊(未示出)相關聯(lián)的帶寬管理器負責如上所論述的分配min值和max值。此外,與父節(jié)點相關聯(lián)的帶寬管理器可以在其子節(jié)點(如果被請求)之間重新分配帶寬,并且假定滿足某些標準。標準可以由一個或多個規(guī)則限定。
在各種實施方式中,bw管理系統(tǒng)125為分層樹中的每個節(jié)點創(chuàng)建bw管理器。bw管理器模塊320可包括用于創(chuàng)建與用于一個或多個樹的子類別相關聯(lián)的節(jié)點的節(jié)點創(chuàng)建模塊(未示出)。在一些實施方式中,每個業(yè)務類別具有為其創(chuàng)建的對應節(jié)點。如果業(yè)務類別已配置有最小帶寬預留(min),則bw管理器確保可用于該類別中的所有流的聚集帶寬大于或等于預留的帶寬。類似地,如果業(yè)務類別配置有最大允許帶寬或帶寬上限(max),則bw管理器有責任確保流(在此業(yè)務類別中)的聚集帶寬不超過帶寬上限。
在下面的實例中,假設min值等于b(min=b),并且max值等于a(max=a)。最小預留(min值)和最大值(max值)可以獨立配置,并且對于每個業(yè)務類別可以不同。最小預留的配置意味著業(yè)務類別將始終保證帶寬b。在一些實施方式中,沒有其它業(yè)務類別將獲得該帶寬的任何份額。然而,如果剩余帶寬可用,則這種業(yè)務類別總是可以有機會獲得比b更多的帶寬。最大帶寬的配置將此業(yè)務類別可以使用的最大帶寬限制為a。bw管理器不保證高于b的任何帶寬??赡苡捎诰W絡帶寬的爭用,業(yè)務類別可能不接收帶寬b以上的帶寬a。
在一些實施方式中,給定節(jié)點的min值可以表示其他節(jié)點不能使用的用于節(jié)點的預留帶寬,即使給定節(jié)點沒有完全利用預留的帶寬。在其他實施方式中,為給定節(jié)點預留的帶寬對于該節(jié)點在任何時候想要使用時是可用的,但是當給定節(jié)點沒有完全利用其預留的帶寬時,可以與其他節(jié)點共享。在一些實施方式中,當預留的帶寬被共享,然后被返回時,返回中可能存在延遲。
如上所述,可以為與服務器相對應的全面業(yè)務類別創(chuàng)建bw管理器模塊320。根節(jié)點與服務器的全面業(yè)務類別相關聯(lián)。hbt600內的所有其他節(jié)點可以與通過一個或多個標準或參數(shù)過濾的業(yè)務類別相關聯(lián)。在一些實施方式中,根節(jié)點具有表示其相應服務器的最大鏈路容量的max值。在根節(jié)點中,min值還被配置為等于最大鏈路容量。如圖6c所示,每個hbt600可以細分為多個子樹。每個子樹包括父節(jié)點和一個或多個子節(jié)點。hbt600包括三個子樹。子樹603包括根節(jié)點601和兩個子節(jié)點610和620。子樹604包括父節(jié)點610(其為子樹603中的子節(jié)點)和兩個子節(jié)點611和612。子樹605包括父節(jié)點620(其為子樹603中的子節(jié)點)和兩個子節(jié)點621和622。
bw管理器模塊320可以使用多個規(guī)則來管理hbt600及其相關聯(lián)的子樹603、604、605的各個節(jié)點處的帶寬。一些規(guī)則可以稱為配置規(guī)則,并且其他規(guī)則可以在bw管理器模塊320的操作期間使用,同時bw管理器模塊320主動地管理來自與一個或多個業(yè)務類別或子類別相關聯(lián)的流的集合的帶寬。圖3d的bw管理器327中所示的一個或多個模塊可以用于配置和實現(xiàn)bw管理器327使用的操作規(guī)則。例如,帶寬分配模塊3202可以用于配置min值和max值。業(yè)務類別帶寬使用跟蹤模塊3203結合規(guī)則管理模塊3204可以用于在bw管理系統(tǒng)125主動管理流時實現(xiàn)規(guī)則。
在一些實施方式中,在配置模式(圖3d所示)期間,帶寬分配模塊3202可以提供用于配置分配的min值的聚集總和規(guī)則(也稱為配置規(guī)則1)和配置的max值規(guī)則(也稱為配置規(guī)則2)的功能。當bw管理系統(tǒng)125主動管理與用于業(yè)務類別(或子類別)的流的集合相關聯(lián)的帶寬時,規(guī)則管理模塊3204可以負責結合業(yè)務類別帶寬使用跟蹤模塊3203實現(xiàn)的一個規(guī)則稱為當前使用規(guī)則。
配置規(guī)則1指定子樹中的子節(jié)點的分配的min值的聚集總和應該小于或等于子樹中的父節(jié)點的分配的min值。
配置規(guī)則2指定給定的子樹中的每個節(jié)點處配置的max值應該小于或等于給定的子樹中的父節(jié)點處配置的max值。在一些實施方式中,可能的是,給定的子樹中的子節(jié)點的分配的max值的聚集總和大于給定的子樹中的父節(jié)點的max值。
配置規(guī)則(稱作配置規(guī)則3)的另一實例是對于節(jié)點,min值小于或者等于max值。帶寬分配模塊3202可以用于實現(xiàn)該規(guī)則。
在主動帶寬管理期間,規(guī)則管理模塊3204實施當前使用規(guī)則,當前使用規(guī)則指定子樹中所有子節(jié)點的當前帶寬使用應小于或等于子樹中的父節(jié)點的max值。
在主動帶寬管理期間實現(xiàn)的規(guī)則的另一實例是子節(jié)點不能超過其預留的帶寬或min值,而沒有來自子樹中的其父節(jié)點的許可。在一些情況下,子樹中的父節(jié)點還可以表示另一樹中的子節(jié)點不能超過其預留的帶寬或min值,而沒有來自另一子樹中的其父節(jié)點的許可。
在主動帶寬管理期間,bw管理器327在與和用于hbt的業(yè)務類別(或子類別)相關聯(lián)的其他bw管理器通信時,負責在由bw管理器模塊320實現(xiàn)的各種規(guī)則的約束內操作的同時確定可用帶寬和在bw集合響應3302中為每個qos集合請求3301分配多少。在bw集合響應3302中分配的量可以稱為分配帶寬(b)。圖6g提供了確定子樹中的父節(jié)點處的可用帶寬的示例。
圖6g示出了bw管理系統(tǒng)125可以被配置為提供最小保證預留。如上所述,如果節(jié)點未被配置為具有min值,則將min值0分配給該節(jié)點。圖6g示出了具有父節(jié)點671和兩個子節(jié)點673和674的子樹670。假設父節(jié)點671的總帶寬容量為b。對于示例性實施方式,值b可以表示在圖3b中所示的bw集合響應3302中指示的分配帶寬b。子節(jié)點673分配min值b1并且子節(jié)點674分配min值b2。父節(jié)點671的可用帶寬是b-(b1+b2)。當(與節(jié)點相關聯(lián)的)給定業(yè)務類別完全利用其預留帶寬(即,min值)時,其相關聯(lián)的bw管理器可向其父節(jié)點671請求帶寬。如果存在可用帶寬,則與父節(jié)點671相關聯(lián)的bw管理器將準許該請求,并且該請求將不會超過父節(jié)點671的最大帶寬(即,max值)。對于各種實施方式,如果父節(jié)點671是子樹的父節(jié)點(而不是樹的根節(jié)點),則父節(jié)點671向其父節(jié)點(未示出)請求對所請求的高于父節(jié)點671的min值的任何量的許可。由父節(jié)點671授予或分配的量可以基于標準份額算法(例如,成比例的份額、加權份額等)以在請求來自父節(jié)點的額外帶寬的一個或多個子節(jié)點之間分配可用帶寬。父節(jié)點671例如通過業(yè)務類別帶寬使用跟蹤模塊3203跟蹤其分配給其各個子節(jié)點673和674的帶寬量。如果父節(jié)點671先前已向其子節(jié)點673和674中的任一個分配了帶寬,則可以修改可用帶寬的公式。
bw管理系統(tǒng)125負責跟蹤每個節(jié)點或(每個業(yè)務類別)的總帶寬使用,以確保它不超過最大量。
圖6a示出hbt600,其中bw管理器中的每一個分配min值。根據(jù)上述規(guī)則,子樹中的子節(jié)點的分配的min值的聚集總和應當小于或等于子樹中父節(jié)點的分配的min值。參考圖6c的子樹603,子節(jié)點610和620的min的聚集總和為10gbps,其等于根節(jié)點601的min值。參考子樹604,子節(jié)點611和612的聚集總和是5gbps,其等于父節(jié)點610的min值。參考子樹605,子節(jié)點621和622的聚集總和是5gbps,其等于父節(jié)點620的min值。在圖6c中示出的節(jié)點的min值與在圖6a中示出的min值相同。
圖6d示出hbt600的替代圖。圖6d中示出的hbt600的節(jié)點布置在不同的分層級別中。分層級別0(606)稱作最高級別,分層級別1(607)稱作第二最高級別,分層級別2(608)稱作最低分層級別。分層級別0(606)包括根節(jié)點601并且具有分配的min值10gbps。分層級別1(607)包括節(jié)點610和620并且具有聚集min值10gbps。分層級別2(608)包括葉節(jié)點611、612、621及622,并且具有聚集min值10gbps。對于圖6d所示的實施方式,hbt600是對稱的(在級別1和級別2處),因此分配給級別1的節(jié)點的聚集min值等于分配給級別0的min值,并且分配給級別2處的節(jié)點的聚集min值等于分配給級別0的min值。
圖6e示出具有分配給節(jié)點中的每一個的min值和max值的hbt600的實例。當葉節(jié)點(例如,節(jié)點611、612、621或622)確定其對帶寬資源的當前使用接近其min值時,與葉節(jié)點相關聯(lián)的bw管理器可以向與其父節(jié)點相關聯(lián)的bw管理器發(fā)送對額外帶寬資源的請求。葉節(jié)點處的帶寬資源的當前使用包括與葉節(jié)點相關聯(lián)的所有流當前利用的帶寬資源。例如,如果葉節(jié)點611確定其所有流的當前使用接近其min值3gbps,則bw管理器616向與父節(jié)點610相關聯(lián)的bw管理器615發(fā)送請求。與父節(jié)點610相關聯(lián)的bw管理器615評估是否準許與其子節(jié)點611相關聯(lián)的bw管理器616請求的額外資源的請求。如果bw管理器615準許bw管理器616的請求,則所準許的額外資源可以與所請求的額外資源相同,多于所請求的額外資源,或者少于所請求的額外資源。
如上所述,子樹中所有子節(jié)點的當前帶寬使用應小于或等于子樹中父節(jié)點的max值。參考子樹603,子節(jié)點610和620的當前使用應當小于或等于10gbps,該值是分配給根節(jié)點601的max值。參考子樹604,子節(jié)點611和612的當前使用應當小于或等于8gbps,該值是分配給父節(jié)點610的max值。參考子樹605,子節(jié)點621和622的當前使用應當小于或等于7gbps,該值是分配給父節(jié)點620的max值。
如上所述,給定的子樹中的每個節(jié)點處配置的max值應該小于給定的子樹中的父節(jié)點處配置(或分配)的max值。參考子樹603,分配給子節(jié)點610和620的max值小于10gbps,該值是分配給父節(jié)點601的max值。參考子樹604,分配給子節(jié)點611和612的max值小于8gbps,該值是分配給父節(jié)點610的max值。參考子樹605,分配給子節(jié)點621和622的max值小于7gbps,該值是分配給父節(jié)點620的max值。
如上所述,可能的是,給定的子樹中的子節(jié)點的分配的max值的聚集總和大于給定的子樹中的父節(jié)點的max值。例如,子樹603具有等于15gbps的子節(jié)點610和620的分配的max值的聚集總和,其大于分配給根節(jié)點601的分配的max值10gbps。在另一實例中,子樹604具有等于9gbps的子節(jié)點611和612的分配的max值的聚集總和,其大于分配給父節(jié)點610的8gbps的分配的max值。
參考回圖3a,bw管理系統(tǒng)125包括具有多個bw管理器的bw管理器模塊320。在各種實施方式中,bw管理器與hbt中的節(jié)點相關聯(lián)。bw管理器負責在每個節(jié)點分配min值和max值,然后監(jiān)視節(jié)點處的帶寬使用。如果子節(jié)點處的當前使用低于min值(即,未充分利用為給定節(jié)點預留的帶寬),則在一個或多個其他子節(jié)點請求額外帶寬的情況下,與其父節(jié)點相關聯(lián)的bw管理器可能將一些預留帶寬重新分配給其子樹中的其他子節(jié)點。子樹中的子節(jié)點可能不具有超過其min值的當前帶寬使用(即,過度利用為給定節(jié)點預留的帶寬),除非其接收子樹中的其父節(jié)點對分配指定量的額外帶寬的許可。在一些實施方式中,一旦min值和max值分配給節(jié)點,則這些值不改變。在其他實施方式中,可以改變min值和max值,只要它們在由上述各種配置規(guī)則描述的約束下改變即可。然而,bw管理器跟蹤節(jié)點已經分配給其子樹內的其他子節(jié)點的額外帶寬,以確保與bw管理器相關聯(lián)的父節(jié)點的當前使用不超過分配給父節(jié)點的bw管理器的max值。
在各種實施方式中,多個vm共享服務器。當服務器由許多不同的vm共享時,可能變得重要的是,基于每個vm預留帶寬,使得在vm之間存在性能隔離。例如,如果服務器正由四個vm共享,則用戶可以通過配置min值和max值來設置最小預留帶寬和最大容量。策略的一個實例是將服務器的25%的帶寬資源分配給四個vm中的每一個。在該實例中,每個vm具有服務器的帶寬資源的相等份額。
在其他實例中,用戶可以選擇將更大或更小的帶寬份額給予一個或多個vm。參考圖4c,對應于分層樹(未示出)中的根節(jié)點的服務器450在四個vm之間分配了其10gbps的帶寬。vm451分配40%的份額,vm452分配30%的份額,vm453分配15%的份額,以及vm454分配15%的份額。vm451、452、453、及454可以表示虛擬資源池。
圖4d示出了分配給圖4c中示出的vm451的資源可以在不同應用之間對其分配的資源進行優(yōu)先化的方式。在這個實例中,用戶可以選擇性地使在vm內運行的一個應用比在同一vm上運行的其他應用執(zhí)行得更好。在該實例中,至少兩個應用(郵件服務器應用460和網絡服務器應用465)在vm451上運行。郵件服務器應用460表示高優(yōu)先級應用以及網絡服務器應用465表示中優(yōu)先級應用。優(yōu)先級是預先確定的并且基于帶寬優(yōu)先級。換言之,來自郵件服務器應用460的流被認為比來自網絡服務器應用465的流具有更高的優(yōu)先級,并且可以獲得分配給vm451的40%帶寬中更大的份額。圖4d還示出了與郵件服務器應用460和網絡服務器應用465相關聯(lián)的流可以屬于業(yè)務類別tcp。tcp業(yè)務類別可以利用端口進一步過濾。郵件服務器應用460與端口25相關聯(lián),并且網絡服務器應用465與端口80相關聯(lián)。在該實例中,向vm451分配服務器的帶寬資源(或總鏈路容量)的40%的份額。具有比網絡服務器應用465更高的優(yōu)先級的郵件服務器應用460將獲得分配給vm451的帶寬的更大的份額。
圖6f進一步示出了共享服務器的許多應用之間的帶寬管理。hbt660包括根節(jié)點6010、其他節(jié)點6100和6200、及葉節(jié)點6120和6210。hbt660包括三個分層級別(由框661示出的級別0,由框662示出的級別1和由框663示出的級別2)。在該實例中,用戶可以通過配置min值和max值來設置最小帶寬預留和最大容量。min值和max值可以基于每個應用進行配置,創(chuàng)建通過ip地址、端口和協(xié)議過濾的業(yè)務類別。例如,在tcp端口80上運行的網絡服務器獲得50%的最小帶寬預留,并且tcp端口3306上的mysql服務器獲得30%的最小帶寬預留。如圖6f所示,分層級別1由端口號過濾,分層級別2由協(xié)議類型(例如,tcp)過濾。
對于示例性實施方式,bw管理系統(tǒng)125包括bw管理器模塊320,該bw管理器模塊被配置為向由hbt中的節(jié)點表示的業(yè)務類別分配帶寬預留。hbt包括作為hbt中最高節(jié)點的根節(jié)點和一個或多個子樹,每個子樹具有父節(jié)點和一個或多個子節(jié)點。根節(jié)點表示全面業(yè)務類別,其包括用于與虛擬資源相關聯(lián)的服務器機器的集合流。根節(jié)點作為單個子樹的父節(jié)點包括在單個子樹內。作為單個子樹中的子節(jié)點而包括在單個子樹內的一個或多個子節(jié)點被稱為葉節(jié)點。hbt中根節(jié)點下面的節(jié)點各自與業(yè)務類別(也稱為業(yè)務子類別)中的一個相關聯(lián)。業(yè)務類別中的每一個表示通過至少一個業(yè)務分類參數(shù)過濾的來自全面業(yè)務類別的流的集合。在該示例性實施方式中,bw管理器模塊320還被配置為對于hbt中的每個子樹,確保子樹中的一個或多個子節(jié)點的分配的帶寬預留的和不超過子樹中父節(jié)點的所分配的帶寬預留,而沒有來自子樹中的父節(jié)點的分配帶寬。
在又一個實施方式中,根節(jié)點具有等于服務器的總鏈路容量的分配的帶寬預留。在另一實施方式中,hbt中的節(jié)點的分配的帶寬預留表示為hbt中的節(jié)點保證的帶寬。在其他實施方式中,來自子樹中的父節(jié)點的帶寬分配表示基于可用帶寬在子樹內的子節(jié)點之間進行帶寬的重新分配。
在其他示例性實施方式中,bw管理器模塊320包括多個帶寬管理器(bw管理器)327。bw管理器327中的每一個與hbt中的節(jié)點中的一個相關聯(lián)以管理與節(jié)點相關聯(lián)的業(yè)務類別的帶寬。多個bw管理器327包括用于第一子樹中的葉節(jié)點的葉bw管理器、用于第一子樹中的父節(jié)點的父節(jié)點bw管理器、及一個或多個其他子節(jié)點bw管理器。在一些實施方式中,葉節(jié)點bw管理器被配置為:確定與葉節(jié)點相關聯(lián)的業(yè)務類別何時利用接近第一子樹的葉節(jié)點的分配的帶寬預留的帶寬;并向父節(jié)點bw管理器發(fā)送對額外帶寬的請求,請求包括第一請求的帶寬量。在其他實施方式中,第一子樹的父節(jié)點bw管理器被配置為:確定第一子樹的父節(jié)點是否具有可用帶寬以向第一子樹中的葉節(jié)點分配額外帶寬;并且向葉節(jié)點分配可用帶寬的至少一部分。在另一實施方式中,第一子樹的父節(jié)點的父節(jié)點bw管理器被配置為:確定第一子樹內的子節(jié)點的分配的帶寬預留的總和何時小于或等于第一子樹中的父節(jié)點的分配的帶寬預留;并且向葉節(jié)點分配未分配的帶寬的至少一部分。在又一實施方式中,第一子樹的父節(jié)點bw管理器47被配置為:確定第一子樹內的子節(jié)點的分配的帶寬預留的當前使用的總和何時小于或等于第一子樹中的父節(jié)點的分配的max值或者帶寬上限;向葉節(jié)點分配未利用的分配的帶寬的至少一部分;以及向第一子樹的葉節(jié)點的bw管理器發(fā)送已經向葉節(jié)點分配了第一指定量的帶寬的響應。
在另一示例性實施方式中,第一子樹的父節(jié)點bw管理器被配置為:確定第一子樹內的子節(jié)點的分配的帶寬預留的當前使用的總和何時接近父節(jié)點的分配的帶寬預留;以及向第二子樹的父節(jié)點的bw管理器發(fā)送額外帶寬的請求,請求包括第二請求帶寬量,第一子樹的父節(jié)點表示第二子樹中的子節(jié)點。在一些實施方式中,第二子樹的父節(jié)點的父節(jié)點bw管理器被配置為:確定第二子樹內的子節(jié)點的分配的帶寬預留的當前使用的總和何時小于或者等于第二子樹中的父節(jié)點的分配的帶寬預留;向第一子樹的父節(jié)點分配未利用的分配的帶寬的至少一部分;以及向第一子樹的父節(jié)點的bw管理器發(fā)送響應,其指示已經向第一子樹的父節(jié)點的bw管理器分配了第二指定量的帶寬。在其他實例中,第一子樹的父節(jié)點bw管理器被配置為向葉節(jié)點bw管理器發(fā)送已經向葉節(jié)點分配了第三指定量的帶寬的響應。在另一實例中,第一指定量等于、小于或者大于第一請求帶寬量。在其他實施方式中,第三指定量等于、小于或者大于第一請求帶寬量。
在各種示例性實施方式中,hbt中非根節(jié)點或葉節(jié)點的節(jié)點可以作為父節(jié)點或子節(jié)點包括在多個子樹內。在另一實施方式中,hbt中根節(jié)點以下的節(jié)點各自與不同的業(yè)務類別相關聯(lián)。在另一實例中,hbt中相同等級的父節(jié)點使用相同的業(yè)務類別參數(shù)來過濾與全面業(yè)務類別相關聯(lián)的流。在其他實例中,葉節(jié)點由來自多個子樹的多于一個父節(jié)點的多個分類參數(shù)過濾。
在其他示例性實施方式中,bw管理器模塊320被配置為:將用戶配置的帶寬值分配給由用戶配置的節(jié)點的帶寬預留;并且將零分配給未由用戶配置的節(jié)點的帶寬預留。
在一些實施方式中,bw管理器模塊320被配置為:向由hbt中的節(jié)點表示的業(yè)務類別分配最大容量。在其他實施方式中,bw管理器模塊320被配置為將等于服務器的整個鏈路容量的最大容量分配給由根節(jié)點表示的全面業(yè)務類別。在一些實例中,hbt中的子樹中的每個子節(jié)點的分配的最大容量小于或等于子樹中父節(jié)點的分配的最大容量。在其他實例中,bw管理器模塊320被配置為:對于hbt中的子樹中的每個,確保子樹中所有子節(jié)點的帶寬的當前使用小于或等于子樹中的父節(jié)點的分配的最大容量。在另外的實例中,bw管理器模塊320被配置為:將用戶配置的帶寬值分配給由用戶配置的節(jié)點的最大容量;并將分配給父節(jié)點的最大容量分配給未由用戶配置的節(jié)點的最大容量。
參考圖3a,qos管理器模塊330包括多個qos管理器331、332、及333。hbt內的葉節(jié)點具有相關聯(lián)的qos管理器。qos管理器331、332和333負責分配與葉節(jié)點相關聯(lián)的bw管理器分配給葉節(jié)點的帶寬的份額(例如,優(yōu)先級應用級別份額和流份額)。帶寬的份額基于分配給服務器上運行的應用的優(yōu)先級來分配。wm模塊340包括多個wm子模塊341、344及347。子模塊341、344及347中的每一個對應于服務器上運行的特定應用(或者應用優(yōu)先級)。多個wm342、343、345、346、348、349在子模塊341、344、及347中的每一個內。與根節(jié)點相關聯(lián)的用于服務器的所有流具有對應的wm。wm管理單個流(例如,tcp流)的帶寬,并向qos管理器請求帶寬。圖3f示出wm342的示例性實施方式。圖10a-圖10f示出wm如何調整兩個主機之間的特定流的窗口大小的實例。
圖7a示出根據(jù)示例性實施方式的與葉節(jié)點701相關聯(lián)的hbt700的一部分。葉節(jié)點701具有相關聯(lián)的bw管理器327。bw管理器327與葉節(jié)點701相關聯(lián)并向qos管理器331分配2gbps。qos管理器331負責基于應用優(yōu)先級別信息在與業(yè)務類別相關聯(lián)的流的集合中的流之間分配帶寬。葉節(jié)點701可以表示圖6a中示出的hbt600中的節(jié)點中的一個。qos管理器331和wm子模塊341與葉節(jié)點701相關聯(lián)。wm子模塊341包括用于高優(yōu)先級應用730的wm(包括wm731-734),用于中優(yōu)先級應用740的wm(包括wm741-744)和用于低優(yōu)先級應用750的wm(包括wm751-754)。wm中的每一個與流735-738、745-748、及755-758中的一個相關聯(lián)。
qos管理器331負責基于用戶配置的應用優(yōu)先級信息來在流之間分配2gbps帶寬預留的份額。如圖4b所示,服務器401可以運行多個應用(諸如http應用421、ssh應用422和ftp應用423)。在各種實施方式中,用戶可以將這些應用中的一個或多個優(yōu)先化為高優(yōu)先級、中優(yōu)先級或低優(yōu)先級。這些應用421、422、423可被稱為優(yōu)先級應用級別。較高優(yōu)先級的應用通常獲得分配給葉節(jié)點的帶寬(例如,分配給節(jié)點612的2gbps)的更大的份額。在其他實施方式中,用戶可以提供分配給葉節(jié)點的帶寬的總份額的百分比(%),其被分配給高優(yōu)先級流、中優(yōu)先級流和低優(yōu)先級流的集合。在一些實施方式中,帶寬管理器系統(tǒng)125可以自動分配分配給高、中和低優(yōu)先級流集合中的每一個的份額。
狀態(tài)跟蹤模塊3303(圖3e中所示)可以至少部分地利用圖7a的狀態(tài)跟蹤模塊711、712和713來實現(xiàn)。在圖7a中示出的實例中,狀態(tài)跟蹤模塊711與來自高應用優(yōu)先級別p1的應用相關聯(lián),狀態(tài)跟蹤模塊712與來自中應用優(yōu)先級別p2的應用相關聯(lián),并且狀態(tài)跟蹤模塊713與來自低應用優(yōu)先級別p3的應用相關聯(lián)。在各種實施方式中,狀態(tài)跟蹤模塊3303與qos邏輯模塊3610內的各種組件交互,以基于應用優(yōu)先級別(與業(yè)務類別相關聯(lián))分配帶寬,也稱為分配的帶寬b的%份額,以及流份額(與分配的帶寬b的%份額相關聯(lián))。
qos管理器331基于應用優(yōu)先級別來跟蹤各種應用的狀態(tài)跟蹤信息。在一些實施方式中,狀態(tài)跟蹤信息包括應用優(yōu)先級別(px)的total_request_size(rpx)、scale_factor(a)和b的%份額,其中x表示優(yōu)先級應用級別號。例如,如果存在三個優(yōu)先級應用級別,則所有應用優(yōu)先級別(與給定節(jié)點的業(yè)務類別相關聯(lián))的總計的總請求大小r等于rp1+rp2+rp3,并且所有應用優(yōu)先級別的分配帶寬b(與給定節(jié)點的業(yè)務類別相關聯(lián))被分成稱為%份額p1,%份額p2和%份額p3的b的百分比(%)份額px。在各種實施方式中,分配給應用優(yōu)先級別的%份額可以通過用戶配置。在一些實施方式中,p1的%份額50與p2的%份額和p3的%份額的總和等于b的100%。例如,%份額p1=60%,%份額p2=30%和%份額p3等于10%。
在示例性實施方式中,狀態(tài)跟蹤模塊711跟蹤高優(yōu)先級應用(稱作p1)的狀態(tài)。狀態(tài)跟蹤模塊712跟蹤中優(yōu)先級應用(稱作p2)的狀態(tài)。狀態(tài)跟蹤模塊713跟蹤低優(yōu)先級應用(稱作p3)的狀態(tài)。與高優(yōu)先級應用相關聯(lián)的流稱為高優(yōu)先級流(p1流),與中優(yōu)先級應用相關聯(lián)的流稱為中優(yōu)先級流(p2流),并且與低優(yōu)先級應用相關聯(lián)的流稱為低優(yōu)先級流(p3流)。p1、p2及p3可被稱為高、中、及低應用優(yōu)先級別或者應用優(yōu)先級等級。
狀態(tài)跟蹤模塊715示出不同應用優(yōu)先級別(p1、p2及p3)的模塊(例如,711、712及713)。在該實例中,應用優(yōu)先級p1表示高優(yōu)先級應用,應用優(yōu)先級p2表示中等優(yōu)先級應用,并且應用優(yōu)先級p3表示低優(yōu)先級應用。狀態(tài)跟蹤模塊711跟蹤與p1相關聯(lián)的流(例如,流735-738)的狀態(tài)。狀態(tài)跟蹤模塊712跟蹤與p2相關聯(lián)的流(例如,流745-748)的狀態(tài)。狀態(tài)跟蹤模塊713跟蹤與p3相關聯(lián)的流(例如,流755-758)的狀態(tài)。應當理解,優(yōu)先級應用級別的數(shù)量可以改變,并且與每個優(yōu)先級應用級別相關聯(lián)的流的數(shù)量可以改變。在可替換的實施方式中,與p1、p2和p3相關聯(lián)的流的狀態(tài)由單個狀態(tài)跟蹤模塊而不是分離的模塊711、712和713跟蹤。在各種實施方式中,狀態(tài)跟蹤數(shù)據(jù)存儲在可由qos管理器331訪問的一個或多個存儲設備中。在各種實施方式中,狀態(tài)跟蹤數(shù)據(jù)包括應用優(yōu)先級別(px)的total_request_size(rpx)、scale_factor(a)和b的%份額,其中x表示優(yōu)先級應用級別號,以及用于計算這三個值的值。
狀態(tài)跟蹤模塊711、712和713中的每一個跟蹤以下信息:(1)用于跟蹤來自屬于應用的優(yōu)先級別的所有活動流的請求的總和(在帶寬方面)的total_request_size(rpx);(2)用于提供帶寬乘法器的scale_factor(a),通過其加速(或減速)應用的優(yōu)先級別中的流(例如,如果流接收bmbps的帶寬并且加速因子為a,則該流的帶寬增加a×b);以及(3)對于應用的優(yōu)先級別中的所有流實現(xiàn)的帶寬的總和,用于應用優(yōu)先級別(px)的b的%份額。x表示示例性實施方式中的優(yōu)先級別應用號。以下模塊中的一個或多個可以用于至少部分地實現(xiàn)狀態(tài)跟蹤模塊711、712和713,或者與狀態(tài)跟蹤模塊711、712和713結合使用:流使用跟蹤模塊3406、狀態(tài)跟蹤模塊3303和業(yè)務類別帶寬使用跟蹤模塊3203。
在各種實施方式中,百分比份額對于不同的優(yōu)先級別可以是不同的并且由bw管理器327分配給qos管理器331的總帶寬的百分比份額(或者分數(shù))確定。由bw管理器327分配的帶寬b可以在bw集合響應3302中提供為分配帶寬(b)。分配帶寬(b)與關聯(lián)于業(yè)務類別的流的集合相關聯(lián),例如與葉業(yè)務類別相關聯(lián)的流的集合。在一些實施方式中,百分比份額(或者分數(shù))可以由用戶或者由qos管理器331配置。在圖7a所示的實例,對于優(yōu)先級應用級別p1,百分比份額可以是b的60%,對于優(yōu)先級應用級別p2,百分比份額可以是b的30%,并且對于優(yōu)先級應用級別p3,百分比份額可以是b的10%。
在一些實施方式中,如果應用優(yōu)先級別中的一個不使用其整個百分比份額,則份額的未使用部分可以分配給屬于其他應用優(yōu)先級別的流。例如,假設應用優(yōu)先級別p1的百分比份額僅利用50%,而不是60%。在該情況下,未使用的10%可以分配至應用優(yōu)先級別p2。
高優(yōu)先級流、中優(yōu)先級流和低優(yōu)先級流根據(jù)分配給優(yōu)先級應用級別(px,例如p1、p2、p3)的比例因子(a)和百分比份額(px的%份額)的值而變化,并且可稱為可配置參數(shù)。
在各種實施方式中,高優(yōu)先級流和中等優(yōu)先級流具有等于由qos管理器331管理的總帶寬(即,在一些實施方式中的分配的帶寬b)的優(yōu)先級應用級別的百分比份額。在其他實施方式中,低優(yōu)先級流局限于對qos管理器331可用的總帶寬的一部分(即,一些實施方式中的分配的帶寬b)。
在一些實施方式中,高級流和中級流在分配給比例因子(a)的值中可以不同。高優(yōu)先級流可以具有比中級流更大的比例因子(a)。在各種實施方式中,這些可配置參數(shù)由圖3c中示出的配置界面模塊356接收。在其他實施方式中,bw管理系統(tǒng)125可以為這些可配置參數(shù)自動分配值。
在各種實施方式中,qos管理器331針對應用的每個應用優(yōu)先級別(例如,高、中或低)以兩種模式操作。這兩種操作模式(即,無壓模式和欠壓模式)由qos管理器331用于與應用優(yōu)先級別(例如,p1、p2或p3)相關聯(lián)的52份分配流份額。模式選擇模塊3306可以配置為提供基于閾值選擇無壓模式或欠壓模式的功能。
qos管理器331定義確定哪個模式應當是激活的閾值。預定閾值表示分配帶寬b的百分比。在各種實施方式中,百分比針對各種應用優(yōu)先級別可以是不同的。閾值可以是可配置的參數(shù)。在一些實施方式中,當總計的總請求大小(r)小于或等于預定閾值時,無壓模式是激活的。當總計的總請求大小(r)大于預定閾值時,欠壓模式是激活的。qos管理器331在提供給wm子模塊341的流響應(例如,qos流響應3402)中為單獨流(對于與業(yè)務類別相關聯(lián)的流的集合)提供流份額。圖8a-圖8b示出bw管理系統(tǒng)125在無壓模式下操作的一部分,以及圖9a-圖9示出bw管理系統(tǒng)125在欠壓模式下操作的一部分。
當qos管理器331以無壓模式操作時,當基于第一組操作模式規(guī)則分配流份額時,qos管理器嘗試加速(或減速)單獨流的帶寬請求(例如,wm流請求3401)。以下描述涉及無壓模式的第一組操作模式規(guī)則的實例。如果在無壓模式下操作,則qos響應=帶寬請求bora×wm流請求的最小值,其中b表示與包括單獨流的業(yè)務類別相關聯(lián)的流的集合的分配帶寬b,a表示與單獨流的應用優(yōu)先級別相關聯(lián)的比例因子。qos響應表示分配給單獨份額的流份額,然后用于計算窗口大小wa。
當qos管理器331在欠壓模式下操作時,它嘗試基于第二組模式操作規(guī)則在給定應用優(yōu)先級別中的所有流(與業(yè)務類別相關聯(lián))之間分配帶寬。第二組模式操作規(guī)則可以用于稱作成比例_份額和均等_份額的分配類型。以下描述第二組操作模式規(guī)則的實例。
例如,假設在給定優(yōu)先級別中有n個流,r的總計的總請求大小以及b(其表示所分配的帶寬)的優(yōu)先級應用級別的百分比份額(例如,p1的%份額)。對于具有請求大小r(r表示來自wm流請求3401的接收量)的流,qos管理器331計算:均等_份額=b/n成比例_份額=(r/r)*b。qos管理器331使用以下算法來為單獨流分配流份額(即,給請求流分配帶寬):如果(r<均等_份額),則分配r,否則如果(成比例_份額<均等_份額),則分配均等_份額,否則分配min(r,成比例_份額)。
圖8a示出了對于wm流請求7411-7441,bw管理系統(tǒng)125的在無壓模式下操作的部分s01。圖8a示出分別用于帶寬請求rl-r4的wm流請求7411-7441。r1帶寬請求與流735相關聯(lián),r2帶寬請求與流736相關聯(lián),r3帶寬請求與流737相關聯(lián),并且r4帶寬請求與流73s相關聯(lián)。在示例性實施方式中,用戶接口模塊3304(圖3e中所示)用于將來自wm731-734的wm流請求7411-7441提供至qos管理器331。
qos管理器331包括用于p1的無壓模式模塊3307、模式選擇模塊3306和狀態(tài)跟蹤模塊711。在一些實施方式中,模塊3307和3306可包括在qos邏輯模塊361內。無壓模式模塊3307指示已選擇了無壓模式,因為r小于或等于閾值。在各種實施方式中,閾值可以針對不同的應用優(yōu)先級別而不同。p1的狀態(tài)跟蹤模塊711跟蹤total_request_size(rp1)。在示例性實施方式中,對于具有3個應用優(yōu)先級別的帶寬管理器模塊125,聚集總請求大小(r)表示總計的rp1+rp2+rp3。在示例性實施方式中,qos集合請求(例如,圖3b中所示的3301)表示所有應用優(yōu)先級別的總計的總請求r。
圖8b示出了bw管理系統(tǒng)125對于wm流響應在無壓模式下操作的部分802。圖8b示出來自qos管理器331的對wm流請求7411-7441的響應。在示例性實施方式中,用戶接口模塊3304(圖3e中所示)用于將來自qos管理器331的qos流響應7410-7440提供至wm731-734。在圖8b所示的bw管理系統(tǒng)125的部分802中,qos流響應7410-7440示出了稱作qos分配的分配的帶寬量。無壓模式模塊3307基于分配帶寬b的最小值或通過將針對單獨流的帶寬請求(r)乘以各種應用優(yōu)先級別中的流的比例因子(a)來計算無壓模式中的qos流請求(例如,3301)。在各種實施方式中,各種應用優(yōu)先級別的比例因子(a)可以是不同的。用戶接口模塊3304基于每個流提供wm和qos管理器之間的通信,以及針對與業(yè)務類別(或業(yè)務子類別)相關聯(lián)的流的集合提供qos管理器和bw管理器之間的通信。
圖9a示出在示例性實施方式中帶寬管理樹125的以欠壓模式操作的部分901。圖9a示出了在欠壓模式下操作的qos管理器331的實例,其中qos管理器331嘗試在給定的應用優(yōu)先級別中的所有流之間共享帶寬。圖9a示出了針對與流735相關聯(lián)的r1帶寬,與流736相關聯(lián)的r2帶寬,與流737相關聯(lián)的r3帶寬和與流738相關聯(lián)的r4帶寬的wm流請求7411-7441。在示例性實施方式中,用戶接口模塊3304(圖3e中所示)用于將來自wm731-734的wm流請求7411-7441提供至qos管理器331。rl、r2、r3和r4的值表示在特定時間(t)時流的估計的當前帶寬。
在圖9a中,qos管理器331包括欠壓模式模塊3308、模式選擇模塊3306及p1狀態(tài)跟蹤模塊711。在一些實施方式中,模塊3308和3306可以在qos邏輯模塊361中實現(xiàn)。在各種實施方式中,p1狀態(tài)跟蹤模塊711跟蹤在圖9a-圖9b所示的實施方式中等于r1+r2+r3+r4的總_請求_大小(rp1)。wm請求7411-7441分別表示rl-r4的帶寬請求。在示例性實施方式中,rl-r4的帶寬請求基于等式wmax/rtt2。如果存在3個應用優(yōu)先級別以計算聚集總請求大小r,則qos邏輯模塊361將請求rp1與來自其它應用優(yōu)先級別(例如rp2和rp3)的其他total_request_size進行聚集。
圖9b示出了在由帶寬管理器模塊(例如,327)處理之后,來自qos管理器331對wm流請求7411-7441的響應。在示例性實施方式中,用戶接口模塊3304(圖3e中所示)用于將來自qos管理器331的qos流響應7410-7440提供至wm731-734。一旦由qos管理器331接收到分配的帶寬b,則qos管理器331在分配流份額之前向各種應用優(yōu)先級別分配百分比份額。欠壓模式應用于各種%份額的流份額分配。在示例性實施方式中,欠壓模式模塊3308基于成比例_份額或者相等_份額的分配類型中的一個來計算qos響應7410-7440。qos響應7410-7440基于成比例_份額或者相等_份額的分配類型。qos響應7410-7440指示流735-738的qos分配。
在圖9b所示的bw管理系統(tǒng)125的部分902中,qos流響應7410-7440示出了也稱作qos分配的每個流的分配帶寬。由qos管理器331發(fā)送至其相關聯(lián)的bw管理器327(圖7a所示)的請求包括針對優(yōu)先級應用級別p1、p2和p3的聚集總請求大小(r),優(yōu)先級應用級別分別由p1狀態(tài)跟蹤模塊711、p2狀態(tài)跟蹤模塊712和p3狀態(tài)跟蹤模塊713計算。
一旦為流分配了被稱為流份額的帶寬,則需要在協(xié)議發(fā)送器和協(xié)議接收器(也分別稱為發(fā)送主機和接收主機)之間傳送該信息。在各種實施方式中,如結合圖10a-圖10f的描述進一步詳細描述的,通過操縱tcp窗口(例如,通告窗口wa),信息傳送到協(xié)議發(fā)送器和協(xié)議接收器,。
參考回圖7a,wm子模塊341包括三組wm。用于高優(yōu)先級應用730的wm組包括wm731-734。用于中優(yōu)先級應用740的wm組包括wm741-744。用于低優(yōu)先級應用750的wm組包括wm751-754。流735-738表示p1流。流745-748表示p2流。流755-758表示p3流。
圖7b示出根據(jù)示例性實施方式的具有三個分層級別的hbt702的一部分的實例。第一級別表示根節(jié)點764。根節(jié)點764對應于包含用于服務器的所有流的業(yè)務類別,并且被配置為具有服務器的網絡接口的整個鏈路容量的max值。在一些實施方式中,根節(jié)點764的min值還設置為服務器的網絡接口的整個鏈路容量。分層級別1包括節(jié)點765和766,其表示由vlan#過濾的兩個業(yè)務類別。節(jié)點765對應于由vlan1定義的業(yè)務類別并且節(jié)點766對應于vlan2定義的業(yè)務類別。
節(jié)點765配置有min值600mbps和max值600mbps。節(jié)點766被配置為具有min值100mbps和max值200mbps。帶寬管理器324和328負責對供屬于由vlan1和vlan2限定的業(yè)務類別的所有流使用的合適的帶寬使用進行保持。
分層級別2表示層級的第三級別。對于vlan1,由協(xié)議過濾的業(yè)務類別由節(jié)點770和769表示。用于節(jié)點770的業(yè)務類別由vlan1和tcp協(xié)議限定。用于節(jié)點769的業(yè)務類別由vlan1和udp協(xié)議限定。對應于節(jié)點770的tcp業(yè)務類別配置有min值100mbps。對應于節(jié)點769的udp業(yè)務類別配置有max值100mbps。這種特定配置導致vlan1tcp業(yè)務至少接收100mbps,并且高達600mbps。vlan1udp業(yè)務最多接收100mbps。對于vlan2,tcp業(yè)務和udp業(yè)務總共接收至少100mbps和最多200mbps。對于圖7b所示的實例,因為節(jié)點769未配置有min值,所以bw管理器329將min值0(未示出)分配給節(jié)點769。此外,因為沒有為節(jié)點770配置max值,所以bw管理器327分配了從節(jié)點770的父節(jié)點繼承的600mbps的值。
圖7b中的葉節(jié)點中的每一個與bw管理器相關聯(lián),該bw管理器與qos管理器相關聯(lián)。節(jié)點769、766及770表示葉節(jié)點。與bw管理器328和329相關聯(lián)的qos管理器未示出。qos管理器331與表示vlan1的tcp流的bw管理器327相關聯(lián)??梢詫os管理器331配置為在應用的不同優(yōu)先級別分割分配給業(yè)務類別(與節(jié)點770相關聯(lián))的帶寬。例如,vlan1tcp的qos管理器331可以配置為將http業(yè)務視為高優(yōu)先級業(yè)務(或p1),將ssh業(yè)務視為中優(yōu)先級業(yè)務(p2)和將ftp業(yè)務視為低優(yōu)先級業(yè)務(p3)。qos管理器331向p1流7741分配稱作p1份額3311的優(yōu)先級應用份額,向p2流7742分配稱作p2份額3312的優(yōu)先級應用份額以及向p3流7743分配稱作p3份額3313的優(yōu)先級應用份額。p1流7741分別包括兩個http流7750和7760以及相關聯(lián)的wm775和776。p2流7742包括兩個ssh流7770和7780以及分別相關聯(lián)的wm777和778。p3流7743包括兩個ftp流7790和7800以及分別相關聯(lián)的wm779和780。
圖7c示出根據(jù)示例性實施方式的與葉節(jié)點701相關聯(lián)的bw管理系統(tǒng)125的一部分703。qos管理器331包括優(yōu)先級份額邏輯模塊3309(圖3e中也示出)。優(yōu)先級份額邏輯模塊3309在優(yōu)先級應用級別p1、p2和p3之間分配帶寬(由bw管理器327分配給葉節(jié)點701)。bw管理器327分配的帶寬(b)可稱為分配帶寬(b)。對于圖7c所示的實施方式,總分配帶寬(b)由qos管理器311劃分為3份額,其中b的60%分配給p1份額3311,b的30%分配給p2份額3312,以及b的10%分配給p3份額3313。
圖7d示出根據(jù)示例性實施方式的與葉節(jié)點701相關聯(lián)的hbt704的一部分。流份額邏輯模塊3305(也在圖3e中示出)在流735-738中分配b的p1份額3311,在流745-748中分配b的p2份額3312,及在流755-758中分配b的p3份額3313。p1份額3311在流份額7350-7380之間分割。分配給來自p1、p2和p3份額的每個流(也稱為流份額)的帶寬量由與關聯(lián)于業(yè)務類別的流的集合相關聯(lián)的流的操作模式確定,并且在一些實施方式中,基于p1、p2或p3的應用優(yōu)先級別(或分級)確定。在一些實施方式中,應用優(yōu)先級別還可以稱為應用優(yōu)先級等級。操作模式的實例包括無壓模式和欠壓模式。
在示例性實施方式中,qos管理器模塊330包括多個qos管理器,每個管理器與葉業(yè)務子類別的bw管理器327相關聯(lián)。葉業(yè)務子類別指與hbt中的葉節(jié)點相關聯(lián)的流的業(yè)務類別。多個qos管理器331可以各自包括優(yōu)先級份額邏輯模塊3309(圖3e所示),被配置為確定與葉業(yè)務子類別的bw管理器327相關聯(lián)的應用優(yōu)先級等級的數(shù)量。應用優(yōu)先級等級的數(shù)量至少包括第一優(yōu)先級等級和第二優(yōu)先級等級。在一些實施方式中,與第一優(yōu)先級等級相關聯(lián)的流的應用優(yōu)先級別可以表示第一應用優(yōu)先級別(也稱為p1),并且與第二優(yōu)先級等級相關聯(lián)的流的應用優(yōu)先級別可以表示第二應用優(yōu)先級別(也稱為p2)。優(yōu)先級份額邏輯模塊3309(圖3e所示)可以被配置為將分配給葉業(yè)務子類別的bw管理器327的帶寬的第一部分分配給流的第一應用優(yōu)先級別(p1),并且將分配給葉業(yè)務子類別的bw管理器327的帶寬的第二部分分配給流的第二應用優(yōu)先級別(p2)。
參考圖3e,在另一實施方式中,多個qos管理器的每個qos管理器331還可包括模式選擇模塊3306,其被配置為針對與第一應用優(yōu)先級別和第二應用優(yōu)先級別相關聯(lián)的流分別確定第一操作模式或第二操作模式。在另一實施方式中,多個qos管理器331可以各自還包括流份額邏輯模塊3305,其被配置為基于與應用優(yōu)先級別相關聯(lián)的操作模式來為第一應用優(yōu)先級別分配流份額。操作模式的實例包括無壓模式和欠壓模式。第一應用優(yōu)先級別和第二應用優(yōu)先級別可以與相同或不同的操作模式相關聯(lián)。不同組的模式操作規(guī)則可以適用于不同的操作模式。
在一些實施方式中,多個qos管理器331可以各自包括狀態(tài)跟蹤模塊3303,該狀態(tài)跟蹤模塊被配置為跟蹤每個優(yōu)先級組的一組優(yōu)先級等級值。由模式選擇模塊3306和流份額邏輯模塊3305使用的一組優(yōu)先級等級值可以確定針對來自每個優(yōu)先級組的流的分配的流份額。在其他實施方式中,多個qos管理器331可以各自包括被配置為與wm模塊340和bw管理器模塊320通信的接口模塊3304。
tcp協(xié)議使用端到端流控制協(xié)議來防止tcp發(fā)送器發(fā)送數(shù)據(jù)過快,以便tcp接收器接收和處理。換言之,使用流控制來限制來自服務器的流業(yè)務的速率。tcp協(xié)議通常實現(xiàn)滑動窗口流控制協(xié)議,其中,tcp接收器在接收窗口字段中指定(對于每個tcp分段)將針對tcp發(fā)送器與tcp接收器之間的連接緩沖的額外接收的數(shù)據(jù)量(以字節(jié)為單位)。在tcp發(fā)送器等待來自tcp接收器的確認和窗口更新之前,tcp發(fā)送器只能發(fā)送高達該數(shù)據(jù)量。每次tcp接收器接收并確認新的數(shù)據(jù)段時,接收窗口移動。一旦tcp接收器用盡序列號,序列號將循環(huán)回0。
tcp報頭字段在圖5a中示出并包括確認號字段571(用于存儲確認號碼)、ack字段572(用于存儲ack標志)、窗口大小字段573(用于存儲窗口大小)和序列號字段574(用于存儲序列號)。當發(fā)送窗口確認數(shù)據(jù)包(例如,圖10b中示出的1019)時,使用這些字段。
如果設置了ack標志,則確認號(32位)表示tcp接收器期望的下一個序列號。ack標志指示確認號是有效的。確認號確認收到所有先前的字節(jié)(如果有的話)。每個端發(fā)送的第一確認號(端到端連接)確認另一端的初始序列號本身,但不是數(shù)據(jù)。傳輸控制協(xié)議(tcp)窗口大小是指可以在連接的接收端一次能夠緩沖的最大接收數(shù)據(jù)量(以字節(jié)為單位)。tcp發(fā)送器在等待來自tcp接收器的確認和窗口更新之前只能發(fā)送該數(shù)據(jù)量。當tcp接收器通告窗口大小為0時,tcp發(fā)送器不能發(fā)送更多數(shù)據(jù),直到從tcp接收器接收到新的窗口大小更新。各種實施方式可以實現(xiàn)除tcp協(xié)議之外的協(xié)議,并且可以使用其他字段和參數(shù)來實現(xiàn)滑動窗口以控制發(fā)送主機正在傳輸數(shù)據(jù)包的速率。
圖10a示出通過主機1001(稱作tcp發(fā)送器)向主機1002(在示例性實施方式中稱作tcp接收器)發(fā)送數(shù)據(jù)包1005的圖表1000。主機1002發(fā)送窗口確認數(shù)據(jù)包1006以通告tcp接收器的窗口大小。rtt1003是指主機1001和主機1002之間的估計往返時間。
圖10b示出了利用位于兩個主機1001、1002之間的vtcp模塊109從主機1001傳輸?shù)街鳈C1002的數(shù)據(jù)包1011。在各種實施方式中,vtcp模塊109包括bw管理系統(tǒng)125,可以如圖2a-圖2e中所示定位。圖表1010示出部署在兩個主機(即,主機1001和1002)之間的vtcp模塊109,使得bw管理系統(tǒng)125代表主機1002(tcp接收器)接受數(shù)據(jù)包并向主機1001(tcp發(fā)送器)通告窗口(也稱為wa),其指示將來接受的數(shù)據(jù)量。rtt發(fā)送器1014(也稱作rtt1)表示主機1001與vtcp模塊109(或者bw管理系統(tǒng)125)之間的估計往返時間。rtt接收器1015(也稱作rtt2)表示vtcp模塊109(或者bw管理系統(tǒng)125)與主機1002之間的估計往返時間。
通告窗口wa的大小由bw管理系統(tǒng)125計算,并且在控制主機(tcp發(fā)送器)能夠向分層bw管理系統(tǒng)125發(fā)送數(shù)據(jù)的速率方面發(fā)揮重要作用。如上所述,在示例性實施方式中,圖3f中示出的與wm342相關聯(lián)的窗口大小生成模塊3405可以用于計算通告窗口wa的大小。在各種實施方式中,為每個流創(chuàng)建一個wm(例如,wm342),其負責計算從相關聯(lián)的qos管理器(例如,qos管理器331)請求多少帶寬(也稱為wm流請求3401)。流請求(例如,wm流請求3401)中請求的帶寬量如下所述。
在各種實施方式中,wm管理bw管理系統(tǒng)125針對tcp發(fā)送器(例如,主機1001)與tcp接收器(例如,主機1002)之間的端到端連接中的每個流通告的窗口大小wa。在各種實施方式中,與發(fā)送主機1001和接收主機1002之間的流相關聯(lián)的wm計算將通告給tcp發(fā)送器(例如,主機1001)的窗口大小(也稱為wa)。在另一實施方式中,wm還計算從qos管理器請求多少帶寬。由wm代表的請求的帶寬量可以由公式wmax/rtt2表示。所請求的帶寬量基于tcp接收器(例如,主機1002)正在接收數(shù)據(jù)包(例如,數(shù)據(jù)包1011')的估計速率。在各種實施方式中,流邏輯模塊3620(圖3f中所示)計算wa和wmax/rtt2。這些計算將在以下更詳細地描述。
參考圖10b,bw管理系統(tǒng)125向主機1001發(fā)送窗口確認數(shù)據(jù)包1019,該窗口確認數(shù)據(jù)包包括tcp報頭字段和有效載荷(或者數(shù)據(jù))。tcp報頭字段在圖5a中示出,并且包括確認號字段571、ack字段572、窗口大小字段573、及序列號字段574。窗口確認數(shù)據(jù)包1019(也稱作vtcp窗口確認數(shù)據(jù)包1019)包括用于通告vtcp模塊109或bw管理系統(tǒng)125的可用窗口大小(wa)的這些字段中的值。窗口確認數(shù)據(jù)包1016(也稱作接收窗口確認數(shù)據(jù)包1016)包括用于通告接收主機1002的可用窗口大小(wa)的這些字段中的值。
數(shù)據(jù)包1011和1011'也包括窗口大小。數(shù)據(jù)包1011'中的窗口大小可以不同于數(shù)據(jù)包1011中的窗口大小。數(shù)據(jù)包1011'中的窗口大小由bw管理系統(tǒng)125基于bw管理系統(tǒng)125想要向主機1002通告的窗口大小的量來確定。在作為數(shù)據(jù)包1011'被轉發(fā)到接收主機1002之前,數(shù)據(jù)包1011臨時存儲在流緩沖器354(圖3c所示)中。bw管理系統(tǒng)125控制數(shù)據(jù)包準備好被轉發(fā)到接收主機1002的時間。在各種實施方式中,數(shù)據(jù)包1011'基于tcp協(xié)議轉發(fā)至接收主機1002。
bw管理系統(tǒng)125發(fā)送至發(fā)送主機1001的通告窗口大小被稱作wa。由bw管理系統(tǒng)125通告的窗口稱作wa并且可以是通過以下等式計算:
wa=qos分配×rtt1,其中,qos分配是qos流響應3402中分配的帶寬量。
wmax=基于(l)bw管理系統(tǒng)125正在用于向接收主機1002發(fā)送數(shù)據(jù)包(例如,數(shù)據(jù)包1011')所使用的擁塞窗口(we)以及(2)由接收主機1002(例如,在數(shù)據(jù)包1016中)通告的窗口(wr)中的最小值的估計窗口大小。
rtt1=發(fā)送主機1001和bw管理系統(tǒng)125之間的往返時間。1002
rtt2=bw管理系統(tǒng)125和主機1002之間的往返時間。
一旦bw管理系統(tǒng)125的通告窗口(wa)被確定并傳輸?shù)桨l(fā)送主機1001,則發(fā)送主機1001以數(shù)據(jù)包幾乎沒有被丟棄的可能性的速率向接收主機1002傳輸數(shù)據(jù)包。在窗口確認數(shù)據(jù)包1019中提供的bw管理系統(tǒng)125的通告窗口確保用于該數(shù)據(jù)流的緩沖器(例如,流緩沖器354)能夠接收或緩沖數(shù)據(jù)包1011和1011',而不必丟棄數(shù)據(jù)包。流緩沖器(例如,流緩沖器354)的大小是來自bw管理系統(tǒng)125的窗口確認數(shù)據(jù)包1019中其通告的窗口大小的函數(shù)。
如上所述,通告給發(fā)送主機1001的窗口wa由wa=qos分配×rtt1表示。接收主機1002接收數(shù)據(jù)包的估計速率稱作wmax/rtt2。wm從與流相關聯(lián)的qos管理器請求等于wmax/rtt2的量的帶寬(稱作圖3b所示的wm流請求3401)。在各種實施方式中,如上文更詳細地描述的,由bw管理系統(tǒng)125計算qos分配。
wm發(fā)送wm流請求3401以請求帶寬量wmax/rtt2。如上所述,wmax/rtt2的量由wm計算。響應于wm流請求3401,與流相關聯(lián)的qos管理器提供qos流響應3402。qos流響應3402可包括分配帶寬(例如,qos分配),該分配帶寬等于wm流請求3401中請求的帶寬,大于wm流請求3401中請求的帶寬,或小于wm流請求3401中請求的帶寬。在各種實施方式中,根據(jù)qos管理器正在操作的模式(例如,無壓模式或欠壓模式),qos管理器可以分配小于、等于或大于與關聯(lián)于業(yè)務類別的流的集合相關聯(lián)的wm流請求3401。如上所述,第一組模式操作規(guī)則可以用于第一操作模式(例如,無壓模式),并且第二組模式操作規(guī)則可以用于第二操作模式(例如,欠壓模式)。由qos管理器331分配給對wm模塊340的qos流響應3402中的流的帶寬的量稱為qos分配。
圖8a-圖8d示出無壓模式的wm流請求3401的實例。圖9a-圖9d示出欠壓模式的qos流響應3402的實例。
與流相關聯(lián)的wm計算可以通告回至發(fā)送主機1001的總窗口(wa)。在各種實施方式中,wa=(qos分配)×(rtt1)。在各種實施方式中,qos管理器331中的qos邏輯模塊3610基于操作模式計算qos分配,如圖8a-圖8d和圖9a-圖9d中論述的。qos分配的計算將在下面結合圖8a-圖8b針對無壓模式進行詳細討論,以及結合圖9a-圖9d針對欠壓模式進行詳細討論。對于示例性實施方式,為主機1001與主機1002之間的流請求的帶寬的量(例如,wm流請求3401)基于wmax/rtt2。在各種實施方式中,wmax/rtt2表示單獨流請求的全部帶寬量。在各種實施方式中,qos管理器基于每個流跟蹤wmax/rtt2隨時間的變化以及針對與應用優(yōu)先級級別相關聯(lián)的優(yōu)先級等級的所有流的wmax/rtt2的總和。一旦qos管理器331聚集用于各種應用優(yōu)先級別的流的wmax/rtt2,qos管理器331生成由qos管理器331在qos集合請求3301中發(fā)送至其相關聯(lián)的帶寬管理器的聚集帶寬量(例如,稱作聚集總請求大小(r))。
圖10c-圖10f提供了基于w/rtt2跟蹤流1和2的當前使用以確定要請求的額外帶寬的量的實例。在圖10e中示出的表1060中,公式w/rtt2中的w等于wmax。
參考圖10f,葉節(jié)點1070與兩個流(流1和流2)相關聯(lián)。應理解的是,與葉節(jié)點相關聯(lián)的流的數(shù)目可以改變。流1和2中的每一個與wm107相關聯(lián)。bw管理器1071與葉節(jié)點1070相關聯(lián),其分配有1gbps的min值和2gbps的max值。流1的窗口大小由wm1073管理并且流2的窗口大小由wm1074管理。wm1073跟蹤流1的估計的當前使用并且wm1074跟蹤流2的估計的當前使用。對于示例性實施方式,帶寬使用跟蹤模塊357可以跟蹤流1和2的估計的當前使用。qos管理器1072為兩個流中的節(jié)點1070分配1gbps(例如,min值)的分配帶寬。bw管理器1071監(jiān)測與葉節(jié)點1070相關聯(lián)的業(yè)務類別的帶寬的估計的當前使用。在該實例中,葉節(jié)點1070處的帶寬的當前使用等于流1和流2的wmax/rtt2的總和。
圖10c示出了來自bw管理系統(tǒng)125接受的流1的數(shù)據(jù)包的輸入速率1032和自bw管理系統(tǒng)125的來自流1的數(shù)據(jù)包的輸出速率1042的圖105。輸出速率1042表示接收主機1043從bw管理系統(tǒng)125接收數(shù)據(jù)包的速率并且可以由wmax/rtt2表示。在圖10c中,流1的數(shù)據(jù)包從發(fā)送主機1001發(fā)送至接收主機1043。
圖10d示出了顯示來自由bw管理系統(tǒng)125接受的流2的數(shù)據(jù)包的輸入速率1033和自bw管理系統(tǒng)125的來自流2的數(shù)據(jù)包的輸出速率1044的圖1051。在圖10d中,數(shù)據(jù)包從發(fā)送主機1001發(fā)送至接收主機1044。輸出速率1043表示接收主機1044從bw管理系統(tǒng)125接收數(shù)據(jù)包的速率并且可以由wmax/rtt2表示。
圖10e示出了用于跟蹤流1和2的帶寬的估計當前使用以確定qos管理器1072何時請求帶寬的表1060。報頭字段1061、1062、1063、1064和1065分別表示指定時間的輸出速率(wmax/rtt2)、流1的估計當前使用、流2的估計當前使用,流1和2的(估計當前使用)的總和,以及總和與min的比較。
在該示例中,在t=1處,流1和流2的總和低于bw管理器1071的min量1gbps。bw管理器1071向qos管理器1072分配所請求的帶寬(例如,在其bw集合響應3302中稱為分配帶寬(b)的量)。qos管理器1072進而將分配至wm1073和1074的帶寬量分別分配給流1和流2。
根據(jù)表1060,流1和2在t=2處的總和是(1.4gbps),高于最小值1gbps。因此,qos管理器1072可以請求要分配給流1和2的帶寬。根據(jù)示例性實施方式,請求的帶寬量是1.4gbps。在一個實施方式中,qos管理器1072將帶寬的該請求發(fā)送至bw管理器1071。qos管理器1072負責確保對來自wm1073和1074的該帶寬請求的響應在分配給葉節(jié)點1070的限制(例如,min值和max值)內。
盡管圖10a-圖10d示出了在一個方向上流動的數(shù)據(jù)包,替換實施方式可包括以雙向方式流動的數(shù)據(jù)包,使得主機中的每一個都發(fā)送和接收數(shù)據(jù)包。
在示例性實施方式中,系統(tǒng)包括至少一個處理器,其被配置為執(zhí)行用于處理器實現(xiàn)的模塊的操作,所述模塊包括用于為一組流分配帶寬的bw管理系統(tǒng)125。bw管理系統(tǒng)125被配置為代表接收主機以發(fā)送主機發(fā)送的流速接受第一單獨流的數(shù)據(jù)包,該流的組包括第一單獨流;計算要通告至發(fā)送主機的窗口大小,通告的窗口大小基于第一單獨流的分配的流份額;將確認數(shù)據(jù)包傳輸至發(fā)送主機,確認數(shù)據(jù)包包括計算的窗口大?。徊⑶一谟嬎愕拇翱诖笮∫哉{整的流速接收第一單獨流的數(shù)據(jù)包。
在一些實施方式中,接收主機1002表示tcp接收器,并且發(fā)送主機1001表示tcp發(fā)送器。在示例性實施方式中,第一單獨流表示與來自與主機之一相關聯(lián)的流的集合的流的業(yè)務類別相關聯(lián)的數(shù)據(jù)流,流的業(yè)務類別與多個應用優(yōu)先級別相關聯(lián)。
在另一實施方式中,bw管理系統(tǒng)125包括與流的業(yè)務類別相關聯(lián)的多個wm。流的業(yè)務類別中的每個單獨流具有多個wm中的對應的wm。多個wm被配置為計算通告至發(fā)送主機1001的單獨流的窗口大小。
在其他實施方式中,接收主機1002接收數(shù)據(jù)包的估計速率基于窗口大小(wmax)和bw管理系統(tǒng)125與接收主機1002之間的往返時間(rtt2)。窗口大小wmax基于以下的最小值:(l)bw管理系統(tǒng)125向接收主機1002發(fā)送數(shù)據(jù)包所使用的擁塞窗口大小和接收主機1002通告的窗口大小。在一個示例性實施方式中,bw管理系統(tǒng)125包括bw管理器327、qos管理器331、及與流的業(yè)務類別相關聯(lián)的多個wm。bw管理器327被配置為管理分配給業(yè)務類別的帶寬,qos管理器331被配置為基于應用優(yōu)先級別管理流的業(yè)務類別,并且多個wm被配置為計算針對流的業(yè)務類別中的單獨流通告至發(fā)送主機的窗口大小。接收主機1002接收第一單獨流的數(shù)據(jù)包的估計速率表示第一單獨流的wm流請求量。在該示例性實施方式中,bw管理系統(tǒng)125進一步配置為:將wm流請求3401從與第一單獨流相關聯(lián)的wm發(fā)送至與流的業(yè)務類別相關聯(lián)的qos管理器331;并且從與流的業(yè)務類別相關聯(lián)的qos管理器331接收qos流響應3402。qos流響應3402包括等于、大于、或者小于wm流請求3401量的分配帶寬流份額(還稱作qos分配)。
在另一示例性實施方式中,bw管理系統(tǒng)125包括bw管理器327、qos管理器331、及與流的業(yè)務類別相關聯(lián)的多個wm。bw管理器327被配置為管理分配給業(yè)務類別的帶寬,qos管理器331被配置為基于應用優(yōu)先級別管理流的業(yè)務類別,并且多個wm被配置為計算針對流的業(yè)務類別中的單獨流通告至發(fā)送主機的窗口大小。接收主機1002接收第一單獨流的數(shù)據(jù)包的估計速率表示第一單獨流的wm流請求3401中的帶寬請求。在該示例性實施方式中,bw管理系統(tǒng)125進一步被配置為:將wm流請求3401從與第一單獨流相關聯(lián)的wm發(fā)送至與流的業(yè)務類別相關聯(lián)的qos管理器331;將流的集合的qos集合請求3301發(fā)送至與流的業(yè)務類別相關聯(lián)的bw管理器327;從與流的業(yè)務類別相關聯(lián)的bw管理器327接收針對流的集合的bw集合響應3302;并且從qos管理器331接收針對與流的業(yè)務類別相關聯(lián)的單獨流的qos流響應3402,qos流響應3402包括等于、大于、或者小于wm流請求3401中指示的帶寬的分配的帶寬流份額。
在另一實施方式中,與第一單獨流相關聯(lián)的wm被配置為基于來自qos流響應3402的分配的帶寬流份額(即,qos分配)和發(fā)送主機1001與bw管理系統(tǒng)125之間的往返時間(rtt1),來計算要通告給發(fā)送主機1001的新窗口大小;向發(fā)送主機1001傳輸新的確認數(shù)據(jù)包,新的確認數(shù)據(jù)包包括所計算的新窗口大?。徊⒒谒嬎愕男麓翱诖笮∫孕抡{整的流速接收數(shù)據(jù)包。
圖11a-圖11h示出各種實施方式的流程圖。在各種實施方式中,可以向流程圖1100-1170中的每一個添加額外操作,或者可以從流程圖1100-1170中的每一個刪除一個或多個操作。在另一實施方式中,流程圖1100-1170的操作,或者這些流程圖1100-1170的變形可以結合。在流程圖1100-1170中執(zhí)行的操作可以由bw管理系統(tǒng)125或vtcp模塊109內的一個或多個組件或模塊執(zhí)行。
圖11a是示出了根據(jù)示例性實施方式的用于控制tcp發(fā)送器(主機1001)傳輸至tcp接收器(主機1002)的數(shù)據(jù)包的速率的示例性方法的流程圖1100。流程圖1100包括操作1101-1104。在操作1101處,bw管理系統(tǒng)125代表tcp接收器(主機1002)以流速接受來自tcp發(fā)送器(主機1001)的數(shù)據(jù)包。在操作1102處,bw管理系統(tǒng)125計算要通告至tcp發(fā)送器(主機1001)的窗口大小。在操作1103處,bw管理系統(tǒng)125將窗口大小通告至tcp發(fā)送器(主機1001)以控制tcp發(fā)送器(主機1001)傳輸?shù)臄?shù)據(jù)包的流速。在操作1104處,bw管理系統(tǒng)125代表tcp接收器(主機1002)基于通告到tcp發(fā)送器(主機1001)的窗口大小以所調整的流速接受來自tcp發(fā)送器(主機1001)的數(shù)據(jù)包。
圖11b是示出了根據(jù)一個實施方式的用于控制發(fā)送主機使用滑動窗口協(xié)議傳輸數(shù)據(jù)包的速率的示例性方法的流程圖1110。流程圖1110包括操作1111-1113。在操作1111處,bw管理系統(tǒng)代表接收主機以發(fā)送主機發(fā)送的流速接受第一單獨流的數(shù)據(jù)包,帶寬管理系統(tǒng)被配置為管理表示與hbt中的節(jié)點相關聯(lián)的流的集合的業(yè)務類別的帶寬。第一單獨流包括在與一個或多個業(yè)務類別相關聯(lián)的單獨流的集合內。在操作1112處,bw管理系統(tǒng)125使用機器的處理器通過管理節(jié)點的帶寬使用以符合分配給節(jié)點的帶寬限制,來控制發(fā)送主機使用滑動窗口協(xié)議傳輸?shù)谝粏为毩鞯臄?shù)據(jù)包的速率。在操作1113處,基于滑動窗口協(xié)議以調整的流速接收第一單獨流的數(shù)據(jù)包。在示例性實施方式中,由bw管理系統(tǒng)125控制發(fā)送主機使用滑動窗口協(xié)議傳輸用于第一單獨流的數(shù)據(jù)包的速率包括:基于分配給與業(yè)務類別相關聯(lián)的單獨流的集合中的單獨流的應用優(yōu)先級分類,來管理與業(yè)務類別相關聯(lián)的帶寬分配。
在其他實施方式中,業(yè)務類別包括表示與來自hbt中的節(jié)點的多個節(jié)點相關聯(lián)的單獨流的集合的多個業(yè)務類別,并且全面業(yè)務類別表示hbt中的節(jié)點中的根節(jié)點。在另一實施方式中,全面業(yè)務類別表示具有與服務器機器相關聯(lián)的流的集合的根節(jié)點。全面業(yè)務類別劃分為由多個節(jié)點表示的多個業(yè)務類別。多個節(jié)點表示與全面業(yè)務類別相關聯(lián)的單獨流的集合的子集。
在一些實施方式中,接收主機表示傳輸控制協(xié)議(tcp)接收器,并且發(fā)送主機表示tcp發(fā)送器。在其他實施方式中,發(fā)送主機和接收主機中至少一個表示與服務器機器相關聯(lián)的虛擬化資源。在可替換的實施方式中,發(fā)送主機和接收主機中至少一個表示docker實例。
在示例性實施方式中,由bw管理系統(tǒng)125控制發(fā)送主機使用滑動窗口協(xié)議傳輸用于第一單獨流的數(shù)據(jù)包的速率包括:由bw管理系統(tǒng)125計算要通告至發(fā)送主機的窗口大小wa。通告的窗口大小wa基于對第一單獨流的帶寬請求的帶寬響應。在其他實例中,bw管理系統(tǒng)125計算通告至發(fā)送主機的窗口大小wa包括:基于接收主機從bw管理系統(tǒng)125接受針對第一單獨流的接受的數(shù)據(jù)包的估計的速率,計算第一單獨流的帶寬請求(例如,wm流請求3401)。在其他實例中,接收主機接收所接受的數(shù)據(jù)包的估計速率基于擁塞窗口wc和接收主機wr通告的窗口中的最小值以及針對第一單獨流在bw管理系統(tǒng)125和接收主機之間的往返時間rtt2,bw管理系統(tǒng)125使用擁塞窗口wc向接收主機發(fā)送所接受的數(shù)據(jù)包。在其他示例性實施方式中,確定單獨流的窗口大小wa包括向發(fā)送主機傳輸確認數(shù)據(jù)包,確認數(shù)據(jù)包包括計算的窗口大小wa;以及基于計算的窗口大小wa以調整的流速接收第一單獨流的數(shù)據(jù)包。
圖11c是示出了根據(jù)另一實施方式的用于控制發(fā)送主機使用滑動窗口協(xié)議傳輸數(shù)據(jù)包的速率的示例性方法的流程圖1120。流程圖1120包括操作1121-1123。在操作1121處,bw管理系統(tǒng)125代表接收主機以由發(fā)送主機發(fā)送的流速接受第一單獨流的數(shù)據(jù)包。帶寬管理系統(tǒng)125被配置為管理表示與hbt中的節(jié)點相關聯(lián)的流的集合的業(yè)務類別的帶寬。第一單獨流包括在與一個或多個業(yè)務類別相關聯(lián)的各個單獨流的集合內。在操作1122處,通過基于分配給與業(yè)務類別相關聯(lián)的各個單獨流的集合中的各個單獨流的應用優(yōu)先級分類管理與業(yè)務類別相關聯(lián)的各個單獨流的帶寬分配,bw管理系統(tǒng)125控制發(fā)送主機使用滑動窗口協(xié)議傳輸用于第一單獨流的數(shù)據(jù)包的速率。在操作1123處,基于滑動窗口協(xié)議以調整的流速接收第一單獨流的數(shù)據(jù)包。
在又一示例性實施方式中,bw管理系統(tǒng)125控制發(fā)送主機使用滑動窗口協(xié)議傳輸?shù)谝粏为毩鞯臄?shù)據(jù)包的速率包括:bw管理系統(tǒng)125通過管理節(jié)點的帶寬使用以符合分配給節(jié)點的帶寬限制,來控制發(fā)送主機使用滑動窗口協(xié)議傳輸?shù)谝粏为毩鞯臄?shù)據(jù)包的速率。在其他示例性實施方式中,業(yè)務類別包括表示與來自hbt中的節(jié)點的多個節(jié)點相關聯(lián)的各個單獨流的集合的多個業(yè)務類別,并且全面業(yè)務類別表示來自hbt中的節(jié)點的根節(jié)點。全面業(yè)務類別表示具有與服務器機器相關聯(lián)的流的集合的根節(jié)點。全面業(yè)務類別劃分為由多個節(jié)點表示的多個業(yè)務類別。多個節(jié)點表示與全面業(yè)務類別相關聯(lián)的各個單獨流的集合的子集。
圖11d是示出了根據(jù)一個實施方式的用于確定每個流的帶寬請求的示例性方法的流程圖1130。流程圖1130包括操作1131-1132。在操作1131處,由wm模塊340生成指示與業(yè)務類別相關聯(lián)的各個單獨流的集合中各個單獨流的帶寬量的帶寬請求。在各種實施方式中,wm流請求3401表示帶寬請求。帶寬量基于接收主機從bw管理系統(tǒng)125針對各個單獨流之一接收接受的數(shù)據(jù)包的估計速率。在操作1132,向qos管理器模塊330發(fā)送指示帶寬量的帶寬請求。
圖11e是示出了根據(jù)一個實施方式的用于確定針對流的集合的帶寬請求的示例性方法的流程圖1140。流程圖1140包括操作1141-1143。在操作1141處,qos管理器模塊330接收指示帶寬量的帶寬請求。在各種實施方式中,wm流請求3401表示帶寬請求。在操作1142處,聚集與業(yè)務類別相關聯(lián)的各個單獨流的集合中的各個單獨流的帶寬量,以創(chuàng)建聚集帶寬量。在操作1143處,將指示聚集帶寬量的帶寬請求發(fā)送至bw管理器模塊320。在各種實施方式中,qos集合請求3301表示指示聚集的帶寬量的帶寬請求。
圖11f是示出了根據(jù)一個實施方式的用于確定流的每個集合的帶寬響應的示例性方法的流程圖1150。流程圖1150包括操作1151-1154。在操作1151處,bw管理器模塊320接收指示聚集帶寬量的帶寬請求。對于各種實施方式,qos集合請求3301表示指示聚集帶寬量的帶寬請求。在操作1152處,基于與業(yè)務類別相關聯(lián)的各個單獨流的集合的帶寬使用和分配給hbt中的根節(jié)點和多個節(jié)點的帶寬限制,來確定用于與業(yè)務類別相關聯(lián)的各個單獨流的集合的可用帶寬。在操作1153處,基于用于與業(yè)務類別相關聯(lián)的各個單獨流的集合的可用帶寬來向與業(yè)務類別相關聯(lián)的各個單獨流的集合分配帶寬。在操作1154處,向qos管理器模塊330發(fā)送指示分配的帶寬的帶寬響應。對于各種實施方式,qos流響應3402表示指示分配的帶寬的帶寬響應。
圖11g是示出了根據(jù)一個實施方式的用于確定每個流的帶寬響應的示例性方法的流程圖1160。流程圖1160包括操作1161-1164。在操作1161處,qos管理器模塊330接收指示分配的帶寬的帶寬響應。在各種實施方式中,bw集合響應3302表示指示分配的帶寬的帶寬響應。在操作1162處,基于應用優(yōu)先級分類,對分配給與業(yè)務類別相關聯(lián)的各個單獨流的集合的帶寬的百分比份額進行分配,該應用優(yōu)先級分類與關聯(lián)于業(yè)務類別的各個單獨流的集合中的各個單獨流相關聯(lián)。在操作1163處,將來自所分配的百分比份額的流份額分配給來自與業(yè)務類別相關聯(lián)的各個單獨流的集合的各個單獨流。在操作1164處,將指示分配的流份額的帶寬響應發(fā)送至wm模塊340。在各種實施方式中,qos流響應3402表示指示分配的流份額的帶寬響應。
圖11h是示出了根據(jù)一個實施方式的用于為單獨流生成窗口大小的示例性方法的流程圖。流程圖1170包括操作1171-1172。在操作1171處,wm模塊340接收指示分配的流份額的帶寬響應。在各種實施方式中,qos流響應3402表示指示分配的流份額的帶寬響應。在操作1172處,針對第一單獨流生成要通告至發(fā)送主機的窗口大小wa。在各種實施方式中,wa表示要通告至發(fā)送主機的窗口大小。
圖12是示出了根據(jù)一個實施方式的用于管理與服務器機器相關聯(lián)的流的集合的帶寬的示例性方法的流程圖1200。流程圖1200包括操作1201-1203。
操作1201包括由bw管理器模塊通過向業(yè)務類別分配帶寬限制來管理與服務器機器相關聯(lián)的流的集合的、業(yè)務類別帶寬。在各種實施方式中,流中的每一個表示第一主機與第二主機之間的端到端連接。在另一實施方式中,業(yè)務類別包括表示hbt的最低級別的業(yè)務類別的葉業(yè)務子類別。
在操作1202處,qos管理器模塊330使用機器的處理器基于對業(yè)務類別的分配的帶寬限制,將應用優(yōu)先級份額分配給葉業(yè)務子類別和與應用優(yōu)先級份額相關聯(lián)的流份額。
在操作1203,wm模塊340通過調整通告至第一主機的窗口大小wa管理單獨流的帶寬,通告的窗口大小wa控制第一主機向第二主機傳輸數(shù)據(jù)包的速率,通告的窗口大小wa基于來自qos管理器模塊330的分配的流份額。
在示例性實施方式中,通過bw管理器模塊330管理流的集合的帶寬包括:創(chuàng)建多個節(jié)點,節(jié)點中的每一個表示hbt中的業(yè)務類別中的一個;創(chuàng)建與多個節(jié)點中的每一個相關聯(lián)的bw管理器;向節(jié)點分配min值,min值表示在配置期間分配給與節(jié)點處的業(yè)務類別相關聯(lián)的流的集合的帶寬預留。在其他實施方式中,在操作期間,bw管理器模塊330比較與節(jié)點處的業(yè)務類別相關聯(lián)的流的集合的當前使用與分配給節(jié)點的min值;并且識別預計何時與節(jié)點處的業(yè)務類別相關聯(lián)的流的集合的當前使用超過分配給節(jié)點的min值。
在另一示例性實施方式中,通過bw管理器模塊330管理流的集合的帶寬包括從與關聯(lián)于第一業(yè)務類別相關聯(lián)的第一節(jié)點的帶寬管理器接收帶寬請求(例如,qos集合請求3301);從與第一業(yè)務類別相關聯(lián)的分配的帶寬限制確定可用帶寬;并且將來自第一業(yè)務類別的可用帶寬重新分配給與第一節(jié)點相關聯(lián)的帶寬管理器。
某些實施方式在本文中描述為包括邏輯或多個組件、模塊或機構。模塊可以構成軟件模塊(例如,在機器可讀介質上或傳輸信號中實現(xiàn)的代碼)或硬件模塊。在各種實施方式中,圖1-圖10中描述的模塊例如特別地配置為執(zhí)行說明書中描述的操作。“硬件模塊”是能夠執(zhí)行某些操作的有形單元并且可以以某種物理方式配置或布置。在各種示例性實施方式中,一個或多個計算機系統(tǒng)(例如,獨立計算機系統(tǒng)、客戶端計算機系統(tǒng)或服務器計算機系統(tǒng))或計算機系統(tǒng)的一個或多個硬件模塊(例如,處理器或一組處理器)可以由軟件(例如,應用或應用部分)配置為操作以執(zhí)行如本文所述的某些操作的硬件模塊。
在一些實施方式中,硬件模塊可以以機械、電子或其任何合適的組合的方式來實現(xiàn)。例如,硬件模塊可包括永久配置為執(zhí)行某些操作的專用電路或邏輯。例如,硬件模塊可以是專用處理器,諸如現(xiàn)場可編程門陣列(fpga)或專用集成電路(asic)。硬件模塊還可包括由軟件臨時配置以執(zhí)行某些操作的可編程邏輯或電路。例如,硬件模塊可包括包含在通用處理器或其他可編程處理器內的軟件。應當理解,在專用和永久配置的電路中或在臨時配置的電路(例如,由軟件配置)中機械地實現(xiàn)硬件模塊的決定可以基于成本和時間考慮來驅動。
因此,短語“硬件模塊”應理解為包括有形實體,即物理構造、永久配置(例如,硬連線)或臨時配置(例如,編程)從而以某種方式操作或執(zhí)行本文所述的某些操作的實體。如本文中使用的,“硬件實現(xiàn)模塊”指硬件模塊??紤]到其中硬件模塊是臨時配置(例如,編程)的實施方式,硬件模塊中的每一個不需要在任何一個時間段配置或實例化。例如,在硬件模塊包括由軟件配置成為專用處理器的通用處理器的情況下,通用處理器可以配置為在不同時間分別為不同的專用處理器(例如,包括不同的硬件模塊)。因此,軟件可以配置特定的處理器或者多個處理器,例如,以在一個時間段構成特定的硬件模塊,并在不同的時間段構成不同的硬件模塊。
硬件模塊可以向其他硬件模塊提供信息和從其他硬件模塊接收信息。因此,所描述的硬件模塊可以認為是通信耦合的。在多個硬件模塊同時存在的情況下,可以通過在兩個或多個硬件模塊之間的信號傳輸(例如,通過適當?shù)碾娐泛涂偩€)獲得通信。在其中多個硬件模塊在不同時間配置或實例化的實施方式中,可以例如通過存儲和檢索多個硬件模塊訪問的存儲器結構中的信息來實現(xiàn)這種硬件模塊之間的通信。例如,一個硬件模塊可以執(zhí)行操作并將該操作的輸出存儲在其通信耦合到的存儲器設備中。然后,另外的硬件模塊可以在稍后的時間訪問存儲器設備以檢索和處理存儲的輸出。硬件模塊還可以發(fā)起與輸入或輸出設備的通信,并且可以對資源(例如,信息的集合)進行操作。
至少部分地由臨時配置(例如,通過軟件)或永久配置為執(zhí)行相關操作的一個或多個處理器來執(zhí)行本文描述的示例性方法的各種操作。無論是臨時還是永久配置,這些處理器可以構成操作以執(zhí)行本文所述的一個或多個操作或功能的處理器實現(xiàn)的模塊。如本文所使用的,“處理器實現(xiàn)的模塊”是指使用一個或多個處理器實現(xiàn)的硬件模塊。
類似地,本文描述的方法可以至少部分地由處理器實現(xiàn),其中,特定處理器或多個處理器是硬件的實例。例如,方法的至少一些操作可以由一個或多個處理器或處理器實現(xiàn)的模塊執(zhí)行。此外,一個或多個處理器還可以操作以支持在“云計算”環(huán)境中或作為“軟件即服務”(saas)的相關操作的性能。例如,至少一些操作可以由一組計算機(作為包括處理器的機器的實例)來執(zhí)行,這些操作可以經由網絡(例如,互聯(lián)網)以及經由一個或多個適當?shù)慕涌?例如,api)訪問。
某些操作的性能可在處理器之間分配,不僅駐留在單個機器內,而且部署在多臺機器上。在一些示例性實施方式中,處理器或處理器實現(xiàn)的模塊可以位于單個地理位置(例如,在家庭環(huán)境、辦公環(huán)境或服務器群內)。在其他示例性實施方式中,處理器或者處理器實現(xiàn)的模塊可以分布在多個地理位置處。
圖13是示出了可以安裝在上述任何一個或多個設備上的軟件1302的架構的框圖1300。圖13僅是軟件架構的非限制性實例,并且應當理解,可以實現(xiàn)許多其他架構以促進本文所描述的功能。軟件1302可以在諸如圖14的包括處理器1410、存儲器1430和i/o組件1450的機器1400的硬件上執(zhí)行。在圖13的示例性架構中,軟件1302可以概念化為每層可以提供特定功能的疊層。例如,軟件1302可包括諸如操作系統(tǒng)1304、庫1306、架構1308和應用1310的層。在操作上,應用1310可以通過軟件棧來啟用api調用1312,并響應于api調用1312接收消息1314。
操作系統(tǒng)1304可以管理硬件資源并且提供公共服務。例如,操作系統(tǒng)1304可包括kemel1320、服務1322、及驅動器1324。kemel1320可以作為硬件與其他軟件層之間的抽象層。例如,kemel1320可以負責存儲器管理、處理器管理(例如,調度)、組件管理、網絡、安全設置等。服務1322可以為其他軟件層提供其他共用服務。驅動器1324可以負責控制或與下層硬件相接。例如,驅動器1324可包括顯示驅動器、相機驅動器、
庫1306可以提供應用1310可利用的低級公共基礎設施。庫1306可包括可以提供諸如存儲器分配功能、字符串操縱功能、數(shù)學功能等功能的系統(tǒng)庫1330(例如,c標準庫)。此外,庫1306可包括諸如媒體庫(例如,支持諸如mpreg4、h.264、mp3、aac、amr、jpg、png的各種媒體格式的呈現(xiàn)和操縱的庫);圖形庫(例如,可用于在顯示器上呈現(xiàn)2d和3d圖形內容的opengl架構)、數(shù)據(jù)庫庫(例如,可能提供各種相關數(shù)據(jù)庫功能的sqlite)、web庫(例如,可提供web瀏覽功能的webkit)等的api庫1332。庫1306還可包括各種各樣的其他庫1334,以向應用1310提供許多其他api。
架構1308可以提供應用1310可利用的高級公共基礎設施。例如,架構1308可以提供各種圖形用戶界面(gui)功能、高級資源管理、高級定位服務等。架構1308可以提供可由應用1310利用的各種其他api,其中一些應用可以是專用于特定的操作系統(tǒng)或平臺的。
應用1310包括家庭應用1350、聯(lián)系人應用1352、瀏覽器應用1354、書籍閱讀器應用1356、定位應用1358、媒體應用1360、消息應用1362、游戲應用1364以及各種種類的其他應用,如第三方應用1366。在具體實例中,第三方應用1366(例如,由特定平臺的供應商之外的實體使用androidtm或iostm軟件開發(fā)工具包(sdk)開發(fā)的應用)可以是在移動操作系統(tǒng)(諸如iostm,androidtm,
圖14是示出根據(jù)一些示例性實施方式的機器1400的組件的框圖,這些組件能夠從機器可讀介質(例如,機器可讀存儲介質)讀取指令并執(zhí)行本文所論述的任何一種或多種方法。具體地,圖14示出了計算機系統(tǒng)的示例性形式的機器1400的示意圖,在計算機系統(tǒng)內,可以執(zhí)行用于使機器1400執(zhí)行本文論述的任何一種或多種方法的指令1416(例如,軟件、程序、應用、小程序,應用軟件或其他可執(zhí)行代碼)。在可替代的實施方式中,機器1400作為單機設備操作或者與其他機器耦合(例如,網絡化)。在聯(lián)網部署中,機器1400可以在服務器-客戶端網絡環(huán)境中以服務器機器或客戶端機器的能力操作,或在對等(或分布式)網絡環(huán)境中作為對等機器操作。機器1400可包括但不限于服務器計算機、客戶端計算機、pc、平板計算機、膝上型計算機、上網本、機頂盒(stb)、pda、娛樂媒體系統(tǒng)、蜂窩電話、智能電話、移動設備、可穿戴設備(例如,智能手表)、智能家居設備(例如,智能電器)、其他智能設備、網絡設備、網絡路由器、網絡交換機、網橋或能夠順序地或以其他方式執(zhí)行指令1416的任何機器,指令指定由機器1400采取的動作。此外,雖然僅示出了單個機器1400,但是術語“機器”還應認為包括單獨地或共同執(zhí)行指令1416以執(zhí)行本文所論述的任何一種或多種方法的機器1400的集合。
機器1400可包括處理器1410、存儲器1430和輸入/輸出(i/o)組件1450,其可被配置為經由總線1402彼此通信。在示例性實施方式中,處理器1410(例如,中央處理單元(cpu)、精簡指令集計算(risc)處理器、復雜指令集計算(cisc)處理器、圖形處理單元(gpu)、數(shù)字信號處理器(dsp)、專用集成電路(asic)、射頻集成電路(rfic)、其他處理器或其任何合適的組合)可包括例如可以執(zhí)行指令1416的處理器1412和處理器1414。術語“處理器”旨在包括可包括可同時執(zhí)行指令的兩個或多個獨立處理器(也稱為“核”)的多核處理器。盡管圖14示出了多個處理器1410,但機器1400可包括具有單個核的單個處理器、具有多個核的單個處理器(例如,多核處理器)、具有單個核的多個處理器、具有多個核的多個處理器或其任何組合。
存儲器1430可包括經由總線1402可訪問處理器1410的主存儲器1432、靜態(tài)存儲器1434和存儲單元1436。存儲單元1436可包括機器可讀介質1438,在其上存儲了體現(xiàn)本文所述的任何一種或多種方法或功能的指令1416。指令1416在其由機器1400執(zhí)行期間還可以完全或者至少部分地駐留在主存儲器1432內、在靜態(tài)存儲器1434內、在至少一個處理器1410(例如,在處理器的高速緩沖存儲器內)內或其任何適當?shù)慕M合中。因此,主存儲器1432、靜態(tài)存儲器1434以及處理器1410可以認為是機器可讀介質1438。
如本文所使用的,術語“存儲器”是指能夠臨時或永久地存儲數(shù)據(jù)的機器可讀介質1438,并且可認為包括但不限于隨機存取存儲器(ram)、只讀存儲器(rom)、緩沖存儲器、閃存和高速緩沖存儲器。雖然機器可讀介質1438在示例性實施方式中示出為單個介質,但是術語“機器可讀介質”應被視為包括能夠存儲指令1416的單個介質或多個介質(例如,集中式或分布式數(shù)據(jù)庫或相關聯(lián)的高速緩存存儲器和服務器)。術語“機器可讀介質”還應視為包括能夠存儲由機器(例如,機器1400)執(zhí)行的指令(例如,指令1416)的任何介質或多個介質的組合,使得當由機器1400的一個或多個處理器(例如,處理器1410)執(zhí)行指令時,指令使機器1400執(zhí)行本文所描述的任何一種或多種方法。因此,“機器可讀介質”是指單個存儲裝置或設備,以及包括多個存儲裝置或設備的“基于云”的存儲系統(tǒng)或存儲網絡。因此,術語“機器可讀介質”應視為包括但不限于以固態(tài)存儲器(例如,閃存)、光學介質、磁性介質、其他非易失性存儲器(例如,可擦除可編程只讀存儲器(eprom))或其任何合適的組合的形式的一個或多個數(shù)據(jù)儲存庫。術語“機器可讀介質”特別排除非法定信號本身。
i/o組件1450可包括用于接收輸入、提供輸出、產生輸出、傳輸信息、交換信息、捕獲測量等的各種各樣的組件。將理解的是,i/o組件1450可包括圖14中未示出的許多其他組件。i/o組件1450根據(jù)功能數(shù)據(jù)包,其僅用于簡化以下討論,并且數(shù)據(jù)包絕不是限制性的。在各種示例性實施方式中,i/o組件1450可包括輸出組件1452和輸入組件1454。輸出組件1452可包括視覺組件(例如,諸如等離子體顯示板(pdp)、發(fā)光二極管(led)顯示器、液晶顯示器(lcd)、投影儀或陰極射線管(crt)的顯示器)、聲學組件(例如,揚聲器)、觸覺組件(例如,振動馬達)、其他信號發(fā)生器等。輸入組件1454可包括字母數(shù)字輸入組件(例如,鍵盤、配置為接收字母數(shù)字輸入的觸摸屏、照片光學鍵盤或其他字母數(shù)字輸入組件)、基于點的輸入組件(例如,鼠標、觸摸板、跟蹤球、操縱桿、運動傳感器或其他指示儀器)、觸覺輸入組件(例如,物理按鈕、提供觸摸或觸摸手勢的位置和力量的觸摸屏、或其他觸覺輸入組件)、音頻輸入組件(例如,麥克風)等。
在又一示例性實施方式中,i/o組件1450可包括生物測定組件1456、運動組件1458、環(huán)境組件1460、或位置組件1462、或各種其他組件。例如,生物測定組件1456可包括檢測表達(例如手表達、面部表情、聲音表達、身體手勢或眼睛跟蹤)、測量生物信號(例如,血壓、心率、體溫、汗液、或腦電波)、識別人(例如,語音識別、視網膜識別、面部識別、指紋識別、或基于腦電圖的識別)等的組件。運動組件1458可包括加速度傳感器組件(例如,加速計)、重力傳感器組件、旋轉傳感器組件(例如,陀螺儀)等。環(huán)境組件1460可包括例如亮度傳感器組件(例如,光度計)、溫度傳感器組件(例如,檢測環(huán)境溫度的一個或多個溫度計)、濕度傳感器組件、壓力傳感器組件(例如,氣壓計)、聲學傳感器組件(例如,檢測背景噪聲的一個或多個麥克風)、接近傳感器組件(例如,檢測附近物體的紅外傳感器)、氣體傳感器(例如,氣體檢測傳感器,為安全起見檢測危險氣體的濃度或測量大氣中的污染物)、或可以提供對應于周圍物理環(huán)境的指示、測量或信號的其他組件。位置組件1462可包括位置傳感器組件(例如,gps接收器組件)、高度傳感器組件(例如,高度計或檢測氣壓的氣壓計,可以從氣壓得出高度)、方位傳感器組件(例如,磁力計)等。
通信可以使用多種技術實現(xiàn)。i/o組件1450可包括可操作以分別通過耦合1482和耦合1472將機器1400耦合到網絡1480或設備1470的通信組件1464。例如,通信組件1464可包括網絡接口組件或者與網絡1480相連接的其他合適的設備。在又一實例中,通信組件1464可包括有線通信組件、無線通信組件、蜂窩通信組件、近場通信(nfc)組件、
此外,通信組件1464可以檢測標識符或包括可操作以檢測標識符的組件。例如,通信組件1464可包括射頻識別(rfid)標簽讀取器組件、nfc智能標簽檢測組件、光學讀取器組件(例如,用于檢測一維條形碼(例如通用產品代碼(upc)條形碼)、多維條形碼(諸如快速響應(qr)碼,阿茲臺克碼,數(shù)據(jù)矩陣,數(shù)據(jù)圖,最大碼,pdf417,超碼,壓縮空間符號法(rss)-2d條形碼和其他光碼)的光學傳感器)、聲測組件(例如,用于識別標記音頻信號的麥克風)。此外,可以經由通信組件1464得出各種信息,諸如經由互聯(lián)網協(xié)議(ip)地理位置的位置、經由
在各種示例性實施方式中,網絡1480的一個或多個部分可以是自組織網絡、內聯(lián)網、外聯(lián)網、vpn、lan、wlan、wan、wwan、man、互聯(lián)網、互聯(lián)網的一部分、pstn的一部分、pots網絡、蜂窩電話網絡、無線網絡、
指令1416可以經由網絡接口設備(例如,包括在通信組件1464中的網絡接口組件)使用傳輸介質并且利用多個公知的傳輸協(xié)議(例如,超文本傳輸協(xié)議(http))中的任何一個通過網絡1480傳輸或接收。類似地,指令1416可以經由與設備1470的耦合1472(例如,對等耦合)使用傳輸介質傳輸或接收。術語“傳輸介質”應視為包括能夠存儲、編碼或攜帶供機器1400執(zhí)行的指令1416的任何無形介質,并且包括數(shù)字或模擬通信信號或其他無形介質以促進這種軟件的通信。
此外,機器可讀介質1438是非暫時性的(換言之,不具有任何短暫信號),因為它不體現(xiàn)傳播信號。然而,將機器可讀介質1438標記為“非暫時”不應解釋為意味著介質1438不能移動;應該認為介質1438是可從一個物理位置運送到另一個物理位置。另外,由于機器可讀介質1438是有形的,所以可以認為介質1438是機器可讀設備。
在本說明書中,多個實例可以實現(xiàn)被描述為單個實例的組件、操作或結構。雖然將一個或多個方法的單獨操作示出和描述為分離的操作,但可以并行地執(zhí)行單獨操作中的一個或多個,并且不需要以所示的順序執(zhí)行操作。在示例性配置中呈現(xiàn)為分離組件的結構和功能可以實現(xiàn)為組合結構或組件。類似地,呈現(xiàn)為單個組件的結構和功能可以實現(xiàn)為分離組件。這些和其他變化、修改、添加和改進落入本文主題的范圍內。
雖然已經參考具體示例性實施方式描述了本發(fā)明主題的概述,但是在不脫離本公開內容的實施方式的更廣泛范圍的情況下,可以對這些實施方式進行各種修改和改變。僅為了方便起見,本發(fā)明主題的這些實施方式在本文中可以單獨地或集體地稱為術語“發(fā)明”,而不意指在事實上公開了多于一個發(fā)明的情況下,將本申請的范圍自愿地限制為任何單個公開內容或者發(fā)明構思。
本文示出的實施方式足夠詳細地描述,以使本領域技術人員能夠實踐所公開的教導??梢允褂貌钠渲袑С銎渌麑嵤┓绞?,使得可以在不脫離本公開內容的范圍的情況下進行結構和邏輯替換和改變。因此,不應認為具體描述是限制性的,并且各種實施方式的范圍僅由所附權利要求以及這些權利要求所賦予的等同物的完整范圍來限定。
如本文所使用的,術語“或”可以解釋為包含或排他的意義。此外,針對本文中所描述的資源、操作或結構提供的多個實例可以作為單個實例。此外,各種資源、操作、模塊、引擎、和數(shù)據(jù)存儲之間的邊界有些是任意的,并且在特定說明性配置的上下文中示出了特定的操作。可以設想功能的其他配置,并且這些可以落入本公開內容的各種實施方式的范圍內。通常,示例性配置中作為分離資源呈現(xiàn)的結構和功能可以實現(xiàn)為組合結構或資源。類似地,呈現(xiàn)為單個資源的結構和功能可以實現(xiàn)為分離資源。這些和其他變化、修改、添加和改進落入由所附權利要求所表示的本公開內容的實施方式的范圍內。因此,說明書和附圖應被看作是示例性的,而不是限制性意義的。