~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
:/
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
где то сохранять использованные таги и смотриеть
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
надо посмотреть
orignal
OBEP
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
:)
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
ну я же говорю откуда оно лезет. github.com/PurpleI2P/i2pd/blob/441e847de8278d3cc9703ec9bbefec836296ff8f/libi2pd/Garlic.cpp#L555-L556
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_
чтоб закрывались