传输层的拥塞控制
一、拥塞的成因1.1、2个发送方2个接收方和一台具有无穷大缓存的路由器假设主机A和主机B都经过同一个路由器且路由器有无限缓存路由器的链路容量是R如下图所示主机A中的应用程序以λin 字节/秒的平均发送速率将数据从应用层发送到传输层中默认这些数据都是初始数据每个数据单元仅通过分组发送一次不会执行差错恢复重传不会执行流量控制和拥塞控制同时忽略传输层和传输层以下网络层数据链路层物理层添加的额外头部信息此时主机A向路由器发送流量的速率就是λin 字节/秒由于主机B与主机A相同并且共享一段容量为R的链路则主机A和主机B的最大发送速率都是R/2。当主机A的发送速率接近于R/2时主机A的发送速率与接收方的吞吐量的函数关系主机A的发送速率与时延的函数关系如下所示1.2、2个发送方2个接收方和一台具有有限缓存的路由器假设主机A和主机B都经过同一个路由器且路由器的缓存是有限的路由器的链路容量是R如下图所示主机A的 λin 应用层向传输层发送数据的发送速率、主机B、链路容量R 都与1.1相同由于路由器的缓存是有限时那么缓存已满时多余的分组必定会被丢弃在可靠连接中被丢弃的分组将会发生重传这会导致传输层向网络层发送数据的发送速率λin’ ≠ λin 假设有以下三种情形①、发送方能够通过某种机制获知路由器缓存buffer信息并且在路由器有空闲缓存时才发送数据此时λin’ λin λout主机A的发送速率与接收方的吞吐量的函数关系与1.1相同如下图a所示②、发送方不能获知路由器缓存buffer信息发送方定时器的时间设置为无限长由于发送方的定时器并不会超时当发送方确认分组丢弃后才会重发分组此时λin’λinλin’ λout发送方必须重传丢弃的分组当发送的0.5R的数据时其中有0.333R是初始数据有0.166R是重传数据造成资源的浪费如下图b所示③、发送方不能获知路由器缓存buffer信息发送方定时器的时间有限发送方在发生超时时重传在队列中已被推迟但还未丢弃的分组此时λin’λinλin’ λout发送方必须重传丢弃的分组和超时的分组当发送的0.5R的数据时其中有0.25R是初始数据有0.25R是重传数据造成资源的浪费如下图c所示1.3、4个发送方4个接收方和多台具有有限缓存的路由器及多跳路径假设主机A、主机B、主机C、主机D都通过交叠的两跳路径传输假设每台主机都采用超时/重传机制来实现可靠数据传输所有的主机都有相同的 λin路由器的链路容量都是R如下图所示路由器R2同时承载着主机A→主机C、主机D→主机B的数据发送当网络拥塞形成时会发生1.2中所出现的情况 主机A和主机D的发送速率会接近于R/2R/3直到接近于R/4造成分组成不断的丢失。与1.2不同的是当路由器R2将主机A→主机C的分组丢弃后会导致之前的路由器R1对于R2丢弃的分组做的存储和转发都是“劳而无功”的因此在多跳网络中当分组被drop时任何用于该分组的“上游”传输能力全都被浪费掉了导致整个网络的吞吐率变的更差如下图所示二、网络辅助的拥塞控制和端到端的拥塞控制拥塞控制的原理可以根据网络层是否为传输层拥塞控制提供了显示的帮助来区分如下①、端到端的拥塞控制网络层没有为传输层拥塞控制提供显示支持即使网络中存在拥塞发送方也必须通过对网络行为的观察来推断比如分组丢失和分组时延TCP的拥塞控制就属于端到端的拥塞控制详细内容请查看本章2.2②、网络辅助的拥塞控制网络层为传输层的拥塞控制提供显示支持网络层或者核心的网络设备会向发送方显示的反馈网络拥塞信息发送方就可以利用这个信息调整信息发送这种方式通常需要依靠简单的拥塞指示来避免overload简单的拥塞指示如SNA、DECbit、TCP/IP ECN、ATM...其中ATM拥塞控制机制中的ABRavailable bit rate服务的详细内容请查看本章2.12.1、ATM拥塞控制机制中的ABRavailable bit rate服务网络辅助的拥塞控制ABR服务是一种“弹性服务”工作逻辑大致如下①、如果发送方发现网络路径的负载比较低underloaded那么发送方会使用可用带宽来发送数据②、如果发送方发现网络路径出现拥塞那么发送方的发送速率会降低到最低保障速率。在ATM网络中除了有data cell在ATM网络中data cell表示分组还有RM cell也是一种分组这种RM cell是穿插在data cell中间的发送方一般在发送若干个data cell后会发送一个RM cellRM cell在整个网络传输过程中网络设备会修改RM cell中的数据主要修改的RM cell中的数据有以下2种①、NI bit是否允许传输速率继续增长②、CI bit当前网络中是否拥塞。当RM cell通过整个网络传输给接收方时接收方会将RM cell返回给发送方此时发送方就可以利用RM cell了解整个网络的拥塞情况整个过程如下图所示2.2、TCP的拥塞控制的基本原理端到端的拥塞控制Tahoe算法和Reno算法的详细细节请查看7.3、传输层的拥塞控制算法—Tahoe算法和Reno算法TCP拥塞控制的主要措施是限制发送方的发送速率与TCP协议的流量控制不同流量控制是在接收方设置一个RevBuffer大小的内存空间TCP协议的拥塞控制是在发送方设置一个拥塞窗口——窗口大小为CongWinCongWin满足以下公式−LastByteSent 表示最后一个发送的分组的序列号LastByteAcked 表示最后一个确认接收的分组的序列号rate发送速率≈ CongWin/Rtt此时我们通过改变CongWin的大小就可以间接的改变发送速率。当网络拥塞程度比较严重时将CongWin的值调整的较小一些即可当网络中不存在拥塞或者网络拥塞的程度比较小时将CongWin的值调整的较大一些即可。对于网络拥塞的感知TCP协议主要通过loss事件来进行判断loss事件可以分为以下2种①、发送方的发送窗口出现timeout②、发送方的收到3个重复的ACK。当发送方出现loss事件时发送方判定为网络拥塞此时发送方需要降低发送速率当发送速率成功降低后发送方又要合理的调整CongWin的大小使发送速率恢复到一个较大的值来进行网络传输整个CongWin的调整逻辑如下图所示TCP协议控制CongWin的策略主要有以下3种①、加性增乘性减的AIMD机制AIMD的原则是逐渐增加发送速率谨慎探测可用带宽直到发生loss事件。其中加性增Additive Increase策略指的是在每个RTT后将CongWin增大一个MSS最大段的长度乘性减Multiplicative Decrease指的是发生loss事件后将CongWin减半。整个过程中拥塞窗口大小CongWin的变化如下图所示②、慢启动ss慢启动的原则是当TCP连接开始时CongWin可以指数性增长。慢启动的原则解决了AIMD机制中加性增Additive Increase的线性增长问题因为在网络初始阶段可用带宽可能远远高于初始发送速率此时我们希望的是发送速率可以快速增长。如下图所示③、Threshold变量。通过AIMD中的加性增Additive Increase和慢启动ss可以实现CongWin的线性增长和指数增长但是在切换CongWin的线性增长和指数增长时需要依靠Threshold变量。一般系统会有一个初始的Threshold变量当拥塞窗口的大小CongWinThreshold时CongWin为指数增长当拥塞窗口的大小CongWinThreshold时CongWin由指数增长变为线性增长。无论CongWin使用哪种增长方式当前网络都有可能发生loss事件当loss事件发生时CongWin和Threshold有以下2种变化方式a、loss事件为发送方的收到3个重复的ACK时此时CongWinCongWin/2ThresholdCongWin/2修改后CongWin等于ThresholdCongWin继续线性增长b、loss事件为发送方的发送窗口出现timeout时此时CongWin1个MSSMSS表示最大分组的长度的大小ThresholdCongWin/2修改后CongWinThresholdCongWin变为指数增长当CongWin等于Threshold时CongWin由指数增长变为线性增长以上ab这两种变化方式如下图所示因此通过Threshold变量来控制AIMD机制和慢启动ss机制总结如下2.2.1、TCP拥塞控制算法伪代码如下Threshold 根据主机和当前网络设置一个合理的值 CongWin 1 MSS /*指数增长slow start or exponential increase */ While (No Packet Loss and CongWin Th) { send CongWin TCP segments for each ACK increase CongWin by 1//每个RTT都会增长 } /*线性增长congestion avoidance or linear increase */ While (No Packet Loss) { send CongWin TCP segments for CongWin ACKs, increase CongWin by 1//整个拥塞窗口RRT才会增长 } Threshold CongWin/2 //无论哪种lossThreshold都减半 //CongWin 需要根据loss事件来确定CongWinCongWin/2 或 CongWin1 If (3 Dup ACKs) CongWin Threshold;

相关新闻

本地多模态模型选型实战:Qwen与Gemma中文OCR与长上下文对比

本地多模态模型选型实战:Qwen与Gemma中文OCR与长上下文对比

1. 项目概述:这不是跑分榜,而是一份本地多模态推理的实战选型手记我干这行十多年,从最早在双路Xeon上硬扛Llama 2 13B开始,到现在用一台轻薄本跑Qwen-3.5-9B做文物识别,踩过的坑比模型参数还多。今天这篇不是照搬Huggi…

2026/7/3 7:44:16阅读更多 →
PointBeV:稀疏化BEV感知范式,实现自动驾驶感知效率与性能双突破

PointBeV:稀疏化BEV感知范式,实现自动驾驶感知效率与性能双突破

1. 从密集到稀疏:为什么我们需要重新思考BEV感知的计算范式如果你在过去几年里关注过自动驾驶或者机器人领域的感知技术,Birds-Eye View(BEV,鸟瞰图)这个词一定不会陌生。它几乎成了多传感器融合和下游任务&#xff08…

2026/7/3 7:44:16阅读更多 →
从OpenAI实践看AI研发:为何基础设施是效率倍增器

从OpenAI实践看AI研发:为何基础设施是效率倍增器

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 在AI领域,有一个残酷的现实:好点子从来不是稀缺资源。你去任何一个技术论坛,都能看到成百上千个…

2026/7/3 7:44:16阅读更多 →
为什么你总在论文环节手忙脚乱?,资深阅卷组长曝光「双轨时间锚点法」:兼顾逻辑深度与打字效率

为什么你总在论文环节手忙脚乱?,资深阅卷组长曝光「双轨时间锚点法」:兼顾逻辑深度与打字效率

更多请点击: https://codechina.net 第一章:软考机考答题技巧时间分配 软考机考采用全真模拟环境,时间压力显著高于纸笔考试。合理的时间分配策略是保障答题质量与通过率的关键前提,而非单纯追求速度。 整体时间节奏把控 建议将…

2026/7/3 9:19:40阅读更多 →
鱼书P70代码

鱼书P70代码

import pickle import sys, osimport numpy as npsys.path.append(os.pardir) from dataset.mnist import load_mnist from PIL import Image(x_train, t_train), (x_test, t_test) load_mnist(flattenTrue, normalizeFalse) # flattenTrue:把28*28的二维图片拉平成一维数组&a…

2026/7/3 9:19:40阅读更多 →
9款网盘直链下载助手:彻底告别限速,实现全平台高速下载

9款网盘直链下载助手:彻底告别限速,实现全平台高速下载

9款网盘直链下载助手:彻底告别限速,实现全平台高速下载 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动…

2026/7/3 9:19:40阅读更多 →
5分钟终极指南:炉石传说脚本Hearthstone-Script完全手册

5分钟终极指南:炉石传说脚本Hearthstone-Script完全手册

5分钟终极指南:炉石传说脚本Hearthstone-Script完全手册 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本) 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-Script 厌倦了炉石传说中重复的点击操作&a…

