~AreEnn
~R4SAS
~acetone
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Guest7184
Leopold
Most2
Nausicaa
Ruskoye_911
Vort
`
anon2
karamba_i2p
nemiga
not_bob_afk
plap
poriori
profetikla
soos
teeth
un
weko_
whothefuckami
weko
'
weko
упс
weko
проверяю фиус
weko
фикс
orignal
смотри на ошибки
weko
ну есть лаги но это пока хз что. а вот ntcp2 не рвётся
weko
конкретно зависания нету
weko
могу проверить одновременно подключение
weko
для этого порежу очередь
weko
лаги это Streaming: Duplicate message 2758226 on sSID=1753586868
orignal
надо тот сценарий когда AEAD вылазил
weko
да именно так и делаю
weko
я ничего не менял
weko
больше не вылазит
weko
обычно быстро вылазило
weko
второй раз проверил
weko
нету
weko
думаю можно считать что исправлен
weko
о
weko
кажется одновременное подключение не очень работает
weko
хотя может дело не в этом
weko
когда очереди не хватает, сессия рвётся, после создаётся снова, снова рвётся из-за того что мы переотравляем кучу сообщений
weko
а далее как будто и попыток нет
orignal
с очередями тут надо иначе
weko
Streaming: Another remote lease has been selected for stream with rSID=4097761485, sSID=2376862680
weko
Streaming: Another outbound tunnel has been selected for stream with sSID=2376862680
weko
Streaming: Another remote lease has been selected for stream with rSID=4097761485, sSID=2376862680
weko
как бы пишет это но кажется попытки переотправки нету
weko
<orignal> с очередями тут надо иначе
weko
знаю что надо дропать, я пока для теста не меняю
orignal
я предлагаю к I2NP сообщению приделывать коллбэк на случай дропа
orignal
если дропнули коллбэк вызываем
weko
и что будет выполняться?
orignal
например на запрос на построение тоннеля
weko
а что выполнять то в коллбэке?
orignal
сработал коллбэк значит не ждать ответа на построение тоннеля а помечать как отлуп
weko
а
orignal
так в том и идея коллбэка что туда может быть поставлено все что угодно
weko
но это только если дропнулось у нас
weko
а если где то ещё мы не узнаем
orignal
ну да
weko
для этого надо сложее систему
orignal
чем сложнее то?
weko
протокол менять возможно
orignal
нее я только про нас
weko
orignal: тем что это надо вписать в концепцию туннелей
weko
да понятно о чём ты
orignal
также запросы роутеров например
weko
orignal: можно например в таком случае транзитный туннель не создавать
orignal
можно да выкидывать у себя
weko
угу
orignal
если дальше сообщение не отправилось
weko
ну да в любом случае надо
weko
можно даже не коллбэк я просто очередь проверять
weko
текущий размер
orignal
давно такая мысль зреет
orignal
коллбэк универсален
orignal
если надо дропнуть вызываем его
orignal
природа коллбэка не кажна
weko
например если TBM, смотрим куда просят отправить, если очередь забита >50% то пытаемся отправить отлуп
orignal
кому отправить отлуп?
weko
владельцу
orignal
как?
weko
ну так мы же как транзит можем отлуп прислать
orignal
мы ставим код
weko
ну вот код
orignal
а отсылаем тем путем где забита очередь
weko
orignal: она забита на 50%
orignal
ну то есть ты знаешь что очередь забита но ты никуда не можешь отправить потому что она забита
orignal
а ну да понял мысль наверное можно
weko
ну потому что уже перегружен транспорт
weko
а тут ещё туннель идёт
weko
коллбэки тоже можно но сделать именно 50% яерез них не выйдет
weko
это отдельное будет
weko
если именно дропнулось
weko
<weko> коллбэки тоже можно но сделать именно 50% яерез них не выйдет
weko
на самом деле можно, но не уверен что можно
weko
думаю лучше проверять очередь. так проще код будет
weko
короче очередь транспорта должна быть с запасом под максимальное окно
weko
до тех пор пока не будет сделано отправка более маленькими пачками
weko
и можно будет подстроить очередь под эти пачки
orignal
короче надо начинать с коллбэков
orignal
счас я спрошу у деда про коды
weko
начать надо сделая чтобы не рушилась сессия ))
weko
окей
weko
думаю там есть что-то типо "перегружен"
weko
а говорить всем подряд что перегружен именно транспорт нахуй надо
orignal
вот я его и хочу спросить
weko
<dr|z3d> just restating so we've got the full informal proposal(s) in one place, weko.
weko
бесит
orignal
так дрозд
weko
опять я что-то сломал
orignal
ну бывает ))
weko
главное что я не знаю что я сломал
weko
я откатил до того момента, когда работало
weko
и не работает
weko
приехали
weko
теперь вообще ntcp2 сессию не создаёт
orignal
лол
orignal
так возьми код с гитхаба и все
weko
и главное ничего не менял
weko
да может профили
weko
хз
weko
прочищу
weko
с тем же кодом работало а теперь нет
weko
не дело
weko
да явно профили
weko
уж не знаю что там багуется
weko
0+0 в этом плане конечно проблемный
weko
надо делать 0-1 +- 0-1
weko
хотя хватит даже 0+_1 + 0
weko
0-1
weko
я кстати понял с чем связан баг с UDP
weko
всё просто
orignal
и что там?
weko
i2pd отправляет с одного адреса и одного порта
weko
а сервер видит соответсвенно один адрес и один порт
weko
даже если в i2p пришло с разных
orignal
не понял
orignal
первый с порта 1234 второй 1235
orignal
они же будут разные
weko
i2pd использует разные порты?
weko
важно реально ли использует
weko
потому что если source port всегда один - то понятно почему такое возникает
weko
сервер конечный тупо не разбирает кто есть кто
orignal
socket.bind (localEndpoint);
orignal
так надо разные
weko
localEndpoint ну понятно
orignal
source тот к которому привязка
orignal
всегжа
orignal
он явно привязавается
weko
а нельзя на каждую датаграмму?
weko
потому что для наших целей надо
orignal
что на каждую датаграмму,
weko
на каждую датаграмму указывать source
weko
soutce port
weko
source port
orignal
так он и указывается у сокета
weko
так у сокета с которого мы отправляем
orignal
угу
weko
он же один раз создаётся и всё
orignal
ну так у него всегда один и тот же
orignal
который ставится в заголовок когда отправляешь
weko
вот потому и баг
weko
надо проверить и дальше думать как исправлять
orignal
ты ерунду говоришь
orignal
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
orignal
const struct sockaddr *dest_addr, socklen_t addrlen);
orignal
вот смотри системный вызов для отправки датаграммы
orignal
где ты тут видишь source?
weko
ну его нету тут что плохо
orignal
его и не бывает
weko
ну значит разные сокеты надо делать
orignal
потому что он всегда задается у сокета через который отправляется
orignal
ну счас
weko
под каждого i2p клиента
orignal
нет не надо
orignal
там все правильно сдедлано
weko
это не верно
orignal
ну конечно тебе виднее ))
weko
объясняю
orignal
люди десятилетями гоняют данные по мультикасту например
weko
orignal: факт в том что >1 udp клиента не работает
weko
нормально
orignal
все работает
weko
проверено на нескольких играх
orignal
ты о чем вообще?
weko
объясню
orignal
ты про SSU2 счас или про тоннель?
weko
про UDP туннель
weko
именно сервер
orignal
а ну там совсем другая проблема
orignal
там думать надо
orignal
и да на каждого клиента надо делать свой порт
orignal
там все непросто
orignal
я думаю ты про SSU2
weko
через локахост можно ещё range адресов
weko
нет я не про ssu2
weko
я именно про туннель
orignal
эту проблему я знаю
weko
так а почему не сказал сразу?
weko
мы с леопольдом добились кучу часов
orignal
ну смотри
weko
долбились
orignal
там идея же какая
orignal
вот есть клинент
orignal
он сам выбирает какой то порт если без явной привязки
orignal
этот порт идет вместе с датаграммной сессией
orignal
и серверная сторона должна открыть сокет именно на нем
orignal
это как по замыслу
weko
должна
weko
на самом деле слать какой именно не обязательно
orignal
но если у вас в ваших играх UDP привязан к конкретному порту ясен пень что нихуя не будет работать
weko
обычно source port никто не проверяет
weko
orignal: ну дак
orignal
то есть вам надо как то сделать чтобы игровые клиенты сидели на разных портах
weko
обычно адрес и source port уникальные для каждого клиента
weko
а тут выходит что нет
weko
да
weko
именно так
orignal
а тут только source port
orignal
из-за этого и проблемы все
weko
тут и source port одинаковый как раз
orignal
я вроде это давным давно объяснял
weko
ладно адрес один
orignal
ну да
orignal
это же давно выяснили
orignal
а как чинить я пока не занимался
weko
так чего не сказал?)
weko
вот проблема точно известна
orignal
сразу сказал
orignal
но тут вот какой вопрос еще
weko
не помню такого
weko
мы с лео искали причину оч долго
orignal
127.0.0.1 и 127.0.0.2 считаются разными адресами или нет?
orignal
вот тут я не уверен
weko
думаю да
weko
разные байты
orignal
ну если так то легко решается
orignal
но это не факт
weko
но смотри - разные порты всё равно надо сделать. потому что не всегда конечный сервер на локалхосте
orignal
и только для линукса
orignal
ну тогда да жопа
weko
у меня конечный сервер может быть в локалке
weko
<orignal> ну тогда да жопа
weko
ну не совсем
weko
просто надо сокет под каждого клиента
weko
orignal: вот в стриминге source port передаётся?
orignal
а там зачем? там эфемеральный как во всем TCP
weko
а в udp считается что нет, да?
orignal
но вообще да он в пакетах передается
orignal
udp устроен иначе
weko
тоесть некоторые сервера могут на него ориенитироваться
orignal
в TCP никто клиенский порт не смотрит
orignal
потому что он почти всегда эфемеральный
weko
да понимаю
weko
а вот в udp смотрят иногда, верно?
weko
ну кроме как различить клиентов
orignal
естественно
orignal
потому что в UDP нет понятия сессия
weko
просто может быть такой прикол, что например игра всегда использует как source port одно значение
weko
и мы опять упираемся в эту проблему
orignal
в udp может
orignal
в tcp я вообще никогда не видел чтобы делали привязку клинтского порта
weko
ну там и не надо
orignal
вообще нигде и никогда
orignal
приязяку к адресу делают
orignal
порта никогда
weko
в udp по логике он нужен только для отличия клиентов с одного адреса
orignal
ну так и в TCP тоже
weko
ну просто в tcp это делает ОС, а udp сам сервер
orignal
просто в udp делают привяку к порту а в TCP нет
orignal
по множеству причин
weko
<weko> просто может быть такой прикол, что например игра всегда использует как source port одно значение
orignal
да нет в udp по умолчанию тоже эфемкальный по умолчанию
weko
а
orignal
в udp конечно может
orignal
в tcp скорее всего нет
weko
orignal: в tcp кстати тоже можно source port задать. но это нахер не надо
orignal
просто в udp почему делают привязку потому что нет сессиий
weko
да я понимаю
orignal
можно. но я лично никогда и нигде такого не видел
weko
вопрос в другом
weko
что клиент может ставить всегда один source port
weko
и тогда если мы используем source port что прислали, мы опять на сервере не можем различить клиентов
orignal
в TCP?
weko
UDP
weko
речь про UDP
orignal
конечно может
weko
не может потому что один адрес и порт
orignal
но если на localhost мы может 127.x.x.x делать
weko
это да
orignal
3 байта от b32
weko
но это не всегда возможно, потому порты тоже надо сделать
weko
orignal: короче я думаю надо использовать порт который прислали, если он не занят, а если занят - на основе b32. или же мы забиваем на то, что нам прислали и всегда используем порт на основе b32.
orignal
подумаю я сначала
weko
хорошо главное что на повестке
weko
есть конретный запрос чтобы в udp игры играть можно было нормально
orignal
там c UDP тоннлем проблем еще до жопы
orignal
псих крайне коряво его сделал
weko
это основная
weko
если сделать так может можно попробовать мультеплексеры трафика
weko
чтобы по нескольким туннелям могло идти
weko
ну костыльно придётся через несколько destinaion , но лучше так чем никак
weko
можно будет делать стабильные звонки через i2p
orignal
sip тоннель это еще другая тема
weko
не я про mumble хотя бы
weko
а то с ним большие беды с точки зрения лагов
orignal
у лагов там иныче причины
weko
основная что дохнут туннель и мы не знаем
weko
так если несколько туннелей
orignal
и как раз из-за отсуствия того самого окна которое у стримов
weko
то один сдох а второй живой
weko
orignal: ну там можно битрейт ограничить
orignal
там еще куча проблем
weko
но основная - эта
weko
со стримами не меньше
weko
Streaming: Duplicate message 1203739 on sSID=1280214068
weko
вот например
orignal
неправда
weko
хотя это как раз вероятно из-за перегрузки треда
orignal
основная проблема i2pd что мне некогда ))
weko
orignal: ладно, udp сделаешь?)
orignal
возможно как будет время
weko
ну не сразу
orignal
но сначала коллбэки для I2NP
weko
просто растяни на пару дней если не успеть за один
orignal
так у меня друших дел полно
weko
orignal: смотри вот этот баг пофиксили и получили +- стабильные 20 MB/s. и то это упор в процессор
weko
<orignal> так у меня друших дел полно
weko
но немного времени находишь
weko
даже вот сегодня
orignal
ну вот сегодня нашел
weko
по коммитам видно что находится
weko
просто ну это важная проблема
orignal
ну это счас было время просто
orignal
обычно месяцами не бывает ))
weko
ну значит в очередь идёт задача
weko
у меня огромная тудашка есть
weko
вот спрашивай что важное самое
orignal
ну да
orignal
постепенно
weko
а то мелкие баги исправляются а серьёзные лежат годами
weko
как например с Garlic
orignal
потому что на мелкие нужно меньше времени
orignal
с Garlic там проблему надо изучать
weko
не всегда
orignal
там нет простого фикса
weko
да тут сложно
weko
а udp всё понятно
weko
и было понятно давно как ты сказал
orignal
ну так а чинить времени нет
weko
вместо чего-то менее важного просто сделай
weko
на самом деле мультиплексер может и по tcp ебашить, просто ему самому перепосылку реализовывать не надо будет
orignal
это как?
weko
ну мультиплексер трафика
weko
чтобы по нескольким туннелям пустить
weko
для улучшения стабильности в первую очередь
orignal
так если игра требует UDP
weko
ну его настроить можно будет
orignal
как ты тут TCP приделаешь я понимаю
weko
речь не о именно об игре
weko
это может быть и mumble
weko
трафик с него идёт в мультеплексер
weko
вот его уже можно настроить
weko
чтобы гонял через i2p с помощью tcp или ud[
weko
ydp
weko
udp
weko
ну да... если клиентская аппа использует udp, то надо udp
weko
а если tcp, то tcp
weko
ну и в случае tcp подстраиваться должен под самый слабый сокет
weko
я даже сам могу такой написать
weko
но лучше сначала готовые посмотрю
weko
Будет тула чтобы тестировать коннект и будет чтобы его улучшать)... Надеюсь
weko
С TCP знаю как нужно поступить
weko
Нужно короче как то без принимания сессии получать пакеты
weko
Маскировать их под udp и сдать через i2p
weko
Слать
weko
Ну соответственно отправляя двумя путями
weko
А дальше там уже TCP сам разберётся
weko
Но блин палево наверняка каких то системных параметров
weko
Я чот мудрю
weko
Короче с TCP тоже понятно. Там просто нужен баланс между скоростью и стабильностью
weko
Самое верное тут - сразу делать в i2pd.
weko
⇒184239426⇒108.91 MiB
weko
⇒1531364508⇒384.70 MiB
weko
i2pd NTCP2-only
weko
Жесть пшло трафика
weko
Хм. А можно добавить какой нибудь флаг для TBM, который виден всем, что дан отлуп или нет (но без информации кем). Чтобы не создавать транзитные туннели в памяти лишние
Vort
в Deluge вроде можно исходящий TCP порт задавать. но я не на 100% уверен. imgur.com/dVpvT9P
orignal
а надо спросить у деда
orignal
weko читал что дед сказал?
weko
Нет
orignal
когда очередь то надо отсылать не все подряд а с приоритетом
orignal
свои сообщения в обход очереди
weko
Верно говорит
weko
Ну а поводу "дропайте на уровне туннелей, а не транспорта" - так возможно можно немного оптимизировать, но по сути разницы то нет где дропать
Vort
это речь о транзите?
weko
В основном да
Vort
ну да, тут инициатор коннекта решает, куда транзитный узел должен переслать данные. и если туда не лезет - ничего не поделать
Vort
разве что свои данные можно оттуда убрать. но шанс такой ситуации - доли процента
Vort
разве что стоит посмотреть, в каком случае будет больше ресурсов тратиться на восстановление связи
Vort
так как туннели - внутренний уровень - то, может, действительно, "дешевле" тут дропнуть
weko
Vort: пока только дропнуть можно
weko
Но в идеале сказать заранее владельцу что перегрузка
weko
Чтобы он перенаправил часть трафика на другой туннель
Vort
кстати, ещё может быть вариант - когда два жирных туннеля идёт по транспорту. в таком случае, можно один дропнуть, а второй сам по себе перегруза не даст
Vort
так что наверно действительно транспорт лучше не трогать
Vort
идеал он очень далёк, пока что надо сделать то, что можно сделать сейчас
weko
Vort: я как раз говорил про это
weko
А дед сказал что надо принимать оба
weko
Но я думаю как раз не надо
Vort
так пока принимаешь - не знаешь, какие скорости будут
weko
Если забит транспорт, чего его ещё больше мурыжить
Vort
а как только начинают переполнять очередь - тогда понятно
weko
Ну смотри мы смотрим когда TBM обрабатываем. Если забито на 50% - шлём отлуп
Vort
weko: если уже переполнена - тогда другое дело
Vort
не будет ли это искусственным затормаживанием сети?
weko
Только TCSR
Vort
забитость очереди ведь коррелирует с максимально возможной скоростью?
Vort
ну для узлов с высоким пингом, понятно
weko
Да
weko
Когда очередь забита значит транспорт не справляется
Vort
в общем, хз. может, надо не только на размер очереди смотреть, но и на то, насколько быстро она в состоянии рассосаться
weko
Vort: да, тоже логично
Vort
weko: я немного о другом. если у узла высокий пинг, то у него может быть постоянно забита очередь даже если он справляется
Vort
просто подтверждения долго идут
weko
Vort: ну тогда должно окно увеличиваться
Vort
хотя вообще я плохо понимаю ситацию, может глупости говорю
weko
Окно системное если NTCP2
weko
И окно в коде если SSU2
weko
Очередь это другое
weko
orignal: проверю, есть ли дубликаты, если увеличить количество ACK
weko
предполагаю, что в ACK просто не влезает
weko
Ещё может очередь тоже влиять. Там 10000 я ставил, а окно 8196
weko
Надо 20К очередь
orignal
LeaseSets: 334
orignal
новое
Vort
у меня как обычно
Vort
зато у меня трафик транзитный "прыгает"
Vort
то полмегабайта/сек, то два
orignal
ты с последним коммитом?
Vort
да
Vort
тоже поначалу подумал, что коммит может так влиять
Vort
но маловероятно
Vort
если бы там было что-то не так, то глючило бы постоянно
Vort
а волны - это какие-то внешние эффекты дают скорее всего
orignal
у меня транзита стабильно много как обычно
weko
Да я думаю жирный туннель
weko
Vort: смотри всегда есть ли туннели с кучей трафика
orignal
weko а ты видел как дед мне доказывал что жирных тоннелей не бывает?)
weko
orignal: да
weko
Мол транспорт не перегружается никогда
orignal
приколист
orignal
ага потому что у той стороны много других пиров
weko
Ну может в javai2p и правда нету
weko
)
orignal
ну ну
orignal
может
weko
Ну ты понимаешь
orignal
они просто дропают
weko
Откуда у них жирные туннели если их не тянуть
orignal
ну я и говорю что дропают
orignal
но он натолкнул меня на много полезных идей
weko
orignal: дропают при каких условиях
orignal
да там куча всего
orignal
но мы начнем с приоритетов I2NP сообщений
weko
Ну норм только если при привышении лимита по трафику
orignal
разумеется
weko
Стоит у нас 3000 а идёт 3500
orignal
если очередь есть
weko
Тогда окей можно дропать
orignal
нет я не дропать хочу
orignal
для начала втсавлять в начало очереди свои сообщения
weko
Это да верно
weko
главное чтобы так сдеанонить нельзя было
Vort
это в случае когда свой туннель через перегруженный транспорт идёт что ли?
weko
Vort: да
Vort
не лучше ли на другой туннель переключиться? уж тут то выбрать можно
weko
Vort: ну да так лучше
weko
Просто боюсь приоритет наших сообщений может быть использовано для деанона
orignal
так они же все равно будут перемешиваться
weko
Ну тут подумать надо
weko
Я просто предполагаю
orignal
да и вставлять можно не в самое начало
weko
Что особенное поведение наших сообщений можно как то заметить
weko
Да даже есть идея как использовать
weko
Лучше туннель сменить
orignal
ну тогда дропать не наши когда очередь большая
orignal
причем случайно
weko
ну подумать надо
weko
думаю таже беда
weko
на втором пире можно посмотреть статистически
weko
если дропать то и свои тоже
orignal
так получается счас дед палится
orignal
с приоритетами
weko
вероятно
weko
у них же в роутере бэкдор есть
weko
как бы
weko
о чём тут вообще говорит
weko
говорить*
weko
при чём который они не скрывают
orignal
вот что надо сделать это урезать аппетиты отдельных тоннелей
orignal
если много сидит на одном линке
weko
Streaming: Number of NACKs exceeds 256. seqn=174327 nextSeqn=174045
weko
orignal: ну да лимит сделать а то достали
orignal
дропать на хуй
orignal
именно с тех кто много срут
weko
гоняют цп туда-сюда ))
weko
Streaming: Number of NACKs exceeds 256. seqn=174327 nextSeqn=174045
weko
вот такая хуйня всплывает когда очередь маленькая слишком
weko
I2PTunnel: Client Tunnel Issue when creating the stream, check the previous warnings for more info
weko
интересно... нет нихуя)
orignal
ну разбираться надо
weko
сообщения дропнулись и он отправить ACK не может
weko
ну и всё виснет
orignal
так разрывать надо
weko
ну проблема с отправкой ACK
weko
прикол то в том, что дропаются последовательные сообщения
weko
можно ускорить отправку ACK, может поможет. а может и нет
weko
Streaming: Missing messages on sSID=2008218537: from 174045 to 174326
weko
Streaming: Number of NACKs exceeds 256. seqn=174327 nextSeqn=174045
weko
соотвественно сообщения дропаются на первом пире: NTCP2: dropping I2NP messages to UBxd~t6gvZQ1JowOQq1w9qhn~~2Gy7XCE6eJjXmUQZ8=: can't be added to session queue due max queue size: 50
weko
смешно
weko
если заканчивать сессию, то всплывает баг с Garlic
weko
если дропать, то баг с NACK
orignal
а почему 50?
weko
потому что для теста
weko
и потому что 500 это реально много
orignal
на самом деле там надо по времени
orignal
не более 5 секунд например
orignal
если сообщение сидит дольше то дропать
weko
зачем?
orignal
кстати я наверное это в коде не делаю
orignal
а у любого I2NP есть протухание
orignal
с
weko
максимальная очередь должна зависеть от скорости транспорта
orignal
этого и начну
orignal
правильно
orignal
если сообщение стоит меньше секунд пусть хоть 100 тыс будет
weko
orignal: протухшие i2np можно удалять
orignal
ну да
orignal
в момент выгрузки из очереди
weko
а именно по времени не надо
orignal
а я наверное не делаю
orignal
ну хотя бы протухшие для начала
weko
ну это да точно надо
weko
потому что они всё равно не нужны
orignal
bool IsExpired () const;
orignal
даже метод есть
weko
круто
orignal
ну в тоннелях оно проверяется
orignal
а вот в транспортах нет
weko
так можно проверять только в транспортах, нет?
weko
orignal: по поводу ACK
weko
почему nack не имеют диапазонов?
weko
или же есть почему не используются
orignal
не помню уже
orignal
видимо в те времена quic еще не придумали
weko
ну кое что я понял
weko
короче такая суть
weko
я примерно понял что происходит
orignal
че?
weko
и в чём баг тоже знаю
weko
со стримами
weko
всё начинается когда дропается один пакет
orignal
возможно
weko
подожди пока
weko
соответсвенно срабатывает ветка где пишется Streaming: Missing messages ...
orignal
ну
weko
но дело в том, что она срабатывает не один раз, а ещё каждый раз на новый пакет, пока не придёт перепосылка
weko
и в этой ветке идёт код отправки ACK
orignal
логично
weko
ну вызывается функция
weko
как минимум не должно спамить в лог
weko
потому что пакеты по факту приходят, а пишет в лог что пропущено дохующе сообщений
weko
короче получатель шлёт на каждый из этих пакетов NACK (что и есть баг). в итоге отправитель думает что всё, пиздец, начинает перепосылку такую, что в очередь начинает не влезать > 256 соообщений, они соответсвенно не доходят, ну и получателя вылезает Streaming: Number of NACKs
weko
exceeds 256.
orignal
ладно подумаю
weko
посмотри там логику
weko
может что-то очевидно вылезет
weko
очевидное
orignal
да нет там точно не очевидное
orignal
насчет отправки NACK посмотрб
weko
там главное что срабатывает ветка кода много раз, тогда как должна один раз
weko
Streaming: Missing messages
weko
вот эта ветка
weko
точнее срабатывает то верно
weko
SavePacket (packet); например делать надо
weko
а вот SendQuickAck тут надо только первый раз
weko
ну точнее только тогда как пакет реально пропущен, а не пропущен где то в прошлом
weko
а сделано ли правильно остальное в коде не знаю
weko
ну ладно если что известно как вызвать багу
weko
orignal: пока думаю, что нужно увеличить максимальное окно до 512, а очередь до 1000
orignal
попробуй
weko
так уже же
weko
но гляну в основной сети как ещё кое что потыкаю
orignal
там и надо