如果有人不实施拥塞控制怎么办?

网络工程 通讯协议 拥塞
2021-07-13 07:15:25

我正在阅读有关 TCP 并遇到拥塞控制的主题,其中 TCP 发送方负责遵守流量控制和拥塞控制消息以防止网络拥塞。如果发送方决定不收听拥塞控制消息并继续以高速率发送数据包,会发生什么?是否有某种方法可以保护网络免受此类设备的侵害,因为这些设备似乎是一种安全威胁?我在教科书中找不到这个问题的答案,谷歌也没有太大帮助,所以决定在这里提问。

3个回答

TCP 客户端强制执行的拥塞控制并不是为了保护网络,它只是尝试确定该特定客户端在那个时间点可靠可用的最大网络资源。

由于 TCP 是一个可靠的协议(确认每个数据包),任何数据包丢失(例如由拥塞引起)都会导致 TCP 连接变慢以执行重传,拥塞控制试图限制这些重传以加快连接速度。

拥塞总是发生在您的网络上,作为网络工程师,您应该始终假设客户端不受信任,因此您需要(受信任的)网络中的工具来保护您免受其流量的影响。

查看服务质量、调度和队列等工具。简而言之,您应该在您的网络上实施策略,因此像网络控制 OSPF 流量这样的高优先级流量不应具有与从 YouTube 下载视频的人相同的服务级别,这样客户端拥塞就不会影响您网络上的其他服务。

如果发送方决定不收听拥塞控制消息并继续以高速率发送数据包,会发生什么?

我认为拒绝遵守拥塞控制算法的发送方正在尝试 DoS 攻击。对我来说,这类似于说“我不在乎你是否收到太多数据、乱序和丢失数据。无论如何我都会发送它,即使你不接受。”

如果你的时间,RFC 5681是不是读的不好的。特别是如果你需要一些东西来帮助你入睡。

好消息是,属于此类别的发件人发送的内容将多于接收的内容,这意味着您可以在流量到达您的边界之前毫不费力地将其丢弃。如果您正在监控主机带宽使用情况,这也很容易检测。但是,如果您是接收方,您可能会遇到更多困难。这是网站管理员经常与之抗争的事情。

是否有某种方法可以保护网络免受此类设备的侵害,因为这些设备似乎是一种安全威胁?

我将重申我上面所说的,尝试类似操作的主机应被视为受到损害。这是异常的主机行为。QoS 将有助于最大限度地减少内部影响,但对主机的控制更为重要(更不用说当您的 ISP 抱怨时 CYA)。

为了补充 Ryan Foley 和 iTom 的出色答案,我只想从非恶意或受感染主机的角度提一下简短的说明。

在 TCP 中,任何没有通过的数据包都必须重新传输。如果我,作为发送方,决定忽略来自接收方的拥塞指示,并继续尽可能快地发送流量,我只是在踢自己的脚,因为接收方迟早会请求重新传输和我将不得不做两倍的工作来发送相同数量的数据包。

这就是为什么您通常不会看到发送方忽略拥塞指示的原因,因为遵守拥塞控制规则并减慢传输速度对双方(发送方接收方)都有好处(同样,这仅与非恶意场景相关 - 请参阅其他答案以了解在可疑情况下对这种情况的正确响应)

另一种看待它的方式:如果你想用消防软管给茶杯装水,与你使用普通水龙头相比,它会花费更多的精力和时间。