从阻抗匹配看拥塞控制

news2024/11/26 2:49:49

先来理解阻抗匹配,但我不按传统方式解释,因为传统方案你要先理解如何定义阻抗,然后再学习什么是输入阻抗和输出阻抗,最后再看如何让它们匹配,而让它们匹配的目标仅仅是信号不反射,以最大能效被负载接收。

既然这样,何不直接从信号反射以及如何让它不反射入手。

于是我换一种方式解释阻抗匹配。

假设一个非常良好的电路,它可以最佳(最逼近理想状态,极端接近无损)的方式传输脉冲信号:
在这里插入图片描述

现在拿掉 10 欧负载换成 100 欧负载,它对电压推动的电流阻碍显然更大(朴素的阻抗),会造成电容充电超过 5 V,接下来信号通过这段电路后,额外的 (m - 5)V 会触发电容往回放电,而额外放点产生额外信号:
在这里插入图片描述

反射的本质在于处处存在的电容(电路里的电容以及分布电容),因此我省略了处处存在的电感(电路里的电感以及分布电感)。解法也很直接,在前面串联一个 90 欧电阻,或者在后面并联一个满足 1/x + 1/100 = 1/10 的电阻即可。

现在再来深入理解一下背后的成因就简单了。电容有什么特殊的?

信号可看做变化的电压,变化的电压可对电容充电,而电容异步放电则产生新的变化的电压,和信号叠加就污染了信号。变化导致的新变化被释放与原变化叠加,而电容恰好可存储电荷产生变化的电压。解决方案就是让负载把变化的电压全部吸收而不被异步保存在电容里。

当电阻变化时必须小心翼翼处理电容和电阻的关系。处理好关系的电路就是阻抗匹配电路,意思是发出的信号恰好是负载完全吸收的,没有反射,否则就要白白消耗掉能量,这部分能量恰好来自信号反射,反射的能量永远只有负效应。这是一个自然律,属于守恒律的一种体现,不可违背。

直流阻抗匹配可称做电阻匹配,即两个电阻相等时,功率最高。虽然无法从变化的电压理解直接阻抗,但在微观层面,两个电阻不相等时,考虑分布电容和分布电感自感,它依然是电容充放电导致的信号反射导致。

有趣且稍微讽刺的是,在宏观的网络传输领域,对于广域网,专家们采用了直流电阻匹配模型,却完全没有注意它的微观结构,而对于 DCN,专家们采用了交流信号模型却忽略 “阻抗匹配”。

在广域网,buffer 被单独考虑,就像一个直流回路的固定的电阻,雅各布森管道中,bdp = buffer,但实际上,它的作用应该是交流回路的电容,这个认知颠倒,是网络拥塞和丢包重传等复杂问题的根源。

一个大 buffer 后一个小 bw 端口,就像一个大电容后并联一个小电阻,电容非常容易被过度充电后 “放电反射噪声”,而人们对其视而不见的原因仅仅是因为数据包不会向前反射。

由于大电容放电受到到达信号和负载吸收的共同影响,放电时刻不确定,和 buffer 清空时刻不确定一样,而 sender 重传取决于 rtt,而 rtt 部分取决于 buffer,重传流量确实是 buffer 的反射,而重传流量与原始流量叠加在一起,对 buffer 进行无差别影响 “充放电”,形成一个闭环回路。而整个回路的传输能效取决于阻抗是否匹配,显然按照上面的论述,广域网的阻抗是不匹配的,因此传输效能很低。

遗憾的是,人们一开始就没有向着阻抗匹配的方向(delay-based cc 有这个意思)去优化而选择了 aimd,而 aimd 准确说并不是做拥塞控制的。

变化的变化产生新的变化叠加到原始变化,这是非常复杂的阻抗匹配问题,在 DCN,人们竟然敢以为 PFC 是方案而不是问题本身。简单讲,PFC 就是个故意的反射实例,任何数据只有被 receiver 接收后才算数,否则被阻滞在网络中并不比丢掉它好,这两种情况对于 receiver 而言都是没收到。

人们一直试图端到端区分拥塞丢包和随机丢包或者试图找一种算法直接检测拥塞,如果拥塞,就意味着存在某种失配,调整 cwnd/pacing 是唯一应对。检测到拥塞,就调整 “阻抗”,这是一种很自然的方式,减少电容电荷,避免反射。

此前我提到过,端到端由于信息精度存在上限,无法区分丢包类型,更别提拥塞检测,但随后我也提过,转发节点的信息非常精确,它可通过 ECN 间接告诉 sender,然而还有更有效的方法,直接调整 buffer 或带宽,连带着调整 wred,这就是阻抗匹配的思路,要么sender 串个电阻,要么 receiver 并个电阻。

