myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему

> Поддержка NAT Traversal хабом, Организация файлообмена между пассив. пользователями средствами хаба

Теги
Нет тегов для показа
Meloun
сообщение 4.1.2012, 20:40
Сообщение #1


Начинающий
*

Группа: Пользователи
Сообщений: 22
Регистрация: 16.11.2011
Пользователь №: 9 943
Спасибо сказали: 12 раз




В догонку к найденной инфе от авторов СтронгДЦ (NMDC Extensions) где они весьма элегантно заюзали технологию NAT Traversal (файлообмен между двумя юзерами за NAT) в обход хаба, мгновенно родилась идея встроить это в функционал самого хаба.

Написав в переводе документации о том, что поддержка от хаба не нужна я немного слукавил. Дело в том, что я сам являюсь автором одного движка хаба и когда писал алгоритм парсинга CTM команды сделал это несколько сурово, строго по спецификации протокола. И когда в логах начали попадаться сообщения о "неправильном" формате CTM начал ковырять источник причины. Всё уперлось в СтронгДЦ, сначало это были приписки символа S к номеру порту, тогда я интуитивно сообразил, что это инициализация TLS, но когда CTM команды стали мало того, что с приписками разных символов к порту, так еще и с добавлением имени пользователя в озадачился всерьез. Собственно инфу о причинах нарыл, реально был в восторге как элегантно и просто была решена проблема фалообмена между двумя пассивами (отчего раньше никто не додумался)) ).

В общем перехожу к делу. А что если сделать такую фишку средствами хаба для всех клиентов даже для самых древних. Опишу вербальный алгоритм.

Клиенты коннектятся к хабу, передают MyINFO где указан режим. Если режим пассивный, то рассылаем всем правленный MyINFO как будто клиент активный, но естественно хаб будет знать кто в активе, а кто в пассиве. Можно также добавить проверку активных пользователей на предмет открытия TCP порта для активного режима, в случае его закрытости хаб будет считать клиента пассивным (это я уже реализовал, прекрасно работает, кому интересно могу описать алгоритм).

Далее, если приходит команда CTM от пассивного пользователя (она может прийти если клиент считает что он в активе, а хаб проверив порт выяснил что в пассиве) и адресована она пользователю в реальном активном режиме, то меняем команду на $RevConnectToMe и отправляем удаленному пользователю, далее процесс файлообмена пойдет в штатном режиме.

Если CTM или RevConnectToMe приходит от пассива и адресована пассиву, тогда отправляем команду CTM и первому и второму клиенту, только порты указываем локальные с которых подключены к хабу по аналогии как расписывал в документации (см. ссылку в самом начале поста расширение NAT Traversal) только никаких N и R добавлять к порту не надо.

Вот интересно старые клиенты такой финт с организацией "туннеля" через НАТы "схавают" или все же программеры стронга там что-то особенное с сокетами намудрили?

Жду собеседников для конструктивного обсуждения...
Go to the top of the page
+Quote Post
mariner
сообщение 4.1.2012, 21:25
Сообщение #2


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 875
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 220 раз




Цитата
Вот интересно старые клиенты такой финт с организацией "туннеля" через НАТы "схавают"

Скорее всего при "пробивании" нат используется UDP протокол, так что старые клиенты как не могли, так и не смогут
Go to the top of the page
+Quote Post
Meloun
сообщение 4.1.2012, 21:40
Сообщение #3


Начинающий
*

Группа: Пользователи
Сообщений: 22
Регистрация: 16.11.2011
Пользователь №: 9 943
Спасибо сказали: 12 раз




Цитата(mariner @ 4.1.2012, 22:25) *
Скорее всего при "пробивании" нат используется UDP протокол, так что старые клиенты как не могли, так и не смогут

Несогласен. Используется не UDP протокол а TCP, т.к. NATы "пробиваются" по локальным TCP портам с которых пользователи приконнектились к хабу.

