Обзор
Это предложение описывает два улучшения для повышения производительности сети:
Делегирование выбора IBGW к OBEP, предоставляя ему список альтернатив вместо одного варианта.
Включение маршрутизации мультиадресных пакетов на OBEP.
Мотивация
В случае прямого соединения идея заключается в уменьшении перегрузки соединения, предоставляя OBEP гибкость в подключении к IBGW. Возможность указывать несколько туннелей также позволяет реализовать мультиадресную передачу на OBEP (путем доставки сообщения во все указанные туннели).
Альтернативой части предложения о делегировании было бы отправка через хэш LeaseSet, подобно существующей возможности указать цельный хэш RouterIdentity. Это привело бы к меньшему сообщению и потенциально новому LeaseSet. Однако:
Это заставит OBEP выполнять поиск.
LeaseSet может не публиковаться в floodfill, поэтому поиск потерпит неудачу.
LeaseSet может быть зашифрован, поэтому OBEP не сможет получить аренды.
Указание LeaseSet раскрывает OBEP местоположение Destination сообщения, которое они в ином случае могли бы обнаружить только, просматривая все LeaseSet в сети и ища совпадение аренды.
Дизайн
Инициатор (OBGW) будет помещать какие-то (все?) целевые Leases в инструкции доставки TUNNEL-DELIVERY вместо выбора только одного.
OBEP выберет один из них для доставки. OBEP выберет, если возможно, тот, с которым он уже соединен или о котором уже знает. Это сделает путь OBEP-IBGW быстрее и надежнее, а также уменьшит общее количество сетевых соединений.
У нас есть один неиспользуемый тип доставки (0x03) и два оставшихся бита (0 и 1) в флагах для TUNNEL-DELIVERY, которые мы можем использовать для реализации этих функций.
Последствия для безопасности
Это предложение не изменяет объем утечек информации о целевом местоположении OBGW или их представлении NetDB:
Злоумышленник, контролирующий OBEP и извлекающий LeaseSet из NetDB, уже может определить, отправляется ли сообщение в конкретное местоположение, путем поиска пары TunnelId / RouterIdentity. В худшем случае, наличие нескольких арен в TMDI может ускорить нахождение совпадения в базе данных злоумышленника.
Злоумышленник, управляющий злонамеренным местоположением, уже может получить информацию о взгляде жертвы на NetDB, публикуя LeaseSets, содержащие разные входящие туннели в разных floodfill, и наблюдая, через какие туннели подключается OBGW. С их точки зрения, выбор OBEP, какой туннель использовать, функционально идентичен выбору OBGW.
Флаг мультиадресности раскрывает факт того, что OBGW выполняет мультиадресную передачу к OBEP. Это создает компромисс между производительностью и конфиденциальностью, который следует учитывать при реализации более высокоуровневых протоколов. Будучи опциональным флагом, пользователи могут принять соответствующее решение для своего приложения. Возможно, это будет полезно как поведение по умолчанию для совместимых приложений, так как широкое использование различными приложениями снизит утечку информации о том, от какого именно приложения отправлено сообщение.
Спецификация
Инструкции по доставке первого фрагмента TUNNEL-DELIVERY будут изменены следующим образом:
+----+----+----+----+----+----+----+----+
|флаг| Идентификатор туннеля (опционально) | |
+----+----+----+----+----+ +
| |
+ +
| К хэшу (опционально) |
+ +
| |
+ +----+----+----+
| |зад | Сообщение
+----+----+----+----+----+----+----+----+
Идентификатор (опционально) |расширенные опции (опционально)|счетчик | (о)
+----+----+----+----+----+----+----+----+
Идентификатор туннеля N | |
+----+----+----+ +
| |
+ +
| К хэшу N (опционально) |
+ +
| |
+ +----+----+----+----+----+
| | Идентификатор туннеля N+1 (о) | |
+----+----+----+----+----+----+----+ +
| |
+ +
| К хэшу N+1 (опционально) |
+ +
| |
+ +----+
| | размер
+----+----+----+----+----+----+----+----+
|
+----+
флаг ::
1 байт
Порядок бит: 76543210
биты 6-5: тип доставки
0x03 = ТУННЕЛИ
бит 0: мультиадресный? Если 0, доставить в один из туннелей
Если 1, доставить во все туннели
Установить в 0 для совместимости с будущими
использованиями, если тип доставки не
ТУННЕЛИ
Счетчик ::
1 байт
Опционально, присутствует, если тип доставки - ТУННЕЛИ
2-255 - Количество идущих после пар идентификатор/хэш
Идентификатор туннеля :: `TunnelId`
К хэшу ::
36 байт каждый
Опционально, присутствует, если тип доставки - ТУННЕЛИ
пары ид/хэш
Общая длина: Типичная длина:
75 байт для доставки TUNNELS счетчик 2 (нефрагментированное туннельное
сообщение);
79 байт для доставки TUNNELS счетчик 2 (первый фрагмент)
Остальные инструкции по доставке не изменены
Совместимость
Единственные узлы, которые должны понимать новую спецификацию, - это OBGW и OBEP. Поэтому мы можем сделать это изменение совместимым с существующей сетью, сделав его использование условным от целевой версии I2P VERSIONS:
OBGW должны выбирать совместимые OBEP при построении исходящих туннелей на основе версии I2P, указанной в их RouterInfo.
Узлы, которые рекламируют целевую версию, должны поддерживать разбор новых флагов и не должны отвергать инструкции как недействительные.