拥塞控制原理

2023-11-01

拥塞控制原理

讲拥塞控制原理之前,我们需要知道,拥塞是由什么引起的?

拥塞主要是因为网络层的丢包过程引起,丢包出现的原因就是因为路由器的缓存有限,但发送方的发送速率又太高,导致分组在路由器上被丢弃

现在我们假设路由器有无限制的缓存,两个主机仅通过一个单跳路由器,两主机之间的链路的容量为R,两个主机的发送速率都为v,因此我们知道,该连接的吞吐量就是:

R/2 当v>R/2时,

吞吐量随着v的增长而增长,当v<=R/2时

当实际的情况是如何的呢?

当两个主机的发送速率逼近于R/2时,连接的时延趋于无穷大,因为实际中的路由器的缓存是有限的,因此会出现丢包现象,出现丢包之后发送方就会重传,重传又会占据发送方发送的速率,因此发送方的分组就会出现无穷大的排队时延

现在我们假设两个主机之间的路由器的缓存是有限的,并且设主机向套接字发送字节的速率为v,运输层向网络层发送字节的速率为v’

假设每台主机能够知道路由器的缓存为多少(不可思议的),那么主机只要在路由器缓存不为空时发送分组就可以了,这样v=v’,且不会出现丢包现象

但是实际情况却是,主机没办法知道路由器的缓存是否为空,这种情况下,性能可能如下图所示

UUr6eS.png

接收方接收到的实际速率为R/3,因为有一部分速率被用来重传分组了

我们刚才考虑的都是两个主机之间只有一跳路由器,现在当有多个主机和路由器时,会出现什么情况?

当每一个发送方的速率都特别大时,我们假设

  • 主机A和主机C通过两个路由器x,y连接
  • 主机B和主机C通过一个路由器y连接
  • 三个主机的发送速率都相同为v,链路的容量都为R

这样我们可以预想到,当BC之间的发送速率很大时,y作为BC之间的单跳路由器,它的缓存将被BC所争夺完,而AC经过第x路由器的分组因为在y路由器得不到缓存而被丢弃,因此x路由器所做的分组转发将都是无用功

讲了这么多引起拥塞的原因,我们有必要了解以下拥塞控制的方法

  1. 端到端的拥塞控制,该方法主要是由TCP来实现的,因为IP网际协议并不会向端系统提供有关拥塞控制的反馈,根据前面讲到的可靠数据传输中,我们知道,TCP可以通过三个冗余ACK来判断拥塞
  2. 网络辅助的拥塞控制,该方法主要是网络层构件来为发送方提供拥塞消息,有直接由交换机发送给发送方,也有通过将分组标记,然后接收方通过该标记得知拥塞消息并向发送方提供该拥塞信息,后者至少需要经过一个往返时延RTT

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

ATM主要用于虚电路,因为虚电路中有一条明确的路径,路由器可以跟踪发送方的行为

在ATM中我们将分组称为数据信元,将路由器称为交换机

在ATM中,在数据信元里夹杂着一些资源管理信元(RM信元),这些信元可以被用来主机和交换机传递拥塞相关的信息,RM信元在到达目的地之后可以被调转方向向发送方传输,交换机也可以自己产生一个RM信元

ATM ABR拥塞控制是一种基于速率的方法,发送方明确的计算出所能发送的最大发送速率并根据拥塞信息来调整,ABR提供三种机制用于从交换机向接收方发送于拥塞相关信息的信令信息

  1. 每个数据信元都会有一个EFCI比特,当链路拥塞时,交换机就将数据信元的EFCI比特置为1,当接收方收到的多数数据信元的EFCI比特都为1,就将RM信元的CI比特置为1,因此发送方就知道链路出现了拥塞
  2. CI和NI比特,RM信元是夹杂在发送方发送的数据信元里边的,夹杂比例默认值为1/32,CI(拥塞指令比特)和NI(无增长比特)分别对应着严重拥塞和轻微拥塞,接收方收到该RM信元便将其发送到发送方,保持这两个比特不变(CI比特可能由于EFCI而变化)
  3. ER的设置,每一个RM信元还包括一个两字节的显式速率字段,一个拥塞的交换机可能会降低经过的RM信元的ER字段的值,以这种方法,ER字段将被设置为在源到目的地的路径上的所有交换机中的最小可支持速率

参考:

