Всем привет, время для еженедельной тирады
Указатель:
- 0.3.3 & current updates
- NativeBigInteger
- ???
1) 0.3.3
Мы выпустили релиз 0.3.3 в прошлую пятницу, и после дня-двух довольно нестабильной работы похоже, что всё более-менее нормально. Не так хорошо, как 0.3.2.3, но обычно мне удавалось находиться на irc.duck.i2p сеансами по 2–7 часов. Однако, видя, что у многих проблемы, я запустил логгер и подробно наблюдал, что происходит. Короткий ответ: мы просто использовали больше пропускной способности, чем нужно, что вызывало перегрузку и сбои в работе tunnel (из-за истечения времени ожидания тестовых сообщений и т. п.).
Последние несколько дней я снова провёл в симуляторе, прогоняя через сеть серию сигналов heartbeat, чтобы понять, что можно улучшить, и на основе этого у нас на подходе целый ряд обновлений:
netDb update to operate more efficiently
The existing netDb lookup messages are up to 10+KB, and while successful replies are frequent, the unsuccessful replies could be up to 30+KB (as both contained full RouterInfo structures). The new netDb replaces those full RouterInfo structures with the router’s hash - turning 10KB and 30KB messages into ~100 byte messages.
throw out the SourceRouteBlock and SourceRouteReplyMessage
Эти структуры были пережитком старой идеи, но не добавляют никакой ценности анонимности или безопасности системы. Отказавшись от них в пользу более простого набора элементов данных ответа, мы резко сократили размеры сообщений, связанных с управлением tunnel, и уменьшили время garlic encryption вдвое.
Обновление netDb для более эффективной работы
Во время создания tunnel код был немного «болтливым», поэтому ненужные сообщения были убраны.
удалить SourceRouteBlock и SourceRouteReplyMessage
Некоторая часть криптографического кода для garlic routing (чесночной маршрутизации) использовала фиксированный паддинг, основанный на некоторых техниках garlic routing, которые мы не используем (когда я писал это в сентябре и октябре, я думал, что мы будем делать многохоповый garlic routing вместо tunnels).
Я также работаю над тем, чтобы оценить, смогу ли я реализовать полноценное обновление маршрутизации tunnel для добавления идентификаторов tunnel на каждом переходе.
Как видно из дорожной карты, это охватывает значительную часть релиза 0.4.1, но поскольку изменение netDb привело к потере обратной совместимости, имеет смысл заодно выполнить целый ряд других изменений, нарушающих обратную совместимость, сразу.
Я всё ещё прогоняю тесты в симуляторе и должен понять, смогу ли закончить работу над идентификатором tunnel для каждого хопа, но надеюсь выпустить новый патч‑релиз через день‑два. Он не будет обратно совместимым, так что обновление пройдёт не гладко, но оно должно того стоить.
2) NativeBigInteger
Iakin занимается обновлениями кода NativeBigInteger для команды Freenet, оптимизируя некоторые вещи, которыми мы не пользуемся, а также собирая код определения CPU, который мы сможем использовать для автоматического выбора подходящей нативной библиотеки. Это означает, что мы сможем распространять jbigi в виде одной библиотеки при установке по умолчанию, и она будет автоматически выбирать нужный вариант, не спрашивая у пользователя ничего. Он также согласился опубликовать свои модификации и новый код определения CPU, чтобы мы могли включить это в наш исходный код (ура, Iakin!). Я не уверен, когда это будет развернуто, но сообщу, когда это произойдет, поскольку тем, у кого уже есть библиотеки jbigi, вероятно, понадобится новая.
3) ???
Ну, на прошлой неделе мы с головой ушли в работу над кодом, так что обновлений не так много. Есть ли у кого‑нибудь ещё что обсудить? Если да, загляните на встречу сегодня вечером, в 21:00 GMT в #i2p.
=jr