统计复用网络上的阻抗匹配本身只有统计意义,要拿 buffer 统计期望说话,任何瞬时度量对整体结果都无效,这是与电路的阻抗匹配完全不同的地方。但与此相关,这就是我一直质疑 bbr 的点,bbr 的推荐参数配置到底有多大的普遍性呢,它试图以单流精确度量网络的方法论是不是也是错误的呢?

最后看一个与电路类似的系统,人体循环系统,全靠时钟滴答驱动,精确阻抗匹配。

从心脏泵出的血具有波动性,即心跳和脉搏,依靠这种波动动力将血液推到全身。进化几乎完全避免了血液反射造成的能量损耗,方案很简单,主干和分支截面积收敛比等于 1。随着血管分支越来越多,血管越来越细,而越细的血管阻力越大,血流越慢,这正好可以让血细胞安排各类氧气,二氧化碳,营养物质在如此低速下上下车:
在这里插入图片描述

网络收敛比为 1,完全避免了拥塞(血栓容错的弹性不考虑),值得注意的是,循环系统不以拓扑显示差异,而以血管形态(长度和密度)显示差异,比如不同器官的血管形态也不同,但无论如何,干线和分支的收敛比都是 1,最终某处分得的血量就是 C * l1/L1 * l2/L2 …

可见,三种形态的网络,电路,互联网/DCN,循环系统展示三种特别之处,但无论如何阻抗匹配的含义是一致的:减少流量的变化引起新的变化与原始流量叠加,这情况的后果就是能耗被白白浪费掉。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1296603.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【二分查找】LeetCode:2354.优质数对的数目

作者推荐 贪心算法LeetCode2071:你可以安排的最多任务数目 本文涉及的基础知识点 二分查找算法合集 题目 给你一个下标从 0 开始的正整数数组 nums 和一个正整数 k 。 如果满足下述条件,则数对 (num1, num2) 是 优质数对 : num1 和 num2 都 在数组 …

excel数据重复率怎么计算【保姆教程】

大家好,今天来聊聊excel数据重复率怎么计算,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧: excel数据重复率怎么计算 在Excel中计算数据重复率可以通过以下步骤实现: 1. 确定重复…

初识Matter——esp-box控制两盏灯

初识Matter 一、效果展示 二、准备 1.ubuntu系统/Mac系统电脑 2.安装esp-idf及esp-matter环境 3.esp-box设备 4.两块esp32 5.两个led灯或使用板载灯 三、烧录固件(esp-box) 下载esp-box例程 git地址:GitHub - espressif/esp-box: Th…

基于单片机指纹考勤机控制系统设计

**单片机设计介绍,基于单片机指纹考勤机控制系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的指纹考勤机控制系统是一种用于管理员工考勤和实现门禁控制的设计方案。它通过使用单片机作为主控制器…

线性代数入门与学习笔记

该内容为重拾部分线性代数知识的学习笔记,内容上更多的是为了解决问题而学习的内容,并非系统化的学习。 针对的问题为:Music算法推导求解过程中的矩阵计算知识。 学习的内容包括:矩阵原理、矩阵行列式、矩阵的秩、线性变换矩阵变换…

J.408之数据结构

J-408之数据结构_北京信息科技大学第十五届程序设计竞赛(同步赛) (nowcoder.com) 思维好题,直接用两个set存没出现的数字就好了 // Problem: 408之数据结构 // Contest: NowCoder // URL: https://ac.nowcoder.com/acm/contest/68572/J // Me…

cmake生成表达式

不积小流&#xff0c;无以成江海 <CONFIG:RELEASE> config这个关键字&#xff0c;主要是看CMAKE_BUILD_TYPE这个变量的值是不是和冒号后的一样&#xff0c;一样的话就返回true, 否则就是false. cmake_minimum_required(VERSION 3.10) project(Test) set(CMAKE_CXX_STA…

腾讯地图系列(二):微信小程序添加插件(三种方法)以及插件AppId获取

目录 第一章 前言 第二章 添加插件 2.1 微信小程序添加插件方法一&#xff08;微信公众平台添加插件&#xff09; 2.2 微信小程序添加插件方法二&#xff08;通过项目配置添加插件&#xff09; 2.3 微信小程序添加插件方法三&#xff08;微信公众平台服务市场添加插件&…

OpenCL学习笔记(一)开发环境搭建(win10+vs2019)