Вот нашел интересные ссылочки по теме:
http://mdt.kz/viewtopic.php?f=4&t=33
http://dcpp.wordpress.com/2010/02/13/passi...-nat-traversal/

Go to the top of the page
+Quote Post
mariner
сообщение 4.1.2012, 21:56
Сообщение #4


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 875
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 220 раз




Вам не кажется. что это создаст определенную нагрузку на хаб? А еще получается уже не П2П
Go to the top of the page
+Quote Post
Setuper
сообщение 4.1.2012, 22:01
Сообщение #5


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Как-то пытался что-то подобное изобрести ( http://mydc.ru/topic4725.html ), однако пока отказался от этой идеи.
Go to the top of the page
+Quote Post
Meloun
сообщение 4.1.2012, 22:23
Сообщение #6


Начинающий
*

Группа: Пользователи
Сообщений: 22
Регистрация: 16.11.2011
Пользователь №: 9 943
Спасибо сказали: 12 раз




Цитата(mariner @ 4.1.2012, 22:56) *
Вам не кажется. что это создаст определенную нагрузку на хаб? А еще получается уже не П2П

Не шибко сильную нагрузку создаст, если не проверять у активных клиентов порты, то весь оверхед будет состоять из изменения режима в MyINFO и отправки правленных команд CTM двум пользователям. Как это не P2P? Еще как П2П, непосредственно файлообмен будет идти без участия хаба, путём создания TCP сессии между двумя стейтами в НАТах.
Вот еще интересные ссылочки:
http://mdt.kz/viewtopic.php?f=4&t=32
http://www.brynosaurus.com/pub/net/p2pnat/
У этой реализации как видно есть некоторые ограничения ((

Цитата(Setuper @ 4.1.2012, 23:01) *
Как-то пытался что-то подобное изобрести ( http://mydc.ru/topic4725.html ), однако пока отказался от этой идеи.

В том-то и дело, что насколько понял программеры StrongDC вообще без UDP обошлись, дырявят наты через TCP-сессии. Решение мегапростое, настолько простое, что можно попробовать реализовать самим хабом. Весь вопрос только в том как именно реализован алгоритм инициализации TCP соединений в новом стронге для использования дырок.
Go to the top of the page
+Quote Post
Setuper
сообщение 4.1.2012, 22:40
Сообщение #7


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Соединение по TCP - это что-то очень геморное. Быть может это и возможно, я не проверял и не копался в этом, и даже может быть такое соединение лучше чем ничего, однако я не вижу большого смысла в организации подобной штуки только со стороны хаба. Я считаю, что для надежной передачи данных клиент тоже должен поспособствовать в соединении.
Go to the top of the page
+Quote Post
Meloun
сообщение 4.1.2012, 23:04
Сообщение #8


Начинающий
*

Группа: Пользователи
Сообщений: 22
Регистрация: 16.11.2011
Пользователь №: 9 943
Спасибо сказали: 12 раз




Попробую реализовать эту фишку у себя. По результатам отпишусь и возможно попрошу содействия в тестировании.

Пока не нашел инфу о такой фичи для помощи тем у кого постоянно меняется IP и клиент глючит, нехочет брать IP из команды $UserIP2, реализовал у себя такую хрень, поисковые запросы и CTM с IP отличающимися от того с которого коннектится пользователь патчатся, IP меняется на тот с которого зашел пользователь, алгоритм отлажен и оптимизирован, работает шустро.
Для тех кто тупит конкретно и не может не только настроить активный режим через НАТ или брандмауэр, но и переключиться в пассив делаю так:
Клиент коннектится к хабу, если он в активе, то ему отсылается команда RCM с именем бота, правильный клиент присылает в ответ CTM (на этом этапе легко отсеиваются часть спам-роботов) оттуда определяем активный порт, сканируем его, если открыт, то ок, закрыт, то принудительно перекл.ючаем в пассив, т.е. патчим MyINFO дабы другие видели что на самом деле пассив, также команды на активный поиск от этого клиента преобразуем в пассивные, CTM преобразуем в RCM. Всё работает на УРА! Все рады...

Всё это встроено в сам движок хаба, особого увеличения нагрузки не вижу. Можете потестировать dc.sungate.su

Если выгорит с "продырявливанием" НАТов, вообще будет супер. ДЦ станет доступным даже для самых блондинок %) Конкуренция с торрентами будет существеннее.
Go to the top of the page
+Quote Post
mariner
сообщение 4.1.2012, 23:14
Сообщение #9


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 875
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 220 раз




я вот давно хочу предложить не насиловать труп, а перейти на адц. Как русхаб будет иметь АДЦ, то я, возможно, перейду на него.
Go to the top of the page
+Quote Post
Meloun
сообщение 4.1.2012, 23:23
Сообщение #10


Начинающий
*

Группа: Пользователи
Сообщений: 22
Регистрация: 16.11.2011
Пользователь №: 9 943
Спасибо сказали: 12 раз




Ребята которые пилят ФлэксХаб также пилят модификацию ADC обратносовместимого с NMDC. Незнаю, что у них получится, но с интересом слежу.

А вообще ADC какой-то замороченный, NMDC при достаточной простоте еще весьма живуч и востребован, с появлением DHT стал еще более привлекательным, вот народ и начал расширения новые под него пилить.

Долго курил документацию по ADC, некоторых моментов нихрена не понял, некоторые моменты еще более геморойнее чем в NMDC. В итоге взял и спокойно напилил хаб под NMDC и сейчас спокойно расширяю его функционал штатными методами, доволен.

Не спешите хоронить старичка big_smile.gif
Go to the top of the page
+Quote Post
mariner
сообщение 4.1.2012, 23:46
Сообщение #11


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 875
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 220 раз




Цитата
Не спешите хоронить старичка

Пора бы уже и закопать. Банально - если обвесить NMDC всеми этими расширениями то получим ADC.

Но в АДС это предусмотрено из коробки, а тут 100500 расширений, которые не все клиенты тянут. Ну и наконец, в ADC, на сколько я помню, служебные слова покороче. Пустячок, а нагрузку на сеть слегка срежет.

Если уж совсем "по трушному" делать, то еще и сразу SCTP использовать, вместо унылого TCP.

А на счет ФлексХаба - не смотри ты на них. Это забавный проект, но в конечном счете не нужный, ибо "too slow".
Go to the top of the page
+Quote Post
Setuper
сообщение 4.1.2012, 23:48
Сообщение #12


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Я смотрел код флекс хаба и уже критично говорил по поводу автоопределения протокола. Автоопределение во флексе осуществляется следующим образом: всё основывается на том, кто первым начинает отправлять команды. По протоколу NMDC клиент коннектится к хабу и ждёт от него команд, по ADC протоколу - клиент коннектится к хабу и сразу отсылает первые команды, то есть поведение в принципе другое. Но на этом нельзя основываться.

Флекс хаб делает так: к нему коннектится клиент, после аксепта клиента хаб некоторое время ждёт от него команд, если команды пришли, то протокол ADC, иначе протокол NMDC. Возникает логичный вопрос: как долго хабу ждать этих команд? По коду флекс хаб ждёт, ровно столько, сколько на хабе выполняются действия от accept до recv, а так как флекс хаб написан на lua, то быстрым его никак нельзя считать, поэтому ADC клиент успевает отослать нужные команды прежде, чем хаб выполнит действия от accept до recv. Поэтому с первого взгляда всё хорошо. Но даже если бы на хабе была некоторая задержка для получения команд, то всё равно вопрос остаётся открытым: какая должна быть эта задержка? А если сеть перегружена и пакеты доставляются очень медленно, - получается в таком случае ADC клиент будет признан NMDC клиентом.

В общем так делать нельзя. И это не пустые размышления. Я проверял данный факт на моём русхабе, который работает быстрее клиента, который коннектится, и по такой схеме получалось так, что ADC клиент признавался NMDC клиентом.

Конечно можно совместить на одно хабе 2 протокола, но за каждым протоколом должен быть однозначно закреплён свой порт! То есть чтобы номер порта однозначно определял протокол.
Go to the top of the page
+Quote Post
Meloun
сообщение 4.1.2012, 23:54
Сообщение #13


Начинающий
*

Группа: Пользователи
Сообщений: 22
Регистрация: 16.11.2011
Пользователь №: 9 943
Спасибо сказали: 12 раз




Главная проблема ADC это отсутствие обратной совместимости с NMDC ИМХО. Вот и вся причина холиваров на эту тему. А ребята заморачивающиеся с ФлэксХабом молодцы. DirectConnect уже давно альтруистский проект никем не финансируемый в отличии от Torrent и благодаря таким вот самоделкиным развивается.

Вообще моё конечное мнение: ADC не решает всех проблем NMDC, закрыли одни дыры добавили другие. Ждёмс ADCv2...))
Go to the top of the page
+Quote Post
mariner
сообщение 4.1.2012, 23:55
Сообщение #14


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 875
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 220 раз




Цитата
закрыли одни дыры добавили другие

Я так понимаю ты своё авторитетное мнение не обоснуешь?
Go to the top of the page
+Quote Post
Meloun
сообщение 5.1.2012, 0:00
Сообщение #15


Начинающий
*

Группа: Пользователи
Сообщений: 22
Регистрация: 16.11.2011
Пользователь №: 9 943
Спасибо сказали: 12 раз




Цитата(mariner @ 5.1.2012, 0:55) *
Я так понимаю ты своё авторитетное мнение не обоснуешь?

Обосную сразу первым что вспомнилось после изучения RTFM: лички в обход хаба - ахриненный стимулятор для спаммеров особенное сли всё-таки случится страшное и все начнкт массово переползать на ADC

Ну и вот еще, подделка CID со всеми вытекающими особенно для блондинок, которые толком вкурить не могут как пассив поставить, а поменять "украденый" CID и подавно.

Что-то еще было, но сейчас уже не помню...
Go to the top of the page
+Quote Post
mariner
сообщение 5.1.2012, 0:05
Сообщение #16


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 875
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 220 раз




Цитата
лички в обход хаба

А - решаемо
Б - и сейчас вроде есть. При использовании шифрования
В - права человека глянь еще. Право личной переписки.

Цитата
подделка CID

Блондинко-проблемы. Это как пасскей в торренте. И ведь вроде никто не жалуется на пасскей.
Go to the top of the page
+Quote Post
Meloun
сообщение 5.1.2012, 0:20
Сообщение #17


Начинающий
*

Группа: Пользователи
Сообщений: 22
Регистрация: 16.11.2011
Пользователь №: 9 943
Спасибо сказали: 12 раз




Setuper, касаемо такого метода определения протокола согласен несколько коряво. Также размышлял о объединении хабов NMDC и ADC на одном порту, так и не придумал ничего как действительно по разным портам раскидать. Но вот объединить файлообмен между пользователями ADC и NMDC в рамках одного хаба мне показалось на тот момент нереальным. Очень жду результатов от разработчиков Флэкса.

Цитата(mariner @ 5.1.2012, 1:05) *
А - решаемо
Б - и сейчас вроде есть. При использовании шифрования
В - права человека глянь еще. Право личной переписки.


Блондинко-проблемы. Это как пасскей в торренте. И ведь вроде никто не жалуется на пасскей.


А - как? пароль на личку средствами клиента это вариант, но не для блондинок поэтому не рассматриваю как панацею
Б - только у грэйлинка если память не изменяет, соотв. есть вероятность спама в обход скриптов хаба.
В - хех вот уж не знаю, что лучше куча открытых окон со спамом в личках или "право личной переписки". общаясь в аське почему-то никто такими вопросами не задаётся))

