[扶奉超 牛云 曹維華 劉浩 謝元寶]
近年來,隨著寬帶互聯網技術和移動互聯網技術迅速發展、網絡應用和業務種類不斷豐富,用戶流量呈爆炸式增長趨勢[1-2]。如何對海量爆炸式增長的用戶數據進行監管和分析是個重要難題。
為了解決網絡監管和分析的問題,國內運營商均有在網絡重要節點(包括移動核心網、IDC 出口、城域網出口、骨干網出口等位置)部署專用流量采集和分析系統,如DPI 系統。分流器實現小流量匯聚,大流量拆分、同源同宿、負載均衡等功能,是流量采集系統的一部分。
同源同宿是流量采集和分析系統應用的基礎。為滿足不斷增長的業務流量需求,并確保網絡的可靠性,IDC、城域網、5GC 等關鍵網絡節點的出口鏈路通常會連接多個不同的局向,而且每個局向又往往包含多條鏈路。路由器的上下行自主選路特點造成實際上同一會話的上下行可能不在同一條物理鏈路[3],如需要對這些出口鏈路的流量進行監控分析,需要將入出IDC 或城域網的同一會話的上下行完整流量輸出給同一臺流量分析設備進行處理,保證后端設備處理的數據的完整性和分析結果的準確性。業界在分流器和同源同宿方面有一些研究工作。文獻[3]中作者提出了多種同源同宿的解決方案,包括同機房和不同機房間的同源同宿解決方案,但對各方案的對比分析較少。文獻[4]中作者主要研究了5G 對分流器提的新要求及其設備的演進變化,對同源同宿問題研究較少。
本文主要研究分流器的同源同宿解決方案,綜合分析和對比了3 種解決方案的優缺點,最后給出了同源同宿方案選擇建議。
單臺分流器和多臺分流器的同源同宿原理存在一些差異。本章將介紹單臺分流器和多臺分流器同源同宿的原理。
分流器均有配置哈希資源用來實現負載均衡和同源同宿。當同一會話的上下行接入同一臺分流器時,實現同源同宿有以下幾個步驟:
(1)對哈希因子進行計算:分流器將多元組,至少二元組(源IP 地址,目的IP 地址)作為哈希因子,并對多元組進行運算。運算方法有異或、加減法等。
(2)哈希計算:利用選定的哈希算法對哈希因子進行計算,得到一串二進制數字結果。根據選擇的哈希算法的不同,哈希計算后的結果可能是8 位,16 位,32 位等。
(3)端口選擇:得到二進制數字串以后,選擇其中部分的位數參與最終端口選擇,比如通過哈希計算后得到了32 位的數字,可以選擇32 位進行端口選擇,也可以選擇部分位數,比如低16 位。選好位數以后,將二進制數字串換算成十進制,再進行取模運算或者采用散列表的方式決定最終的輸出端口。
同一會話的上下行鏈路中,源IP 地址和目的IP 地址會調換,比如上行鏈路源IP 地址為A,目的IP 地址為B 時,下行鏈路源IP 地址為B,目的IP 地址為A。哈希因子是將多元組(至少包含二元組)通過異或、加減等算法得到的。由于調換源IP 地址和目的IP 地址不改變哈希因子的運算結果,于是上述同源同宿的3 個步驟中,經過第一個步驟得到的結果是一樣的。而第一步驟的哈希因子計算結果一致以后,第二個步驟和第三個步驟中的哈希計算和端口選擇計算的結果也將保持一致。最終同一會話的輸出端口不變,從而實現同源同宿。
當同一會話的上下行接入多臺分流器時,同源同宿的實現將會變得更為復雜。多臺分流器支持的哈希機制可能存在差異,包括支持的哈希算法不同和端口選擇機制不同。需要通過技術手段和組網架構設計來保障同源同宿。從本質上說,多臺分流器同源同宿方法有兩種。
(1)需要通過將同一會話的上下行流量接入或者導入同一臺分流器,使得同一會話的上下行流量最終從同一個分流器的同一個端口輸出,最終接入同一個后端分析服務器,如DPI 服務器。通過這種方法,可以將多臺分流器的同源同宿問題最終轉化成單臺分流器的同源同宿問題。
(2)同一會話的上下行流量分布在不同分流器,從不同的分流器的端口輸出,但正好接入同一個后端分析服務器,如DPI 服務器。
經過分析,多臺分流器的情況下主要的同源同宿實現方案有流量互導方案、多級分流器方案和哈希一致性輸出方案,其中流量互導方案和多級分流器方案是將流量接入或者導入同一臺分流器實現同源同宿,哈希一致性輸出方案是通過將所有分流器設定一致的哈希輸出規則,由后端系統如DPI 服務器對稱接入分流器來實現。本章將詳細介紹這幾種方案。
流量互導解決方案是指分流器之間采用full-mesh 組網架構,互導流量,如圖1 所示。提前規劃好每個分流器處理的流量。每個分流器只處理屬于自身設備的流量,將其他流量通過互聯鏈路轉發至其他分流器??筛鶕髁刻攸c選擇互導單邊流量(如上行),或者互導IP 段流量。從而讓同一用戶的上下行流量可以集中到同一臺分流器進行處理。該種方案需要額外增加用于互導流量的端口。

