端到端擁塞控制的本質

昨天整理了一篇 bbr 的微分方程組建模(參見 bbr 建模),算是 bbr 算法終極意義上的一個總結,最后也順帶了對 aimd 的描述,算是我最近比較滿意的一篇分享了。那么接下來的問題,脫離出具體算法,上升到宏觀層面,擁塞控制的本質是什么。

擁塞控制的本質就是對有效資源的自適應,這里的有效資源包括帶寬但不包括 buffer。這個自適應分為兩個層面,在局部意義上,要對時延負反饋做適應,在全局意義上,要做公平收斂,要說本質,就是以上這些。

用微分方程描述擁塞控制非常直觀,因為它本身就是描述變化的,而擁塞控制就是要對變化做響應,變化主要指全局流量的波動,有流量加入,就出讓一些資源,有流量退出,就搶占一些資源,出讓多少,搶占多少,不光看能力,還要看全局,所有這一切都非常容易用微分方程描述。擁塞控制更多的意義在于適應多流,單流還不容易嗎,傳統 slow start or bbr startup 就夠了。

我們看迄今為止具有代表性的 3 類擁塞控制算法,基于丟包的 reno/cubic,基于時延的 vegas,基于 bdp 模型的 bbr,它們無外乎都在描述 cwnd/pacing rate 的變化。

雖然 reno/cubic 的 aimd 依賴外部事件(丟包)而顯得不連續,但它依然可以用連續的方程描述,只需要把丟包事件等價到丟包率即可:

d W d t = ( 1 ? p ) ? a W ? p ? b ? W \dfrac{dW}{dt}=(1-p)*\dfrac{a}{W}-p*b*W dtdW?=(1?p)?Wa??p?b?W

而對于 vegas,只需要盯緊時延變化,下面是我給出的一個模型,簡陋,但能說明問題。設 x(t) 為發送速率,y(t) 為期望 rtt,z(t) 為實際測量 rtt,w(t) 為 cwnd,則 vegas 的行為可由下列一組方程描述:

z ( t ) = 實際實時采樣 z(t)=實際實時采樣 z(t)=實際實時采樣
d x d t = k 1 ( z ? y ) \dfrac{dx}{dt}=k_1(z-y) dtdx?=k1?(z?y)
d y d t = k 2 ( y ? z ) \dfrac{dy}{dt}=k_2(y-z) dtdy?=k2?(y?z) 【實則移動指數平均】
d w d t = x ? z \dfrac{dw}{dt}=x\cdot z dtdw?=x?z

我用 sin 函數模擬采樣波動,數值解法代碼如下:

x = np.zeros_like(times)
y = np.zeros_like(times)
z = np.zeros_like(times)
w = np.zeros_like(times)x[0], y[0], z[0] = x0, y0, z0
t = np.arange(0.0, T, 0.1)
for n in range(1, len(times)):x[n] = x[n-1] + dt * (-k1*(z[n-1] - y[n-1]))y[n] = y[n-1] + dt * (-k3*(y[n-1] - z[n-1]))z[n] = 1 + 1*np.sin(2 * np.pi * t[n-1])w[n] = x[n]*z[n]

它長下面的樣子:
在這里插入圖片描述

可觀察到這些量之間的關系,就是負反饋,阻止 rtt 變化,此消彼長。

資源限定場景,參與者多則收,參與者少則放,裝進一個瓶子,晃一段時間就不再擁擠,這就是擁塞控制。

很多人都有體驗,剛擠進一輛滿載公交車或綠皮火車,似乎每個人都被壓得喘不過氣,但車子顛簸一陣子后,奇跡般寬松了,另一例,醫院,景區,購物等不管排隊多長,似乎最終都會得到服務。

總有人會往寬松的地方主動挪,有人挪就有人讓,總有人覺得沒希望而離開,但很少有人主動擠,這就是擁塞控制。端到端擁塞控制與此類似,都是沒有全局上帝視角的自發自組織博弈。

自 1986 年第一次肉眼可見的大范圍網絡擁塞后,范雅各布森(Van Jacobson,任何 cc 都應引用他)引入擁塞控制機制后迄今誕生了越來越多的擁塞控制算法,但具有部署意義的依舊是 reno/cubic,vegas,bbr 這 3 類,其它的諸多算法大多數都上不了臺面。

