Компания Google представила основанный на UDP экспериментальный протокол QUIC для ускорения Web
Компания Google представила новый сетевой протокол QUIC (Quick UDP Internet Connections), поддержка которого была в феврале без лишних пояснений интегрирована в репозитории Chromium. QUIC представляет собой надстройку над протоколом UDP, поддерживающую мультиплексирование нескольких соединений и обеспечивающую методы шифрования эквивалентные TLS/SSL.
Протокол создан для решения задач уменьшения времени установки соединения и минимизации задержек в процессе передачи, которые не удаётся решить в протоколе SPDY, вследствие использования TCP с его достаточно медленными методами установки и согласования соединений. По мнению Google, с развитием мобильных сетей важным становиться не только высокая скорость передачи данных, но и возможность мгновенно установить соединение и обеспечить минимальные задержки между отправкой запроса и получением ответа (RTT, Round Trip Time). Параллельно Google продвигает решения для устранения проблем TCP, но процесс внесения изменений в реализацию первичного протокола растягивается на годы, а использование надстройки над UDP позволяет сразу получить результат, не требуя модификации сетевого стека операционной системы.
Работа над протоколом ещё не завершена, Google активно экспериментирует с используемыми в QUIC методами и теперь приглашает подключиться к подобным экспериментам всех желающих. Для тестирования текущего варианта QUIC подготовлена реализация клиента и сервера. Кроме того, Google начинает тестирование QUIC в условии реальных проектов, интегрировав поддержку данного протокола в тестовые сборки Chrome Сanary (для включения/выключения поддержки QUIC следует использовать настройку "Experimental QUIC protocol" в about:flags) и на некоторые из своих web-сервисов.
Среди особенностей протокола отмечается:
Высокая безопасность, аналогичная TLS (по сути QUIC предоставляет возможность использования TLS поверх UDP);
Почти мгновенная установка соединения (часто 0-RTT, т.е. данные можно передавать сразу после отправки пакета установки соединения), похожая на комбинацию TLS Snapstart и TCP Fast Open;
Контроль за целостностью потока, предотвращающий потерю пакетов;
Средства коррекции ошибок, минимизирующие задержки из-за повторной передачи потерянных пакетов. Использование специальных кодов коррекции ошибок на уровне пакета для сокращения ситуаций, требующих повторной передачи данных потерянного пакета. Криптографические границы блоков выравнены с границами пакетов QUIC, что уменьшает влияние потерь пакетов на декодирование содержимого следующих пакетов;
Отсутствие проблем с блокировкой очереди TCP;
Потеря пакета влияет на доставку только связанного с ним потока и не останавливает доставку данных в параллельно передаваемых через текущее соединение потоках;
Поддержка идентификатора соединения, позволяющего сократить время на установку повторного соединения для мобильных клиентов;
Возможность подключения расширенных механизмов контроля перегрузки соединения;
Использование техники прогнозирования пропускной способности в каждом направлении для обеспечения оптимальной интенсивности отправки пакетов, предотвращая скатывание в состояние перегрузки, при которой наблюдается потеря пакетов.