Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Всё о Direct Connect _ идея, которая позволит избавиться от пассивных юзеров в DC :)

Автор: dolchegobano 28.6.2009, 17:38

У меня есть идея, которая позволит избавиться от пассивных юзеров в DC big_smile.gif
Речь идёт о технологии http://mydc.ru/r/?http://en.wikipedia.org/wiki/UDP_hole_punching , которую используют многие проги типа Skype, Hamachi, TeamViewer, или вот такая штучка — http://mydc.ru/r/?http://wippien.com/mediator.php
Суть такова: нужно внедрить в каждый DC-клиент сервер-медиатор, который будет обслуживать пассивных юзеров на хабе. То есть, когда некий клиент оказывается на хабе в пассивном режиме, он автоматически начинает искать свободные активные медиаторы, которые будут его обслуживать в пределах этого хаба.
Нагрузка на медиатора будет скорее всего незначительна, и один активный юзер сможет совершенно спокойно обслуживать нескольких пассивных. Речь не идёт о полноценном медиаторстве по всем протоколами и софту — только файлообмен в пределах текущего хаба. Как предполагает технология медиации, трафик не идёт через медиатора: он только обслуживает запросы между пассивными юзерами.

Некоторые могут заметить, а почему бы не использовать тогда тот же Хамачи, как этому учат на сайте Pelink? Хамачи и подобные ему используют далёкие серверы, и слишком универсальны. Да и хлопотно это всё в плане настройки и эксплуатации, и скорость очень низкая. Поэтому, стоит превратить сами DC-клиенты в медиаторы! Разумеется, пользоваться услугами медиаторов смогут только те клиенты, которые это умеют делать big_smile.gif Сторонние и устаревшие клиенты будут лишены такого удобства.

Идея слишком хороша, чтобы её похоронить: внедрить сервер-медиатор в каждый клиент — это революционный шаг, который позволит избавиться от пассивных пользователей вообще.

Автор: mariner 28.6.2009, 19:06

дада, больше костылей, хороших и разных. нарисуйка мне схему, как это должно работать.

Автор: dolchegobano 28.6.2009, 20:01

Цитата(mariner @ 28.6.2009, 22:06) *
дада, больше костылей, хороших и разных. нарисуйка мне схему, как это должно работать.

хорошо... давайте теперь вместе придумаем способ, как решить эту проблему big_smile.gif Заодно мне хотелось бы услышать, почему до сих пор хабы не соединяют пассивов с пассивами?
И что на этот счёт в новом протоколе ADC? Когда я оказался на адц-хабе, то там у всех юзеров были иконки активов - что бы это значило?

Автор: mariner 28.6.2009, 20:45

почему пассивов с пассивами не соединяет? ну это просто - представь есть NAT (то есть один адрес и много клиентов, висящих на нем). Когда клиент посылает запрос на соединение с удаленным адресом, то должно установиться соединение по определеному порту, но т.к. клиентов много, то возникает неопределенност, к кому пойдет запрос. Тогда надо пробрасывать порты через нат ( провайдер этоого не одобрит, слишком много мороки), но если порт пробросить через нат, то возникает определенность, кому будет переадресован запрос. хамачи, гарена и т.д. и т.п. по сути VPN сервера, когда есть сервер, через которые органируется тунель и гонится трафф( конечно и в таком случае возможно прямое соединение между клиентами, т.к. организуется как бы виртуальная локальная сеть, но чаще всего через сервер будет гнаться траффик). И твой вариант как раз из этой серии.

Автор: dolchegobano 28.6.2009, 20:57

Цитата(mariner @ 28.6.2009, 23:45) *
почему пассивов с пассивами не соединяет? ну это просто - представь есть NAT (то есть один адрес и много клиентов, висящих на нем). Когда клиент посылает запрос на соединение с удаленным адресом, то должно установиться соединение по определеному порту, но т.к. клиентов много, то возникает неопределенност, к кому пойдет запрос. Тогда надо пробрасывать порты через нат ( провайдер этоого не одобрит, слишком много мороки), но если порт пробросить через нат, то возникает определенность, кому будет переадресован запрос. хамачи, гарена и т.д. и т.п. по сути VPN сервера, когда есть сервер, через которые органируется тунель и гонится трафф( конечно и в таком случае возможно прямое соединение между клиентами, т.к. организуется как бы виртуальная локальная сеть, но чаще всего через сервер будет гнаться траффик). И твой вариант как раз из этой серии.

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