2026/7/3 9:19:40阅读更多 →
【软考通关核心机密】:上午题VS下午题的5大本质差异与3步避坑指南

【软考通关核心机密】:上午题VS下午题的5大本质差异与3步避坑指南

更多请点击: https://intelliparadigm.com 第一章:软考上午题与下午题的本质分野 软考(计算机技术与软件专业技术资格考试)的上午题与下午题并非简单的题型顺序划分,而是承载着不同能力维度的测评逻辑:上午…

2026/7/3 9:19:40阅读更多 →
工业GEO哪个公司好

工业GEO哪个公司好

在当今数字化时代,工业领域对于精准、高效的搜索引擎优化(GEO)需求日益增长。工业GEO不仅能帮助企业在搜索引擎中获得更好的排名,还能确保企业信息准确、全面地呈现给潜在客户。那么,好用的工业GEO哪个公司好呢&#x…

2026/7/3 9:14:39阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/2 12:10:34阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/7/2 12:10:34阅读更多 →
LV3296与PIC18F45K22的UART通信与USB扩展方案

LV3296与PIC18F45K22的UART通信与USB扩展方案

1. LV3296与PIC18F45K22的硬件搭档解析在嵌入式数据采集系统中,LV3296条形码扫描模块与PIC18F45K22微控制器的组合堪称经典搭配。LV3296作为一款工业级条码扫描头,其核心是一颗高性能CMOS图像传感器,配合专用解码芯片,能自动识别包…

2026/7/3 0:03:41阅读更多 →
AI初创生存指南:6个月完成可信度验证闭环

AI初创生存指南:6个月完成可信度验证闭环

1. 这不是“逆袭指南”,而是一份AI初创公司真实生存手记“How To Beat Odds As an AI Startup?”——这个标题乍看像一句热血口号,但在我带过7个从0到1的AI产品团队、亲手踩过融资失败、技术债崩盘、客户POC卡在最后一公里等23类典型坑之后,…

2026/7/3 0:03:41阅读更多 →
多模态+推理链+RAG 2.0+智能体:工业级AI系统落地四支柱

多模态+推理链+RAG 2.0+智能体:工业级AI系统落地四支柱

1. 这不是又一篇“AI趋势速览”,而是一份实操者手记:当多模态、推理链、检索增强与智能体协作真正撞进工程现场“LAI #73”这个编号本身就像一个暗号——它不属于某家大厂的白皮书,也不是学术会议的议程表,而是长期泡在模型训练集…

2026/7/3 0:03:41阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/3 1:12:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/3 1:36:36阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/3 2:08:15阅读更多 →