周萍
(南昌職業大學,江西 南昌 330599)
網絡擁塞控制策略是確保數據傳輸穩定性和網絡資源利用公平性的網絡系統關鍵模塊。傳輸控制協議(Transmission Control Protocol, TCP)是當前Internet等網絡主流的傳輸協議,TCP實現了大多數的擁塞控制機制。但是,隨著網絡功能和服務的發展,現有的TCP已經逐漸不適應當前網絡的需求。例如,TCP會將隨機的數據包丟失檢測為網絡擁塞,從而導致數據傳輸性能下降。對此,研究者們針對不同應用場景中的TCP協議提出了許多新穎的擁塞控制方法中。在動態且資源受限的網絡中計算合適的擁塞窗口是一個極具挑戰的問題。然而現有的擁塞控制機制無法很好地適應快速變化的網絡環境。對此,提出了CWARL,一種基于強化學習的擁塞窗口調整策略。CWARL(Congestion Window Adjustment based on Reinforcement Learning)在源節點進行在線訓練,并在可用時使用網絡內機制確定擁塞窗口的更新值。
CWARL策略利用發送者收集的統計數據來計算下一個擁塞窗口值。表1展示了本文選擇用來構建模型狀態空間的特征。其中,特征1到7是端到端的統計特征,特征8和9是網絡的統計特征。端到端的特征是由發送方在每個時間間隔內進行收集。網絡統計特征分別代表來自網絡的部分信息(特征8)和一個表示知識量的參數(特征9)。對于每個受控制的交換機,令為在給定時間間隔內接收到的數據包總數,而為傳出數據包的總數。然后將diff 定義為|-|。

表1 CWARL所使用的特征
部分網絡知識(PNK)代表了網絡已知擁塞程度的指標。PNK可以使用以下公式計算:PNK=max(diff,…,diff)。PNK顯示了當前的擁塞級別,即網絡中的丟失率。PNK可以通過協議和網絡測量應用程序(例如OpenFlow或NetFlow)進行測量得到。此外,將每個所選特征的個歷史窗口視為狀態,以充分預測網絡狀況并相應地調整擁塞窗口。提出的深度強化學習算法的神經網絡的輸入為一個×矩陣,將值設置為5。
擁塞窗口是連接狀態變量之一,TCP使用它來限制發送方在收到ACK之前可以傳輸的數據量。在有損鏈路中,當丟包發生后,TCP會通過過度地減少擁塞窗口來大幅度地降低傳輸速率,從而對端到端傳輸性能產生負面影響。因此,利用基于RL的在線訓練算法來正確更新擁塞窗口。CWARL的動作是用來確定擁塞窗口的改變量,擁塞窗口改變量所構成的集合很大,并且與RL系統的獎勵相關。所使用的動作集合為:={-10,-3,-1,0,1,3,10}。
CWARL動作集合的前三個選項以不同程度減小擁塞窗口的大小,而后三個選項將以不同的幅度增加擁塞窗口的大小。CWARL將擁塞窗口的初始值設置為10。CWARL學習如何根據經驗做出控制決策,因此無須必要的預編碼規則來適應各種網絡環境。擁塞控制模式的選擇依賴于效用函數,具體來說,發送方的效用是吞吐量和丟包率的函數,如式(1)所示:

其中是一個可調整的系數,決定了吞吐量和丟包率之間的重要性。每個發送者的目標是最大化其效用函數U。
圖1詳細地說明發送方執行的主要操作,收集到的指標被饋送到神經網絡,隨后CWARL啟動,如算法1所示。

圖1 CWARL概述

算法1 CWARL擁塞窗口更新1.S←源節點;2.D←目的節點;3.F←從S出發、以D為目的節點的流;4.收集時刻t流F的狀態s;5.cwnd*(t)←cwndPre(s, t);6.cwnd←cwnd*(t);
我們利用TCP Linux的API收集諸如時延和吞吐量的端到端通信狀態。關于網絡反饋,網絡測量代理通過控制底層拓撲計算PNK,并將其通知給發送者。獲取源和目的節點之間的完整路徑并不總是可能的,即使網絡反饋不完整或不可用,即神經網絡不使用網絡內特征,CWARL仍然可以提供有意義的結果。
CWARL會根據值表通過選擇動作來確定下一個擁塞窗口。預測下一個擁塞窗口值的算法如算法2所示。該算法利用狀態、動作和獎勵來選擇最佳值并更新值表。每當確認數據包到達的時候都會預測最佳擁塞窗口,以保證在擁塞避免階段對擁塞窗口進行充分刷新。然后更新狀態集以確保每個度量在任何時間間隔都有個歷史值。

