IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2024/03/13
~R4SAS
~orignal
~villain
@onon
&N00B
+Xeha
+r00tobo
+relaybot
+whothefuckami
AreEnn
HackerMan
Leastr
Most2
Nausicaa
Vort
WayBest
`
acetone
anon2
b3t4f4c3
flumental
karamba_i2p
nemiga
newbie8sep24
not_bob
osoznayka
poriori
profetikla
segfault
soos
teeth
tolik
un
unwr
weko
orignal not us
not_bob Ok, cool. Thank you.
onon orignal, тут?
orignal нет
onon Ну ладно, раз его нет, буду сам искать.
orignal че хотел?
onon Можешь коротко описать схему подключения к U узлу, если я R узел.
onon Через кого и как
orignal у U узла будут поля ih и itag
orignal по ih находим в netdb этот роутер цепляемся к нему
orignal шлем ему RelayRequest с этим itag
orignal он находит по этому itag-у сессию и кидает в нее RelayIntro с твоим IP и портом
orignal тот отправляет ответ RelayResponse а на твой адрес сообщение HolePunch
orignal как только ты получил ответ и/или HolePunch ты устанавливаешь с ним соединение
orignal потому что там приходит его IP и порт
onon ih это кто? он всегда одинаковый для этого роутера?
orignal это base64 адрес роутера интродьюсера
orignal обычно их публикуется 3 разных у U роутера
onon Они рандомные?
orignal это уже отдельный вопрос
orignal U ротуер выбираеет их из существующих сесиий с роутерами которые согласны быть интродьюсерами
onon А бывают несогласные?
orignal бывают
onon Надо чтобы не бывало
orignal это в caps SSU2 адреса публикуется
orignal если ты сам U ты можешь быть интродьюсером
onon Это странно.
onon Неправильная логика.
orignal согластие же быть интродьюсером выражается в ответ itag-ом если таковой запрошен
orignal *не можешь
orignal если ты U то у тебя в caps этого флага нет
onon Ага
orignal я все забываю кто есть кто
orignal то ли B то ли C
onon Это как-то включается в настройках, быть интродьюсером, или по умолчанию включен?
orignal в i2pd включен всегда когда может
orignal можно такую настройку добавить
orignal в секцию ssu2
onon Я примерно понял, есть идеи как улучшить этот механизм.
onon Могу сейчас накидать, могу завтра.
orignal первое что надо переделать
orignal если не удалось с одним итродьюсером то пробовать другую а мы этого не делаем
onon А слать сразу трём не вариант?
onon С одним ид, ответит на первый пришедший а дубли дропнет.
orignal не знаю
onon И вообще, должно быть так: твой интродьюсер - это несколько (7) самых бизких (или дальних) к твоему base64. Если кто-то хочет к тебе подключиться, ищет у себя в нетдб ближайщий (или дальний) роутер и пробует.
onon В ответ получает или коннект или список ещё более близких или дальних роутеров.
onon И ты сам, регулярно проверяешь у себя в нетдб более подходящие роутеры и перезжаешь.
onon Ещё пиртест у нас как-то очень странно устроен...
onon Должно хватать трёх запросов к разным узлам, ответили тебе одинаковой парой ип:порт - значит доступен. Если разные, ставим U.
onon Зачем нам определять тип ната, если мы не пытаемся коннектить U узлы между собой.
orignal у нас наоброт
orignal потому что сообщения могут теряться
onon Ну отправь ещё к другому запрос.
orignal и сколько отправлять?
onon Пока не определил, за натом ты или нет
orignal реально firewalled или просто пир тест не пришел?
orignal ну не пришел пир тест 5
onon Через промежутки времени слать
orignal это firewalled или потрелялся?
onon Я про простую схему с одним запросом.
Vort "<onon> ... Пакеты остальных пользователей встают в конец очереди и дропаются через некоторое время." нет, не так. во-первых, дроп сейчас с начала очереди, а не с конца, дропается старьё
Vort во-вторых, шанс дропа пропорционален скоростям узлов. если пришёл быстрый узел и занял 90% канала, то и дроп его данных будет с 90% шансом
Vort так как вероятность устаревания данных в очереди не зависит от того, кто эти данные в очередь поставил
Vort единственное, что может быть плохо - это дропы данных блоками. но разве кто-то проводил эксперименты и обнаруживал, что они таки блоками дропаются?
Vort совсем не факт. если данные льются ровно, не блоками, то и дропаться они будут точно так же ровно
Vort теперь поясню, чем плох лимит по количеству - хоть с рандомом, хоть без
Vort с лимитом по количеству для медленных узлов очередь запросто может наполниться ненужным старьём - за десятки секунд
Vort в то же время, для быстрых узлов этого же самого лимита будет не хватать - лимит будет тормозить скорость. просто так
Vort "<~orignal> там можно же и по времени" - да. дроп может зависеть от наполненности очереди, но наполненность эту можно задать через время жизни самого старого пакета в очереди
Vort по тому же принципу, что onon сказал - от 1 до 2 сек лага для старых пакетов дают от 0% до 100% дропа новых пакетов (кроме своих [onDrop], для которых дроп идёт сразу же)
Vort но прежде, чем такое делать, всё же надо подтвердить наличие проблемы и убедиться, что предлагаемое изменение действительно что-то улучшает. отдельный вопрос - как это улучшение измерить
Vort решать, что "так теоретически будет лучше" - опасно. для сложных систем сделать хорошую теорию непросто - и довольно часто при проверке на практике получается результат отличный от ожидаемого
Vort попробую релизовать рандом дроп по времени. тем более, я в коде свою ошибку обнаружил, всё равно исправлять надо :(
Vort сделал вот как, тестирую теперь: github.com/Vort/i2pd/commit/4e7fede0f26c3c8d2f345a2823282589146cb1a2
Vort пока что балансирующего эффекта не вижу - если отправка залипает, то надолго. но буду наблюдать дальше
Vort такой вариант чуть меньше защищён от атак, но, может, и норм будет - чтобы атакующему нагадить, придётся сильно исхитряться
Vort пока что в основном тормозные узлы наблюдаю - дроп дошёл до 100%, а сообщения всё валят и валят, до 10 секунд лага доходило
Vort на более быстром узле один раз что-то похожее на баланс увидел - когда лаг балансировал между 1 и 2 секундами
Vort то есть, узел "понимал" такую индикацию перегрузки
orignal ну вот моя такая же мысль что если уже узел тормозной то все равно придется делать дисконнект
Vort явно есть несколько категорий узлов
orignal вот надо это писать в профилировщик
Vort какие-то залипают навсегда, какие-то на несколько секунд, а какие-то можно отбалансировать дропами
Vort так а просто отключение электричества не так ли разве будет выглядеть?
Vort я думаю, большинство узлов "не виноваты" - причина в багах и внешних обстоятельствах
Vort подожду, пока быстрый узел попадётся на перегрузку - по-моему, они лучше поддаются балансировке
orignal так и не надо постоянно маркировать а только на время
Vort кстати, я много раз уже видел, что узел тащит по нескольку сообщений в секунду, но при этом транспорт живой - так по чуть-чуть с дропами кто-то качает на протяжении минут
Vort больше данных собрать надо по поведению узлов, в общем
orignal "по чуть чуть" это означает что очередь будет у тебя
Vort так там очередь обычно сообщений 10 получается
Vort с моим последним коммитом добавление в очередь блокируется при 2 секундном лаге
Vort не понял мысли. сейчас я сделал 0 сек - 0% дропа, 1 сек - 0% дропа, >2 сек - 100% дропа
orignal а если 5 сек?
Vort но дроп как onon говорил - при добавлении
Vort 100500% дроп :)
orignal ну да но вероятность должна зависить от времени
orignal чем больше время тем выше ветоятность
Vort она и зависит на промежутке от 1 до 2 секунд
Vort 1.5 секунды лаг - 50% дропа
Vort можно и другую функцию выбрать, но, думаю, и эта сойдёт
Vort при > 2 сек предполагаем, что с узлом задница и уже не пытаемся ему чем-то помочь - просто защищаем нашу очередь от бесполезного раздувания
Vort отлагает - молодец. не отлагает - ну и хрен с ним
orignal можно и так
Vort вообще, я думаю, под медленные узлы не стоит особо оптимизировать алгоритм. с ними постоянная задница
Vort но алгоритм стоит иметь достаточно универсальный, чтобы и даже с такими крайними случаями он не творил каких-то особых глупостей
orignal то что я ниасилил в свое время
Vort мелкий косяк в прошлом коммите выловил. понадеюсь, что тут нету. тестирую дальше: github.com/Vort/i2pd/commit/b1a4845343edf48b226888978e091f41e37e8daa
Vort ну да, то, что я и сказал: "if a router buffer is too small, it can cause high packet loss and link under-utilization. If a buffer is too large, packets may have to wait an unnecessarily long time in the buffer during congested periods"
onon1 ¯\_(ツ)_/¯ В, общем делайте как хотите, я сдаюсь.
orignal ты обещал про интродьюсеры
onon1 Я же вчера всё расписал
Vort я тоже много чего расписал, почитай выше
orignal а ну тогда ладно
onon1 > И вообще, должно быть так: твой интродьюсер - это несколько (7) самых бизких (или дальних) к твоему base64. Если кто-то хочет к тебе подключиться, ищет у себя в нетдб ближайщий (или дальний) роутер и пробует.
onon1 > В ответ получает или коннект или список ещё более близких или дальних роутеров.
onon1 > И ты сам, регулярно проверяешь у себя в нетдб более подходящие роутеры и перезжаешь.
orignal а ко мне пытается по моему base64?
orignal в надежде что у меня с тем узлом есть сессия что ли?
Vort это предложение вообще выкинуть интродьюсеры с RouterInfo что ли?
onon1 У меня всегда есть непрерывная сессия с моими интродбюсерами
onon1 Кто хочет ко мне подключиться, шлёт на интродьюсер сообщение, мол передай этому Васе, чтобы соединился со мно, вот, кстати мой порт и адрес.
onon1 И Вася, получив сообщение, сам через нат устанавливает коннект с нами
orignal а как тот узнает что у тебя сессия именно с этим интредьюсером?
Vort ближайший в чьей-то netdb - не значит ближайший в нашей
onon1 Он близкий по DHT
onon1 Ну так я и говорю, что их 7
Vort а долго пробовать - времени нету
orignal нетдб же у всех разный
onon1 И если нет всесссии, возвращает список ещё более близких
onon1 И так за Несколько раундов находит интродьюсера
orignal определенная разуность есть только не будет ли тут возможность для атаки?
orignal слишком много пустых запросов же будет
onon1 Ну как и сейчас на флудфиле, если он не знает, отдает более близкие роутеры
orignal так на то он и флудфил
orignal у него особая роль
orignal и флудфилов мало относительно остальных узлов
onon1 Ну двай это всё на флудфилы и повесим, раз они вызвались
orignal это можно да
orignal но тогда у них же будет вообще море сессий
onon1 Ну они в основном простаивать будут, но будет много да
onon1 Тут или крестик или трусы
Vort onon1: какие-то тесты для вероятностного дропа сообщений придумывал?
onon1 Не совсем понял вопрос
Vort ну вот я сделал коммит (ссылку выше кидал). как понять, улучшил ли его вероятностный характер работу congestion control?
Vort то есть, интересует эксперимент, который позволяет получить измерение, показывающее, улучшилось ли что-либо
onon1 Забей буфер непрерывным потоком и поробуй через другой стрим скачать что-нибудь
onon1 Или пусти туда десять потоков и посмотри на равномерность распределения скоростей.
Vort ок, спасибо. на локалхосте, правда, наверно, не получится проверить
onon1 Если прям совсем заморочиться, можно на каждый поток считать RTT, jitter, bw и потом всё сравнивать.
Vort так как у меня стримы упираются в CPU, а не в сеть (которая локалхостовая)
onon1 А ты исследование что я скинул, дальше заголовка не прочитал?
Vort ну я увидел, что там речь о железках и выборе размера микросхемы памяти для них по сути. в i2pd не тот случай
onon1 Ну ладно, ¯\_(ツ)_/¯
Vort почитал ещё и в конце :) "To someone working on congestion control, this paper may feel a bit backwards... instead of sizing buffers based on unintended artifacts... we could instead design congestion control algorithms that work well for all queue sizes"
Vort для i2p такой вариант ещё хорош тем, что достаточно обновить два узла - сервер и клиент и получать преимущества обновлённого алгоритма стримов (если его кто-то обновит, конечно)
Vort а вот для того, чтобы подогнать буферы под глюченые стримы - это уже надо обновить значительную часть сети
Vort поэтому лимитами буферов стоит ловить лишь явные проблемы наподобие лагов > 1 сек и атак на переполнение буферов и не мешать улучшению стримов
Anonymous Vort too bad you weren't in #en lol
Anonymous We were discussing SAM a little bit, and the max tunnel quantity of 16 per session
Vort are there problems with this limit?
orignal no it's right. nothing useful
orignal Anonymous has another "genious" idea
Anonymous I was told by at least 2 people that more tunnel quantity would be beneficial to torrenting
Anonymous It's not just "my genius idea"
Vort nice to know this. but problems are not with limit itself if I understand correctly
Vort problem is that tunnels are often "weak"
Vort they can't handle required load
Anonymous qbittorrent has issues that are reproducible, not sure if it's related to SAM, but besides that, I was wondering if more SAM sessions would help, and how difficult it'd be for say qbittorrent to use multiple of them, Vort.. but I guess I'm too big of an asshole and people don't like me, they act as-if I'l doing something selfish just for myself lmao
Anonymous Hmmm Vort are you referencing some other issue that's currenting ongoing?
Anonymous Becaues I'm not referencing any existing issue, just so we're clear
Vort I'm basically saying that if each tunnel can handle ~16KiB/s, even 16 of them is not enough
Anonymous What is also bad is that 1. qbittorrent doesn't offer documentation for i2p, and 2. there's no #dev channel for qbittorrent on oftc where I am, so that's bad too and can't mail them.. this isn't I2P dev, but I think it would benefit I2P a lot, indirectly and perhaps directly if we were to change anything SAM-related.
Anonymous Vort: so you're saying more = better?
Anonymous 100x~16kb/s = good?
Vort not overloaded network is better. how to achieve this is mystery
Anonymous orignal: I'm also laughing at you at some thing, like thinking that knowing English is not important, you fool
Anonymous not overloaded network?
Anonymous So this is outside of SAM issue?
Anonymous Or application-specific solution perhaps
Vort yeah. right now network is under attack or very similar abuse
Anonymous or outside of application-specific solution, perhaps*
Vort it just can't handle high speeds
Anonymous Vort: I noticed something about that (discussions)
Vort also some bugs preventing network from working correctly
Anonymous So ongoing resolve should deal with this, too?
Anonymous That's because orignal is developer and doesn't know English well
Vort I think community should find people abusing network and tell them how to use it properly
Anonymous I'm so sad because I can't prove how stupid he is, as much as I'd like
Anonymous I like proving myself :P
Anonymous What do you mean?
Anonymous Accidental abuse or something?
Vort I suspect that some applications may overload network with lots of unneded tunnels
Vort like creating 1000 SAM sessions per user :)
Anonymous Vort: 1 application 1000 SAM sessions, you mean?
Anonymous qbittorrent has only 1 SAM session, and 3 tunnel quantity by default
Vort yeah. instead of 1 session with 1000 streams
Anonymous I have a solution for that...
Anonymous kind-of
Anonymous So maybe I will write a proposal
Anonymous not sure if it solves problem entirely
Vort also some people can't understand that if they create lots of tunnels, they should try to handle similar amount with their nodes. but instead they put limits like 20 tunnels on node. while creating thousands
Vort it is possible to clarify documentation (if it is not clear yet)
Vort other than that I think it is more social problem to solve
Anonymous basically my idea was having SAM with 2 ports, 1 for trusted users/computers, 1 for untrusted users/computers, and have options like SAM.untrusted.tunnel.quantity and SAM.untrusted.sessions_max for example
Anonymous tihs is sketch-talk
Vort you can't prevent people from being assholes by writing better software :)
Anonymous Vort: social problem? You mean "orignal not knowing English well" problem?
Anonymous Vort: you can, you should
Anonymous every user should be treated as malicious
Anonymous until they gain enough trust over period of time and/or successful interaction
Vort you are right (partially), but such approach is not always possible
Anonymous For example the peer initialization or something like that?
Anonymous You connect to a bunch of peers and discover more trough them, no? what if the intial peers are bad? IDK
Anonymous I don't know how I2P works, all I know is that I excell in criticial thinking and planning, and will prove to orignal this one day
Anonymous I'm shit because I have shit eyes, right now
Anonymous Anyways I'm glad there are English speakers in here.. who would have thought that language barrier would be an obsticle in developemnt of such scale?
orignal короче если по простому чувак не понимает что ограничение в 16 тоннелей это не блажь
onon1 Ну пускай строит больше - быстрее построит туннель из майорских узлов.
orignal строить то можно хоть миллион но в лизсет ты можешь пихнуть тольо 16
orignal иначе такой лизсет флудфилы выкинут
Anonymous Помогает ли больше сеансов SAM?
Anonymous qbittorrent = 1 SAM session
Anonymous maybe it's auto
orignal возможно
Vort проблема более общая, я её даже в этом чате много раз видел: люди думают, что если не лезет, то надо пихать посильнее
Anonymous lol Vort
Anonymous Vort: was my Russian good right now?
orignal Vort ага еще любят ставить X )))
Anonymous The translation RU->EN is good enough, is EN->RU?
Vort orignal: если у кого-то действительно есть ресурсы, то пусть ставят
orignal но с торрентами будет проблема
orignal они могут начать качать друг с друга ))
Vort вот хрен кто скажет - а какие реально возможности у среднестатистического юзера?
Vort может, всё же ближе к X, чем к L ?
Anonymous многие люди используют i2p для торрентов, и многие другие будут, когда он станет лучше
Vort orignal: и что - увидят нагрузку и испугаются? не понимаю проблемы
orignal я про несколько сэмов
Vort а...
orignal насчет X просто придурки его ставят а у самих не тянет
orignal Anonymous нихуя
orignal мало кто использует торренты через i2p ибо смысла нет
Anonymous есть много точек, чтобы использовать торренты через i2p!
orignal wrong translation
Anonymous I said "there are many points to use torrents over i2p!"
orignal I know what you said
orignal есть много случаев использования торрентов через i2p
Anonymous Your translation was wrong?
orignal that's correct translation
Anonymous "few people use torrents trough i2p because there is no point"
Vort и это не совсем
Vort есть много причин* скорее
orignal ну близко по смыслу
Vort Anonymous: "many reasons", right?
Anonymous yes yes :)
orignal Anonymous "мало кто использует торренты через i2p потому им это на хуй не вперлось"))
Anonymous 'point' is argumental terminology for 'my reason to say/do this', something like that
onon1 мало кто использует торренты через i2p потому что мало кто использует i2p
orignal так и кто использует тоже
orignal кроме тех самых магнитов смысла нет
orignal я все скачаю торрентом через клир
Anonymous translating Russian is too much pain in my ass -_-
Anonymous too slow
Anonymous takes 1 minute to copy text
Anonymous I could argue with orignal for hours about how he's wrong right now
Anonymous I2P will be popular and good
Anonymous I2P torrenting will be good
Anonymous I promise you
Anonymous Translation is shit
onon1 SAM использует наши туннели для передачи данных или строит свои как I2CP? Я просто не знаю...
orignal а нас сэм напрямую со стримуми работает
orignal но дестинейшин он создает собственный по запросу
onon1 Короче, если он транк накатит, у него скорость вырастет?
onon1 Если так, скажи ему, пусть занимается и не отвлекает тебя от дел.
orignal да он пиздабол в принципе
onon1 Я заметил...
orignal потому я сразу сказал что его идеи здесь мало кому интересны
orignal я так понимаю ацетон так и не появлялся
Vort вот пример более-менее успешной регуляции с помощью рандомных дропов
Vort по оси x - количество дропнутых пакетов (примерно время)
Vort вверху - лаг, внизу - размер очереди
Vort но такая ситуация редкая, чаще лаг ползет вверх пока сообщение уже по основному таймауту не грохнется. не уверен, правда, в правильности понимания
Vort вопрос, почему SSU2 не рвёт соединение раньше. там же есть макс. количество перепосылок
orignal разве?
orignal елси он этого не делает то бага
Vort ну я имею в виду SSU2_MAX_NUM_RESENDS
Vort но я пока плохо разобрался с этим механизмом
orignal ну я думал когда мы достигаем этот значения то должны закрывать сессию
Vort может, для него 10 секунд подождать - это норма
orignal возможно не сразу
orignal возможно он снчала шлет сообщение о завершении
Vort а, может и в этом дело быть
orignal а уже потом рвет
Vort разбираться надо
Vort а помнишь баг с логикой завершения?
orignal там довольно сложно
orignal уже нет
Vort "Требуемый адрес для своего контекста неверен to 0.0.0.0:0"
Vort там из-за логики состояний SSU2 проблема
Vort может он и тут гадит
orignal я эту проблема пока так и не понял
Vort я пояснял, сейчас найду в логах
orignal ты хочешь сказать что мы где то зануляем endpoint?
orignal счас гляну
Vort Closing ставим даже если не было Established
Vort хотя сейчас уже понимаю, что это разные проблемы
Vort но близкие по месту расположения
Vort пытаемся закрыть не уставноленную сессию. оттуда и адрес 0.0.0.0
orignal я так и не починил
Vort ну надо же ничего и не поломать ещё в процессе починки )
orignal я просто забыл ))
Vort хорошо, что логи чата есть, а то и я бы забыл )
Vort помнил только что где-то в логах объяснение есть
orignal ну я попробую починить
Vort смотрю логи узла с рандомизированным дропом сообщений - и попался случай, когда один пакет провисел в очереди 20 секунд (был единственным с 8 по 20ю секунду)
Vort маловероятно, что такие проблемы легко исправить, но разбираться точно надо
Vort чтобы хотя бы понять, с чем имеем дело
orignal потери пакетов
orignal ты не помнишь почему я эту хень с заврещением не починил?
Vort не знаю, могу только гадать
orignal похоже опять потому что был чем то занят а потом забыл
Vort надо особо вредные баги относить на GitHub, потому что и я умею забывать
Vort если не получилось за месяц починить, то пусть там висит (ну примерная идея, понятно)
Vort "<~orignal> потери пакетов" возможно. но ~10 секунд на то, чтобы 5 раз переотправить сообщения - это как-то дофига
Vort небось, проблемы с окнами и оценкой RTT
orignal наверное
orignal нууу у тебя память лучше ты не такой старый дед ))
orignal закоммитил
Vort хорошо, но тестировать буду потом. сейчас буду продолжать наблюдения за рандомизированным дропом
onon На локалхосте тестируешь? Без эмуляции задержек и случайных дропов, как в реальной сети?
Vort я сейчас просто смотрю на параметры транзита на реальном узле в реальной сети
Vort и пытаюсь найти случаи, похожие на успешное регулирование нагрузки
orignal я счас сам запущу
pinter бегом никто не занимается?
pinter недорогие беговые кроссовки можно купить в рф?
pinter в дешевых кедах наверное суставы убью
pinter бля сорян, не перепутал с ru)
onon Ты комнатой не ошибся?