网络流量测量与异步更新:原理、挑战与解决方案
1. 异步更新与协议状态
在网络协议中,单向周期性状态发送在负载均衡和 FCVC 协议中具有重要作用。单向不变性是指仅涉及两个节点和一条链路变量的不变性,而像图 15.2 中的流量控制协议的不变性则使用了两条链路上的变量。周期性状态发送结合超时机制被认为是构建可靠互联网协议的一种技术,但图 15.2 的示例表明,软状态方法可能仅在协议不变性为单向时才有效。
对于负载均衡,除了每个通道上与发送方和接收方轮数相关的单向不变性外,还有一个全局不变性,即在无数据包丢失的情况下,通道轮数相差不超过 1。当因丢失导致违反该不变性时,接收方会通过跳过操作来强制执行该节点不变性。
即使在可以向信元添加序列号的情况下,逻辑接收也有助于简化重新排序的实现。一些重新排序器使用快速并行硬件排序电路来重新组装数据包,但如果使用逻辑接收,这种电路就显得多余。逻辑接收在正常情况下就足够了,在罕见的错误情况下,通过缓慢扫描查找匹配的序列号也能满足需求。需要注意的是,如果添加了序列号,就可以保证先进先出(FIFO)交付,这与图 15.4 中的协议不同。
2. 异步更新的实现与挑战
在增量算法中,与快速搜索操作并发工作的原子更新是必要的。例如,在插入前缀时,需要添加新节点并调整指针,同时要尽量减少对搜索过程的阻塞。一种简单的无锁方法是先完全构建新节点,然后通过一次原子写入操作来调整指针。
然而,这种设计存在许多微妙之处,尤其是在面对流水线等复杂情况时。以第一个桥接器实现为例,在处理向包含不同键的长列表中添加新条目(如 A)的问题时,有两种标准方法:
- 双副本方法