[О блоге] [наверх] [пред] [2023-11-11 12:30:43+03:00] [88ce198f30f60b4201e7ccc142d9942fa8104412]

TCP Fast Open

https://lwn.net/Articles/508865/
https://blog.apnic.net/2021/07/05/tcp-fast-open-not-so-fast/
https://en.wikipedia.org/wiki/TCP_Fast_Open
https://datatracker.ietf.org/doc/html/rfc7413
https://github.com/bradleyfalzon/tcp-fast-open/
Пока читал про всякие AQM, ECN (6588786a31b2cbec545beeecf1232338609ff9ce),
то обратил внимание на TCP Fast Open. Название то слышал, но думал что это
какая-нибудь опция внутри TCP и поэтому не вчитывался. Оказалось что штука
интересная: сервер, при обычном TCP рукопожатии, может отправить клиенту
некую криптографически аутентифицированную cookie, которую клиент позже,
при установке нового соединения, может предъявить вместе с данными, а
сервер ответить тоже данными не дожидаясь третьего пакета рукопожатия от
клиента. Выходит настоящий 0RTT.

FreeBSD, судя по man-ам и ядру это поддерживает. Надо будет поиграться.
Хотя и требуются небольшие изменения в программы. Go вообще ничего про
него не знает, но нашёл какой-то репозиторий, где, явно выставляя опции
для сокета, включают всё это. Если совмещать с TLS 1.3 session
resumption, а то и его early data, то по RTT это становится как QUIC.

    # sysctl net.inet.tcp.fastopen.ccache_list
    net.inet.tcp.fastopen.ccache_list:
    Local IP address     Remote IP address     Port   MSS Disabled Cookie
    127.0.0.1            127.0.0.1            22222 16344       No 19f2ad06c2e26754

Тут не IPv6, потому что тестовая утилитка не понимала его, на коленках
кем-то сделана.

    [оставить комментарий]