~AreEnn
~R4SAS
~acetone
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Guest7184
Leopold
Most2
Nausicaa
Ruskoye_911
Vort
`
anon2
b3t4f4c3
karamba_i2p
nemiga
not_bob_afk
plap
poriori
profetikla
soos
teeth
un
weko_
whothefuckami
orignal
по поводу скорости построения тоннелей
orignal
const int TUNNEL_POOL_MAX_NUM_BUILD_REQUESTS = 2;
orignal
вот тут можно попробовать поднять скажем до 5
weko
могу глять что у меня
weko
глянуть
orignal
поставь сразу 10
weko
у меня уже повышено я могу посмотреть сколько стоит
weko
ну просто я повысил и не жалуюсь
weko
const int TUNNEL_POOL_MANAGE_INTERVAL = 4; // in seconds
weko
const int TUNNEL_POOL_MAX_NUM_BUILD_REQUESTS = 5;
weko
orignal: 17:08:53@766/error - Garlic: Can't handle ECIES-X25519-AEAD-Ratchet message
weko
это когда виснет
weko
Incoming Tags: 18015
orignal
ну это часто бывает
orignal
скорее всего дубликат
orignal
или не пришли новые таги
weko
вот сначала стриминг пишет что куча дубликатов приходит
weko
17:08:42@766/warn - Garlic: Flags/static section AEAD verification failed
weko
при чём тред Destination полностью забит когда это происходит
weko
ну начинается
weko
17:08:24@766/warn - Streaming: Duplicate message 353719 on sSID=1885719319
weko
это явно ACK где то всрался
orignal
запросто
weko
[17:10:33] <orignal> или не пришли новые таги
weko
а они когда отправляются?
orignal
там сложно
orignal
таги сами пересчитываются но там есть тагсеты
orignal
переключение между которыми согласосывается сообщениями
weko
17:08:42@766/warn - Garlic: Flags/static section AEAD verification failed
weko
17:08:42@766/warn - Garlic: Trying to generate more ECIES-X25519-AEAD-Ratchet tags
weko
17:08:42@766/error - Garlic: Can't handle ECIES-X25519-AEAD-Ratchet message
weko
17:08:42@766/warn - Garlic: Flags/static section AEAD verification failed
weko
17:08:42@766/error - Garlic: Can't handle ECIES-X25519-AEAD-Ratchet message
weko
17:08:42@766/warn - Garlic: Flags/static section AEAD verification failed
weko
Blinded message
weko
<orignal> переключение между которыми согласосывается сообщениями
weko
а оно же тоже может всраться?
orignal
это значит что таг не нашелся в тагсете
orignal
а почему это тоже надо разбираться
orignal
явно тагсет сменился
weko
отправитель сменил тагсет а получатель не в курсе?
orignal
я уже не помн точно
orignal
почитай спек
weko
ну тут же явно баг
weko
и я его исправлю врядли
weko
хм
weko
17:08:41@162/warn - NTCP2: Received AEAD verification failed
weko
17:08:41@162/warn - NTCP2: Session with cQeSXHiju51kZmZKHozk-44hytf054cGEUoGHowUBlw= already exists. Replaced
orignal
его снчала надо вопроизвести и понять что вообще происходит
weko
я думал это другое, но это адрес роутера отправителя
weko
тут 0+0
weko
orignal: ок давай снова проверю
orignal
надо точный сценарий при котором вопроизводится
orignal
тогда вспомниать буду
weko
хорошо смотрю
weko
опять всрался ACK и началось через 30 секунд
orignal
ну надо более глубкий анализ
orignal
через сколько сообщений
orignal
переключался ли тагсет
orignal
почему на одной стороне таг оказался а на дугой нет
weko
логи не удобно сделаны
weko
в питоне logging есть очень удобный
weko
и тут как то с NTCP2 связано
weko
17:27:30@162/warn - NTCP2: Received AEAD verification failed
weko
17:27:31@162/warn - NTCP2: Session with cQeSXHiju51kZmZKHozk-44hytf054cGEUoGHowUBlw= already exists. Replaced
weko
orignal: это регулярно случается
orignal
ну так анализирй дальше
weko
17:46:36@362/info - Transports: RouterInfo for UBxd~t6gvZQ1JowOQq1w9qhn~~2Gy7XCE6eJjXmUQZ8= not found, requested
weko
17:46:36@362/warn - Transports: Peer profile for UBxd~t6gvZQ1JowOQq1w9qhn~~2Gy7XCE6eJjXmUQZ8= reports unreachable. Dropped
weko
17:46:36@362/info - Transports: RouterInfo for UBxd~t6gvZQ1JowOQq1w9qhn~~2Gy7XCE6eJjXmUQZ8= not found, requested
weko
17:46:36@362/warn - NetDb: Destination UBxd~t6gvZQ1JowOQq1w9qhn~~2Gy7XCE6eJjXmUQZ8= is requested already
weko
17:46:36@362/warn - Transports: Peer profile for UBxd~t6gvZQ1JowOQq1w9qhn~~2Gy7XCE6eJjXmUQZ8= reports unreachable. Dropped
weko
17:46:36@362/info - Transports: RouterInfo for UBxd~t6gvZQ1JowOQq1w9qhn~~2Gy7XCE6eJjXmUQZ8= not found, requested
weko
это адрес получателя
weko
Transports: RouterInfo for UBxd~t6gvZQ1JowOQq1w9qhn~~2Gy7XCE6eJjXmUQZ8= not found, requested
weko
вот это очень интересно конечно
weko
у нас нету RI роутера с которым у нас транспорт
orignal
и когда заканчивается?
orignal
с чего ты взял что у нас транспорт?
weko
orignal: потому что данные идут
weko
20 MB/s не телепортируются же)
weko
к тому же тут 0+0
weko
значит транспорт точно должен быть
weko
кстати просраного ACK тут нету
weko
так в профиль попадает что ubreachable хотя по факту это не так
weko
unrachable*
weko
сука
weko
понятно о чём я
weko
теперь вопрос почему
weko
и к тому же вопрос, почему если мы дропаем RI так как он недоступный, то зачем его запрашивать снова? к тому же два раза, судя по NetDb: Destination UBxd~t6gvZQ1JowOQq1w9qhn~~2Gy7XCE6eJjXmUQZ8= is requested already
weko
тут не один баг
orignal
данные идут по NTCP по SSU2 или просто в очереди копятся?
orignal
роутер такой есть в природе UBxd?
weko
да
weko
это роутер получателя
orignal
он есть в сети?
weko
да
weko
он получает данные
orignal
запрашиваем снова потому что новые данные идут
weko
схема 0+0
orignal
так почему он попадает как unreachable?
weko
я думаю потому что он дропает
weko
Garlic: Can't handle ECIES-X25519-AEAD-Ratchet messag
orignal
и что с того?
orignal
причем тут это?
weko
потому что это одновременно происходит
weko
на двух роутерах
orignal
это не объясняет почему он стал unreachable
weko
да на получателе на 5 секунд начинаются логи, значит он в профиле недсотупный как раз потому что дропается
weko
orignal: ну роутер дропает сообщения
weko
видимо поэтому
orignal
по логике там нет сессий
weko
либо это
weko
17:42:30@107/warn - NTCP2: Received AEAD verification failed
orignal
он unreachable потому что не устанавливает
orignal
так вот почему
weko
я кидал этот лог уже
weko
<orignal> так вот почему
weko
и почему же происходит?
orignal
так вот я и хочу чтобы ты разобрался
orignal
что происходит при попытке соединения
weko
начинается всё именно с 17:42:30@107/warn - NTCP2: Received AEAD verification failed
weko
orignal: оно уже соеденино
orignal
это не проблема
orignal
нет
orignal
if (!it->second.sessions.empty ())
orignal
it->second.sessions.front ()->SendI2NPMessages (msgs);
orignal
else
weko
да потому иначе данные бы не шли
orignal
ты не ответил какое там соединение
weko
NTCP2
orignal
сессий то у него нет
orignal
в списке сессиий
weko
не понимаю
orignal
я тебе выше код кинул
weko
про какие сессии речь?
orignal
у трапспорта нету сессий
orignal
потому он туда и попадает
orignal
но ты доказываешь что сессия есть
orignal
то есть в списке NTCP2 если а у транспорта уже нет?
weko
хочешь сказать она ломается?
orignal
если так то это серьезная бага
orignal
я тебе объясняю логику работы
weko
ща посмотрю
orignal
<weko> 17:46:36@362/info - Transports: RouterInfo for UBxd~t6gvZQ1JowOQq1w9qhn~~2Gy7XCE6eJjXmUQZ8= not found, requested
orignal
вот это действительно не надо
orignal
надо проверять на unreachable
weko
ага я сказал)
weko
orignal: да сессия ломается
orignal
это сделаю
weko
а почему ломается?
orignal
вопрос почему он ставноится unreachable
orignal
явно не соединяется дальше
weko
ага
orignal
вот это и надо понять что происхлодит вообще
weko
и откуда тогда Garlic: Can't handle ECIES-X25519-AEAD-Ratchet message
orignal
это как раз не надо
orignal
оно к делу не относится
weko
думаешь? а я думаю вполне может
weko
у нас рушится сессия и сообщения от роутера не проходят
weko
я думаю приходит неверный RI
orignal
надо понятно что с траспортами сначала
weko
через какое то время он снова созадётся
weko
а стоп
weko
нихуя нет
orignal
потому что unreachable действитет недолго
weko
первый роутер думает что транспорта нету. а второй думает что есть
notyameii
hey guys. i want to ask a few questions since im trying to build an i2p tracker. is english allowed?
weko
notyameii: i2p bittorent tracker?
notyameii
yes
orignal
а что показывает netstat?
orignal
это ж NTCP2
weko
orignal: а нет показалось. и на первом было
weko
я просто попутал
weko
да через некоторое время восстанавливаетися
notyameii
i am modifying an already built torrent tracker called UNIT3D. since its built for the surface web it does not work on i2p.
notyameii
Are there any doccumentation on how trackers announce on i2p? its kind of hard to find material about it.
weko
i2p-projekt.i2p
weko
there docs about bittorrent in i2p
weko
geti2p.net also
notyameii
thank you! <3
weko
orignal: всё таки я был прав. на втором роутере сессия показывается, на первом нет
weko
при том что она работает
orignal
ну и как такое может быть?
weko
баг с отображением
orignal
на самом деле я знаю
weko
в нонсоли
weko
консоли
orignal
нет это страый баг ядра лиункса
orignal
на одной стороне сокет открыт а на дргой нет
orignal
причем локалхост
weko
orignal: опа блять. значится зависло. и в этот момент отобразилось на первом роутере
orignal
мы на такое натыкались на работе
weko
и что с этим делать
orignal
но второй закроется по таймауту
orignal
но надо подумать
weko
так оба роутера думаю что с сессией всё ок
weko
но у второго это Garlic: Can't handle ECIES-X25519-AEAD-Ratchet message
orignal
ключи же не будут совпадать
orignal
блять
`
> давайте думать [РОСКОМНАДЗОР], подсказывайте [РОСКОМНАДЗОР], как сделать по красоте
orignal
не бывает у NTCP2 Garlic
orignal
это другой уровень
weko
orignal: тогда почему оно в тот же момент появляется
weko
это очевидно связано
orignal
ой все
orignal
естественно связано
orignal
вопрос что происходит на уровне NTCP2
orignal
гадо там смотреть ошибки
orignal
потому что у каддолго сообщениея есть Poly1305
orignal
каждого
weko
могу дебаг попробовать, ну ощущение что диск забьёт за пару секунд
orignal
нет не надо
orignal
анализируй сам
weko
ну в смысле уровень логов дебаг
weko
хорошо
orignal
выделяй цепочку событий
orignal
в какой момент что пришло
orignal
или не пришло
orignal
понимаешь надо понять что вот если стоит себе сессия что запускат цепочку событий
weko
тоесть надо понять является ли поток данных причиной?
weko
или если нет то что причина
orignal
надо понять что ее вызывает
orignal
может какой то экспешин ошибка сокета
orignal
может какой то длинный фрейм и тому подобное
orignal
короче что именно ломает сессию
weko
18:44:30@643/warn - NTCP2: Couldn't send frame Bad file descriptor
orignal
вот это уже ближе к теме
orignal
поищи что дальше делается
orignal
по хорошему мы должны закрыть сессию
orignal
если мы этого не делаем это бага
weko
ща
weko
SendTerminationAndTerminate (eNTCP2DataPhaseAEADFailure);
weko
тут наверняка баг с закрытием
orignal
а чего вдруг AEAD?
orignal
надо сразу закрывать
weko
хз)
orignal
ладно гляну позже
weko
всё таки нет наверное
weko
18:44:30@837/warn - NTCP2: Received AEAD verification failed
weko
вот видимо кривую причину пишет
weko
точнее не настоящую
orignal
да нет это не должно порождать проблему
orignal
вот bad file desciptor это да
orignal
это истиная причина
weko
orignal: это причина, но даже если случилось, должно же пересоздать сессию?
weko
и дальше работать
weko
а тут не работает
orignal
ну надо разбираться дальше
orignal
как мы обрабатываем эту ситуацию
orignal
и кстати почему вообще такая проблема возникла
weko
if (ecode != boost::asio::error::operation_aborted)
weko
LogPrint (eLogWarning, "NTCP2: Couldn't send frame ", ecode.message ());
weko
Terminate ();
orignal
угу тут все правильно
orignal
а дальше надо смотреть по цепочке
weko
Terminate смотрю
orignal
я думаю там внутри Terminate не может закрыть сокет
weko
надо проверить правда ли закрывается
weko
сокет
orignal
возможно там получается новый эксепшин который ловится в треде
orignal
и в итоге не отрабатаывает до конца
weko
точнее сокет он у себя локально закрывает в любом случае
weko
но shutdown наверняка не срабатывает
weko
у нас же bad file desciptor
orignal
я думаю там экспшин где то кидается
weko
то есть вторая сторона не знает что мы закрылись
weko
<orignal> я думаю там экспшин где то кидается
weko
можно проверить
weko
поменять уровень и посмотреть
weko
m_Socket.shutdown(boost::asio::ip::tcp::socket::shutdown_both, ec);
weko
if (ec)
weko
LogPrint (eLogDebug, "NTCP2: Couldn't shutdown socket: ", ec.message ());
orignal
да это просто флаг
orignal
там дальше есть close
weko
да я вижу
weko
вот shitdown это с сообщением второй стороне видимо
weko
а close просто закрыть
weko
верно?
weko
shitdown лол))
orignal
это линксовская хрень
orignal
из-за тредов
weko
18:44:30@837/warn - NTCP2: Received AEAD verification failed
weko
это видимо из-за того что закрываем посреди отправки данных
weko
хотя нет
weko
не должно быть такого
weko
всё равно пока не ясно откуда
weko
18:44:30@837/warn - NTCP2: Received AEAD verification failed
weko
для этого данные должны изменится как то
orignal
надо посмотреть какая длина фрейма
orignal
возможно не влазит
orignal
я тут починил чтобы не создавались пиры для дохлых ротуеров
weko
orignal: даже если не влазит. если нужное количество данных не прочиталось, тоесть если не всё пришло, оно не должо пытаться проверять
orignal
не может так быть там transfer_all стоит
weko
ну вот да я про это
weko
мы ждём пока всё не придёт
orignal
может оно в буфер пишется меньше чем надо
weko
всё что должно
orignal
а потом то что не влезло в буфер затирается
orignal
наппример так
weko
orignal: может как раз из-за того что Bad file descriptor
orignal
запросто
orignal
вполне мог он затереться
weko
orignal: просто даже то что в буфере затёрлось всё равно не отправится. а если не отправится весь фрейм то и не будет пытаться проверять на другой стороне
orignal
может это при получении наример
orignal
или при отправке затерлось
weko
Bad file descriptor так вот это из-за чего может быть?
weko
связано с i2pd или нет?
orignal
это самый интесный вопрос
orignal
могло и ядро насрать
weko
а i2pd как то влияет на него?
weko
<orignal> могло и ядро насрать
weko
тогда в любом случае надо исправлять дальнейшее поведение. Но если возникает из-за бага в коде то тоже нужно исправить
orignal
естественно надо такую ситуацию обрабатывать правильно
weko
возможно мы уже на закрытый сокет пытаемся отправить
weko
хотя вроде есть проверка
weko
но что если пока мы отрпаляем, сокет закрывается?
orignal
там бы была другая ошибка
weko
тут проверка IsTerminated
orignal
ну могла другая сторона закрыть
orignal
в принципе
weko
ну да я об этом же
weko
что закрыла другая сторона, пока мы отправляем
orignal
так было бы closed by peer что то такое
weko
if (ri.IsUnreachable ())
weko
{
weko
LogPrint (eLogError, "NTCP2: RouterInfo verification failed in SessionConfirmed from ", GetRemoteEndpoint ());
weko
SendTerminationAndTerminate (eNTCP2RouterInfoSignatureVerificationFail);
weko
return;
weko
}
weko
??
weko
это как
orignal
ну это правильно
weko
почему если IsUnreachable то eNTCP2RouterInfoSignatureVerificationFail
orignal
когда подпись неверная там дейсвительно ставится этот флаг
weko
и только тогда?
orignal
потому что неверная подпись ставит Unreachabler
orignal
нет
orignal
там еще куча вариантов
weko
так а если по другой причине
orignal
просто это не сделано
orignal
надо сделать код ошибки полноценный
orignal
но я как обычно
weko
но вот вопрос
weko
даже если Unreachable то и что?
weko
это же не мешает сессию сделать
orignal
ты чего?
orignal
если роутер кривой
orignal
какая с ним может быть сессия
weko
так Unreachable же значит что адреса в RI нет
orignal
нет это не значит
orignal
там есть еще IsReachable
orignal
вот говорит о том есть адреса или нет
weko
хуйня названия тогда
orignal
а Unreachable это означет "хуевый роутер"
orignal
так я что говорю
weko
не понятно
orignal
надо его поменять
orignal
изначально было так
weko
я просто код читаю и вижу такое... я ж знаю что Reachable значит что есть адрес. тогда unreachable значит что его нет
weko
по такой логике
weko
а оказывается вообще другое
orignal
ну корявая логика
orignal
надо переименовть
orignal
Unreachable на Bad
weko
eNTCP2Message3Error вообще топ
orignal
ну это появилось позднее
weko
orignal: надо добавить милисикунды в логи
weko
мили*секунды
weko
m_TimeFormat
orignal
надо наверное да
orignal
так вроде же есть в конфиге это
weko
ну я поставил
weko
16/Jan/2024:20:49:42 +0000
orignal
а нет так только про дату
orignal
ты прав добавить надо
orignal
но мне как оыбычно некогда
weko
где эти форматы находятся?
orignal
в Log.cpp
orignal
TimeAsString(msg->timestamp)
weko
да но тут не формат сам
weko
m_TimeFormat
weko
а мне его же поменять надр
orignal
strftime(m_LastDateTime, sizeof(m_LastDateTime), m_TimeFormat.c_str(), localtime(&t));
orignal
угу
orignal
m_TimeFormat("%H:%M:%S")
weko
да
orignal
далее man strftime
weko
Daemon.cpp
orignal
и смотреть что там надо писать
weko
милисекунды сделать чтоб всегда были или чтоб когда true в конфиге?
orignal
параметром естественно
orignal
logmilliseconds
weko
а хотя пока пох я пока заливать не буду... сейчас важно чтобы понять что причиной является
weko
logtimems
orignal
у нас на работе в логах даже микросекунды
weko
да потому что милисекунд нету
weko
можно только микросекунды
orignal
нет не поэтому
orignal
потому что надо
orignal
у нас сотни сообщений в миллисекунду идут
weko
ну милисекунд в любом случае нету ))
orignal
у нас нормально их печатает если надо
weko
ну именно в strftime нету
orignal
ну я не знаю что хаген намудел
orignal
делается простым делением
weko
strftime это стандартная функция вроде
weko
из C даже
weko
в питоне такая же есть
orignal
ну так сделай консатенацию из нее с скуендами
orignal
и добавить отдельной строкой миллисекунды
weko
я просто добавлю микросекунды ))
weko
а микросекунд тож нету. значит ручками
weko
через жопу, но добавил ))
weko
для теста подойдёт
weko
Received AEAD verification failed
weko
первопричина
weko
уже после Couldn't send frame Bad file descriptor
weko
orignal: тогда вопрос почему фейлится проверка
weko
так, видимо есть другой вариант ошибки
weko
по той же причине
weko
на втором всё так же Received AEAD verification failed , но после идёт Receive length read error: End of file
weko
а на первом нету про дескриптор
weko
там сразу идёт RouterInfo for UBxd~t6gvZQ1JowOQq1w9qhn~~2Gy7XCE6eJjXmUQZ8= not found, requested
weko
но суть таже
weko
orignal: короче говори какую ещё информацию надо ...
weko
3+3 уже 5 MB/s.... возможно, буферы были, наоборот, слишком маленькие ?
weko
или возможно из-за того быстрого роста окна были пробелемы... не знаю.
orignal
значит не до конца прочитывается
orignal
надо проверять полученную дину
weko
главное пиши если что надо ещё посмотреть
weko
воспроизодится баг очень стабильно
orignal
пока не знаю
weko
ну в плане постоянно а не через ровно N времени
orignal
меня интересует почему не пересодтняется
weko
я просто тогда не буду текущее состояние менять
weko
orignal: потому что Unreachable
weko
а почему ставить тоже вопрос
weko
ставиться
weko
надо найти где и убрать
orignal
так он стал Unreachable потому что не смог соединиться
orignal
а вот почему
weko
так уже ясно что нужно в логи вывести )
weko
нужно посмотреть почему не соединило
orignal
у тебя только NTCP2 или еще и SSU2 есть?
weko
только NTCP2
orignal
значит там ацептор не включился
weko
SSU2 отключено
weko
так это же серьёзная бага
weko
если ацептора нет то не принимаются новые коннекты
orignal
так а куда он пропал
orignal
может экспепшин какой
orignal
и не поднялся еще