近幾年各類 cc 如寒武紀大爆發(各頂會一年 n 多論文,n 多 cc,基本都是瞎 jb 扯淡),但多數上不了臺面,主流 cc 還是老 3 樣,實際部署的就是 cubic vs. bbr,vegas 都不行,別的都只能自己玩玩,內卷罷了。強調端到端卻又沒什么好招數獲得更加詳細的信息,上限到了,信息量已達極限,還折騰個啥。至于 dcn,只呵呵。

大多數都是為了升職加薪,包括 G 家。rack 早在 1994 年 vegas 論文中就展現了,然而無人問津,直到 bbr 前夕… 其實業內早就采用了。業內一般不管你實際效果,而在乎總結性只言片語,曾有位自詡資深的經理說 “擁塞控制的本質就是端到端的 qos”,這就純扯犢子了。

端到端信息量極限的根因在于 “測不準”。測不準又怎樣,大數定律,中心極限定理上場啊,任何事物在足夠符合它自己尺度的那個度量精度,一定有規律,這就是統計學兩大定律的前提,而分組交換互聯網本身就是統計復用網絡,它遵循統計律。

但大多數程序員看不上統計律。可統計律才是有效的擁塞控制的核心基礎,不然呢?你試試看。

艸,本來不卷,求別卷!雞屎,經理。

浙江溫州皮鞋濕,下雨進水不會胖。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44465.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44465.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44465.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

git reset hard和soft的使用和區別

在Git中,git reset命令用于撤銷提交、回溯版本和調整工作目錄或暫存區狀態,而不是gitrestore。git reset主要有三種模式:--soft、--mixed(默認)和--hard。以下是關于--hard和--soft兩種模式的使用方法和區別的詳細解釋…

uniapp微信小程序 TypeError: $refs[ref].push is not a function

我的寫法 this.$refs.addPopup.open();報錯 打印出來是這樣的 解決 參考未整理 原因 在當前頁面使用的v-for循環 并且循環體內也有組件使用了ref(而我沒有把每個ref做區別命名) 這樣就導致了我有很多同名的ref,然后就報錯了 解決辦法&a…

AI人工智能作詞,為音樂注入未來之力

在當今的音樂世界中,創新的力量不斷推動著邊界的拓展,而人工智能作詞正以其獨特的魅力,成為引領音樂走向未來的強大動力。 “妙筆生詞智能寫歌詞軟件(veve522)”無疑是這股浪潮中的璀璨明星。它利用先進的人工智能技術…

記錄一次Android推流、錄像踩坑過程

