Vort
собрал 6589bdf, посмотрю на стабильность
Vort
orignal: микробаг нашёл
Vort
вот тут numFragments - uint8_t и выводится как символ
Vort
смотрел всё время на пинги туннелей когда с майнкрафтом разбирался, пытался угадать, по какому из них данные идут
Vort
только сейчас заметил, что для потока выводится RTT
Vort
в шапке таблицы всё в кучу свалено, поэтому в глаза не бросалось
Vort
но и тут расхождение - игра показывает 700мс, поток - 100мс
Vort
вообще непонятно, откуда этот RTT берётся
Vort
вот туннели, по которым данные идут
Vort
⇒ SMw5 ⇒ 3579022060:me ( 133ms ) established, 2602 KiB
Vort
889135088:me ⇒ p1Yb ⇒ ( 97ms ) established, 1760 KiB
Vort
при этом RTT - 70
Vort
в игре вообще 2000 сейчас
Vort
уже RTT потока 40. надеюсь, в отрицательные значения не пойдёт? )
Vort
раз заговорил о майнкрафте, то вот ещё один баг. бесит больше всего
Vort
иногда с сервера выкидывает (дисконнект). иногда можно сразу перезайти и дальше играть
Vort
но иногда перезаходы не удаются. можно 10 раз подряд получать "Timed out"
Vort
в вебконсоли при этом копятся потоки с Received 0
Vort
в логах - [04/Dec/2022:11:29:06 +0200]@664/error - Streaming: No packets have been received yet
Vort
где баг - в i2p, в i2pd, в майнкрафте - не знаю
Vort
но точно вижу, что это не простой глюк сети
Vort
что-то именно переклинивает
orignal
да согласен
orignal
но как он вообще туда попадает
orignal
это баг скорее всего что тоннели лагают
orignal
не помнишь как мы это для винды чинили?
Vort
orignal: кто куда попадает? я же много всего понаписывал. речь о Too many fragments ?
orignal
<Vort> вот тут numFragments - uint8_t и выводится как символ
orignal
откуда вообще берется более двух фрагментов
Vort
а, ну этого я близко не знаю. для начала хотелось бы избавиться от кракозяблов в логе )
orignal
сдалей каст к int
orignal
и PR
orignal
или я сам
orignal
это просто опечатка в коде
orignal
но меня больше волнует как вообще тут попадает
Vort
"<~orignal> или я сам" - лучше так
Vort
чуть глянул проблему по bind. мало чего в этом понимаю :/ зачем вообще i2pd передёргивает порт?
orignal
чтобы пакеты шли с заданного порта а не с какого попало
orignal
но суть в том что вот такая хрень как там описана она только на винде
orignal
R4SAS уже как то чинил
Vort
вот в этой строке проблема?
Vort
наверно про bind и не пойму :/ надо мне получше с UDP как-то разобраться
orignal
вот тут
Vort
ну да, но два вызова там при запуске, а один - посреди работы, как у юзера в багрепорте
Vort
всего три вызова OpenSocket вижу
Vort
а, там он лог файл же приложил
Vort
там надо бы разбираться из-за чего всё началось
Vort
Failed to bind - это уже последствия
Vort
"No connection could be made because the target machine actively refused it" - какой ещё refuse в UDP... ICMP ответ что ли с ошибкой?
orignal
мне непонятны эти ошибки в его логе
Vort
может, тоже повреждения памяти
orignal
я тоже не понимаю как машина может дать отлуп по UDP
orignal
он же по определению без подтвеждения
Vort
а, кое что всопмнил. он же там пишет про антивирь
Vort
может тот заблочил сокет как-то
Vort
а дальше уже пошли глюки
orignal
ну даже заболчил а как принципиально может вознинуть такая ошибка
orignal
ну дропнет ядро пакет и все
orignal
потому и нужен R4SAS ибо он с этим разбирался
Vort
перехватить API вызов и вернуть какую-то хрень
orignal
ну а в чем логика?
orignal
надо посмотреть старый код SSU
orignal
там вроде сокет закрывали принудильено и переоткрывали или что то в этом роде
Vort
независимо от того, что вы придумаете, надо бы поискать, может в этом антивирусе можно добавить i2pd в исключения и если можно, посоветовать это юзеру
orignal
возможно
R4SAS
orignal: там пока что не ясно откуда вообще получается такое
R4SAS
по описанию смахивает что SSU2 пытается отослать данные на 0.0.0.0
Vort
там в логах написано, куда оно отправляло
Vort
по адресу 192.210.213.193
Vort
после этого i2pd попытался переоткрыть порт - и получил ошибку
R4SAS
не факт что это относится к моменту вываливания
R4SAS
я лог еще не смотрел
R4SAS
чуть позже гляну
Vort
по времени секунда в секунду совпадает
orignal
R4SAS по описанию там он делает bind на 0.0.0.0. ну и что?
R4SAS
нет, это попытка пререзапуска сокета
R4SAS
а сокет из-за другого отваливается
R4SAS
либо чего то прилетает кривое, либо отсылается не правильно
R4SAS
почему ему конкретно эта ошибка прилетает разберемся
R4SAS
но надо понять почему вообще отваливается
Vort
может, всё-таки антивирус виноват?
Vort
в таком случае чинить надо проблему не с учётом нормальной работы системы, а с учётом того, как в её работу вмешивается антивирус
`
ОФФТОПИК
`
Флибуста закрыли ш2з зеркало?
R4SAS
с чего вдруг?
`
Докладывают, что всё, в ш2з не работает и приходится через аутпрокси стучаться.
`
И у меня ш2з ссылка не работает, .b32.i2p которая
R4SAS
так мы уже не первую неделю говорим что у них сломалось
R4SAS
читать надо внимательнее
`
Видел это, но не починили разве?
R4SAS
если кратко
`
кстати как их там ещё не закрыли как "бота"
`
"замусорились" мб
`
(оффтоп офф)
Vort
orignal: решил я таки глянуть, как RTT для потока считается
Vort
вижу тут, что несколько значений RTT объединяются в одно
Vort
но не могу пока что понять, какая всё же цель объединения
Vort
минимум, среднее, максимум?
Vort
что-то иное?
Vort
на всякий случай поясняю причину, по которой я туда залез:
Vort
когда для потока с реальным RTT 600мс вычисляется RTT 6мс, есть сомнения в том, что код, от этого значения зависящий, работает нормально
orignal
я уже не помню
orignal
там как то усредняется
orignal
но это лет 10 назад было
Vort
ну мне интересно, что _должно_ там быть
Vort
а то, что там есть - ...
Vort
как минимум, значение скатывается вниз
Vort
при больших номерах пакетов
Vort
и из этого минимума уже никак не выбраться
orignal
возможно
orignal
это по уму надо переделать
Vort
я думал над скользящим средним
Vort
но для начала надо понять, а что же там должно быть
Vort
то есть, взять сырые RTT для какого-то потока, вывести на графике и поразмышлять над этим
orignal
надо читать описания алгоритмов для TCP
orignal
я туда воткунл то что в голову взбрело
orignal
можно просто (m_RTT + rtt)/2 например
Vort
просто и логично
Vort
если ещё при этом ничего не сломается - вообще супер будет
orignal
ты посмотри по истории измнений скорее всего так раньше и было
orignal
но почему то я изменил
orignal
видимо стабильность
orignal
или еще что то
orignal
моя логика была что вклад одного пакета должен быть незначительным
Vort
оно родилось таким
orignal
возможно
orignal
я согласен что темой это надо заниматься
Vort
вспоминаются с института ПИД регуляторы :D
Vort
накрутить можно много чего
orignal
просто как всгда времени нет
Vort
но для начала надо уяснить цель
orignal
работает более или менее и ладно
orignal
златин как и то хитрые алгоритмы реализовывал
Vort
да если бы не в 100 раз расхождение, то я бы и не заметил
Vort
что-то слишком дофига выходит
orignal
так не должно по уму
orignal
и потом там же при переклбчении маршрута обнуляется
Vort
может ещё таймеры что-то не то выдают. плюс скатывание к минимуму получается задница
orignal
кстати у тебя расхождение может быть из-за очередей
Vort
лаги типа?
orignal
нет
orignal
ты послаешь сообщение но оно не сразу отправляется
orignal
а сидит в очереди потому что пропускная способность i2p ниже
orignal
ждет когда до него окно дойдет
orignal
а если у тебя перед ним в очереди уже сотни сообшений то вполне
Vort
а когда sentPacket->sendTime ставится?
Vort
при постановке в очередь или уже при отправке?
Vort
хотя в любом случае так пинг бы вверх лез, а он лезет вниз
orignal
при отправке
orignal
короче попробуй сам поразбирайся
Vort
да может и доберусь когда-то. всё-таки там внушительный кусок кода надо разбирать
Vort
вот чётко по усреднению вижу что что-то не то
Vort
а что там в это усреднение поступает - уже сложнее
Vort
но можно даже усреднение вначале подправить, а потом выверять, что ему там на вход поступает
orignal
а ты поменяй код просто туда пиши последнее значение
Vort
если я сейчас просто (m_RTT + rtt)/2 воткну - ничего критически не сломается? особенно для других юзеров
Vort
могу проверить
orignal
нет
Vort
тогда сейчас проверю :)
orignal
смотри там еще такая штука есть как GarlicRoutingPath
orignal
суть в том если идет поключение к одному и тому же адресу используется одинаковый RTT
orignal
например загрузка картинок с веб страницы
Vort
такс. по крайней мере чат работает
Vort
был смешной rtt около 60. посмотрю что сейчас будет
Vort
(у чата)
Vort
я ж выходил, некоторые сообщения не дошли
orignal
* Vort вышло (Quit: KVIrc 4.2.0 Equilibrium kvirc.net/)
orignal
<orignal> смотри там еще такая штука есть как GarlicRoutingPath
orignal
<orignal> суть в том если идет поключение к одному и тому же адресу используется одинаковый RTT
orignal
* Vort (kvirc@twmxmfpnvg4hdirelxsu54c3dyc7o2soifykca2jnrp2oq2tt5tq.b32.i2p) был добавлен
Vort
да я смотрел на единичные коннекты
Vort
вот чат допустим. один поток
Vort
или майнкрафт 1 поток
Vort
сейчас для чата RTT скачет где-то 700-800мс. против сползшего значения в ~60 ранее
Vort
посмотрю что в майне будет
Vort
(сейчас тестирую m_RTT = (m_RTT + rtt) / 2; )
orignal
вот давай посмотрим
Vort
интересно. поначалу RTT было около 800-900. теперь сползло примерно до 500
Vort
в самой же игре где-то 1700-2000 показывает
Vort
но в игре тормозное определение пинга. надо подождать
Vort
уже 1000 в игре
Vort
и 300-400 RTT от i2pd
Vort
вроде и 2000 показывает в игре, но играется нормально. побегаю ещё в мире, посмотрю на реальную отзывчивость
Shadow
подскажите за лучший почтовый сервис в торе
Shadow
были ли новости о сливе с их стороны?
orignal
а зачем с этим на #dev?
orignal
спрашивай на #ru
Shadow
увидел актив и решил спросить
Vort
642 в игре и 561 RTT. первый раз так близко
orignal
неплохо
Vort
короч, я не могу быть объективен с этим тестом, но субъективно результат мне нравится
orignal
можно поменять логику например делать это на каждом десятом
Shadow
вы опытнее меня. подскажите насчёт вопроса
Shadow
на ru игнорят
Vort
если хочется больше гладкости, то можно крутить 0.5 и 0.5 к примеру до 0.8 и 0.2. ну это наугад почти говорю
orignal
и здесь тебе никто не станет отвечать
orignal
так понятное дело
orignal
идея в том что делать как у меня счас
orignal
а на каждом десятом а лучше 16 ом сообщении делать пополам
Vort
по этим алгоритмам целая _наука_ есть - теория управления. интересно конечно. но я пока не углублялся особо. короч, тут не гадать надо, а выбирать подходящий метод
Shadow
ладно, пойду читать хабр
orignal
так я тебе говоорю тут целые алгоритмы написаны
orignal
златин что то долго реализовывал
Vort
это о каком коде речь? java i2p, какая-то ветка i2pd? я просто не в курсе
Vort
мне просто не очень понравилась идея "можно делать вот так". ну а можно и не так. нужен же критерий для оценки правильности выбора
orignal
для TCP вроде
orignal
какие то алгоритмы там
Vort
а сюда что - один в один с TCP подойдёт?
orignal
у джавистов да там должно быть
orignal
нет
orignal
говорю же златин долго ковырялся с ним
orignal
а мне лень ))
Vort
вот я же и спрашивал, где эти результаты. если ответ - в java версии, то понятно
Vort
можно портировать при желании
orignal
да там
Vort
или для вдохновения использовать
orignal
и описание есть на geti2p.net
orignal
можно если разберешься ))
orignal
у меня просто времени на это нет
orignal
вот у тебя возникла проблема может займусь
Vort
я заметил неадекватные значения и заподозрил неладное
Vort
а как чётко последствия измерить пока не знаю
Vort
про описание понял, это хорошо
orignal
просто раньше такой задачи не было
orignal
скорости не позволяли
orignal
но я поковыряюсь сам как будет время
Vort
окей. майнкрафт играется нормально. как минимум, ухудшения не заметил
orignal
неплохо
orignal
короче понятно в чем на самом деле проблема
orignal
при переключении тоннелей занчение RTT остаентся старым
orignal
а это в корне неверно
Vort
да я вот я тоже присвоений m_RTT особо много не видел
orignal
скорее всего код с переключением был добавелн позднее
orignal
а его надо обнулять но по умному
orignal
надо его вес обнулять на самом деле
orignal
я подумаю как правильно
orignal
проблемы как раз из-за этого
Vort
скорее, проблем несколько
Vort
решение каждой понемного будет давать улучшение
orignal
ну вот эта вполне кокретная
Vort
сползание RTT вниз?
orignal
неадекватного RTT
Vort
если время от времени его сбрасывать, то понятно, что он на минмуме болтаться не будет
orignal
так надо не время от времени а точно в момент переключения
Vort
суть же в том, что его к этому минимуму тянет при больших seqn
Vort
допустим, RTT стоит 6. ну и seqn где-то под тыщу
Vort
пятёркой легко сбить в 5
orignal
никак
Vort
а до 7 даже 100 не дотянешь
orignal
(6*1000 + 5)/1001
orignal
что будет?
Vort
5.99 ~= 5
Vort
оно же к int приводится
Vort
точнее, целочисленно делится
orignal
при малых значениях ты прав
Vort
ну вот когда я играл прошлый раз в майн его на 6ти заклинило
Vort
а было ли там 6 - это тоже ещё один оочень большой вопрос
orignal
то есть надо округлять
Vort
как минимум
orignal
это другая проблема
orignal
но ты прав да
orignal
что там отбасывание а не округление и будет уменьшать
orignal
std::round написать
orignal
молодец что нашел
orignal
m_RTT = std::round ((m_RTT*seqn + rtt)/(seqn + 1.0));
orignal
попробуй вот так