~AreEnn
~R4SAS
~acetone
~orignal
~villain
@onon
&N00B
+relaybot
DUHOVKIN_
Guest7184
Komap-
Most2
Nausicaa
Nikat
Ruskoye_911
Vort
Xeha
anon3
b3t4f4c3
fidoid
karamba_i2p
nemiga
not_bob_afk
plap
poriori
profetikla
qend
segfault
soos
teeth
tetrimer_
uis
un
unlike
user
weko
whothefuckami
WebClient22
R4SAS здравствуйте
WebClient22
Теперь можно тестить
Vort
"<~orignal> нагрузки на проц нет" - ну да, меньше перепосылок - меньше нагрузки. но у меня подозрение, что перепосылок как-то совсем мало, надо ещё разбираться
Vort
понял кое какую особенность расчёта RTT в SSU2:
Vort
в стримах seqn вначале равен нулю и поэтому раньше это позволяло начать оценку с первого реального значения
Vort
в SSU2 же m_SendPacketNum начинается где-то с двойки, поэтому единственный вариант вычисления - сползание с начального значения
Vort
мне это показалось неправильным и я решил потестировать вот такой вариант: github.com/Vort/i2pd/commit/d74033dd2b7929c2d082f01df665761b4c831266
Vort
onon1: как думаешь - улучшит изменение работу узла или ухудшит? я знаю, что оно неидеально, не в этом вопрос
Vort
ещё кое что заметил. для отладки я добавил локально отображение RTT SSU2 в вебконсоли
Vort
и мне опять на глаза попались узлы с одинаковым хешем: yQN8
Vort
так вот RTT у них считается только на одном из клонов - yQN8: 94.134.180.15:4483 ⇒ [21851619:1522486] [70ms]
Vort
на нём же и основное количество трафика, у остальных намного меньше
Vort
то ли эти клоны не так уж безобидны и это всё-таки атака, то ли они умудряются как-то заглючивать i2pd, не позволяя ему нормально считать RTT
Vort
ещё один вопрос - пытаются ли через них строиться туннели пропорционально их количеству? если они глюченые и бестолковые, то, может, это является заметным вкладом в проседание рейта
Vort
с DtQs точно такая же картина
Vort
и с F~Uz тоже
Vort
забанить бы их нахрен по причине ворованных ключей да и всё - пусть по-нормальному узлы свои настраивают
Vort
но если уж очень жалко, тогда надо искать, из-за чего такая ситуация приводит к глюкам
onon
Vort: onon1: как думаешь - улучшит изменение работу узла или ухудшит? я знаю, что оно неидеально, не в этом вопрос
onon
Так протестируй, только важный момент. При таком расчёте не забудь убрать новый таймстемп при перепосылках. Иначе он сваливается в яму.
onon
И на стримах и на SSU
Vort
onon: у меня ж коммит с расчётом RTT, при чём тут перепосылки?
Vort
и о каком конкретно месте речь - что именно убрать надо?
Vort
вот это что ли? it->second->sendTime = ts;
onon2
Да
onon2
И в стримах тоже
Vort
так вроде ж это специально так сделано - чтобы каждая новая перепосылка была всё реже и реже
Vort
не совсем понимаю, правда, зачем
onon2
Проблема появляется, когда аск пакета уже на подходе, а ты перепосылаешь по таймауту. Получаешь аск, считаешь ртт, и -магия- он очень низкий.
onon2
И ты от него потом считаешт новый ртт а от него рто и начинаешь всё перепосылать заново
onon2
Сваливаясь в яму
Vort
подумаю, что тут делать. мне кажется, просто выкинуть эту строчку - неправильно
onon2
Поэтому обработать завышенный ртт от перепосылки проще чем заниженный
onon2
Я пока в своих экспериментах делаю так
Vort
onon2: вообще, такого быть не должно. глянь вот эту строчку: if (ts && !it1->second->numResends)
Vort
если была перепосылка, то RTT из пакета не считается
onon2
И вправду, а в стримах такого нет.
orignal
ну SSU2 я все так позже делал чем стримы
Vort
"<onon> Так протестируй" - рейт выше, чем вчера. но рейт - это штука загадочная, поэтому надо чтобы ещё кто-то проверял
Vort
а полноценный тест тут нужен в условиях потерь. пока что не настроил такого тестирования
Vort
мне кажется, что мои отправки другие узлы избегают, из-за того, что у меня раздачи торрентов
Vort
или переотправки всё-таки сломаны оказались, несмотря на переделку вычисления RTT
onon
Сори, я пока свои безумные идеи по построению bbr на стримах тестирую.
Vort
ладно. может, tetrimer сможет глянуть
onon
А насчёт узлов с одинаковыми ключами, банить такое на сутки.
orignal
да даже вот ныннешнее релизнуть это огромный прогресс
Vort
onon: только случаи смены IP не задеть
onon
Если у пользователя просто сменился айпи - потерпит, или пересоздаст, а
onon
если это намеренное вредительство, так и будет сидеть в бане
Vort
сутки потерпит что ли?
onon
А почему нет?
Vort
я думаю надо разрешать два IP с одним ключом (ну по v4/v6/ygg ntcp2/ssu2 отдельно)
onon
Можно кнопку сделать, сделайте мне новый ключ
Vort
потому, что баны не должны быть произвольными
Vort
а вот если 3 ip - тогда уже банить всех
Vort
точнее ключ
orignal
а счас разве запрещено?
orignal
мультихоминг роутера думаю работает
onon
Представь такое на флудфиле
Vort
orignal: а как хранить их RouterInfo к примеру?
Vort
как строить транзит через ключ ?
onon
Много одинаковых флудфилов с разными адресами
orignal
Vort также как лиизсеты
onon
Опубликовался на одном а ищут тебя на другом
orignal
а какого то один в нетдб у кого то другой
Vort
я подозреваю, что в такой конфигурации нет смысла. это разные компы. разве может быть так, что не важно, на какой из них отправить сообщение?
orignal
да нет такое бывает когда какой нибудь мудак докер склонирует
orignal
и бывает это часто
Vort
я о другом говорю
orignal
ну объясни
Vort
о случаях, когда такая конфигурация сделана специально, а не по ошибке
orignal
ну а чем она мешает?
orignal
не надо такое только для флудфилов
Vort
подозреваю, что пользоваться таким клоном сеть не может
Vort
то есть, почти все запросы пойдут не туда
Vort
транзит через них не построить, допустим
Vort
не просто так же для них RTT не считается
Vort
ACK`ов нет, полагаю
Vort
или есть, но идут куда-то не туда
Vort
продублирую сообщения
Vort
[14:44:31] <Vort> подозреваю, что пользоваться таким клоном сеть не может
Vort
[14:44:41] <Vort> то есть, почти все запросы пойдут не туда
Vort
[14:44:52] <Vort> транзит через них не построить, допустим
Vort
[14:46:10] <Vort> не просто так же для них RTT не считается
Vort
[14:46:25] <Vort> ACK`ов нет, полагаю
Vort
[14:46:53] <Vort> или есть, но идут куда-то не туда
Vort
я не против вместо банов сделать нормальную поддержку такой конфигурации, но не уверен, возможно ли это
orignal
ну да к концами тоннелей будет проблема
onon2
Не "будет" а "есть"
onon
Обязательно в релиз делаем баны
orignal
как определять их собираешься?
orignal
может просто IP сменился
onon
Сразу бан, если ип сменился
onon
Пусть меняет себе ключ
orignal
нельзя так
onon
Можно
orignal
тогда всю сеть забанишь
orignal
потому что они меняются часто
onon
Через сутки бан пройдёт заработает
orignal
дурость это сутки ждать
orignal
чувак например рестартовал роутер и должен сутки ждать?
onon
Ну давай меньше
orignal
ну так он и будет ... на 8 минут
onon
Нужно сделать, чтобы при получении нового RI с новый адресом, этот адрес обновлялся в блек листе.
onon
И если он приходит тот же, то срок бана не меняем, а если опять новый, записываем новый ип и сбрасывем счетчик
onon
Тогда если это просто смена ип, то он быстро вылезет из бана, а если такая ситуация как сейчас, то так и будет там сидеть
orignal
ну это можно
orignal
дрозд также смотрит когда подключабтся
orignal
если все время с разных IP то банит
onon
Проблемы могут возникнуть у занатовцев с постоянно меняющимся адресом... но я пока точно не знаю.
onon
Потому что если мы будем банить только по ип то атакующий может на одном ип поднять на разных портах сотню роутеров...
orignal
нет банят именно роутер
orignal
по адресу его
onon
Блин, не могу придумать как занатовцев правильно обработать, они же к нам постоянно будут с другого адреса подключаться.
onon
Очевидно, что одновременно у нас может быть только один линк к уникальному роутеру. Или два в случае миграции.
onon
Получается единственный критерий это попытка подключиться к нам с разных адресов одновременно, за исключением случаев миграции.
onon
Т. е. один линк принимаем с любого адреса, а если приходит второй с того же роутера и это не миграция, значит что-то тут не так.
Vort
ну так не IP проверять, а IP:порт
Vort
время жизни сессии не такое уж большое - несколько раз IP смениться не должен
Vort
то есть, максимум будет оборванная не до конца сессия со старым адресом + новая рабочая
Vort
ну и как-то разные протоколы надо тоже обработать (NTCP2/SSU2 ipv4/ipv6/ygg), пока что плохо понимаю, как
orignal
может и во время сессии меняться
orignal
для этого и придуман path challenge
Vort
я имею в виду плохой сценарий
Vort
когда challenge не сработал
Vort
и сессия таки порвалась
orignal
ну порвалась ну и все
Vort
так она может ещё висеть в списке в тот момент когда новая будет создаваться
Vort
то есть, кратковременно получится две сессии с одним ключом
Vort
пока старая окончательно не отвалится
Vort
кстати, у меня есть подозрение, почему у клонов может не быть ack`ов
Vort
когда туннель создаётся, то выбирается какой-то определённый из клонов, но когда дело доходит до отправки данных, то они идут в первый попавшийся (один и тот же)
orignal
почему?
orignal
во первых должна разорваться сессия через которую строили
orignal
во вторых обновиться в netdb
Vort
это, в основном, U узлы, с тегом. наверно тег сессию держит
orignal
тэг ничего не держит
orignal
это сами узлы держат
Vort
ну сам узел ,да. я криво выразился
Vort
и это получается тогда, что таких узлов в сети довольно таки дохрена. если на каждом флудфиле такое (по 200 клонов)
orignal
конечно дохрена
orignal
говорю же придуки с докером это делают
orignal
создают узел а потом клонируют
Vort
сейчас посчитаю процент itag
orignal
нее
orignal
U узел всегда его запрашивает
Vort
даже если не использует?
orignal
именно
orignal
если сессия с интродьюсером протухнет то возьмет уже готовую
orignal
и да в общем то с какого то момента можно не запрашивать
Vort
ну значит не очень дохрена, а просто дохрена. itag 1282 штуки, yQN8 - 193 штуки
orignal
то есть твоя мысль что U узлов в сети дохуя?
orignal
ну разумеется их море
orignal
их большинство
Vort
моя мысль в том, что 15% U узлов - клоны
orignal
ну а почему нет?
Vort
значит, это что-то популярное
Vort
вычислить бы
Vort
да попросить так не делать
orignal
друг у друга папку .i2pd целиком копируют и все дела
Vort
явно есть организатор этой деятельности
Vort
иначе копировали бы каждый раз у разного юзера
onon
Тов. майор проводит спланированную операцию по подрыву работоспособности итупи.
orignal
ты хочешь сказать что это один и тот же адрес?
Vort
я думаю, что есть ссылка "скачать приложение", и там вот этот ключ. а качают разные юзеры
orignal
ты знаешь адрес?
orignal
так может просто забанить?
orignal
не IP а адерс роутера
Vort
yQN8Qt0K0yi89DrMaMa0LhHpQkxj2X3zS0SATe5QAXI=
Vort
ну а потом новая версия "приложения" выйдет, опять банить?
orignal
да
Vort
можно, конечно, но как-то грубо
orignal
давно пора список банов сделать
orignal
счас у дрозда спрошу
orignal
как раз это правильно
orignal
нехуй маразм плодить
Vort
есть ещё менее популярные ключи, предполагаю "предыдущую версию приложения"
Vort
DtQsGzkbeR3nilr6ZvywR2O7-f0XaaV~YfHXohqwjgI=
Vort
F~UzS1mTN3XYlnOfidMBv5Z4lHI7dsCZ8N5mxpyc-OU=
orignal
послушаем дрозда он люьитель такое банить
Vort
может, ещё какие есть - но эти трое попадаются на глаза чаще всего
orignal
я знаю что надо
orignal
в профиль писать параметр сколько дубликатов встречалось за последнее время
Vort
yQN8 - 188 штук, DtQs - 25 штук, F~Uz - 12 штук
orignal
и если много то не строить через них тоннели
orignal
если флудфил то банить
Vort
только же надо смену портов NAT и адресов через DHCP как-то исключить из этого процесса
orignal
ну за промежуток времени
orignal
если в течение часа например 5 раз разных втстретилось то исключать
Vort
лучше тестово сделать и посмотреть, вылезут ли вот эти ключи, что я написал
Vort
короч потестировать классификатор
Vort
мне кажется, лучше вариант "сколько одновременно висит в списке"
orignal
а разве в списке может быть несколько с один роутером?
orignal
*одним
orignal
толкьо если NTCP2 и SSU2
orignal
иначе это бага
Vort
я вообще-то об этом всё время и говорю :/
orignal
так это бага тогда
Vort
иначе бы я их не заметил
orignal
надо чинить
Vort
ну вот возьми на своём узле открой список SSU2 и браузером в поиск воткни yQN8
orignal
там есть хэш SessionsByRouterHash
orignal
счас
orignal
да ты прав
orignal
вот с этим бы надо разбираться
Vort
значит я просто не смог сразу нормально объяснить :/
onon
Дрозд это кто, я извиняюсь. Тот который доктор зед?
orignal
dr|zed
`
onon, а кто спрашивает?
onon
Кого спрашивает?
orignal
пойду я пересобрусь на узле с баунсером
orignal
вернусь через пару часов
Vort
orignal: сможешь глянуть и/или потестировать мой коммит с переделкой RTT? я подозреваю, что он что-то улучшает, но, к сожалению, не уверен
orignal
какой?
Vort
основная идея: убрать возможность "залипания" значения. тестировал пингая IP вручную, довольно часто совпадает. хз как ещё проверять
Vort
сейчас скину ссылку
orignal
посмотрю
orignal
не люблю я double
orignal
а так вроде нормально
orignal
по крайней мере также как стримах
orignal
кстати почему double а не float?
Vort
я тоже не люблю double, но иначе будут проблемы из-за округления в некоторых случаях
Vort
был бы RTT в микросекундах, можно было бы и int`ом обойтись
Vort
но если начну переделывать - опять накосячу
Vort
double это, вроде, более родной формат для процессора
orignal
float точно более родной
orignal
а с дубликатами не смотрел почему?
Vort
короч по double/float пока что делаю вывод - примерно без разницы
orignal
угу но float просто привычнее потому что он напримерт на видеокарты идет
Vort
это по скорости. ну а RAM там килобайт 10 разницы примерно
Vort
пока что i2pd на видеокарты портировать не будем :)
Vort
ну по дублям я подозреваю там недоделка как раз из-за NAT, чтобы переподключение с другим IP:портом не испортить
Vort
хотя может и просто баг, не знаю
Vort
про RTT - его потестировать желательно
Vort
кстати - m_TunnelCreationSuccessRate - это же тоже double
Vort
+1 причина, по которой я double выбрал
Vort
потому что в аналогичном месте так сделано
Vort
там тоже EWMA и тоже важна точность
Vort
в будущем можно будет на монотонные микросекунды перейти
Vort
ну и для рейта можно множитель сделать не 100 (проценты), а миллион. а потом делить (если хочется от double уйти)
Vort
много всяких разных интересных оптимизаций существует. но в i2pd до них далеко - более важные задачи есть
orignal
я думаю там все таки реально несколько роутеров
Vort
ну да. с одними и теми же ключами
Vort
я имел в виду причины, по которым такая "возможность" не убрана
Vort
чтобы не поломать NAT. наверное. точнее, может быть
orignal
она не убрана из-за path challenge
orignal
но это надо обрабатывать
Vort
то есть, разделить случаи "NAT" и "хренова туча узлов с одним и тем же ключом"?
Vort
если да, то примерно это мы и обсуждаем сегодня )
Vort
классификацию
Vort
по RTT - всё же сделаю PR и понадеюсь на лучшее (что ничего не ухудшу)
Vort
а "когда-нибудь" надо будет полировать это место
orignal
я счас с дедом вопрос обсуждаю
Vort
по узлам с 1 ключом? или по RTT ?
orignal
по узлам с одним ключом
Vort
ок. значит по RTT оформил в виде PR. вливать или не вливать - не знаю. github.com/PurpleI2P/i2pd/pull/2043
orignal
волбю
orignal
поглядим
Vort
если можешь, на SSU2-only погоняй
Vort
там эффект будет виднее всего
orignal
if (m_RTT != SSU2_UNKNOWN_RTT)
orignal
так нельзя
orignal
для double
Vort
если я до этого туда это значение записал, то почему бы и нет?
Vort
там же никакой арифметики нету
Vort
записали - прочитали - сравнили
orignal
потому что не всегда 1 в double это 1
orignal
а ну тут да
orignal
если это твое значени
orignal
так же константа
Vort
1 как раз всегда 1
Vort
и -1 тоже
Vort
и степени двойки
Vort
короч там по каждому значению отдельно смотреть надо :)
Vort
ну и константа, да
onon1
Я вижу вы умеете си, но не умеете сети, я наоборот.
Vort
onon1: ну вот и обсуждаем поэтому
onon1
Ну вроде, сильно хуже стать не должно
onon1
Скорее даже наоборот.
Vort
хорошо
Vort
следующий этап по этому куску (скорее всего, в далёком будущем) - это отвязка степени сглаживания от частоты пакетов
onon1
Частота пакетов это что за зверь?
Vort
сколько пакетов в секунду приходит
Vort
ну или уходит
onon1
Bw?
Vort
нет, я имею в виду сколько семплов RTT за секунду удастся сгенерировать
Vort
то есть как бы разрешение данных
Vort
похожая ситуация с разрешением картинки
onon1
А, ну так я уже писал, что считать RTT нужно по самому низкому значению в аске
Vort
фото 1000x1000 пикселей надо сглаживать иначе, чем 10х10 пикселей
onon1
Я так у себя в опытах сейчас делаю
Vort
я сейчас вспоминаю, что читал про разделение RTT на две части
Vort
RTT самой сети и RTT буферов
Vort
и вот мне кажется, что минимум он будет целиться именно на RTT сети
Vort
скорее всего, ошибаюсь, но подумать над этим стоит (если ещё не)
Vort
Anonymous: sorry I'm tired today to have even more talk
onon1
Мы не можем знать, эти пакеты ждали в буфере или копились аски на узле получателя.
Anonymous
oh
Anonymous
It's okay..
Anonymous
It's about SAM/qBittorrent
onon1
Было бы конечно неплохо, чтобы получатель ставил своё время в асках, но тут и протокол менять и разность во времени расчитывать
onon1
Чтобы мы знали или пакеты наши тормозятся или аски зависают
Vort
onon1: я пока что плохо понимаю механизм ACK`ов, так что возражать не буду. если будет время - покопаюсь
Vort
мне нравится, как в uTP сделано. но тут не uTP :)
Vort
оттуда разве что вдохновение брать
onon1
Я кстати, смотрелл в эту сторону, но там задержки большие
onon1
Вероятно пользователям важнее скорость отклика, чем пропускная способность.
onon1
Хотя в жабе вроде можно выбрать два вида туннелей - быстрые или широкие.
Vort
в uTP вроде "просто" взяли и зафиксировали лаги на 150мс
Vort
но в этом я не уверен, что-то такое читал
Vort
то есть, вкачивают данные, пока немножко лагать не начнёт
Vort
а перед этим вычисляют "реальный" RTT (без буферов)
Vort
как раз по минимуму, считая, что иногда всё же мимо буфера пакет проскочит
onon1
Vort, у тебя случайно нет списка тех "дублирующихся" роутеров? Там деду похоже интересна эта тема.
Vort
onon1: я три хеша/адреса показывал
Vort
остальное в глаза не бросалось
Vort
можно конечно написать код для анализа
Vort
но это просто открыть вкладку SSU2 и поискать дубли, должно быть несложно
Vort
может, даже онлайн инструменты есть
orignal
дед крайне озаботился вопросом кстати
orignal
насчет такого мультихоминга
onon1
Огласите весь список, пожалуйста... ©
Vort
в java роутере такой же списочек есть? как в i2pd - транспорты
Vort
если есть, он может и сам посмотреть
orignal
так он считает что это просто смена IP адреса
orignal
что они все враз активные он не понимал
orignal
считал что это один и тот же
Vort
понятно
orignal
ну вот счас заудмался
orignal
<zzz> look to see if same RI values like "i" and "s"
orignal
<zzz> so far the "i" and "s" values are not changing
orignal
<zzz> now up to 7 IPs in 10 minutes:
orignal
он думал что раз i и s одинаковые это тот же роутер ))
orignal
я ему объяснил в чем дело
onon1
Дед всё-таки хочет от тебя сисок. zzz: what's vort's list?
orignal
уже кинул
orignal
<zzz> sounds like you have some work to do )) Vort+++++ as usual
orignal
<zzz> new contender ~SN8