的ER字段的值,以这种方法,ER字段将被设置为在源到目的地的路径上的所有交换机中的最小可支持速率

参考:

《计算机网络自顶向下方法》

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

拥塞控制原理 的相关文章

  • 各种排序算法实现原理和代码及适用范围总结

    排序算法可以分为内部排序和外部排序 内部排序又可以分为插入类 交换类 选择类 归并类排序 归并排序通常也应用于外部排序 但采用的是多路归并排序 内部排序有 插入类排序 直接插入 折半插入 希尔排序 交换类排序 冒泡排序 快速排序 选择类排序
  • VS2019创建并且运行QT应用

    VS2019创建并且运行QT应用 运行环境 windows10 1909 vs2019 社区版 16 0 4 qt 5 14 2 qt vsaddin msvc2019 2 4 3 下载qt安装包和qt vs插件 这里选择清华大学开源镜像站
  • 数据结构——“双向循环链表“ 易懂刨析双向循环链表(图解+代码)

    循环链表 单向循环链表 循环链表和单链表的区别 循环链表的特点 双向循环链表 概念 1 双向循环链表 插入 2 双向循环链表 删除 双向链表的插入创建 双向链表 查找 双向链表 插入 双向链表 删除 单向循环链表 循环链表和单链表的区别 表
  • 华为OD算法

    卷一 1 事件推送 100分 标题 事件推送 时间限制 1秒 内存限制 262144K 语言限制 不限 事件推送 同一个数轴X上有两个点的集合A A A A 和B B B B A 和B 均为正整数 A B已经按照从小到大排好序 A B均不为
  • 一天掌握latex论文编辑,从标题作者,段落,数学公式,图片,图表,到参考文献全流程

    目录 以下是一个基于SCI模板的完整LaTeX论文示例 包含注释说明 1 创建文档 2 标题和作者信息 3 段落和文本格式 4 列表 5 图片和表格 5 1插入图片 5 2 插入表格 5 2 1 示例1 三线格 5 2 2 示例二 5 2
  • 基于nginx+keepalived 的主从热备负载均衡的反向代理实现

    基于nginx keepalived 的主从热备负载均衡的反向代理实现 一 操作环境介绍 公司内部网络环境 台式主机上的两台虚拟机使用桥接网络 无法连接互联网 1 虚拟机ip 192 168 13 172 192 168 13 173 主机
  • MIPI DSI 接口协议介绍

    由于最近要用到MIPI DSI接口 所以学习了下MIPI Alliance Specification for DSI 协议文档 将其归纳总结下 MIPI官网链接 https mipi org specifications dsi 2 里面
  • 53 openEuler搭建PostgreSQL数据库服务器-管理数据库

    文章目录 53 openEuler搭建PostgreSQL数据库服务器 管理数据库 53 1 创建数据库 创建数据库示例 53 2 选择数据库 选择数据库示例 53 3 查看数据库 查看数据库示例 53 4 删除数据库 删除数据库示例 53

