认识网络随机丢包

news2024/9/22 10:07:11

考虑一根漏水的管子,希望出水口接到和不漏的管子等量的水,要么靠时间,反复将漏掉的水重新注入,直到漏掉的水可忽略:
在这里插入图片描述

要么靠空间,在漏的地方将管子加粗,一次性注入更多的水:
在这里插入图片描述

不管哪种方式,总有一段管子要承担更大压力,要么来自多次小冲刷,要么来自一次大冲刷,换句话说,因为漏不可避免,造成额外压力的这些流量就是用来漏掉的,这是不可避免的补偿。

当我们评估网络丢包时,注意以上的类比。

网络丢包分两类,拥塞丢包和随机丢包,拥塞丢包是自找的,来自传输协议自身,可避免,随机丢包则来自下层,可能是路由问题,可能是信道质量问题,这种丢包无法避免,只能补偿。

如漏水管类比,随机丢包的补偿一定要增加流量,额外的这部分流量要在丢包处损失掉,但这部分额外流量可能增加丢包处上游链路的拥塞,因此随机丢包可能造成拥塞丢包,随机丢包率越高,拥塞越可能发生,这反馈环很有趣。

假设丢包率 P,传输总量为 1 的数据,计算一下需要额外多发的流量。

非常简单,x * (1 - P) = 1,解得 x = 1 / (1 - P)。但这只是一个式子,下面看具体补偿过程。

对于一次性大冲刷,本来要发送 1,在丢包率 P 下要发送 1 / (1 - P)。

对于多次小冲刷,累加每次重传的丢包量即可:

A = 1 + 1 * P + 1 * P * P + 1 * P * P * P + … 1 * P^n = (1 - P^n)/(1 - P)

在 n 趋向于无穷时,A = 1 / (1 - P)

不管分批补偿,还是一次补偿,随机丢包率 P 的可靠传输,必须多付出 1 / (1 - P) - 1 的额外流量作代价,而这部分多出来的流量将可能在别处造成拥塞。

当随机丢包大于一定的概率,用户保障就会激增,运营商必须主动干预维修,否则随机丢包将恶化成严重拥塞。随机丢包的原因不外乎线缆老化,设备老化,线路受损,人为干预等,但对于接入区域而言,比如 Wi-Fi 网络的 CSMA/CA 碰撞,信号问题也是随机丢包源之一。

以上就是随机丢包的根本以及影响。

随机丢包是固有损失,要接受它。在可靠传输场景,要用 “多次小冲刷” 方式补偿,除此之外采取柔性降级应对损失而尽量不要补偿。

对端到端拥塞控制算法如何应对随机丢包,没有定论,各算法都在宣扬自家抗随机丢包能力,但实际上没有任何端到端算法有这能力。这就好比说人群围绕篝火,引发了火灾,只有看到树木被点着了才知道是篝火还是火灾。

即便端侧有能力干预拥塞丢包,也很难识别这种丢包。虽然很难很粗糙,但我们假设端到端算法有能力检测丢包,但算法能做到的仅此而已,它只能判定丢包事实(虽然也有误判),却无法得到丢包的原因:

  • 如果随机丢包,保持现状重传。
  • 如果拥塞丢包,降低速率重传。

TCP sender 只能通过观察 RTT,RTT 抖动,有效吞吐等信息来猜测丢包的原因并做出相应决策,而这些二手信息并不可靠。BBR 采用 “观望一会儿看看”(10-round maxbw-filter) 的策略(BBR2 采用了更锉的方案,引入一个丢包率,大于这个比率才反应),如果真着火了,火很快就会蔓延,如果不是,就什么都不做,这种策略显然代价高昂。

一种更有效的方法是通过 receiver 主动通告更精确的信息而不是即时反馈裸事件给 sender。比如 receiver 反馈即时接收速率以及速率的变化而不是为每一个或每几个接收段生成一个仅为确认的 ACK,这不是 TCP 的方式,但它显然比 TCP 更有效。

TCP ACK 最开始是为可靠传输而不是被 sender 用来测量连接指标的,否则不会引入模棱两可的 delayed ACK,这个问题一直持续到今天。

ACK 发送过多但携带的信息量一点也不多,反而会引入反向路径干扰以及 cwnd 糊涂窗口。

ACK 发送频率过高,导致每个 ACK 释放的 cwnd 空间过快且小,而 SACK 需要非 delay 立即发送,这加重了重传时 cwnd 糊涂窗口,高频但少量消耗 cwnd,这是个正反馈,非常不稳定的平衡,除非持续主动 capacity-seeking probe,cwnd 很容易消耗殆尽,吞吐下跌。

ACK 携带的精确信息仅是积累确认,而拥塞信息属启发信息,需要注意的是,ACK 不光启发拥塞,也启发抖动,因此 ACK 携带的启发信息误判概率非常大,它本身就是 receiver 侧的二手失真镜像。如果 receiver 没有检测到明确抖动信号,就不应该将一个疑似抖动信号反馈给 sender。