Автор: mariner 28.6.2009, 21:29

Цитата(dolchegobano @ 28.6.2009, 21:57) *
в описании всех упомянутых впн-приложений чёрным по белому написано, что трафик не передаётся через сервер.


ну на счет не передается - это не всегда, ой как не всегда. Это видно хотябы из марштуров. ВПН накидывает маршрут на соединение с маской 255.255.255.255, следовательно все запросы в прицнпе будут попадать на впн сервер, если оба клиента находятся в пассиве (за натом).

На счет сервера-медаитора - эм, а зачем кто-то должен тратить свой tcp (и udp) cтэк на тех, у кого проблемы. Как говорится: проблемы негров ширифа не анонят. Понимаешь, перекладывая функцию на активом ты автоматом можешь хлебнуть с этим говна, когда у актива будет комп тормозить, из-за нагрузки на его сетевое соединение

Автор: dolchegobano 28.6.2009, 21:51

Цитата(mariner @ 29.6.2009, 0:29) *
На счет сервера-медаитора - эм, а зачем кто-то должен тратить свой tcp (и udp) cтэк на тех, у кого проблемы. Как говорится: проблемы негров ширифа не анонят. Понимаешь, перекладывая функцию на активом ты автоматом можешь хлебнуть с этим говна, когда у актива будет комп тормозить, из-за нагрузки на его сетевое соединение

а зачем кто-то выкладывает релизы, и гоняется за званием релизера? Зачем куча народа держит хабы на своих обычных машинках, и всячески их рекламирует (спамит) на других хабах? Зачем народ вообще расшаривает кучу файлов? Зачем энтузиасты пишут бесплатный софт для того же файлообмена? Ах, пардон, я проболтался: ключевое слово "энтузиасты", и "альтруисты".
***
Перекладывая нагрузку на одного актива, то да, не очень хорошо получается: канал может быть узким, соединение слабым, да актив может отключить комп. Но, ведь речь не об одном активе: речь идёт о том, что нагрузка может распределяться. А в случае разрыва соединения, клиент пассива должен автоматом искать нового актива.

Автор: mariner 28.6.2009, 22:26

Цитата(dolchegobano @ 28.6.2009, 22:51) *
а зачем кто-то выкладывает релизы, и гоняется за званием релизера? Зачем куча народа держит хабы на своих обычных машинках, и всячески их рекламирует (спамит) на других хабах? Зачем народ вообще расшаривает кучу файлов? Зачем энтузиасты пишут бесплатный софт для того же файлообмена? Ах, пардон, я проболтался: ключевое слово "энтузиасты", и "альтруисты".
***
Перекладывая нагрузку на одного актива, то да, не очень хорошо получается: канал может быть узким, соединение слабым, да актив может отключить комп. Но, ведь речь не об одном активе: речь идёт о том, что нагрузка может распределяться. А в случае разрыва соединения, клиент пассива должен автоматом искать нового актива.


тут ты говоришь в начале про админов, а потом говоришь про обычных юзеров. обычному юзеру, пусть он и в активе, нахрен не надо быть медиатором. Он не тузиаст

Автор: Alexey 28.6.2009, 23:55

Одному мне кажется, что идея бредовая?
Вот даже не представляю, как трафик будет вне этого медиатора идти.

Автор: mariner 29.6.2009, 0:02

Цитата(Alexey @ 29.6.2009, 0:55) *
Одному мне кажется, что идея бредовая?
Вот даже не представляю, как трафик будет вне этого медиатора идти.