随机推荐

  • Ubuntu-卸载Docker

    1 切换管理员账号 su root 2 卸载 删除软件及其安装时自动安装的所有包 sudo apt get autoremove docker docker ce docker engine docker io containerd run
  • 把双环学习引入到敏捷-AI Shalloway

    源起 AI Shalloway在推特上发文 I consider developers to be one set of customers of Scrum When they don t like daily standups or r
  • formData文件上传与下载,文件大小转换

    第一部分 formData文件上传 包括上传基本信息 在页面结构写入代码file表单文件上传 1 change是在file表单数据发生改变时调用
  • 关于大学生计算机课程的感受,关于大学生计算机实习心得体会范文

    关于大学生计算机实习心得体会范文 计算机实训在不知不觉中就结束了 我感觉自己还有好多东西要学 还有好多的东西不懂呢 这是我大学以来第三次实训 每次实训我都感觉学到了好多东西 因为是一天到晚的不间断训练 所以记的会非常牢固 不像平时上课 每上
  • 阿里云ECS共享型n4服务器1核2G配置性能评测

    阿里云服务器ECS共享型n4实例1核2G 配置1M公网带宽和40G高效云盘 CPU性能无约束 ECS共享型n4性能怎么样 1核2G服务器网来详细说下阿里云ECS共享型n4服务器CPU 内存 网络参数等性能评测 目录 阿里云1核2G服务器 阿
  • 【DDR3 控制器设计】(5)DDR3 的仲裁读写操作设计

    写在前面 本系列为 DDR3 控制器设计总结 此系列包含 DDR3 控制器相关设计 认识 MIG 初始化 读写操作 FIFO 接口等 通过此系列的学习可以加深对 DDR3 读写时序的理解以及 FIFO 接口设计等 附上汇总博客直达链接 DD
  • 有效电子邮件地址大全_如何优雅有效地处理介绍电子邮件

    有效电子邮件地址大全 by DJ Chung 由DJ Chung 如何优雅有效地处理介绍电子邮件 How to handle intro emails gracefully and effectively 您想帮个忙时不想忘恩负义 You
  • 用Canvas为网页添加动态背景

    用Canvas为网页添加动态背景 作者 uedtianji 最近刚刚接到为微信公众帐号 玩转三里屯 制作首页的任务 考虑到页面只在手机中浏览 而且手机对canvas的支持又非常好 所以打算使用canvas做点不一样的动画 首先来看下效果图
  • IP地址转换-16进制转化为10进制

    很久之前写的 今天放在这里 1 不含字母 include
  • adb命令聚集地

    Android 的adb命令那么多 究竟哪些是必须掌握 哪些是经常用的呢 记得在我刚接触Android时 就有这样的疑问 如果你现在也有这样的疑问 不妨看看这篇文章 当然 这里不是系统的介绍adb命令 而是介绍一些工作中会使用到的 和必须掌
  • RuntimeError: Sizes of tensors must match except in dimension 1. Got 61 and 60 in dimension 2

    1 背景介绍 在训练语义分割模型时 出现以下错误 RuntimeError Sizes of tensors must match except in dimension 1 Got 61 and 60 in dimension 2 2 错
  • msvcp120.dll丢失的解决方法,Win11系统报错处理方法

    在使用Windows11系统的时候 出现报错msvcp120 dll丢失我们需要怎么去修复它呢 msvcp120 dll是Windows操作系统中的一个重要的动态链接库文件 它包含了许多用于C 程序的函数和类 然而 有时候我们可能会遇到ms
  • GUN-ld 链接脚本浅析

    GUN ld 链接脚本浅析 Contents 1 概论 2 基本概念 3 脚本格式 4 简单例子 5 简单脚本命令 6 对符号的赋值 7 SECTIONS命令 8 MEMORY命令 9 PHDRS命令 10 VERSION命令 11 脚本内
  • 2023自动化测试框架的设计原则你都知道吗?快来看!

    1 代码规范 测试框架随着业务推进 必然会涉及代码的二次开发 所以代码编写应符合通用规范 代码命名符合业界标准 并且代码层次清晰 特别在大型项目 多人协作型项目中 如果代码没有良好的规范 那么整个框架的代码会风格混杂 晦涩难懂 后续维护会很
  • Input 输入框限制只能输入数字或者带有两位小数的数字

    限制只能保留两位小数点
  • 设置地图鼠标样式

    设置鼠标样式为十字花样式 map setDefaultCursor crosshair 设置鼠标样式为手形 map setDefaultCursor url bird cur
  • 钢筋数量识别——opencv

    钢筋数量识别 opencv 图片名 1 69 jpg import cv2 as cv import numpy as np import matplotlib pyplot as plt import os os environ KMP
  • LeetCode第1122题解析

    给你两个数组 arr1 和 arr2 arr2 中的元素各不相同 arr2 中的每个元素都出现在 arr1 中 对 arr1 中的元素进行排序 使 arr1 中项的相对顺序和 arr2 中的相对顺序相同 未在 arr2 中出现过的元素需要按
  • 容斥原理 博弈论(多种Nim游戏解法)

    目录 容斥原理 容斥原理的简介 能被整除的数 典型例题 实现思路 代码实现 扩展 用DPS实现 博弈论 博弈论中的相关性质 博弈论的相关结论 先手必败必胜的证明 Nim游戏 典型例题 代码实现 台阶 Nim游戏 典型例题 实现思路 代码实现
  • 拥塞控制原理

    拥塞控制原理 讲拥塞控制原理之前 我们需要知道 拥塞是由什么引起的 拥塞主要是因为网络层的丢包过程引起 丢包出现的原因就是因为路由器的缓存有限 但发送方的发送速率又太高 导致分组在路由器上被丢弃 现在我们假设路由器有无限制的缓存 两个主机仅