Sketching the Delay: Tracking Temporally Uncorrelated Flow-Level Latencies研读笔记

文章目录

  • Simple Delay Sketch (SDS)
  • Lossy Difference Sketch (LDS)

这篇文章提出了一个用梗概(sketch)来测量数据流的延迟的方法. 为测量数据流的延迟, 我们首先需要确定一个场景, 就是我们有两个网络节点A和B, 数据流有 n n n个数据包, 每个数据包经过这两个节点都会经历一个延迟, 而我们需要测量的是这 n n n个数据包所经历的延迟的平均值. 这里的A和B两个节点可以定义成为任意网络节点, 而不一定是数据包的发送方和接收方, 也不一定是一个网络的入口和出口. 此外, 我们假设网络节点有现成的方案来分辨我们需要测量的数据包, 即如果网络节点B能够分辨出没有经过网络节点A的数据包, 因此不会对它们进行测量. 最后, 我们假设网络节点A和B的时钟是同步的, 因此我们可以用数据包经过B时候的时间戳和经过A时候的时间戳的差来表示数据包的延迟.

这篇文章实际上提出了两个不同的方案来测量流级别的网络延迟. 第一种方案假设数据包携带了它到达网络节点A时候的时间戳, 但是修改数据包并使其携带一个时间戳在很多情况下并不可行, 所以本文提出了第二种方案, 这种方案不要求数据包携带时间戳. 以下我们将对这两个方案进行简要的介绍.

Simple Delay Sketch (SDS)

我们维护了 R R R个哈希表, 每个哈希表对应于一个不同的哈希函数. 这些哈希表中, 每个哈希桶都包含两个域 s s s n n n. 当一个数据包到达网络节点A的时候, 它就会把当前时间以时间戳的形式写入数据包. 之后, 数据包到达B的时候, B就会将这个时间戳提取出来, 并用当前时间减去这个时间戳来获取一个数据包的传输延迟 τ \tau τ. 接着, B将数据包的流标识符依次映射到这 R R R个哈希表中. 对于每一个这个数据包映射到哈希桶, 我们都进行如下操作:
s ← s + τ , n ← n + 1 s \gets s + \tau, n\gets n + 1 ss+τ,nn+1
如下图所示.
Sketching the Delay: Tracking Temporally Uncorrelated Flow-Level Latencies研读笔记_第1张图片
最后, 当我们要估计一个数据流的延迟的时候, 我们将这个数据流的流标识符分别映射到这 R R R个哈希表, 这样我们就会得到 R R R个不同的哈希桶. 在这些哈希桶中, 我们选取 n n n的值最小的哈希桶, 并使用 s n \frac{s}{n} ns的方式来计算当前数据流的延迟, 具体的算法流程可见下图. 这里我们选取 n n n的值最小的哈希桶, 是因为这个哈希桶中当前数据流所占的权值最高, 所以一般情况下这个值最接近当前数据流的传输延迟.
Sketching the Delay: Tracking Temporally Uncorrelated Flow-Level Latencies研读笔记_第2张图片

Lossy Difference Sketch (LDS)

如前所述, SDS要求每个数据包都必须携带它经过节点A时候的时间戳, 但是这在很多场景下是不可行的, 因此文章提出了一个改进的方案 LDS. 和SDS类似, 在LDS中我们也维护了

你可能感兴趣的:(网络,科研,算法)