~AreEnn
~R4SAS
~acetone
~orignal
~villain
&N00B
+relaybot
Most2
Nausicaa
Vort
Xeha
anon2
b3t4f4c3
guest
karamba_i2p
nemiga
not_bob_afk
poriori_
profetikla
soos
un
weko
whothefuckami_
НАТАШКА
R4SAS
перевели на чешский
orignal
лол что?
orignal
когда уже на польский ))
R4SAS
так надо черного бибизяна спрашивать когда он сядет за это дело
orignal
он будет доказывать что он не поляк ))
R4SAS
)))
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
:D
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: ч.т.д.
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: на разных не смотрел. имеет значение?
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
github.com/i2p/i2p.i2p/blob/01618c620289d1c08435cb41e87a2616234bf6af/installer/resources/i2prouter#L1897
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
ну так а что с твоим коммпитом делать? затереть просто?
R4SAS
после этой строки: github.com/PurpleI2P/i2pd/blob/openssl/libi2pd/NTCP2.cpp#L1433
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
с разными транспортами