По ссылкам не ходим? тут такой изЪйоп: изначально устанавливается удп канал к удаленному серверу, а потом этот самый канал перемарщрутизируется (перефаерваллится) один к одному. то есть 2 удп канала сливаются в любви и радости. На теории так, технически же - это большой такой костыль, который при ошибке начнет нагружать сервер люто или вообще откажется работать ( при некоторых типах ната)

Автор: Delion 29.6.2009, 2:40

Цитата
Когда я оказался на адц-хабе, то там у всех юзеров были иконки активов - что бы это значило?

Не у всех,ни фига. Почитай спецификации к uHub,там об этом написано. Но также написано,что сия фича как бы не внедрена в программу,так что лично я в непонятках.

Автор: dolchegobano 29.6.2009, 8:02

а вот, что на этот счёт мне ответили в конференции Флайлинка:


http://mydc.ru/r/?http://groups.google.com/group/flylinkdc/t/111a1a52ded87909

Цитата(mariner @ 29.6.2009, 3:02) *
По ссылкам не ходим? тут такой изЪйоп: изначально устанавливается удп канал к удаленному серверу, а потом этот самый канал перемарщрутизируется (перефаерваллится) один к одному. то есть 2 удп канала сливаются в любви и радости. На теории так, технически же - это большой такой костыль, который при ошибке начнет нагружать сервер люто или вообще откажется работать ( при некоторых типах ната)

простите, но ведь существует софт, который делает не только это, но и гораздо больше, перенаправляя всё и вся. Не нужно тут мне доказывать невозможность и несостоятельность этой идеи: я юзал DC и прочие прелести VPN через Хамачи, и потестил почти десяток софтин, аналогичных ей. Я имею представление о том, что такое ICS, фтп- и прокси-сервер, и поэтому слово "нагрузка" на канал и комп меня смущает меньше всего на свете. Ибо для получения реальной нагрузки надо иметь либо совсем дохлое железо и канал, либо криво написанный софт.
Альтруисты извращаются, поднимая на своих домашних компах веб- и фтп-серверы, проксятники, хабы, устраивают массированные раздачи на торрентах только ради того, чтобы показать, насколько они бескорыстны, и как велика их писька.
***
Я не утверждаю, что моя идея совершенна - я не специалист, а лишь давний пользователь дц. И меня убивает факт, что про проблему пассивного режима написаны ТЫСЯЧИ мануалов, а на уровне кода это до сих пор не решено. Если вы умнее простого юзера — придумайте решение!

Автор: mariner 29.6.2009, 8:58

до прихода IPv6 все будет так. А потом - ну в планах раздать всем реальные адреса IPv6. Тады все будеть комильфо. От пассива ты не избавишься, это факт, т.к. пассив будет выставляться для поиска медиатора, иначе клиентне будет искать медиатора. Далее по сабжу - чтобы перенаправить удп сессию при данном варианте, нужен один и тот же сервер. то есть один и тот же медиатор. Если пассивный юзер А подключн к медиаторы M1 , а пассивный юзер В подключен к медиаторы М2 - то хрен что приконнектиться. тут нужно либо решение на базе хабсофта (т.к. к хабу подключены все), либо же опять расширять протокол ДЦ, то есть, чтоб при коннекте пассив-пассив передавался еще и адрес медиатора. Плюс возможен вариант, что для кого-то актив на хабе всеравно не доступен (когда это внутрисетевой хаб с доступом из инета) не думал о такой вещи???

Автор: Wariner 29.6.2009, 9:05

Цитата(dolchegobano @ 29.6.2009, 9:02) *
Альтруисты извращаются, поднимая на своих домашних компах веб- и фтп-серверы, проксятники, хабы, устраивают массированные раздачи на торрентах только ради того, чтобы показать, насколько они бескорыстны, и как велика их писька.

по аккуратнее с выражениями, а то я смотрю ты считаешь что у тебя она велика. А то поотрежим слегка!

Автор: IRainman 29.6.2009, 14:10

Цитата
Плюс возможен вариант, что для кого-то актив на хабе всеравно не доступен (когда это внутрисетевой хаб с доступом из инета) не думал о такой вещи???