TCP 过分依赖 ACK 时钟造成这个不稳定的正反馈,BBR 也没改善现状。我在 CUBIC 动力学 中提出用定时器驱动 pacing 而摆脱 ACK 时钟,但并不适用 TCP,因为 ACK 携带的信息虽少,但它却是 TCP sender 唯一可获得的信息,摆脱不了的同时造成 TCP 反应过于敏感。

如果能换另外一个传输协议,它不应该为每个或每几个接收段生产 ACK,而应该对事件计算信息,将信息进行 ACK,“没有消息就是好消息”,它应该倾向于边沿触发。

多少有点遗憾,QUIC 继承了 TCP 大部分特性,只是对一些明显的问题进行了修补。

目前不管在广域网还是数据中心,有两种倾向让我觉得很多人走偏了。

广域网传输,大家希望即使在丢包率很高的情况下依然要保持足够高的吞吐,但如果丢包是固有随机丢包,比如 Wi-Fi 信号太差,做这件事的结果非但解决不了随机丢包,还会引入拥塞,如果人进入电梯了,server 拼命激进发送除了拥塞链路还有什么用呢?

可以想象,提供一个绝对的信号很差的无线场景,或把光纤弯折后再跺两脚的有线场景,绝大多数人的优化手段是用数量补偿质量,几乎没有人放任 TCP Tahoe 什么都不做,可是要知道,TCP 伊始应对的就是这环境。

另一方面,在数据中心,很多人希望传输协议足够完备,虽然 TCP 有诸多缺陷,但在数据中心做传输协议时,大家依然要模仿 TCP 的样子,TCP 有什么就做什么。比如为 TCP or RoCE 引入 SACK 替换 GBN,但实际上没必要。

数据中心链路随机丢包极罕见,而 SACK 在应对随机丢包方面优于 GBN,在链路质量很好时,GBN 足够。此外 SACK 需扫描传输队列,很耗 CPU,而数据中心传输协议的目标之一就是 offloading,解放 CPU,为传输协议实现 SACK 是帮倒忙。怪不得像 lwIP,seastar 都没实现 SACK,也许是偷懒,但确实没用。

聊到随机丢包的应对方法,关联到拥塞控制,写点自己的想法。

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

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

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

相关文章

什么是HTTP? HTTP和HTTPS的区别?

目录 1、什么是HTTP? 2、HTTP的特点 ① 支持客户/服务器模式 ② 简单快速 ③ 灵活 ④ 无连接 ⑤ 无状态 3、HTTPS 4、HTTP和HTTPS的区别 ① 安全性不同 ② 默认端口不同 ③ 响应速度和资源消耗不同 ④ 网站申请流程不同 ⑤ 对搜索排名的提升不同 1、什么是…

基于OpenCV的硬币面值识别

本项目通过Python与Opencv结合数字图像处理技术对1元、5角、1角三种硬币进行识别。首先通过Canny算子对图像进行边缘检测,然后进一步调用定义的函数去除边缘检测后图像中的孤立点,对处理后的图像进行Hough变换检测圆曲…

涨点技巧: 谷歌强势推出优化器Lion,引入到Yolov5/Yolov7,内存更小、效率更高,秒杀Adam(W)

1.Lion优化器介绍 论文:https://arxiv.org/abs/2302.06675 代码:automl/lion at master google/automl GitHub 1.1 简单、内存高效、运行速度更快 1)与 AdamW 和各种自适应优化器需要同时保存一阶和二阶矩相比,Lion 只需要动量,将额外的内存占用减半; 2)由于 Lion…

港联证券|机器视觉迎重磅利好,5只概念股获两路资金加持

现在我国机器视觉在工业场景中的全体渗透率仍旧在10%以下,比照工业场景巨大的体量而言,机器视觉职业仍有较大开展空间。 近来*ST中潜收到广东证监局行政监管措施决定书。依据深交所的相关要求,公司应当在2023年1月31日前发表公司股票或许被停…

windows安装opencv-python(opencv-python源码安装)

因为我要开启opencv的GStreamer功能,这是和ffmpeg相类似的对视频流操作的一个功能,默认没有开启,需要手动编译。 安装方式链接: opencv-install-with-GStreamer 核心内容如下: git clone --recursive https://github.com/skvark/opencv-py…

数据结构_第十二关:二叉树的基础OJ题练习

目录 1.单值二叉树 2.相同的树 3.另一棵树的子树 4.反转二叉树 5.对称二叉树 6.二叉树的结构及遍历 扩展:如何判断是不是完全二叉树、二叉树的销毁 1)判断是不是完全二叉树 2)二叉树的销毁 1.单值二叉树 OJ题链接https://leetcode.…

传输协议特点大比拼之UDP

