Flow Size Prediction with Short Time Gaps
網絡流量預測新突破:微秒級短流預測的可行性分析
在當今數據中心和云計算環境中,網絡流量的精準預測是優化資源分配、實現智能負載均衡的關鍵。傳統流量和預測聚焦于長時間間隔(如秒級或分鐘級)的聚合流量,對于微秒到毫秒級的短流預測研究較少。本文提出了一種基于低級別事件特征的短流預測方法。
研究背景:為什么短流預測如此重要?
現代網絡控制功能(如流量調度、擁塞避免)需要實時響應能力。例如,在流量控制中,若能提前預知下一個流的大小,可動態調整鏈路帶寬分配,或者可將其分類為“大象流”或“小鼠流”,并分配不同優先級,避免鏈路出現流量過載等現象,短時間間隔(如微秒級)下的流動態變化極快,傳統基于統計或深度學習的預測方法難以捕捉瞬時模式。
- 短流:時間間隔短(微秒級),數量多,常見于分布式計算任務(如Spark、PyTorch)
- 長流:時間間隔長(毫秒級),數量少,但流量大
秒級短流預測具體實現
數據收集器架構圖如下,主要有三個模塊組成,分別是Packet Traces、Polling Traces以及Event Traces。
數據收集器
- Packet Traces模塊——流提取
采集方法:
PF_RING庫(第三方的內核數據包捕獲接口,類似于libpcap),該數據包捕獲機制目標是降低內核協議棧開銷,提高數據包處理性能,通過內核旁路方式直接獲取網卡數據包,采用Zero Copy 機制 避免不必要的內存拷貝,核心架構由mmap、Polling以及Ring Buffer組成。核心如下:
- 應用調用mmap進行內存映射;
- 數據包到達網卡后,處理器以輪詢的方式將數據包寫到環形buffer;
- 應用調用read從環形buffer里面讀數據包;
具體實現源碼分析地址:深入理解PF_RING內核數據包捕獲接口-CSDN博客
PF_RING庫官方倉庫地址:ntop/PF_RING: High-speed packet processing framework
采集的指標:
源地址 |
---|
目的地址 |
數據包大小 |
數據包到達時間 |
- Polling Traces模塊–跟蹤主機負載
采集方法:
定期輪詢操作系統的/proc目錄,該目錄包括各種文件和目錄,每個文件和目錄提供有關系統資源利用的各個方面的信息,具體保存在/proc/[process_id]/stat文件。
采集指標:
主機可用內存 |
---|
進程占用的物理內存 |
進程內核態運行時間 |
- Event Traces模塊
采集方法:
eBPF技術
采集指標:
掛載點選擇tcp_sendmsg,指標是tcp_sendmsg觸發次數
流量預測建模
流量采集
- 從數據包跟蹤(packet trace)中提取流,每個數據包包含源 IP、源端口、目的 IP、目的端口、數據包大小和到達時間等信息。
- 按照源 IP+端口 和 目的 IP+端口對數據包進行分組,形成通信路徑(例如,IpA:portA → IpB:portB)。
- 在同一條通信路徑上,如果兩個數據包之間的時間間隔大于設定的閾值,則認為屬于不同的流。
- 該流提取過程會針對不同的流時間間隔重復進行,以確保數據集覆蓋多種時間粒度。
特征提取
流量特征來自三類數據源,每種數據源采用不同的特征提取方法:
- 網絡特征
- 通過聚合每個流中的數據包信息提取特征,例如:
- 網絡輸出流量(network-out):從工作負載執行開始到流開始前,發送到目標主機的所有數據包總大小。
- IP 和端口信息(src_ip、dest_ip、src_port、dest_port)。
- 流時間間隔(gap)(流與流之間的時間間隔)。
- 通過聚合每個流中的數據包信息提取特征,例如:
- 輪詢數據特征
- 取流開始前最后一次采集到的系統狀態值,例如:
- memavailable(主機上可用內存)。
- stime(工作負載進程的內核態運行時間)。
- rss_memory(進程使用的物理內存)。
- 取流開始前最后一次采集到的系統狀態值,例如:
- 基于事件的特征
- 提取流開始前最近發生的事件信息:
- 最后一次事件的值(如某個系統事件的狀態)。
- 事件到流開始的時間間隔(tt_featurename)。
- 提取流開始前最近發生的事件信息:
為了考慮歷史流量對當前流量的影響,將前 K(K=5)個流的特征加入當前流的特征集中。額外加入歷史流量大小作為特征,即前 t 個流量的大小。
流量預測任務有兩種方式:
- 基于回歸
- 預測下一個流的精確大小,屬于回歸問題,每個流的目標值是下一個流的大小。
- 基于分類
- 將流量分為小流和大流,形成二分類問題:
- 1 代表大流。
- 0 代表小流。
- 數據集中可能存在類別不均衡問題(例如,在 Spark 負載下,5000 微秒時間間隔內大流占 40%)。
- 將流量分為小流和大流,形成二分類問題:
模型算法——CatBoost算法
優勢
(1)提供了相對較小的訓練數據集的魯棒結果,使其適用于數據收集時間較短的任務,也適用于低延遲環境(例如數據中心)。
(2)需要最小的模型優化和超參數調優。
(3)允許我們識別影響每個工作負載中生成的流大小的主機方面。
CatBoost原理部分:這次終于徹底理解了 CatBoost 原理及應用-CSDN博客
實驗部分
在AWS環境中部署了3節點集群,分別運行Spark(EMR實例)和PyTorch(EC2 GPU實例)工作負載。通過PF_RING庫捕獲網絡包元數據,eBPF跟蹤系統調用事件(如send()
、malloc()
),并定期輪詢/proc
目錄獲取主機狀態。實驗覆蓋500–30000微秒的流時間間隔,結果顯示:
- Spark SVM:擴展特征集使R2提升0.2,事件特征(如
tcpsendmsg
)占比超30%。 - PyTorch GPT:網絡特征主導預測,MAPE低至2%,表明參數同步流量高度規律。
- 分類任務:直接分類模型F1分數(0.85)顯著優于閾值回歸方法(0.65)。
可取之處:
1、數據采集部分考慮的比較全面,多維度采集,解決單一數據源的局限性。考慮了影響網絡流量的多種原因,覆蓋了網絡流量的全部生命周期:
(1)網絡包追蹤:直接捕獲流量結果層面的信息(如包大小、時間間隔、IP/端口)。但是僅能反映“已發生”的流量行為,無法解釋流量生成的原因(如主機資源狀態、應用邏輯觸發)。不足之處在于:若某流量突增,網絡包數據只能顯示流量大小和時間,但無法回答“為何突增”——是內存不足觸發了數據落盤?還是某個函數調用觸發了參數同步?
(2)輪詢追蹤:捕獲系統資源狀態(內存、CPU、磁盤I/O),反映主機負載對流量生成的間接影響。因為內存不足時會導致頻繁換頁,間接影響網絡發送速率,高CPU利用率可能伴隨計算密集型任務的通信需求增加。
(3)事件追蹤(eBPF):選擇流量生成的最后一步(數據即將發送到網絡前調用),掛載**tcp_sendmsg
** 采集五元組信息,數據包大小、時間戳。
2、采用靜態閾值法對流量進行分類:
- 大象流(Elephant Flows):若某一流在傳輸過程中占用的帶寬超過當前鏈路總帶寬的10%,則被標記為大象流。
- 小鼠流(Mice Flows):帶寬占比小于或等于10%的流
流量帶寬計算:
- 對于每個流,計算其總傳輸數據量(字節)和持續時間(微秒)。
- 帶寬占用率公式:
帶寬占比 = (流總大小(字節) × 8 ) / 鏈路帶寬( b p s ) × 流持續時間(秒) 帶寬占比=(流總大小(字節)×8)/鏈路帶寬(bps)×流持續時間(秒) 帶寬占比=(流總大小(字節)×8)/鏈路帶寬(bps)×流持續時間(秒)