а если у кого то из этой сети есть внешний IP, но нужного удалённому клиенту файла нету? :-[ ну а так конечно если совсем труба, то совсем труба…
так или иначе похожий метод прекрасно и молча работает в Skype, хотя там вообще хабов нет и сеть полностью децентрализована, только сервер авторизации. Кстати на счёт скайпа у меня даже нет уверенности что они историю переписки хранят у себя… а не по принципу гигантского рейд-массива у самих-же пользователей ^^'

Цитата
На счет сервера-медаитора - эм, а зачем кто-то должен тратить свой tcp (и udp) cтэк на тех, у кого проблемы. Как говорится: проблемы негров ширифа не анонят…

ну думается если по умолчанию опция будет выключена проблем не возникнет ;)

оффтоп:
Цитата
Альтруисты извращаются, поднимая на своих домашних компах…

эхх, да, собрались тут альтруистыэнтузиасты, и всё присматриваются как бы чего улучшить, оптимизировать, да хорошо сделать, что-бы у всех всё качалось, да проблем при этом другим не создавало, ах погляди-ка жуть какая даже денег ни с кого не берут, а за интернет свой платят, вот ведь сволочи какие!! наверное хотят всем мозг промыть!!! и превратить в рабов своих… horror.gif amazing.gif тьфу попутал, мы же тут пиписьками мереимся…

Автор: Setuper 29.6.2009, 14:21

ИМХО дурная идея.
Перекраивать протокол никто не собирается!

Если данная идея и будет реализована, то я как актив сделаю следующее: по средствам файрвола заблокирую все входящие соединения, а разрешу только исходящие. Таким образом я буду качать, но никогда я не буду в роли медиатора)))

Автор: mariner 29.6.2009, 15:28

ну и еще раз повторюсь - делать медиатор есть тока в самом сервере хаба, к.т. у всх с ним есть коннект big_smile.gif

Автор: IRainman 2.7.2009, 23:26

http://mydc.ru/r/?http://livedc.ucoz.ru/forum/2-39-2
собственно от идеи медиаторов, у клиента уж точно, успешно отходим. Всем интересующимся просьба почитать а заодно если не сложно провести тестики, о них ниже )
ps: читать стоит именно со 2й страницы, на 1й ничего нового big_smile.gif

from SMT:

Цитата
предлагаю скачать
http://mydc.ru/r/?http://prdownloads.sourceforge.net/stun/client.exe?download

и выполнить:
C:\NAT_TEST> client.exe stun.xten.com

Автор: mariner 3.7.2009, 1:08

Цитата(IRainman @ 3.7.2009, 0:26) *
http://mydc.ru/r/?http://livedc.ucoz.ru/forum/2-39-2
собственно от идеи медиаторов, у клиента уж точно, успешно отходим. Всем интересующимся просьба почитать а заодно если не сложно провести тестики, о них ниже )
ps: читать стоит именно со 2й страницы, на 1й ничего нового big_smile.gif

from SMT:


и что должно показать?

Автор: IRainman 3.7.2009, 8:08

ну например это:

Цитата
Primary: Port Restricted Nat, preserves ports, no hairpin
Return value is 0x1b

т.е. будет показано, а есть ли возможность тоннелирования

ps: к этой записи крайне желательно подписать имя провайдера, и примерное количество пользователей в сетке
так-же можно тестировать свои наты, роутеры, самодельные шлюзы, и т.д.

Автор: mariner 3.7.2009, 10:19

А, ну у меня IPv4 SNAT & DNAT. Ядро 2.6.24 Realtime. Провайдер - NBN (NetByNet). Это с компа за роутером.
Вывод команды:

Код
E:\>client.exe stun.xten.com
STUN client version 0.94
Error connection reset - host not reachable
Message header length doesn't match message size: 68 - 4294967295
Error connection reset - host not reachable
Message header length doesn't match message size: 68 - 4294967295
Error connection reset - host not reachable
Message header length doesn't match message size: 68 - 4294967295
Error connection reset - host not reachable
Message header length doesn't match message size: 68 - 4294967295
Error connection reset - host not reachable
Message header length doesn't match message size: 68 - 4294967295
Error connection reset - host not reachable
Message header length doesn't match message size: 68 - 4294967295
Primary: Port Restricted Nat, preserves ports, no hairpin
Return value is 0x1b

