3.6 拥塞控制原理

Wesley13
• 阅读 550

3.6 拥塞控制原理  

3.6.1 拥塞原因和代价

1.情况1:两个发送方和一台具有无穷大缓存的路由器

       两台主机A和B有一条连接,理想情况下,假如A和B都有无穷大的缓存,来自主机A和主机B的分组通过一台路由器,在一段容量为R的共享式输出链路上传输,路由器带有缓存,当速率超过输出链路的容量时,路由器会缓存。假设路由器的缓存也是无限大的。

       不管发送速率多大,吞吐量不会超过R / 2,排队时延会随着发送速率的增大而急剧的增大。这就造成了拥塞。

2.情况2:两个发送方和一台具有有限缓存的路由器

       假如发送速率超过输出链路的容量,那么就会被缓存,因为路由器的缓存是有限的,所以此时如果还有数据发送过来那么就会造成丢包,丢包就会造成时延。

       一种理想的情况,发送方先检测路由器是否缓存满了,没满就发送数据,这种和情况1是一样的,吞吐量不会超过R / 2;

       另一种更实际的情况,发送方得知丢包了,然后选择重传数据,这种情况最大吞吐量是R / 3,

       最后一种情况就是,发送方发送的超时分组和后来重传的分组同时被接收方收到,这样就会丢弃一个,这种情况的吞吐量是R / 4

3.6.2拥塞控制的方法

1.端到端的控制:

       因为IP层是不会反馈是否拥塞的信息,只能通过端到端来控制,TCP通过超时或三次冗余ACK(前面有讲解)来判断丢包也就是拥塞,此时TCP就会适当减小发送窗口的长度。

2.网络辅助的拥塞控制:

       在网络辅助中,网络层的路由器向发送方提供显式的反馈信息,也就是下一节的ATM ABR拥塞控制。 

3.6.3网络辅助的拥塞控制例子:ATM ABR拥塞控制

       数据中夹杂着所谓的资源管理信元(RM),当一个RM信元到达目的地时,会被用来在主机和发送方之间传递拥塞信息。

       EFCI比特:每个数据信元都包含1个比特的显示转发拥塞指示比特,拥塞网络交换机把数据信元的EFCI比特置1来向目的主机传递拥塞信息,如果近来收到的大多数数据信元的EFCI比特被置1,目的方会把RM信元的拥塞指示比特CI信元置1,然后传递给发送方,发送方就知道网络有点拥塞。

       CI和NI比特:RM信元中有一个拥塞指示比特(CI)和无增长比特(NI),交换机可以在轻微拥塞的时候将经过的RM信元中NI比特置为1(无增长的时候,说明已经有点拥塞了),在严重拥挤的时候将CI比特置1,当目的主机收到RM信元的时候,会发送给发送方,并保持CI与NI的比值不变。

       ER的设置:每一个RM信元还包含一个两字节的显式速率字段(ER)。它被设置成设置成路径上所有交换机的最小可支持速率。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Wesley13 Wesley13
3年前
TCP拥塞控制
一般原理:发生拥塞控制的原因:资源(带宽、交换节点的缓存、处理机)的需求可用资源。作用:拥塞控制就是为了防止过多的数据注入到网络中,这样可以使网络中的路由器或者链路不至于过载。拥塞控制要做的都有一个前提:就是网络能够承受现有的网络负荷。对比流量控制:拥塞控制是一个全局的过程,涉及到所有的主机、路由器、以及降低网络相关的所有因素。流量控制往往指点对点
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这