基于网络编码的 tcp 变种-tcp/nc

打印 上一主题 下一主题

主题 1388|帖子 1388|积分 4164

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 的诉苦 “花太多精力在丢包判断和重传中”,就够了。
规整化,自己就要付出代价,要看收益有多大。
浙江温州皮鞋湿,下雨进水不会胖。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

小小小幸运

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表