~AreEnn
~AreEnn_
~R4SAS
~acetone
~orignal
~villain
&N00B
+Xeha
Most2
Nausicaa
Nikat_meh
Opax
Qbit
Vort
WebClient3
`
anon3
b3t4f4c3
fidoid
i
kaotisk
karamba_i2p
korol4ik_
nemiga
not_bob_afk
poriori
profetikla
qend
segfault
soos
uis
un
user
weko
whothefuckami
woodwose
orignal
попутно наткнулся на другую проблему
orignal
m_RouterInfo.SaveToFile (i2p::fs::DataDirPath (ROUTER_INFO));
orignal
и это просиходит в треде роутера
orignal
где например расшифровка запросов к нему просиходлит
onon
Почему в функции SSU2Session::Resend (uint64_t ts) у нас сделано так:
onon
uint32_t packetNum = SendData (it->second->payload, it->second->payloadSize);
onon
А не так:
onon
uint32_t packetNum = SendData (it->second->payload, it->second->payloadSize, SSU2_FLAG_IMMEDIATE_ACK_REQUESTED);
orignal
полагаю что когда это было сделано этого флага еще не было
onon
Вот вам идея как бороться с любителями ставить bandwidth = X.
onon
Значит если умник выставил X без числа
onon
Тогда выставляем ему L
orignal
моя идея ставить ему P
onon
И параллельно начинаем запоминать максимальную входящую и исходящую скорость
onon
И потом поднимаем лимит по минимальному значению из этих скоростей
orignal
я просто не хочу разрешать X в конфиге
orignal
можно да
onon
Он будет что-то качать или выгружать и так мы увидим реальную скорость
orignal
второй варинт для X ставить лимит всегда в 10000
onon
И постепенно подгоним значения под реальные
onon
А вдруг у него больше...
orignal
а если у него больше пусть вручную число ставит
onon
А если у него 1 мбит на мобилке и он поставил X без числа, то 10000 нас не спасут
onon
А автоматическая подстройка хоть не сразу но выставит реальную скорость
onon
Ну и ещё как-то сбрасывать значения при смене подключения например с 3г на вайфай
orignal
можно наверное
orignal
ну так будут обезьяны тогда ставить P
onon
Ну всё же лучше чем X
onon
Ещё меня в коде SSU2 смущает что SSU2_FLAG_IMMEDIATE_ACK_REQUESTED выставляется на каждый пакет и что ответы отсылаются также почти на каждый пакет. Как-то слишком избыточно получается.
onon
Надо подумать над этим.
orignal
это с чего вдруг?
orignal
вроде только на всякие пир тесты
orignal
только на последний в пачке
onon
Да, это я не туда посмотрел. Как раз на этот блок...
onon
Претензия пока снимается
onon
А вот про ретрансмиты ты подумай, почему там нет запроса акка
orignal
так надо сделать
orignal
проблема с записью RouterInfo похоже глубже
orignal
с ней надо разбираться
Vort
так а что с ситуацией запуска с RI, но без ключей?
Vort
может её стоит в первую очередь починить? если там таки есть проблема, конечно
orignal
я не смотрел
orignal
только чем ее починка поможет?
Vort
постепенно с обновлением сети уйдёт флуд "Wrong static key" из логов
orignal
обезьяны то не исчезнут
orignal
а проблема в них
orignal
то есть дубликаты
Vort
так эта хрень и без дубликатов бывает
Vort
может добавить ident для аналогичного сообщения из NTCP2?
Vort
не знаю реально ли
Vort
станет видно сколько процентов фигни от клонов, а сколько сами по себе
orignal
можно да и для NTCP2
orignal
а с чего эта хрень может возникнуль в принципе.
Vort
ну ты же сказал, что может быть когда RI есть, а ключей нету. я не проверял
orignal
да
orignal
но это когда обезяна клонирует вручную
orignal
в нормально рабтающей системе такого быть не должно
Vort
может из бекапов кто-то так восстанавливает допустим
Vort
или с одного сервера на другой переносит
Vort
несколько таких случаев на всю сеть достаточно, чтобы загадить лог
orignal
и не копирует директорию целиком?
orignal
ладно гляну
orignal
касамо записи локального RouterInfo оно походе делается слишком часто особенно при пир тесте
Vort
"<~orignal> и не копирует директорию целиком?" не знаю про линуксы, но на винде в директории куча всего. профили, netdb
Vort
логично выбрать самое нужное. но при этом вполне можно перестараться
Vort
особенно если i2pd не ругается на неправильное состояние
orignal
гляну сегодня
Vort
ещё одна идея есть
Vort
помнишь народ писал о смене ключей недавно? типа для приватности
Vort
так вот они вполне могут грохать сами ключи, но оставлять RI на месте
Vort
это намного реальнее косяка с бекапом/переносом
orignal
тогда бы фелилась подпись
Vort
так это же именно тот сценарий, о котором ты говорил. что-то я недопонимаю
Vort
"<~orignal> в итоге они создались новые а RI старый"
Vort
имеешь в виду что ли, что с такой конфигурацией i2pd вообще будет неработоспособный?
orignal
там смотри там 3 ключа
orignal
router.keys, ntcp2.keys и ssu2.keys
orignal
если грохнуть router.keys и оставить старый router.info то будет неверная подпись
Vort
в общем, так или иначе, рандомные удаления должны или приводить к состоянию "ничего не работает" (и не гадит в сеть) или автоматически чиниться
Vort
16 комбинаций получается, да? )
orignal
согласен
orignal
надо проверку делать
orignal
все ключей
orignal
все явно там насчет router.keys делается проверка
orignal
а про ntcp2 и ssu2 нет
orignal
хотя там пересоздаются и обновляются
orignal
лажа может быть только если не совападают
Vort
то есть, когда файл существует, но не тот?
Vort
так накосячить довольно сложно. видимо, какой-то сценарий упускаем
orignal
воззможно
orignal
я как вижу ситуацияю
orignal
обезьяна сделала копию роутера
orignal
и на каждой копии созались свои собственные ключи
orignal
далее мы получаем RI в SessionConfirmed
orignal
обнаруживаем там более свежий и не обновляем
orignal
в итоге к нам пришел S не тот что в netdb
orignal
const int NETDB_EXPIRATION_TIMEOUT_THRESHOLD = 2*60; // 2 minutes
orignal
у нас проверка только если превышает эту величину
orignal
а если не превышает?
Vort
"<~orignal> обнаруживаем там более свежий и не обновляем" не обновляем вообще никогда?
Vort
"<~orignal> лажа может быть только если не совападают" это, кстати, желательно всё же поправить. чтобы хотя бы теоретически работа была всегда корректной
Vort
я просто видел такие сообщения от не-клонов
Vort
то есть, мог когда-то быть клон, потом исчезнуть, но проблема уже "застряла"?
orignal
так если у нас более свежий RI то зачем мы будем заменят его говном мамонта?
orignal
почему? как только получили более новый сразу там обновим
orignal
понимаешь прнцип?
orignal
пришел RI смотрим если такой есть то сравниваем таймстамп
orignal
если свежее то обновляем если сстраее то нет
Vort
"<~orignal> понимаешь прнцип?" не совсем. проблема проявляется локально у меня или у того юзера, который сделал клон?
Vort
(и мне надо отойти)
orignal
в твоем netdb
orignal
а юзеру булет отлуп
orignal
но на самом деле источник проблему здесь
orignal
std::shared_ptr<const RouterInfo> NetDb::AddRouterInfo (const uint8_t * buf, int len)
orignal
{
orignal
bool updated;
orignal
return AddRouterInfo (buf, len, updated);
orignal
}
orignal
мы этот updated теряем
orignal
надо вызывать версию с этим параметром
Vort
получается, есть два отдельных механизма возникновения проблемы (сообщения в логе)? локальный и удалённый
Vort
с клонами и без
orignal
нет проблема всего одна
orignal
клоны
orignal
локальный механизм лишь как мы с ними работаем
Vort
это ведь может произойти и без клонов? "<~orignal> лажа может быть только если не совападают"
orignal
а что это может вызвать в принципе?
orignal
это очень редкий сценарий
orignal
в отличие от клонов
Vort
я согласен, что редкий
Vort
и это хорошо
orignal
чтобы у тебя файлы с ключами вдруг оказались вместе от разных роутеров
Vort
если локальный починишь, то процентов 80 проявлений, скорее всего, уйдёт. при чём, сразу
Vort
"<~orignal> а что это может вызвать в принципе?" 1. попытки хака. 2. действия юзера, не понимающего, что он делает
orignal
ну если хак ты мало что тут сделашь
orignal
только определять ошибку
orignal
но поверь мне главный источник проблем это клоны
Vort
только что ещё одну странность заметил (уже не про клоны)
Vort
с последними коммитами на графике нагрузки CPU i2pd довольно заметные шипы пошли
Vort
коррелирующие с нагрузкой на диск
Vort
они и раньше были, но не настолько явные
Vort
интервал нерегулярный, несколько раз в час
Vort
может, конечно, это у меня что-то не так пошло, так что на всякий случай сообщаю
Vort
я понимаю, что сброс чего-нибудь на диск будет грузить тот самый диск. но вот насчёт CPU - неясно
orignal
точно прямая корреляция а не обратная.
orignal
то есть нагрузка на проц когда на диск нет
Vort
лучше сам глянь
orignal
вот тут непонятно
Vort
это на версии 2.55.0-40-g35f7bd51
orignal
может где то запись на диск тормозит
orignal
и потом очередь разгружается
Vort
вероятно