基於sketch的網路測量方法介紹
一、背景
網路測量是SDN發展的重要基礎。網路狀態監測、網路故障分析、網路安全防禦,乃至於網路智慧化,都依賴於網路測量。作為網路測量前沿研究的主流,基於sketch的高速流量網路測量,是網路領域頂級會議SIGCOMM近兩年的研究熱點,包括SIGCOMM’17的 SketchVisor[1] 和SIGCOMM’18的SketchLearn[2]、ElasticSketch[3]等。
sketch的網路測量與SDN結合,具有天然特性。一方面,SDN雲資料中心的大量部署,需要基於sketch的高速流量網路測量,因為sketch能進行大流和異常流的檢測,不佔用過多的計算和空間資源。另一方面,SDN 轉控分離,控制器具有全域性視野,能對網路進行排程、制定策略,實時提供網路資訊,有利於sketch的應用實施。
當前的網路流量測量,主要有抽樣技術和資料流技術兩種方法。抽樣技術為每條流維護一個獨立的計數器,較高的抽樣速率需要消耗大量的效能資源。資料流技術利用雜湊將龐大資訊壓縮到較小的空間內,目前被廣泛應用的是基於 sketch 的網路測量方法。
sketch 是一種基於雜湊的資料結構,可以在高速網路環境中,實時地儲存流量特徵資訊,只佔用較小的空間資源,並且具備在理論上可證明的估計精度與記憶體的平衡特性。基於sketch的網路測量,目前主要有ReversibleSketch[4]、OpenSketch[5]、Sketchvisor[1]等相關改進及實現。
二、Sketch 的原理
sketch是基於雜湊的資料結構,通過設定雜湊函式,將具有相同雜湊值的鍵值資料存入相同的桶內,以減少空間開銷。桶內的資料值作為測量結果,是真實值的近似。利用開闢二維地址空間,多重雜湊等技術減少雜湊衝突,提高測量結果的準確度。Count-Min[7] 是一種典型的 sketch ,在 2004 年被提出。實際上 Count-Min sketch 用到的是分類的思想:將具有相同雜湊值的網路流歸為一類,並使用同一個計數器計數。
如何處理包
當高速網路流量到來時,逐個記錄所有流量的資訊,會帶來巨大的計算和空間資源開銷。而網路測量往往也無需記錄所有的資訊。
Count-Min sketch由多個雜湊函式(f1……fn)和一張二維表組成。二維表的每個儲存空間維護了一個計數器,其中每個雜湊函式分別對應表中的每一行。當一個網路流到來時,需要經過每個雜湊函式 f1……fn 的處理,根據處理得到的雜湊值分別存入每一行對應雜湊值的計數器。有幾個雜湊函式,就要計算幾次。算完後,取這m個計數器中的最小值,作為測量的最終值。
圖1 Count-Min sketch 結構示意
設計考量
測量值偏大:使用雜湊的方法會產生衝突,多個網路流資料雜湊到同一個桶內,那麼這個桶的計數值就會偏大。
1.為什麼允許有誤差:在高速網路條件下,若把所有信息都準確地記錄下來,要消耗大量計算和空間開銷,無法滿足實時性;而且在很多情況下,並不需要非常精確的測量資料,在一定程度上可靠的估計值,便足以滿足需求。
2.為什麼要設定多個雜湊函式:如果只設置一個雜湊函式,多個流資料存入同一個桶,誤差就會很大。通過設計多個雜湊函式,減少雜湊值的衝突,以減少誤差。每個流都要經過所有雜湊函式的處理,存入不同的計數器中。計數器的最小值雖然還是大於等於真實值,但最接近真實值。這也是 “ Count-Min ”的由來。
3.雜湊函式個數:雜湊函式越多,衝突越少,測量值越精確,但計算開銷大。需要權衡測量精度和準確度,來設定合適的雜湊函式個數。
為了幫助理解sketch的原理,這裡從一個例子講起:
小周是全市的快遞中轉站的負責人(SDN控制器),他需要合理地分配人員的職責,制定分配的策略(全域性排程)。他需要了解每個區的包裹數等資訊(測量資訊),以便完成人員分配。起初,他把每個包裹的資訊都記錄下來,並且讓百分之八十的人負責統計每個區的包裹數量。
可是這裡的包裹有成千上萬之多(高速網路環境),統計人員算得滿頭大汗(計算資源開銷大),記了幾十頁的紙(空間資源開銷大),算得暈頭轉向。而另一頭,快遞員的數量太少,每個區的包裹,都沒有送完。
他意識到,記錄所有包裹的所有資訊,是沒有必要的(精度要求降低)。他的目標,是合理地分配每個區的快遞員數量,他只需要瞭解每個區大致(估計)的包裹量即可(基於sketch的方法)。而且他發現,分類包裹這件事不應成為中轉站的負擔(減少測量開銷),讓快遞的正常配送無法完成。
於是,他只留下幾個人,讓其他人負責配送包裹。相同區的包裹記在同一個區(計入同一個桶內),並且只需大致計算每個區的包裹數即可(近似)。這樣一來,統計速度明顯快了許多,用了一兩張紙就把資料記完了。得出資料後,得知 A 區的包裹數最多,而 B 區的最少,小周將 B 區的大部分快遞員分配到 A 區,不僅完成了昨天的配送,今天的配送也早早地完成(實時性)。
網路流經過網路結點時,需要制定合理的控制策略完成網路流的高效排程。網路流控制策略的制定,首先需要網路測量提供的流量資訊。當流量較小時,如果將每個流的資訊都記錄下來,消耗計算和空間的資源並不大。
但是,當SDN 控制器進行全域性排程時,有高速的流量通過。若將所有資訊都一一記錄下來,將大大佔用網路資源,成為網路的負擔。而且很多情況下,得到流量的估計值就足以滿足任務的需求,記錄所有資訊是沒有必要的。
此時,基於 sketch 的方法,利用雜湊技術對網路流進行粗粒度的分類,得出測量的估計值,滿足高速環境下實時測量的需求,節約計算和空間的開銷。
三、sketch研究熱點
sketch 是網路測量研究領域的熱點問題,在如 SIGCOMM 等網路領域頂級會議中,提出了一系列關於 Sketch 的解決方案 其中包括 SIGCOMM‘17 的 sketchvisor[1] 和 SIGCOMM’18 的SketchLearn[2] 和 ElasticSketch[3],現簡單介紹基於 sketch 的研究熱點,主要分為sketch的資料結構和sketch的測量框架。
Sketch的資料結構
● Count-min sketch [7] 通過設定多個雜湊函式減少雜湊衝突,將計數器的最小值作為測量結果,是一種典型的 sketch。
● 基於 sketch 的方法常常被用來檢測大流和異常流,但是無法根據測量資訊推出資訊來源。而 Reversible sketch [4] 可以解決這個問題,推斷出資訊的來源。
● SeqHash [8]應用於入侵防禦、大流檢測,優點是快速精確,資源開銷小。
● top-k[9] 應用於檢測資料流中最常見元素,優點是空間開銷小,速度快。
基於Sketch的測量框架
● NSDI’13 的 OpenSketch [5],首次將 sketch 應用在 SDN 中,是此類論文的的開山之作。
● LD-Sketch [6]將基於計數的方法和基於 sketch 的方法結合,用於檢測 heavy hitter 和 heavy changers,保持了一定的準確度和穩定性。
圖2 SketchVisor 結構示意
● SIGCOMM’17 上的 Sketchvisor [1]是基於 sketch 的測量框架,將過載流量匯入 Fast Path, 完成高速環境下測量。
● SIGCOMM’18 的 SketchLearn [2]通過解耦資源配置和精確度的引數,利用自動統計推斷提取流量資料。
● 在多變的環境下,測量的效能會受到到很大的影響, SIGCOMM’18 的 ElasticSketch [3]對此設計了一個可以根據環境動態調整的測量框架,保持測量的穩定性和準確率。
四、總結
● 高管理能力對網路測量的 效能 、 準確率 、 資源開銷 提出了更高的要求。
● Sketch 是一種 基於雜湊的資料結構 ,可以在高速網路環境中,實時地儲存流量特徵資訊,只佔用較小的空間資源,並且具備在理論上可證明的估計精度與記憶體的平衡特性。
● Count-min [7]是一種典型的 sketch ,用到的是 分類的思想 :將具有相同雜湊值的網路流歸為一類,並使用同一個計數器計數。
● 基於 Sketch 的方法是當下 主流和熱門 的網路測量方法,有著廣泛的應用和前景。
原文釋出時間為:2018-11-15
本文作者: 周政演
本文來自雲棲社群合作伙伴“ ofollow,noindex">SDNLAB ”,瞭解相關資訊可以關注“ SDNLAB ”。