diff --git a/docs/ru/config/transport.md b/docs/ru/config/transport.md index 99c1c40..829248a 100644 --- a/docs/ru/config/transport.md +++ b/docs/ru/config/transport.md @@ -27,6 +27,7 @@ "tcpFastOpen": false, "tproxy": "off", "domainStrategy": "AsIs", + "happyEyeballs": {}, "dialerProxy": "", "acceptProxyProtocol": false, "tcpKeepAliveInterval": 0, @@ -573,6 +574,7 @@ Reality лишь модифицирует TLS, и для реализации н "tproxy": "off", "domainStrategy": "AsIs", "dialerProxy": "", + "happyEyeballs": {}, "acceptProxyProtocol": false, "tcpKeepAliveInterval": 0, "tcpKeepAliveIdle": 300, @@ -824,3 +826,39 @@ PS: Если трафик домена, например, обычный веб- Значение, которое нужно установить для опции. В примере устанавливается значение bbr. Если `type` указан как int, значение должно быть десятичным числом. + + +> `happyEyeballs`: {} + +Реализация happyEyeballs по RFC-8305 применима только к TCP. Когда целью является доменное имя, она запускает "гонку" между IP-адресами и выбирает первый, с которым удалось установить соединение. Это работает, когда `domainStrategy` установлен на `UseIP`/`ForceIP` (включая их v4/v6/v4v6 версии, но это сокращает список доступных IP-адресов только до v4 или v6, что не рекомендуется). + +::: warning +При использовании этой функции не используйте `domainStrategy` для исходящего соединения `Freedom`, так как это приведет к тому, что `Sockopt` будет видеть только конечный, уже выбранный IP-адрес. +::: + +```json +"happyEyeballs": { + "tryDelayMs": 250, + "prioritizeIPv6": false, + "interleave": 1, + "maxConcurrentTry": 4, +} +``` + +> `tryDelayMs`: number + +Интервал времени между каждым запросом "гонки", в миллисекундах. По умолчанию 0 (что означает, что функция отключена), рекомендуемое значение — 250. + +> `prioritizeIPv6`: bool + +Тип первого IP-адреса при сортировке IP-адресов. По умолчанию `false` (то есть IPv4 будет первым). + +> `interleave`: number + +"First Address Family count" из RFC-8305, значение по умолчанию — 1. Этот параметр определяет чередование при сортировке IP-адресов разных версий. + +Например, очередь IP-адресов для набора номера будет отсортирована как 46464646 (при значении 1) или 44664466 (при значении 2) (где 6 — это IPv6-адрес, а 4 — IPv4-адрес). + +> `maxConcurrentTry`: number + +Максимальное количество одновременных попыток. Используется для предотвращения ситуации, когда ядро создает большое количество соединений, если разрешено много IP-адресов и ни одно из соединений не увенчалось успехом. По умолчанию 4, установка значения 0 отключает happyEyeballs.