IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2024/02/16
~AreEnn
~R4SAS
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Guest29753
Leopold
Most2
Nausicaa
Ruskoye_911
`
acetone_
anon
b3t4f4c3
guest
nemiga
not_bob_afk
plap
poriori
profetikla
segfault
soos
spider
teeth
tensor
un
weko_
whothefuckami
onon1 ~350КБ/с на 16 5хоп туннелях. Продолжительность теста ~9 часов.
onon1 Насколько это хорошо, с вашей точки зрения?
orignal мы не обсуздаем извращения вроде 5 хопов
onon1 Могу на три перевести, такой тест нужен?
orignal вот тестируй на стандартные 3
weko onon1: а чего так дохуя
weko по скорости
onon1 Просто это был тес на высокую нагрузку
orignal потому что 5 еще в один пакет не влазит
weko onon1: это многопоточное ?
onon1 Да
weko а ну ясно
weko нах надо многопоточное
weko и тем более если оно таким является, надо говорить сразу
onon1 А что самое важное - это относительно равномерное распределение нагрузки по туннелям
weko ну это давно уже предлагалось для одного стрима сделать. только некому
onon1 Со стримами, кстати какая-то беда.
weko конечно
onon1 Они зависают что на стороне клиента, что на строне сервера.
onon1 При том, что разрыва связи не было
orignal так проьлема не со стримами а с тагсетами
onon1 Пока за час в один поток смог прокачать всего 42мб. Средняя скорость получается 12КБ/с
orignal ну это обычная скорость да
Leopold не густо
onon1 А больше и не прокачаю, потому что стрим завис
onon1 И дропнулся со сторны сервера
orignal со стримами давно известная проблема
onon1 Я попробовал еще раз сначала, теперь стрим дропнулся через пару минут, прокачав всего 1 мб
onon1 В общем, надо бы мне разобраться в логике работы стримов.
orignal а в ней разобраться непросто
orignal там все сделать по приниципу "хуяк хуяк и в продакшен"
relaybot 13mauzer: собственно как и везде
onon1 Возникла идея, запишу, чтобы не забыть, обдумаем вместе потом. Можно создать двунаправленный туннель отдельно от остальных, как дополнительный, и тесты со всех туннелей отправлять туда.
onon1 На двунаправленном мы можем точно посчитать задержку, а потом будем просто вычитанием считать задержку на всех остальных туннелях.
onon Ещё важная мысль, нужно привязать периодичность тестирования туннеля к количеству трафика, отправляемого в него, вроде 1 тест на N кбайт. А при простое слать слать тесты через относительно длительные промежутки.
weko Звучит логично
weko Но нужно по другому я думаю
weko Хотя тут подумать надо
weko Может логарифмический график надо
Vort только перезапустил узел, почти сразу увидел Incoming Tags: 329 на ни разу не использованном дестинейшене прокси
orignal двунаправленный тоннель на каждый маршрут?
orignal Vort это странно у меня нигда такого нету
orignal надо по логам смотреть откуда они прилетают
orignal может у тебя в конфиге их много стоит?
Vort orignal: так это относительно редко случается и закономерности я пока что не выявил
Vort а что - теги логируются?
orignal ну так добавить лог в месте где они генерятся
Vort этот прокси только в i2pd.conf есть
Vort ну и вообще я нигде теги не настраивал
Vort куда лог пихнуть? могу опять тестовый узел запустить
Vort хоть бы опять зависание компа не словить :/
orignal void ECIESX25519AEADRatchetSession::GenerateMoreReceiveTags (std::shared_ptr<ReceiveRatchetTagSet> receiveTagset, int numTags)
orignal вот здесь
Vort окей
orignal ну и перед тем как оно вызывается
orignal естественно
orignal на первый взгляд подождлают исходящие запросы
Vort это только крупную пачку тегов такой лог словит? мелкие просто появляются в консоли, но в логе нету
Vort хотя уже сам увидел
orignal мелокие идут по одному вместе с ключом
Vort неправильно в лог хеш дестинейшена вывел :(
Vort auto owner = GetOwner();
Vort i2p::data::GetIdentHashAbbreviation(owner->GetIdentHash())
Vort а надо что-то другое
orignal в GarlicDestination там просто GetIdentHash
orignal это локальный адрес
orignal у сессий же довоально часто адрес неизвестен
orignal там по S ключу идетифицируется
Vort да мне просто для подтверждения того, что это теги прокси
Vort а вывелась какая-то хрень. попробую теперь owner->GetIdentHash().ToBase32().substr(0, 4)
Vort я уже понял, что теги ещё могут при обновлении адресной книги создаваться
Vort и вот этот вариант мне надо исключить
orignal она же на другом адресе
Vort вот для этого я адрес и вывожу в лог, чтобы понять, к чему лог относится
Vort ага, последний вариант печатания адреса нормально сработал
Vort orignal: мимо лога прошло
Vort значит это мелюзга набивается. куда лог на мелюзгу тыкать?
orignal поищи все m_ECIESx25519Tags.emplace
Vort ок
orignal мелюзга тут
orignal void GarlicDestination::AddECIESx25519Key (const uint8_t * key, uint64_t tag)
orignal реально для этого вызывается SubmitECIESx25519Key
orignal который просто перекидывает на тред
onon1 Ну что, эксперимент, очевидно, удачный. Можно с уверенностью сказать, что более 90% failed туннелей, которые мы дропаем, на самом деле хорошие.
onon1 И второй вывод, чаще всего мы сами забиваем их трафиком, там образуются очереди, тесты не пролезают, мы их дропаем.
onon1 Для эксперимента я вырезал код, который переводит туннели из состояния test failed в failed.
onon1 Эти туннели продолжали висеть в пуле и периодически тестироваться.
onon1 Через некоторое время более 90% туннелей возвращались в состояние established.
Vort да я видел опять парные дропы. надо дальше копаться
orignal это означает только одно
Vort хотя пока что хочу теги покопать
orignal у тебя в этот момент была сеть перегружена
onon1 Также модифицированный таким образом роутер показывает большую производительность.
orignal Vort парные дропы могут быть там же рандом
onon1 Он может отдать/принять больше трафика
Vort orignal: вот мне кажется, что их больше, чем должно быть в соответствии с рандомом
onon1 И делает это не через один быстрый туннель а через несколько параллельно/попеременно
Vort но я пока не спешу с выводами, нужно подбирать доказательства
orignal может переделать тестирование совсем?
orignal тестировать только симметричные
Vort на мой взгляд, надо для начала до конца понять проблему
orignal по мне так очевидна
onon1 Ещё один важный момент, под нагрузкой не возникает ситуации, когда все туннели дропнулись.
orignal хуевый алгоритм тестирования
orignal который годился в 2015 году
orignal но не с нынешними нагрузками
onon1 Я же говорю, мы сами забиваем туннель трафиком до отказа.
onon1 А потом сами его фейлим
onon1 Повторите эксперимент, если не верите.
orignal так а "забит до отказа" это не фейл?
weko Ну если бы стримы могли выжимать максимум с туннеля... То может быть. А так нет, один стрим не умеет полностью канал туннеля использовать
onon1 Нет, там пакеты стоят в очереди, и промежуточный роутер их потихоньку пережёвывает
onon1 Роутер без фейлов в таком случае переводит такой туннель в состояние test failed и перестает слать туда данные
onon1 Через некоторое время данные всё-таки пропихиваются, и туннель снова готов к работе
weko Ну а далее должно быть что established
Vort onon1: который раз говорю - у меня туннели в пустых дестинейшенах фейлятся только так
orignal onon1 ну тут решение как раз есть
onon1 Это потому, что туннель потроен, через узел, на который кто-то в данный момент гонит трафик
orignal надо перегруженный тоннель исключать из тестирования
weko Данные текут = туннель работает
Vort orignal: опять мимо лога 300 тегов проскочили. вот срань
onon1 Итам так же образуется очередь
orignal Vort пиши значит перед каждой вставкой
weko Vort: при чём сделай разные сообщения, чтобы было понятно где происходит
Vort да понятно. просто два раза подряд промахнулся. попробую третий...
weko [13:52:51] <onon1> Это потому, что туннель потроен, через узел, на который кто-то в данный момент гонит трафик
weko У джавистов такое может быть
onon1 У нас тоже
weko Нет
onon1 Да
weko Мы не дропаем когда трафика больше чем задано в конфигк
weko А у них дропается
Vort иногда начинают появляться пинги в 3-5 секунд. это один из признаков проблемы
Vort вероятно, когда пинг ещё выше, то получаем фейл теста
Vort хотя вполне вероятно, что есть и другие причины
Vort нашёл, откуда лезут теги. ну, функцию то есть
Vort orignal: GarlicDestination::HandleGarlicMessage
Vort о, вижу кое что
Vort warn - Garlic: Flags/static section AEAD verification failed
orignal Vort так значит приходят откуда то
Vort warn - Garlic: Trying to generate more ECIES-X25519-AEAD-Ratchet tags
orignal ага вот теперь понятно
orignal это неправильно конечно же
orignal вопрос ровно один
orignal почему приходят такие сообщения
weko [14:43:23] <Vort> warn - Garlic: Flags/static section AEAD verification failed
weko [14:43:30] <Vort> warn - Garlic: Trying to generate more ECIES-X25519-AEAD-Ratchet tags
weko Знакомо. Во время теста стримов у меня было такое же
weko В тестовой сети
orignal надо сделать печать длины сообщения
orignal чтобы понять примерно что там
orignal но тут другое
orignal с какой стати на пустой адрес вообще что то приходит
weko Хороший вопрос
orignal в реальности там только построение тоннелей
weko Может где то по ошибке перенаправляется на дестинейшен?
orignal а кому этот дестинейшин известен
weko Так ошибка может быть разная
orignal нет я думаю тут другое
orignal это дубликат предыдущего сообщения
weko Может оно туда идти и не должно, а туды перенаправило
orignal смотри
orignal в пустом дестинейшине если ничего не запрашивать в нормально стуации может приходить только ответ на тоннель
weko И пинг
orignal то есть мы строим исходящий и в наш взодящий идет штфрованноеэ
orignal нет пинг не шифрованный
orignal пока еще
orignal так вот я тут вижу 2 варианта
orignal или это повтор предыдушего или какая то атака
weko orignal: но приходит то там I2NPData, не Garlic ж
orignal кто что видя у себя концы тоннеля пытается слать
orignal в смысле?
orignal то сообдщение в логе значит пришел Gralic через тоннель
weko Ну когда ответ о построении приходит
orignal вот он приходит как Grlic
orignal мы когда строим тоннель втсавляем одноразовый таг
weko Ну тоесть конец симметричного шифрует симметричным, который мы ему выдали
weko Верно?
weko Ой блять конец исходящего
orignal ну там не выдали а вычислили но не суть
orignal короче надо
orignal где то сохранять использованные таги и смотриеть
orignal нету ли среди них
weko Тоесть кто-то видя, что они конец, шлёт какую дичь в туннель?
weko Или же это вообще баг на концах где то
orignal либо такой вариант
orignal либо просто повтор
weko Что они не правильно шифруют при каких то обстоятельствах
orignal ну через тебя построился транзит
orignal ты же видишь что IBGW
orignal и туда сри чем хочешь
weko Ну ясное дело
orignal ну почему же?
weko Но у Vort -а довольно часто
orignal они шифруют для кого надо
weko Либо таких много роутеров, либо это баг
orignal потому надо проверить предыдущие тагим
weko orignal: так может баг какой то. В тестовой сети то всплывало похоже
weko Похожее
orignal но в тестовой ты гонял данные
orignal между дестинейшинами
orignal а Vort нет
weko Надо понять, играет ли это роль
weko Может это от нагрузки на концы зависит, например...
onon1 Ну у меня, например тоже бывает, на пустом сервисе Incoming Tags отличный от нуля
weko Вспомнил: баг появлялся, когда транспорт пересоздавался
weko onon1: это мы уже выяснили
orignal предлагаю в тагсете вести список использлванных тагов
orignal это 64K на дестинейшин максимум
weko похоже на лечение симптома
orignal ну так дубликаты же реально бывают
orignal тут ничего не поделаешь
weko так тогда это нужно только чтобы в логи другое сообщение вывести
weko всё равно выкинем сообщение
weko для дебага полезно, возможно
orignal выкинем то выкинем только сколько дурацких попыток расшифровать как новое сделаем?
weko так а вопрос. откуда дубликаты
orignal где то перепосылка
weko так где
orignal а вот x3
weko i2np нигде не переотрпавляются
orignal в SSU2
weko так там фрагменты
orignal но там сообщение должно быть с тем же номером
orignal надо посмотреть
weko а там почему
orignal ну да там как всегда не проверяется
weko что не проверяется?
orignal msgID
orignal на дубликат
weko а на уровне ssu2 проверяются дубликаты?
orignal не помню
weko если да, то больше неоткуда дубликатам появлятся
weko если багов нет конечно
orignal там да
weko хуяк приехали
weko сервер не видит lease set клиента
weko udp
weko ладно щас перепроверю
orignal должен
orignal он же посылается как чесночина
weko может туннель сдох
weko надо сделать чтобы рандомный туннель для каждого запроса использовался
orignal по UDP?
orignal ну это можно
weko опа
orignal чо?
weko подключился
weko да я игру тестирую
weko карту не начал качать
orignal UDP тоннель там просто море багов
weko и всё опять не работает
weko orignal: всё работало в тестовой сети
orignal ну разбирайся почему
weko хм, а я ведь обновил этот роутер?... надо проверить
weko точнее просто обновить
Vort orignal: если у тебя есть на каком-то узле warn/debug логи, можешь глянуть, сколько "Trying to generate more ECIES-X25519-AEAD-Ratchet tags" валится
Vort чтобы понять, насколько особенности моей конфигурации влияют
orignal я счас это починю в любм случае
orignal это баг
weko_ на сервере сессия даже не создаётся
weko_ чтожтакое
onon1 Vort, у меня такое примерно два раза в минуту в логах.
weko_ опа, шмогла что-то!
weko_ 10 kB карты скачалось
orignal говорю же с UDP надо чинить все
weko_ while (numPackets < i2p::datagram::DATAGRAM_SEND_QUEUE_MAX_SIZE)
weko_ кажется понятно
weko_ игра слишком много шлёт
weko_ щас wireshark расчехлим
orignal увеличь
weko_ 45 пакетов я проверил
weko_ DATAGRAM_SEND_QUEUE_MAX_SIZE = 64;
weko_ хм
weko_ ну походу когда карта качается оно всё
weko_ начинает
weko_ а далее висит сдохнувшая сессия
Vort weko_: iperf3 проверил? :)
weko_ пока нет
weko_ но там было бы таже проблема
weko_ была бы
Vort только вот с простой тестовой утилитой проще отлаживать
weko_ может быть
Vort от простого к сложному двигаться проще короче
weko_ но у меня цель чтобы игра работало
Vort если возможно
weko_ работала
weko_ там просто сделано криво
weko_ кажется
weko_ ну щас узнаем
weko orignal: помогло
weko карту скачало
weko но далее уже не шмогло
weko да всё таки в udp ещё багов предостаточно
weko_ ой мля
weko_ я кажись понял в чём проблема
weko_ а может и нет
weko_ iperf3 даёт Connection refused
Vort weko_: вообще ни байта переслать не может?
weko_ ну Connection refused
weko_ хз пока почему
weko_ пока тестирую локально параметры
Vort ну да, логично. вначале на локалхосте надо настроить :)
Vort хотя может и какая-то несовместимость с i2p быть - хз
weko_ не думаю что не совместимость
weko_ где то не тот параметр или ещё чото
weko_ хотя вроде и всё верно
weko_ [weko-factorio-client]
weko_ type=udpclient
weko_ address=192.168.1.X
weko_ port=34198
weko_ судя по wireshark, iperf3 даже пакет не отправляет
weko_ ах, ну я понял, кажется
weko_ или же нет
weko_ нет это не решает
Vort может, какие-то проблемы с локалхостовым UDP у него
Vort я тоже что-то не могу сейчас настроить, хотя с yggdrasil помню работало нормально
weko_ а тут не локалхост
weko_ я на обычной сети смотрю а не на тестовой
weko_ при чём nc кажется коннектит
weko_ iperf3 -c 192.168.1.X -p 34198 -u -b 11680 -l 1460 -t 20
Vort бля, я тупанул
Vort iperf3 -s
weko_ вот бы я тоже тупанул... точнее понял что тупанул
Vort iperf3 -u -c 127.0.0.1
Vort а вот так матюгалось: iperf3 -c -u 127.0.0.1
weko_ ах, нуда
Vort так вначале самый простой вариант запусти
weko_ запустил уже
Vort а затем понемногу усложняй. так проблема и вылезет
weko_ так вот момент когда я переключаю чтобы через ш2з гонять
weko_ главное что nc подключается
weko_ а iperf3 даже 1 пакета не шлёт
weko_ вообще полный 0
Vort он лезет по TCP похоже
Vort для настройки UDP
Vort надо и то и то прокинуть похоже
weko_ а ... ))
weko_ ну тогда кажется понятно
weko_ tcp то у меня не настроено
Vort видимо, они решили что это слишком морочливо служебуню информацию через глюченый UDP гонять )
weko_ наверняка
weko_ пошло
Vort какую скорость выжать получается?
weko_ unable to receive cookie at server: Bad file descriptor
weko_ опа приехали
weko_ так, я переборщил ))
weko_ я думаю я сломал
weko_ там скорее всего ошибка с тагами щас
weko такс
weko ну на 100 килобитах работает
weko тут ещё странная дичь 18446744073709551615/8 (-12%)
weko чзх вообще
weko туда смотреть не особо стоит короче
weko наверное потому что в плохом порядке приходят
weko удобный инструмент
weko по нему можно статистику делать
weko можно проследить как очереди наполняют
weko [ 5] 0.00-5.49 sec 611 KBytes 912 Kbits/sec 4.789 ms 0/695 (0%) receiver
weko что-то слишком нереалистичное
weko но оно есть
orignal Vort поправил я код
weko orignal: а через i2cp можно список туннелей смотреть и отправлять на конретный туннель?
orignal когда будет время посмотри появится ли снова проблема
orignal не знаю
orignal вряд ли
weko просто явно результат сильно зависит от туннуля
weko ощущение джавистов
Vort "<weko> тут ещё странная дичь 18446744073709551615/8 (-12%)" может, i2pd данные повреждает?
weko я думаю это просто misorder
Vort сложно поверить, что авторы тестовой утилиты не подумали о приходе пакетов в неверном порядке
Vort это ведь свойство UDP, такое же, как и потери
weko ну конечно
weko но может не учли что порядок может настолько сильно меняться
Vort и у них есть гитхаб репозиторий. если найдём багу у них, можно будет отрепортить =)
weko да
weko но главное что итоговые данные показывает
Vort по поводу тегов - сейчас просто обновлю основной узел
weko тут будет интересно что в тестовой сети
weko в основной можно статистику делать
Vort так а зависания какие-то, как в игре, проявились?
weko нет вроде всё ок
Vort ещё вариант - можно пробовать разные параметры теста и смотреть, не заглючит ли i2pd
weko да лол легко вообще
weko ставишь 10Mbit/s
weko и всё
Vort в UDP ведь напихать можно много
Vort а должны быть просто дропы...
weko да
weko возможно игра шлёт много мелких пакетов
weko можно будет потом посмотреть
Vort в iperf3 тоже может быть настройка размера пакетов
weko есть
weko и я поставил
weko меньше 1000
Vort ну вот, можно проверить гипотезу мелких пакетов
weko 900 я поставил
weko ага
weko эт легко
Vort я в перезапуск
weko сделал так много потерь, что iperf3 глюканул
Vort ему вообще должно быть пофигу, потому что управляющие данные по TCP
Vort короч это очень странно
weko а может он глюканул из-за того, что i2pd завис
weko Vort: но значит TCP зависс
weko из-за тагов
Vort или iperf пишут задницей или в i2pd какие-то адские глюки
weko ну довольно экстремельно я ставлю
weko мегабит пакетами по 50 байт
Vort а такой маленький пакет вообще возможен?
weko конечно
Vort хотя.. если это именно нагрузка..
weko хоть 1 байт
Vort ну я думал это размер вместе с заголовками
weko врядли
weko заголовки ОС ставит
weko прикол в том, что на эти 50 байт идут как 1000 в i2p
weko нужно как то придумать, как паковать несколько udp пакетов
weko в одно туннельное сообщение
Vort а, из-за этого и игра может глючить
orignal аааа ну это я собирадлся сделал
orignal не доделал
Vort ну то есть, ты думаешь что она мегабайт/сек требует, а в реальности раздувает до гигабайта/сек
orignal просто некогда было
weko вот тут по 2500 в секунду пакетов идёт
orignal там надо просто пачкой в тоннеь кидать и все
weko Vort: ну да если пакеты маленькие
weko orignal: нужно прежде чем отправлять ждать какое-то время, что может больше наберётся
weko вопрос лишь какое время
orignal weko там же вроде сэмплирование есть
weko где
weko и что это
Vort с онлайн играми ждать - не особо вариант
weko Vort: ну учитывая пинг в i2p, ждать 1-2ms вполне нормально
Vort скорее пока ядро сообразит, пока тред проснётся, то уже в буфере наберётся нужное количество пакетов
orignal мда уж
weko Vort: не думаю
weko Vort: что ты написал оно меньше микросекунды
weko а тут речь про ms вообще
Vort ну хз, может и действительно стоит 1-2мс подождать
weko <orignal> мда уж
weko чаго
weko Vort: проблема в том, что 1-2ms мало
orignal похоже там только очередь без сэмплтирования
orignal смотрите код Datagram.cpp
weko что такое сэмплирование
orignal ну отправка не сразу а с какой то периодичностью
Vort примерно то же, что мы и обсуждаем
weko Vort: 100 Kbit/s, пакеты по 50 байт - 250 пакетов в секунду. что примерно равноценоо 2 Mbit/s при размере пакета 900.
Vort так не факт, что они равномерно идут
Vort может кучками практически без задержки
Vort а между кучками - задержка
weko orignal: так очередь там чисто формальная. она никогда наполнятся не будет
weko достаточно
weko потому что udp шлётся сразу
Vort это я про игру говорю. iperf скорее всего равномерно прёт
weko так в играх например обычно тики
weko видеопоток тоже равномерно
Vort а в каких сценариях мелюзга прёт? тик - это мелкий пакет?
weko Vort: ну да
Vort наверно, вначале нужен механизм, а частоту отправки можно будет уже подкрутить по результатам тестов
weko я почти уверен что в игре каждый тик пакет отправляется, а это 60 в секунду
weko дохуя
Vort я понял, просто я не знаю какого обычно размера пакет тика
weko ну большинство маленькие
weko я могу посмотреть как ведёт себя игра
orignal будт если много пакетов в буфере
orignal думать надо
orignal оно сделано так что читает все что во входном буфере и отправляет сразу
weko orignal: ну если прям совсем одновременно пришло то да , но это редкость. потому и очередь там формальная
Vort короч тут баланс между экономией трафика и дополнительными лагами
weko Vort: нужен динамический наверное. но на чём считать - не знаю
Vort для начала хоть какой-то
Vort а там будет видно
Vort weko: я вот ещё думаю - не будет ли склеивание тиков порождать дёргание в игре?
weko ну вот 250 p/s, это нужно 4 ms ждать чтобы 2 пакета в одном сообщении отправлять
weko Vort: так это задача игры уже исправлять такое
Vort или в нынешней ситуации с лагами по 5 сек это как-то пофигу? )
Vort ну как-то, да
weko игра же рассчитана что udp
Vort короч такое решение по факту урезает тикрейт
Vort а сколько надо для комфортной игры - хз
Vort 10-20 герц наверно минимум
weko ну вот в factorio 60
orignal ну и сколько интревал вы пделагаете?
weko в minecraft 20, но там вообще tcp
weko orignal: ну предположим раз в 5ms
weko больше 200 пакетов в секунду уже будет склеивать
Vort weko: что-то не так с расчётами
orignal без проблем
orignal но будет проц жрать
Vort 60 герц - это 16мс
Vort 5мс ничего не склеит
weko Vort: ну если 60 то да
onon1 Давай переменную заводи, чтобы можно было перед сборкой в конфиге указать
orignal естественно параметр в конфиге
weko а так по умолчанию отключить и параметром в конфиге уже играться
Vort weko: большиство юзеров знать об этом не будут
Vort но учитывая "для начала хоть что-то" - то пойдёт
onon Комментарий пиши
weko Vort: ну это для игры
weko я на games.i2p напишу
weko для игр
Vort я думаю, что по умолчанию надо не отключать, а выбрать адекватное значение
orignal ну вот да если 0 то медленно
orignal параметр в микросекундах
Vort предположим, допустим, что меньше 1 хопа юзеры ставить не будут
Vort вот посмотреть, какие пинги обычно
Vort и придумать, насколько их допустимо подпортить
Vort допустим, средний пинг 100мс, можно ещё 20мс на склейку накинуть
weko ну в датаграмах ты никак не посмотришь
weko а вот пинг туннеля можно смотреть
weko если починить алгоритм, конечно
Vort ну пинг - он и есть пинг
Vort короч, я думаю стандартное значение надо 10-20мс ставить
orignal ну это я могу запилить
Vort 20мс как раз будет немножко склеивать тикрейт 60 герц
Vort можно будет оценить, насколько это помогает и насколько вредит
Vort ну и поменять всегда можно
weko ну в два раза будет, не?
weko ну хотя смотря как сделать
weko если сделать "автобус", то чуть чуть будет склеивать
weko если же ждать на каждый пакет, то в два раза
Vort отправлять раз в 20мс. если есть что
weko автобус тогда
weko 120 пакетов в секунду
weko однако
weko посмотрю настройки сервера
weko "_comment_minimum_latency_in_ticks": "optional one tick is 16ms in default speed, default value is 0. 0 means no minimum.",
weko "minimum_latency_in_ticks": 0,
weko хммм
weko а, 120 это в обе стороны!
weko "_comment_max_heartbeats_per_second": "Network tick rate. Maximum rate game updates packets are sent at before bundling them together. Minimum value is 6, maximum value is 240.",
weko "max_heartbeats_per_second": 60,
weko вот короче можно поменять
weko моя основная версия что тагсет ломается когда высокие потери
weko возможно когда теряется слишком много подряд
weko изза этой проблема приходится ограничивать скорость скачивания
weko прблемы
Vort orignal: не помог последний коммит. значит, это не дубли?
Vort я постараюсь ещё перепроверить
weko если сделать отправку через рандомный туннель так этих проблем вообще не будет. с тем что много слишком пакетов
orignal значит нет
orignal значит кто то срет
Vort может ли это как-то нарушать работу узла? ну то есть, это только числа в консоли или что-то ломается?
orignal возможно это запросы твоих собственных тоннелей
orignal напиши в лог и там
` <~orignal> значит кто то срет
` Лазарь!
orignal строка 123 Tunnel.cpp
Vort ну в прошлый раз я чётко словил возле Trying to generate more ECIES-X25519-AEAD-Ratchet tags
Vort на строке 123 у меня лог стоит. это НЕ оно
orignal именно там где вставляется
orignal тогда строка 328 файла Destination.cpp
orignal там где мы вставляем ключ
orignal для ответа
weko воу
weko удаЛОСЬ
Vort Garlic 555
orignal это я понимаю откуда
orignal мы сейчас пытаемся понять что приходит
orignal твое собтсвенное сообщение или кто то внешний срет
orignal но твое собтсвенно сообщение это строка 328 Destiuation.cpp
Vort строка 328 одну штучку всего даст
Vort а не 300 штук
Vort конечно она вызывается. но редко
onon1 У меня в логе они обычно рядом с Garlic: Can't handle ECIES-X25519-AEAD-Ratchet message
onon1 Но бывает, что и без них
Vort если важно понять общую картину, то попробую сейчас нагрепать. но прошлый лог, до фикса
orignal там предел 328
orignal const int ECIESX25519_MAX_NUM_GENERATED_TAGS = 320;
orignal правильно она дает 1 штуку
orignal но если то заштифрованное не удается расшифровать у тебя сгенрируется 230
orignal смысл то в этом
orignal ты шифруешь для самого себя
orignal твой адрес никто не знает кроме тебя
orignal но кое кто знает концы твоих входящих тоннелей
weko orignal: в игре прям чувствуется как переключается на не рабочий туннель
weko надо сделать чтобы случайный использовался
weko чтобы потери были равномерные
orignal попробую
weko а мне надо сделать более частые тесты
Vort orignal: вот, глянь выдержки из прошлого лога. есть ещё свежие, могу тоже обработать
Vort grep "AEAD verification failed\|Trying to generate\|AddECIESx25519Key\|SubmitECIESx25519Key\|Tunnel::Build\|AddECIESx25519SessionNextTag" /e/_Projects/_Test/i2pd/build/Debug/i2pd_300.log > /e/i2pd_tag_grep.txt
Vort искать надо по "Garlic: Trying to generate more ECIES-X25519-AEAD-Ratchet tags"
Vort там всего 1 раз
Vort i2xk - это дестинейшен прокси. был такой тогда
orignal 16/Feb/2024:16:35:50 +0200]@427/warn - Garlic: Payload for router AEAD verification failed
orignal [16/Feb/2024:16:35:50 +0200]@827/warn - Garlic: Flags/static section AEAD verification failed
orignal for router
orignal тред то тот же
orignal а нет разные
orignal 16/Feb/2024:16:35:49 +0200]@827/debug - LeaseSetDestination::SubmitECIESx25519Key
orignal [16/Feb/2024:16:35:49 +0200]@827/debug - GarlicDestination::AddECIESx25519Key hash = i2xk (3 total)
orignal не это ли
orignal 16/Feb/2024:16:35:50 +0200]@827/warn - Garlic: Flags/static section AEAD verification failed
orignal [16/Feb/2024:16:35:50 +0200]@827/warn - Garlic: Trying to generate more ECIES-X25519-AEAD-Ratchet tags
Vort по времени совпадает более-менее
Vort давай ещё свежий лог обработаю (после фикса). там тоже что-то насыпалось уже
orignal вот надо дальше копать
orignal наппечтать занчение самого тага
Vort попробую
Vort так куда надо печать тегов дотыкать? в GarlicDestination::AddECIESx25519SessionNextTag и GarlicDestination::AddECIESx25519Key достаточно или ещё куда-то надо?
Vort orignal: это вылезло на сей раз не на прокси, но, думаю, пофиг. если ещё куда-то надо печать тегов добавлять - говори. наверно я не всюду куда надо добавил
Vort тут аж дважды "Trying to generate more ECIES-X25519-AEAD-Ratchet tags" вылезло
Vort второй раз дублирующиеся теги попёрли. хз что это значит
Vort (347 total) (347 total) (347 total)
Vort уже и на прокси вылезло. 1 раз
Vort у меня, кстати, вызывает подозрение резкая очистка тегов. может, так и надо, не знаю
Vort набираются теги медленно (те которые поштучно), а в ноль сбрасываются довольно быстро
Vort вот обновлённый лог. предыдущий можно не качать
Vort странной мне кажется вот эта ситуация:
Vort [17/Feb/2024:00:03:51 +0200]@602/debug - GarlicDestination::AddECIESx25519Key hash = q6nv tag = 5977946545528276945 (5 total)
Vort [17/Feb/2024:00:03:51 +0200]@602/warn - Garlic: Flags/static section AEAD verification failed
Vort [17/Feb/2024:00:03:51 +0200]@602/warn - Garlic: Trying to generate more ECIES-X25519-AEAD-Ratchet tags
Vort [17/Feb/2024:00:03:51 +0200]@602/debug - GarlicDestination::AddECIESx25519SessionNextTag hash = q6nv tag = 4716662641697842874 (1 total)
Vort (1 total) означает, что до этого было 0, то есть сработала очистка. но правильно ли это?
Vort ещё одна похожая ситуация словилась - было (15 total), затем вылезли "Flags/static section AEAD verification failed", "Trying to generate more ECIES-X25519-AEAD-Ratchet tags" и стало (1 total)
Vort совсем наугад - предполагаю проблему гонки между очисткой и добавлением
weko так тут скорее всего и есть гонка
weko_ надо при выключении i2pd отправлять для всех стримов Close
weko_ чтоб закрывались