带宽,时延,抖动的不可能三角

简单论证一下带宽,时延,抖动的不可能三角,这是一个非常浅显的道理,啰嗦了无数次,也不在乎再多一次。

之前说过 TCP/IP\text{TCP/IP}TCP/IP 网络所有理论都基于泊松到达指数分布的排队论,而这个前提模型是错误的,因为数据流是幂分布的,但不影响用 M/M/1\text{M/M/1}M/M/1 来论述这个不可能三角。

链路服务率 μ\muμ,到达率 λ\lambdaλ,利用率 ρ=λμ,(0≤ρ<1)\rho=\dfrac{\lambda}{\mu},\quad(0\le\rho\lt 1)ρ=μλ,(0≤ρ<1),

M/M/1\text{M/M/1}M/M/1 中,系统总时间 TTT 包括排队等待和服务时间,服从参数为 μ⋅(1−ρ)\mu\cdot(1-\rho)μ⋅(1−ρ) 的指数分布,平均时延:

ET=1μ(1−ρ)\mathbb{E}T = \dfrac{1}{\mu(1-\rho)}ET=μ(1−ρ)1

链路固有的抖动:

σT=VarT=1μ(1−ρ)\sigma_T = \sqrt{\mathrm{Var}T} = \dfrac{1}{\mu(1-\rho)}σT=VarT =μ(1−ρ)1

所以:

σT=ET=1μ(1−ρ)\sigma_T = \mathbb{E}T = \frac{1}{\mu(1-\rho)}σT=ET=μ(1−ρ)1

平均时延和抖动在 M/M/1\text{M/M/1}M/M/1 里同量级,为了适应所有分布的流,我将抖动从模型中拆开,靠接收缓存 BBB 耦合。

接收端部署深度为 BBB 的 buffer\text{buffer}buffer,把到达时间的波动锁住,方可均匀输出。

buffer\text{buffer}buffer 吸收的波动上限为 BBB,剩余的波动即输出抖动 JJJ:

J=max⁡(0,;σT−B)J = \max\left(0,; \sigma_T - B\right)J=max(0,;σT−B)

如此拆开后,端到端总时延就包括排队时延和 buffer\text{buffer}buffer 时延,写作:

D=ET+B=1μ(1−ρ)+BD = \mathbb{E}T + B = \dfrac{1}{\mu(1-\rho)} + BD=ET+B=μ(1−ρ)1+B

把 BBB 从抖动约束里解出来:

B≥1μ(1−ρ)−JB \geq \dfrac{1}{\mu(1-\rho)}-JB≥μ(1−ρ)1−J

代入 DDD:

D=1μ(1−ρ)+max⁡(0,;1μ(1−ρ)−J)D = \dfrac{1}{\mu(1-\rho)} + \max\left(0,; \dfrac{1}{\mu(1-\rho)} - J\right)D=μ(1−ρ)1+max(0,;μ(1−ρ)1−J)

当负载较高时,1μ(1−ρ)>J\dfrac{1}{\mu (1-\rho)}\gt Jμ(1−ρ)1>J,buffer\text{buffer}buffer 工作,上式化简为:

D=2μ(1−ρ)−J⋯(∗)D=\dfrac{2}{\mu(1-\rho) - J} \quad \cdots(*)D=μ(1−ρ)−J2⋯(∗)

这就是不可能三角,DDD,JJJ,ρ\rhoρ 因此耦合。

高带宽等价于高利用率,先看高利用率和低抖动的情况。

这种情况下,ρ→1\rho\to 1ρ→1,带宽满载,将 JJJ 固定趋于 000,代入式 (∗)(*)(∗):

D=2μ(1−ρ)−J→ρ→1,;J→0+∞D=\dfrac{2}{\mu(1-\rho)} - J \xrightarrow{\rho \to 1,; J \to 0} +\inftyD=μ(1−ρ)2−Jρ→1,;J→0 +∞

此时 1−ρ→01−\rho\to 01−ρ→0,DDD 发散,意思是带宽越高,抖动约束在足够小,buffer\text{buffer}buffer 必深,时延越大。

再看高利用率和低时延的情况。

这种情况下,ρ→1\rho\to 1ρ→1,固定 D≤Dmax⁡D\le D_{\max}D≤Dmax,约束时延,从式 (∗)(*)(∗) 解 JJJ:

