網絡測量中基於Sketch方法的簡單介紹
阿新 • • 發佈:2018-08-10
cnblogs 地址空間 ket ++ 分類 hash 分配 num ati
Sketch介紹
為什麽要用Sketch
- 網絡流主要根據五元組、主機地址、包的大小來分類。在網絡中存在各種各樣的包,如果按照上述分類方法,對每一種包都分配一個計數器來儲存,雖然測量準確,那麽存放計數器的空間開銷會非常大。所以使用哈希的方法,根據哈希值的範圍來確定的所需的存儲空間,各種包根據哈希值再次歸類,可以大大減少存儲空間。這樣使用哈希來估計流的方法稱為Sketch-based方法。
Count-min sketch
如何處理包
- 使用哈希的方法會產生沖突,多個種類的包哈希到同一個桶內,那麽這個桶的計數值就會偏大,為了減少誤差,設計了count-min sketch
- 設置多個哈希函數,開辟一個二維地址空間,包經過不同哈希函數的處理,得到對應的哈希值,而這個哈希值就是sketch(概要)。這些哈希值可能產生沖突,多個種類的包可能有相同的哈希值,則根據哈希值來確定包出現的次數則會偏大,所以設立多個哈希函數,取最小的哈希值,則最接近實際包數據。
count-min sketch 某種實現
class CountMinSketch { long estimators[][] = new long[d][w] // d and w are design parameters long a[] = new long[d] long b[] = new long[d] long p // hashing parameter, a prime number. For example 2^31-1 void initializeHashes() { //初始化hash函數family,不同的hash函數中a,b參數不同 for(i = 0; i < d; i++) { a[i] = random(p) // random in range 1..p b[i] = random(p) } } void add(value) { for(i = 0; i < d; i++) estimators[i][ hash(value, i) ]++ //簡單的對每個bucket經行疊加 } long estimateFrequency(value) { long minimum = MAX_VALUE for(i = 0; i < d; i++) minimum = min( //取出最小的估計值 minimum, estimators[i][ hash(value, i) ] ) return minimum } hash(value, i) { return ((a[i] * value + b[i]) mod p) mod w //hash函數,a,b參數會變化 } }
Count-min sketch分析
- 優點:
- 空間利用率和1/ε成比例(從1/ε^2降到1/ε);
- 亞線性的更新時間
- 只需要構建相互獨立的哈希函數,簡單方便部署
- 這個sketch可以應用於多種應用和查詢
- 所有常量都是精細且小的
- 缺點: 對於大量重復的element或top的element比較準確,但對於較少出現的element準確度比較差
現有方法及其改進
- 現有sketch方法大多是針對某個特定問題的求解,不具有普遍性
- SketchVisor可以選擇多種sketch方法以應對不同種類的問題,對於過載流量,則將它導入fast path
sketch的優缺點
- 瓶頸:hash的計算開銷和堆的維護開銷,更新計數器和對包的頭部的處理
- 優勢:節省內存,理論上的可靠性
通過哈希函數的設置、減少開銷
sketch檢測大流
- 對流的大小設定一個閾值,當超過這個閾值時,報出大流。但是這個閾值通常是不可預知的,為了防止誤報,需要檢測所有可能出現的流大小,以確定這個閾值。由於需要檢測的流非常多,所以在確定閾值上要花費很多時間。
總結
- Sketch是使用哈希來進行估計網絡流的一種測量方法,可以減少存儲開銷
- Count-Min Sketch取多個哈希函數的最小哈希值作為網絡流的估計,實現簡單,空間開銷較少
- SketchVisor可以選擇多種sketch方法以應對不同種類的問題,對於過載流量,則將它導入Fast path
- 瓶頸主要在hash的計算開銷、堆的維護開銷、更新計數器、對包的頭部的處理
- 優勢主要在理論上的可靠性,節省內存
參考文獻
- https://www.cnblogs.com/fxjwind/p/3289221.html
- SketchVisor: Robust Network Measurement for Software Packet Processing
- An improved data stream summary: the count-min sketch and its applications
網絡測量中基於Sketch方法的簡單介紹