重读 VJ 拥塞控制后的思考

重读 About VJ 的互联网名人堂报道 Van Jacobson Denies Averting Internet Meltdown in 1980s,作文一篇。
VJ 对旧时 TCP 的崩溃中洞察,提出 self-clock,这是一个创举。

如 VJ 所述,崩溃前的 TCP 运行环境与我们当前的网络有天壤之别,它的规模很小,即便很小它也很慢,人们对它的需求很低,即使什么都不做它也很难崩溃,另一方面,从端到端的视角,虽然当时的 TCP 只依对端通告的窗口发送数据,但这并不是什么问题,因为当时的主机内存同样很小,通告的窗口并不会太大。

在几乎没有任何约束的纯粹尽力而为网络上,1986 年,TCP/IP 崩溃了,VJ 对此进行了思考。

早期的网络实际上是一个受控仲裁网络,类似令牌网,它既复杂又低效,显然这不是设计者的初衷,也因此它的规模无法扩展,利用率不高,反而延迟了问题的暴露,当网络在 1980 年代初过渡到 TCP/IP,起搏于 Unix 和 socket 接口的寒武纪大爆发开始,人们意识到,早期的网络对大规模自组织的依赖会产生意想不到的后果,果不其然,网络很快就拥塞崩溃了。

控制拥塞的手段是控制进入网络的数据包的时间,但 VJ 意识到缺乏一个触发发送的时钟,但他很快意识到,TCP ACK 是一个好的时钟信号,收到一个 ACK 意味着一个数据包离开了网络,意味着可以推入网络一个新数据包,这种对 feedback 的理解看似简单自然但却非常重要。首先,ACK 能返回,意味着网络是畅通的,其次,返回 ACK 的数量度量了网络被腾出的空间。

但紧接着就遭遇到先有鸡先有蛋的问题,ACK 时钟需要发送数据包来触发,而它反过来又触发数据包的发送,一开始到底发送多少呢。

以上就是 VJ 提出慢启动的背景。随后他提出了慢启动,从 1 个包开始启动,收到 1 个 ACK 发送 2 个包,慢启动之 “慢” 指的是起点低,它实际上很快。

慢启动只增加了 1 个变量以及 3 行代码,即完成了 self-clock 的启动(start):the implementation is trivial – one new state variable and three lines of code in the sender:

  • Add a congestion window, cwnd, to the perconnection state.
  • When starting or restarting after a loss, set cwnd to one packet.
  • On each ack for new data, increase cwnd by one packet.
  • When sending, send the minimum of the receiver’s advertised window and cwnd.

于是 TCP ACK 作为 self-clock 的闭环控制系统就构建起来了。接下来就是在该控制系统上进行拥塞控制。

self-clock 消除了对本地时钟的依赖,发送方不再需要猜测发送节奏,它只需遵循 ACK 的节奏,就实现发送速率和网络路径的瓶颈带宽和延迟的自动适配。整个 self-clock 控制闭环基于数据包守恒,因此这种负反馈机制使 TCP 能够收敛到一个相对稳定的状态,并温和地共享带宽。

在经典 [VJ88] 之前,还有一个经典 [JRC87] 作为拥塞控制的理论基础。[VJ88] 引用了 [JRC87] 的结论。

[JRC87] 提出膝点和崖点的概念,围绕膝点的控制是拥塞避免,围绕崖点的控制是拥塞控制,取决于 feedback,VJ 本着 “丢包从不撒谎” 的理念,从 Multiplicative Decrease 开始,将状态控制在膝点和崖点之间,这就是经典的 Loss-based AIMD 拥塞控制。

VJ 采用管道守恒建模,在平衡状态,设 L i L_i Li 为网络在时刻 i 的负载,则:

L i = N L_i=N Li=N

其中,N 为常量,表示一个稳定状态下网络的平均负载。

然而一旦发生拥塞, L i L_i Li 至少由两部分组成,N 和上一个时刻的 L i − 1 L_{i-1} Li1

