IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2022/12/10
~R4SAS
~orignal
~villain
&N00B
+relaybot
Guest7184
Leopold
Most2_
Nausicaa
Nikat
Opax
Vort
WayBest_
acetone
anon
anontor
b3t4f4c3
banona
fidoid
grimreaper
itsAMe
karamba_i2p
mauzer
onon
overflow
poriori
profetikla
qend
r00tobo
soos
teeth
tensor_
typhoon
uis
un
weko
whothefuckami
колдобина
колдырь
R4SAS перевели на чешский
orignal лол что?
orignal когда уже на польский ))
R4SAS так надо черного бибизяна спрашивать когда он сядет за это дело
orignal он будет доказывать что он не поляк ))
Vort orignal: или я нашёл ещё один симптом бага в учёте коннектов или что-то не до конца понимаю
Vort вот есть в веб-интерфейсе вкладка I2P tunnels, там можно посмотреть информацию по конкретным туннелям
Vort в разделах Inbound tunnels и Outbound tunnels есть строчки вида gUeN ⇒ 3621763460:me и 2452322363:me ⇒ qy-y
Vort правильно ли я понимаю, что если вот это qy-y стрелкой связано с :me, то этот идентификатор должен находиться во вкладке Transports?
Vort дело в том, что для некоторых туннелей соответствующего коннекта в Transports не находится
` спалил бэкдор /соргазм
` интересный факт. на сером айти флудфилофф было ~2/3 от всех роутерофф, а на расистском их "всеголишь" ~1/3 от всех роутерофф.
` на сером айпи*
orignal нет не обязталеьно
orignal тоннели живут дольше чем соединения
Vort через что тогда по туннелю данные идут, если соединение уже закрыто?
was по туннелю не обязательно идут данные
Vort то есть, если туннель связан с несуществующим соединением, то через него не должны идти данные?
orignal откроется снова
orignal есть тоннель данные не идут соединение сдохнет
orignal тоннель останется
Vort буду проверять значит
orignal данные пойдут соединение установится заново
Vort нашёл пример аж с двумя туннелями - expiring и established. данные идут, соединения "нету"
orignal значит дропаются
orignal если нет соединеняия скоро станет failed
orignal кстати имей ввиду что соединение может быть в другом направлении
Vort да нормально себя туннель чувствует. зелёный, килобайты ползут
Vort направления два - ко мне и от меня?
` в ш2зв однонаправленные коннекты
` ш2з*
Vort ⇒ 5zKj ⇒ 4135453268:me ( 62ms ) established, 64 KiB
orignal должно быть соединение
Vort значит ли это что где-то в Transports должно быть ⇒ 5zKj: ?
Vort ну вот. нету
orignal обязательно
Vort говорю же, на баг очень похоже
` Оладья, грустненько. Час назад было 2к транзитофф, а теперь 1к. А как же, а как же экстраполяция...)00 u_u
orignal это вопрос интересный
orignal получается что сессия есть в в Transports и ее нет в списке NTCP2 или SSU2
orignal и это сильно нехорошая бага
orignal в Transports есть список Peers
Vort есть туннель в I2P tunnels, нет коннекта в Transports по всем трём категориям (NTCP2, NTCP2v6, SSU2)
orignal я не про то
Vort про внутренности?
orignal если ты посмотришь Transports.cpp
Vort внутреннее представление. ок
orignal там есть такая структура как список Peer
orignal в каждом из которой есть ссылки на сессии
orignal значит для работы оно находим там
` Vort, у тебя IPv4+IPv6?
Vort у меня +ygg
Vort реальный ipv6 вырублен
orignal это неважно
orignal кстати похоже это источник твоего наблбдения что соединений больше чем показывает
Vort тоже так думаю
orignal а раз ты видишь соединекния
` квантовое соединение..
orignal значит это NTCP2
Vort если словить одну багу, станет понятно, как поживает другая )
Vort точнее, станет видно, одна она или две
orignal осталось понять как это получается
Vort то, что я не вижу UDP, не значит, что с ними нет такой же фигни
orignal разумеется
Vort но проще ловить то, что видно
orignal но искать начитнать можно с NTCP2
` теория темных соединений
` из-за них ш2з всё ещё не схлопнулось (/флуддофф)
Vort (у меня второй i2pd не запускается, поэтому просто даю идею) можно сделать функцию, которая сверяет коннекты из двух источникрв. если находит расхождение - вываливается в отладчик
Vort так можно будет оценить воспроизводимость проблемы
Vort но мне кажется, что оно относительно быстро вылазит
Vort однако не сразу
Vort `: кстати, такое бывает - нормальная работа софта зависит от бага, баг прихлопывают - софт ещё больше начинает плющить )
Vort `: совсем не значит, что тут такое, но помнить об этом надо
orignal ясное дело что можно
orignal кстати возможно опять же тут утекает память
Vort для начала надо воспроизвести у кого-то ещё кроме меня
Vort чтобы исключить какие-то особенности моей конфигурации
Vort (расхождение по числу коннектов уже было подтверждено, а вот расхождение туннели-коннекты - ещё нет)
` Когда у меня было пара десяткофф транспортофф - я бы мог почекать. А сейчас за тыщу..
Vort 1. я не вручную ищу, а поиском браузера 2. они отсортированы
orignal даже если просто у тебя то с чего вдуг?
weko Могу проверить, чуть позже. Вроде как я даже однажды проверял, и не находил. Но позже проверю ещё
` пока протыкаю все туннели - они уже переродятся полностью
orignal данные идут а сеодинения в списке нет
` А хотя...
orignal то чего не должно быть ни в какой конфигурации
Vort orignal: у меня высокая нагрузка сети, оперативки, процессора - это хорошая почва для проявления гонок
orignal понятное дело что из-за них
orignal но вот этого как раз и не должно быть
Vort `: по-моему эти страницы не автообновляются. так что можно открыть и спокойно изучать
` Ну я прочекал пару десяткофф (не обновляя страницы, да), не попалось. Прочекать всё уже обломался.
` не попалось - в смысле всё нашлось и там и сям
Vort по поводу частоты возникновения - на 12 туннелей 2 штуки таких проблемных
Vort аптайм узла - 2 дня
orignal void Transports::HandlePeerCleanupTimer (const boost::system::error_code& ecode)
orignal вот тут надо добавить печать и проверку
Vort кажется мне, что m_PeersMutex может стоять не везде, где надо
Vort много вижу блоков при изменении
Vort а чтения не закрыты...
orignal возможно
orignal ты ж сам понимаешь
orignal я его ставил когда падало )))
Vort получается, что во многих случаях есть защита от коллизии запись-запись, но коллизия чтение-запись - тоже ничего хорошего
Vort может чтения с записью тут и не дерутся, чтобы понять, надо углубляться в код
orignal что я собираюсь сделать
Vort ок
orignal еще что скажу
orignal наблюдение
orignal на чистом SSU2 память не утекает
R4SAS orignal: видал последние иссуи на гх?
orignal еще нет
orignal все написал
` У меня ш2зв роутер настолько был шокирован впервые сгенерировать 16мбИт/сек исходящего трафика, что аж выронил из рук туташний туннель)00
orignal так ты лимитируй
` bandwidth с икса убрал, да. Сейчас не гигабитный тырнет, и машина "не целевая".
` Я забыл как работает "share = 100".
` Представление есть, но такое, "витиеватое".
` Если у меня роутер будет способен выжать больше чем указано в bandwith.
` И если меньше чем.
` Если роутер будет способен выжать 1мбайт/сек, на который в условный момент времени приходится транзит на 100%, согласно "share", а bandwidth стоит с предустановкой .
` То.. когда мне потребуется в личное пользование этот 1мбайт/сек, то я обломаюсь, потому что "share" стоит на 100, а потенциальная роутера не превышает заложенную скорость в bandwidth. Да?
` тьфу энтернул раньше сроку
` Blinded message
` То есть, если будет транзит, который выжрет весь трафик.
` А роутер не сможет выдать на
` этот момент больше чем заложено в bandwidth
orignal неее
orignal на твой собтсвенный трафик bandwidth не влияет
orignal но ты можешь упереться в предел пропускной способности сети
` Я не понимаю, что делает "share".
` Я вижу в доках:
` Max % of bandwidth limit for transit. 0-100. 100 by default
` Но на деревенском не улавливаю его сути.
` Если 100, а если, как пример, 50%.
weko Коротко: от чего процент?
orignal от общего трафика
orignal чтобы транзит не забивал всю полосу
` Это-то я так и понимаю, на словах. Я бы так и сказал кому-то другому (и говорил).
orignal я уже точно не помню
R4SAS orignal: еще такой был: github.com/PurpleI2P/i2pd/issues/1821
R4SAS orignal: а насчет логера и ошибки про nofile
orignal да это плаз выебнулся
R4SAS надо как то делать ограничение соединений при достижении лимита
orignal для начала надо научиться их считать а это непросто
orignal потому что есть еще таймера
R4SAS да уже одного сообщения в логе достаточно
R4SAS просто делать переключатель с таймером на обратное действие хотя бы
orignal ну не сообщения а эксепшина
orignal ну и что ты будешь дальше делать?
orignal рубить NTCP2 сессии?
R4SAS ловим ошибку, делаем какой то флаг внутри RouterContext
orignal и переключать на SSU2?
orignal да это вариант
orignal zzz так вроде и делает
R4SAS точнее так: при выводе этого эксепшена вызываем функцию которая
R4SAS 1. ставит флаг недостатка nofile в RouterContext
R4SAS 2. останавливает транзит, если он был включен
orignal по поводу 2 майор только этого и ждет ))
R4SAS 3. запускает таймер, например на 3 минуты, который снимет флаг и включет транзит обратно если он был
orignal мой вариант лучше
orignal резать NTCP2 и замешать SSU2
R4SAS ну а как ты в процессе поменяешь сессию с ntcp2 на ssu2?
orignal прибью
R4SAS ну тогда так
orignal потом по этому флагу пересоздастя уже SSU2
R4SAS а в том месте, где срет в лог, смотреть на наличие того флага
orignal у меня есть еще лучше идея
R4SAS и не печатать сообщение просто
orignal посколько у нас теперь есть профили приоритетов
R4SAS тогда и флаг использовать при коннектах на ntcp2
orignal то делать не 50/50 а от числа дескриторов
R4SAS ну, можно
orignal если 1024 то 20/80 например
R4SAS только это исходящие
orignal если 4096 и выше то 50/50
R4SAS а ты учитывай что может быть ситуация когда и входящие засирают
orignal может
orignal но их же примерно поровну
R4SAS нифига
R4SAS как ты говоришь, майор только этого и ждет
` только и жду, да)00
orignal я гвоорю что майор мечтает отключить транзит у тебя ))
orignal чтобы четко выделить твой трафик
` куда больше мечтаю включить, хотя бы у себя u_u /оффтоп
orignal майор внешний
orignal если сделать как предлагает R4SAS то майор просто забет порт соединениями
orignal и отключит транзит
R4SAS так и в твоем случае тоже зафлудят
R4SAS ибо этот приоритет для исходящих только
R4SAS тогда лучше просто ставить флаг, и при его наличии не принимать новые сессии на ntcp2
R4SAS но, как и говорю, все равно с таймером надо
R4SAS чтобы обратно отлипать его
orignal это другое дело
orignal но давай начнем с простого сделаем 20/80
R4SAS но чуваку офигеть как насыпало там )))
R4SAS 1.2 Тб
orignal надо где то это написать больгими буквами
R4SAS все равно ни кто не прочитает
R4SAS это писать надо напротив limit.transittunnels
` что написать? что нужно выключать логи? (по ссылке не ходил(
R4SAS или как там его
orignal ulimit -n 4096
R4SAS я думаю надо в сервисе лимит поднять до 8К
orignal не надо
orignal SSU2 не жрет дескрипторы вообще
R4SAS надо
orignal нахуя?
R4SAS в иссууе смотри на пути
orignal 8K только если флудфил
R4SAS du -sh /var/log/i2pd/*
R4SAS это значит что работает с сервиса
R4SAS значит там уже лимит 4к
orignal ну x3 как он
orignal тогда да
acetone Сегодня снова смотрел 480p через аутпрокси со смартфона. Пара-тройка коротких затыков за 1,5часа просмотра. Туннели 1-1 с обеих сторон
orignal неплохо
` *** пытается вспомнить какой битрейт у 480р ***
orignal по мере выпиливания SSU будет становить все лучше
` у тытруба это 665 кбИт/сек, ну хз, ещё и через аутпрокси
` 646*
` А, лол, это у 360р
weko а 480 скок
` смотря уже какая кодироффка, тытруб может выдавать mp4 и webm. Видосик в mp4 занимает тыщу с копейками (точно сейчас уже не помню), а webm чуть больше семисот. И это ещё без учёта аудио, которое может быть
` как на ~50кбит, так и на 120кбит.
` *Видосик в 480p в mp4
weko ну стабильные даже 700 это очень круто
Vort хорошо, что YouTube не так злобно банит прокси, как Google поиск
` Точнее смогу сказать только насчёт webm, потому что собираю информацию о [пере]кодировке в ентот формат.
R4SAS orignal: ч.т.д.
R4SAS так что 4к недостаточно
weko что тогда делать?
orignal я тебе сказал что
orignal надо чтобы было достаточно ))
orignal потому что выше 4K ты так просто не поднимешь
orignal без изменения системных настроек
R4SAS если сервис - спокойно меняется
R4SAS без сервиса - да
orignal а ну да рутовый конечно
orignal ставь 8192 тогда
R4SAS я знаю как примерно написать, сейчас попробую
` Вопрос. Что если я "передумал" фрасефулл шатдаун, но таймер уже запущен?
` )00
weko должна быть кнопка остановить
weko у меня есть во всяком случае
` weko, она есть?
weko да
` А, лол.
` У меня кЭш не обновился - не видел.
` посибо
R4SAS orignal: HandleAccept в какой момент вызывается? при подключении извне?
orignal R4SAS ты там не трогай
orignal я закоммичу через пару часов
orignal вызывается как коллбык от acync_accept
R4SAS я такое сделать предлагаю для предотвращения флуда
orignal погоди мне счас некогда
orignal говорю же пока не трогай там
R4SAS посмотри, потом скажешь
orignal я посмотрел
orignal дай я тогда закоммичу
R4SAS не торопись
weko почему исходящий трафик со всех стримов идёт по одному туннелю, а не по нескольким?
orignal забирай
orignal вот там где я оставил TODO там и надо делать
zzz working on ulimit problems?
orignal weko на один и тот же адрес?
orignal zzz, yes
orignal *** ушел ***
zzz (((
weko orignal: на разных не смотрел. имеет значение?
weko окей, понял
weko спасибо
orignal zzz, we know it's complicated issue
orignal если к одному то должно идти через один и тот же
orignal иначе RTT будет глюучить
zzz I can contribute some from our error message and startup script
R4SAS zzz: we have a limit increased to 4096, but sometimes this is not enough, so more and more people reach it
zzz here's the function in our startup script that raises it, if you don't have something like it:
zzz the other thing you can do is prefer SSU2 if your NTCP2 connection count gets too high or you hit the ulimit
R4SAS we increase limits via systemd service
zzz interesting
R4SAS about preferring SSU2 - the original wants to do the same, but I think that this will not help if the number of incoming requests increases
R4SAS this preference only matters for outgoing connections, as I understand it
zzz sure, but you can also change your transport cost to indicate preferred transport
zzz ultimately, though, you need to implement connection limits
zzz even for class X on linux we limit NTCP2 to 1500 max connections
zzz other things you can do if you have too many connections:
zzz - reduce idle timeout
zzz - reject or drop tunnel build requests for ibgw/obep
zzz - drop tunnel build request if next hop is not connected
zzz - drop inbound session requests
R4SAS I prefer just to reject new incoming connections to NTCP2 and changing preference for outgoing
zzz sure, but rejecting/dropping inbound conns isn't very nice...
zzz the goal is not to stay _at_ the limit, but to stay _below_ it
zzz so we have a variety of things we do at 80, 85, 90, 95% of the limit, to try to stay below it
R4SAS I thing orignal want to same thing
zzz FYI, we treat a NTCP cost > 10 or a SSU cost > 5 as "not preferred"
orignal the problem is that i2pd ignores cost
orignal R4SAS так надо же таймер еще
orignal чтобы снова ацептор поднять
orignal у тебя будет постоянно в то место вываливаться
orignal и тред все время проц жроать
zzz true, but at least java routers will pay attention :)
orignal my idea is to stop publishing NTCP2 addreses
zzz the problem is, high number of connections can be a short-term problem. Changing cost or stopping publishing won't help for minutes or hours
R4SAS orignal: я пока что только сделал так, чтобы сообщение не засирало
R4SAS т.е. будет раз в минуту варн вылезать
orignal я понимаю что ты сделал
orignal но так неправильно
orignal потому что у тебя тред будет 100% проца жрать
R4SAS знаешь еще чего
orignal я же уже начал делать там где TODO осталось добавить таймер
orignal ты лучше скажи откатить этот коммит можно?
R4SAS лишь бы не случилась ситуация что мы запускаем таймер, а он не запустится, ибо некуда )))
orignal так оно и будет
orignal потому я этот вопрос еще не продумал
R4SAS а зачем отказывать? скопируй свои правки, подтяни с репы
orignal так хуйня потому что получилоась
orignal у меня была получше идея ацептор занулять
R4SAS ну так зануляй там же
orignal ну так а что с твоим коммпитом делать? затереть просто?
orignal он совсем там не в тему
R4SAS откатывай
orignal на гитабе это вообще можно?
orignal я лучше поверх перепишу
R4SAS делай так: напиши у себя
R4SAS потом сделай локлаьно коммит
R4SAS git pull --rebase
R4SAS если не применит, то напишет о ошибке
R4SAS в этом случае идешь снова в файл и подгоняешь как тебе надо
R4SAS git add ...
R4SAS git rebase --continue
orignal да я просто поверх перешишу и все
R4SAS и всё
R4SAS ок
orignal все закоммитил
orignal короче я пытаюсь поднять аценторы после очистки сессий
R4SAS т.е это сколько минут?
orignal 30 секунд
orignal но логика тут такая
orignal какие то сессий очистятся и дескрипторы освободятся
tst при перестроении тунелей дескрипторы не очищаются?
orignal а какое отношение имеют дескрипторы к тоннелям?
orignal тоннели не создают дескрипторы
orignal это просто слой шифрования
tst сессии строястя поверх тунелей или нет?
orignal ой все
tst про очистку нетдб: рандомизировать пропинг хранимиых "мертвых" узлов. 1) узел имеет 3 степени некроза (возможно мертв, скорее всего мертв, точно мертв); 2) узел будучи живым в пред.сессию пингуется
tst первые 2 раза с интервалом в rnd(10) мин, если оффлайн +1 к степени некроза; 3) узел с первой степенью некроза пингуется раз в 30+rnd(30) мин, если оффлайн +1 к степени некроза; 4) 2-я степень пинг раз в 240+rnd(30) мин;
tst 5) 3-я степень пинг раз в 24*2*60+rnd(120), если оффлайн - удаление из netDB.
tst про доп.функции: не увлекайтесь разработкой сбора метаданных коннектов, майору это в +
orignal у нас сделано точно также как в джаве
Vort запретить публикацию доступной информации невозможно
Vort можно только порекомендовать так не делать
Vort кстати, по поводу такой рекомендации - она хоть где-то записана? когда с Tor разбирался, то точно что-то такое было
Vort а с i2p или не заметил/пропустил или не было
Vort допустим, понадобится сделать issue про соединения-призраки (или не понадобится). как показать, что соединение не находится? выложить список всех соединений с их IP, чтобы было видно, что нужного тут нет? :) вроде неправильный ответ. но к
Vort ак тогда?
orignal Vort кажется я нашел проблему
orignal с разными транспортами