我访问一个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可以精细控制这个选择。