0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为何要进行拥塞控制?如何知道网络的拥塞情况?

454398 ? 来源:博客园 ? 作者:帅地玩编程 ? 2020-11-03 11:02 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

大家可能都听说过拥塞控制和流量控制,想必也有一些人可能还分不清拥塞控制和流量控制,进而把他们当作一回事。拥塞控制和流量控制虽然采取的动作很相似,但拥塞控制与网络的拥堵情况相关联,而流量控制与接收方的缓存状态相关联。

也就是说,拥塞控制和流量控制是针对完全不同的问题而采取的措施。今天这篇文章,我们先来讲讲拥塞控制。

一、为何要进行拥塞控制?

为了方便,我们假设主机A给主机B传输数据。

我们知道,两台主机在传输数据包的时候,如果发送方迟迟没有收到接收方反馈的ACK,那么发送方就会认为它发送的数据包丢失了,进而会重新传输这个丢失的数据包。

然而实际情况有可能此时有太多主机正在使用信道资源,导致网络拥塞了,而A发送的数据包被堵在了半路,迟迟没有到达B。这个时候A误认为是发生了丢包情况,会重新传输这个数据包。

结果就是不仅浪费了信道资源,还会使网络更加拥塞。因此,我们需要进行拥塞控制。

二、如何知道网络的拥塞情况?

A与B建立连接之后,就可以向B发送数据了,然而这个时候A并不知道此时的网络拥塞情况如何,也就是说,A不知道一次性连续发送多少个数据包好,我们也把A一次性连续发送多少个数据包称之为拥塞窗口,用N代表此时拥塞窗口的大小吧。

为了探测网络的拥塞情况,我们可以采取以下两种策略:

1、先发送一个数据包试探下,如果该数据包没有发生超时事件(也就是没有丢包)。那么下次发送时就发送2个,如果还是没有发生超时事件,下次就发送3个,以此类推,即N = 1, 2, 3, 4, 5.....

(图可能画的不大形象,,,,)

2、一个一个增加实在是太慢了,所以可以刚开始发送1个,如果没有发生超时时间,就发送2个,如果还是没有发送超时事件就发送4个,接着8个...,用翻倍的速度类推,即 N = 1, 2, 4, 8, 16...

无论是第一种方法还是第二种方法,最后都会出现瓶颈值。不过这里值得注意的是,第一种情况的增长速率确实有点慢,但是第二种情况以指数增长,增长速度有点太快了,可能一下子就到瓶颈值了。

为了解决这个过慢或过快的问题,我们可以把第一种方法和第二种方法结合起来。也就是说,我们刚开始可以以指数的速度增长,增长到某一个值,我们把这个值称之为阈值吧,用变量ssthresh代替。当增长到阈值时,我们就不在以指数增长了,而是一个一个线性增长。

所以最终的策略是:前期指数增长,到达阈值之后,就以一个一个线性的速度来增长。

(注:8之后其实是直线的,那里只是弯曲了一下)

我们也把指数增长阶段称之为慢启动,线性增长阶段称之为拥塞避免

三、到了瓶颈值之后怎么办?

无论是指数增长还是一个一个增长,最终肯定会出现超时事件,总不可能无限增长吧。当出现超时事件时,我们就认为此时网络出现了拥塞了,不能再继续增长了。我们就把这个时候的N的值称之为瓶颈值吧,用MAX这个字母来代替吧,即最大值。

注:这里再次提醒阈值过后是一个一个线性增长,图中之所以弯曲是因为我画图原因导致的。

当达到最大值MAX之后,我们该怎么办呢?

当到达最大值之后我们采取的策略是这样的:

我们就回到最初的最初的状态,也就是说从1,2,4,8.....开始,不过这个时候我们还会把ssthresh调小,调为MAX值的一半,即ssthresh = MAX / 2。

图中阈值为8,瓶颈值是14;超时事件发生后,阈值为14 / 2 = 7。

四、超时事件就一定是网络拥塞?

超时事件发送就一定是网络出现了拥堵吗?其实也有可能不是出现了网络拥堵,有可能是因为某个数据包出现了丢失或者损害了,导致了这个数据包超时事件发生了

为了防止这种情况,我们是通过冗余ACK来处理的。我们都知道,数据包是有序号的,如果A给B发送M1, M2, M3, M4, M5...N个数据包,如果B收到了M1, M2, M4....却始终没有收到M3,这个时候就会重复确认M2,意在告诉A,M3还没收到,可能是丢失了。

当A连续收到了三个确认M2的ACK,且M3超时事件还没发生。A就知道M3可能丢失了,这个时候A就不必等待M3设置的计时器到期了,而是快速重传M3。并且把ssthresh设置为MAX的一半,即ssthresh = MAX/2,但是这个时候并非把控制窗口N设置为1,而是让N = ssthresh,N在一个一个增长。

我们也把这种情况称之为快速恢复。而这种具有快速恢复的TCP版本称之为TCP Reno。

