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