Блондинко-проблемы это как раз и есть проблемы нормального разработчика софта. Считаю, что по причине именно удобства работы, минимума настроек и фунциклирования из коробки торренты так нехило расплодились. Пасскей не так просто увести, да и в случае стыривания это грозит только лишь рейтингом от которого всё больше порталов отказываются по известным причинам.

Не убедил big_smile.gif
Go to the top of the page
+Quote Post
mariner
сообщение 5.1.2012, 0:23
Сообщение #18


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 875
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 220 раз




Цитата
А - как?

Очевино, капча

Цитата
Пасскей не так просто увести, да и в случае стыривания это грозит только лишь рейтингом от которого всё больше порталов отказываются по известным причинам.

Тогда какая проблема с CID?
Go to the top of the page
+Quote Post
Meloun
сообщение 5.1.2012, 0:33
Сообщение #19


Начинающий
*

Группа: Пользователи
Сообщений: 22
Регистрация: 16.11.2011
Пользователь №: 9 943
Спасибо сказали: 12 раз




Цитата(mariner @ 5.1.2012, 1:23) *
Очевино, капча


Тогда какая проблема с CID?

Угу если ента "капча" по умолчанию включена в клиенте, что-то таковых у которых "из коробки" стоит нужная галка пока не видел. Кроме того капчу подобрать не сложно, тут еще антиспам фильтр нужен потому как владельцу какого-нибудь мелкого хаба будет совсем не влом вбивая капчи рекламить на крупном хабе. Проходили уже такое.