L i = N + γ ⋅ L i − 1 L_i=N+\gamma\cdot L_{i-1} Li=N+γLi1

该模型的优美之处在于它能描述全貌,我们知道泰勒展开和移动指数平均(或卷积)本身就是按照任意的规定精度描述全貌的,上式子可看作一个包含 2 项的关于 L ( t ) L(t) L(t) 的泰勒展开。从移动指数平均的视角,或者从卷积计算的视角, L i L_i Li 都是指数级增长的:

L i ≈ γ ⋅ L i − 1 L_i\approx \gamma\cdot L_{i-1} LiγLi1

因此:

L n = γ n L 0 L_n=\gamma^nL_0 Ln=γnL0

为了对冲这种全局负载的指数级增长,则至少需要同等强度的降窗,而 Multiplicative Decrease 则可以让全局负载在拥塞持续期间指数级下降:

W i = d ⋅ W i − 1 W_i=d\cdot W_{i-1} Wi=dWi1

这行为在拥塞时一定会被触发,因为 VJ 曾经说过,丢包不会说谎,而拥塞一定会导致 buffer 溢出而丢包,只要捕获到丢包,执行 MD 即可。

虽然拥塞时会丢包,但带宽有盈余时不会有任何事发生,如果不捕获带宽盈余事件,这部分带宽将被浪费掉。按照 AIMD 才可公平且稳定收敛,在没有丢包时,Additive Increase 就是唯一可选:

W i = W i − 1 + u W_i=W_{i-1}+u Wi=Wi1+u

这就是 [VJ88] 展示的已经运行了 30 年的基于 self-clock 的 AIMD 拥塞控制的背景历程和整体框架,或许还有一些教科书上没有的细节。self-clock 核心之重,它提供了拥塞控制框架的脉搏,让拥塞控制成为一个真正的反馈式控制系统。

自那时起,self-clock 被持续优化了近 30 年,但万变不离其宗。self-clock 之外,RTO 本地定时器被保留了下来,以备 self-clock 丢失后之用,除此之外,SACK,TLP,ER,RACK,以及 Google Swift 硬件时间戳,均为增强 self-clock 而引入,一直到 BBR,self-clock 被用来推断 pacing rate,但本质上还是基于 self-clock 度量的数据包守恒。
但并不是每个人都了解控制系统,你可以实施一些手段,但一定要能获得 feedback,并根据反馈修正手段,self-clock 提供了最根本的 feedback。但多数优化专家并不根据 feedback 来修正手段,甚至忽略 feedback,全是经理。

他们只盯着 AIMD 性能低,却不知道它已经接近最优解了,更不知道优化的代价。诚然,VJ 的假设也不全对,但那只是个时代局限的单点:

On most network paths, loss due to damage is rare (<< 1%) so it is probable that a packet loss is due to congestion in the network. The congestion control scheme we propose is insensitive to damage loss until the loss rate is on the order of one packet per window (e.g., 12-15% for an 8 packet window). At this high loss rate, any window flow control scheme will perform badly–a 12% loss rate degrades TCP throughput by 60%. The additional degradation from the congestion avoidance window shrinking is the least of one’s problems. A presentation in [IETF88] and an in-progress paper address this subject in more detail.

所谓 AIMD 性能问题本质上是对介质的要求,诸如随机丢包(damage)而非拥塞丢包的误判,而不是拥塞控制本身的问题,针对拥塞控制本身的问题,早已有多种长肥管道快速增窗的策略,不再赘述。

拥塞控制是一个全局意义上的统计控制,而不是针对个体的精确控制,但没人能全局控制,恰恰只能针对个体做拥塞控制,然后这些控制 feedback 自发组合成一个全局统计效果,这个过程显然是非线性的复杂系统。

用一个最简化的模型表示个体的演变:

d X d t = k ⋅ ( 1 − p ( t ) ) − μ ⋅ X ( t ) ⋅ p ( t ) \dfrac{dX}{dt}=k\cdot(1-p(t))-\mu\cdot X(t)\cdot p(t) dtdX=k(1p(t))μX(t)p(t)

