Consider setting TCP_NOTSENT_LOWAT to 1 byte on our TCP connections
This TCP option would provide us and important performance benefit at the relay side.
In an effort to work on a new tor design to reduce kernel queuing delays, see it as an improvement to KIST and tor architecture, Rob and I submitted this paper to NetDev 0x14 conference in hope of sitting down with the Linux kernel developers and network experts about this idea.
https://www.robgjansen.com/publications/epollcwnd-netdev2020.pdf
Ultimately we want a new poll TCP option in the kernel which our experimentation shows how it improves performance drastically.
But turns out that starting with setting TCP_NOTSENT_LOWAT
to 1 byte would significantly improve performance close to what we wanted. See Figure 1.
(page 3) in the paper for the performance improvements.
Setting TCP_NOTSENT_LOWAT
is minimal change to tor and thus we should do it.