Автор: Trans 3.7.2009, 11:40

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

Автор: mariner 3.7.2009, 17:35

Пост вырывает глаза, ну ты понел ;)
а ваще - это бред - децентрализованные медиаторы. если и делать, то тока как часть хаба (я считаю так)

Автор: AMD 3.7.2009, 20:45

Цитата(mariner @ 3.7.2009, 18:35) *
а ваще - это бред - децентрализованные медиаторы. если и делать, то тока как часть хаба (я считаю так)

а не лучше по rfc 3489? есть готовые серверы, есть исходники. есть захостенные серверы.
можно и в клиент включить, это же намного легче весит, чем web-сервер. послать пару-тройку пакетов
ради того, чтобы кто-то соединился, ну совсем не жалко


Цитата(Setuper @ 29.6.2009, 15:21) *
ИМХО дурная идея.
Перекраивать протокол никто не собирается!

Если данная идея и будет реализована, то я как актив сделаю следующее: по средствам файрвола заблокирую все входящие соединения, а разрешу только исходящие. Таким образом я буду качать, но никогда я не буду в роли медиатора)))

ну ты отжог :lol: чего ты так добъёшься, ты станешь пассивом. "но лишь бы врагам пакетов не досталось"?

Автор: Setuper 3.7.2009, 21:09

Да это шутка была))) Не воспринимайте всерьёз)))

Автор: dolchegobano 7.12.2009, 19:07

интересно, есть ли какие-нибудь подвижки в решении проблемы пассивного режима?

***
В последнее время для обмена файлами с друзьями (тоже сидящими за натом) я пользуюсь http://mydc.ru/r/?http://www.gbridge.com/- весьма простая и эффективная софтина. Неужели нельзя прикрутить что-то подобное к дц-клиенту или хабу?

Автор: nail 8.12.2009, 21:46

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

Автор: mariner 8.12.2009, 21:56

Цитата
возможности - как многопоточная работа.

как ты себе представляешь многопоточную очередь? хаб ведь работает с одним потоком данных, который выстраиваетсчя в очередь по времени поступления. Сначало те, что раньше, потом те, что позже

Автор: Setuper 8.12.2009, 22:44

С просьбами встроить медиатор в клиент нужно обращаться к разработчикам именно клиентского ПО.
У меня же, как у разработчика серверного ПО, появилась такая вот мысля:
ведь соединение пассив-пассив запрещено именно на стороне клиента. То есть когда пользователь в пассиве хочет соединиться с другим пассивом, то клиент даже не отправляет запрос на такое соединение на хаб. Так как клиент определяет режим пользователя из тэга, то возможен вариант отправки хабом в тэге только активных режимов (подмена режима). Далее делаем медиатор на хабе, и при поступлении команды на соединение от пассивного пользователя используем медиатор на хабе. Нагрузка при этом не будет большой.

Автор: Delion 9.12.2009, 14:19

О господи. Ну вы намутили.

AUT0. Расширение для протокола ADC. Позволяет использовать пассивным юзверям актив,если это возможно в реальности,независимо от режима,выставленного в клиенте.

Тестовый хаб: adc://babylon.aab21pro.org:412 Заходите,проверяйте.

Автор: Delion 2.2.2010, 23:18

Цитата
избавиться от пассивных юзеров в DC

Следующая версия оригинального DC++ будет уметь соединять пассивов между собой.
Но. Только на ADC хабах.

Автор: AMD 14.3.2010, 19:20

Цитата(Delion @ 3.2.2010, 0:18) *
Следующая версия оригинального DC++ будет уметь соединять пассивов между собой.
Но. Только на ADC хабах.

неизвестно, как это будет работать.
технология TCP Hole Punching срабатывает только на примитивных роутерах, которые не удаляют NAT-правило после завершения tcp-сессии FIN-пакетом. неплохо бы составить список оборудования, которое подвержено этой уязвимости, и которое работает правильно