Ну дык если под твоим CID сидит кто-нибудь другой ты не войдешь на ADC хаб, вот она и проблема по сути еще и уязвимость.
Go to the top of the page
+Quote Post
mariner
сообщение 5.1.2012, 0:40
Сообщение #20


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 875
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 220 раз




Я читал старую версию протокола. Там вроде при установлении соединения "лички" была команда. То есть я мог видеть, что они начали болтать. Ну и запретить хабом до ввода капчи слать эту команду.

Цитата
Ну дык если под твоим CID сидит кто-нибудь другой ты не войдешь на ADC хаб

А вот этого не знал. Думал, лишь что CID отсылается хабу в командах. Тогда бы проблем, в принципе, не было.
Go to the top of the page
+Quote Post

2 страниц V   1 2 >
Ответить в данную темуНачать новую тему
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No new внезапная непонятная проблема с хабом
17 aleksei1122 18 941 3.3.2013, 16:41 Посл. сообщение: Delia
No new Помогите с Хабом!
26 cpr 32 406 7.2.2013, 17:20 Посл. сообщение: DEN 007
No New Posts Помогите разобрать ситуацию с хабом, создал хаб на птокеX 0.5.0.0
Помогите разобрать ситуацию с хабом
12 mambob 14 722 30.1.2013, 0:03 Посл. сообщение: Yamakasi
No New Posts Поддержка Magnet ссылок в Xenforo
0 111222333 7 225 1.12.2012, 20:41 Посл. сообщение: 111222333
No new Topic has attachmentsПроблема с хабом после установки роутера
22 Jet1k 32 512 3.1.2012, 11:05 Посл. сообщение: Strannik
No New Posts Поддержка сетевого протокола SCTP
2 CSRedRat 6 957 30.12.2011, 14:57 Посл. сообщение: pro
No new Проблема с хабом на PtokaX 0.4.1.2
Проблема с хабом на PtokaX 0.4.1.2 - Сильно лагает
16 sania 21 407 29.8.2010, 19:04 Посл. сообщение: mariner
No new проблема с хабом
PtokaX 0.4.1.1 Win32 GUI
17 Saymon21 21 283 31.7.2009, 16:40 Посл. сообщение: Артём
No New Posts Нет связи с хабом некоторых сегментов сети
Не могут подконнектиться юзеры с определенными IP
2 NikseR 7 323 23.5.2009, 9:11 Посл. сообщение: ustas
No New Posts Интеграция каталогизатора фильмов с хабом
2 D-tox 7 221 10.5.2009, 13:30 Посл. сообщение: D-tox

 



RSS Сейчас: 23.11.2024, 9:53