~AreEnn
~R4SAS
~acetone
~orignal
~villain
&N00B
+relaybot
DUHOVKIN
Leopold
Most2
Nausicaa
Vort
Xeha
anon2
b3t4f4c3
karamba_i2p
nemiga
not_bob_afk
poriori_
profetikla
soos
un
weko
whothefuckami_
papakarlo
я правильно понимаю что для связи с i2cp я использую сокеты?
papakarlo
грубо говоря если питон
papakarlo
import socket
papakarlo
sock = socket.socket()
papakarlo
sock.connect(('localhost', port))
papakarlo
и пошел
papakarlo
так?
orignal
а зачем тебе понадобился i2cp?
papakarlo
хочу написать кое что интересное
orignal
так тебе джавовские либы тогда понадобтся
papakarlo
почему?
orignal
потому что с голым i2cp ты мало что сделаешь потмоу что в нем грубо говоря только пейлоад как набор байтов передается
orignal
фактически датаграмма
papakarlo
то есть кастрированный доступ?
orignal
я не вижу примнения i2cp кроме как для работы с джавовскими приложениями
orignal
доступ самы полный но там много чего нет
orignal
я не знаю откуда вообще у тебя идея использовать именно i2cp
orignal
в i2pd он существует только для джавовских приложений
orignal
а они используют своим либы
papakarlo
у меня просто в голове сложилась картина что это нормальный способ связи с роутером
papakarlo
протокол
papakarlo
а как тогда
orignal
ну так заивисит от задачи
orignal
если не нужно постоянно генерить локальные адреса то тоннели
orignal
если нужно то сэм
papakarlo
мне нужен доступ к сети i2p для установки соединений с другими роутерами, отправка прием сообщений, настройка туннелей (длина, количество)
papakarlo
по факту то что нужно любому приложению для работы с i2p
orignal
ну тогда сэм
papakarlo
я и сам не прочь написать либу
papakarlo
сейчас посмотрю про sam
orignal
ну пиши
orignal
i2cp это просто прокол который слушает порт и парсит сообщения
orignal
целый талмуд есть описывающий их формат
papakarlo
на geti2p net ,
papakarlo
пишут Note that i2pd does not currently support most 3.2 and 3.3 features.
papakarlo
а что за фичи
orignal
тебе хватит 3.1
orignal
который используют все сущестующие приложения
papakarlo
спасибо
Vort
провёл я тест U узла в виртуалке
Vort
Uptime: 6 hours
Vort
Tunnel creation success rate: 52%
Vort
Transit: 5.41 MiB (0.47 KiB/s)
Vort
Routers: 1658 Floodfills: 414 LeaseSets: 0
Vort
Client Tunnels: 22 Transit Tunnels: 15
papakarlo
U это сколько кб
Vort
U это через NAT
Vort
а скорость - X, безлимит
Vort
транзита чуть больше, чем с предыдущими тестами (где-то год назад проверял)
Vort
то есть, результат как минимум не хуже, а , может, лучше
papakarlo
причина в том что больше трафика стало?
papakarlo
в сети
Vort
или это или багов меньше в среднем
Vort
плюс получил один необычный результат:
Vort
довольно много сообщений в логе вида error - SSU2: Send exception: Требуемый адрес для своего контекста неверен to 0.0.0.0:12308
Vort
я когда-то пытался поймать этот баг и не получилось, возможно через NAT он воспроизводится лучше
Vort
на основном узле за сутки ни одного такого сообщения, а в виртуалке - штук 30 за 6 часов
papakarlo
вопрос за датаграмы
papakarlo
если мне нужно быть уверенным что отправитель данных именно тот который нужен
papakarlo
(preventing mitm)
papakarlo
нужны ли мне repliable datagrams
papakarlo_
нужны ли мне repliable datagrams
papakarlo_
или сохранность данных гарантируют протоколы ниже?
orignal
Vort я у деда багу нашел
orignal
похоже он SessionResponse всегда шлет 6 штук
orignal
papakarlo_ да repliable и проверять подпись
Vort
а как надо? я этой части кода не помню
orignal
Vort а надо если на него пришел Ack больше не слать
orignal
papakarlo_ можно проверить на уровне сесиии но это уже внутренности i2pd
papakarlo_
orignal_ а i2pd поддерживает их создание?
papakarlo_
а то написано как раз что в v3.2 они появились
Vort
не могу в коде найти SessionResponse. это вообще про какой протокол? создание SSU2 сессии? SessionCreated?
orignal
ты про сэм?
orignal
какие то там поддерживаются потмоу что polistern использовала
orignal
посмотри код pboted
orignal
Vort я говорил RelayResponse
orignal
опечатка ))
orignal
papakarlo_ да датаграмы полностью поддерживаются
orignal
и DATAGRAM и RAW
Vort
не вижу пока что там вообще циклов. может где-то внутри методов отправки разве что: github.com/i2p/i2p.i2p/blob/915494557162c07104211ee204dfe8122d3eb3b9/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java#L817-L822
papakarlo_
вот эти что ниже
papakarlo_
repliable
papakarlo_
да?
orignal
я тебе говорю что на самом деле
orignal
стараниями деда все версии сэма счас перпутаны
papakarlo_
дед кто такой
orignal
ты опять за свой I2CP принялся
orignal
я тебе про сэм толкую
orignal
дед это zzz
papakarlo_
никакого i2cp, только sam
orignal
Vort а как они HolePunch срут?
orignal
<papakarlo_> geti2p.net/spec/datagrams
orignal
там про I2CO
orignal
ты сам то читал что там написано?
papakarlo_
так там непонятно то i2cp то sam
papakarlo_
ну вот
papakarlo_
чуть ниже пролистать
papakarlo_
Version 3.2 Changes
papakarlo_
и там пошло про датаграмы
papakarlo_
больше про repliable datagram я не видел где написано
orignal
ну вот я тебе объясняю что i2pd поддерживает датаграммы и в 3.1
papakarlo_
то есть я могу DATAGRAM SEND сделать
orignal
SESSION CREATE
orignal
STYLE={STREAM,DATAGRAM,RAW}
papakarlo
дудосят меня
papakarlo
orignal спасибо понял
orignal
не ты нихуя не понял
orignal
ты создаешь сесиию
orignal
вешаеь ее на UDP порт
orignal
и датарграммы с этого порта пойдут
papakarlo
а почему не tcp
papakarlo
или это локально все
papakarlo
локал udp
orignal
потому что датаграммы это всегда UDP
orignal
SEND DATAGRAM это из другой опнры
orignal
это такой костыль для iMule был
papakarlo
geti2p.net/en/docs/api/samv3 это единственная документация по сэму?
orignal
это можно без ссессии слать
orignal
думаю что да
Vort
в жава коде какие-то подозрительные огрызки висят
Vort
_recentHolePunches
orignal
причем этот происходит только с этим сообщением
Vort
int MAX_PUNCHES = 20
Vort
но прикол в том, что эти переменные нигде вообще не используются
Vort
как будто кто-то вычищал этот код, но не дочистил
Vort
надо по истории смотреть, как раньше использовалась переменная MAX_PUNCHES
papakarlo
orignal хорошо
papakarlo
я сделал сессию
papakarlo
повесил на порт
papakarlo
geti2p.net/en/docs/api/samv3 Sending Repliable or Raw Datagrams
papakarlo
там чуть ниже как отправлять датаграму
papakarlo
то есть я отправляю строку
orignal
поищи на гитхабе код pboted и посмотри как там сделано
papakarlo
3.1 $nickname $destination ...
papakarlo
ок сейчас посмотрю
orignal
i2pd всегда возвращает 3.1 по своим причинам
orignal
блять с HolePunch вообще какой то пиздец творится
Vort
припоминаю что даже с виртуалкой была проблема связаться )
Vort
и вроде как раз из-за HolePunch
orignal
там еше какая то дичь с токенами
orignal
счас разбираюьс
Vort
так не просто так же U узлы глючат. ты наверно только маленький кусочек ковырнул )
orignal
так я грубо говоря на прошлой недел ковырнул так гной фонтаном забил
orignal
сам охуеваю
onon
А до релиза успеешь?
orignal
да
orignal
токены починить успею
Vort
чуть покопал историю, в общем, константа MAX_PUNCHES относилась к SSU1. так что она тут не при чём
orignal
uint64_t token = 0;
orignal
ой все
orignal
я почему то токен не генерю
orignal
а нет все нормально
papakarlo
есть рекомендации какие то по тому какие порты для сессий использовать?
Vort
orignal: сможешь проверить, не сбрасываются ли интродьюсеры у U узлов из-за пир теста (Unknown)? не хотелось чтобы в релиз такой глюк попал. у меня подозрение возникло когда я в виртуалке тест делал. было 10-20 транзитов, а потом довольно быстро
Vort
количество сползло до 1-2
Vort
но логирование стояло на error уровне, поэтому точную причину такого эффекта не знаю
orignal
погляжу
orignal
не должно вроде
orignal
я разрешаю сбрасвать в Unknown только если раньше не был Firewalled но проверю
Vort
кстати, похоже, страницы веб консоли по-прежнему глючат. но я точно сказать пока что не могу. видел несколько раз пустые страницы пока тестировал в виртуалке
orignal
if (GetRouterStatus () != eRouterStatusFirewalled && addr->IsPeerTesting ())
orignal
{
orignal
SetRouterStatus (eRouterStatusFirewalled);
orignal
session->SetStatusChanged ();
orignal
я только здесь разрешаю
orignal
ты погоди
orignal
пустые или непополные?
orignal
пустые это совсем другая тема
Vort
сегодня только пустые видел
Vort
но может это Firefox какую-то фигню делал, не знаю
orignal
это другой вопрос
Vort
надо будет просто ещё проверять
orignal
в прошлый раз речь шла о неполных
Vort
"<~orignal> я только здесь разрешаю" так это что-то->Firewalled. у меня же были подозрения про Firewalled->Unknown. но сейчас глянул по коду - вроде норм
Vort
надо тупо логирование смены интродьюсеров воткнуть и всё станет понятно
orignal
ну вот когда изначально был Firealled то Uknown не посатвиться потому что тот флаг не установится
Vort
orignal: добавил логи и первый тык пир теста выдал вот такое:
Vort
Router: network status v4 changed Firewalled -> Unknown
Vort
Router: network status v4 changed Unknown -> Firewalled
Vort
RouterContext::ClearSSU2Introducers v4
Vort
затем 3 штуки RouterContext::AddSSU2Introducer v4
orignal
давай смотреть
orignal
кто его вообще ставит в Unknown
Vort
было Firewalled - Symmetric NAT, стало Firewalled. но полагаю это не важно
orignal
это неправильно
orignal
почему вообще переходит
Vort
попробую ещё логирования натыкать
Vort
SSU2Session::HandlePeerTest GetTestingState() 1 code 68
Vort
eSSU2PeerTestCodeCharlieAliceIsAlreadyConnected = 68
Vort
вот тут короче github.com/PurpleI2P/i2pd/blob/600f36539fd2c0060ae3db3624469980097ddfc8/libi2pd/SSU2Session.cpp#L2391
orignal
счас
orignal
ага понял
orignal
это обработка оибуки
orignal
ошибки
orignal
счас переделаю
orignal
сделал
papakarlo
а вы когда роутер на андроид портировали
orignal
а его не портировали он тот же самый
papakarlo
свистоплясок с интернетом не было?
orignal
там плюсовый код собиратеся c NDK
orignal
и прикручена главная активность
papakarlo
это хорошо
Vort
пир тест теперь интродьюсеров не сбрасывает. хорошо
Vort
но они сами сыпятся!
Vort
не наш ли узел рвёт с ними связь?
orignal
думаю что дед рвет
orignal
он же пустой пакет не считает за данные
Vort
за 14 минут аптайма 7 интродьюсеров поменялось
orignal
иначе говоря интродьюсеры с i2pd
orignal
нормально
orignal
а с джавой хуйня выходит
orignal
счас объясню в чем дело
Vort
он не считает, что интродьюсерская сессия должна жить долго?
orignal
void SSU2Session::SendKeepAlive ()
Vort
а кстати я же сейчас могу глянуть по netdb i2pd это были или java
orignal
видимо нет
orignal
да глянь
orignal
вот в том методе мы шлем только паддинг
Vort
два узла проверил, cost 3 и 8. это i2pd как я понимаю
Vort
надо хотя бы проверить не рвётся ли локально
orignal
да интреесная мысль
orignal
в что если пир тест не дошел?
Vort
а он тут при чём?
Vort
я имею в виду, что RouterContext::RemoveSSU2Introducer вызываются
orignal
пардон keep alove
Vort
а, это может быть
orignal
я погляжу
orignal
я полагаю через эти соединения RelayIntro не прилетали
Vort
лучше на своём U узле добавь логирование как-то так paste.i2pd.xyz/?18e97d5c38a3801b#895eHLdkyxFcWEJ6zG6n74xWvCt8kB48oVNcMBuPniL7
Vort
у меня система в свопе так как не хватает RAM, поэтому мои результаты не очень точны
orignal
да это понятно
orignal
Remove там делается только если сессии больше нет
Vort
у меня есть небольшое подозрение на пересоздание в обратном направлении
Vort
но это так, на всякий случай говорю
orignal
да такое может быть
orignal
но почему изначальная сдыхает?
Vort
у меня в виртуалке могут быть короткоживущие дырки. но это опять неточно
Vort
хотя наверно не в этом дело
Vort
смутно припоминаю что при тестировании год назад сессии к интродьюсерам у меня жили дольше
orignal
я посмотрю у себя сколько живут
Vort
окей
onon
Сделал суточный график количества флудфилов, может кому интересно: paste.i2pd.xyz/?42d4087717876613#HeBat9LDoMEbY2jgshEta8sLWejzhou2uvcP21xPzKq4
onon
Начало и конец графика - 21:30 по UTC
orignal
и каков вывод?
orignal
Vort может сделать параметров в конфиге интрервал проверки интрольюсеров и послыку keep-alive?
onon
Что количество флудфилов увеличивается примерно на 100 когда в европах вечер
orignal
const int SSU2_KEEP_ALIVE_INTERVAL = 15;
orignal
счас константа
orignal
и нет я посмотрел у меня интрольюсеры у поляков не меняются