В докладе мы поговорим про эволюцию и настройки сетевого стека TCP/IP в linux и Android, iOS в контексте мобильных сетей, разберем проблемы TCP в плохих сетях, я поделюсь опытом ОК в написании своих сетевых протоколов в user space поверх UDP. Также рассмотрим развитие QUIC и проблемы UDP и User Space протоклов.
TCP был впервые имплементирован в 70-х годах и прекрасно справлялся со своей задачей в эру проводного интернета. Но беспроводные сети отличаются переменной пропускной способностью, высоким packet loss, сменой IP и MTU на лету и прочими вещами, которые приводят к деградации TCP-соединения. В социальной сети «Одноклассники» более 30 млн человек ежедневно заходят используя мобильные сети. Средний packet loss в этих сетях порядка 1-3%, но бывают сети и с потерями до 10-15%. Кроме этого в мобильных сетях высокие значения jitter-а и RTT. Это всё приводит к тому, что канал утилизируется не полностью, а передача данных работает медленнее, чем могла бы.
Мы поговорим про проблемы TCP, его tuning. Рассмотрим эволюцию TCP стека для ускорения передачи данных от cubic congestion control до BBR cc, а так же tail loss probe, tcp fast open, zeroRTT handshake в TLS 1.3, как это настроить и как это работает ;) Но многие улучшения TCP не достаточно быстро оказывается в продакшене как на серверах, так и на конечных устройствах пользователей. Поэтому мы рассмотрим дальнейшее развитие сетевого стека в сторону userSpace протоколов типа QUIC. И расскажу про экспертизу OK.ru в реализации собственных протоколов передачи данных поверх UDP.