TCP over TCP的出现与解决办法

TCP over TCP问题 

 

        TCP是可靠的网络传输协议,这是因为底层协议的不可靠性,TCP 有一系列的可靠性机制来保障(流控、重传...)。在正常的使用中,TCP 可以很好的完成可靠性传输任务。但在 TCP Tunnel中就会出现问题,隧道中每个数据包会在外出多封装一层TCP头部(其实就是将原本用户数据包封装后使用TCP再发一次,对端接收后解封,再将原本的数据包转发)。当用户使用 TCP 时,TCP 隧道中的数据包事实上是由两套 TCP 机制来保障可靠性了(用户端与隧道)。当封装的数据包在传输过程中丢包时,如果外层 TCP 的 RTO 小于 内层 TCP 的 RTO 就会出现很严重的问题:造成大量的重传,严重影响转发性能(减低 GOODPUT 吞吐量)。

(TCP over IP over PPP over SSH over TCP over IP)

解决的办法

        1、开启 TCP SACK 选项,只重传确定的丢包。

        2、增大内层 TCP 的 RTO(回答二

        3、适当增大 buffer(第三部分测试得出

        4、关掉巨帧,避免分包

拓展

        1、在支持FACK/SACK/RACK的现代TCP中,RTO很少被触发,依靠各种xACK探测到需要重传的场景,那便尽是TCP over TCP 的优势了。即TCP Tunnel更适合长距离传输网络。(dog250),在网络中建立隧道,丢包后由隧道网关进行重发,可以减少重传时间。这个结论在论文中也有提及,在延迟较大的网络中,TCP Tunnel会提高一定性能。

在这里插入图片描述

        2、为什么在基于TCP的VPN中,TCP over TCP很有很明显的影响?这是因为高质量的网络环境中丢包并不明显。

参考文献

到底要不要走TCP隧道,要不要TCP over TCP?_Netfilter,iptables/OpenVPN/TCP guard:-(-CSDN博客

Why TCP Over TCP Is A Bad Idea

总结TCP over TCP是否是一个坏主意-进城务工人员小梅

networking - What is TCP-over-TCP and how does OpenVPN under TCP mode avoid the issue? - Server Fault

 Understanding TCP over TCP: effects of TCP tunneling on end-to-end throughput and latency - 百度学术

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我要出家当道士

打赏是不可能,这辈子都不可能

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值