还有另外一种TCP版本,无论是收到三个相同的ACK还是发生超时事件,都把拥塞窗口的大小设为1,从最初状态开始,这种版本的TCP我们称之为TCP Tahoe。
编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 缓存
    +关注

    关注

    1

    文章

    246

    浏览量

    27385
  • 拥塞控制
    +关注

    关注

    0

    文章

    14

    浏览量

    8585
  • 流量控制
    +关注

    关注

    0

    文章

    28

    浏览量

    9831
  • 通信网络
    +关注

    关注

    22

    文章

    2081

    浏览量

    53224
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    从哈希极化到零拥塞:主动路径规划在RoCE网络中的负载均衡实践

    智算集群对网络性能,特别是高吞吐、低延迟和无损特性有着严苛要求,RoCE因此被广泛应用。然而,在主流Clos组网架构下,传统的ECMP路由机制存在天然的局限性,容易引发哈希极化问题,成为制约
    的头像 发表于 07-21 17:27 ?1098次阅读
    从哈希极化到零<b class='flag-5'>拥塞</b>:主动路径规划在RoCE<b class='flag-5'>网络</b>中的负载均衡实践

    AI网络管理新范式:精要解读超以太网联盟(UEC)1.0 规范(2025Q2)

    随着AI与高性能计算(HPC)集群对网络带宽、时延和拥塞管理的要求日益严苛,传统以太网在超大规模场景下面临瓶颈。为此,超以太网联盟(UEC) 在Linux联合开发基金会(JDF)下成立,致力于构建新一代高性能以太网标准。
    的头像 发表于 07-11 18:41 ?1412次阅读
    AI<b class='flag-5'>网络</b>管理新范式:精要解读超以太网联盟(UEC)1.0 规范(2025Q2)

    如何用AI负载为SONiC交换机调整ECN水线

    显式拥塞通知(ECN)是计算机网络中的一种机制,它允许发送设备明确地通知接收设备网络拥塞,而不是依赖于传统的“丢包”方法。在传统的TCP/IP网络
    的头像 发表于 07-11 14:12 ?1672次阅读
    如何用AI负载为SONiC交换机调整ECN水线

    RDMA简介7之可靠传输

    网络无损,需要进行严格的流量控制拥塞管理。流量控制指通过调整发送端的发送速率,确保接收端能够处理并接收所有数据包。RoCE v2使用了IE
    发表于 06-13 10:01

    如何利用先进网络技术实现可持续AI云服务

    随着 AI 技术的飞速发展,企业对云网络的高性能、低延迟和高可扩展性提出了更高的要求。AI 应用通常需要兼顾训练与推理,在处理海量数据和复杂的计算任务的同时,应对不可预测的突发和局部拥塞,这不仅对计算资源提出了挑战,也对网络基础
    的头像 发表于 05-16 10:41 ?591次阅读
    如何利用先进<b class='flag-5'>网络</b>技术实现可持续AI云服务

    使用NXP 88W8801芯片组进行iPerf3测试期间TCP中的周期性丢包现象,怎么解决?

    /secreceiver 带宽波动很大,并且在测试期间观察到频繁的重传 (Retr)。拥塞窗口 (Cwnd) 也变化很大,表明连接中可能存在不稳定。 主要观察: 带宽在 ~6.56 Mb/秒和 ~32.3
    发表于 04-02 06:53

    适用于数据中心和AI时代的800G网络

    提出了三大核心需求: 超低延迟和高带宽:确保大规模数据传输高效进行。 智能流量调度:采用自适应路由和负载均衡技术,减少网络拥塞。 性能隔离与稳定性:在多租户环境下保障带宽分配,防止性能
    发表于 03-25 17:35

    信而泰PFC/ECN流量测试方案:打造智能无损网络的关键利器

    导语:AI算力爆发的背后,如何保障网络“零丢包”? 在当今数据中心网络中,随着AI、高性能计算(HPC)和分布式存储等应用的飞速发展,网络的无损传输能力变得至关重要。PFC(基于优先级的流量
    的头像 发表于 03-13 09:53 ?646次阅读
    信而泰PFC/ECN流量测试方案:打造智能无损<b class='flag-5'>网络</b>的关键利器

    STM32F429以太网外设数据处理上限是多少?

    背景:以429作为控制器的板卡处于网络交换机的一个节点处,同网段有其他网络节点,其他节点控制器芯片种类为,A核ARM、CPU,因此429是处理性能最差的节点。 现有方案: 429只与某
    发表于 03-13 06:52

    TCP协议的安全性分析

    使用确认机制来确保数据段被正确接收。如果一个段丢失,发送方将重新发送该段。 流量控制 :TCP使用窗口大小来控制发送方发送数据的速率,以避免接收方被过多的数据淹没。 拥塞控制 :TCP
    的头像 发表于 01-22 09:48 ?816次阅读

    百问FB网络编程 - 网络编程简介

    包括了应用层报文划分为短报文,并提供拥塞控制机制,因此当网络拥塞时源抑制其传输速率。 ?UDP协议向它的应用程序提供无连接服务。这是一种不提供不必要服务的服务,没有可靠性,没有流量
    发表于 12-04 09:46

    VLAN 实施对网络性能的影响

    的广播域和冲突域。这样,网络中的广播流量和冲突就被限制在每个VLAN内部,减少了网络拥塞,提高了网络的整体性能。 优化网络流量 VLAN允许
    的头像 发表于 11-19 09:35 ?1816次阅读

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-

    进行流量控制等避免网络拥塞行为。(3)此外,传输途中出现丢包,UDP 也不负责重发。(4)甚至当包的到达顺序出现乱序时也没有纠正的功能。(5)如果需要以上的细节
    发表于 11-11 14:17

    飞凌嵌入式ElfBoard ELF 1板卡-网络编程示例之网络基础知识

    进行流量控制等避免网络拥塞行为。(3)此外,传输途中出现丢包,UDP 也不负责重发。(4)甚至当包的到达顺序出现乱序时也没有纠正的功能。(5)如果需要以上的细节
    发表于 11-09 14:37

    SD-WAN技术在直播网络中如何实现智能路径选择?

    :系统根据监控得到的数据,评估每条路径的质量和性能。这些评估标准可能包括路径的稳定性、历史性能数据以及当前的网络拥塞情况。 3、策略定义:管理员可以定义网络流量的传输策略,比如哪些类型
    的头像 发表于 09-09 14:39 ?731次阅读