Обзор
Добавить индикаторы перегрузки в опубликованную информацию о маршрутизаторе (RI).
Мотивация
Ограничения пропускной способности “caps” (возможности) указывают на лимиты общего потока и доступность, но не на состояние перегрузки. Индикатор перегрузки поможет маршрутизаторам избегать попыток строить каналы через загруженный маршрутизатор, что способствует дополнительным перегрузкам и снижению успешности построения туннелей.
Дизайн
Определить новые caps для указания различных уровней перегрузки или проблем с пропускной способностью. Эти показатели будут находиться в верхнем уровне RI caps, а не в address caps.
Определение перегрузки
Перегрузка, в общем случае, означает, что партнер вряд ли получит и примет запрос на построение туннеля. Как определить или классифицировать уровни перегрузки — зависит от реализации.
Реализации могут учитывать одно или несколько из следующего:
- На пределе или близко к пределу пропускной способности
- На пределе или близко к максимальному числу участвующих туннелей
- На пределе или близко к максимальному числу соединений на одном или нескольких транспортах
- Превышен порог глубины очереди, задержка или использование ЦП; переполнение внутренней очереди
- Базовые возможности платформы/ОС для ЦП и памяти
- Воспринимаемая перегрузка сети
- Состояние сети, такое как наличие фаерволла, симметричного NAT, скрытие или проксирование
- Настроен на отказ от приема туннелей
Состояние перегрузки должно основываться на среднем значении условий за несколько минут, а не на мгновенном измерении.
Спецификация
Обновить NETDB следующим образом:
D: Средняя перегрузка или маршрутизатор с низкой производительностью (например, Android, Raspberry Pi)
Другие маршрутизаторы должны понизить или ограничить
видимую туннельную емкость этого маршрутизатора в профиле.
E: Высокая перегрузка, этот маршрутизатор находится на или около предела,
и отвергает или сбрасывает большинство запросов на туннель.
Если этот RI был опубликован в последние 15 минут, другие маршрутизаторы
должны резко понизить или ограничить емкость этого маршрутизатора.
Если этот RI старше 15 минут, относитесь к нему как к 'D'.
G: Этот маршрутизатор временно или постоянно отклоняет все туннели.
Не пытайтесь строить туннель через этот маршрутизатор,
пока не будет получен новый RI без 'G'.
Для согласованности реализации должны добавлять любой cap перегрузки в конце (после R или U).
Анализ безопасности
Любую опубликованную информацию о партнерах нельзя считать достоверной. Caps, как и все остальное в информации о маршрутизаторе, могут быть подделаны. Мы никогда не используем что-либо в информации о маршрутизаторе для завышения воспринимаемой емкости маршрутизатора.
Публикация индикаторов перегрузки, уведомляющих партнеров об избегании этого маршрутизатора, по сути гораздо более безопасна, чем индикаторы с расширением возможностей или емкости, привлекающие больше туннелей.
Текущие индикаторы пропускной способности (L-P, X) доверяются только для избегания очень малопропускных маршрутизаторов. “U” (недоступный) cap имеет аналогичный эффект.
Любой опубликованный индикатор перегрузки должен иметь тот же эффект, что и отклонение или сброс запроса на построение туннеля, с аналогичными свойствами безопасности.
Заметки
Партнерам не следует полностью избегать маршрутизаторов ‘D’, только понижать их рейтинг.
Необходимо быть осторожным, чтобы не полностью избегать маршрутизаторы ‘E’, поэтому, когда вся сеть находится в перегрузке и публикует ‘E’, система не должна полностью ломаться.
Маршрутизаторы могут использовать различные стратегии для типов туннелей, которые строятся через маршрутизаторы ‘D’ и ‘E’, например, исследовательские против клиентских, или туннели с высокой против низкой пропускной способностью.
Маршрутизаторы, вероятно, не должны публиковать cap перегрузки при запуске или выключении по умолчанию, даже если состояние их сети неизвестно, чтобы предотвратить обнаружение перезапуска партнерами.
Совместимость
Проблем нет, все реализации игнорируют неизвестные caps.
Миграция
Реализации могут добавлять поддержку в любое время, без необходимости координации.
Предварительный план: Публиковать caps в 0.9.58 (Апрель 2023); действовать на основании опубликованных caps в 0.9.59 (Июль 2023).