基于 UDP 的极致吞吐:Hysteria 协议与 Brutal 拥塞控制算法深度解析
引言
在跨国网络通信和科学上网领域,网络环境往往极其恶劣。高延迟(Latency)、高抖动(Jitter)和频繁的丢包(Packet Loss)是家常便饭。长期以来,开发者们一直在传统的 TCP 协议上修修补补,例如开启 BBR 拥塞控制算法,确实带来了巨大的性能提升。
然而,TCP 协议底层的设计基因注定了它在极端劣质网络下的天花板。为了突破这层桎梏,Hysteria 横空出世。这个协议放弃了对传统拥塞控制的幻想,采用基于 UDP/QUIC 的暴力传输策略,特别是其引入的 Brutal 拥塞控制算法,彻底改变了高丢包环境下的带宽利用率。
传统 TCP 的阿喀琉斯之踵
要理解 Hysteria 的优越性,必须先明白 TCP 协议在长距离劣质网络中的致命缺陷。
- 拥塞退避与丢包敏感:TCP 的核心思想是“善意与公平”。当网络发生丢包时,无论是传统的 Reno、Cubic 还是现代的 BBR,都会假定网络发生了拥堵,从而主动降低发送窗口(发送速率)。但在跨国骨干网中,很多时候丢包并非因为物理线路拥堵,而是因为路由策略或防火墙的随机干扰(非拥塞丢包)。此时 TCP 降低速率是毫无意义的性能自我阉割。
- 队头阻塞 (Head-of-Line Blocking):TCP 是一个基于字节流的有序可靠传输协议。如果某个数据包丢失,即使后续的数据包已经到达接收端,应用程序也无法读取,必须等待丢失的包被重传到达。在动辄 200ms 延迟的跨国线路上,一次重传就会导致整个连接卡顿几百毫秒。
Hysteria 架构:从定制 UDP 到 QUIC 的进化
Hysteria(通常被戏称为“歇斯底里”)的初衷就是绕过 TCP 的这些限制。
- Hysteria v1:使用了自定义的 UDP 传输协议,并在上层实现了一套非常激进的、几乎不退避的自定义拥塞控制逻辑。这让它在极高丢包率的环境下依然能跑满带宽,但由于其协议特征过于独特,也面临被运营商 QoS 限制 UDP 流量的风险。
- Hysteria v2:团队进行了一次彻底的架构重构,将底层全面迁移到了定制版的 QUIC 协议 上。QUIC 本身是为了 HTTP/3 设计的,具有极佳的连接复用、无队头阻塞、快速握手等特性,且其数据包经过了标准的 TLS 1.3 加密。Hysteria v2 伪装成标准的 HTTP/3 流量,大幅降低了被 GFW 识别和运营商封杀的概率。
核心武器:Brutal 拥塞控制算法
Hysteria v2 的最大亮点是其搭载的由作者独立研发的 Brutal 拥塞控制算法。
在传统的 QUIC 或 TCP 中,发送端依靠 RTT(往返延迟)和丢包率来动态猜测网络的可用带宽。而 Brutal 的逻辑极其简单粗暴(正如其名):用户指定目标带宽,我就按这个带宽发包,不管丢不丢包。
Brutal 的运行机制:
- 带外配置 (Out-of-band Configuration):用户在客户端配置文件中显式填写本地的上行和下行带宽(例如:下行 50Mbps,上行 10Mbps)。
- 固定发送率 (Fixed Pacing Rate):当 Brutal 启动时,它不再像 BBR 那样进行慢启动(Slow Start)和探测带宽(Probe BW)。它直接以用户设定的目标速率(甚至附带一定的超额余量)作为 Pacing Rate 向网络中“泵”入数据包。
- 无视非严重丢包 (Ignore Random Loss):如果发生丢包,QUIC 的可靠传输机制会自动发起重传,但 Brutal 拥塞控制器本身不会因为丢包而大幅缩减发送窗口。它认为只要重传包加上新发包的总带宽不超过目标带宽,它就会继续毫不留情地发送。
为什么在恶劣网络下无敌?
假设一条中美物理链路的极限带宽是 100Mbps,但由于防火墙干扰,存在 15% 的随机丢包。
- TCP BBR 遇到 15% 丢包会认为网络极度拥堵,发送窗口可能会收缩到只剩几百 Kbps,导致测速只有不到 1Mbps。
- Hysteria (Brutal) 设定 50Mbps 目标。面对 15% 丢包,它依然以 50Mbps 发包。虽然其中部分是重传包,但应用层最终依然能获得近乎 40Mbps+ 的净吞吐量。它完全依靠“大力出奇迹”榨干了可用链路。
网络公平性与“吸血”争议
技术永远是把双刃剑。Hysteria 及 Brutal 算法在华人科学上网圈引发了巨大的关于“网络道德”与“公平性”的争议。
网络拥塞控制(Congestion Control)建立在所有设备都“守规矩”的基础上。当链路真的拥堵时,大家都退避,才能避免全网崩溃(Congestion Collapse)。 Brutal 算法是一种极其自私的协议。它拒绝退避,意味着在共享的一段拥挤的海缆或机场中转线路上,Hysteria 会疯狂挤占那些守规矩的 TCP 连接(如网页浏览、普通下载)的生存空间,导致别人的网速严重下降,也就是俗称的“吸血”或 TCP 饥饿 (TCP Starvation)。
为了缓和这一矛盾,Hysteria 开发者也作出了一些限制,例如强制要求配置带宽上限,以及在检测到极端丢包(如物理断网级别的 100% 丢包)时强制熔断,避免变成无效发包的 DDoS 工具。
结语
Hysteria 协议及其 Brutal 算法,是特定网络审查与恶劣线路环境逼迫下的极端产物。它通过拥抱 UDP/QUIC 解决了队头阻塞,通过牺牲网络公平性换取了个人极致的网络吞吐。尽管在学术界和协议设计纯洁派眼中它显得不够优雅甚至有些野蛮,但不可否认,在解决“让用户跨国看高清视频不卡顿”这个现实痛点上,它是目前最强有力的工程解决方案。