Last week, I released TCP Brutal, a TCP port of one of the congestion control algorithms available in Hysteria, my other project which is a QUIC-based anti-censorship proxy. I’m surprised by its surge in popularity and the controversy it has generated, having been featured on sites like Hacker News, Zhihu, even drawing criticism from David Reed, an early TCP/IP developer. While many points are perfectly valid, I believe many critics are overlooking very important context, which I intend to clarify in this post.
Brutal, both in its TCP and QUIC forms, was purposefully built for anti-censorship proxies to deal with China's unique (I hope) internet situation. China has only a handful of government-controlled nodes for connecting its Internet to the rest of the world, called "Internet cross-border security gateway" (数据跨境安全网关) in official government documents. Beyond the bizarre censorship that blocks virtually every foreign website and service—forcing software engineers to use proxies and VPNs for basic development activities, preventing any sites from having local CDN nodes—these gateways suffer from extreme congestion. The limited bandwidth, disproportionate to the amount of users (plus the extensive censorship algorithms), results in what many see as "intentional service degradation." Technically, China remains connected to the global internet, but the government definitely doesn’t have the motivation to improve the fanqiang (”wall-breaking”) experience for the average Zhous. At times you may be able to connect directly to GitHub and even download files from S3, but at speeds of 2-3kb/s it’s practically useless.
The origins of Hysteria go back to 2015, a time before BBR/QUIC and the like. It started as a proxy project based on a reliable UDP protocol that I rewrote from scratch in Java, inspired by IBM Aspera. During testing, I discovered that packet loss rates on international connections stayed the same regardless of the speed (until you hit the ISP's traffic policing limits, of course.) This was something of a breakthrough in Chinese proxy circles, as BBR wasn't a thing at the time, and the default choice was Cubic, which relies on loss as a congestion signal and is a major reason for low connection speeds. As a college student without networking expertise, I was thrilled by my project’s ability to stream YouTube in 1080p using just a random VPS in Japan, which was basically impossible with Cubic. Over the years, it has been completely rewritten in Go, and my custom reliable UDP protocol has been replaced by QUIC. I also adapted BBR in Hysteria, realizing that it was a much more elegant algorithm than whatever Brutal is. At one point, I considered dropping Brutal and only doing BBR for the Hysteria 2 update, but people in the community said that Brutal was still faster than BBR, so I stuck with it.
Today, with a better understanding of networking, I know that Brutal essentially breaks congestion fairness by taking bandwidth from other users. A fun fact is that Brutal originally had no name. It was only after I fully realized its aggressive nature that I named it, hoping that the name would signal its behavior to users. I will be updating the documentation for both Hysteria and TCP Brutal to ensure that users are fully aware of the implications of using it. However, I have no intention of removing Brutal from Hysteria or removing the TCP Brutal repository. I believe that given its purpose and the context of its use, Brutal has done more good than harm. It has allowed more people to use the global Internet at functional speeds. Brutal is not responsible for "destroying the internet." If anything, the global connectivity aspect of the internet in China had been destroyed long before Brutal existed. It merely shifts the rubble to make a path forward.
PS: For users in other countries who are concerned about whether this will affect their Internet experience - it's highly unlikely. Brutal is designed for a specific use case, and it's basically impossible to use outside of it, requiring application support and manual bandwidth settings. This is simply not going to happen outside of a small subset of anti-censorship proxy circles.
https://datatracker.ietf.org/doc/html/draft-mathis-iccrg-relentless-tcp-00 describes, well, a similar algorithm, and its constraints and side-effects. I was also on the hackernews thread. If your algo was also delay sensitive, it would help. If the GFW had fq_codel derived algos in it, it might help also. BBR is less likely to harm others than brutal is.