Pull to refresh

Сделаем TCP быстрее

Reading time 2 min
Views 24K
Original author: Yuchung Cheng
Компания Google опубликовала ряд рекомендаций, как уменьшить задержку (latency) для TCP-соединений между веб-сервером и браузером. В этих рекомендациях обобщаются исследования, которые компания вела в течение нескольких лет.

1. Увеличьте первоначальный размер congestion window до 10 (IW10). Сейчас в начале TCP-соединения отправляется три пакета данных в три раунда (RTT) для передачи небольшой информации (15 КБ). Наши эксперименты показывают, что IW10 уменьшает сетевую задержку для веб-соединений более чем на 10%.

2. Уменьшите первоначальный таймаут с 3 секунд до 1 секунды. RTT в 3 секунды был приемлем пару десятилетий назад, но в современном интернете нужен гораздо меньший таймаут. Наше обоснование для этого хорошо задокументировано здесь.

3. Используйте TCP Fast Open (TFO). Для 33% HTTP-запросов браузеру сначала нужно потратить один RTT на установление TCP-соединения с удалённым пиром. Большинство HTTP-ответов умещаются в первое окно насыщения (congestion window) из десяти пакетов, удваивая время отклика. TFO устраняет эту избыточность, включив HTTP-запрос в первый пакет TCP SYN. Мы показывали, что TFO уменьшает время загрузки страницы в среднем на 10%, а во многих ситуациях — более чем на 40%. Есть научное исследование, а также мы подготовили драфт стандарта, которые нацелены на разрешение таких проблем, как потеря пакетов и DDoS-атаки при использовании TFO.

4. Используйте механизм PRR (Proportional Rate Reduction) для TCP. Потери пакетов указывают на нарушение или перегрузку в сети. PRR — новый алгоритм для восстановления потерь, который равномерно распределяет повторно передаваемые пакеты и восстанавливает потери, возникшие из-за перегрузки сети. Этот алгоритм быстрее, чем используемый сейчас механизм RFC 3517, поскольку способен изменять частоту передачи пакетов в зависимости от уровня потерь. Алгоритм PRR уже включён в ядро Linux и сейчас оформляется как часть стандарта TCP.

Кроме того, мы разрабатываем алгоритмы для более быстрого восстановления соединения в перегруженных сетях сотовой связи и для гарантированной доставки 2-RTT в процессе загрузки. Вся наша работа над TCP является open-source и публично доступной. Мы распространяем наши инновации через ядро Linux, предложения стандартов IETF и научные публикации. Наша цель — вместе с представителями индустрии и научными организациями усовершенствовать TCP для всего интернета.
Tags:
Hubs:
+87
Comments 32
Comments Comments 32

Articles