跳到正文
不翻车专注 VPN 软件评测

晚高峰卡,换 hy2 有用吗?Hysteria2 和 VLESS 丢包实测 60 次

不翻车编辑部 · 更新于

封面:晚高峰卡成幻灯片,换 hy2 有用吗;丢包 10% 时 VLESS 加 BBR 44.5 兆,hy2 78.8 兆

先说结论:线路一有丢包,Hysteria2(hy2)就比 VLESS 快。丢包到 3% 以上,hy2 比服务器开了 BBR 的 VLESS 快五成到七成多。VLESS 最怕的是服务器没开 BBR,丢 1% 的包,下载速度就从 142 兆掉到 2 兆。

这篇有视频版:YouTube 上看《hy2 和 VLESS 丢包实测》。

这组数据是我们在一台服务器上人为制造丢包测出来的,5 档丢包 × 4 种组合 × 每种 3 遍,一共 60 次。晚高峰国内三网实际丢多少包,我们也用公开探针测了一晚上,放在后面对照。原始数据和测试脚本都能下载,链接在文末。

hy2 的原理和优缺点,另有一篇Hysteria2 科普。

晚高峰实际丢多少包

我们用 Globalping 的公开探针,让国内电信、联通、移动各 2 台机器 ping 测试服务器,每台每次 16 个包。北京时间 2026 年 10 月 10 日 20:01 到 22:42 测了 6 轮,同一天凌晨 00:47 另测一轮做对照。

运营商 晚高峰平均丢包 晚高峰单次最高 凌晨 晚高峰平均延迟
电信 15.1% 50% 9.4% 183 毫秒
移动 7.2% 31.25% 4.2% 191 毫秒
联通 2.3% 12.5% 0% 228 毫秒

平均值按发包数加权。三家晚上都比凌晨丢得多,电信最差。按时间看,20 点前后各轮汇总在 4% 到 8%,21:40 以后多数在 12.5% 左右。

这里测的是 ping(ICMP)的丢包,和代理流量的丢包不是一回事,只能当参照。探针一共 6 个,也代表不了每一条宽带。

丢包为什么让 VLESS 变慢

VLESS 走 TCP。TCP 一发现丢包,就认为路堵了,主动降速。Linux 默认的拥塞控制算法叫 cubic,每发现一轮丢包,把发送窗口降到原来的七成左右(RFC 9438),再慢慢涨回去。丢得比涨得快,速度就一路往下掉。

BBR 是 Google 做的另一种算法,按测出来的带宽和延迟决定发多快,丢一点包不会急着减速。它要在服务器上打开,VLESS 自己不带。

hy2 走 UDP,自己管速度。官方文档写着:客户端不填带宽,用 BBR;填了带宽,用 Brutal,按你填的速度发。

Hysteria2 官方文档「完整客户端配置 → 带宽」:bandwidth 决定某个方向是否使用 Brutal,没用 Brutal 时默认 bbr,下面有带宽值并非越大越好的警告

Brutal 还有一个“丢包补偿”:出现丢包时,按丢包率以略高于设定带宽的速度发送。

Hysteria2 官方文档里 disableLossCompensation 的注释:Brutal 拥塞控制有一个丢包补偿机制,当出现丢包时以略高于设定带宽的速度发送

怎么测的

  • 服务器:洛杉矶 VPS(Interserver),Ubuntu 26.04.1 LTS,内核 7.0。VLESS + Reality + Vision 节点用 3x-ui 建,Xray v26.9.30;hy2 服务端 v2.13.0,自签证书。
  • 客户端:mihomo v1.19.32 命令行版,也就是 Clash Verge 用的内核。
  • 四种组合:
    • A1:VLESS,服务器 cubic
    • A2:VLESS,服务器 BBR
    • B:hy2,客户端不填带宽(BBR)
    • C:hy2,客户端填带宽(Brutal,down 填 140 兆)
  • 丢包:在服务器上用 Linux 的 tc netem,只对服务器发回来的、源端口 443 的流量加 0%、1%、3%、5%、10% 五档随机丢包。
  • 测速:经代理下载服务器本机的测试文件 15 秒,算平均速度。每档每种组合测 3 遍,取中位数。测试时间:北京时间 2026 年 10 月 10 日 00:38 到 00:54。

每一档改完,都把 tc 的统计打出来存档,确认丢包在生效(dropped 是累计数):

