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

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

启动 server 端程序

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

需要更具自己环境的实际情况调整监听的 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

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

  • –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:
参考链接:

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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值