基于網絡編碼的 tcp 變種-tcp/nc

tcp/nc 是指 “tcp with network coding”,是一種結合了網絡編碼技術的 tcp 變種,網上資源很少,我也不準備多介紹,只介紹它的核心。

傳統 tcp 在演進過程中一直搞不定效率問題,網絡帶寬在增長,cpu 卻沒有變得更快,為保持可靠語義,tcp 丟包判斷和重傳邏輯的時間占比越來越大。

從 3 次 dupack,3 個 sacked segs 到 rack,甚至跌入 rto,邏輯復雜的核心在于,你必須用某種啟發式算法判定丟包,然后擇機重傳標記為 lost 的報文,丟包判斷必須盡快,而重傳卻不得不謹慎,慌亂中很難把握分寸,則要么不足,要么激進。tcp 沒有提供一種內在的方式,讓丟包判斷和重傳在松弛的氛圍中進行。

tcp/nc 依然是我那 “橫豎一顛倒,世界變了樣” 方法論的體現:
在這里插入圖片描述

通過編碼系數提供冗余,receiver 解碼過程就是一個解 n 元一次方程組的過程,每一個包就是一個方程,丟一個包意味著 n 個方程少了一個,需要補一個方程,就是重傳。

判斷丟包非常簡單,receiver 保存兩個變量:

  • H1 表示一個 tcp/nc 報文表示的一個方程中序號最高的包,比如上圖中 receiver 收到 c2,H1 就是 p2;
  • H2 表示 receiver 當前收到的連續的序號最高的包,上圖中如果 c 丟失,收到 c2 時,H2 就是 p1;

如果沒有丟包,H1 - H2 = 0,理論上 sender 只要發現 H1 - H2 > 0 即可補充一個冗余報文,但 sender 可以將這件事延遲,這就是給了亂序以松弛感。

比如 c1 丟失,sender 收到 c2 即可發送一個冗余報文,比如 c3 = p0 + 3p1 + p2,但它可以繼續等到收到 c3,發現 H1 - H2 > 0 依舊,就可以發送一個冗余了,比如 c4 = p0 + 2p1 + p2 + p3,4 個未知數 4 個方程,p0 到 p3 解碼成功。

只是一個簡單例子,想說的是,這種冗余編碼(可以支撐延遲一個編碼窗口)提供的松弛感可以讓 sender 采集足夠多的數據,進行更加理性的擁塞判斷,而不是像傳統 tcp 那樣頻繁跌入 ssthresh = cwnd / 2 甚至 rto。

至于冗余度,既然不準備多介紹 tcp/nc 也就不多說,確實,相比傳統 tcp,有效傳輸的數據更少了,但這本身就是 trade off,旨在解除 tcp 的抱怨 “花太多精力在丟包判斷和重傳中”,就夠了。

規整化,本身就要付出代價,要看收益有多大。

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

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

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

相關文章

C++類和對象(上篇)

文章目錄 前言一、面向過程和面向對象初步認識 二、類的引入 三、類的定義 六、類的實例化 七、類的對象大小的計算 八、類成員函數的this指針 總結 前言 類和對象是面向對象編程的兩個核心概念。 類是一種抽象的數據類型,是描述對象共同特征和行為的模板。一個類…

yolov5:Conv類參數量計算

Conv是yolov5自定義的類,里邊包含了卷積層、BN層和激活函數 class Conv(nn.Module):# Standard convolution with args(ch_in, ch_out, kernel, stride, padding, groups, dilation, activation)default_act nn.SiLU() # default activationdef __init__(self, c…

點云下采樣有損壓縮

轉自本人博客&#xff1a;點云下采樣有損壓縮 點云下采樣是通過一定規則對原點云數據進行再采樣&#xff0c;減少點云個數&#xff0c;降低點云稀疏程度&#xff0c;減小點云數據大小。 1. 體素下采樣&#xff08;Voxel Down Sample&#xff09; std::shared_ptr<PointClo…

華為機考真題 -- 信道分配

題目描述&#xff1a; 算法工程師小明面對著這樣一個問題&#xff0c;需要將通信用的信道分配給盡量多的用戶&#xff0c; 信道的條件及分配規則如下&#xff1a; 1) 所有信道都有屬性&#xff1a;”階”。階為 r 的信道容量為 2^r 比特&#xff1b; 2) 所有用戶需要傳輸的數…

區間貪心

目錄 1.貪心算法的思想 2.區間貪心算法常用的一些題目類型 1.選擇最多不相交區間問題 P2970 [USACO09DEC] Selfish Grazing S 1.思路分析 2.上代碼 2.區間選點問題 P1250 種樹 1.題目 2.方法一 1.代碼解釋 3.方法二 3.區間合并問題 P2434 [SDOI2005] 區間 1. 思路…

中科海訊 C++初級研發工程師筆試題目

C語言中的const關鍵字有什么作用&#xff1f;為什么要使用const關鍵字&#xff1f; 1 const修飾的變量將會被放到常量區&#xff0c;避免被意外的改動。 const修飾的常量比#define修飾的有更多的優勢&#xff0c;比如可以調試&#xff0c;類型檢查等 2 const修飾的參數可做輸入…

Java集合面試題

Java集合框架 1、List、Set、Map的區別2、ArrayList、LinkedList、Vector區別3、為什么數組索引從0開始&#xff0c;而不是從1開始&#xff1f;4、ArrayList底層的實現原理5、紅黑樹、散列表6、HashMap的底層原理7、HashMap的put方法具體流程8、HashMap的擴容機制9、HashMap是怎…