# loss 1%
 Sent 5271347807 bytes 3628087 pkt (dropped 1527, overlimits 0 requeues 0)
# loss 10%
 Sent 9402959630 bytes 6478334 pkt (dropped 23855, overlimits 0 requeues 0)

C 的 140 兆,是先让 B 在 0% 丢包下校准测了 3 次(124.9、141.0、150.0),取中间那个往下取整,这套环境大约就到这里。

测试结果

下载速度中位数,单位兆(Mbps):

丢包 VLESS · cubic VLESS · BBR hy2 · 不填带宽 hy2 · Brutal hy2(不填)比 VLESS · BBR
0% 142.4 133.8 155.1 136.0 —
1% 2.0 84.2 109.6 118.0 +30%
3% 1.4 60.6 95.4 96.5 +57%
5% 0.5 56.2 94.9 86.3 +69%
10% 0.2 44.5 78.8 74.3 +77%

几点看法:

  1. 0% 时谁快谁慢看不出什么。 四种组合都在 130 到 155 兆之间,这是这套环境的上限,不是协议的上限。
  2. 没开 BBR 的 VLESS 一丢包就不能用了。 1% 时 2 兆,3% 以上都不到 1.5 兆。
  3. 丢包越多,hy2 领先越多。 1% 时快三成,10% 时快七成多。
  4. hy2 的优势主要不是 Brutal 带来的。 丢 1%、3% 时 Brutal 稍快,丢 5%、10% 时反而是不填带宽的快。官方文档也提醒:带宽值并非越大越好,超过你网络实际能跑的速度,只会适得其反。不确定能跑多少,就别填。
  5. VLESS · BBR 在 10% 档有一遍只有 5.6 兆,另外两遍是 47.4 和 44.5,中位数不受影响。

对照晚高峰

电信晚上平均丢 15%,比我们测的最高一档还多;移动 7%,在 5% 和 10% 之间;联通 2%,在 1% 和 3% 之间。按受控组的数据,电信和移动晚上换 hy2,差距会比较明显;联通丢包少,VLESS 开了 BBR,差别没那么大。

还是那句话:ping 的丢包率不等于代理流量的丢包率,这只是一个参照。

你可以做的三件事

1. 查服务器有没有开 BBR。 SSH 登录后执行:

sysctl net.ipv4.tcp_congestion_control

输出 cubic 就是没开。我们这台 Ubuntu 26.04 装好就是 cubic。打开:

printf "net.core.default_qdisc=fq\nnet.ipv4.tcp_congestion_control=bbr\n" > /etc/sysctl.d/99-bbr.conf
sysctl --system
sysctl net.ipv4.tcp_congestion_control   # 输出 bbr 就对了

Ubuntu 26.04 默认没有 /etc/sysctl.conf 这个文件,网上很多老教程往它里面追加的写法,要换成上面写进 /etc/sysctl.d/ 的办法。

2. 丢包多的线路,加一个 hy2 节点当备用。 和 VLESS 放在同一个客户端里,晚上卡了就切过去。服务端装法:

  1. 官方一行安装命令:bash <(curl -fsSL https://get.hy2.sh/)

  2. 准备证书,/etc/hysteria/config.yaml 里写监听端口、密码和伪装网站:

    listen: :443
    tls:
      cert: /etc/hysteria/server.crt
      key: /etc/hysteria/server.key
    auth:
      type: password
      password: 换成你的长密码
    masquerade:
      type: proxy
      proxy:
        url: https://www.bing.com/
        rewriteHost: true
  3. 防火墙放行 UDP 443(ufw allow 443/udp),云服务商后台有安全组的也要放行。它和 3x-ui 的 VLESS 不冲突:VLESS 用 TCP 443,hy2 用 UDP 443。

  4. systemctl enable --now hysteria-server 启动。

  5. 客户端加一个 hysteria2 节点,填地址、端口、密码。

我们测试用的是自签证书,所以客户端要跳过证书验证。正式用,建议换成正规证书。

3. 以你自己测出来的为准。 hy2 走 UDP,如果你那边的网络限制 UDP,它反而会更慢。晚上卡的时候两个节点各测几次,取中位数比较,做法见测速为什么看中位数。

这次测试的局限

  • 只模拟了服务器到客户端这个方向的丢包,反方向没加。
  • tc 加的丢包是随机均匀的,真实线路未必这样。
  • 一台服务器、一条线路、一个时段,结论只代表这个环境。

原始数据和脚本

资料来源