~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
вот версия новее: github.com/xybp888/iOS-SDKs/blob/6d733d8ec34d59a9b13d8e374b199bd3a6630a39/iPhoneOS13.0.sdk/usr/include/TargetConditionals.h#L64-L74
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
ну я и говорю давным давно
onon
Vort, надо как-то так делать: paste.i2pd.xyz/?38f7cafc24357b79#C8wTzrWcPiw9S2auQwvgCxwosbsDdi6rhXLWxJ9KG5Tk
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