南方科技大學馬永勝教授給年輕人使用AI工具上的建議

摘要 - 1. AI的未來&#xff0c;是機器人和機器人之間的合作&#xff1b; 2. 行業的發展方向是需求決定的&#xff0c;不要做同質化的發展&#xff0c;要做專/精/特/新&#xff1b; 3. 新質生產力 &#xff08; 科學技術革命性突破 生產要素創新型配置 產業深度轉型升級&…

java通過poi-tl導出word實戰詳細步驟

文章目錄 與其他模版引擎對比1.引入maven依賴包2.新建Word文檔exportWprd.docx模版3.編寫導出word接口代碼4.導出成果 poi-tl是一個基于Apache POI的Word模板引擎&#xff0c;也是一個免費開源的Java類庫&#xff0c;你可以非常方便的加入到你的項目中&#xff0c;并且擁有著讓…

貪心算法-以高校教材管理系統為例

1.貪心算法介紹 1.算法思路 貪心算法的基本思路是從問題的某一個初始解出發一步一步地進行&#xff0c;根據某個優化測度&#xff0c;每一 步都要確保能獲得局部最優解。每一步只考慮一 個數據&#xff0c;其選取應該滿足局部優化的條件。若下 一個數據和部分最優解連在一起…

Pix4Dmapper:無人機測繪的革命性工具

在現代測繪和地理信息系統&#xff08;GIS&#xff09;領域&#xff0c;Pix4Dmapper無疑是一款革命性的工具。作為一名長期使用這款軟件的用戶&#xff0c;我深深感受到它在工作中的重要性和便利性。Pix4Dmapper不僅僅是一款軟件&#xff0c;更是測繪工作者的得力助手&#xff…

285個地級市出口產品質量及技術復雜度(2011-2021年)

出口產品質量與技術復雜度&#xff1a;衡量國家競爭力的關鍵指標 出口產品質量是衡量國內企業生產的產品在國際市場上競爭力的重要標準。它不僅要求產品符合國際標準和目標市場的法律法規&#xff0c;而且需要保證產品質量的穩定性和可靠性。而出口技術復雜度則進一步體現了一…

新一代信息技術及應用

關于云計算的描述不正確的是&#xff08; &#xff09;。 A 云計算可以通過網絡連接&#xff0c;用戶通過網絡接入“云”中并獲得有關的服務&#xff0c;“云”內節點之間也通過內部的網絡相連 B 云計算可以快速、按需、彈性服務&#xff0c;用戶可以按照實際需求迅速獲取或釋放…

[Python學習篇] Python面向對象——類

面向對象是什么&#xff1f; 面向對象&#xff08;Object-Oriented Programming&#xff0c;簡稱OOP&#xff09;是一種編程范式&#xff0c;它使用“對象”來設計應用程序和計算機程序。OOP的核心概念包括類&#xff08;Class&#xff09;、對象&#xff08;Object&#xff09…

批量下載手機中APP程序中文件

需求 利用 adb pull 下載手機中app的某目錄 adb pull 命令本身不支持直接下載整個目錄&#xff08;文件夾&#xff09;及其所有子目錄和文件作為一個單一的操作。但是&#xff0c;可以通過一些方法來間接實現這一目的。 方法 1. 首先將要下載的目錄進行 tar 打包 # 在 And…

Python面試題:Python 中的 `property` 函數有什么用?

在 Python 中&#xff0c;property 函數用于創建和管理類中的屬性。它允許你將方法轉換為屬性&#xff0c;這樣你可以像訪問變量一樣訪問這些方法。這對于控制屬性的訪問和修改非常有用&#xff0c;因為它允許你在屬性訪問時執行額外的邏輯&#xff08;如驗證或計算&#xff09…

光通信領域常見的會議和期刊總結

在高速光通信小組待了一年&#xff0c;對我們領域主要的會議和期刊也有了一定的了解&#xff0c;所以總結一下我們可以投的期刊或會議有哪些。會議一般有OFC、ECOC、CLEO、OECC、ACP等&#xff0c;期刊則有OE、OL、PTL、JLT、PJ、AO、JOSA等&#xff0c;下面簡單介紹一下。 先…

【atcoder】習題——位元枚舉

題意&#xff1a;求i&M的popcount的和&#xff0c;i屬于0……N 主要思路還是變加為乘。 舉個例子N22&#xff0c;即10110 假設M的第3位是1&#xff0c;分析N中&#xff1a; 00110 00111 00100 00101 發現其實等價于 0010 0011 0000 0001 也就是左邊第4位和第5…

算法學習筆記(8.1)-動態規劃入門

目錄 問題特性&#xff1a; 最優子結構&#xff1a; 代碼示例&#xff1a;&#xff08;動態規劃最優子結構&#xff09; 上述最小代價爬樓梯的運行過程&#xff1a; 代碼示例&#xff1a; 無后效性&#xff1a; 解析&#xff1a; 具體過程圖示如下&#xff1a; 具體的…

如何為IP申請SSL證書

目錄 以下是如何輕松為IP地址申請SSL證書的詳細步驟&#xff1a; 申請IP證書的基本條件&#xff1a; 申請IP SSL證書的方式&#xff1a; 確保網絡通信安全的核心要素之一&#xff0c;是有效利用SSL證書來加密數據傳輸&#xff0c;特別是對于那些直接通過IP地址訪問的資源。I…