其中 k 表示增益, μ \mu μ 表示损益,p 表示丢包,整体上看,每一个 X(t) 都是一个典型的随机过程,p 和所有的 X(t) 相互影响,当不再关心特定的锯齿过程,拉远镜头,个体波动被平均掉了,就到了大数定律的领域,根据大数定律,数学上可以表示:

lim ⁡ N → ∞ 1 N ∑ i = 1 N W i = E ( W ) \lim_{N\to\infty}\dfrac{1}{N}\sum_{i=1}^NW_i=\text{E}(W) limNN1i=1NWi=E(W)

Var ( 1 N ∑ W i ) ∝ 1 N → 0 \text{Var}(\dfrac{1}{N}\sum W_i)\propto\dfrac{1}{N}\to 0 Var(N1Wi)N10

这意味着,在网络核心,网络看到的不再是一条条锯齿,而是一片稳定流动的束。越靠近网络中心,统计特征越明显,个体特征越不明确。

self-clock 下的 AIMD 自动适应了这个统计意义上的大数定律的世界,因为 self-clock 仅做时钟,如果将它做信息本身,比如尝试从其到达的波动规律中获益,那就破坏了作为时钟的公平,因为 “ACK 的到达” 本身就携带了全局的,公平的指示,简直就是在告诉你,反应,而非利用。

比如 BBR 尝试基于 self-clock 做 delivery rate 测量,就是不公平的,就好像如果分子将某个密度差作为某种趋势的预测,就不会形成温度(温度就是公平前提下的概念)的概念,统计力学也不会存在。

TCP/IP 的尽力而为模型就是提供了一个真空盒子,释放进去的气体经过一定时间一定是均匀的,不要试图利用统计波动破坏统计特征,网络就是一个多节点组合成的整体,全局意义的统计特征就是它的一个本质属性。

即使你证明了你能通过利用波动特征而让整体短暂获益,收益也很快会被不可扩展性反噬。至于不可扩展性,如之前的文章所述,在线性流逝的时间中,算法能跟得上非线性系统的指数级信息释放速度吗,换句话说,你只能像个自私的经理,让个体获益,根本无力让整体向好。

浙江温州皮鞋湿,下雨进水不会胖。