J=2μ(1−ρ)−DJ=\dfrac{2}{\mu(1-\rho)}-DJ=μ(1−ρ)2−D

令 ρ→1\rho\to 1ρ→1:

J=2μ(1−ρ)⏟→+∞−Dmax⁡→ρ→1+∞J = \underbrace{\dfrac{2}{\mu(1-\rho)}}{\to +\infty} - D{\max} \xrightarrow{\rho \to 1} +\inftyJ=→+∞ μ(1−ρ)2−Dmaxρ→1 +∞

DDD 是常数,11−ρ\dfrac{1}{1−\rho}1−ρ1 为发散项,时延低,buffer\text{buffer}buffer 浅,高负载下的排队波动透传到抖动。

最后看低时延和低抖动的情况。

固定 D≤Dmax⁡D\le D_{\max}D≤Dmax,固定 J≤Jmax⁡J\le J_{\max}J≤Jmax,代入式 (∗)(*)(∗):

2μ(1−ρ)−J≤Dmax⁡\dfrac{2}{\mu(1-\rho)} - J \leq D_{\max}μ(1−ρ)2−J≤Dmax

2μ(1−ρ)≤Dmax⁡+J≤Dmax⁡+Jmax⁡\dfrac{2}{\mu(1-\rho)} \leq D_{\max} + J \leq D_{\max} + J_{\max}μ(1−ρ)2≤Dmax+J≤Dmax+Jmax

1−ρ≥2μ,(Dmax⁡+Jmax⁡)1 - \rho \geq \dfrac{2}{\mu,(D_{\max} + J_{\max})}1−ρ≥μ,(Dmax+Jmax)2

ρ≤1−2μ,(Dmax⁡+Jmax⁡)\rho \leq 1 - \dfrac{2}{\mu,(D_{\max} + J_{\max})}ρ≤1−μ,(Dmax+Jmax)2

Dmax⁡D_{\max}Dmax 和 Jmax⁡J_{\max}Jmax 越小,右边越逼近 000,要同时降低时延和抖动,需要将 ρ\rhoρ 压低,利用率就低。

裤衩子锁着边儿,而且绣着花儿。

式 (∗)(*)(∗) 的三个变量 DDD,JJJ,ρ\rhoρ 中任意两个取约束,第三个的可行域就被推到边界外,任何技术进步调优只能改变这个三角的形状,但永远也改不了三个角的耦合本身。

所以呢。找到一个平衡就意味着牺牲一些看得见的收益,而经理往往不会放弃可以到手的东西,这就是跟经理的矛盾点。

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

相关推荐
jimmyleeee7 小时前
Agent安全之八:OWASP ASI08 级联失效------当每一个 Agent 都“正确”,系统却走向灾难
网络·安全·web安全
缓慢更新7 小时前
AI 辅助生成单测:从接口定义到用例的流水线
java·服务器·前端·网络·数据库·人工智能
叼烟扛炮7 小时前
Linux 学习笔记(四十一):TCP 并发演进——从单进程到多线程服务器
linux·运维·服务器·网络·笔记·学习·tcp/ip
叼烟扛炮8 小时前
Linux 学习笔记(四十三):网络编程进阶——自定义协议解决 TCP 粘包与守护进程
linux·开发语言·网络·笔记·tcp/ip
Escalating_xu8 小时前
【Linux 网络编程】DNS 与 ICMP:从域名解析到 ping、traceroute,把“网络通不通”问清楚
linux·网络·php
黑十10 小时前
PyTorch 报 “no CUDA GPUs are available“ 怎么办?3 步排查
服务器·网络·人工智能·pytorch·python
updayday85413 小时前
客户附件不该发往旧邮箱,如何在发送前拦截 - Ping64 邮件安全管控
大数据·网络·数据库·安全·智能路由器
其实防守也摸鱼13 小时前
Chrome 扩展安全攻防实录:从攻击面到防御实践
开发语言·前端·网络·chrome·安全·web安全·php
小茬粥13 小时前
QEMU 宿主机网卡实例发现与采集脚本(标准 Linux / Proxmox VE 适配版)COLT_CMDB_QEMU_IFACE.sh
网络
见合八方13 小时前
借助半导体光放大器实现功率预算超31dB的112.5Gbit/s长距无源光网络
网络·5g·soa·光通信·激光雷达·半导体光放大器