背景: 按照需求,需要支持APP在手機息屏時進行推流、錄像。 技術要點: 1、手機在息屏時能夠打開camera獲取預覽數據 2、獲取預覽數據時進行編碼以及合成視頻 一、息屏時獲取camera預覽數據: ①Camera.setPreviewDisplay(SurfaceH…

通過 Azure OpenAI 服務使用 GPT-35-Turbo and GPT-4(win版)

官方文檔 Azure OpenAI 是微軟提供的一項云服務,旨在將 OpenAI 的先進人工智能模型與 Azure 的基礎設施和服務相結合。通過 Azure OpenAI,開發者和企業可以訪問 OpenAI 的各種模型,如 GPT-3、Codex 和 DALL-E 等,并將其集成到自己…

input上傳--upload

1.HTML <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>上傳文件</title><link rel"…

《C++并發編程實戰》筆記(一、二)

一、簡介 抽象損失&#xff1a;對于實現某個功能時&#xff0c;可以使用高級工具&#xff0c;也可以直接使用底層工具。這兩種方式運行的開銷差異稱為抽象損失。 二、線程管控 2.1 線程的基本控制 1. 創建線程 線程相關的管理函數和類在頭文件&#xff1a; #include <…

數據結構——線性表(C語言實現)

寫在前面&#xff1a; 在前面C語言的結構體學習中&#xff0c;我提及了鏈表的操作&#xff0c; 學習數據結構我認為還是需要對C語言的數組、函數、指針、結構體有一定的了解&#xff0c;不然對于結構體的代碼可能很難理解&#xff0c;特別是一些書籍上面用的還是偽代碼&#xf…

OpenGL筆記一之基礎窗體搭建以及事件響應

OpenGL筆記一之基礎窗體搭建以及事件響應 總結自bilibili趙新政老師的教程 code review! 文章目錄 OpenGL筆記一之基礎窗體搭建以及事件響應1.運行2.目錄結構3.main.cpp4.CMakeList.txt 1.運行 2.目錄結構 01_GLFW_WINDOW/ ├── CMakeLists.txt ├── glad.c ├── main…

Linux基于centos7指令初學3

date指令 作用&#xff1a; date指令可以查看時間 這個指令可以進行格式化 格式&#xff1a;date %想要的內容 Y&#xff1a;年份 m&#xff1a;月份 d&#xff1a;日 H&#xff1a;時 M&#xff1a;分 S&#xff1a;秒 時間分界線可以由…

GIT相關操作,推送本地分支到遠程倉庫流程記錄學習

git流程 切換到源文件夾&#xff1a;cd 源文件夾克隆遠程倉庫&#xff1a;git clone [ssh]進入項目文件夾&#xff1a;cd .\project\查看本地分支&#xff1a;git branch獲取遠程倉庫更新&#xff0c;使遠程同步&#xff1a;git fetch查看所有分支&#xff08;包括遠程分支&am…

OJ-0712

示例1&#xff1a; input 8 123 124 125 121 119 122 126 123 output 1 2 6 5 5 6 0 0示例2&#xff1a; input 2 95 100 output 1 0示例3&#xff1a; input 2 100 95 output 0 1package com.wsdcode.od;import java.util.Scanner;public class Main {public static void m…

LabVIEW比例壓力控制閥自動測試系統

開發了一套基于LabVIEW編程和PLC控制的比例控制閥自動測試系統。該系統能夠實現共軌管穩定的超高壓供給&#xff0c;自動完成比例壓力控制閥的耐久測試、流量滯環測試及壓力-流量測試。該系統操作簡便&#xff0c;具有高精度和高可靠性&#xff0c;完全滿足企業對自動化測試的需…

安裝jenkins最新版本初始化配置及使用JDK1.8構建項目詳細講解

導讀 1.安裝1.1.相關網址1.2.準備環境1.3.下載安裝 2. 配置jenkins2.1.安裝插件2.2.配置全局工具2.3.系統配置 3. 使用3.1.配置job3.2.構建 提示&#xff1a;如果只想看如何使用jdk1.8構建項目&#xff0c;直接看3.1即可。 1.安裝 1.1.相關網址 Jenkins官網&#xff1a;https…

RabbitMq如何保證消息的可靠性和穩定性

RabbitMq如何保證消息的可靠性和穩定性 rabbitMq不會百分之百讓我們的消息安全被消費&#xff0c;但是rabbitMq提供了一些機制來保證我們的消息可以被安全的消費。 消息確認 消息者在成功處理消息后可以發送確認&#xff08;ACK&#xff09;給rabbitMq&#xff0c;通知消息已…

Hadoop-25 Sqoop遷移 增量數據導入 CDC 變化數據捕獲 差量同步數據 觸發器 快照 日志

章節內容 上節我們完成了如下的內容&#xff1a; Sqoop MySQL遷移到HiveSqoop Hive遷移數據到MySQL編寫腳本進行數據導入導出測試 背景介紹 這里是三臺公網云服務器&#xff0c;每臺 2C4G&#xff0c;搭建一個Hadoop的學習環境&#xff0c;供我學習。 之前已經在 VM 虛擬機…

計算機的錯誤計算(二十九)

摘要 &#xff08;1&#xff09;討論近似值的錯誤數字個數。有時&#xff0c;遇到數字9或0, 不太好確認近似值的錯誤數字個數。&#xff08;2&#xff09;并進一步解釋確認計算機的錯誤計算&#xff08;二十八&#xff09;中一個函數值的錯誤數字個數。 理論上&#xff0c;我…

py2neo常用語句

1.連接數據庫 Neo4j服務器默認的端口號就是7474,所以本地的主機就是"http://localhost:7474" 。 默認的用戶名密碼都是neo4j&#xff0c; # 連接數據庫&#xff0c;輸入個人配置 graph Graph("http://localhost:7474//browser/", auth("neo4j"…

百日筑基第十九天-一頭扎進消息隊列2

百日筑基第十九天-一頭扎進消息隊列2 消息隊列的通訊協議 目前業界的通信協議可以分為公有協議和私有協議兩種。公有協議指公開的受到認可的具有規 范的協議&#xff0c;比如 JMS、HTTP、STOMP 等。私有協議是指根據自身的功能和需求設計的協 議&#xff0c;一般不具備通用性&…

數學建模·熵權法

熵權法 一種計算評價指標之間權重的方法。熵權法是一種客觀的方法&#xff0c;沒有主觀性&#xff0c;比較可靠。 具體定義 熵權法的核心在于計算信息熵&#xff0c;信息熵反映了一個信息的紊亂程度&#xff0c;體現了信息的可靠性 具體步驟 Step1正向化處理 將所以評價指標轉…