廖彬彬 張廣興 刁祖龍 謝高崗
(?中國科學院計算技術(shù)研究所 北京100190)
(??中國科學院大學 北京100190)
(???中國科學院計算機網(wǎng)絡信息中心 北京100190)
多路徑傳輸控制協(xié)議[1](multi-path transport control protocol,MPTCP)自2013 年由互聯(lián)網(wǎng)工程任務組(Internet Engineering Task Force,IETF)標準化以來,已經(jīng)受到了工業(yè)界和學術(shù)界的廣泛關(guān)注和研究。由于其固有的多鏈路帶寬聚合能力和單鏈路故障恢復能力,MPTCP 已經(jīng)被應用于加速眾多的數(shù)據(jù)交互場景(如文件傳輸、Web 瀏覽和視頻推流等)。尤其在移動互聯(lián)網(wǎng)的背景下,內(nèi)核裝載MPTCP 的移動設備可以同時利用WiFi和蜂窩無線網(wǎng)絡來提高移動應用程序的網(wǎng)絡服務健壯性和傳輸質(zhì)量保障[2]。
影響MPTCP 整體性能的一個重要因素是其數(shù)據(jù)包調(diào)度程序的設計和實現(xiàn),它需要根據(jù)特定的策略在有效的傳輸控制協(xié)議(transport control protocol,TCP)子流上分配合適的數(shù)據(jù)包數(shù)量。已有的研究表明,錯誤的數(shù)據(jù)包調(diào)度決策將會導致MPTCP 嚴重的性能問題[3-4]。尤其在多變的無線網(wǎng)絡環(huán)境中,由于TCP 子流的狀態(tài)特別容易遭受網(wǎng)絡擁塞和數(shù)據(jù)包隨機丟失的影響[5],MPTCP 連接上的多條TCP子流之間的性能差異變得十分巨大。而這種網(wǎng)絡的異構(gòu)性主要表現(xiàn)為分發(fā)到較快子流上的數(shù)據(jù)包必須等待較慢子流上的數(shù)據(jù)包,這便造成了發(fā)送端數(shù)據(jù)的隊頭阻塞現(xiàn)象(head-of-line blocking,HoL)和接收端的數(shù)據(jù)包的亂序隊列問題(out-of-order queue size,OQS)。因此,如何最小化接收端的數(shù)據(jù)包OQS 成為提升MPTCP 整體性能的關(guān)鍵[6-7]。
實際上,當MPTCP 所有的子流都相對正?;虍悩?gòu)性不太明顯時,設計一個合理的數(shù)據(jù)包調(diào)度器便能夠?qū)崿F(xiàn)多子流的正常傳輸,并緩解MPTCP 的隊頭阻塞與亂序問題。然而,如果存在某些TCP 子流在網(wǎng)絡質(zhì)量上具有很高的多樣性時(如劇烈的丟包損耗、網(wǎng)絡擁塞或延遲抖動等),僅依靠調(diào)度器是無法適應這種異構(gòu)網(wǎng)絡的劇烈變化,并實現(xiàn)數(shù)據(jù)包的快速恢復的。而使用網(wǎng)絡編碼的方法可以根據(jù)TCP子流的網(wǎng)絡狀態(tài)實現(xiàn)超時或丟包的0-RTT 快速恢復[8]。因此,在進行數(shù)據(jù)包調(diào)度之前增加一個網(wǎng)絡編碼的過程[9-10],可以使得MPTCP 不僅能夠在相對穩(wěn)定的網(wǎng)絡環(huán)境中獲得可觀的性能提升,而且還能快速地適應網(wǎng)絡的劇烈變化。
然而,基于網(wǎng)絡編碼的數(shù)據(jù)包調(diào)度系統(tǒng)將主要面臨如下兩個挑戰(zhàn)。首先數(shù)據(jù)包的編碼率需要隨著MPTCP 所有TCP 子流網(wǎng)絡狀態(tài)的相對變化而改變,例如,當所有的子流都比較穩(wěn)定時使用較低的編碼率,而當部分子流出現(xiàn)明顯的擁塞或丟包時則需要提升數(shù)據(jù)包的編碼率。其次,數(shù)據(jù)包調(diào)度器也需要通過衡量所有TCP 子流的相對差異來確定分配編碼后的數(shù)據(jù)包到每條子流的數(shù)量。也就是說,無論是網(wǎng)絡編碼器還是數(shù)據(jù)包調(diào)度器都需要根據(jù)所有TCP 子流的網(wǎng)絡狀態(tài)來決定其采取的動作。然而,決定TCP 子流狀態(tài)的因素眾多(如丟包率、擁塞窗口、時延抖動等),這將導致MPTCP 多TCP 子流組成的狀態(tài)空間十分巨大。而且這些因素隨著時間的變化可能是線性的也可能是非線性的,甚至可能不符合任何數(shù)學分布規(guī)律。因此基于數(shù)學建模的方法來人工擬合一個函數(shù)模型以匹配MPTCP 的子流狀態(tài)到其對應的全局最優(yōu)編碼和調(diào)度動作幾乎是不可能的。
近年來,由于不用假設狀態(tài)空間的分布情況,使用深度神經(jīng)網(wǎng)絡作為函數(shù)的估計器來擬合高維度狀態(tài)空間到連續(xù)動作空間的匹配關(guān)系已經(jīng)變得十分常見[11-12]。尤其在眾多復雜多變的計算機網(wǎng)絡環(huán)境中(如數(shù)據(jù)包分類[13]、自適應比特率流[14]和數(shù)據(jù)中心流調(diào)度[15]等),基于深度神經(jīng)網(wǎng)絡的強化學習方法(deep reinforcement learning,DRL)已經(jīng)取得了令人驚訝的效果。受到這些實例的啟發(fā),本文嘗試訓練一個深度增強的MPTCP 動態(tài)編碼調(diào)度系統(tǒng)動態(tài)多路徑編碼調(diào)度器(dynamic multi-path encoding scheduler,DMES),來自適應MPTCP 多子流異構(gòu)網(wǎng)絡環(huán)境下的狀態(tài)變化,并將MPTCP 的多子流實時狀態(tài)輸入轉(zhuǎn)化為當前狀態(tài)下的數(shù)據(jù)包編碼比率和分配比率,從而最大化接收端的OQS 定義的反饋函數(shù)。最后通過梯度下降的方法訓練DMES 的深度神經(jīng)網(wǎng)絡直到收斂。實驗結(jié)果表明,在劇烈異構(gòu)的動態(tài)網(wǎng)絡環(huán)境中,DMES 將接收端的OQS 降低到24.6%以上,并且能夠在平均有效吞吐量提升18.3%的同時將MPTCP 的應用延遲降低12.2%左右。
本文共分為5 節(jié),其中第1 節(jié)為引言部分,對本文研究背景和主要研究內(nèi)容進行介紹;第2 節(jié)為相關(guān)工作,主要介紹已有的MPTCP 數(shù)據(jù)包調(diào)度方法、網(wǎng)絡編碼技術(shù)以及深度強化學習方法;第3 節(jié)首先分析已有方法的不足之處,然后提出基于深度強化學習的MPTCP 動態(tài)網(wǎng)絡編碼調(diào)度系統(tǒng);第4 節(jié)介紹了實驗布置及說明,并給出了對應的實驗結(jié)果;第5節(jié)對本文主要成果和未來工作進行總結(jié)和說明。
在現(xiàn)有的多路徑傳輸系統(tǒng)中,網(wǎng)絡的異構(gòu)性是其數(shù)據(jù)包調(diào)度程序設計的難點。因為在性能差異較大的多條路徑之間傳輸數(shù)據(jù)將不可避免地導致OQS 問題。而這種OQS 亂序排隊將直接導致整個MPTCP 連接的時延上升和吞吐量下降[2,4]。作為MPTCP 的默認調(diào)度器,MinRTT 僅考慮多條路徑間的往返時間(round-trip time,RTT)異構(gòu)性,并向RTT 最小的子流中發(fā)送更多的數(shù)據(jù)包。而當前的BLEST[16]、STMS[6]和ECF[17]調(diào)度器不僅考慮RTT的差異,同時將不同路徑間的擁塞窗口、吞吐量、inflight 緩存以及發(fā)送隊列等TCP 層的屬性差異放到一個數(shù)學模型中,以向質(zhì)量更好的TCP 子流中預先分配定量計算的數(shù)據(jù)包數(shù)量,從而緩解網(wǎng)絡異構(gòu)性導致的亂序問題。
但是已有的研究表明,這類數(shù)學的方法為了簡化建模的過程,通常假設了特定的網(wǎng)絡環(huán)境,如MPTCP 只建立2 條子流、不存在主機或網(wǎng)絡緩存的限制、子流的丟包率忽略不計等,以大幅縮小TCP子流的狀態(tài)空間,使得調(diào)度器只需要簡單地使用TCP 層的幾個屬性就能擬合函數(shù)來計算每條子流需要分配的數(shù)據(jù)包數(shù)量[7,18],但這也導致了基于數(shù)學建模的方法往往只能在有限類型的網(wǎng)絡環(huán)境中優(yōu)化特定的MPTCP 性能指標,卻無法自適應更加復雜的網(wǎng)絡環(huán)境。
在高丟包或高擁塞的動態(tài)網(wǎng)絡中[19],由于TCP子流頻繁的數(shù)據(jù)包重傳和重排序,將導致劇烈的網(wǎng)絡異構(gòu)性。這使得僅優(yōu)化數(shù)據(jù)包調(diào)度器已經(jīng)無法實現(xiàn)MPTCP 的帶寬聚合和故障恢復能力[20]。有一些解決方案嘗試通過優(yōu)化MPTCP 的擁塞控制算法,以彌補由于擁塞丟包而導致的性能下降[21-22]。但是,高丟包和高延遲的網(wǎng)絡環(huán)境很多時候并不是由于網(wǎng)絡擁塞導致的。尤其在無線網(wǎng)絡中,信號衰減、噪聲干擾、鏈路切換等情況將導致大量的無線隨機丟包[2,20]。在無線網(wǎng)絡上引入網(wǎng)絡編碼,已被證實能夠極大地降低丟包概率和減少重傳,從而提高TCP子流的吞吐量[8-10]。
為了實現(xiàn)多路徑的容錯傳輸,MPLOT[23]采用固定比率的編碼方案來減少數(shù)據(jù)包的恢復延遲,以提高無線自組織網(wǎng)絡的質(zhì)量。但是當多條路徑的質(zhì)量急劇變化時,固定速率編碼的性能將變得不佳[9]。因為編碼的過程需要時間代價,而編碼的冗余程度也需要消耗額外的網(wǎng)絡帶寬。不同的網(wǎng)絡環(huán)境顯然需要不同的編碼率,例如在網(wǎng)絡完全沒有丟包時可以不使用編碼,而在所有的路徑都存在嚴重的丟包時使用全冗余編碼能夠極大地保障網(wǎng)絡的可用性。FMPTCP[10]率先提出了使用噴泉碼來實現(xiàn)多路徑TCP 的動態(tài)編碼機制,而MPTCP-dFEC[9]則基于前向糾錯碼(FEC)實現(xiàn)MPTCP 數(shù)據(jù)傳輸?shù)膭討B(tài)前向糾錯。但與之前的數(shù)據(jù)包調(diào)度器設計類似,這兩種編碼機制都僅基于TCP 子流的幾個屬性來建立一個啟發(fā)式的數(shù)學模型以適應一些特定的網(wǎng)絡場景。更準確地說,FMCTP 僅使用擁塞窗口、丟包率和RTT 來調(diào)整碼率,而MPTCP-dFEC 則使用丟包率和RTT 來調(diào)整FEC 的編碼率。相較于噴泉碼,FEC 編解碼的復雜度更低,而且數(shù)據(jù)恢復能力也相差無幾。因此FEC 更常用于延遲敏感的網(wǎng)絡編碼調(diào)度中。
增強學習的變種有很多,其中主要包括Q-learning[24]、Sarsa[25]、Deep Q network(DQN)[11]、以及Actor-Critic[26]等。在任意的時間步驟t,一個標準的增強學習系統(tǒng)需要訓練Agent 智能體與未知的環(huán)境之間進行交互,智能體根據(jù)環(huán)境當前的狀態(tài)st執(zhí)行動作at,以最大化自定義的反饋函數(shù)rt。對于狀態(tài)空間較小的問題,Q-learning 和Sarsa 可以通過映射表的方式,將每個狀態(tài)st采用動作at時得到的反饋rt的值存儲到Q值表中,在訓練的過程中不斷更新Q值表以最大化rt直到收斂??紤]到很多問題的復雜性,使用簡單的Q表已經(jīng)無法存儲巨大的狀態(tài)空間。因此使用深度神經(jīng)網(wǎng)絡作為函數(shù)估計器映射狀態(tài)空間st和動作空間at的Q值被引入到DQN 中。
但是,DQN 只能處理離散和低維的動作空間,而很多任務的動作空間,如MPTCP 數(shù)據(jù)包的編碼率和分配率,都是連續(xù)的值。考慮到Policy Gradient(PG[27])的方法常被用到處理連續(xù)的控制動作,因此基于Actor-Critic 的深度確定性策略梯度下降(deep deterministic policy gradient,DDPG[12])算法通過整合DQN 和PG,被廣泛應用于處理高維狀態(tài)空間下的連續(xù)動作控制??紤]到MPTCP 的多子流網(wǎng)絡狀態(tài)空間的復雜性和編碼調(diào)度動作的連續(xù)性,為了建立適應各種異構(gòu)環(huán)境下的動態(tài)編碼調(diào)度模型,只有使用DDPG 的Actor-Critic 深度神經(jīng)網(wǎng)絡才能夠?qū)⑺锌赡艿腡CP 子流狀態(tài)st估計到其對應的數(shù)據(jù)包編碼率和分配率at的函數(shù)模型,并最大化MPTCP 整體性能定義的反饋函數(shù)rt。
由于MPTCP 的編碼器與調(diào)度器用于解決不同的傳輸問題,因此現(xiàn)有MPTCP 系統(tǒng)中的編碼和調(diào)度模塊是分開實現(xiàn)的。但是數(shù)據(jù)包在經(jīng)過編碼后一定會經(jīng)過調(diào)度器模塊的分配,因此編碼器和調(diào)度器又是強耦合在一起的。如圖1 所示,在設計DMES 動態(tài)網(wǎng)絡編碼調(diào)度系統(tǒng)之前,本文首先基于多路徑協(xié)同滑動調(diào)度器(slide together multi-path scheduler,STMS[6])使用帶TC 模塊[28]的無線接入設備構(gòu)建了一個網(wǎng)絡可控的MPTCP 實驗平臺,并對已有的編碼器、調(diào)度器以及兩者的組合進行測試分析,以評估當前技術(shù)在動態(tài)異構(gòu)網(wǎng)絡環(huán)境下的性能瓶頸。為了模擬動態(tài)復雜的網(wǎng)絡環(huán)境,每條MPTCP 連接將建立n=3條TCP 子流,并根據(jù)表1 中每個Case 在RTT、丟包率和可用帶寬的值域范圍內(nèi),使用TC 模塊隨機地設置這3 條TCP 子流的網(wǎng)絡質(zhì)量。而且通過對每個Case 進行10 組多路徑傳輸實驗,分析MPTCP已有的編碼器 MPTCP-dFEC (dFEC)、FMPTCP(FMP),目前性能最佳的調(diào)度器ECF 以及它們的組合在各種網(wǎng)絡環(huán)境設置下的平均OQS 情況。
圖1 實驗臺拓撲圖
表1 子流數(shù)不變時的網(wǎng)絡質(zhì)量參數(shù)
由圖2 可以看出,相比于現(xiàn)有的編碼器,調(diào)度器ECF 能夠更好地解決Case 1、2 和3 中RTT 和可用帶寬異構(gòu)性導致的OQS。而編碼器dFEC 和FMP能夠更好地解決Case 4、5 和6 中高丟包網(wǎng)絡導致的異構(gòu)性。FMP 在高丟包的Case 6 中表現(xiàn)得比dFEC 更好,但是在丟包相對較小的Case 2 中,dFEC卻有更好的性能,這是因為噴泉碼的高丟包恢復能力是以編解碼開銷為代價的。對于Case 5 中既高延遲抖動又高丟包率的環(huán)境,編碼器組合調(diào)度器的性能有一定的提升,但是僅比單獨使用編碼器時的平均OQS 降低3%左右。這是因為現(xiàn)有的編碼器和調(diào)度器都只是根據(jù)一部分的TCP 狀態(tài)屬性各自建立線性數(shù)學模型,并不能適應非線性變化的多路徑網(wǎng)絡環(huán)境。而這種簡單的組合更不能很好地適應動態(tài)復雜的網(wǎng)絡環(huán)境。
圖2 不同方法在異構(gòu)網(wǎng)絡環(huán)境下的平均OQS
基于數(shù)學建模的方法估計MPTCP 的數(shù)據(jù)包編碼率和分配率是積累了人類有限的測量經(jīng)驗在特定網(wǎng)絡環(huán)境下的應用,因此缺乏對各種網(wǎng)絡異構(gòu)性的泛化能力和自適應性。它們不僅只選取部分的TCP狀態(tài)屬性作為輸入,而且還會假設MPTCP 不會同時動態(tài)維持太多的TCP 子流。但在真實場景中,MPTCP 建立的TCP 子流數(shù)目卻是動態(tài)變化的,子流的狀態(tài)空間也由很多屬性參數(shù)共同決定,而且參數(shù)之間還存在各種聯(lián)系。因此使用深度增強神經(jīng)網(wǎng)絡(DNN)作為函數(shù)模型的估計器,能夠在不需要假設MPTCP 網(wǎng)絡環(huán)境的前提下,將TCP 子流的全部屬性組成狀態(tài)空間輸入到DNN 中,以訓練出一個將所有可能出現(xiàn)的“狀態(tài)到動作”的匹配關(guān)系都考慮進去的泛化模型。
因此在本節(jié)中,DMES 首先使用TCP 層的屬性參數(shù)設計MPTCP 的狀態(tài)空間,并通過Transformmer神經(jīng)網(wǎng)絡解決這些參數(shù)之間的相關(guān)性和TCP 子流數(shù)目的動態(tài)性,以輸出一個定長矩陣作為DNN 的輸入。而DMES 作用在TCP 子流上的動作空間則默認使用MPTCP 數(shù)據(jù)包的編碼率與分配率。然后根據(jù)MPTCP 的設計原理,引入一個新的flag-bit 位來返回DMES 系統(tǒng)的反饋值。最后根據(jù)這些定義詳細地說明DMES 的流程。
2.2.1 MPTCP 狀態(tài)空間設計
狀態(tài)空間:每個時刻DMES 系統(tǒng)輸入的狀態(tài)空間,實際上是MPTCP 當前網(wǎng)絡環(huán)境的一次快照。對于任意的時刻t,系統(tǒng)智能體需要輸入的狀態(tài)空間可以表示為st=(st1,st2,…sti…stn),sti(1 ≤i≤n) 是第i條子流TCP 層的全部屬性參數(shù),可以用一個元組表示為sti=(dti,cti,bti,lti,wti,kti),其中,dti表示TCP 子流i的往返時延(RTT)、cti表示TCP 子流i的擁塞窗口(congestion window,CWND)、bti表示TCP 子流i的數(shù)據(jù)包交付速率(packet delivery rate,PDR)、lti表示TCP 子流i的數(shù)據(jù)包丟失率(PLR)、wti表示TCP 子流i的接收窗口(RWND)、kti表示TCP 子流i的MPTCP 連接級別的數(shù)據(jù)包確認數(shù)量(Data ACKed)。
使用MPTCP 的子流加入選項(MP_JOIN option)和子流關(guān)閉選項(RST option),MPTCP 的客戶端和服務器間能夠動態(tài)地維持n條存活的TCP 子流。而每個時刻的狀態(tài)st由MPTCP 當前存活的TCP 子流構(gòu)成,這將會導致狀態(tài)st的長度是隨機變化的。但矛盾的是神經(jīng)網(wǎng)絡的輸入層卻是固定長度的。考慮到基于多頭注意力模型的Transformer 神經(jīng)網(wǎng)絡[29]可以將變長的輸入轉(zhuǎn)換為定長的Matrix,同時還能將輸入屬性間的相關(guān)性附加到輸出的Matrix 中。因此可以將變長的狀態(tài)空間st經(jīng)過Transformer 神經(jīng)網(wǎng)絡轉(zhuǎn)換為定長的Matrix 后喂給DMES的神經(jīng)網(wǎng)絡輸入層。這不僅能夠解決狀態(tài)空間的動態(tài)性問題,而且還能解決屬性間的相關(guān)性對神經(jīng)網(wǎng)絡模型復雜度的影響。
2.2.2 動作空間與反饋函數(shù)設計
動作空間:在任意的時刻,DMES 根據(jù)TCP 子流的網(wǎng)絡狀態(tài)空間對即將發(fā)送的數(shù)據(jù)包首先需要進行編碼動作然后進行調(diào)度動作?,F(xiàn)有的編碼算法中,基于異或的前向糾錯碼(FEC)不僅復雜度低而且數(shù)據(jù)恢復能力強,因此被廣泛應用于TCP-IR[8]、QUIC[30]和MPQUIC[31]等網(wǎng)絡協(xié)議的數(shù)據(jù)包編碼恢復中。2.1 節(jié)中的對照實驗也表明,在大多數(shù)情況下,動態(tài)FEC 能夠在MPTCP 中取得更好的性能。如圖3 所示,對于任意一個動態(tài)的FEC 編碼模塊(m,k),其中k表示應用層的源數(shù)據(jù)包數(shù)量,而m是編碼后的總數(shù)據(jù)包數(shù)量,m-k則是冗余的奇偶校驗數(shù)據(jù)包數(shù)量。這些奇偶校驗數(shù)據(jù)包使得MPTCP 的接收端只需要接收任意k個編碼數(shù)據(jù)包,就能恢復應用層的k個源數(shù)據(jù)包。因此,在任意的時刻t根據(jù)所有TCP 子流組成的狀態(tài)空間st,數(shù)據(jù)包的編碼率可以表示為et=(m-k)/k。而對于編碼后的m個數(shù)據(jù)包,MPTCP 的調(diào)度器需要確定分配到每條TCP 子流i上的數(shù)據(jù)包數(shù)量為xti。如果MPTCP 總共維持了n條子流,則分配到子流i的比率表示為pti=xti/m,而且pt1+pt2+…pti…+ptn=1。由于編碼和調(diào)度強耦合在一起,因此用一個集合將DMES的動作空間表示為at=(et,pt1,pt2,…,pti,…,ptn)。
圖3 基于異或的FEC 的編碼率
反饋函數(shù):根據(jù)MPTCP 的設計原則,應用層的延遲和有效吞吐量是當前MPTCP 連接的主要QoS指標。越來越多的研究表明,影響QoS 的根本原因是MPTCP 接收端的OQS 大小,以及其衍生出來的發(fā)送端的HoL 問題。因此,在設計DMES 的反饋函數(shù)rt時需要最小化接收端的OQS。由于DMES 運行在MPTCP 的發(fā)送端隊列與TCP 子流之間,這使得接收端的OQS 大小需要隨著連接級別的Data ACK數(shù)據(jù)包從接收端返回到發(fā)送端。如圖4所示,在每個Data ACK 數(shù)據(jù)包的數(shù)據(jù)序列信號字段(data sequence signal option,DSS)新增一個Q-bit 信號位[7]來返回接收端OQS。為了使得OQS 越小越好,DMES 的反饋函數(shù)定義為rt=1/OQS。
圖4 DATA ACK 的Q-bit 標志位
2.2.3 DMES 系統(tǒng)設計
根據(jù)上述定義,可以發(fā)現(xiàn)MPTCP 動態(tài)編碼調(diào)度系統(tǒng)的狀態(tài)空間st與動作空間at都是高維度且連續(xù)變化的。因此如圖5 所示,本文使用基于Actor-Critic 的DDPG 深度神經(jīng)網(wǎng)絡來估計st、at以及rt之間的函數(shù)關(guān)系模型。DDPG 共維持了4 個深度神經(jīng)網(wǎng)絡(DNNs)作為函數(shù)模型的估計器。其中,2個DNNs 是Actor 深度神經(jīng)網(wǎng)絡和Critic 深度神經(jīng)網(wǎng)絡,分別用θμ和θQ表示其神經(jīng)網(wǎng)絡的參數(shù)。Actor網(wǎng)絡也被稱為策略函數(shù)網(wǎng)絡,用來估計當前觀測到的狀態(tài)st與需要采取的最佳動作at間的函數(shù)關(guān)系為at=μ(st;θμ)。Critic 網(wǎng)絡也被稱為值函數(shù)網(wǎng)絡,用來估計對于任意的“狀態(tài)-動作”對(st,at)的反饋函數(shù)的值為rt=Q(st,at;θQ)。如圖5 所示,深度強化學習通過min-batches 的方式從“回放緩存”[32]中找到某個時刻t到下一時刻t+1 的狀態(tài)轉(zhuǎn)換元組(st,at,st+1,at+1),并根據(jù)偏導數(shù)式(1)和式(2),以SGD(θμ)和SGD(θQ)的隨機梯度下降方式訓練Actor 和Critic 表示的神經(jīng)網(wǎng)絡:
圖5 基于深度強化學習的MPTCP 編碼調(diào)度系統(tǒng)
而另外2 個神經(jīng)網(wǎng)絡為目標Actor 網(wǎng)絡θ μ’和目標Critic 網(wǎng)絡θQ’,主要用來輸出每個時刻用來計算損失函數(shù)的目標值yi:
這2 個目標網(wǎng)絡的參數(shù)θ μ’和θQ’則是使用跟蹤參數(shù)τ<<1從θ μ和θQ緩慢更新而來:
最終的DMES 訓練算法如算法1 所示,將主要由式(1)、(2)、(4)、(5)更新完成。在算法訓練開始時,需要隨機初始化Actor-Critic 網(wǎng)絡的θ μ和θQ值。目標神經(jīng)網(wǎng)絡的參數(shù)θ μ’和θQ’也從初始化的參數(shù)復制而來。為了對狀態(tài)轉(zhuǎn)換進行最小采樣(mini-batches)采樣,因此初始化“重放緩存”為R。為了實現(xiàn)對連續(xù)的動作空間的探索過程,需要為每個動作的探索初始化一個噪聲參數(shù)N[12]。最后將MPTCP 的子流初始狀態(tài)空間s’放入R中。初始化完成之后,DMES 將進入一個無限循環(huán)直到收斂。對于每個Data ACK 的返回時刻t,DMES 的智能體將“探索噪聲N”和Actor 神經(jīng)網(wǎng)絡的輸出組成狀態(tài)st的匹配動作,即at=μ(st;θ μ) +Nt。然后,at中的碼率et和比率pt將會被應用到MPTCP 發(fā)送端的編碼器和調(diào)度器上。而在t時刻應用at導致的反饋值rt(即OQS),將在t+1 時刻由Data ACK 返回,并與狀態(tài)st+1組成(st,at,rt,st+1)存儲到回放緩存R中。而Actor-Critic 神經(jīng)網(wǎng)絡的更新,則是通過從R中mini-batchesN個狀態(tài)轉(zhuǎn)換元組(st,at,rt,st+1),并使用式(1)和(2)進行隨機梯度下降更新參數(shù)θ μ和θQ。而目標Actor-Critic 神經(jīng)網(wǎng)絡θ μ’和θQ’的更新則是通過式(4)和(5)完成。
為了讓MPTCP 的對端都支持動態(tài)的FEC 編碼,需要在MPTCP 的握手報文中新增FEC_CABLE選項進行對端的FEC-enabled協(xié)商。由于MPTCP是內(nèi)核空間的程序,而基于Tensorflow[33]的Actor-Critc 深度神經(jīng)網(wǎng)絡是用戶空間的程序,因此DMES使用系統(tǒng)調(diào)用函數(shù)getsockopt()從內(nèi)核空間中周期性地獲取MPTCP 的TCP 子流狀態(tài)空間st,并通過系統(tǒng)調(diào)用函數(shù)setsockopt()來執(zhí)行Actor-Critic 神經(jīng)網(wǎng)絡在不同的狀態(tài)st下輸出的MPTCP 動作空間at,以最小化rt中MPTCP 接收端的OQS 隊列。
在訓練DMES 時,需要使用6 層疊加的多頭注意力(multi-head attention)模型組成Transformer 神經(jīng)網(wǎng)絡,每個注意力模型的輸入是一個512 維的矩陣。與此同時,Actor 神經(jīng)網(wǎng)絡和Critic 神經(jīng)網(wǎng)絡由2 個全連接的48 ×48 的神經(jīng)網(wǎng)絡隱藏層和神經(jīng)網(wǎng)絡輸出層組成,并使用rectified linear 函數(shù)作為隱藏層的激勵函數(shù),以及hyperbolic tangent 函數(shù)作為輸出層的激勵函數(shù)[34]。根據(jù)Adam 方法[35],將更新Actor 網(wǎng)絡和Critic 網(wǎng)絡的學習率分別設置為10-4和10-5。為了模擬動態(tài)復雜的網(wǎng)絡環(huán)境,本節(jié)繼續(xù)使用第2.1 節(jié)中的可控實驗床,具體的參數(shù)設置如表2 所示,且每種Case 進行20 組多路徑傳輸實驗。
表2 子流數(shù)變化時的網(wǎng)絡質(zhì)量參數(shù)
(1)亂序隊列
如圖6 所示,本小節(jié)首先分析了各種異構(gòu)網(wǎng)絡環(huán)境下的MPTCP 亂序隊列分布情況。實驗結(jié)果表明,相比于其他的方法DMES 在所有的Case 中的OQS 都是最小的。且在多子流高丟包的環(huán)境中,將MPTCP 的平均OQS 最高降低20%以上。因為深度神經(jīng)網(wǎng)絡將編碼器和調(diào)度器完美融合到一起,不僅能夠基于調(diào)度的方式自適應輕微網(wǎng)絡異構(gòu)性而且能夠通過編碼恢復的方式極大地降低劇烈網(wǎng)絡異構(gòu)性導致的接收端亂序隊列數(shù)量。
圖6 不同方法在動態(tài)異構(gòu)網(wǎng)絡下的OQS 分布情況
為了更加清楚地描述實驗結(jié)果,本小節(jié)分析了在不同的丟包率和TCP 子流數(shù)量下的MPTCP 接收端的平均OQS 情況。如圖7(a)所示,與其他的設計方法相比,在15%~20%的高丟包環(huán)境中,DMES最高能夠?qū)⑵骄鵒QS 降低17.4% 左右,若此時MPTCP 同時建立了8 條TCP 子流,如圖7(b)所示,DMES 將平均OQS 降低到24.6%以上。
圖7 不同方法在不同丟包和子流下的平均OQS
(2)應用延遲
由于接收端的亂序直接導致了數(shù)據(jù)包的延遲交付。因此傳輸實驗中測量了MPTCP 連接級別的平均應用延遲。如圖8 所示,在子流數(shù)目較少且丟包不高的Case 1 中進行多路徑傳輸實驗時,由于ECF+dFEC 和DMES 幾乎沒有編碼開銷而且能夠通過調(diào)度器適應網(wǎng)絡的異構(gòu)性,因此它們的應用延遲明顯低于存在編碼開銷的dFEC 和FMP。當在Case 3和Case 4 中的丟包率達到10%~15%時,相比于ECF 調(diào)度器,DMES 卻能夠自適應地編碼,因此將應用延遲降低大約6.3%左右。最后在子流的數(shù)量為6~8 條且丟包率達到15%~ 20% 的Case 6 中,DMES 能夠?qū)⑵骄鶓醚舆t最高降低12.2%以上。
圖8 不同方法在動態(tài)異構(gòu)網(wǎng)絡下的平均應用延遲
(3)有效吞吐量
MPTCP 連接的吞吐量是TCP 子流共同作用的結(jié)果。但由亂序到達的報文必須按序交付給應用層,使得MPTCP 的有效吞吐量并不是TCP 子流吞吐量的簡單疊加。因此,通過測量應用程序的實時吞吐量作為MPTCP 的有效吞吐量。如圖9 所示,在丟包率較低的Case 1 和Case 2 中,相較于ECF 調(diào)度器,DMES 的有效吞吐量提升了7.4%左右。而在丟包率較高的Case 6 中,相比于ECF、FMP 和dFEC 的設計方法,DMES 的有效吞吐量提升能夠分別達到18.3%、14.7%和15.2%左右。與此同時,當子流的數(shù)目較多時MPTCP 的網(wǎng)絡雖然變得更加復雜,但DMES 的有效吞吐量提升卻更加明顯。
圖9 不同方法在動態(tài)異構(gòu)網(wǎng)絡下的平均有效吞吐量
本文通過分析現(xiàn)有的編碼器、調(diào)度器以及兩者的組合在動態(tài)多變的異構(gòu)網(wǎng)絡環(huán)境中的表現(xiàn)情況,發(fā)現(xiàn)了編碼器組合調(diào)度器在劇烈的異構(gòu)網(wǎng)絡中的性能提升空間。并通過使用深度強化神經(jīng)網(wǎng)絡作為函數(shù)模型的估計器,利用Transformer 神經(jīng)網(wǎng)絡處理MPTCP 連接動態(tài)TCP 子流的全部屬性,以匹配出編碼器和調(diào)度器當前最佳的編碼動作和調(diào)度動作,從而最大化MPTCP 整體傳輸性能。實驗結(jié)果表明,本文提出的方法能夠?qū)崿F(xiàn)編碼器和調(diào)度器能力的完美融合,從而更加適應動態(tài)復雜的多路徑網(wǎng)絡環(huán)境。
未來工作將嘗試基于深度強化學習的多路徑動態(tài)編碼調(diào)度思想應用到用戶態(tài)的多路徑傳輸協(xié)議中,以減少內(nèi)核態(tài)與用戶態(tài)的交互開銷,同時采用更多真實環(huán)境下的多路徑數(shù)據(jù)傳輸實驗以增加系統(tǒng)的穩(wěn)定性。