~acetone
Leopold
Most2
Ruskoye_911
`
anon2
cancername
immibis|ygg2
lagemeet
poriori_
weko
whothefuckami
zero_tolerance
zero_tolerance
weko: протокол для твоей идеи параллельных соединений en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol
weko
zero_tolerance: у меня появилось больше вопросов, чем ответов
weko
Это же по сути отдельный транспорт
weko
Какой нибудь мамбл врятли с ним работать умееь
whothefuckami
Я бегло почитал про этот ваш sctp
whothefuckami
Что-то похожее хотел выдумать
whothefuckami
weko: думаю делать так: есть очередь, в которую кладём пакеты, подписанные номерами. Если 2 туннеля, 2 очереди, 2 дубликата пакетов с одинаковыми номерами
whothefuckami
Номер просто инкрементируется
whothefuckami
Если очередь забивает, значит плохо
whothefuckami
В неё перестаём писать пакеты, пишем в свободные
whothefuckami
Таким образом вроде как сайдёт, а вот про фрагментацию я не догадался
whothefuckami
Ну её там можно впихнуть
whothefuckami
Blinded message
whothefuckami
Так, вопрос был не правильный
whothefuckami
Ладно забейте
weko
whothefuckami: про нумерацию и я подумал
whothefuckami
Ну, значит
whothefuckami
Нормальное решение с нумерацией
whothefuckami
Только я не понял что ты сказал про дубликаты
weko
Но вот для TCP ОС выдаёт сокет, из которого просто берётся N количество байт, а не отдельные пакеты
weko
Я так понимаю нужно делить на какие то куски, нумеровать и отправлять
weko
А на принимающей стороне с таким же делением на длину принимаются пакеты, обрабатывается нумерация и отправляется дальше
whothefuckami
Это тоже просто
whothefuckami
Максимальная длина 1 пакета?
whothefuckami
Ну, в 4 байта поместиться
whothefuckami
Значит в самом начале приниматель читает 4 байта
whothefuckami
И затем он получает размер пакета... И он знает, сколько читать дальше
whothefuckami
Много системных вызовов но сайдёт
whothefuckami
И вообще, receive не блокирует, если может сразу достать из очереди вроде
weko
Например, читаем каждый раз ровно 1000 байт, приписываем в начале 2 байта версии, 4 байта id сессии, 8 байт номер пакета
weko
В итоге на принимающую сторону приходит 1014 байт
weko
Можно длину, да...
weko
Не понятно, как принимающей стороне знать, сколько нужно прочитать
weko
Чтобы ничего не сместилось
weko
Может UDP передавать?
weko
Ну тоесть например пакет отправителя меньше 1000 байт, как получателю понять сколько читать ?
weko
Либо можно паддингом заполнять...
weko
Но костыли опять же))
weko
а стоп. Можно длину передавать
weko
Я туплю, сори
whothefuckami
2 байта версии.. 4 байта id сессии.. окей
whothefuckami
Ну версия ладно, но сессия там зачем?
whothefuckami
Я думал, что если стрим рвётся в ш2зв, то он не будет переиспользован
whothefuckami
Следовательно, это новое tcp подключение
whothefuckami
А значит нахер номер сессии?
whothefuckami
Хотяяяяя
zero_tolerance
еще одна реализация подобного протокола - multipath-tcp.org/, на странице подробная pdf презентация устройства работа протокола с изображениями
weko
zero_tolerance: вот уже неплохо, только не понятно как это настраивается
weko
Но разобраться можно
whothefuckami
По тому, что было в демке, я не думаю, что это будет применимо к ш2з
whothefuckami
yoooooo cppcheck обновили
whothefuckami
Кстати я тут подумал, нафиг очередь не нужна
whothefuckami
Просто condition variable пробуждает потоки отправки и всё
weko
Это почти как свой транспорт поверх TCP
whothefuckami
угу
weko
Хотя мне кажется на UDP лучше, так как он предназначен для такого лучще
weko
Не нужно писать длину пакета
acetone
Подумал тут, что к следующему митапу для мамбла создам несколько дополнительных серверных туннелей, чтобы каждому юзеру был свой туннель (или почти каждому)
whothefuckami
Blinded message
whothefuckami
Хотя может и есть смысл
whothefuckami
Лан я знаю как написать это дерьмо. Сегодня убью на написание похоже
weko
acetone: имеет ли это смысл зависит от того, идут ли разные стримы по разным туннелям, или по одному
acetone
weko: туннели не в плане quantity, в реальные отдельные серверные b32 дестинейшены
weko
Я понял
weko
Я к тому же и говорю acetone
weko
Если по разным идёт, то можно просто больше quantity поставить
weko
Your app should create sockets with IPPROTO_MPTCP as the proto: (socket(AF_INET, SOCK_STREAM, IPPROTO_MPTCP);).
weko
MPTCP - не подойдёт, игры/голос с обычным TCP работают, а тут как просто прокси не выйдет
weko
Не подойдёт, в общем
acetone
Если стримы по разным нитям (из числа quantity одного туннеля), да. Но отдельные туннели это явная 100% фича))
weko
acetone: да, особенно если мы сделаем эту прогу))
zero_tolerance
weko: >"как это настраивается?" / Если у обоих хостов ядра поддерживают MPTCP, то автоматически для каждого TCP соединения будут использоваться несколько сетевых интерфейсов.
zero_tolerance
остальные настройки похожи на выбор типа балансировщика и пр.
whothefuckami
А "хост" - это кто у нас хост?
whothefuckami
Хост - это я сам
whothefuckami
Ибо у нас
whothefuckami
приложение <-> ш2зв(локалхост!!!!!) <-> шызтырнет <-> ш2зв(ремоут) <-> ремоут приложение
weko
whothefuckami: ты спрашивал зачем id сессии. Я сейчас подумал, что действительно незачем
whothefuckami
weko: а я нашёл ему применение... Но забыл
whothefuckami
Ладно потом вспомню
whothefuckami
А. точно
whothefuckami
Если id сессии меняется, значит это новое tcp подключение
whothefuckami
Значит старое закончили принимать(когда с каждого туннеля получили по 1 пакету нового id)
whothefuckami
И разорвали
weko
Ну вообще в программе то это TCP сокет новый
weko
Или это чтобы понимать что у чему относится?
weko
Я так понимаю, суть такая будет: 4 байта - длинна, 4 байта id сессии, 8 байт id пакета, и дальше данные
whothefuckami
Ну наверно да
weko
+-
whothefuckami
Что-то такое
weko
Ещё можно номер версии, на будущее
whothefuckami
Только этого не хватало
whothefuckami
Ещё 1 байт оверхеда
weko
Ладно, не нужно
weko
Согласен
whothefuckami
weko: хочешь смешнявку кину?
weko
И считывание с сокетов будет в цикле:
weko
1. считать 4 байта - длинна пакета
weko
2. считать кол-во байта длинна пакета - 4
weko
3. обработать остальные заголовки
weko
4. отправить данные на нужный сокет
weko
whothefuckami: а? Давай
weko
На длину 2 байт хватит кстати
whothefuckami
weko: sharefile.i2p/file/0f/0f52e957fe08d73beb9cb655ea6eec0c246cc18725227f1f23b5e9202823464a/women.mp4
weko
Ахаххахаха
weko
Это я)))
weko
Аххахахха
weko
Веду
weko
Тебя)))
whothefuckami
Ой, я не педик, сорри
qend
whothefuckami: чего ты там все пишешь то?
whothefuckami
Ой, очень простая задачка не поверишь
whothefuckami
Нужно всего-то принять данные с одного сокета, и отправить на N других сокетов
whothefuckami
А на другом конце из N сокетов принять, и слепить в 1 выходной
whothefuckami
Должно быть легко, да?
whothefuckami
Это придумал веко кстати
weko
whothefuckami: да я шучу, это образно
weko
Я придумал это чтобы улучшить качество связи в i2p))
weko
acetone: разные стримы не идут на разные туннели, как я понял
acetone
Значит, weko, узкое место это исходящие стримы сервера. На входящих царит рандом, а вот выход, значит, жопа
weko
возможно это причина лагов, кстати. мне один чел писал, что он смог со совим другом успешно сидеть в в мабле через ш2з без лагов
weko
202:a2a5:dead:ded:9a54:4ab5:6aa7:1645 - интересный адрес у пубичного пира 188.225.9.167:18227
reloaded
weko: Это твой IP ?! :D
weko
нет конечно ))
reloaded
weko: А жаль ))
reloaded
weko: В следующий раз свой высылай! :D
weko
обидно(
weko
не обижай анона
reloaded
Блин... опять borat обиделся и упал :(
weko
i2pd вылетел, влогах ничего....
weko
в логах *
weko
просто куча варнов и всё
weko
)
acetone
weko: sam юзал в момент падения?)
weko
нет
weko
ох уж этот debug с++ .....
whothefuckami
Бляяяяяять
weko
а?)
whothefuckami
Осознал, что всё ещё гораздо сложнее
weko
что там?
whothefuckami
Да ну ээм
weko
там многопоток нужен))
whothefuckami
Просто вспомнил
whothefuckami
Что
whothefuckami
Стримов то может быть много
weko
да !!! ))) для этоого id
whothefuckami
Т.е. программа может открыть не 1 tcp коннект, а несколько
whothefuckami
Да... id
whothefuckami
Только ебануться с серверной частью такое писать
weko
да........
whothefuckami
Я 3 часа провёл в кровати думая о том, как такое сделать
whothefuckami
Похуй на многопоток
weko
чувствую себя источников проблем ... то в dev на уши поставлю, то тут 999 предложений выскажу
weko
ужас
whothefuckami
Кул поцыки используют мультиплексированый io
weko
ну да, в питоне есть asyncio например
weko
он как раз для сокетов и на подобии
whothefuckami
Ну типо если асинхронно
whothefuckami
Значит нужно коллбэками насрать
whothefuckami
А коллбэки когда их так много
whothefuckami
Они не будут простенькими
whothefuckami
Что так, что так адская хрень
weko
да оно вообще не так просто, как казалось изначально...
weko
добыл для разрабов ценную инфу!)
whothefuckami
acetone: на outproxy заблокирован выход на 127.0.0.1 зачем?
weko
чтобы на локалхост никто не лез )))
weko
мало ли хитрожопых)))
weko
зайдут куданить не туда ))
whothefuckami
А localhost заблочен? А ::1?
weko
localhost может в hosts быть не прописан. ipv6 тоже может не быть
weko
ну моё предположение)
weko
миром правят случайности!
weko
АААА
_borat_andro_
weko: это ацпи аддрес из 4 точек ?
weko
В смысле?
_borat_andro_
между ааа... Трёх точек ? между четырьмя Аааа
weko
О чём речь?
_borat_andro_
о домене и о его уровне
_borat_andro_
это третий уровень же вроде
_borat_andro_
три точки три ноката
_borat_andro_
нокят нокат
weko
А где я про домены писал.. Или даже отправлял ссылки с доменами
weko
Чего?
weko
Я не понимаю
weko
Перешли моё сообщение
_borat_andro_
weko: ты про локал писал хост
weko
Ааа
weko
Да, localhost работает только потому что обычно в hosts настроено
weko
Но если не настроено, то работать не будет
weko
Например в Arch нужно самим настроить
_borat_andro_
weko: ,а для этого надо быть уже +с каким то ,опытом
_borat_andro_
Blinded message
_borat_andro_
знать хосты итд итп
weko
Arch для людей с опытом... Ну или есть возможность тратить время на обучение по ходу дела
weko
Вообще это в вики по установке написано даже
weko
Вообще arch wiki и gentoo wiki очень полезные ресурсы
_borat_andro_
weko: у меня с проблемами ,что слета начались -это пиздец ,времени нет вообще
weko
Надо бы в ш2з зеркала сделать
_borat_andro_
уже спина болит и суставы в коленях от беготни
_borat_andro_
weko: возможно ,но мне пока с беготнёй больничной пока эту карму не постичь
weko
Эхх
_borat_andro_
суставы ,сегодня с оаботы прилёг ,потом встал и как поясницу схватил бляттьь.. потом колено хрустит ...мне физ отдых нужен
_borat_andro_
ну я спать
weko
Спок
_borat_andro_
йк1
_borat_andro_
weko: опечатка
weko
?
_borat_andro_
weko: Взаимно ,Доброй ночи )
weko
Доброго сна!