IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2024/03/11
~AreEnn
~R4SAS
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Guest18377
HackerMan
KabaOS
Most2
Nausicaa
Ruskoye_911
Trusishka
Vort
`
acetone_
anon3
b3t4f4c3
mittwerk
nemiga
not_bob_afk
plap
poriori_
profetikla
segfault
soos
teeth
tensor
un
weko_
whothefuckami
Vort orignal: речь о патче, касающемся очереди (2d06c0cb)? у меня узел с ним работает нормально. но как этот механизм себя поведёт в экзотических конфигурациях - не знаю. если не видишь возможностей как-то особо плохо ему сломаться, то можно и влит
Vort если побольше народу его протестируют и проблем не обнаружат (скорее всего, уже с релизной версией), можно будет и для NTCP2 сделать подобное
Vort в общем, я сделаю PR, дальше посмотрим
tetrimer Network status: Unknown (Testing) - Symmetric NAT
tetrimer Router Caps: OR
tetrimer Есть ли надежда, что это будет когда нибудь починено?
Vort ну теоретически понятно, что именно надо делать. только вот никто не хочет этим заняться
tetrimer Может быть имеет смысл сделать в конфиге переменную nat true, чтобы отключить все попытки вылезти наружу.
Vort баг надо чинить
Vort а не "заметать мусор под ковёр"
tetrimer Так он при запуске,т.е. обычный race condition
Vort не думаю
Vort это так совпало
tetrimer Дальше все встает на свои места, но теряем время на тесты, а что еще хуже - анонсим внешний адрес.
tetrimer Не совпало: оно регулярно так себя ведет.
Vort может, новый баг какой-то?
Vort регулярно - это с каким шансом воспроизведения?
tetrimer Я уже давно об этом пишу. Просто никто не читает. :(
Vort давняя проблема она к запуску не привязана
Vort и вылазит произвольно
Vort если какая-то проблема вылазит на запуске - то, скорее, что-то новое
tetrimer На этой машине - когда перезапускаюсь, так каждый раз - такая вот фигня. Может из-за того, что тесты долго идут.
Vort а выключение узла нормально проходит?
tetrimer Внешне - нормально. Т.е. даю gracefull shutdown - оно и гаснет сразу.
Vort graceful и сразу? должно же быть наоборот
tetrimer Если транзитных туннелей - по нулям: гаснет сразу.
Vort а, понял
tetrimer Это везде так.
tetrimer Но под фрей - оно долго там чем-то внутри себя перебирает, как и при запуске. А под линуксом - все быстро происходит.
Vort потестирую сейчас в виртуалке
Vort там как раз Symmetric NAT, если я правильно помню
tetrimer Надо как-то тесты затормозить.
Vort не надо
tetrimer При быстрых тестах - не видно будет.
Vort а из-за чего они могут быть медленные?
tetrimer Т.е. баг в том, что не зная, кто мы и где мы - устанавливается состояние R
Vort такого быть не должно
tetrimer Ну, фиг знает, там канал может быть чем-то другим подзабит.
Vort хоть медленно, хоть нет
tetrimer Не может же nat в обратную сторону пропускать пакеты.
tetrimer Или может, если у него таймаут соединения не вышел?
Vort может пропускать, в этом и суть бага
tetrimer Вот это, кстати, надо будет вечерком проверить.
Vort ну одного из багов
Vort но там ОК кстати ставился
Vort а тут Unknown
Vort короч может быть другой баг
tetrimer "У нас багов - на сто лет вперёд припасено". :)
tetrimer Это, скорее, беда протокола. Я уже где-то видел такое, когда демона погасили, а поток пакетов снаружи на его порт - продолжает идти.
Vort с 3го раза у меня в виртуалке баг воспроизвёлся
Vort Network status: Unknown - Symmetric NAT
tetrimer Не, у меня после пропадания testing - внешний адрес пропадает и "Router Caps: OU" сразу.
tetrimer Надо проверить рестарт со сменой router.info, чтобы старые сессии nat не накладывались.
Vort второй раз воспроизвелось с 8 раза
Vort и уже с Testing
Vort тупой баг какой-то
tetrimer Время жизни сессии nat по-умолчанию - порядка 10 минут. А в пластиковой мыльнице - вообще ненормируемо.
Vort не в том дело
tetrimer Т.е. мы, при перезапуске, получается попадаем тестом по старым сессиям.
Vort это разные баги, говорю же
Vort я сейчас вообще без сети попробую
Vort tetrimer: даже при отключенном сетевом адаптере OR ставится
tetrimer Хмм, ну вот тут - да, баг.
tetrimer Скорее - инициализация переменной неверная.
orignal смержил
Vort окей. теперь нужно тестирование. то, что изменение хорошо работает у меня, значит мало
tetrimer Я сейчас пересоберу у себя.
Vort orignal: глянь пожалуйста проблему, которую tetrimer обнаружил. там что-то простое
Vort мой результат: "даже при отключенном сетевом адаптере OR ставится"
orignal в какой ситуации?
orignal я еще не проснулся )))
tetrimer При запуске.
orignal при первом?
Vort выключаю U узел
Vort включаю с выключенной сетью - получаю R узел
orignal там PR про какой то тестовый режим для ios
orignal это что за ахинея?
Vort orignal: если ничего не ломает, то влить - да и хрен с ним
orignal так по моему его проблему надо чинить как то иначе
Vort там ОС хернёй занимается
Vort по-моему, иначе - это не делать разной структуры папок netDb в линуксах и винде
Vort тогда и эта проблема уйдёт
Vort i2pd сделал хитрость, маковый эмулятор сделал хитрость - и эти две хитрости вошли в конфликт
orignal да для макоси это еще мех делал
orignal мне не нравится вот это
orignal #include <TargetConditionals.h>
Vort это для #ifdef TARGET_OS_SIMULATOR скорее всего
Vort чтобы отличить симуляцию от не симуляции
Vort короч для обычных сборок эта вся конструкция не должна иметь никакого эффекта
Vort это OS_SIMULATOR просто хитровыделанный
Vort и ему нужен хак
Vort альтернатива - переделывать структуру netDb
orignal #if defined(MAC_OSX)
orignal вот это меня беспокоит
Vort так в других ОС этого хедера нету
Vort я ссылку на какую-то старую версию дал, но не суть
Vort нет там никакой rocket science
orignal так а обычную макось оно не поломает?
orignal я написал ему комменатрий
Vort а зачем такой вопрос задавать если я уже пояснил суть?
orignal так а зачем там ios пол обычной макосью?
Vort я так понимаю, в этом и есть смысл симулятора
Vort и вообще он уже ответил: "This is specific only to simulator. iOS/macOS are ok."
orignal так пусть и сделает тогда только для симулятора
Vort так в хедере макоси задаётся, для симулятора сборка или нет
Vort короч как я понимаю, для "iOS/macOS" TARGET_OS_SIMULATOR будет определён как 0
orignal а ну понял
orignal счас лобавлю
Vort orignal: там другой баг, похоже
orignal где там?
Vort в PR для симулятора
Vort #define в 0 - это всё равно define
orignal ну короче что с ним делать? отклонить?
Vort там не #ifdef надо, а #if
orignal естественно
Vort да я напишу ему
Vort но чуть позже
orignal тогда напищши комментарий
Vort отойти надо
orignal да не торопись
Vort написал
Vort ещё и на твой коммент ответил, чтобы не путать автора PR
orignal нормально
Vort можешь что-то сказать по проблеме R флага при старте U узла?
Vort у меня подозрение, что это какая-то недавняя бага
orignal так я спросил при первом старте или просто старте
Vort так я же ответил - при перезапуске
Vort выключаем было U, включаем - вылазит R
Vort когда тест пройдёт - то обычно U возвращается
Vort но лучше чтобы бы такого "мигания" не было
orignal понял
orignal гляну
orignal но вопрос а не пох если мы не в сети?
tetrimer ~orignal: Я похожее поведение в сети за натом наблюдаю. Собственно, с чего это обсуждение сегодня и началось.
orignal ты же сказал что это когда сети нет
orignal или все таки сеть есть?
tetrimer Vort: 2.50.2-149 - у меня уже час работает на флудфиле. Каких-то существенных отклонений - не замечено.
Vort orignal: когда сети нету, эту проблему проще всего обнаружить, так как R статус стоит и не уходит
Vort то есть, это важно исключительно для воспроизводимости
tetrimer За сегодня (147 и 149 билды) вроде чуть повыше и ровнее график TransitSpeed.
orignal ну то есть проблема что при запуске всегда переходит в R?
Vort да
tetrimer Я бы сказал "начинает с R".
Vort а начинать должно с содержимого RI
Vort а там U
orignal только при запуске или при каждом тесте?
Vort сейчас запущу ВМ, потыкаю
orignal если только при старте то смотреть что в RouterContext::Load
Vort только при старте
Vort ещё и RI сразу же меняется на диске
Vort даже без подключения к сети
tetrimer Есть, оказывается, "bool nat;", вот только в принятии решения публиковать адрес или нет - она не работает (или не используется).
Vort это при создании нового RI
Vort а должен загрузиться старый
tetrimer Как я понял, новый файл router.info создается при условии, если нет старого или формат не понравился.
Vort "// we assume reachable until we discover firewall through peer tests"
Vort не в этом ли проблема?
Vort надо знать, зачем было так сделано
tetrimer Меня смущает if (IsUnreachable ()) вместо routerInfo.IsUnreachable () - так и должно быть?
Vort да на терминологию лучше не смотреть )
Vort там внутри RouterContext::IsUnreachable есть return m_RouterInfo....
Vort так что дело не в этом
Vort вопрос в том, зачем вообще понадобилось ставить R когда U. это сделано специально, непонятно только, почему
orignal в какой строчке?
Vort 1096 или около того
orignal думаю это какой то страый код
Vort может, это старые интродьюсеры так через задницу сбрасывались?
orignal не исключено
orignal но это определенно не недавние измнения
Vort 9 лет назад эти строчки были добавлены: github.com/PurpleI2P/i2pd/commit/513dc2fcc5935913ffe1c5607388c008c9c3b995
orignal ну я и говорю давным давно
Vort да идею я и так примерно понял, только я по-прежнему считаю, что размер очереди количеством сообщений ограничивать не стоит
onon Вариант с таймаутом интересный, но в релиз такое пускать нельзя. Оно нам потом ещё аукнется, когда будем пытаться сделать нормальный congestion control
onon Лось, скажи ему чтобы послушал старого сисадмина.
orignal Vort я думаю таки надо
orignal ничего не должно быть неограниченным
orignal пусть этот лимит будет большим но он должен быть
Vort ограничение есть, но не по количеству
orignal а не может быть совсем резкий скачок?
onon1 Vort, почему циски так не делают на своих маршрутизаторах?
Vort "нормальный congestion control", как я понял, должен основываться на измерениях RTT. ну так ничего и не мешает его измерять
onon1 Он основывается на проценте потерянных пакетов.
Vort orignal: глюки от упора CPU в ядро начнутся раньше, чем какой либо скачок сможет сожрать RAM. пока что ни теорией, ни практикой такой сценарий доказать не получилось
Vort я не считаю, что этот метод идеальный. но временно его должно хватить
orignal возможно
onon1 Ну вы даёте...
Vort "CUBIC (red) fills the available buffer, then cycles from 70 to 100 percent full every few seconds. After startup, BBR (green) runs with essentially no queue."
Vort вот и пусть "runs with essentially no queue"
Vort если его кто-то всё же реализует
Vort "<onon1> Vort, почему циски так не делают на своих маршрутизаторах?" предполагаю особенности оптимизации под железо и большие скорости
Vort также у них более чёткие условия работы - нет нагромождения различных, часто неизвестных, протоколов
orignal на цисках мало ресурсов
Vort кстати, по поводу ограничения количеством - оно же было (и есть для NTCP2) отдельно для каждой транспортной сессии. то есть, если постараться найти много тормозных узлов, то можно понемножку добить до лимита все их очереди
Vort допустим, 1000 узлов умножить на 500 сообщений (~500кб) - будет 500 мегов
Vort а ещё тормозные узлы самому создать можно...
orignal для NTCP2 думаю тоже надо переделать
tetrimer Перегрузился с заменой router.info - сразу получил статус Firewalled и никаких внешних адресов.
tetrimer Перегрузился с заменой router.info - сразу получил статус Firewalled и никаких внешних адресов.
tetrimer Перегрузился с заменой router.info - сразу получил статус Firewalled и никаких внешних адресов.
Vort так вроде же понятно, какое место в коде даёт установку R флага
Vort tetrimer: сообщение уже 3 раза дошло
Vort глюки какие-то?
tetrimer У меня - перестало отображаться.
tetrimer Пришлось переконнекчиваться с выходом.
tetrimer Прошу прощения
Vort знакомо - гоняю один баг, попадаю на другой :)
Vort <Vort> так вроде же понятно, какое место в коде даёт установку R флага
Vort то есть, проблема понятна, непонятно, как её решать
tetrimer Это я хотел убедиться в том, что смена порта - гарантирует нас от старых сессий через nat.
Vort это, конечно, можно, но суть была не в том - R вылазит вообще без доступа к сети
Vort просто потому, что так сейчас код i2pd сделан
tetrimer Это понятно, но даже если в этом месте будет поправлено - пир тест может ошибочно определить, что у нас есть внешний адрес.
orignal мопед не мой я только объяву повесил )))
orignal ну насчет этого пир теста даже понятно как рещать
orignal надо сохранять спсиок последних ендпойтов
Vort <Vort> ну теоретически понятно, что именно надо делать. только вот никто не хочет этим заняться
orignal я хочу но времени нет
tetrimer Времени - никогда нет. :(
orignal ну у меня сколько то есть
orignal только на все не хватает
Vort orignal: автор PR #2037 исправил код (поменял #ifdef на #if). что-то ещё там осталось или уже можно вливать?
orignal можно вливать я думаю
orignal если по макосью не соберется от откачу
Vort я помню, у меня сборка от Github Actions как раз на макоси и глючила, сама по себе
Vort а, ну вот, опять
Vort orignal: её надо передёрнуть, возможно несколько раз
Vort там до сборки кода не доходит
Vort знаешь же, где тыкать?
orignal неее. не знаю
orignal надо R4SAS -а ждать
orignal ну у меня своя макось есть
Vort вот там вверху кнопка Re-run all jobs
Vort должна быть. у меня нету, конечно )
orignal нажал
Vort надо, конечно, по-нормальному починить, но это уже R4SAS надо просить, да
orignal ладно ждем
orignal порядок
orignal смержил
Vort хорошо
orignal что то на роутере на чистом SSU2 рейт стал сильно низкий
orignal а нет это просто опять атака
orignal Transit Tunnels: 75481