0基于容器提供云原生服務可以提高云計算的彈性,成為現今的主流方式。在一個容器內,可以同時存在多個不同服務的通信會話,對這些會話分別進行預測在細粒度的系統管理中具有重要意義。然而,這是一個棘手的任務,因為會話流量通常都是不可見的,我們唯一能得到的是代表了所有共存會話總流量的容器網絡接口使用流量。在本文中,我們提出了一種基于機器學習的會話級流量預測框架X-Rayer,從容器的網絡接口使用流量中預測各個容器內部的會話流量。X-Rayer首先通過融合滑動窗口和集成經驗模態分解算法的循環神經網絡,準確預測未來的接口使用流量,然后利用卷積神經網絡和門控循環單元組成的ConvGRU對會話級流量進行估計。同時,X-Rayer通過注意力機制提取了容器網絡的時空相關性,并提高了會話流量預測的準確率。大量的實驗表明,X-Rayer與最先進的方法相比提供了更為準確的結果,其在容器接口使用流量預測中將平均RMSE分別降低33.25%和33.71%,并在會話級流量估計中分別降低了18.05%、27.04%、21.91%和16.43%。

該成果“Container Session Level Traffic Prediction from Network Interface Usage”發表在IEEE TSUSC 2023,是實驗室分布式系統組在容器流量預測領域的研究成果。

  • 論文鏈接:https://ieeexplore.ieee.org/document/10071951

背景與動機

容器作為一種輕量級虛擬化技術,如今已被廣泛應用在各領域中,并展現出了其在提升性能和降低成本方面的優勢。亞馬遜、谷歌等許多公司均已實現了其各自基于容器的虛擬化環境。然而,容器只能提供應用程序級別的抽象,而無法提供強大的硬件隔離和細粒度資源管理。Docker等主流的容器產品通常允許用戶通過命令或接口進行資源監控,以網絡流量為例,通過使用docker stats命令,我們可以獲取容器網絡接口使用流量作為總通信流量的統計信息。另一方面,一個容器內可以同時存在多個服務和許多不同的通信會話。具體而言,在云原生應用中,根據預定義的服務語義,服務流量會通過不同的容器進行傳遞。因此,對于每個容器,可能會存在與其他不同容器的多個會話。與容器接口使用流量不同,會話級別的流量是不可見的,無法通過現有的系統命令輕松監測。

這種不可見的會話流量給容器管理帶來了很多麻煩,甚至可能成為運營商的噩夢。例如,當兩個容器之間存在多個會話時,我們無法知道每個會話中發生的具體情況,這使惡意或攻擊性流量可以在看起來正常的容器接口使用下完美地隱藏,帶來了嚴重的安全風險。此外,由于容器的弱隔離特性和復雜的網絡模式,容器內的多個服務間可能會經歷激烈的帶寬競爭,進而影響服務的公平性并造成性能下降。

通過預測會話流量,我們不僅可以避免帶寬競爭,還可以制定容器部署或資源分配的優化策略,以達到更好的服務公平性和系統性能。為了解決會話流量不可見的問題,我們可以重新構建容器系統或劫持服務源代碼。例如,現有工作通過集成Istio框架或以旁路方式不斷劫持會話流量,實現了可見性。然而,Istio框架相當沉重且應用范圍有限,而流量劫持需要向服務中植入新代碼,并在每個容器中維護一個消耗額外資源的守護進程。總之,這兩種方法均不容易實現,并且會產生極高的開銷。

因此,我們有動力設計一種非植入式、輕量級的容器會話級流量監控解決方案。其中,“非植入式”意味著它不需要更改容器現有架構或劫持服務源代碼,可以在容器外部以可接受的開銷進行預測。通過分析現有的技術,我們試圖利用運行時的容器網絡接口使用流量來預測不可見的會話流量。實際上,網絡流量預測已經得到廣泛研究,但由于以下兩個挑戰,這些研究無法直接應用在容器會話級流量預測中:

(1)一對多:現有的工作都高度依賴于運行時統計的流量時間序列,以預測完全相同鏈路上的未來流量,即從多維特征到一維標簽。然而,我們的會話級流量預測問題必須基于單個容器接口使用的運行時統計數據預測多個會話流量,即從一維特征到多維標簽。

(2)時間變化:容器會話流量隨著服務需求的變化呈現高度動態和時變的特征。因此,即使是相同的接口使用值,其會話流量也可能截然不同。換而言之,除了大標簽維度之外,一個接口使用流量特征可能會與多組會話流量標簽配對。如何在不同的時間段準確估計相同接口使用流量特征下的會話流量,這無法通過現有的一對一特征—標簽配對方案解決。

為了解決上述兩個挑戰,我們設計并實現了一個名為X-Rayer的會話級流量預測框架。與現有的會造成容器重組開銷和額外安全風險的劫持會話流量信息方案不同, X-Rayer框架提出了一種EEMD-GRU+AttConvGRU網絡,用于在總容器接口使用流量和會話級流量之間建立橋梁,從而實現基于容器接口使用的會話級流量預測,其無需植入任何旁路設備以劫持運行時會話流量或修改容器源代碼。

設計與實現