文章目录 前言一.UDP协议端的格式源端口号和目的端口号报文长度校验和 二.UDP的特点无连接面向数据报不可靠缓冲区 前言 本文将比较两种主要的传输协议 ,UDP的特点,以帮助读者更好地理解它们的应用场景和优缺点。 一.UDP协议端的格式 大家先来看一些UDP的报文格式…

企业应用程序单点登录

企业每天都依赖于各种企业应用程序,包括云和本地应用程序。这意味着用户必须经常输入更多密码才能访问这些应用程序并完成他们的工作。为了提高用户的工作效率、减少密码疲劳并使身份管理更有效,您的组织需要部署高效的 SSO 解决方案。 AD360 提供企业 …

[STM32F103C8T6]ADC转换

什么是ADC转换? ADC转换的全称是:Analog-to-Digital Converter,指模拟/数字转换器 ADC的性能指标: ADC分辨率: SSA与VREF-一起接到地,DDA与VREF接到3.3v,所以ADC转换的范围是0---3.3v 所以最后的…

计算机网络复习——第4章 4.2.3 4.2.4 4.3

4.2.3 IP 地址与 MAC 地址 IP地址:虚拟地址、软件地址、逻辑地址。 网络层和以上各层使用。 放在 IP 数据报的首部。 MAC地址:固化在网卡上的 ROM 中。硬件地址、物理地址。数据链路层使用。放在 MAC 帧的首部。IP 地址放在 IP 数据报的首部&#xff…

Windows命令提示符之常见命令--动态更新

序言: 在大家接触Windows电脑的过程中,一般是直接通过鼠标来进行操作,很少甚至没有用到过命令来执行操作,而想必大家都看过电影里面的黑客大神都是通过密密麻麻的指令来操作的,并且执行的速度也会比我们用鼠标块&…

【严重】Artifex Software Ghostscript 任意命令执行漏洞(POC已公开)(CVE-2023-28879)

漏洞描述 Artifex Software Ghostscript是美国Artifex Software公司的一款开源的PostScript解析器。 Artifex Ghostscript 10.01.0及之前版本中,如果写入缓冲区的数据比总长度少一个字节,则尝试写入转义字符,导致两个字节被写入。攻击者可通…

WPF入门(三)--事件Event调用

1、WPF应用程序的关闭 WPF应用程序的关闭只有在应用程序的 Shutdown 方法被调用时,应用程序才停止运行。 ShutDown 是隐式或显式发生,可以通过指定 ShutdownMode 的属性值来进行设置。 对ShutdownMode选项的更改,可以直接在App.xaml中更改&a…

酒店管理系统(Servlet+JSP)

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Java案例分…

【网络小知识】TCP协议介绍/三次握手,四次挥手的作用

前端开发人员需要了解三次握手和四次挥手的原因是,这些概念是在客户端和服务器端之间进行网络通信时所涉及到的 TCP 协议的基本知识。而对于前端来讲,如果页面中请求服务端数据时出现连接失败、延迟等问题,就需要对TCP协议中三次握手、四次挥…

VS——Visual Studio 2022 社区版——安装

VS——Visual Studio 2022 社区版——安装 下载安装官网下载:点击【免费Visual Studio 】即可下载安装界面:选择社区版 Community 安装先修改【安装位置】,选择【全部下载后安装】【工作负荷】选择 【使用C桌面开发】【语言包】点击【安装】&…

排序算法(二)

三、桶排序 先看定义: 桶排序会进行两次排序,一次将所有元素分配到不同的桶中,一次针对每个桶排序或再次排序所有元素。 练习题: 1) 力扣https://leetcode.cn/problems/top-k-frequent-elements/这道题就是非常典型…

NFS能使使用者访问网络上别处的文件就像在使用自己的计算机一样

先关闭selinux跟防火墙 安装NFS yum install nfs-utils -y 配置共享目录 mkdir /webdata 赋权 chmod 755 /webdata 修改配置文件 vim /etc/exports 换顺序启动 systemctl start rpc-bind systemct start nfs 测试 showmount -e 客户端挂载 创建共享目录 mkdir /we…

BUUCTF-rip

https://www.cnblogs.com/refrain-again/p/15001283.html 看了这个文章 我起码能理解我们栈溢出的目的 在做题之前 我们需要先理解 栈的存储方法 从上往下看 就能理解入栈 说回这道题目 为什么这道题目是栈溢出 1.查看基本信息 checksec file 是kali下的elf文件 相当于w…

ASEMI代理ADI亚德诺AD8061ARTZ-REEL7车规级芯片

编辑-Z AD8061ARTZ-REEL7芯片参数: 型号:AD8061ARTZ-REEL7 −3dB小信号带宽:320MHz −3dB大信号带宽:280MHz 0.1 dB平坦度的带宽:30MHz 斜率:650V/μs 总谐波失真:-77dBc 输入电压噪声&…