圖1 流量互導方案示意圖
如圖2 所示,多級分流器方案是指在原有的分流器和DPI 服務器兩級架構基礎上再增加一級或數級分流器方案,用其中一級分流器實現同源同宿功能,其他級分流器實現匯聚和分流功能,從而讓同一用戶的上下行流量可以集中到同一臺分流器進行處理,實現同源同宿。根據同源同宿所在級數的不同,分為一級同源同宿方案和二級同源同宿方案。本文以二級同源同宿為例。

圖2 多級分流器方案
如圖3 所示,不同分流器采用一致的輸出規則,包括哈希因子、哈希算法等[5],確保相同二元組/多元組流量從不同分流器接入都能從相同接口輸出。后端系統如DPI服務器對稱接入分流器的接口。此種方案中,盡管同一用戶的上下行分布在不同鏈路,但能保證相同多元組的用戶數據能夠進入到同一個下游系統(如DPI 服務器),從而實現同源同宿。由于不同分流器之間哈希機制一般存在差異,因此需要統一所有設備的哈希機制。

圖3 哈希一致性輸出方案示意圖
流量互導方案不需要統一分流器支持的哈希輸出機制,無需改造現有設備,但需要增加流量互導端口,用來互導部分流量。多級分流器方案也無需統一分流器支持的哈希輸出機制,但架構和組網復雜,兩級分流器之間背靠背組網,需要額外增加的端口數最多。
哈希一致性輸出方案中每個端口均承載業務流量,無重復流量,因此無需額外占用端口。但該方案端口發生故障時,存在較大的隱患,難以同源同宿。當某個設備端口因光模塊損壞或鏈路故障而失效時,該端口原來輸出的流量會重哈希并分布到其它端口,從而導致同源同宿失效。需要同步關閉其它分流器上與故障相關的端口或更換同一型號的分流器來解決端口故障問題。但目前分流器與分流器之間是沒有相應的接口和機制,開發難度較大。因此當某個端口失效時,很難做到異設備間同步端口狀態。
總體來看,在額外增加端口方面,多級方案最多,流量互導方案中等,哈希一致性輸出方案最少。但哈希一致性輸出方案在端口故障時,同源同宿易失效。由于流量互導方案組網架構較簡單,增加的端口數較少,也無同源同宿失效的隱患,因此建議選擇流量互導方案作為主要的多臺分流器的同源同宿方案。在端口需要適配場景建議選擇多級分流器方案,解決端口適配的問題,比如采集鏈路接口與分流器接口不匹配的場景或者分流器接口與后端DPI服務器接口不匹配的場景。
同源同宿是后端流量采集和分析系統能夠應用的基礎。本文分析了同源同宿的原理,提出了3 種同源同宿技術方案,并從多方面對比分析了方案的優缺點,給出了同源同宿方案建議。從額外增加端口等角度分析,建議主要選擇流量互導同源同宿方案。本文的研究成果可為運營商流量采集和分析系統建設提供參考。