本發(fā)明屬于rdma網(wǎng)絡擁塞控制算法,具體為一種基于rdma的差異化擁塞控制方法及硬件控制器系統(tǒng)。
背景技術(shù):
1、隨著數(shù)據(jù)中心規(guī)模的擴大,傳統(tǒng)tcp/ip協(xié)議因內(nèi)核協(xié)議處理延遲高、內(nèi)存拷貝開銷大等問題難以滿足高吞吐需求。rdma技術(shù)通過零拷貝、內(nèi)核旁路和cpu卸載機制顯著降低了通信延遲,但其高吞吐特性易引發(fā)網(wǎng)絡擁塞。當前主流擁塞控制包括顯式擁塞通知(explicit?congestion?notification,ecn)、往返時間(round?trip?time,rtt)和帶內(nèi)網(wǎng)絡遙測(in-band?network?telemetry,int)的擁塞控制?,F(xiàn)有技術(shù)中,基于rtt或int的擁塞控制算法雖有改進,但存在部署復雜度高或依賴額外硬件支持的問題?;趀cn的擁塞控制算法dcqcn由于其部署成本低、反饋響應快的特點成為應用最為廣泛的擁塞控制算法。
2、但是dcqcn算法存在以下缺陷:一方面dcqcn算法的公平性調(diào)控存在很大局限,對所有流量采用統(tǒng)一降速和加速策略,無法區(qū)分高優(yōu)先級與低優(yōu)先級業(yè)務,導致關(guān)鍵流量因低優(yōu)先級流競爭而帶寬不足、延遲增加;另一方面dcqcn算法動態(tài)適應性差,固定參數(shù)調(diào)節(jié)無法應對多樣化流量場景,尤其在高負載場景下網(wǎng)絡鏈路利用率提升有限。另外只依靠軟件實現(xiàn)擁塞控制算法,將會存在擁塞控制響應不及時從而進一步加劇網(wǎng)絡擁塞的風險,硬件控制器是當下的主流,當前硬件控制器也存在支持擁塞連接數(shù)較少、實現(xiàn)并不是完全硬化等問題。
技術(shù)實現(xiàn)思路
1、本發(fā)明的目的在于:為了解決上述提出的問題,提供一種基于rdma的差異化擁塞控制方法及硬件控制器系統(tǒng)。
2、本發(fā)明采用的技術(shù)方案如下:一種基于rdma的差異化擁塞硬件控制器系統(tǒng),其特征在于:所述系統(tǒng)包括:
3、擁塞管理模塊,用于完成網(wǎng)絡中擁塞流編號的綁定、匹配和讀取,內(nèi)部地址轉(zhuǎn)換,參數(shù)存儲,速率計算以及注冊計時事件功能,動態(tài)支持網(wǎng)絡中所有擁塞流并且最大支持1024個并發(fā)擁塞流。
4、計時管理模塊,用于完成計時事件時間存儲、計時事件管理的功能。
5、數(shù)據(jù)包發(fā)送模塊,用于實現(xiàn)網(wǎng)絡數(shù)據(jù)包中組包、發(fā)包、解析數(shù)據(jù)包功能。所述數(shù)據(jù)包發(fā)送模塊輸入端和數(shù)據(jù)包接收模塊輸出端相連。
6、數(shù)據(jù)包接收模塊,用于實現(xiàn)數(shù)據(jù)包接收并在收到帶有ecn標記的數(shù)據(jù)包時,向數(shù)據(jù)包發(fā)送模塊發(fā)送擁塞通知報文。
7、調(diào)度模塊,用于接收到擁塞控制模塊的計算速率后,調(diào)整數(shù)據(jù)包發(fā)送模塊發(fā)端的發(fā)送速率。所述調(diào)度模塊的輸出端和數(shù)據(jù)包發(fā)送模塊的輸入端相連。
8、apb總線,用于模塊初始化配置,通過配置寄存器實現(xiàn)。
9、交換機:用于數(shù)據(jù)包轉(zhuǎn)發(fā)以及在其出口隊列長度超過閾值時進行概率性的ecn標記。所述交換機輸入端和數(shù)據(jù)包發(fā)送模塊輸出端相連,所述交換機輸出端和數(shù)據(jù)包接收模塊輸入端相連。
10、在一優(yōu)選的實施方式中,所述擁塞管理模塊分別和apb總線、計時管理模塊雙向通信,所述擁塞管理模塊的輸入端和數(shù)據(jù)包接收模塊和數(shù)據(jù)包發(fā)送模塊的輸出端相連,所述擁塞管理模塊的輸出端和調(diào)度模塊的輸入端相連。
11、在一優(yōu)選的實施方式中,所述擁塞管理模塊包括:
12、流編號/內(nèi)部地址轉(zhuǎn)換模塊,用于完成網(wǎng)絡中擁塞流編號的綁定、匹配和讀取。
13、參數(shù)存儲模塊,用于存儲建議速率rc、目標速率rt、降速因子α、字節(jié)計數(shù)超時次數(shù)bc、計時事件超時次數(shù)t、最近一次降速的時刻tlatest、累計發(fā)送的數(shù)據(jù)包長度pkt_length、優(yōu)先級字段dscp。
14、速率計算模塊,用于查表計算加速或者降速速率。
15、在一優(yōu)選的實施方式中,所述計時管理模塊包括:
16、計時事件存儲模塊,用于存儲計時事件指針和對應剩余時間。
17、三級計時引擎模塊,用于計時事件管理,通過分級計時實現(xiàn)216個時間單位的并行計時,對于任意一個開始計時的時刻是p且剩余時間為q的計時事件,它將在系統(tǒng)時間p+q時刻完成計時,p+q的和可以分別代表一個任務在每一級計時引擎中超時的時刻,最后一級計時引擎的精度僅為1個計時周期可以忽略,因此采用三級計時引擎。
18、在一優(yōu)選的實施方式中,所述控制方法收到擁塞通知情況的處理步驟包括:
19、(1)數(shù)據(jù)包發(fā)送模塊進行數(shù)據(jù)包組包并將數(shù)據(jù)包發(fā)送給交換機。
20、(2)交換機轉(zhuǎn)發(fā)數(shù)據(jù)包,當出口隊列長度超過閾值時進行ecn概率性標記。
21、(3)數(shù)據(jù)包接收模塊若收到帶有ecn標記的數(shù)據(jù)包,進入步驟(3),向數(shù)據(jù)包發(fā)送模塊發(fā)送擁塞通知報文。若未收到帶有ecn標記的數(shù)據(jù)包則代表該數(shù)據(jù)流未發(fā)生擁塞。
22、(4)數(shù)據(jù)包發(fā)送模塊解析擁塞通知報文,向擁塞管理模塊發(fā)送包含流編號和dscp優(yōu)先級字段的擁塞通知。
23、(5)流編號/內(nèi)部地址轉(zhuǎn)換模塊收到擁塞通知并使用流編號進行匹配,若匹配成功則代表該數(shù)據(jù)流之前遭遇過擁塞;若匹配失敗則代表該數(shù)據(jù)流第一次遭遇擁塞,需要進行流編號/內(nèi)部地址轉(zhuǎn)換模塊空閑地址查詢。最終經(jīng)過內(nèi)部處理得到降速后速率。
24、(6)將計算速率從步驟(4)得到的流編號發(fā)送到調(diào)度模塊。
25、(7)調(diào)度模塊收到新的速率對該數(shù)據(jù)流重新調(diào)整調(diào)度策略,并通知數(shù)據(jù)包發(fā)送模塊對發(fā)送速率進行調(diào)整。
26、在一優(yōu)選的實施方式中,所述步驟(5)中,所述的內(nèi)部處理具體包括以下步驟:
27、(5a)若匹配成功通過流編號/內(nèi)部地址轉(zhuǎn)換模塊得到內(nèi)部地址,讀取參數(shù)存儲模塊中參數(shù);若匹配失敗,搜尋流編號/內(nèi)部地址轉(zhuǎn)換模塊的空閑地址,若存在空閑地址,進入步驟(5a),將流編號寫入流編號/內(nèi)部地址轉(zhuǎn)換模塊,讀取參數(shù)存儲模塊的參數(shù),向計時管理模塊注冊包含內(nèi)部地址和剩余時間的計時事件通知,若不存在空閑地址則將擁塞通知丟棄。
28、(5b)將參數(shù)傳輸?shù)剿俾视嬎隳K并結(jié)合步驟(4)得到的dscp優(yōu)先級字段進行降速過程的查表計算。
29、(5c)將更新之后的參數(shù)寫入?yún)?shù)存儲模塊。
30、在一優(yōu)選的實施方式中,所述控制方法收到字節(jié)計數(shù)情況的處理步驟包括:
31、(1)數(shù)據(jù)包發(fā)送模塊進行數(shù)據(jù)包組包,并將包含數(shù)據(jù)包長度、對應流編號和dscp優(yōu)先級字段的字節(jié)計數(shù)通知發(fā)送給擁塞管理模塊。
32、(2)流編號/內(nèi)部地址轉(zhuǎn)換模塊收到字節(jié)計數(shù)通知并使用流編號進行匹配,若匹配成功進入步驟(2),代表該數(shù)據(jù)流之前遭遇過擁塞,并得到內(nèi)部地址;若匹配失敗代表該數(shù)據(jù)流并未遭遇擁塞,丟棄這筆字節(jié)計數(shù)通知。
33、(3)通過內(nèi)部地址讀取參數(shù)存儲模塊中參數(shù),若pkt_length與步驟(1)得到的數(shù)據(jù)包長度相加超過閾值,進入步驟(4);若pkt_length與步驟(1)得到的數(shù)據(jù)包長度相加未超過閾值,則進入步驟(5)。
34、(4)將參數(shù)傳輸?shù)剿俾视嬎隳K進行加速過程的查表計算。
35、(5)將更新之后的參數(shù)寫入?yún)?shù)存儲模塊。
36、(6)將計算速率從步驟(1)得到的流編號發(fā)送到調(diào)度模塊。
37、(7)調(diào)度模塊收到新的速率對該數(shù)據(jù)流重新調(diào)整調(diào)度策略,并通知數(shù)據(jù)包發(fā)送模塊對發(fā)送速率進行調(diào)整。
38、在一優(yōu)選的實施方式中,所述控制方法收到計時事件情況的處理步驟包括:
39、(1)計時管理模塊在計時事件完成時將包含內(nèi)部地址的計時事件完成通知發(fā)送給擁塞管理模塊。
40、(2)流編號/內(nèi)部地址轉(zhuǎn)換模塊收到計時事件完成通知得到內(nèi)部地址讀取流編號并通過內(nèi)部地址讀取參數(shù)存儲模塊中參數(shù)。
41、(3)將參數(shù)傳輸?shù)剿俾视嬎隳K進行加速過程的查表計算。
42、(4)將更新之后的參數(shù)寫入?yún)?shù)存儲模塊。
43、(5)將計算速率和從步驟(1)得到的流編號發(fā)送到調(diào)度模塊。
44、(6)調(diào)度模塊收到新的速率對該數(shù)據(jù)流重新調(diào)整調(diào)度策略,并通知數(shù)據(jù)包發(fā)送模塊對發(fā)送速率進行調(diào)整。
45、在一優(yōu)選的實施方式中,所述步驟(3)中,所述的內(nèi)部處理具體包括以下步驟:
46、(3a)若計算速率達到最大速率,通過內(nèi)部地址清除流編號/內(nèi)部地址轉(zhuǎn)換模塊對應的流編號;若計算速率未達到最大速率,進入步驟(3b)。
47、(3b)向計時管理模塊注冊包含內(nèi)部地址和剩余時間的計時事件通知。
48、在一優(yōu)選的實施方式中,所述控制方法的計時模塊處理步驟包括:
49、(1)收到情況1步驟(5a)和情況3步驟(3b)的計時事件通知后,將內(nèi)部地址(計時模塊指針等同于內(nèi)部地址)和剩余時間寫入計時事件存儲模塊。
50、(2)通過當前系統(tǒng)時間校準剩余時間,并分配到三級計時引擎的時隙當中,每個時隙維護事件鏈表,新事件通過頭尾指針接入鏈表,空時隙頭尾指針無效,存在多個事件時頭指針指向下一個指針,尾指針指向鏈尾。
51、(3)每個時隙在準點時刻更新待處理事件數(shù)(即該時間段內(nèi)注冊的事件數(shù)),按順序處理鏈表中的計時事件。
52、(4)若事件處理晚于準點時刻,重新計算剩余時間并調(diào)整到下一級時隙,三級引擎逐級處理事件直到剩余時間為0。
53、(5)當剩余時間為0時,對應計時事件完成,向擁塞管理模塊發(fā)送包含內(nèi)部地址的計時事件完成通知。
54、綜上所述,由于采用了上述技術(shù)方案,本發(fā)明的有益效果是:
55、1、本發(fā)明中,通過引入dscp優(yōu)先級字段實現(xiàn)了流量類型的差異化管控。傳統(tǒng)擁塞控制算法對所有流量采用統(tǒng)一調(diào)控策略,導致高優(yōu)先級業(yè)務與低優(yōu)先級業(yè)務競爭時資源分配不均。本方案通過將dscp值轉(zhuǎn)換為優(yōu)先級因子,并在速率調(diào)整過程中結(jié)合查表計算,使得高優(yōu)先級流量能夠獲得更積極的帶寬保障和更低的延遲。這種機制突破了傳統(tǒng)算法的完全公平性限制,能夠在擁塞發(fā)生時優(yōu)先滿足關(guān)鍵業(yè)務需求,同時提升網(wǎng)絡整體帶寬利用率。
56、2、本發(fā)明中,系統(tǒng)采用完全硬化的硬件控制器架構(gòu),顯著提升了處理效率和響應速度。通過將擁塞管理、計時管理和調(diào)度功能集成到專用硬件模塊中,避免了軟件實現(xiàn)帶來的計算延遲和主機資源占用。硬件模塊直接處理數(shù)據(jù)包解析、參數(shù)存儲和速率計算,無需依賴主機緩存或頻繁的總線數(shù)據(jù)傳輸,從而降低了處理延遲并提高了并行處理能力。這一設(shè)計使得系統(tǒng)能夠快速響應網(wǎng)絡擁塞事件,有效避免因反饋延遲導致的擁塞惡化。
57、3、本發(fā)明中,系統(tǒng)支持動態(tài)管理大量并發(fā)擁塞流,增強了網(wǎng)絡擁塞控制的擴展性和適應性。通過流編號與內(nèi)部地址的綁定機制以及參數(shù)存儲模塊的優(yōu)化設(shè)計,系統(tǒng)能夠?qū)崟r跟蹤并調(diào)整網(wǎng)絡中的擁塞流狀態(tài)。三級計時引擎的分級管理策略進一步提升了計時事件的處理效率,確保在高負載場景下仍能穩(wěn)定運行。這種設(shè)計使得系統(tǒng)能夠適應多樣化流量場景,同時為大規(guī)模數(shù)據(jù)中心提供了高效的擁塞緩解能力。