Unicast против Anycast для вхо... Заметка
DEV Community на русском

Unicast против Anycast для входящих веб-хуков: сокращение задержки рукопожатия для глобальных отправителей

Издатели веб-хуков отправляют уведомления о событиях, для получения которых требуются разрешение DNS, TCP-соединение и TLS-рукопожатие перед получением данных. Время полного цикла этих рукопожатий является основной сетевой стоимостью для удаленных получателей. Издатели устанавливают строгие временные ограничения для ответов, а некоторые предлагают механизмы повторных попыток для неудачных доставок. В этой статье рассматривается стоимость каждого этапа рукопожатия и исследуется, как BGP Anycast может сократить пути. Также обсуждаются преимущества и недостатки TCP Fast Open (TFO) и TLS 1.3 0-RTT.Одноадресная доставка отправляет весь трафик на один конечный пункт назначения, независимо от расстояния отправителя. BGP Anycast, напротив, использует несколько точек присутствия, которые анонсируют один и тот же IP-префикс, позволяя отправителям подключаться к топологически более близкому узлу. "Ближайший" в Anycast относится к сетевому пути, а не обязательно к географическому расстоянию. Стабильность Anycast может зависеть от политик маршрутизации, но для кратковременных запросов веб-хуков любые изменения маршрутизации, как правило, кратковременны.Отзыв маршрутов от неисправных точек присутствия Anycast имеет решающее значение для предотвращения черных дыр трафика. Это может быть автоматизировано путем мониторинга состояния службы и использования таких инструментов, как ExaBGP, для управления анонсами маршрутов. TCP Fast Open позволяет клиентам отправлять данные в первоначальном пакете SYN при повторных соединениях, экономя один полный цикл. Однако его эффективность зависит от поддержки отправителя, возможного вмешательства промежуточных устройств и способности приложения обрабатывать дублирующиеся данные.TLS 1.3 завершает рукопожатие за один полный цикл, а 0-RTT позволяет отправлять данные приложения с первоначальным ClientHello при последующих соединениях. Эта возможность 0-RTT рискованна для POST-запросов веб-хуков из-за опасений по поводу повторного воспроизведения, если обработчик не является строго идемпотентным. При принятии 0-RTT дедупликация по идентификатору события и использование общего хранилища необходимы для защиты от повторного воспроизведения.Сочетание Anycast с TFO и TLS 1.3 0-RTT обеспечивает значительное снижение задержки. Anycast сокращает фундаментальное время полного цикла, в то время как TFO и 0-RTT минимизируют количество полных циклов, необходимых для установки соединения и передачи данных. Даже в наиболее оптимизированных сценариях некоторая накладная стоимость полного цикла остается. Повторное использование соединений через HTTP Keep-Alive также существенно снижает затраты на рукопожатие для последующих доставок на тот же узел.