Всем привет, пора для еженедельного обновления

Индекс:

  1. New transport
  2. 0.4.1 status
  3. ???

1) New transport

Выпуск 0.4.1 занял больше времени, чем ожидалось, но новый транспортный протокол и его реализация уже готовы со всем запланированным - определение IP-адреса, малозатратное установление соединения и более простой интерфейс для облегчения отладки, когда соединения дают сбой. Это достигнуто полным отказом от старого транспортного протокола и внедрением нового, хотя модные термины остались теми же (2048bit DH + STS, AES256/CBC/PKCS#5). Если вы хотите ознакомиться с протоколом, он есть в документации. Новая реализация также гораздо чище, так как старая версия представляла собой набор обновлений, накопленных за последний год.

В любом случае, в новом коде определения IP есть несколько моментов, которые стоит упомянуть. Самое важное — он полностью опционален: если вы укажете IP-адрес на странице конфигурации (или в router.config), будет всегда использоваться именно этот адрес, несмотря ни на что. Однако если оставить это поле пустым, ваш router позволит первому пиру, с которым он свяжется, сообщить ему его IP-адрес, после чего начнёт принимать соединения на этом адресе (добавив его в собственный RouterInfo (описание маршрутизатора) и поместив в сетевую базу данных (netDb)). Впрочем, это не совсем так — если вы явно не задали IP-адрес, он будет доверять любому сообщать, по какому IP-адресу до него можно добраться, когда у router нет соединений. Так что если ваше интернет‑соединение перезапустится, возможно выдав вам новый адрес DHCP, ваш router доверится первому пиру, до которого сможет связаться.

Да, это означает, что dyndns больше не нужен. Разумеется, вы всё ещё можете продолжать им пользоваться, но это не обязательно.

Однако это решает не всё, что вам нужно — если у вас есть NAT или межсетевой экран, знание вашего внешнего IP-адреса — это лишь половина дела: вам всё равно нужно настроить проброс входящего порта. Но это уже начало.

(кстати, для людей, запускающих собственные частные сети I2P или симуляторы, появилась новая пара флагов, которые нужно установить: i2np.tcp.allowLocal и i2np.tcp.tagFile)

2) 0.4.1 статус

Помимо пунктов из дорожной карты для 0.4.1, я хочу включить ещё несколько вещей — и исправления ошибок, и обновления мониторинга сети. Сейчас я отслеживаю проблемы с чрезмерными перераспределениями памяти и хочу проверить несколько гипотез относительно время от времени возникающих проблем с надёжностью в сети, но мы скоро будем готовы выпустить релиз, возможно, в четверг. К сожалению, он не будет обратно совместим, так что переход будет немного непростым, но благодаря новому процессу обновления и более устойчивой реализации транспорта всё не должно быть так плохо, как в предыдущих обновлениях, нарушавших обратную совместимость.

3) ???

Да, последние две недели у нас выходили короткие обновления, но это потому, что мы в «окопах» и сосредоточены на реализации, а не на всяких высокоуровневых архитектурных решениях. Я мог бы рассказать вам о данных профилирования или о кэше тегов соединений на 10 000 для нового транспорта, но это не так интересно. Однако, возможно, у вас есть дополнительные темы для обсуждения, так что загляните на встречу сегодня вечером и дайте жару.

=jr