典型的基于容器的服務系統主要由多個相互連接的容器組成,每個容器提供不同的功能。一個容器可以通過從上游服務接收數據包,對其進行處理并通過服務之間的邏輯會話將其發送到下游服務來維持多個會話,所有會話流量都將計入容器界面使用的一部分進行統計。通過測試研究發現,容器接口使用流量呈現一定的周期性變化特征,這意味著可以通過歷史樣本和運行時接口流量來預測未來的流量總趨勢,并進一步進行會話流量的估計。同時,會話流量除了與接口使用流量一樣具有時間相關性外,還具有空間相關性,換而言之,即使接口使用值相同,上一時隙不同的會話流量也會產生下一時隙不同的會話流量,并且其也受到容器網絡中上游和下游容器中會話的影響。這些發現可以輔助解決上述提到的“一對多”和“時間變化”會話流量預測挑戰,提高預測的準確率。

在本文中,我們設計了輕量級、非植入性的X-Rayer框架,基于運行時容器接口使用流量來預測會話級流量,實現其可見性。為了建立接口使用流量和會話流量之間的橋梁,X-Rayer首先必須基于當前接口使用值來預測未來的接口使用流量,然后通過預測的接口使用流量估計未來的會話流量。換句話說,接口使用預測是會話級流量估計的基礎。因此,X-Rayer包括兩個模塊:接口使用預測器和會話流量估計器,如圖1所示。

圖1 X-Rayer架構圖

接口使用預測器由三個部分組成:(1)集合經驗模態分解(EEMD),用于分析和劃分接口使用流量序列為多個頻率,以更好地捕捉時間特征;(2)滑動窗口,來增強時間序列使用的短期依賴性;(3)GRU網絡,來學習接口使用流量變化趨勢和進行預測,在有限的數據集下可以獲得更高的精度。而會話流量估計器由以下組成:(1)基于ConvGRU的編碼器,用于編碼和捕捉接口使用和會話流量的特征;(2)變換注意力層,用于確定不同時間段和不同會話的時間空間相關權重;(3)帶有SoftMax激活函數的解碼器,用于估計相應的會話流量。

X-Rayer框架的工作流程主要包括4個步驟:(1)通過使用docker stats命令并在一段時間內植入一個守護進程會話,獲取容器接口使用流量序列和相應的會話流量序列,并將其記錄為歷史數據集以用于模型訓練。(2)將容器接口使用流量序列集發送到預測器模塊進行訓練。首先,將流量序列通過EEMD劃分為不同的模態特征子序列;接著,將每個子序列在經過滑動窗口處理后送入GRU網絡訓練,以獲得每個子序列的預測結果;最后,將各結果相加以獲取容器接口使用流量的預測值。在訓練過程中,將預測的接口使用值與真實值進行比較,并相應地更新預測器模塊。(3)基于預測的接口使用流量估計會話級流量。構建一個包含接口使用預測值的時空矩陣,將其輸入估計器模塊,依次經過基于ConvGRU的編碼器、變換注意力機制和ConvGRU解碼器,最后通過輸出層SoftMax對各個會話的流量進行估計。在訓練過程中,會進一步將估計的流量與真實值進行比較,以更新估計器模塊。(4)當兩個關鍵模塊訓練完畢后,我們移除守護進程會話,并運行docker stats命令以監視獲取不同時間段的一批運行時接口使用情況。基于此數據集,可以預測未來的接口使用流量和會話級流量。

為了驗證X-Rayer框架的有效性,分別在不同的場景下對接口使用預測器和會話流量估計器的性能進行了實驗。我們從DockerHub中拉取了20個常用的容器組成網絡,每個容器支持2-5個服務。并且根據IBM Docker Registry Trace數據集初始化服務請求速率。該實驗基于Kubernetes框架,并運行docker stats命令在52天內獲取接口數據。在接口使用預測實驗中,滑動窗口大小設置為15,每個GRU網絡包括含有15個神經元的輸入層,3個含有60個神經元的隱藏層,和1個神經元的輸出層,初始學習率為0.001,共訓練100次。實驗將X-Rayer框架的預測器與ARIMA,SVR,TarjGRU和FC-LSTM這4種算法進行對比,結果如圖2所示。與最先進的TarjGRU,FC-LSTM相比,X-Rayer預測值的RMSE分別降低了33.71%和33.25%。在會話流量估計器實驗中,ConvGRU網絡包括一個15個神經元的輸入層,5個含有60個神經元的隱藏層,以及一個使用SoftMax激活函數的輸出層,初始學習率為0.01,共訓練100次。實驗將X-Rayer框架的估計器與FC-LSTM,GRU,ConvLSTM和TarjGRU這4種算法進行對比,結果如圖3所示,X-Rayer估計值的RMSE分別降低了18.05%,27.04%,21.91%,和16.43%。

圖2 不同接口使用預測算法的性能比較

圖3 不同會話流量估計算法的性能比較

詳細內容請參見:

Lin Gu, Honghao Xu, Ziyuan Li, Zirui Chen, Hai Jin, “Container Session Level Traffic Prediction from Network Interface Usage,”in IEEE Transactions on Sustainable Computing (TSUSC), pp.1-12, 2023, doi: 10.1109/TSUSC.2023.3252595.