Fine-Grained Queue Measurement in the Data Plane研读笔记

文章信息

X. Chen et al., “Fine-Grained Queue Measurement in the Data Plane,” in Proceedings of the 15th International Conference on Emerging Networking Experiments And Technologies, Orlando, Florida, Dec. 2019, pp. 15–29

文章内容

问题描述

这篇文章研究的问题是, 当数据包在交换机/路由器中因为排队延迟而经历了拥塞的时候, 判断到底是哪一个数据流导致的网络拥塞. 具体而言, 假设数据包 i i (其流标识符为 f i f_i )到达和离开交换机的时间分别为 a i a_i d i d_i , 且 d i a i τ d_i - a_i\ge \tau , 则求 α \alpha , 其中
α = { j ( a i d j < d i ) & ( f j = f i ) } { j a i d j < d i } \alpha = \frac{|\{j | (a_i \le d_j < d_i)\&(f_j = f_i)\}|}{|\{j | a_i \le d_j < d_i\}|}
α \alpha 为在时间段 [ a i , d i ) [a_i, d_i) 内离开交换机的属于数据流 f i f_i 的数据包占在相同时间段内离开交换机的数据包总数的比例.

算法描述

假设交换机中的缓冲区长度为 l l , 出端口带宽为 r r , 则一个数据包在缓冲区中的最大排队延迟为 T m a x = l r T_{max} = \frac{l}{r} . 我们取一个对数据包的观测窗口 T T , 且令 h = T m a x T h=\lceil\frac{T_{max}}{T}\rceil . 我们建立 h + 2 h+2 个CMS (Count-Min Sketch). 每一个数据包在离开交换机之前, 都会挨个经过这些CMS, 同时对这些CMS进行更新. 具体的更新策略为, 当一个数据包 i i 于时间 d i d_i 离开交换机的时候, 我们就将这个数据包根据它的流标识符将它映射到序号为 d i T % ( h + 2 ) \lfloor\frac{d_i}{T}\rfloor\%(h+2) 的CMS中, 并将这个数据包添加到这个CMS中.

而对于序号为 ( d i T + 1 ) % ( h + 2 ) (\lfloor\frac{d_i}{T}\rfloor + 1)\%(h+2) 的CMS, 我们则会将它的哈希桶置零. 将一个CMS置零的方式为, 我们为这个CMS建立一个计数器 n n . 每当一个数据包到达的时候, 我们就令 n n + 1 n\gets n + 1 , 然后将这个CMS的每一行中序号为 n % C n\%C 的哈希桶置零, 其中 C C 是这个CMS的一行中哈希桶的数目. 如果在一个长度为 T T 的时间段, 交换机处理的数据包太少, 导致这个CMS没有被完全置零, 则我们需要请求控制平面的帮助, 通过控制平面的指令将其置零.

对于序号为 a i T % ( h + 2 ) , , ( d i T 1 ) % ( h + 2 ) \lceil \frac{a_i}{T}\%(h+2)\rceil, \cdots, (\lfloor\frac{d_i}{T}\rfloor - 1)\%(h+2) 的CMS, 我们需要查询数据流 f i f_i 的长度, 并将这些长度聚合起来, 形成数据流 f i f_i [ a i , d i ) [a_i, d_i) 之内离开交换机的数据包数.

猜你喜欢

转载自blog.csdn.net/nankai0912678/article/details/106124688