~AreEnn
~R4SAS
~acetone
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Guest8639
HackerMan
KabaOS
Most2
Nausicaa
Ruskoye_911
Spirit90
Vort
`
ananas_
anon3
dressedie
mittwerk
nemiga
not_bob_afk
plap
poriori_
profetikla
segfault
soos
teeth
un
weko_
whothefuckami
Vort
"<onon1> Ну, а если на том конце кто-то медленный" - уменьшать окно стрима
Vort
"<weko> onon1: это в стримах отправка пучками" - это при полностью заполненном окне такое происходит что ли? откуда берутся пучки?
weko
Да когда окно заполнено
weko
Когда ACK приходит
Vort
ack`и, вроде, идут с интервалом 1/10 от RTT
Vort
пучки большими быть не должны. если я правильно понимаю
weko
1/10 окна получается тогда
Vort
максимум - 128. то есть, около 12 пакетов в ACK`е в среднем при полном окне
Vort
неужели это создаёт проблемы для SSU2 ?
weko
Не ебу
weko
Про ssu2 ничего не говорил и без понятие
Vort
отправлять чётко по одному пакету - это какая-то дурость. при адекватном алгоритме отправки всегда будут небольшие всплески
Vort
вопрос в том, какие всплески допустимы, а какие - нет
weko
Ну не обязательно чётко по одному
weko
Ну можно сделать что максимум 1/10 окна за раз
Vort
допустим, SSU2 окно почему-то не справляется. допустим, не будем разбираться, почему. какой размер очереди нужен сверху, чтобы ему помочь?
Vort
сейчас я сделал 2 секунды. допустим, это дохрена. можно попробовать сделать меньше - к примеру, 2 * RTT
Vort
меня только беспокоит, что если криво вычислим RTT, то будут проблемы
Vort
ну и минимум-максимум ограничение ещё добавить можно. допустим, от 100мс до тех же 2 сек
weko
Не нужна никакая очередь вообще. Не поможет никакая
weko
Хотя, по времени может и имеет смысл
weko
А может и нет
weko
Тут сложнее, но всё равно есть какой то размер
weko
А значит всё равно будет дроп
Vort
по-хорошему, надо чинить стримы, чтобы не отправляли больше, чем надо и SSU2, чтобы давал окно достаточного размера. но если это не починено - вопрос, что тогда
weko
Ну надо чтобы стримы имели ту штуку которая нормально изучает допустимый размер окга
weko
Забыл
weko
Вроде onon говорил
weko
Если это она
Vort
короч, очередь - это запасной вариант, когда что-то пошло не так
Vort
и вот надо сделать так, чтобы в таком случае очередь не вредила сильно
Vort
сделал размер очереди зависящим от RTT:
Vort
проверять надо хорошо, потому что я уже допускал ошибки в похожих местах (да и сейчас несколько сделал и уже выловил)
Vort
с этим коммитом дропы (транзита) начинаются при лаге > 3 * RTT
Vort
но на всякий случай сделал ещё плюс мин-макс лимиты 200..2000мс
Vort
дропы своих пакетов начинаются при достижении половины этого значения: 1.5 * RTT
Vort
RED пока что не делал, надо бы вначале динамический размер полноценно оттестировать
tetrimer
Vort: собрал, запустил... Вроде живет и работает.
Vort
хорошо, спасибо
tetrimer
Навскидку - стримы с rtt=8000 - стали быстрее переходить в рабочее состояние или закрываться.
tetrimer
МОжет и раньше было, но сейчас - как только появляются отличные от нуля значения в колонке Buf - стрим в следующий момент из статистики пропадает (закрывается).
tetrimer
Некоторые такие стримы - доживают до следующего запроса статистики (3-5 сек).
tetrimer
А, нет: есть долгоживущие заклинившие.
tetrimer
3780621586 [12]X 4uk....b32.i2p 2874 1675 1 0 188 8000 1 1
tetrimer
3780621586 [13]X 4uk....b32.i2p 3353 1675 1 0 188 8000 1 1
tetrimer
Две минуты уже висит почти не меняясь.
tetrimer
Пропал.
onon
Вот скажи ворту, чтобы разбирался с такими вот зависшими стримами.
tetrimer
Так я давно говорю, что надо их как-то более агрессивно сбрасывать по времени неактивности.
onon
А то он не совсем понимает зачем нужно окно в стримах и предлагает странные вещи.
Vort
"<onon> А то он не совсем понимает зачем нужно окно в стримах и предлагает странные вещи." 1. какие вещи? 2. какое отношение окно имеет к зависанию стримов?
Vort
3. так я этим и занимаюсь уже многие месяцы - гоняю баги
Vort
tetrimer: судя по графикам, узел "666" очень необычно отреагировал на мой коммит
Vort
возможно, коммит какую-то проблему создал, но, вероятнее, он какую-то проблему проявил
tetrimer
Я пока наблюдаю.
tetrimer
Стримы к локальным ресурсам - вроде как появляются и трафик идет.
tetrimer
Client Tunnels: 84 Transit Tunnels: 0 - забанили?
tetrimer
На полчаса - кто банит?
onon1
Vort, 1. разные странные вещи, я уже указывал какие. 2. Похоже, что никакого, поэтому и предлагаю.
tetrimer
На третий раз забанили гораздо быстрее.
tetrimer
То-ли вручную банят, то-ли работа какого-то умного алгоритма.
Vort
onon: "разные странные вещи" - какая самая странная из них?
Vort
"Похоже, что никакого, поэтому и предлагаю" - разбираться с проблемами надо, а не избегать их. по крайней мере, пока есть возможность
Vort
tetrimer: мой коммит дал какой-то необычный эффект. на моём узле такого нету, так что нужна будет дополнительная информация
Vort
tetrimer: можешь подсказать, много ли отметок [queue: на вкладке Transports в разделе SSU2 ?
Vort
"Transit Tunnels: 0 - забанили?" - скорее всего, это упор в лимит. скорее всего, по трафику. почему это происходит - надо разбираться
Vort
запущу сейчас у себя OfR узел - послежу за его поведением. но дополнительная информация по "666" всё равно желательна
onon1
Vort: onon: "разные странные вещи" - какая самая странная из них? - Та что бесконечный буфер не будет заполняться, если в него пихать много пакетов.
Vort
не припоминаю такого. бесконечных буферов не было и нету. "конец" задаётся лимитами по времени
Vort
про то, что не будет заполняться - я не мог говорить, иначе не было бы смысла ставить ограничение по времени
Vort
что мог сказать - это то, что на моём узле заполнение очередей - явление очень редкое
Vort
если есть цитата - могу попробовать вспомнить, что я тогда имел в виду
Vort
ещё что мог сказать - это то, что если количество пакетов соответствует ширине канала, то да, заполнения очереди быть не должно. но в этом я не полностью уверен
Vort
и это соответствует ситуации на моём узле. скорее всего, возможности отдельного канала превышаются редко
onon1
Про стоячие волны почитай. А сейчас нет очередей потому, что большинство узлов - медленные, со старым cc на стримах, как начнут обновляться - заметишь, но будет поздно.
Vort
сейчас ресурсы сети забиты почти полностью. так что сильно скорость не прыгнет. может, раза в 2, не больше
Vort
если контроль на стримах действительно реагирует на перегрузку, то больше существующих возможностей сети он не запросит
Vort
но на всякий случай я всё же уменьшил размер очередей в 5-10 раз (в коммите ac9d92c6)
Vort
для обычного значения RTT в 125мс размер буфера с этим коммитом будет на 400мс
tetrimer
Vort: > много ли отметок [queue - Вообще ни одной нет, по крайней мере сейчас.
Vort
tetrimer: повышенное количество сфейлившихся туннелей на графике подтверждается и в консоли?
Vort
ну и 5 тыщ аж SSU2 сессий - тоже подтверждается?
tetrimer
SSU сейчас было 4К с чем-то
tetrimer
SSU2 ( 4977 )
Vort
вот. это необычно
tetrimer
Это же парсится вывод консоли через lynx.
Vort
а с фейлами что - там failed или test failed ?
tetrimer
Это в туннелях. Сейчас там 38
Vort
failed или test failed ?
tetrimer
2351854770:me => m4~Q => m~80 => M9hl => ( 86ms ) failed, 6 KiB
tetrimer
1849615484:me => NMF2 => lCS5 => failed (exploratory), 1496 KiB
tetrimer
592235795:me => 4Xp7 => 6k59 => ngLo => failed, 5 KiB
Vort
то есть, в основном, просто failed? без test failed?
tetrimer
Мне казалось, что test failed в другом месте пишутся. Сейчас гляну
Vort
они и там бывают
tetrimer
Сейчас - не видно.
Vort
я уже думаю, может мой код как-то не так собрался. слишком подозрительный эффект. но пока что надо разбираться с тем что есть (чтобы не упустить проблему/баг)
Vort
tetrimer: какой уровень логирования у узла?
tetrimer
Сейчас error. Могу переключить.
Vort
поставь пожалуйста warn на минутку
tetrimer
ПОставил
tetrimer
19:36:36@595/warn - SSU2: Unexpected message type 111 from 82.65.186.186:12379 of 135 bytes
tetrimer
19:36:36@595/warn - SSU2: Unexpected message type 186 from 23.128.248.24:7777 of 78 bytes
tetrimer
Пошло куча вот таких сообщений
Vort
надо будет проверить, много ли сыпет "SSU2: Outgoing messages queue to **** is semi-full" в лог
tetrimer
Пока - ни одного нет.
Vort
ну там вместо **** хеш (адрес) узла
tetrimer
В исходниках - такого сообщения тоже нет.
tetrimer
Может я чего-то не то скачал?
Vort
проверь, пожалуйста, что находится на строчке 404 в SSU2Session.cpp
tetrimer
403 packet->payloadSize = CreateAckBlock (packet->payload, extraSize);
tetrimer
404 ackBlockSent = true;
tetrimer
405 if (packet->payloadSize + 12 < m_MaxPayloadSize)
tetrimer
Точно не то.
Vort
это какой-то не тот код
Vort
github.com/Vort/i2pd/commit/ac9d92c681996e87c2db9da73a2920b934045f97#diff-506cabbe2bfef062c29b5beeb38ae0e5de33c3d172dd7d41c26ccde35d661c1bR404
Vort
вот что должно быть
Vort
if (!msg || msg->IsExpired (ts) || msg->GetEnqueueTime() + m_MsgLocalExpirationTimeout < mts)
tetrimer
Нда, не тот код стянул.
Vort
ну, значит, это не из-за ошибки в моём коммите =)
tetrimer
То-то у меня и не сходилось версии коммитов...
Vort
ветка называется ssu2_lag
Vort
там это единственный коммит
tetrimer
Вроде нашел. Сейчас пересоберу
tetrimer
Vort: Version: 2.46.1-448-gac9d92c6
tetrimer
Похоже?
Vort
ага, нормально, это я тег просто не перенёс
tetrimer
20:00:51@595/warn - SSU2: Outgoing messages queue size to KdxTiPkN7P1T3zv8QSRNw3hJmqLK71LKl5PEIYDg0m
tetrimer
8= exceeds 500
tetrimer
Это?
tetrimer
Или надо именно semi-full?
Vort
это точно после перезапуска?
tetrimer
Не факт, кстати.
tetrimer
20:06 запуск был. Значит это от предыдущей
tetrimer
20:21:45@860/warn - SSU2: Outgoing messages queue to pnQP is semi-full (size = 3, lag = 106, rtt = 22)
tetrimer
20:21:45@860/warn - SSU2: Outgoing messages queue to pnQP is semi-full (size = 4, lag = 214, rtt = 22)
tetrimer
20:21:45@860/warn - SSU2: Outgoing messages queue to pnQP is semi-full (size = 5, lag = 235, rtt = 22)
Vort
если эти сообщения относительно редки, то всё в порядке
Vort
у меня бывает минут по 10 нету ни одного
Vort
похоже, "поджатие" очереди прошло успешно
tetrimer
Ага, ну тогда подождем до завтра и посмотрим.
relaybot
13HDpgaupUF: hi