内容概要:本文系统研究了基于动态三维环境下的Q-Learning算法在无人机自主避障路径规划中的应用,依托Matlab代码实现,深入剖析了强化学习在复杂、时变空间中实现智能决策的机制。研究构建了三维网格化状态空间模型,设计了合理的动作集合与奖励函数,充分考虑静态与动态障碍物的存在,使无人机能够通过与环境持续交互,自主学习规避障碍并趋近目标的最优策略。文章不仅展示了Q-Learning算法在路径规划中的具体实现流程,还涵盖了状态表示、策略迭代、收敛性分析等关键环节,并通过仿真实验验证了算法的有效性与鲁棒性,为智能体在动态环境中的自主导航提供了理论依据和技术参考。; 适合人群:具备人工智能、自动化、计算机科学或机器人学等相关专业背景,熟悉Matlab编程语言和基本的强化学习概念,从事无人机控制、智能导航、路径规划算法研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于城市峡谷、灾害现场等复杂动态三维场景中无人机的自主飞行与紧急避障;②作为强化学习解决实际路径规划问题的教学实例,帮助理解Q-Learning的核心思想、状态-动作值函数更新过程及探索-利用权衡策略;③为后续研究更先进的深度强化学习算法(如DQN、PPO)在无人机控制中的应用奠定基础和提供对比基准。; 阅读建议:建议读者结合所提供的Matlab代码进行动手实践,通过调整学习率、折扣因子、探索率(ε-greedy)等超参数,观察其对算法收敛速度和最终路径规划质量的影响,并尝试修改环境复杂度(如增加障碍物密度或动态性)以评估算法的泛化能力。
内容概要:本文系统研究了三相逆变器逆变电路的闭环控制模型,基于Simulink平台构建完整的仿真系统,深入探讨闭环控制策略对逆变器输出电压、电流波形质量的调控作用。研究内容涵盖三相逆变器的基本工作原理、空间矢量脉宽调制(SVPWM)技术、电压外环与电流内环构成的双闭环控制架构设计、PI控制器参数整定方法,并通过仿真实验全面评估系统在阻性、感性及非线性负载条件下的动态响应特性、稳态精度以及抗负载扰动能力,从而验证闭环控制策略的有效性与鲁棒性。同时,文档关联了多项电力电子与新能源并网相关的仿真案例,凸显其在光伏发电、微电网并网、储能系统等实际工程应用中的重要价值; 适合人群:具备电力电子技术、自动控制理论基础知识,熟悉Simulink/MATLAB仿真环境,从事电气工程、新能源发电、智能电网等方向的科研人员、工程技术人员及研究生; 使用场景及目标:①掌握三相逆变器双闭环控制系统建模与仿真的完整流程;②深入理解电压电流双闭环控制的设计原理及其在提升电能质量方面的实现机制;③为光伏并网逆变器、储能变流器(PCS)、微网能量管理系统等实际项目的控制算法开发与性能验证提供理论依据和技术参考; 阅读建议:建议结合文中提及的Simulink仿真模型进行实操演练,重点关注控制器参数调节对系统稳定性与动态性能的影响规律,并进一步拓展学习如重复控制、PR控制、模型预测控制(MPC)等先进控制策略在逆变器中的应用与对比分析。
内容概要:本文围绕单相逆变器闭环逆变电路的PWM模型展开仿真研究,基于Simulink平台构建系统模型,重点探究闭环控制策略下脉宽调制(PWM)技术在单相逆变器中的应用。研究内容涵盖系统建模、控制器设计、反馈回路构建及PWM信号生成等关键环节,通过仿真分析逆变电路在闭环控制下的动态响应特性、输出波形质量与系统稳定性,旨在提升逆变器的输出精度、抗干扰能力与整体性能,为电力电子系统的设计与优化提供理论支撑与仿真验证依据。; 适合人群:具备电力电子、自动控制理论基础,熟悉Simulink仿真环境,从事电气工程、新能源发电、电源系统开发等相关领域的科研人员及高校研究生。; 使用场景及目标:①应用于单相逆变电源、光伏并网系统、不间断电源(UPS)等电力变换设备的控制器设计与性能优化;②通过仿真掌握闭环控制与PWM调制技术的实现机制,深入理解PI控制器参数整定、反馈采样方式选择及系统稳定性调节方法,进而提升实际工程系统的动态响应与稳态控制精度。; 阅读建议:建议读者结合Simulink动手搭建模型,逐步调试控制器参数,重点关注闭环反馈结构、PI调节器设计与PWM调制模块的实现逻辑,同时可通过对比开环与闭环系统的输出波形,深入理解闭环控制对系统性能的提升作用,从而深化对逆变器控制原理的掌握。
内容概要:本文围绕“考虑火-储联合调频(火电机组-混合储能)的协同控制策略研究”展开,系统探讨了火电机组与混合储能系统在电力系统频率调节中的协同工作机制,并提供了完整的Matlab代码实现。研究旨在提升高比例新能源接入背景下电网的频率稳定性与动态响应能力,通过构建火电与储能的协同控制模型,充分发挥火电机组的持续调节能力和混合储能(如电池、超级电容)的快速响应特性,实现调频过程中的优势互补与资源优化配置。文中详细阐述了协同控制策略的设计原理、系统建模方法、关键参数整定及仿真验证流程,通过对比分析验证了该策略在抑制频率偏差、缩短调节时间、降低机组磨损等方面的优越性。; 适合人群:具备电力系统自动化、新能源并网控制或自动控制理论等相关专业知识背景,熟悉Matlab/Simulink仿真环境,从事电力系统稳定性研究、储能系统集成或辅助服务技术研发的科研人员、工程技术人员及研究生。; 使用场景及目标:①应用于含高比例可再生能源的现代电力系统频率稳定控制策略研究;②为火电机组与混合储能联合参与电力辅助服务市场(特别是调频服务)提供可行的技术方案与仿真验证平台;③作为相关领域科研项目、学位论文或算法复现工作的技术参考与代码基础。; 阅读建议:建议结合Matlab代码逐模块进行分析,重点关注协同控制架构设计、功率分配逻辑、滤波算法(如改进ICEEMDAN)的应用及仿真结果的对比分析,同时可进一步拓展至不同运行工况、储能配置方案及鲁棒性测试,以深化对系统动态特性的理解。
源码直接下载地址: https://pan.quark.cn/s/7e229a6ecfeb FMEA(故障模式与影响分析)作为一种关键性的工程方法,自20世纪60年代在美国航空工业中进行首次实践应用之后,持续在产品与流程的构建过程中得到广泛采纳。该方法通过检测潜在故障形态、评判故障对系统的后果,并对风险进行等级排序,从而为风险管理活动提供了核心支持。FMEA指南的中文第五版最新发行,标志着该领域的一次重要进展,其资料不仅涵盖了学术理论,同时也提供了充裕的操作指导与实例研究。 该指南总共由12个部分构成,对FMEA的各个要素进行了由浅入深的阐释。在开篇的第一章节中,指南首先明确了FMEA的应用意图及其在企业风险管理领域的关键作用。它不仅界定了FMEA的内涵与基础理念,还详尽说明了FMEA的具体应用情境,涵盖了产品设计、制造流程以及服务提供等多个方面。同时,作者也指出了FMEA在实践操作中可能面临的制约因素,例如推行成本、资源分配等,为读者提供了全面的认知。 从第二章起,指南开始集中讲解设计FMEA的实施步骤。作者详尽介绍了FMEA的六个核心流程,这是开展FMEA分析的基本框架。计划与预备阶段是整个分析工作的基础,它要求参与人员清晰界定分析的目标、范畴和深度,并掌握FMEA的基本原则。紧随其后,结构剖析与功能剖析阶段涉及对产品或流程的细致分解,通过这种方式,可以系统地识别出所有潜在发生的故障形态。 在失效剖析阶段,指南重点讲解了如何系统地评估故障形态,这包括辨识故障的诱因、后果以及故障可能发生的条件。风险剖析阶段则是借助风险优先级数(RPN)这一核心工具来评定故障形态的风险水平,并确定哪些风险需要优先进行管控。在改进阶段,指南指导如何制定优化措施来降低风险,进而提升产品...
内容概要:本文围绕单相逆变器并网系统的PWM控制技术展开,基于Simulink平台构建了完整的单相逆变器并网逆变电路仿真模型,重点研究其在并网过程中的闭环控制策略与动态响应特性。通过电压电流双闭环控制结构的设计,结合PWM调制技术,实现了对并网电流的精确跟踪与电能质量的优化。研究涵盖了系统建模、控制器参数设计、锁相环(PLL)同步技术、并网电流谐波抑制以及系统稳定性分析等关键环节,全面验证了控制策略在实现高效、稳定并网方面的有效性,为分布式能源系统的实际应用提供了可靠的仿真依据和技术支撑。; 适合人群:具备电力电子、自动控制及新能源发电基础知识,熟悉Simulink仿真工具,从事光伏并网、微电网控制或逆变器研发等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握单相并网逆变器的工作原理与系统架构;②深入理解双闭环控制与PWM调制在并网系统中的协同作用;③实现并优化并网电流的跟踪精度与低谐波畸变性能;④为后续三相并网系统、虚拟同步机控制及多逆变器并联运行等高级课题研究奠定仿真基础。; 阅读建议:建议结合文中所涉及的光伏储能并网、锁相环控制等典型模型进行对照学习,亲手搭建仿真系统并调整PI参数以观察动态响应变化,从而深入理解控制机理与系统稳定性之间的关系,同时可进一步拓展至孤岛检测、无功补偿等功能的集成研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值