前言 异构编程开发&#xff0c;在高性能编程中有重要的&#xff0c;笔者本次只简单介绍下&#xff0c;如何搭建简单的开发环境&#xff0c;可以供有需要的小伙伴们开发测试使用 一、获取opencl的sdk库 1.使用cuda库 若本机有Nvidia的显卡&#xff0c;在安装cuda库后&#x…

理解 GET、POST、PATCH 和 DELETE 请求的参数传递方式

理解 GET、POST、PATCH 和 DELETE 请求的参数传递方式 本文将向您介绍在使用 GET、POST、PATCH 和 DELETE 请求时如何传递参数。通过详细解释每种请求的参数传递方式和示例代码&#xff0c;您将了解如何正确地将数据发送到服务器并与之交互。 GET 请求的参数传递方式 在 GET…

Navicat 技术指引 | 适用于 GaussDB 分布式的数据生成功能

Navicat Premium&#xff08;16.3.3 Windows 版或以上&#xff09;正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结…

spring boot学习第五篇:spring boot与JPA结合

1、准备表&#xff0c;创建表语句如下 CREATE TABLE girl (id int(11) NOT NULL AUTO_INCREMENT,cup_Size varchar(100) COLLATE utf8mb4_bin DEFAULT NULL,age int(11) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT4 DEFAULT CHARSETutf8mb4 COLLATEutf8mb4…

JVS低代码表单引擎:数据校验与处理的先锋

随着信息技术的迅速发展&#xff0c;数据校验与处理已经成为了各类应用中不可或缺的一环。尤其是在涉及敏感信息&#xff0c;如密码处理时&#xff0c;其安全性和准确性显得尤为重要。JVS低代码表单引擎提供了强大的文本组件触发逻辑校验功能&#xff0c;它能够在用户填写数据的…

[笔记]ARMv7/ARMv8 交叉编译器下载

开发 Cortex-A7、Cortex-A72 或其他 ARM 架构 profile 芯片时&#xff0c;经常需要下载对应架构的交叉编译器&#xff0c;所以写这篇笔记&#xff0c;用于记录一下交叉编译器下载流程&#xff0c;免得搞忘。 编译环境&#xff1a;ubuntu 虚拟机 下载地址 我们可以从 ARM 官网…

二分查找|前缀和|滑动窗口|2302:统计得分小于 K 的子数组数目

作者推荐 贪心算法LeetCode2071:你可以安排的最多任务数目 本文涉及的基础知识点 二分查找算法合集 题目 一个数组的 分数 定义为数组之和 乘以 数组的长度。 比方说&#xff0c;[1, 2, 3, 4, 5] 的分数为 (1 2 3 4 5) * 5 75 。 给你一个正整数数组 nums 和一个整数…

教育心得整理

压抑使人反抗&#xff0c;反抗就是报复&#xff0c;报复就会引起犯罪。要消灭犯罪&#xff0c;我们必须杜绝引起孩子报复心理的行为&#xff0c;更重要的是&#xff0c;我们一定要对孩子表现出来爱与尊重 限制批评的次数限制每次批评的范围限制每次批评的强度 当彼此的信任和…

数据结构-线性表的链式存储结构

术语&#xff1a; 1.结点&#xff1a;数据元素的存储映像。有数据域和指针域两部分组成。 2.链表&#xff1a;n个结点由指针组成一个链表 3.结点只有一个指针域的链表&#xff0c;成为单链表或线性链表。 4.结点有两个指针域的链表&#xff0c;成为双链表。 5.首尾相接的链…

大创项目推荐 交通目标检测-行人车辆检测流量计数 - 大创项目推荐

文章目录 0 前言1\. 目标检测概况1.1 什么是目标检测&#xff1f;1.2 发展阶段 2\. 行人检测2.1 行人检测简介2.2 行人检测技术难点2.3 行人检测实现效果2.4 关键代码-训练过程 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 毕业设计…

Day54力扣打卡

打卡记录 出租车的最大盈利&#xff08;动态规划&#xff09; 链接 class Solution:def maxTaxiEarnings(self, n: int, rides: List[List[int]]) -> int:d defaultdict(list)for start, end, w in rides:d[end].append((start, end - start w))f [0] * (n 1)for i in…

Spring Boot整合 Spring Security

Spring Boot整合 1、RBAC 权限模型 RBAC模型&#xff08;Role-Based Access Control&#xff1a;基于角色的访问控制&#xff09; 在RBAC模型里面&#xff0c;有3个基础组成部分&#xff0c;分别是&#xff1a;用户、角色和权限&#xff0c;它们之间的关系如下图所示 SELECT…