算法2 cwndPre(s, t)算法1. r(t)←Ui=λi-δiλi(1/(1-pi)) ;2. Q(s, a)←Q(s, a)+α(r+γmaxa'Q(s', a')-Q(s, a));3.cwnd*(t) ←softmax(a, s, t);4.Return cwnd*(t);
CWARL充分考慮了網絡部分未知的實際場景,網絡可能需要多個網關的協作和協調,不穩定的網絡條件可能會隱藏網絡的信息。
設計和實現一個網絡系統,該系統將軟件定義網絡(SDN)控制器作為測量收集器并僅管理一些已部署的虛擬交換機。雖然在實現中使用了SDN控制器,但該系統并不局限于這種特定的網絡技術。控制器定期與交換機交互以收集有關發送和接收的數據包統計信息。然后,使用這些統計數據來學習和預測在給定擁塞級別的情況下要采取的端到端動作。 在此處的實現中,控制器以每秒一次的采樣率從所有交換機接收數據包的統計信息,以實現負載和信息新鮮度之間的折衷。
CWARL通過與測量代理(如SDN控制器)通信來獲取網絡狀態,以設置最優擁塞窗口。CWARL由兩個主要進程組成:一個進程在內核中運行,另一個在用戶空間中運行。運行在內核的進程利用Linux內核中的擁塞控制模塊中的函數來訪問TCP的底層擁塞控制功能。本內核實現可以作為可插入的擁塞控制算法進行安裝,并可以設置和獲取端到端的傳輸狀態(如序列號和RTT),并有效地計算吞吐量。
在用戶空間中運行的應用程序進程收集有關當前TCP的套接字信息,并使用它們來構建運行強化學習算法的深度神經網絡輸入矩陣。該模塊根據RL的反饋采取行動,并修改擁塞窗口以應對事件。
在內核級別存儲運行強化學習算法和保持與網絡控制器通信所需的狀態可能會很昂貴。而用戶空間應用程序可以利用更廣泛的庫集來滿足學習算法的需求。基于此,在用戶空間實現了擁塞控制算法的網絡管理組件,并通過Netlink服務在用戶空間和內核之間連接當前TCP套接字狀態。基于強化學習的擁塞控制器在固定周期內通過ACK統計網絡數據,并以異步的方式使用獨立的線程發送動作。
為了評估提出的CWARL,實驗評估部分將CWARL與3種現有的傳輸策略相比。其中,將Cubic作為端到端擁塞控制的代表,Aurora作為基于強化學習的擁塞控制的代表,ABC作為網絡內控制的代表。實驗部分使用虛擬網絡測試平臺和Mahimahi仿真器。通過Mininet實現了網絡命名空間,結合SDN技術,實現交換機與中央控制器交互。實驗還評估了真實主機的性能,并在GENI測試平臺上部署了CWARL。實驗采用兩個的公開數據集(用數據集1和數據集2表示),為上行鏈路和下行鏈路提供單獨的數據包傳輸。OpenFlow控制器只能從連接到SDN控制器的虛擬交換機中獲取信息。
圖2展示了CWARL與其他策略在吞吐量和時延方面的對比。在數據集1的情況下,如圖2(a)所示,CWARL具有較高的吞吐量、獲得較低的時延。與其他策略相比,CWARL實現了最好的綜合性能。CWARL獎勵函數的目標是實現高吞吐量和低丟包率,因此可以提高傳輸效率,降低時延。數據集2的結果與數據集1的結果相似,如圖2(b)所示。綜上所述,CWARL在吞吐量和延遲之間做出均衡,能獲得更好的綜合性能。

圖2 吞吐量和時延性能對比
圖3展示了隨著網絡知識變化的吞吐量和時延結果對比。由于Cubic和Aurora均為端到端的擁塞控制算法,因此他們的性能不受缺乏網絡知識的影響。由結果可知,隨著可用的部分網絡知識的增加,CWARL的吞吐量會大幅增加、延遲大幅度減少。

圖3 隨著網絡知識變化的性能對比
為了評估CWARL的實用性,在GENI測試平臺上部署了CWARL。圖4展示了CWARL策略與其他策略的對比結果。由結果可知,與其他策略相比,CWARL策略可以實現高吞吐量和低丟失率,有效地在兩者間取得了平衡。


圖4 吞吐量和丟包率性能對比
本文提出了一種基于強化學習的擁塞窗口調整策略——CWARL。通過實現CWARL策略,結合真實數據集驗證了CWARL的有效性。實驗結果表明,與現有的策略相比,CWARLs基本能夠更好地提高傳輸效率并降低時延和丟包率。在未來的研究中,將CWARL部署到真實的應用環境中,進一步評估驗證CWARL的性能和有效性,并對CWARL進行有針對性的改善。