~AreEnn
~R4SAS
~orignal
~villain
&N00B
+relaybot
DUHOVKIN
Most2
Nausicaa
Nikat
Vort
Xeha
`
acetone_
anon2
b3t4f4c3
flumental
karamba_i2p
nemiga
not_bob_afk
onon
plap
poriori_
profetikla
silence__
soos
teeth
tensor
un
weko
whothefuckami
user2
Реквестирую в вебконсоли во вкладке "Router commands" рядом с "Transit tunnels limit" добавление "Transit bw limit" или чего-то подобного с указанием текущих значений и возможностью из изменить.
user2
Имхо, так начинающие пользователи хотя бы увидят, какую ширину канала они предоставляют сети. И кто-нибудь расширит лимиты.
weko
Звучит логично
weko
Но как говорили тут некоторые подменяют значение и даже не будут подозревать что после рестарта сбросится настройка
weko
Поменяют*
user2
Там напоминалка есть
weko
Верно
user2
Если он даже расширит лимит временно-мы ничего не теряем. Т.к. в противном случае он его и не расширил бы.
user2
А если он поменяет настройки, а после перезагрузки обнаружит, что вернулись дефолтные настройки - возможно он узнает о существовании конфиг файла.
weko
А может думая что всё ок, никогда туда не заглянет. Но это меньшество, так что да, надо сделать
Vort
сделал гистограмму с процентом успешных исходящих SSU2 соединений по узлам. выбрал узлы, для которых есть 3 или больше записей:
Vort
получилось примерно то, что я ожидал: варианты "всегда успех" и "всегда неудача" самые популярные
Vort
но интересно больше то, что в средине: получается, что узлов, с которыми коннект скорее получится, больше, чем тех, с которыми коннект скорее не получится
Vort
нашёл баг в i2pd :) мелкий, скорее всего. но стоит починить
Vort
вот эта строчка неверна: github.com/PurpleI2P/i2pd/blob/17c4038c6048a1567eba76b89a8a9e19d7e81d38/libi2pd/SSU2Session.cpp#L1535
Vort
скорее всего, там нужно написать buf[offset+size-1]
Vort
ещё есть сомнения про if (size > len). не offset + size > len ли там должно быть?
orignal
а что с ней не так?
orignal
там действительно 12-ый байт в блоке
orignal
смотри спек
Vort
orignal: так несколько блоков может быть
Vort
допустим, Termination - второй блок. а i2pd будет искать reason в первом блоке
orignal
да ты прав разумеется это ошибка
orignal
buf[offset+11] значит
Vort
там же в offset ещё offset++; и offset += 2;
Vort
так что или buf[offset+8] или buf[offset+size-1]
Vort
// я отойду пока что
Vort
про if (size > len) тоже вопрос актуален. не уязавимость ли там
orignal
offset + 8
orignal
buf[offset+8]
orignal
кстати посмотри нету ли той же хрени в NTCP2
orignal
offset + size > len разумеется
orignal
Tunnel creation success rate: 74%
orignal
однако
user
Tunnel creation success rate: 10% Однако
orignal
так у тебя не транк однако
user
Ну да
user
2.48.0
orignal
правильно
orignal
на нем где что 45% было
user
Я тут поковырялся в БД. Посчитал количество роутеров с разными флагами.
user
K= 9
user
L= 7159
user
M= 10
user
N= 773
user
O= 208
user
P= 1184
user
X= 1373
user
Counter = 10790
orignal
ну логично
user
Получается у нас около 70% L
orignal
по умолчанию же L
user
до 48 КБ/сек.
user
И в туннелях будут с вероятностью 70% эти узлы
orignal
не будут
orignal
они не выбираются для клиентских тоннелей
relaybot
13apophis: лол
user
ТОлько зондирующие?
relaybot
13apophis: баммер
orignal
угу
user
А с какого уровня в клиентские туннели попадают?
user
M,N,O,P?
orignal
O
ncop
А у джава с какого? С такого же?
orignal
скорее всего
orignal
раньше же P и X не было
Vort
"<~orignal> кстати посмотри нету ли той же хрени в NTCP2" там frame[offset + 8]
Vort
а вот if (size > len) в наличии
orignal
да, надо править
orignal
ты поправишь?
Vort
я тогда запущу тестовый узел с изменениями и посмотрю на то, как часто ловушка будет срабатывать
Vort
сломать транспорты мне совсем не хочется :)
orignal
так это однозначно надо чинить
orignal
без вариантов
Vort
это я просто рассказал о своём методе тестирования
orignal
просто я собираюсь проверку таймстампа добавить
Vort
orignal: всегда ли Termination блок должен быть с размером в 9 байт? могу добавить проверку, как в NTCP2
orignal
нет
Vort
только там почему-то if (size >= 9)
orignal
9 обязательно но может быть и больше
Vort
а reason должен быть в конце или чётко на 8 позиции?
orignal
там после rsn могут идти произвольные данные
orignal
четко 9-ый байт
Vort
ок
Vort
запустил тестовый узел, послежу за ним некоторое время
Vort
добавил проверку if (size >= 9) по аналогии с NTCP2
Vort
buf[offset + 8] поставил в SSU2 и if (offset + size > len) в два места
orignal
нормально
Vort
тогда ещё минут 5 тестовый узел подержу и оформлю PR
orignal
ага
orignal
вернусь через пару часов
Vort
ок
Vort
за 20 минут аптайма тестового узла проблем не обнаружилось
Vort
на основной узел пока что ставить не буду - у меня там статистика собирается, не хочу прерывать сбор
user
Пропинговал все опубликованные ipv4 в netDb. Вот что получилось:
user
Всего хостов: 3643
user
На пинг не ответили: 1493
user
Ответили: 2150
user
Минимальный пинг: 16.3
user
Максимальный: 1125.0
user
Средний: 112,94
user
Какие из этого можно сделать выводы, я пока не знаю.
user
Но может кому интересно.
crystalway
user сильно рискуешь. Я могу щас посмотреть логи и увидеть кто пинговал) У меня логируется весь трафик
user
Не смотри логи.
user
=)
user
Но в любом случае я с впски пинговал
crystalway
Моя нода могла и не папасть в твою базу. Но в любом случае надо быть острожным с такими экспериментами
Vort
netdb была взята с онлайн узла?
user
Да
Vort
дофига что-то неответов
user
С флудфила
Vort
даже если предположить, что часть юзеров заблокировали пинги
Vort
надо было U узлы из эксперимента убирать наверное
Vort
джава публикует их IP. но нафига - загадка
Vort
вдруг U магическим образом рассосётся небось )
ncop
user: медианный пинг до кучи
user
Снова распарсил ту же БД с исключением U, получилось 3556 хостов. Т.е, видимо, на статистику это не сильно повлияло.
Vort
что-то тут не то. у меня около 500 U узлов с IP в netdb нашлось
Vort
всего узлов с IP у меня - 3487
Vort
caps=?.{1,5}U
Vort
вот так искал U
Vort
кривенько конечно
Vort
[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
Vort
вот так IP искал
user
Медианный пинг 73.4 кто-то спрашивал
orignal
смержил
Vort
хорошо
orignal
Vort публикует потому что раньше не было кодов 4 и 6
orignal
а посколько idk так и ниасилил выпилить SSU
orignal
вот и получается
Vort
надо будет и мне эксперимент с пингом повторить. но позже. что-то дофига неответов у user, не нравится мне это
Vort
даже если 500 U узлов выкинуть, всё равно дофига
orignal
и у них что интродьюсеры есть?
orignal
SSU2 разумеется
orignal
ih вроде бы
orignal
не ну блять это полный пиздец
Vort
ну я много видел U с IP адресами и интродьюсерами. не на 100% уверен. надо будет перепроверить
orignal
если они продолжают пубдиковать IP
Vort
из 782 U + IP нашлось у 688 ih0=
orignal
ой дебилы....
orignal
счас idk выскажу
orignal
вот о таком дебилизме я как то не подумал
orignal
починю
Vort
то есть, надо игнорировать IP если есть интродьюсеры?
Vort
хотя у них же и для R интродьюсеры (если мне не показалось). нахрена только...
Vort
у них наверно они всегда тупо есть
orignal
естественно
orignal
для R может быть
orignal
например для 4 интодьюсеры а для 6 напрмяую
Vort
ну я имею в виду случай ipv4 R + интродьюсеры
orignal
а ipv6 нету?
Vort
а вот сейчас буду смотреть
Vort
только получше регулярки настрою, у меня тут какое-то расхождение
orignal
Vort посмотри там где есть IP есть ли порт
Vort
результат первой проверки - ipv4 only + R + интродьюсеры - обычное явление
Vort
по второй проверке - ipv4 + U + интродюсеры и есть ли порт?
orignal
да
orignal
если порта нет то проще
Vort
из 469 ipv4 + U + интродюсеры порт есть у всех есть порт
orignal
и порт ненулевой?
orignal
мне то в общем то без разницы U и R я все равно не смотрю
Vort
ненулевой
Vort
но лучше всё же проверять мои находки
Vort
в регулярках накосячить проще простого )
Vort
хотя я и перепроверяю выборочно
orignal
<eyedeekay> That's a good question, I think it might have something to do with when peers change IP or something about the network changes, so they can be re-tested but I don't know for sure.
orignal
ну и как тебе это?))
Vort
а интродьюсер поможет в случае смены IP ?
orignal
так по уму при смене IP сессия не разрывается
orignal
с интродьюсером
Vort
то есть, получается есть просто два альтернативных метода коннекта - через интродьюсер и напрямик
Vort
какой-то да и сработает. наверное :)
orignal
неее
orignal
когда интрродьюсеры то через них
orignal
давным давно публиковали IP чтобы узнать ipv4 там или ipv6
orignal
вот как раз для этого и ввели коды 4 и 6
Vort
надеюсь хотя бы юзеры с белой статикой могут отрубить интродьюсеров, чтобы не грузить сеть зря
orignal
добавлю я проверку
Vort
какую? на U флаг что ли?
Vort
хотя я вообще не до конца понял проблему
Vort
пока что я вижу только лишнюю нагрузку на интродьюсеров когда это не нужно
Vort
ну и шанс, что интродьюсер потеряется
orignal
если у адреса есть интродьюсеры он считается непубликуемым
Vort
хмм
Vort
похоже я нашёл узел i2pd такой
Vort
и их много таких
Vort
i2pd + R + ipv4 + ih0
Vort
теперь вопрос, как так вышло
Vort
100 штук нашёл
orignal
так точно SSU2?
orignal
а в caps то что?
Vort
точно. но у меня второй раз числа не сошлись. перепроверяю
orignal
надо убедиться что это именно i2pd
orignal
счас гляну
orignal
а что неправльно например с zg5w?
orignal
я везде вижу IP на ipv4
orignal
и интродьюсеры на 6
Vort
ага, значит я таки неправильно искал
Vort
сейчас получше рассмотрю остальных
Vort
есть где почитать про caps транспортов?
Vort
в общем, регулярками искать интродьюсеры было не самой разумной идеей
Vort
ну ничего, я учусь )
Vort
у java просто бывают ситуации, когда узел R, NTCP2 содержит ipv4 адрес, но SSU(v2) адреса не содержит, а содержит интродьюсеры
Vort
как такое получается не совсем понимаю. входящие UDP у кого-то фаерволом заблочены что ли?
R4SAS
да, бывает такое
R4SAS
некоторые NATы не пропускают его
Vort
речь о пробросе портов что ли?
R4SAS
нет, о самом нате
Vort
так я про R узлы говорю. откуда там NAT
R4SAS
ну тогда да
R4SAS
хотя там тоже нат может быть
R4SAS
есть же еще PAT
orignal
а с джавой действительно такая хрень?
orignal
R4SAS стой
orignal
я тут боба починил
R4SAS
orignal: бегу
orignal
надо бы проверить
orignal
нашел в чем пробелма
R4SAS
то что неделю назад?
orignal
да
R4SAS
Uptime: 6 days, 8 hours, 21 minutes, 32 seconds
R4SAS
оно уже
orignal
ну просто ты не сказал о результатах
R4SAS
так некогда
R4SAS
когда упадет, тогда и узнаем
R4SAS
пока что живет
R4SAS
18251 root 20 0 1355260 155960 7152 S 12.9 7.6 1285:45 `- /opt/i2pd-reg/i2pd
Vort
orignal: можешь примерно рассказать о флагах транспортов? чтобы я опять чего не напутал. B C 4 6
Vort
ну 4 6 догадываюсь. хотя бывает и ни 4ки, ни 6ки
orignal
B C интродьюсер и пир тест
orignal
4 и 6 очевидны
Vort
а если ни 4, ни 6 ?
orignal
тогда должен быть IP
Vort
а, ок
orignal
если нет ничего то ошибка
Vort
"<~orignal> а с джавой действительно такая хрень?": paste.i2pd.xyz/?dec7df3b948678c3#2tn1pY9kB6YBRs1VJiWs2f4QMoPiCKbu338xHtH1eA3m
Vort
вот пример. SSU2v4, SSU2v6 - интродьюсеры, NTCP2v4 - адрес. узел XR
R4SAS
orignal: в целом - всё нормально
R4SAS
18:09:21 [CHECKER] Result: Total hosts: 1039, Alive: 736
orignal
Vort ну и что?
orignal
вопрос был может ли быть в одном SSU и IP и интродьюсеры
R4SAS
19:10:29 [CHECKER] Result: Total hosts: 1039, Alive: 738
orignal
то что в твоем примере такое возможно
orignal
в них есть параметр итипа forceForewalled
Vort
"<~orignal> вопрос был может ли быть в одном SSU и IP и интродьюсеры" нет. то я искал неправильно
orignal
то есть такого не бывает?
orignal
тогда я скажу idk
Vort
находил как раз случаи, когда IP в одном транспорте, а интродьюсеры в другом
orignal
так что все в порядке
orignal
и у меня нормально опредеяет
Vort
поэтому всегда предлагаю мои результаты перепроверять
Vort
так как даже при поиске ошибок можно допустить ошибку :)
Vort
перепроверю ещё на всякий случай U узлы
Vort
начинаю догадываться о сути проблем с R и U флагами
orignal
рассказывай
Vort
ну не пойму, что именно Unreachable. всё IP адреса, которые есть в RI ?
orignal
то есть?
Vort
какой смысл U флага?
orignal
никакого
orignal
я давно говорю что смысла нет
orignal
насколько я понимаю он был когда подключение через интредьюсер
orignal
но с появлением ipv4
orignal
*ipv6
orignal
и ситуации что вообще может не быть входяших подключений он не имеет смысла
Vort
хотя я потыкал несколько адресов:портов - нет ответа. так что может и есть смысл
Vort
сейчас R так потыкаю
Vort
R 3 из 4 ответили
orignal
ну x3
orignal
то есть IP адреса публикует а не отвечает?
orignal
а там буква i в NTCP2 есть?
Vort
в принципе, если флаг означает "все IP адреса в RI провалили пир тест", то в этом может быть смысл
R4SAS
Vort: каким образом ответили?
orignal
для NTCP2 не бывает пир теста
Vort
R4SAS: просто TCP коннект прошёл. детально не тыкал
Vort
"<~orignal> для NTCP2 не бывает пир теста" - тогда странно. может узел просто видит, что нет входящих и всё?
orignal
сомневаюсь что такая проверка есть
orignal
так что там с i?
Vort
надо будет когда-то детально потыкать узлы
Vort
"<~orignal> а там буква i в NTCP2 есть?" - для каких узлов? R или U ?
orignal
для U
Vort
ну вот два ещё раз перероверил - не ответили. i есть
orignal
это интересно
orignal
это джава?
Vort
да
orignal
может они ставят интродьюсеры а i забывают убрать ?
Vort
telnet 223.16.48.30 30641 и telnet 179.223.196.99 24764 - таймауты
Vort
но это старые RI, может просто в оффлайн ушли
orignal
но все равно какого хуя такое публикуется?
orignal
если Firewalled то такое публикеоваться не должно
Vort
покопаю java код. CAPABILITY_UNREACHABLE
Vort
вроде 2 места:
Vort
if (hidden || _context.getBooleanProperty(PROP_FORCE_UNREACHABLE)) { rv.append(CAPABILITY_UNREACHABLE);
Vort
switch (_context.commSystem().getStatus()) { ... case IPV4_DISABLED_IPV6_FIREWALLED: rv.append(CAPABILITY_UNREACHABLE);
Vort
ещё поищу
Vort
а, там ещё два условия: case DIFFERENT: case REJECT_UNSOLICITED:
Vort
а вот это всё R
Vort
case IPV4_OK_IPV6_UNKNOWN: case IPV4_OK_IPV6_FIREWALLED: case IPV4_FIREWALLED_IPV6_OK: case IPV4_DISABLED_IPV6_OK: case IPV4_UNKNOWN_IPV6_OK: case IPV4_SNAT_IPV6_OK: rv.append(CAPABILITY_REACHABLE);
Vort
табличку нашёл: github.com/i2p/i2p.i2p/blob/206cc0038777a3e70a07fa2422707e98e403525b/router/java/src/net/i2p/router/CommSystemFacade.java#L249-L277C8
Vort
вот описание STATUS_IPV4_DISABLED_IPV6_FIREWALLED: github.com/i2p/i2p.i2p/blob/206cc0038777a3e70a07fa2422707e98e403525b/router/java/src/net/i2p/router/CommSystemFacade.java#L382-L388
Vort
получается, что U узлы это в большей части IPV6_ONLY
Vort
странно. зачем тогда ipv4 адрес в RI
Vort
или это по другим причинам U стоит
Vort
а, есть ещё REJECT_UNSOLICITED
Vort
We are able to talk to peers that we initiate communication with, but cannot receive unsolicited connections, i.e. Firewalled, on all enabled transports.
Vort
вот это больше подходит
Vort
STATUS_DIFFERENT - We are behind a symmetric NAT which will make our 'from' address look differently when we talk to multiple people
Vort
вот три основных причины у Java для U - REJECT_UNSOLICITED, STATUS_IPV4_DISABLED_IPV6_FIREWALLED и DIFFERENT
Vort
boolean fwV4 = isIPv4Firewalled(); boolean fwV6 = isIPv6Firewalled(); if (fwV4 && fwV6) return Status.REJECT_UNSOLICITED;
Vort
так что да, по ipv4 к U узлу ломиться смысла мало
orignal
<eyedeekay> I read our code, it looks like when we become firewalled we don't remove i from NTCP2
orignal
вот ответ
orignal
так пусть чинят
orignal
я подумаю
orignal
что делать
Vort
если просто не вычитывать IP адрес из RI при обнаружении буквы U, может ли это что-то сломать?
Vort
то есть, приводить при чтении к традиционному для i2pd виду (раз U, то адреса нету)
orignal
я счас чиню уже
orignal
залил
Vort
выглядит хорошо. но пока основной узел обновлять не буду, хочу ещё набрать статистику по SSU2
orignal
как хочешь
orignal
но вообще то это опять же приздец
Vort
такое ощущение, что не последний
orignal
естественно
Vort
рейт у узла ведёт себя очень загадочно. хочу вычислить, почему. но не знаю, получится ли
Vort
вот собираю теперь отлупы по SSU2
Vort
но, видимо, и они мало влияют
Vort
особенно на U узлы. там около 1% отлупов / банов
Vort
похоже, U очень недогружены
Vort
и не так уж сложно к ним подключиться, как казалось
Vort
где-то ещё баг сидит скорее всего
orignal
они и должны быть недогужеными
Vort
почему?
orignal
потому что U
orignal
я вижу хуже ситуацию
Vort
LU понятно - ширины канала нету. а остальные?
orignal
если у роутера код R
orignal
а например по ipv4 недостидим
orignal
а NTCP2 публикует адрес
orignal
ну за натом сидят
orignal
в чем вопрос то?
Vort
"<~orignal> ну за натом сидят / в чем вопрос то?" в том, что по моей статистике это не мешает к ним подключаться. возможно, статистика с ошибками, не знаю
Vort
или дело в том, что у меня белый адрес
Vort
а NAT-NAT будет хуже работать
orignal
так а почему тогда U?
Vort
потому что прямой связи нет. но через интродьюсер есть. или я что-то не понимаю?
orignal
есть
orignal
но интродьюсер не всегда надежный
orignal
для установки соединения
Vort
ну вот по моим данным получается, что через интродьюсер к U подключиться проще, чем к перегруженному и дропающему пакеты R узлу
Vort
надо будет получше разобраться, возможно где-то ошибка
Vort
слишком уж фантастически звучит
orignal
мы же говорили что U недогружены
orignal
понятно почему
Vort
хотя через них же java вроде перестала транзит гнать
Vort
ну и есть вариант, что установить коннект получается нормально, но вот с удержанием коннекта проблема (то самое обновление hole punch). но это надо измерить и сравнить разрывы транспортных коннектов для R и U
Vort
может и не в этом дело
Vort
то есть, сейчас я вижу странное - повышенное количество таймаутов построения туннелей через U, но при этом пониженное количество таймаутов установки SSU2 сессий к U
orignal
странно