Двунаправленные туннели

Proposal 119
Нужны исследования
Author orignal
Created 2016-01-07
Last Updated 2016-01-07

Обзор

Это предложение о реализации двунаправленных туннелей в I2P.

Мотивация

i2pd собирается ввести двунаправленные туннели, которые будут строиться только через другие роутеры i2pd на данный момент. Для сети они будут выглядеть как обычные входящие и исходящие туннели.

Дизайн

Цели

  1. Уменьшить использование сети и ЦПУ за счет сокращения количества сообщений TunnelBuild
  2. Возможность немедленно узнать, если участник исчез
  3. Более точное профилирование и статистика
  4. Использование других даркнетов в качестве промежуточных узлов

Изменения туннелей

TunnelBuild

Туннели строятся так же, как и входящие туннели. Ответное сообщение не требуется. Существует специальный тип участника, называемый "вход", отмеченный флагом, служащий одновременно как IBGW и OBEP. Сообщение имеет такой же формат, как VaribaleTunnelBuild, но ClearText содержит разные поля::

    in_tunnel_id
    out_tunnel_id
    in_next_tunnel_id
    out_next_tunnel_id
    in_next_ident
    out_next_ident
    layer_key, iv_key

Также будет содержаться поле, указывающее к какому даркнету принадлежит следующий узел, и дополнительная информация, если это не I2P.

TunnelTermination

Если узел хочет выйти, он создает сообщения TunnelTermination, шифрует их с помощью layer key и отправляет в направлении “in”. Если участник получает такое сообщение, он шифрует его своим layer key и отправляет следующему узлу. Как только сообщение достигает владельца туннеля, оно начинает расшифровываться от узла к узлу до получения незашифрованного сообщения. Он выясняет, какой узел исчез, и завершает туннель.