Привет, олл!
Наверняка, многие из вас заметили, что в последнее время попытки контроля интернета все усиливаются и усиливаются, тому есть множество примеров — начиная от закрытия torrents.ru без суда и следствия(а ведь они сотрудничают с правообладателями!!) до демонстрационных отловов разных хакеров, что б другие сидели тише. Ага. Хрен вам.
Я предлагаю организоваться и начать разрабатывать нашу новую (национальную, хехе) систему обмена данными, которая будет развитием существующих торрентов, емулей и прочего.
Сразу говорю, вероятно, все это так или иначе реализовано в различных инструментах обмена информацией — цель сделать это все более доступным, более удобным и более живым.
Осторожно — много текста без картинок.
Основные текущие проблемы сети
- Много дублирующегося контента
- Контент не всегда является проверенным и часто бывает завирусованным
- Несколько разных форматов контента разбросаны по сети (зачастую мы находим то, что нужно, но не в том формате, в котором хотелось бы)
- Для более-менее быстрой скачки по прежнему требуется трекер и если он перестает работать, то скорость начинает падать. (Лично у меня DHT вообще кладет роутер довольно быстро и потому на всех домашних машинах он отключен)
- В данный момент не так просто становится раздавать на торрентах левый контент. А часто его так и вовсе закрывают
- Нет возможности автоматического обновления торрентов (к примеру, для сериалов это очень актуально)
- Сложность инициации раздачи контента без использования трекера (если я хочу просто передать другу файлик по п2п, то это у меня просто не получится)
Что же мы можем сделать с этим?
Я просто попробую предложить что-то свое, но буду рад и любым дополнениям к моим мыслям. Ведь я могу и в корне не быть правым, верно?)
Общая идеология
В данный момент (это пока лишь идея и может все круто поменяться) есть мнение, что протокол XMPP очень хорош и использовать именно его для взаимодействия клиентов и серверов + использовать некоторую (ну скорее всего BitTorrent) технологию для обмена данными непосредственно.
Соответственно что у нас есть в основе:
- набор серверов, которые могут между собой обмениваться информацией
- набор клиентов, которые могут обмениваться информацией с любым из серверов и с любым из клиентов(но уже через сервер)
- сама информация может быть абсолютно любой
Для основы нам этого хватит за глаза и за уши — можно реализовать почти все, что душе угодно, а потому давайте пытаться решать проблемы с помощью этого инструментария.
Проблема 1 — Дубликация контента
Здесь я предлагаю просто посидеть и подумать над структуризацией раздач и тпх. В данный момент все на рутрекере и много где еще хранится, к примеру, в BB-кодах и тпх и это часто не очень удобно для машин) При этом все все равно требуют при создании раздачи на рутрекере заполнить форму. Так почему бы не сделать все это более совершенным и не хранить структуру вместо простого текста?
Проблема 2 — Контент не всегда является проверенным и часто бывает завирусованным
Для этого я вижу достаточность введения цифровых подписей под различным контентом (в основном — .torrent файлы и т.д.). По этой подписи можно понять какой человек в сети проверил его и по сути если что — вопросы к нему. Возможно, есть вариант организовать многоуровневую подпись — скажем, сначала мелкий модератор подписывает, а потом его должен подписать кто-то более ответственный и т.д. или можно организовать таким образом уровни доверия к контенту.
Для защиты от вирусов есть следующая идея — сделать просто ботов, которым будешь отправлять контент на проверку на вирусы и они будут подписывать этот контент, если все прошло проверку.
Проблема 3 — Несколько разных форматов контента разбросаны по сети
Когда вводишь в строку поиска на рутрекере «House M.D.» ты получаешь просто сотню разных раздач… это печалит и нужно сидеть и выбирать то, что тебе было бы удобно и еще смотришь на заголовок, вроде качество то, но потом оказывается, что это не тот сезон, но не всегда хорошая идея ввести в строку поиска еще и «Season 3» — можно опять же что-то пропустить.
Нужно просто создавать одну раздачу на все и иметь возможность выбрать нужный тебе .torrent файл в одном месте и не рыться во всем этом. Можно много всяких инструментов наложить рядом — какие субтитры нужны, какой перевод, какой сезон, какое качество картинки и т.д.
Для того, что бы можно было объединять раздачи нужно просто отдельно все их подписывать — когда есть какая-то раздача, а потом появляется еще контент, то потом он добавляет к уже существующему свой файл и он встает в очередь на модерацию и этот новый контент(не вся раздача) будет иметь пометку «не проверено» (ну или как будет лучше) пока его не подпишет модератор и так же все, что и в п.2. нужно просто все это подписывать по-отдельности и по-отдельности реализовывать функционал из п.2. Выглядит хорошо.
Проблема 4 — Для более-менее быстрой скачки по прежнему требуется трекер
Тут все сложнее. Нужно повысить жизнеспособность сети — для этого нужно реализовать следующий алгоритм поиска нового трекера.
Для этого нам нужна следующая функциональность:
- Получение подходящего трекера для раздачи у почти произвольного другого трекера
- Редирект с одного трекера на другой
Первый механизм нужен для того, что б понять через что соединяться когда трекер ляжет, а второй если текущий трекер работает, но не хочет обрабатывать этого клиента.
Со вторым все просто и понятно — просто при announce вернуть ему что-то вроде «redirect to ****» и все.
А вот для первого необходима специальная настройка сервера — нужно создавать некоторую сеть из серверов (пусть будет нексус), желательно, что бы они были географически далекими. У каждого сервера из этого нексуса будет приоритезированный список всей этой маленькой сети, который он будет рассылать всем своим клиентам. Если вдруг трекер перестанет отвечать, то клиенты будут идти в низ по списку этих серверов и подключаться куда-нибудь. В это время внутри сети происходит обмен данными и определение того, кто реально будет раздавать контент теперь (это произойдет очень быстро — сеть маленькая и просто «договориться», а для реализации можно прикинуть какую-нибудь эвристику и придумать какие-нибудь простые и однозначные правила для определения преемника умершего трекера), а потом после того как решили, то всех редиректят на этот новый трекер.
Это не должно вызывать никаких проблем с настройкой — люди и так настраивают бекапы своих торрентов, а тут нужно лишь поговорить с людьми и сервера почти не нужно настраивать — они все сделают сами.
Проблема 5 — Не так просто становится раздавать на торрентах
Здесь еще важно остаться анонимным и сделать эту сеть более распределенной. Здесь предлагается сделать через усложнение иерархии, но усложнение должно быть таким, что оно только укрепляет сеть, а не ослабляет ее.
Наши трекеры уже объединены в нексусы и могут составлять с друг другом некоторую зону, которая может функционировать до тех пор пока хотя бы один член нексуса будет жив и на нем соответственно будет хранится весь контент с мертвых членов нексуса. Да, появляется проблема с нагрузкой, но если будет 20 серверов в нексусе, то такой проблемы, пожалуй, никогда не будет.
Если уж окажется, что нагрузка будет слишком большой, то можно всегда поднять сервера поддержки и на него редиректить часть клиентов и т.д.
Для того, что бы идентифицировать сервера для участия его в нексусе будут использоваться цифровые подписи и т.д. Это позволит защитить сеть от внешних воздействий. А дочерние вспомогательные сервера могут иметь другой ключ и, соответственно, при создании нексуса все обмениваются парой ключей — от основного сервера и от вспомогательных. Вспомогательных может быть сколько угодно, а основной только один. Этот механизм создан для упрощения подключения и расширения сети со стороны одного участника сети — что бы не нужно было со всеми связываться и обмениваться ключами. По сути вспомогательные сервера являются лишь кеширующими проксями. Но вообще их потребность довольно иллюзорна.
Проблема 6 — Нет возможности автоматического обновления торрентов
Это реализовать очень просто через ответ на announce, так что не будем на это отвлекаться.
Проблема 7 — Сложность инициации раздачи контента без использования раздачи на трекере
Для этого можно просто реализовать для каждого пользователя свой раздел, на раздачи которого он может давать ссылки, которые не открыть без, к примеру, сгенерированного пароля. В принципе, тут тоже нет ничего особенно сложного — трекеры всегда есть и будут работать. В принципе, можно даже не хранить все на серверах, а сделать трекер прямо в клиенте — что бы юзера по этим приватным раздачам делали запросы к этому клиенту через XMPP сервер.
И это все идеи?
Нет не все, их просто масса и сверх цель (или сверх желание — кому как) — это создать совершенный инструмент обмена информацией. В дополнение ко всему вышенаписанному есть масса введений во все это. Например, создать анонимный полу-автоматический способ сливания информации в сеть (для а-ля викиликс), создать возможности для закрытых трекеров (что б только некоторые участники этой сверх-сети могли участвовать в файлообмене).
Насчет интерфейса — хочется сделать единый базовый интерфейс и не хочется, что бы это был прямо таки браузер. В браузере слишком мало возможностей для реального файлообмена.
И в следстивии этого — иметь некоторую иерархию нексусов, что бы было видно как на ладони «весь интернет». К примеру, разбиение по территориальному признаку, по направлению (IT, музыка и тпх) и т.д. А в самих нексусах тоже создать свою некоторую иерархию и т.д. Даже думаю, что с этого было бы интересно начать. А м.б. что бы не нексусы участвовали в иерархии, а сами трекеры. Вероятно, что придется делать что-то вроде DNS с выдачей имен в этой иерархии. Но вообще тут уже надо много думать над этим как что организовать, что бы не было киберсквоттерства никакого и т.д. Создать возможность создавать без собственного трекера закрытые сообщества. Но тут уже вопрос с безопасностью становится — у сервера же вся информация есть и в принципе он может все разослать другим участникам сети… тут можно использовать механизм — «трекер в клиенте» с синхронизацией участников сети по шифрованному каналу. В общем, много-много всего хорошего =)
Ok. А дальше что?
В общем, я предлагаю собрать небольшую команду и начать это все создавать. Если не мы, то другие. Люди уже суетятся на счет распределенных разных вещей (например, диаспора). Пригодятся все
- Программисты UI/Верстальщики — без вас мы не сделаем хорошего UI, каким его видят юзабилисты и дизайнеры!
- Программисты серверов — без вас нам не создать ничего надежного!
- Дизайнеры — без вас нам не создать никогда красивой системы, которая была бы всем приятна для использования!
- Юзабилисты/UI-дизайн — без вас мы не сделаем удобного и грамотного приложения!
Жду всех в комментариях
pensionary.ru
Читатели рекомендуют также прочесть по этой тематике:
- Web-разработка / [Из песочницы] Загрузка файлов с помощью HTML5 и сколько раз мы сказали нехорошие слова
- Стартапы / UVoiceMe — сервис интеграции шлюзов IP-телефонии
- Game Development / [Из песочницы] Unity3d и развеивание некоторых мифов
- Копирайт / [Ссылка] Башкирские таможенники арестовали партию кукол, поющих ворованную песню
- Социальные сети / Алгоритм для выявления сообществ в больших сетях




Новые комментарии