网络拥塞成因与处理

网络拥塞成因与处理

引言

TCP 是最常用的传输层协议之一,为上层协议提供面向连接的、可靠的传输服务。为了尽可能的提供最大的吞吐量,TCP使用滑动窗口和拥塞窗口机制来控制某一时间点投放到网络中的数据量,已达到尽可能占满可用带宽,并且不产生拥塞的目的。网络中通常都会有一个瓶颈(bottleneck),数据包会在瓶颈处积压,甚至被丢弃。因此TCP流量控制的关键就是控制在瓶颈处数据包的积压程度,积压过快就会导致拥塞。拥塞是如何形成?哪些因素引起拥塞?发送方如何感知拥塞?如何缓解拥塞?本文将讨论这些问题。

Byte in flight

在展开本文之前,先介绍一个概念——Byte in flight 一个比较形象的翻译“在途字节数”1,指的是已经发送,但尚未收到ACK确认的字节数,约等于当前在网络中传输与积压的数据包的字节数的总和。Byte in flight 的大小直接影响瓶颈处数据包的积压程度。根据滑动窗口的概念可以知道Byte in flight的大小受限于发送窗口2(Byte in flight <= 发送窗口),

拥塞的形成

拥塞是如何形成的?看起来很简单的问题,实际上并不是所有人脑海中都有清晰的图景。概括来说,拥塞的主要成因是数据发送方投放到网络中的数据超出了网络的承载能力,用前文的概念就是Byte in flight 超出网络承载量。就像水管的流量取决于最细的部分,网络的承载能力取决于网络上可用带宽最小路径,也就是有瓶颈所在。网络设备接口往往都有缓冲区,超量的数据无法从瓶颈路径发送,只好在缓存区排队,而缓冲区的大小有限制,积压的数据量超出缓存区大小,就会发生丢弃,这个过程就像漏斗倒水一样
这里写图片描述

图1

产生拥塞的原因有:
网络中存在瓶颈,该瓶颈的吞吐量小于节点单位时间发送的数据量
接收缓冲空间大于瓶颈处可用缓冲空间

现实中的例子

为了更直观的展示拥塞的形成,这里举一个例子:假设有两个仓库,仓库A和仓库B,一河之隔,仓库A的经理需以最快速度将仓库A的货物搬运到仓库B,仓库到河流之间的大路比较宽,搬运工人可以并排行走,河流之上有一座桥,和大路一样,桥是双向的,但是这座桥比较窄,一个方向上,搬运工人只能单列行走,假设搬运工人是无限的。以上这种情况与TCP传输的情况很类似,桥梁就是传输路径上的瓶颈。搬运过程如下:

  • 22
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值