Тестирование IPv6 Peer

Proposal 126
Closed
Author zzz
Created 2016-05-02
Last Updated 2018-03-19
Target Version 0.9.27
Implemented In 0.9.27

Обзор

Предложение заключается во внедрении тестирования SSU Peer для IPv6. Реализовано в 0.9.27.

Мотивация

Мы не можем надежно определить и отслеживать, находится ли наш IPv6-адрес за файрволом.

Когда несколько лет назад мы добавили поддержку IPv6, мы предполагали, что IPv6 никогда не блокируется файрволом.

Совсем недавно, в версии 0.9.20 (май 2015), мы разделили внутренний статус доступности v4/v6 (билет №1458). Подробную информацию и ссылки можно найти в этом билете.

Если у вас оба — v4 и v6 — находятся за файрволом, вы можете просто принудительно настроить файрвол в разделе конфигурации TCP на /confignet.

У нас нет тестирования для v6. Это запрещено спецификацией SSU. Если мы не можем регулярно тестировать доступность v6, мы не можем разумно переходить из/в состояние доступности v6. Мы только можем догадываться, что мы доступны, если получаем входящее соединение, и догадываться, что мы недоступны, если не получали входящего соединения в течение некоторого времени. Проблема в том, что как только вы объявляете недоступность, вы не публикуете свой v6 IP, и тогда вы больше не получите новых соединений (после истечения срока действия RI в netdb всех).

Дизайн

Реализовать тестирование Peer для IPv6, удалив предыдущие ограничения, согласно которым тестирование Peer было разрешено только для IPv4. В сообщении теста Peer уже есть поле для длины IP.

Спецификация

В разделе “Возможности” обзора SSU добавьте следующее:

До версии 0.9.26 тестирование Peer не поддерживалось для IPv6-адресов, и возможность ‘B’, если присутствует для IPv6-адреса, должна игнорироваться. Начиная с версии 0.9.27, тестирование Peer поддерживается для IPv6-адресов, и наличие или отсутствие возможности ‘B’ в IPv6-адресе указывает на фактическую поддержку (или ее отсутствие).

В разделах тестирования Peer обзора SSU и спецификации SSU внесите следующие изменения:

Заметки по IPv6: До выпуска 0.9.26 поддерживается только тестирование IPv4-адресов. Поэтому всё общение Alice-Bob и Alice-Charlie должно осуществляться через IPv4. Однако связь Bob-Charlie может быть через IPv4 или IPv6. Адрес Alice, когда он указывается в сообщении PeerTest, должен быть 4 байта. Начиная с выпуска 0.9.27, поддерживается тестирование IPv6-адресов, и общение Alice-Bob и Alice-Charlie может осуществляться через IPv6, если Bob и Charlie указывают на поддержку наличием возможности ‘B’ в своем опубликованном IPv6-адресе.

Alice отправляет запрос Bob, используя существующую сессию через транспорт (IPv4 или IPv6), который она хочет протестировать. Когда Bob получает запрос от Alice через IPv4, Bob должен выбрать Charlie, который рекламирует IPv4-адрес. Когда Bob получает запрос от Alice через IPv6, Bob должен выбрать Charlie, который рекламирует IPv6-адрес. Фактическая связь Bob-Charlie может осуществляться через IPv4 или IPv6 (т.е. независимо от типа адреса Alice).

Миграция

Роутеры могут:

  1. Не увеличивать свою версию до 0.9.27 или выше

  2. Удалить возможность ‘B’ из любых опубликованных IPv6 SSU-адресов

  3. Реализовать тестирование IPv6 Peer