一行 iptables 可以实现 net_speeder 全部功能

2015-03-04 00:09:55 +08:00
 efi

我访问一个ssh命令行打字延时500ms丢包20%,实在受不了弄了一个iptables规则来重复发包:

iptables -t mangle -A OUTPUT -p tcp --dport 22 -j TEE --gateway 192.168.1.1

后来一看net_speeder功能完全一样。


对有所有流量无差别重复发包会毁掉别人的拥塞控制,对自己的带宽也是低效利用。Google精心设计QUIC协议,使用FEC前向纠错码,也只是对很少几个关键包提前重发(Proactive speculative retransmission)。

冗余传输的确是一种纠错方式,只是看怎么用它。对极少量互动性的流量(ssh打字)控制流量(TCP的SYN)利用冗余传输是合理的,对数据流量使用就是不公平的。iptables可以精细控制这个选择。

7945 次点击
所在节点    Linux
9 条回复
jedihy
2015-03-04 00:15:20 +08:00
其实对拥塞控制影响不大接近于窗口X2,丢包后还是会收敛,主要是浪费了带宽。
ryd994
2015-03-04 00:27:59 +08:00
@jedihy 影响很大
别人丢一个包就收敛,你要丢两个,还必须是同一对的两个。这样出现拥塞的时候,别人注意到大量丢包了,于是开始压速度,你发现不了,以为丢包不严重,还一个劲的发。快到是快了,无非劣币驱逐良币,等到大家都用的时候就大家一起没得用。拥塞控制就是为了最大化利用带宽。
LazyZhu
2015-03-04 00:46:47 +08:00
ryd994
2015-03-04 06:10:47 +08:00
@LazyZhu tzsp是再打包的,不能用于这个用途,否则你还要又有个端点给你解包
muzimin
2015-03-04 14:04:47 +08:00
建议补包还是添加一个小延迟。当遇到网络拥塞后,瓶颈处会出现集体拥塞控制,紧接着出现一个不拥塞空挡,这个时候补发包,成功率会很高。对于跨洋访问只需要延迟个几十个毫秒,原包和clone包就会强烈互补效应。

对于高延迟、高丢包、网络连接不稳定环境下进行服务器操作,推荐使用Mosh。对于命令敲入,采用异步UDP方式,本地先无阻塞显示输出,真正实际输出回传覆盖的方式。除此还有多个针对ssh短板特征,
https://mosh.mit.edu/

视频介绍
http://v.youku.com/v_show/id_XNDQzMzc2MzIw.html
<amp-youtube data-videoid="XsIxNYl0oyU" layout="responsive" width="480" height="270"></amp-youtube>
efi
2015-03-04 17:51:28 +08:00
@muzimin
mosh早就知道。之所以没提,三个原因:服务器没装,不兼容ssh,不解决丢包。
yantze
2015-03-04 21:26:57 +08:00
@muzimin mosh在digitalocean上的centos7试过,用putty连上mosh后,响应慢,并且mosh-server在网络不好的时候,不响应mosh-client的请求。在当前环境下不好用,其它环境未知。
mackyzhan
2015-03-04 23:16:43 +08:00
mark,有空试试效果,感觉对付卑鄙的墙效果应该不错。
linkupmylife
2016-02-03 11:22:04 +08:00
试过了,出现 DUP ACK , Window 下降,反而更慢了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/174284

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX