当前位置:   article > 正文

弱网神器:quic-tun(在存在丢包的网络环境中成倍的提升 TCP 性能)_tun丢包

tun丢包

QUIC是 google 制定的一种基于UDP的低时延的可靠的互联网传输层协议。google 为其研发了优秀的重传算法和拥塞控制算法,和同样是可靠传输协议相较于传统的 TCP 相比 QUIC 的表现可以说相当优秀,尤其是在互联网长距离传输并且存在丢包的网络环境,QUIC 的表现相较于 TCP 有着成倍的提升。目前最著名的基于 QUIC 的应用就是 HTTP3 了。

由于 QUIC 是一个新型的传输层协议,出现时间比较晚,像 HTTP3 这种应用具有后发优势,能很容易的使用上 QUIC 协议,但是目前据大部分应用还都是基于 TCP 的,QUIC 的普及还需要相当长的一段时间。那么有没有别的办法能让传统 TCP 应用间接的使用上 QUIC 呢?答案显而易见,当然是有:就是今天我想向大家介绍的 quic-tun,下面就让我们快速体验一下这个工具。

release 页面下载最新版本,然后解压,在编写本文时 0.0.4 是最新版本:

wget https://github.com/kungze/quic-tun/releases/download/v0.0.4/quic-tun_0.0.4_linux_amd64.tar.gz
tar xvfz quic-tun_0.0.4_linux_amd64.tar.gz
  • 1
  • 2

启动 server 端程序

./quictun-server --listen-on 172.18.31.36:7500
  • 1

需要更具自己环境的实际情况调整监听的 IP 和端口(UDP 端口)。

启动客户端程序

./quictun-client --listen-on tcp:127.0.0.1:6500 --server-endpoint 172.18.31.36:7500 --token-source tcp:172.18.30.117:22
  • 1

客户端程序的参数复杂了许多,这里我来一一解释:

  • –listen-on 客户端程序监听的套接字,可以是一个 TCP 端口,也可以是一个 unix 套接字文件
  • –server-endpoint 这个和服务端程序的 --listen-on 对应
  • –token-source 这个参数后面的套接字地址就是我们想要优化的传统的 TCP 应用(位于服务端的应用)的套接字地址,至于为什么要通过这种方式指定服务端应用的地址,需要详细阅读官方的项目文档

等待客户端启动后,我们访问客户端监听的地址,quic-tun 就会把流量转发到后端真实服务。转发流程可以分为三个阶段:

  • 客户端应用->quictun-client(客户端程序):这个阶段会进行换头操作,把数据包的 TCP 报文头换为 QUIC;
  • quictun-client(客户端程序)->quictun-server(服务端程序):这个阶段使用 QUCI 协议进行长距离传输;
  • quictun-server(服务端程序)->真实服务:这个阶段会把数据包的 QUIC 报文头换回 TCP,在转发到真实服务

从上面客户端的启动参数可以看出我想优化的 TCP 服务是一个 SSH 服务(172.18.30.117:22),那么我们可以用 ssh 命令测试一下效果:

$ ssh root@127.0.0.1 -p 6500
root@127.0.0.1's password:
  • 1
  • 2
参考链接:

代码仓库:https://github.com/kungze/quic-tun
官方文档:https://kungze.github.io/documents/quic-tun/

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/626383
推荐阅读
相关标签
  

闽ICP备14008679号