文章信息
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
文章内容
问题描述
这篇文章研究的问题是, 当数据包在交换机/路由器中因为排队延迟而经历了拥塞的时候, 判断到底是哪一个数据流导致的网络拥塞. 具体而言, 假设数据包
(其流标识符为
)到达和离开交换机的时间分别为
和
, 且
, 则求
, 其中
即
为在时间段
内离开交换机的属于数据流
的数据包占在相同时间段内离开交换机的数据包总数的比例.
算法描述
假设交换机中的缓冲区长度为 , 出端口带宽为 , 则一个数据包在缓冲区中的最大排队延迟为 . 我们取一个对数据包的观测窗口 , 且令 . 我们建立 个CMS (Count-Min Sketch). 每一个数据包在离开交换机之前, 都会挨个经过这些CMS, 同时对这些CMS进行更新. 具体的更新策略为, 当一个数据包 于时间 离开交换机的时候, 我们就将这个数据包根据它的流标识符将它映射到序号为 的CMS中, 并将这个数据包添加到这个CMS中.
而对于序号为 的CMS, 我们则会将它的哈希桶置零. 将一个CMS置零的方式为, 我们为这个CMS建立一个计数器 . 每当一个数据包到达的时候, 我们就令 , 然后将这个CMS的每一行中序号为 的哈希桶置零, 其中 是这个CMS的一行中哈希桶的数目. 如果在一个长度为 的时间段, 交换机处理的数据包太少, 导致这个CMS没有被完全置零, 则我们需要请求控制平面的帮助, 通过控制平面的指令将其置零.
对于序号为 的CMS, 我们需要查询数据流 的长度, 并将这些长度聚合起来, 形成数据流 在 之内离开交换机的数据包数.