跳到主要内容

18.3 分裂路径

18.3 分裂路径

在某些场景中, 恶意或损坏的路由器可能只能访问一个流中的一部分分组. 问题如下: 该路由器通过改变其能够访问的分组子集中的 ECN field, 是否能比简单丢弃这组分组对该流造成更大伤害?

我们将一个流中的分组分类为 A packets 和 B packets, 并假定攻击者只能访问 A packets. 假定攻击者仅沿 A packets 的传输路径破坏端到端拥塞控制, 做法是在 A packets 路径上发生拥塞的位置上游错误指示 ECN-capability, 或在下游清除拥塞指示. 还考虑存在一个监测设备可以同时看到 A 和 B packets, 并且如果它判定聚合流没有正确响应拥塞指示, 就会 "penalize" A 和 B packets. 我们认为另一个可能为真的关键特征是, 监测设备在 "penalizing" A&B flow 之前, 会首先丢弃分组而不是设置 CE codepoint, 并会丢弃来自该流且已设置 CE codepoint 的到达分组. 如果端节点实际上正在使用端到端拥塞控制, 它们将看到监测设备看到的所有拥塞指示, 并开始响应这些拥塞指示. 因此, 监测设备在早期阶段成功地向该流提供了指示.

确实, 只能访问 A packets 的攻击者可以通过破坏基于 ECN 的拥塞控制, 拒绝 A&B aggregate 中其他分组获得 ECN 的收益. 虽然这是不希望发生的, 但这不足以成为主张禁用 ECN 的理由.

错误报告拥塞的一种变体是在路径上有两个攻击者, 第一个攻击者错误报告拥塞, 第二个攻击者 "clears" 这些报告. (不同于分组丢弃, ECN 拥塞报告可以在网络后续位置被恶意或损坏的路由器 "undone". 但使用 ECN nonce 可以帮助传输层检测这种行为.) 虽然这对端节点是透明的, 但位于两个攻击者之间的监测设备可以看到错误的拥塞指示. 请记住本文档中的建议: 在因流未适当响应拥塞而 "penalizing" 这些流之前, 路由器应首先切换为丢弃分组而不是标记分组. 在这种情况下, 即使第二个攻击者成功清除了第一个攻击者发起的错误拥塞报告, 端节点也将再次收到拥塞指示.