作者 托马斯·蒂耶里 – 2025年6月26日
感谢 莱昂纳德·蒙桑尼翁、卡斯帕·施瓦茨-施希林、朱利安·马、安德斯·埃洛森、劳尔·克里帕拉尼、扬·冯兰滕、切萨巴·基拉伊和马尔科·穆尼萨加对本文早期版本提供的宝贵反馈和意见。
高效过滤:对于其他候选对等节点(例如,8个候选对等节点中的剩余5个),节点应用智能过滤器。只有当到该对等节点的出站链路比刚刚到达消息的入站链路更快时,才转发消息。这个简单的"下坡"规则(延迟出站 < 延迟入站)有效地修剪了沿较慢路径的冗余转发,从而节省带宽。重要的是,对于任何被这种高效推送遗漏的节点,现有的元数据懒惰传播(IHAVE消息)作为后备,确保最终100%的网络覆盖。
实践中的本地"下坡"决策
每个libp2p节点已经跟踪每个对等节点的新鲜往返时间(RTT),通过ping协议每10-15秒刷新一次。当第一个完整的消息副本到达时,节点记录其到达的链路的RTT(延迟入站)。然后,它只将消息转发给存储的RTT(延迟出站)严格小于延迟入站的对等节点(可选地减去1-2毫秒的安全边距)。这个单一比较 - "这个链路是否比刚使用的链路更快?" - 实现了下坡规则;不需要全局视图或额外的信令。
在不久的将来,我们打算通过利用QUIC的原生RTT观测而不是仅依赖周期性ping来进一步提高这种启发式方法的准确性和响应性(感谢Raul)。QUIC作为传输层协议持续监控RTT,使节点能够在没有额外开销的情况下访问近乎即时的延迟数据。这种集成将大大完善WFR-Gossip的延迟感知决策,提高在现实网络条件下的效率和响应性。
这里是一个简单的示例,用于说明这种逻辑:消息从A开始并发送到B。想象一条线上有三个节点:A --(10ms)--> B --(20ms)--> C。
- Gossipsub:
B接收消息并将其转发给其网格中的每个其他对等节点(最多八个),即使某些链路明显较慢。(它确实跳过了在同一连接上向A发送消息,但重复消息仍可通过较慢的备用路由到达A和许多其他对等节点。) - WFR-Gossip:
B从A接收消息(延迟入站=10ms),并且只会转发给C,因为其连接较慢(延迟出站=20ms),正确地阻止了向A的冗余反向消息,因为10ms不小于10ms。
这种混合方法是一种实用的算法,其目标与抽象数学相同:每个节点通过遵循这些本地规则,作为一个集体过程中的代理,将消息分发推向最优状态,并且尽量减少浪费的努力。
WFR-Gossip与贪婪的基于延迟的路由
纯粹基于延迟的路由方法,仅沿最快的可用路径转发消息,可能无意中造成瓶颈、局部最小值和对延迟测量的操纵漏洞。WFR-Gossip通过其混合启发式方法解决这些问题:鲁棒性参数(Drobust)保证多个独立的传播路径以防止停滞,而"下坡"延迟过滤器选择性地修剪冗余的较慢路由。此外,与Gossipsub现有的对等节点评分机制集成可以减轻恶意对等节点操纵延迟的风险。
WFR-Gossip与结构化拓扑感知协议
拓扑感知协议,如动态最优图(DOG),需要明确构建和维护结构化网络拓扑,增加了复杂性、开销和处理节点流失的挑战。WFR-Gossip通过利用现有的随机网络连接和轻量级本地往返时间测量完全避免了这些开销,使其更简单且本质上更具弹性。
然而,WFR-Gossip的简单性存在权衡。通过优先修剪较慢的链接,带宽较低或延迟较高的节点可能更多地依赖较慢的惰性gossip后备(IHAVE/IWANT),可能增加消息延迟。其对本地往返时间测量的依赖还引入了对往返时间操纵攻击的敏感性。这两个问题可以通过仔细调整参数和Gossipsub的对等节点评分机制来缓解,但在测试现实或对抗性网络条件下的WFR-Gossip时需要牢记这一点。
WFR-Gossip与反应式Gossipsub扩展(CHOKE,IDONTWANT)
像CHOKE和IDONTWANT这样的扩展通过在检测到重复后限制重复消息传播来回顾性地管理冗余。WFR-Gossip则通过基于本地延迟(往返时间)信息预先做出明智的转发决策,主动避免重复。因此,WFR-Gossip可以补充这些现有的反应式机制,并提供改进的带宽利用、降低延迟和整体性能提升。
未来工作和未解决的问题
- 在客户端中部署带有功能标志的WFR-Gossip(例如开发网络/性能网络),并使用libp2p模拟器从更真实的网络中收集指标
- 深入研究WFR-Gossip与最近的Gossipsub优化(
IWANT,IDONTWANT,CHOKE)之间的交互 - 探索其他"主动"机制,在不牺牲鲁棒性/弹性的情况下提高效率





