~AreEnn
~R4SAS
~acetone
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Guest7184
Leopold
Most2
Nausicaa
Ruskoye_911
Vort
anon2
b3t4f4c3
karamba_i2p
nemiga
not_bob_afk
plap
poriori
profetikla
soos
teeth
un
weko_
whothefuckami
Vort
за сутки сбора данных по фейлу туннелей получился вот такой результат:
Vort
для того, чтобы хоть как-то понять, что он значит, я сделал симуляцию и попробовал подогнать данные
Vort
получилось, что такой результат соответствует количеству фейлов i2pd в 1.5 раза большему, чем у java
Vort
да вот только есть проблемка
Vort
связанная с моей методикой
Vort
я не знаю, в какой пропорции java и i2pd используется для туннелей
Vort
вполне может быть, что по результатам того профилирования, которое уже реализовано, как раз в 1.5 раза чаще i2pd узлы и попадаются :)
Vort
но при этом мне кажется, что какого-либо массового перекоса не нашлось и этот результат в какой-то мере важен
Vort
такс. предыдущий сбор (фейлов в средине) я завершил. поставил новый сбор - фейлов при создании (то есть, разбивку TCSR)
Vort
сразу могу сказать, что таймаутов намного больше, чем непосредственно фейлов. а вот как они распределяются по типам узлов (i2pd/java) - это ещё предстоит узнать
weko
Vort: так ты смотри не количество а процент
weko
Процент фейлов из всех туннелей для i2pd и javai2p
Vort
да я это и смотрел. наверно криво выразился
Vort
короч с анализом прошлого результата у меня что-то пошло не так )
Vort
weko: а, я понял, о чём ты
Vort
отношение фейлов и не-фейлов?
weko
ну да
Vort
тоже можно сделать. но пока что посмотрю на разбивку по типам фейлов
Vort
кто больше таймаутов выдаёт, а кто - больше чисто фейлов
Vort
ну или одинаково будет
Vort
промежуточный результат: за 25 минут аптайма таймаутов в 16 раз больше чем чисто фейлов
Vort
weko: короч я понял, что без логирования успехов толку мало. нужна база как минимум. сейчас буду переделывать и перезапускать
weko
конечно
Vort
да и разбивка успехов по типам (i2pd/java) тоже не помешает сама по себе
weko
я говорю нужна грамотная система
Vort
ну то на будущее
weko
скорее всего существует протокол для таких целей - отправка информации о событиях
weko
с клиент на сервер при чём
Vort
я видел подобное, но глубоко не влазил
Vort
наверно надо начинать поиски с Grafana
Vort
это визуализация, но она же не сама по себе
Vort
блин,в i2pd успешные и неуспешные туннели, похоже, по-разному хранят хопы :/
Vort
вот такой код логирования получился: github.com/Vort/i2pd/commit/4a52c43d57a31dc3e24bb3fa3cb4f58e6fc5278a
Vort
там мелкие косяки, но пофиг
orignal
таймаутов на построение?
Vort
да, последний сбор данных чисто по построениям
Vort
можешь последнюю ссылку глянуть, куда я логирование дотыкивал
Vort
сейчас за 2 часа аптайма чуть лучше стало - всего в 10 раз больше таймаутов )
orignal
то есть где то дропается
Vort
ну на это же ещё моя сеть может влиять. но маловероятно что кто-то ещё захочет сбор устанавливать (
orignal
так проверь с 1 хопом
Vort
"то есть где то дропается" - пока что по графикам подозрение на java узлы. но пока что ещё мало данных набралось
Vort
"так проверь с 1 хопом" - что именно проверить?
orignal
соотношение отлупов и таймаутов
Vort
ок, сейчас
Vort
1 хоп: 11 таймаутов / 2 фейла
orignal
это очень интересно
Vort
2 хопа: 396 таймаутов / 16 фейлов
orignal
почему вообще происходит таймуат?
Vort
3 хопа: 450 таймаутов / 71 фейл
orignal
ну например может просто не удалось соединиться
polistern
Vort, погляди на influx, если нужно клиент->сервер, или на prometeus, если метрики должен сам сервер забирать. Можно ещё в graphite, там матаппарат лучше.
Vort
polistern: это больше weko интересовало. я пока что "вручную" данные собираю и меня это устраивает
polistern
weko, ^^^
hypn_
я ещё с какимто агрегаторов возился
hypn_
на z
hypn_
zabbix
hypn_
данных с кластера
hypn_
не помню его scope
Vort
"<~orignal> ну например может просто не удалось соединиться" - то есть, как пример - узел просто оффлайн?
polistern
Ну не, заббикс больше именно про мониторинг.
Guest59958
orignal: Где i2p принимает подключения и где посылает?
Guest59958
Э... А какого черта я гость?
Vort
или когда узел оффлайн, то туннель даже не начинает строиться?
orignal
в NTCP2 и SSU2
Vort
weko: глянь через major, тут ответы про сбор лога в чате были
orignal
Vort так а как ты знаешь оффлайн он или нет?
orignal
ты создаешь запрос на тоннель
orignal
пытаешься его отослать а если не удается то просто дропапается сообщение
segfault
В libi2pd?
Vort
orignal: то есть, в случае с 1 хопом - создаётся запрос, и если нету транспорта, то пытается создаться транспорт, а если не создался, то туннель отваливается по таймауту?
orignal
именно так
orignal
транспорт просто дропает сообщение не зная его природы
orignal
можно конечно присобачить к кажому I2NP сообщению коллбэк что делать если дропанулось
orignal
но зачем?
Vort
плохо понимаю, о каких дропах речь :(
Vort
если 1 хоп, то надо же напрямик к узлу подключиться?
Vort
видимо, моих знаний для анализа недостаточно
orignal
правильно
orignal
а если не удается подключиться?
orignal
запрос будет сидеть в очереди и потом дропнется
Vort
а, понятно
Vort
это можно даже и логировать
Vort
на 1 хопе проще всего отлаживать
orignal
так о чем и речь
orignal
на нем проще понять причины
orignal
и в общем то найти виновника
segfault
orignal: какой тип для b32 адреса?
orignal
IdentHash
segfault
А в каком хедере он?
orignal
а grep-ом поискать тебе религия не позволяет?
segfault
А всё. Нашёл
segfault
origanl: А как в i2p читаются конфиги? Есть какой-то объект, у которого можно спросить что-то из конфигов?
Vort
по названию параметров просто поиск делаешь и всё
Vort
по всем исходникам )
Vort
там будет видно, где это название упоминается
orignal
заебал
orignal
template<typename T>
orignal
bool GetOption(const char *name, T& value)
Vort
вот я вписал в поиск "logclftime" и сразу нашёлся Config.cpp
orignal
вот этой функцией
orignal
которая в свою очередь дергаем boost::program_options
Vort
и в Daemon.cpp нашлось: bool logclftime; i2p::config::GetOption("logclftime", logclftime);
Vort
вот и пример
Vort
поиск - полезная штука :)
segfault
Спасибо
segfault
Я просто думал, что конфиги читаются 1 раз при старте, а потом хранятся в памяти.
segfault
И перечитаваются, когда об этом просят
orignal
так оно и есть
Vort
только не перечитываются вроде
orignal
boost::program_options читает при старте и дальше из памяти берется
segfault
origanl: у этой функции нет ограничения на длину строки? Можно в i2pd.conf будет присать 50 b32 адресов через запятую?
orignal
хоть миллион
segfault
origanl:
orignal
это ж std::string
segfault
Окей
segfault
origanl: А строку с b32 адресом (и подписью ".b32.i2p") какой функцией можно сконвретить в IdentHash ?
segfault
orignal:
polistern
segfault, FromBase32 разве нет там? Что за ide у тебя, что она тебе никак не подсказывает?
segfault
У меня нет ide
polistern
В блокноте сидишь?
segfault
Emacs
polistern
Так настрой емакс, отлично он всё показывает.
segfault
Я потом настрою, когда буду за нормальным ПК
segfault
Сейчас я пишу на коленке
polistern
Не хочешь сам настраивать - подключи doomemacs
orignal
отвали а?
orignal
если ты не в состоянии посчмотреть как это сделано в других местах
orignal
тогда лучше и не пытаейся
orignal
но перестань заебывать меня по каждой ерунде
segfault
Хорошо
segfault
polistern: Я его когда-то давно пробовал. Он меняет хоткеи, а мне это не нравится
polistern
Там просто отключи evil мод и всё, я в нём пробовала сидеть.
Vort
решил я посчитать TCSR отдельно по каждому количеству хопов. вот такое получилось:
Vort
TCSR[1]: 0.927 (S: 255, T: 17, F: 3, T/F: 5.7)
Vort
TCSR[2]: 0.210 (S: 186, T: 664, F: 35, T/F: 19.0)
Vort
TCSR[3]: 0.355 (S: 432, T: 673, F: 113, T/F: 6.0)
Vort
2 хопа у меня - это только exploratory, они видимо через слабые узлы идут
Vort
какой вывод из этого делать - пока что не знаю. на всякий случай выложил
segfault
void NTCP2Session::HandleSessionRequestReceived И другие методы как-то очень странно сделаны. Если что-то не получилось и был вызван Terminate(), то зачем ветка else? Всё, что после это блока if -- и так ветка else. В результате там
segfault
какая-то кошмарная вложенность.
segfault
Даже с очень мелким шрифтом оно не влезает в экран, либо шрифт настолько мелкий, что читать его невозможно.
segfault
Ну как невозможно, возможно
segfault
Просто второй таб не открыть :)
segfault
orignal: А вот сейчас, я думаю, вопрос уже не пустяковый. В каком конкретно методе делать проверку на заблокированность b32? Чтобы не было потом, что программа колом стоит. Где можно безопасно
segfault
отреджектить запрос на подключение и где можно адекватно прекратить попытку подключения? Надо ли писать о том, что какое-то соединения откланено, в логи? Не знаю нужно ли, но интересно почитать
segfault
логику работы класса NTCP2. Что скрывается за BobX, AliceX и т.п.? Подскажи где это можно вычитать. В статьях ацетона, я что-то такое не видел. Спасибо.
segfault
P.S. Класс для "черного списка" я уже написал. И он балополучно собирается вместе с проектом :)
segfault
Я вот попробовал поправить конструкцию if-else
segfault
Не проверял, но должно по прежнему работать.
polistern
segfault,
Vort
решил потыкать один из пиров, который раз выдал таймаут. и обнаружил трассировку на 30 хопов (traceroute) O_o
Vort
71.193.40.167
Vort
ну и 200мс пинг. не знаю, связано ли это, наверно нет. но такого я ещё не видел :)
Vort
сделал 3 скана nmap -p 14904 71.193.40.167
Vort
Nmap done: 1 IP address (1 host up) scanned in 1.12 seconds
Vort
Nmap done: 1 IP address (1 host up) scanned in 0.64 seconds
Vort
Nmap done: 1 IP address (1 host up) scanned in 2.51 seconds
Vort
надо будет глянуть какие таймауты в i2pd
Vort
перепроверил через Wireshark - по 2 секунды отвечать на SYN для этого узла - норма
Vort
узел i2pd, флаги XR
orignal
значит очередной умник через впн
orignal
надо в профилировщике такие банить
orignal
считаю что если коннект больше полсекунды то такому узлу бан
segfault
origanl: Подскажешь ответ на прошлый вопрос?
orignal
нет
orignal
я тебе по моему ясно сказал
orignal
если ты не понимаешь как оно вообще работает зачем лезешь?
segfault
Потому что самому эта фича нужна
segfault
Там осталось писать буквально пару if
orignal
а мне некогда
segfault
Ладно, я тогда потом PR кину с классом для блокировки
segfault
А потом допишу, когда разирусь
orignal
для входящих надо проверять при получении SessionConfirmed
orignal
и имей ввиду что если там какая нибудь хуйня типа вычитывания параметра и проход по этому списку при каждом соединении то такое однозначно фтопку
orignal
будет добр сделать unordered_set
orignal
и сделай это в классее TransportSession
Vort
71.193.40.167 - это IP крупного провайдера - Comcast, VPN тут не при чём скорее всего
orignal
почему?
orignal
ну него там сидит впн а чувак через него
orignal
впн же поднять можно где угодно
orignal
в любом случае такое вот надо банить
orignal
реально умники сидящие через тор и впн заебали
Vort
лучше причину устранить вначале. скорее всего, узел просто перегружен, а i2pd пофигу
orignal
я думал если перегружен то дропает соединение
orignal
а зачем устранять причину,
orignal
нам ведь важно что отвечает медленно
orignal
а не по какой причине
Vort
сеть его перегружает - это проблема
Vort
то есть, туда пихается больше, чем может влезть
Vort
ну и решается она как я понимаю на двух уровнях
orignal
ну вот такие узлы надо исключать из тоннелей
Vort
один из вариантов - отпрофилировать, верно
orignal
увидели большое время коннкета до свидания
Vort
но второй вариант - ставить флаг перегруза
orignal
и как ты определишь перегруз?
Vort
надо конечно найти какой-то узел с такой фигнёй, который можно подебажить. иначе сложно
Vort
как вариант - по потерям пакетов
Vort
ещё вариант - по пингу
Vort
чётких идей у меня нету
Vort
и подозреваю, что это сложно
Vort
но надо о второй стороне проблемы не забывать всё равно
orignal
я считаю что не надо заморачиваться а просто такие узлы исключать
Vort
одно другому не мешает
orignal
помечать как медленные
orignal
и на 15 минут или примерно так исключать
orignal
а вообще пора объявить крестовый поход против тор и впн
orignal
иначе так все и будет тормозить
orignal
то есть сидеть он так может но транзита хрен дождется
Vort
могут быть доли процента, мало на что влияющие
Vort
я считаю, что нужен инструмент, которым можно пройтись и потыкать все узлы
Vort
потом построить гистограмму, допустим, пингов
Vort
по ней будет виден и масштаб проблемы и куда границу ставить надо
weko
[13:11:21] <Vort> какой вывод из этого делать - пока что не знаю. на всякий случай выложил
weko
По логике, раз 1 хоп - 0.927, значит 3 хопа должно быть 0.859 (0.927 ^ 3), фактически гораздо ниже. Не могу сказать, что знаю все различные моменты 1-го и 3-х хопов, но точно вот что. При 1-хопе с пиром гарантированно есть созданный транспорт, а вот при 3-х хопах между 1 и 2, 2 и 3
weko
маловероятно что транспорт создан. Но однако это не свидельствует о том, что дело в создании транспорта, ведь в случае 1-хоп туннеля у нас есть гарантия что пир в сети, а с 3-хопами у нас нет такой гарантии про 3 пира
Vort
weko: хехе. я тоже о степени тройки думал сказать
Vort
видимо результат 3х хопового TCSR состоит из 1хопового у себя * 1хоповый у 1 соседа * 1хоповый у 2 соседа
Vort
то есть, я предполагаю, что у "соеседей" TCSR в среднем хуже, чем у меня
Vort
ну или таки что-то не понимаем
Vort
"в случае 1-хоп туннеля у нас есть гарантия что пир в сети" - точно? у меня просто сомнения есть
weko
[17:38:27] <9d54b3orignal> а зачем устранять причину,
weko
Важно лишь в случае, если это баг. Если это баг, а узлы начнут профилироваться, будет 6не хорошо
Vort
просто в таком случае таймауты на 1 хопе - это большая странность
Vort
weko: 1. узел на себя берёт больше, чем надо. 2. сеть в узел пихает больше, чем тот может переварить
weko
[17:45:53] <Vort> я считаю, что нужен инструмент, которым можно пройтись и потыкать все узлы
weko
[17:46:12] <Vort> потом построить гистограмму, допустим, пингов
weko
О чём я уже говорил)))
weko
Пинги, скорость. Потом корреляцию с реализацией, флагами, версией протокола, мб даже странами и кластерами
orignal
баг в чем?
orignal
в TCP?
weko
[17:55:41] <Vort> "в случае 1-хоп туннеля у нас есть гарантия что пир в сети" - точно? у меня просто сомнения есть
weko
Лось говорил что первый хоп берётся из созданных транспортов. Хотя у меня до сих пор сомнения по этому решение и я даже отмечал потенциальный способ облегчить атаку
Vort
а кстати не факт что я словил таймаут на том узле через NTCP2. мог ведь и через SSU2. или не мог?
orignal
не всегда
weko
[17:56:31] <Vort> просто в таком случае таймауты на 1 хопе - это большая странность
weko
Так их вроде и не так много
orignal
может браться может нет
Vort
ну вот когда не берётся, значит, и таймауты лезут. наверно
Vort
"Так их вроде и не так много" - да, но всё равно лучше, чтобы не было. ну или хотя бы понять, что за хрень происходит
weko
[18:00:00] <orignal> баг в чем?
weko
[18:00:04] <orignal> в TCP?
weko
В i2pd или java i2p. В таком случае приоритет закрыть баг, через время начать профилировать.
weko
Баг это или нет - поможет определить статистическая корреляция по нескольким параметрам (писал выше)
Vort
weko: кстати, не хочешь ли попробовать мои данные по результатам создания туннелей поанализировать и повизуализировать? а то у меня что-то плохо получается
weko
[18:02:23] <Vort> "Так их вроде и не так много" - да, но всё равно лучше, чтобы не было. ну или хотя бы понять, что за хрень происходит
weko
Выглядит как нормальное количество как раз ввиду локальных ситуаций
weko
Vort: а какие столбцы у тебя есть?
Vort
weko: дата, тип (S успех T таймаут F фейл), список идентов (хопы)
Vort
ещё подготовлю RI
weko
Нужны ещё данные с RI - java/i2pd, версия протокола
weko
Может ещё ip адреса
Vort
ну я сами RI подготовлю. или ты сам не расковыряешь?
Vort
там просто ищешь SSU - и смотришь следующий байт - 2 или не 2
weko
[18:06:58] <Vort> там просто ищешь SSU - и смотришь следующий байт - 2 или не 2
weko
А если нету ssu или это первая версия?
Vort
а где нету SSU* - ну и хрен с ними. почти везде есть
weko
Во втором случае опредение будет неверное
Vort
то же и с первой. думаю, что это мелочи
Vort
можно версию ещё проверить
Vort
в какой-то версии же убрали SSU
weko
А в java убрали?
Vort
а хз...
weko
Надо смотреть ещё v=2 или как там
Vort
ну поэтому и предлагал альтернативный вариант обработки сделать )
Vort
вдруг что-то упускаю
Vort
короч я сейчас подготовлю
weko
В java же другой способ указать вторую версию
weko
Вот его нужно определять
weko
Vort: я могу попробовать что-то сделать, но в любом случае желателен больший набор данных
Vort
по 3 хопам там хватает данных
Vort
вот по 1 хопу, особенно по таймаутам и фейлам - мало
weko
И нужен чистый - тоесть все пиры брались с одинаковой вероятностью
Vort
ну как i2pd делает, так и собирается
Vort
это я не трогал
weko
В этом проблема
weko
Как ты говорил есть exploratory туннели
Vort
они 2хоповые вроде только
Vort
а у меня нету 2 хопов других
Vort
у меня два проксика, 1 хоп и 3 хопа + служебный 3 хопа, всё
weko
В данном случае можно исключить. Но нет ли других факторов?
Vort
я i2pd вообще не грузил. ну если не забыл ничего. через 1 хоп вот этот чат. 3 хопа вообще "пустой"
weko
Нет вопрос только в выборе хопов
weko
В идеале должно быть абсолютно равномерно и нам должны быть известны правила
weko
Ну тоесть полностью исключить профилирование
Vort
думаешь, со стандартными настройками полезной информации извлечь не выйдет?
Vort
переписывать i2pd для того чтобы собрать статистику - это уже не такая простая задача
Vort
да и такой узел будет гадить сети. не такая уж большая проблема, но всё же
weko
Vort: да нет не будет
weko
мы же со своих туннелей статистику собираем
weko
их поведение нужно довести до равномерного распеделения по пирам, чтобы исключить подводных камней в статистике
R4SAS
Guest (which asks me about Docker), I really don't know
R4SAS
Ask here please.
R4SAS
I have no time now for working on issue
user
Предлагаю радикальную идею. Делать exploratory 0-hop и строить туннели только из отвечающих роутеров.
relaybot
13apophis: равномерное распределение по нодам в графе с динамическими соединениями ... задача даже теоретически "сложная"
orignal
нулевые тоннели нельзя если ты не публикуешь IP
weko
<user> Предлагаю радикальную идею. Делать exploratory 0-hop и строить туннели только из отвечающих роутеров.
weko
и потерять анонимность....
user
И что кто узнает?
weko
<+relaybot> apophis: равномерное распределение по нодам в графе с динамическими соединениями ... задача даже теоретически "сложная"
weko
задача не убрать погрешность а сделать их не значительными
weko
<user> И что кто узнает?
weko
ну вот ты знаешь зачем они нужны?
user
Что чувак с таким-то ip использует i2p?
weko
user: это и так известно
user
Ну так
weko
<weko> ну вот ты знаешь зачем они нужны?
user
Расскажи
weko
нашёлся самый умный
weko
сначала иди учи матчасть
user
Ну ты же сказал знаешь
user
Расскажи
user
Единственный момент, когда будет деанон, это если у тебя скрытый сервис и через exploratory опубликуется лизсет
user
Или я не прав
orignal
лизсет никогда через него не публикуется
user
Ну так а где деанон будет?
orignal
не будет
orignal
нг смысла нет
orignal
можно просто устанваливаться соединения
weko
orignal: я рассказывал в чём проблема может быть при не анонимном получении RI
orignal
угу
weko
и делать ситуацию ещё хуже точно нельзя
user
0-hop tunnels With no remote routers in a tunnel, the user has very basic plausible deniability (since no one knows for sure that the peer that sent them the message wasn't simply just forwarding it on as part of the tunnel).
user
Правду пишут?
weko
видно что у тебя в лиссете всегда один и тот же пир в количестве одной штук
weko
штуки
user
Лизсет для кого?
user
Для сервиса?
weko
ну например
orignal
есть же умники которые вешаеют сервисы на тоннели нулевой длины
user
Ну так я и написал, что не подходит держателям сервисов
orignal
но они это делают
weko
user: учи матчасть бля
user
Ну или если это открытосервис
orignal
не ну зондирующий пул никогда не генерит лизсеты
weko
orignal: ну это понятно
user
Может это было в старых версиях, помню читал варианты атак, там лизсет публиковался именно через exploratory
orignal
в i2pd никогда
orignal
у меня лизсет всегда делается в Destination
orignal
а у зондирующего пуле его нет
relaybot
13apophis: > weko: задача не убрать погрешность а сделать их не значительными
relaybot
13apophis: ты это где видал, чтобы погрешность можноп было убрать ? ... статистически не значительными это правильно.
weko
ну а о чём
relaybot
13apophis: я не хочу тебе советовать, но если ты серьезно решил и2пд архитектурой занятся, то надо симулятор "приближенный" сделать. Не кодить сильно, но есть продукты <clipped message>
relaybot
13apophis: мультиагентных систем которые могут быть адаптированы. Тогда будет теоретических и возможно практических толк и на долго.
weko
симулятор - согласен. про мультаентные системы не понял - что это такое?
relaybot
13apophis: ты же по английки говоришь, посмотри на гоогл. агенты будут нодами.. их взаимодействие ... соединениями. Пишешь поведение одного агента и взаимодействие ег <clipped message>
relaybot
13apophis: о с другим. и истанциируешь их сотнями тысяч или > .... смотришь статистику с чего пожелаешь.
relaybot
13apophis: Посоветовал бы: ГАММА. Там язычок легкий скриптовый. Но это не симулятор ТСП/ИП и протоколов, такой есть конечно, но для общего анализа это уж слишком будет.