【计算机网络笔记】传输层——拥塞控制原理与解决方法

系列文章目录

什么是计算机网络?
什么是网络协议?
计算机网络的结构
数据交换之电路交换
数据交换之报文交换和分组交换
分组交换 vs 电路交换
计算机网络性能(1)------速率、带宽、延迟
计算机网络性能(2)------时延带宽积、丢包率、吞吐量/率
计算机网络体系结构概念
OSI参考模型基本概念
OSI参考模型中非端-端层(物理层、数据链路层、网络层)功能介绍
OSI参考模型中端-端层(传输层、会话层、表示层、应用层)功能介绍
TCP/IP参考模型基本概念,包括五层参考模型
网络应用的体系结构
网络应用进程通信
网络应用对传输服务的需求
Web应用之HTTP协议(涉及HTTP连接类型和HTTP消息格式)
Cookie技术
Web缓存/代理服务器技术
传输层服务概述、传输层 vs. 网络层
传输层------多路复用和多路分用
传输层------UDP简介
传输层------可靠数据传输原理之Rdt协议
传输层------可靠数据传输之流水线机制与滑动窗口协议
传输层------TCP特点与段结构
传输层------TCP的可靠数据传输
TCP连接管理(图解三次握手和四次挥手)



拥塞控制原理

前面学习的可靠数据传输是网络Top10问题之一,这里的拥塞控制也位列Top10。

我们在现实中或多或少可能都经历过拥塞,比如小长假高速堵车,堵车之后这个路就像瘫痪一样,基本上没有什么通行能力了。网络当中也会出现这种情况。

拥塞(Congestion):

  • 非正式定义:太多发送主机发送了太多数据或者发送速度太快,以至于网络无法处理。
  • 拥塞的表现:
    • 分组丢失(路由器缓存溢出)
    • 分组延迟过大(在路由器缓存中排队)

可靠数据传输 vs. 拥塞控制

可靠数据传输更多地考虑端-端的,个体的利益。而拥塞控制更多地是从群体利益角度来考虑。为了大家都能使用网络,这时候大家可能会做出一些牺牲。所以需要一种机制来控制网络负载。当然拥塞控制和可靠数据传输是有很大关系的,大家可以自己思考一下。

拥塞控制 vs. 流量控制

它们是不一样的,流量控制是发送方不要发送的太快太多以致于接收方处理不了。是站在接收方的角度去看的。而拥塞控制是针对接收方与发送方之间的网络的。

拥塞的成因以及产生拥塞的代价

假设这样一个理想的情况:

用C表示路由器出口的链路的带宽,用λin表示发送方发送数据的速率,用λout表示接收方接收数据的速率。这里假设路由器有无限的缓存,在这种情况下,不管发送方发送的数据有多大有多快,分组是不会丢失的,那么发送方也就不需要重传这个机制的。那在这种情况下,关于吞吐率和时延:

  • λin不管多大,λout最大就是C/2。也就达到了最大的吞吐量。
  • 而当λin接近C/2,时延快速增大。

可以看到,拥塞的第一个代价就是分组的延迟太大

下面看第二个场景:路由器的链路带宽是R。路由器的缓存是有限的,既然是有限缓存,当数据过多过快的时候就必然会有丢失,那发送方就要重传。引入新符号λin' ,代表原始数据加上要重传的数据。在这种场景下:

  • 情况a:Sender能够通过某种机制获知路由器buffer信息,这样就当路由器buffer有空闲的时候才发数据。这是分组不会丢,也就不会重传,λin=λin',λin=λout。并且λin不可能大于R/2。

  • 情况b:无法在发送之前提前或追路由器有没有空闲的buffer。这种情况下,确定分组丢失后才重发。λin'>λin,λin'=λout。这意味着有效的吞吐率变低了。也就造成了网络资源的浪费。

  • 情况 c:不仅在确定分组丢失之后重传,而且定时器超时后也重传,所以λin'变得更大。那么有效吞吐率更低。

可以看到,拥塞的代价是需要重传 ,造成资源的浪费

下面看第三个场景:使用多跳的网络。现在有四个发送方,四个接收方。这样一个路由器会转发来自两个主机的数据,这就可能会发生竞争。并且,在多跳网络中,当分组被drop时,任何用于该分组的"上游"传输能力全都被浪费掉。那么整个网络的吞吐率就变得更差了。

拥塞控制的方法

也就是控制发送方的发送速率。

  • 端到端拥塞控制:是端系统来进行。网络层也就是路由器不需要显式的提供支持。端系统通过观察loss,delay等 网络行为判断是否发生拥塞。Internet网络中的TCP采取的就是这种方法。
  • 网络辅助的拥塞控制:路由器向发送方显式地反馈网络拥塞信息,端系统利用这个信息调整自己数据的发送速率。典型的就是ATM网络。

ATM ABR拥塞控制

ATM提供一种叫做ABR的服务。ABR是一种网络辅助的拥塞控制。

ABR:available bit rate。提供弹性服务,如果发送方发现路径的负载比较低,就尽可能地使用可用的带宽,如果发现路径拥塞,就将发送速率降到最低保障速率。

为什么说ABR是一种网络辅助的拥塞控制,是因为在数据传输中(这里传输的是cell而非分组),穿插着RM(resource management 资源管理) cells。它由发送方发送,交换设备能够设置RM cell位(网络辅助体现在这里):NI位代表速率不许再增长,CI位代表拥塞了。RM cell由接收方返回给发送方或者由交换设备直接向发送方发送。这样就能控制发送方的发送速率。

至于Internet网络中的TCP的拥塞控制机制,下一篇文章再具体介绍。

相关推荐
幸运超级加倍~9 分钟前
软件设计师-上午题-16 算法(4-5分)
笔记·算法
王俊山IT28 分钟前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
Yawesh_best1 小时前
思源笔记轻松连接本地Ollama大语言模型,开启AI写作新体验!
笔记·语言模型·ai写作
CXDNW3 小时前
【网络面试篇】HTTP(2)(笔记)——http、https、http1.1、http2.0
网络·笔记·http·面试·https·http2.0
使者大牙3 小时前
【大语言模型学习笔记】第一篇:LLM大规模语言模型介绍
笔记·学习·语言模型
ssf-yasuo3 小时前
SPIRE: Semantic Prompt-Driven Image Restoration 论文阅读笔记
论文阅读·笔记·prompt
ajsbxi3 小时前
苍穹外卖学习记录
java·笔记·后端·学习·nginx·spring·servlet
TeYiToKu4 小时前
笔记整理—linux驱动开发部分(9)framebuffer驱动框架
linux·c语言·arm开发·驱动开发·笔记·嵌入式硬件·arm
dsywws4 小时前
Linux学习笔记之时间日期和查找和解压缩指令
linux·笔记·学习
爱吃生蚝的于勒4 小时前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法