Tor 首次在协议内支持了拥塞控制算法:「Congestion Control Arrives in Tor 0.4.7-stable!」。
这个新功能会带来性能的提升:
Tor has released 0.4.7.7, the first stable Tor release with support for congestion control. Congestion control will eliminate the speed limit of current Tor, as well as reduce latency by minimizing queue lengths at relays. It will result in significant performance improvements in Tor, as well as increased utilization of our network capacity.
之所以没有办法直接利用丢包的方式让 TCP network stack 直接判断 congestion control,是因为这样会生成 side channel:
Crucially, we rejected mechanisms to provide congestion control by allowing packet drops, due to the ability to introduce end-to-end side channels in the packet drop pattern.
所以 Tor 得自己实做 congestion control 算法,选择的算法是结合了 Vegas 的 Tor-Vegas,可以看到在实验中,德国与香港的 exit node 效率大幅提升:
另外也因为 0.4.7.7 也出来一个礼拜了,也可以看到 Advertised Bandwidth (算是 Tor network 观察到的 bandwidth) 开始成长:
另外一个重要的点是 UDP 的支持计划,看起来在这次改善后也比较有可行性了:
The astute reader will note that we rejected datagram transports. However, this does not mean that Tor will never carry UDP traffic. On the contrary, congestion control deployment means that queue delay and latency will be much more stable and predictable. This will enable us to carry UDP without packet drops in the network, and only drop UDP at the edges, when the congestion window becomes full. We are hopeful that this new behavior will match what existing UDP protocols expect, allowing their use over Tor.