~AreEnn
~R4SAS
~orignal
~villain
&N00B
+relaybot
DUHOVKIN
Most2
Nausicaa
Nikat
Vort
Xeha
`
acetone_
anon2
b3t4f4c3
karamba_i2p
nemiga
not_bob_afk
onon
plap
poriori_
profetikla
soos
teeth
tensor
un
weko
whothefuckami
`
Тяжело-тяжело..
orignal
onon сделал я чтобы отвечало на запрос только реальными ротуерами
orignal
кстати мне вот что интересно как этот поц клонирует роутеры с family
onon
Продублирую вопрос: Когда у нас прямой коннект к узлу устанавливается, RI обновляется, и из netDb они удаляются с меньшей вероятностью. Но вот те роутеры, через которые мы удачно построили туннель, похоже не обновляются.
orignal
я посмотрел кстати RI не обновляется
orignal
только когда к нам подключаются
orignal
те конечно не обновляются потому что мы не знаем новый RI
onon
Ну было бы неплохо те, которые 'real' тоже "продлевать"
onon
В случае успешного туннеля
orignal
это можно на уровне очистки
orignal
<dr|z3d> no, not wrong. it's not being banned by the sybil scan, by something else.
orignal
а вот сильно интересно
orignal
у него показывает что мой флудфил забанен
orignal
<dr|z3d> I got you down for excessive lookup requests, which is a short term ban (15m)
orignal
уебаны блять
onon
excessive lookup requests это что
onon
Слишком быстро или слишком много за раз
onon
Ага вижу max 10 lookup requests in 30s.
orignal
ты последнее видел,
orignal
<dr|z3d> it's likely different addresses, which is why I'm suggesting not hammering a single ff and spreading your lookups over several.
onon
Да =)
orignal
они че там вообще курят?
onon
Ну думали нагрузку перераспределять
orignal
так он не понимает
orignal
если он ближайший к этому адресу
onon
Да, я тут с тобой согласен
orignal
то как не распрделяй а все равно попадешь на него
orignal
счас Vort проснется охуеет от такого окрытия )))
orignal
спросим там деда
onon
Странно, что в таком случае они сами себя не банят...
onon
У них, видимо таймауты на запросы больше
orignal
думаю у них просто таких потоков как у нас нету
onon
А ещё своим tcsr хвастаются
onon
Мне кажется атака закончилась у меня показатели начинают возвращаться к норме.
orignal
у меня пока нет но я же везде забанен оказывается ))
onon
Ява на 24часа банит?
orignal
а x3
orignal
я оттуда вышел
orignal
мне надо пересобраться
hip
перепишите на rust
Vort
orignal: почему парсинг RI не починил? :(
Vort
кстати, у меня недавно узел крешнуло, но бинарник был без дебага, если будет повторяться, буду тогда ловить
Vort
про "excessive lookup requests" - это получается бан просто при большом транзите
Vort
хотя и вариант бага с запросами одного и того же RI стоит проверить
Vort
вообще, если в сети 1000 флудфилов, то при равномерном покрытии запросами это получается глобальный лимит в 333 запроса в секунду
Vort
то есть, получается два вопроса - 1. равномерное ли покрытие и 2. действительно ли нашему узлу надо больше, чем 333 запроса в секунду делать
Vort
если ничто не помешает, то соберу статистику по lookup requests для своего узла
Vort
не нравится мне это, сразу уже вижу странность даже без статистики: paste.i2pd.xyz/?37bdae322a1079b7#HakqCsR2zvEUPHqQJy8NaDghSHfDxRGAxQ8jBE1TNake
Vort
почему к узлу n9Cr-OtG-4ca3orJSf6t такой блок запросов образовался? надо разбираться
Vort
вот ещё, для XiOAH1etcVYR : paste.i2pd.xyz/?33aac00ed87432b2#H3UUZP6ej9gYi8rQ3ztsiPANPzrYap1JT6PkykHQScPY
Vort
а это что за хрень? три запроса в секунду "Try mR9w1QHtHcRnd~sPHNjgL6tzBCnK6SqgP0njgaz~q~g= at 3 floodfill"
Vort
похоже, джависты нашли баг в i2pd
Vort
проверил расстояния от запрашиваемых идентов до флудфилов в блоке - выглядят нормально. теперь вопрос, почему собственно блоки формируются
Vort
зачем нашему узлу в одну и ту же секунду опрашивать большое количество близких хешей
weko
[02:15:16] <hip> перепишите на rust
weko
Перепиши.
Guest63403
веку на мыло.
weko
[05:00:10] <Vort> кстати, у меня недавно узел крешнуло, но бинарник был без дебага, если будет повторяться, буду тогда ловить
weko
А это не проблема, можно просто бинарник с дебагом подставить в команду gdb
Vort
weko: у меня он был скачан с GitHub, тут ничего не поможет
Vort
там совсем другой компилятор
weko
[05:44:27] <Vort> а это что за хрень? три запроса в секунду "Try mR9w1QHtHcRnd~sPHNjgL6tzBCnK6SqgP0njgaz~q~g= at 3 floodfill"
weko
Я не помню, это случайно не та же штука, что была в тестнете?
Vort
а, может, там и есть отладочная инфа, просто через жопу закодированная
Vort
не помню вообще о чём речь
Vort
я имею в виду - нафига один и тот же запрос слать кучу раз
weko
Vort: когда я запускал тестнет, иногда всплывал спам таких логов, при этом была сильная нагррузка на проц
weko
И при чём на несколько роутеров именно
weko
Около 5
Vort
хз хз
weko
Точно не помню
weko
Можно найти на major логи
weko
Такое несколько раз было
Vort
я ещё пульсацию по количеству нашёл. не помнишь ли что каждые 15 секунд может запросы генерить?
weko
Vort: ну exploration
weko
Возможно
Vort
да нет. когда база набита, то exploration редко случается
Vort
а она была набита
Vort
15к RI в базе
Vort
разобрался я, как всё же вытащить названия функций из бинарника. стек креша вот такой: NetDb::HandleDatabaseSearchReplyMsg -> NetDbRequests::SendNextRequest -> RequestedDestination::CreateRequestMessage -> CreateRouterInfoDatabaseLookupMsg
Vort
weko: спасибо за подсказку, через gdb всё же можно вытащить было информацию. хотя это писец конечно. я ожидал, что llvm-dwarfdump или IDA сработают. но хрен там
Vort
скорее всего, крешнуло на вот этой строчке: github.com/PurpleI2P/i2pd/blob/02895d4cf5d0d5e047713a3af7d72f8a9b796e68/libi2pd/I2NPProtocol.cpp#L178
Vort
сделал визуализацию пульсации исходящих lookup запросов: paste.i2pd.xyz/?fe9ee5a48f3d1a95#4sJfqvALdzqRzV3mg2AhJzUeHK2rnJqPdRzdbc5sxukj
Vort
каждый всплеск/шип - это около тыщи запросов за секунду
Vort
затем относительная тишина 15 секунд, затем опять шип
orignal
какой парсинг?
orignal
запрос одного и того же это понтяно что надо проверить
Vort
[00:25:13] <Vort> короч надо добавить проверку на возвращаемое значение вот сюда:
Vort
[00:25:15] <Vort> github.com/PurpleI2P/i2pd/blob/de673464d1144ce83f40dee9fb9460937e741c7e/libi2pd/RouterInfo.cpp#L305
Vort
[00:25:23] <Vort> и в аналогичные места
orignal
но он то говорить про разные
orignal
да надо согласен
Vort
у атакующего i= короче, чем надо
orignal
ну так от этого же ничего не слуится
Vort
ой, длинннее. туплю
Vort
ну не суть. надо, чтобы длина чётко совпадала
Vort
так мы можем выкинуть нафиг RI прямо мгновенно
Vort
и больше с ним не возиться
orignal
это надо но оно не критично
orignal
не RI а адерс
Vort
почему не хочешь сразу RI выкидывать?
tetrimer_
Диск надо чем-то занять. :)
tetrimer_
У меня нынче peerProfiles под 700 Мегабайт раздуваются
orignal
потому что это может быть не атака а просто бага
orignal
аналогично
orignal
что с ними делать пока не знаю
Vort
"<~orignal> потому что это может быть не атака а просто бага" - зачем нам баганутые RI?
orignal
ну согласенн да можно выкинуть
orignal
так что с запросами то?
orignal
к одному и тому же часто?
Vort
с запросами две загадки
Vort
как минимум
Vort
во-первых, почему идут запросы блоками к близкому (или тому же самому) флудфилу
orignal
то что дрозд сказзал это же пиздеуц
Vort
во-вторых, какой процесс генерирует шипы с интервалами в 15 сек
Vort
да подожди с пиздецом, тут реально может быть баг
orignal
ну баг одно но когда много тразита это другое
Vort
транзит должен давать равномерную нагрузку
Vort
сейчас же какие-то странности наблюдаются
orignal
все ломятся на один и тот же флудфил?
Vort
нет. но блоками туда запросы попадают - по 5, 10, 20 штук
Vort
всё в пределах одной секунды или того меньше
Vort
про интервал в 15 сек есть идеи? просто я почти уверен, что ты знаешь, откуда эти шипы
Vort
а мне это копаться долго надо, чтобы понять
onon
const uint64_t MANAGE_REQUESTS_INTERVAL = 15; // in seconds
Vort
похоже
Vort
это не из-за этого у нас пинги по 15 сек лагают случаем?
orignal
да возможно
onon
if (ts - lastManageRequest >= MANAGE_REQUESTS_INTERVAL || ts + MANAGE_REQUESTS_INTERVAL < lastManageRequest) // manage requests every 15 seconds
orignal
нет пинги тут непричем
orignal
вот что запросы лизсета бывают долго это да
Vort
так что получается - если с первого раза RI не нашёлся, то ждём 15 секунд и потом пробуем ещё раз?
Vort
шипы, кстати, срезать надо нахрен, даже если оставлять интервал тем же
orignal
да. и пробуем на другом
orignal
согласен что надо
Vort
то есть, надо чаще дёргать таймер
orignal
этим просто никто еще не занимался
orignal
да конечно надо поменять
onon
Если у нас единовременно шлётся такое кол-во пакетов, естественно где-то что-то переполняется и дропается
orignal
тогда нас забанят вообще все ))))))
onon
Оттуда и потери пакетов
onon
И фейлы тестов
Vort
да я имею в виду просто размазать шипы, а над самим потоком думать потом
onon
И дропы служебных сообщений
Vort
то есть, ждать 15 сек, но точка отсчёта чтобы плавала
Vort
примерно по той же логике, как срезали шипы перепосылок в SSU2
orignal
а разве счас не так?
Vort
график не видел? :)
orignal
проверка каждые 15 секунд но врем ятам сранивается
Vort
так вот надо проверку каждую секунду, а сравнивать с 15 секундами
orignal
там не 15 секунд
orignal
там увеличиваюшийся интревал должен быть
Vort
ну я имею в виду оставить сравнение как было
Vort
но дёргать его намного чаще
Vort
тогда шипы уйдут
Vort
а логика останется той же
orignal
ну так поменять эту констату и все
Vort
она в сравнении используется
Vort
хм. может я не прав
Vort
сейчас получше гляну
Vort
MAX_REQUEST_TIME = MAX_NUM_REQUEST_ATTEMPTS*MANAGE_REQUESTS_INTERVAL
Vort
то есть, там аккуратно менять надо
orignal
ну это как раз логично
orignal
ну точнее надо подумать
Vort
угу
orignal
там надо MIN_REQUEST_TIME вместо MANAGE_REQUESTS_INTERVAL
orignal
это явный косяк
колдобина
хули распрыгались пидарасы
колдобина
ой это дев
Vort
orignal: ну а вообще у меня подозрение, что с нынешним алгоритмом задержка перед вторым запросом может быть от 5 до 15 секунд. полагаю, такой рандомный разброс не нужен
Vort
то есть, стоит чётко понять, какая задержка нужна и ждать именно столько
Vort
"<~orignal> это явный косяк" я думаю, это так учтён разброс
Vort
зачем вообще MAX_REQUEST_TIME ? почему просто количество попыток не считать?
Vort
если таки сравнивать время, то, наверно, вот так нужно: const uint64_t MAX_REQUEST_TIME = MAX_NUM_REQUEST_ATTEMPTS*(MANAGE_REQUESTS_INTERVAL+MIN_REQUEST_TIME);
Vort
если будет интервал 1 секунда, то с учётом разброса придётся ждать 5+1=6 секунд на попытку
Vort
это тоже, наверно, менять надо: auto msg = m_Queue.GetNextWithTimeout (15000); // 15 sec
Vort
присмотрелся чуть получше - lookup запросы, которые в логах идут блоками, создаются отдельным потоком
Vort
на моём скриншоте поток 785 даёт блоки, а поток 303 - рандомные запросы
Vort
ппц. собирал данные об одной проблеме (MANAGE_REQUESTS_INTERVAL), вляпался в две другие проблемы :(
Vort
при выключении тестового узла, он опять отожрал всю RAM (4+GB). но система кое как выдержала
Vort
после чего основной узел тоже заглючило и у него начала течь память со скоростью примерно 1 мегабайт/секунду
Vort
дошло до 2.5GB и я его выключил
orignal
ну так понятно то оно от фонаря))
Vort
посмотрел на всякий случай очереди - там всё как обычно
orignal
почему отжирает память тоже надо разбираться
Vort
что необычного было - NetDb: ... destination requested, but no tunnels found
Vort
ладно, займусь пока визуализацией того, что я собрал полчаса назад :/
orignal
ну так надо онять какой вообще поток и где
Vort
я ещё проверил, что это данные кучи. ничего необычного, просто на всякий случай
Vort
а проверить, кто гадит в кучу - не так просто. на то она и куча )
Vort
особенно, когда непонятны условия воспроизведения проблемы
orignal
так у нас пулыч
orignal
надо печатать какие объемы в секунду запрашиваются в каждом пуле и скольо освобождается
orignal
так мы поймем какой пул
Vort
ну это если будет понятен механизм воспроизведения
Vort
и только для второго варианта (более-менее медленной утечки)
orignal
не ну рост памяти виден всегда
orignal
меня интересует что именно отжирается
Vort
почему происходит всегда - это понятно - фрагментация. вопрос именно в аномалиях, которых фрагментацией не объяснить
orignal
нет вот смотри у меня счас флудфил 600 мегов отожрал
orignal
вопрос почему
Vort
профили, наверно. меня не 0.5 гига беспокоит, а 2.5 и 4
orignal
у меня вчера так илита грохнулась
orignal
все стояла где то на 300 мегов потом раз и вылетела по OOM при 1.5гига
Vort
я и на GitHub подобные жалобы видел
Vort
ну предположительно, это происходит из-за подлагивания потоков (к примеру, при свопе - у меня так было)
Vort
такс. а теперь результат по интервалу:
Vort
^^ коммит с изменением интервала и график количества запросов с таким изменением
Vort
шипы ушли. сломал ли я что-то в процессе - вопрос интересный :)
Vort
там в коммите, кстати, есть ещё одно бонусное изменение
orignal
1 секнуда не маловато?
Vort
теперь мне надо понять, из какого потока лезут групповые запросы (к близким флудфилам)
orignal
NetDB тред не жрет 100%
orignal
зачем ReseedFromFooldfill закомментил?
Vort
"<~orignal> 1 секнуда не маловато?" меня только в отношении округления этот вопрос беспокоил
orignal
а меня в плане нагрузки на тред
Vort
"<~orignal> зачем ReseedFromFooldfill закомментил?" потому что он нихрена не работал. а без него флудфил кладётся в базу и нормально с него стартуется
Vort
"<~orignal> а меня в плане нагрузки на тред" я сейчас основной узел заведу на этом коммите
Vort
и будет видно. но думаю, что ничего с ним не случится
orignal
ну давай PR
orignal
если что измениим
orignal
я тоже думаю
orignal
15 секунд там было 10 лет назад
orignal
опять же от балды
Vort
меня лишь беспокоит, что интервал дефакто был плавающий из-за неточности. то есть, не 5, а 5..20. ну или около того
Vort
а теперь 5..6
Vort
то есть, чаще запросы будут
Vort
можно поднять немного. но можно и оставить 5
Vort
хз
orignal
я бы полнял до 3 секунд
Vort
да сам таймер можно и вообще несколько раз в секунду дёргать. важно, что там с реальной частотой запросов
Vort
перепосылки SSU2 ведь дёргаются и ничего не сломалось ещё
orignal
логично
orignal
я просто об этом в то время не думал
orignal
а код этот с тех времен
Vort
хотя 5 секунд же тоже не выдерживаются из-за дропов
orignal
насчет отжирания памяти я думаю какой то тред сдыхает и перестает забирать из очереди
Vort
транзит кстати был при утечке
orignal
либо не сдыхает а зависает и начинает жрать кор целиком
Vort
нагрузки на CPU особой не заметил. но может просто смотрел не тем, чем надо
Vort
PR с интервалом сделал, но, как обычно, лучше всё же вначале тестировать: github.com/PurpleI2P/i2pd/pull/2059
Vort
не хотелось бы, чтобы java ещё больше банить начала из-за этого изменения
tetrimer_
Я у себя сейчас запущу с этими изменениями.
tetrimer_
Вот если я при старте меняю RI и ключ узла - я ведь для всех остальных выгляжу как новый узел?
orignal
счас попробую смержить
weko
tetrimer_: да
orignal
я сегодня в конторе сижу
tetrimer_
Т.е. в забаненных - меня еще нету?
weko
Ну, исключая адрес
tetrimer_
ipv4 - это понятно.
weko
Кроме этого, да, как новый
tetrimer_
Значит надо чаще меняться.:)
orignal
смержил
orignal
tetrimer_ еще меняй NTCP2 и SSU2 ключи
Orion
с последнем коммитом вообще не стартует
Orion
почему-то пишет ошибку в логах 17:41:22@643/error - Daemon: limits.openfiles exceeds system limit: 16386
Orion
поставил лимит 16000, ошибка ушла, но всё равно не стартует
Vort
профилей много набралось, наверно
orignal
грохни ~/.i2pd/peerProfiles
orignal
читает просто долго
Orion
сохранение профилей у меня отключено
orignal
ну разбирайся
Orion
)))
orignal
откуда мы знаем почему у тебя не старттует
orignal
у всех стартует а у тебя нет
orignal
мы не ванги
Orion
ок
Orion
разберусь
Orion
так причём тут комп? нашел бинарник 2.48 - запустился и работает. а v2.51.0-18-gd3b699d7 нет
orignal
ну так разбируйся почему не работае
orignal
что просиходит конкретно
Orion
хер знает. пойду пересоберу.
orignal
так включи дебаг и посмотри логи
orignal
на чем спотыкатеся
Vort
всё, я понял, откуда блочные запросы к флудфилам идут. и, похоже, с этим ничего не поделать
orignal
откуда?
Vort
это происходит, когда какой-то из флудфилов отваливается по PeerDisconnected. и вся его очередь запросов через дропы передаётся соседнему флудфилу
orignal
можно задержку сделать
Vort
хз, думаю, не стоит спешить. всё равно java заметит всплеск
orignal
дед правильно говорит
orignal
что надо запоминать зафейлившиеся запросы и некоторое время не долбать эти адреса
Vort
я о подобном думал
Vort
по сути, специфичный бан в профиле
orignal
именно так в профиль пишется когда в последний раз запрос зафейлился
Vort
то есть, если наш узел имеет хорошие основания полагать, что запрашиваемый узел найти не получится, то не стоит и пробовать
Vort
сейчас же уйма транзита пытается идти через фейки
Vort
можно ловить, как я предлагал, по неправильному размеру i= ключа
Vort
но можно ещё какие-то критерии придумывать, да
orignal
пробовать можно но только через несколько минут
Vort
давай сейчас грепну/почищу лог и отгружу. если электричество не рубанётся раньше
orignal
ну когда то же починят
Vort
вот. по логу можно посмотреть, как часто происходит долбёжка одного и того же адреса
Vort
надо же проверить, частое это явление или нет прежде, чем чинить что-то
Vort
посмотрел нагрузку от NetDbRequests::ManageRequests - 0.5% от всего потока. для сравнения - NetDb::HandleDatabaseLookupMsg - 6.4%, NetDb::AddRouterInfo - 6.1%
orignal
ну нормально
Most2
06.<trusishka> orignal
Most2
06.<trusishka> Проблема еще есть, компил последних коммитов поможет?
orignal
что?
orignal
поможет
orignal
рейт станет выше
orignal
проблема еще долго будет
Most2
06.<trusishka> Хорошо, щас
orignal
счас везде стабильные 10%
orignal
если у тебя флудфил то самые последние
orignal
они существенно улучшают дело
Most2
06.<trusishka> Компилю
orignal
компили
WebClient8
Test
orignal
прошел
WebClient8
Может заставить с помощью майнинга адреса роутеров подтверждать, чтобы спама не было?
WebClient8
Куда, кстати, люди пишут когда их сообщения в тг пересылаются?
orignal
иди этим деду мозги еби
orignal
trusishka ну так пересобрал?