One Sketch to Rule Them All: Rethinking Network Flow Monitoring with UnivMon阅读笔记

D(m,n)D(m, n)是一个长度为mm, 包含nn个不同元素的信息流 (stream). 假设这些元素分别为[1,2,,n][1, 2, \cdots, n], fif_i是元素在信息流中ii的频数. 假设g()g()是任意一个函数, 则我们将i=1ng(fi)\sum_{i=1}^ng(f_i)称为频数向量的gsumg-sum.

如果g()g()是单调函数并且g(fi)O(fi2)g(f_i)\le O(f_i^2), 则用于估计GsumG-sum的具有多重对数型空间复杂度的信息流算法(streaming algorithm)是存在的.

StreamPolyLogStream-PolyLog是所有存在对应的多重对数型空间复杂度的信息流算法的GsumG-sum的集合.

对于元素i[1,2,,n]i \in [1, 2, \cdots, n], 如果g(fi)>γjg(fj)g(f_i) > \gamma\sum_jg(f_j), 其中0<γ<10 < \gamma < 1, 则我们称ii为一个g-重型元素 (g-heavy element 或 g-heavy hitter). GcoreG-core是所有g-重型元素的集合.

已有文献证明, 对于元素[1,2,,n][1, 2, \cdots, n], 它的频率向量是[f1,f2,,fn][f_1, f_2, \cdots, f_n], 如果某个元素是频率向量的L2范数的重型元素, 则它也是这个频率向量的g-重型元素.

UnivMon包括两部分, 即在线测量部件和离线估计部件. 在线测量部件的工作流程如算法1所示. 其工作流程可具体描述如下.信息流D(m,n)={a1,a2,,am}D(m, n) = \{a_1, a_2, \cdots, a_m\}中共有nn个不同的元素. 令d=log2nd=log_2 n. 我们建立d+1d+1个梗概. 我们将这些梗概分别记为S0,S1,,SdS_0, S_1, \cdots, S_d. 此外, 梗概S1,S2,,SdS_1, S_2, \cdots, S_d分别对应于哈希函数h1,h2,,hdh_1, h_2, \cdots, h_d, 且hk() (k=1,2,,n)h_k()~(k = 1, 2, \cdots, n)可以将一个元素随机地映射到0或者1. 当元素aia_i到达的时候, 我们将其插入S0S_0中, 并且在其上查找L2-重型元素, 并将找到的重型元素插入Q0Q_0中. 之后, 对于Si (i=1,2,,d)S_i~(i = 1, 2, \cdots, d), 我们依次进行如下操作: 如果h1(ai)h2(ai)hi(ai)=1h_1(a_i)\cdot h_2(a_i) \cdots h_i(a_i) = 1, 则我们将aia_i插入梗概SiS_i中, 并且在SiS_i上查找L2重型元素, 之后将找到的重型元素存入QiQ_i中.

One Sketch to Rule Them All: Rethinking Network Flow Monitoring with UnivMon阅读笔记

以上过程处理完成以后, 我们就得到了d+1d+1个序列Q0,Q1,,QdQ_0, Q_1, \cdots, Q_d, 分别用于从数据平面的梗概S0,S1,,SdS_0, S_1, \cdots, S_d从提取出来的L2重型元素. 之后我们使用算法2来获取对GsumG-sum的估计, 即对0ng(fi)\sum_0^n g(f_i)的估计. 在算法2中, wj(i)w_j(i)QjQ_j中的第ii个哈希桶中的元素的计数值.
One Sketch to Rule Them All: Rethinking Network Flow Monitoring with UnivMon阅读笔记
为什么这两个算法是有效的, 我现在也不太明白. 我打算进一步调研原来文章中给出的相关文献, 理清这两个算法的内在逻辑. 我弄清楚并做好笔记以后会在这里给出链接.