Pull to refresh

Upgrade

Reading time7 min
Views2.8K
Привет, олл!

Наверняка, многие из вас заметили, что в последнее время попытки контроля интернета все усиливаются и усиливаются, тому есть множество примеров — начиная от закрытия torrents.ru без суда и следствия(а ведь они сотрудничают с правообладателями!!) до демонстрационных отловов разных хакеров, что б другие сидели тише. Ага. Хрен вам.

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

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

Осторожно — много текста без картинок.

Основные текущие проблемы сети


  1. Много дублирующегося контента
  2. Контент не всегда является проверенным и часто бывает завирусованным
  3. Несколько разных форматов контента разбросаны по сети (зачастую мы находим то, что нужно, но не в том формате, в котором хотелось бы)
  4. Для более-менее быстрой скачки по прежнему требуется трекер и если он перестает работать, то скорость начинает падать. (Лично у меня DHT вообще кладет роутер довольно быстро и потому на всех домашних машинах он отключен)
  5. В данный момент не так просто становится раздавать на торрентах левый контент. А часто его так и вовсе закрывают
  6. Нет возможности автоматического обновления торрентов (к примеру, для сериалов это очень актуально)
  7. Сложность инициации раздачи контента без использования трекера (если я хочу просто передать другу файлик по п2п, то это у меня просто не получится)


Что же мы можем сделать с этим?


Я просто попробую предложить что-то свое, но буду рад и любым дополнениям к моим мыслям. Ведь я могу и в корне не быть правым, верно?)

Общая идеология

В данный момент (это пока лишь идея и может все круто поменяться) есть мнение, что протокол XMPP очень хорош и использовать именно его для взаимодействия клиентов и серверов + использовать некоторую (ну скорее всего BitTorrent) технологию для обмена данными непосредственно.
Соответственно что у нас есть в основе:
  1. набор серверов, которые могут между собой обмениваться информацией
  2. набор клиентов, которые могут обмениваться информацией с любым из серверов и с любым из клиентов(но уже через сервер)
  3. сама информация может быть абсолютно любой


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

Проблема 1 — Дубликация контента

Здесь я предлагаю просто посидеть и подумать над структуризацией раздач и тпх. В данный момент все на рутрекере и много где еще хранится, к примеру, в BB-кодах и тпх и это часто не очень удобно для машин) При этом все все равно требуют при создании раздачи на рутрекере заполнить форму. Так почему бы не сделать все это более совершенным и не хранить структуру вместо простого текста?

Проблема 2 — Контент не всегда является проверенным и часто бывает завирусованным

Для этого я вижу достаточность введения цифровых подписей под различным контентом (в основном — .torrent файлы и т.д.). По этой подписи можно понять какой человек в сети проверил его и по сути если что — вопросы к нему. Возможно, есть вариант организовать многоуровневую подпись — скажем, сначала мелкий модератор подписывает, а потом его должен подписать кто-то более ответственный и т.д. или можно организовать таким образом уровни доверия к контенту.

Для защиты от вирусов есть следующая идея — сделать просто ботов, которым будешь отправлять контент на проверку на вирусы и они будут подписывать этот контент, если все прошло проверку.

Проблема 3 — Несколько разных форматов контента разбросаны по сети

Когда вводишь в строку поиска на рутрекере «House M.D.» ты получаешь просто сотню разных раздач… это печалит и нужно сидеть и выбирать то, что тебе было бы удобно и еще смотришь на заголовок, вроде качество то, но потом оказывается, что это не тот сезон, но не всегда хорошая идея ввести в строку поиска еще и «Season 3» — можно опять же что-то пропустить.

Нужно просто создавать одну раздачу на все и иметь возможность выбрать нужный тебе .torrent файл в одном месте и не рыться во всем этом. Можно много всяких инструментов наложить рядом — какие субтитры нужны, какой перевод, какой сезон, какое качество картинки и т.д.

Для того, что бы можно было объединять раздачи нужно просто отдельно все их подписывать — когда есть какая-то раздача, а потом появляется еще контент, то потом он добавляет к уже существующему свой файл и он встает в очередь на модерацию и этот новый контент(не вся раздача) будет иметь пометку «не проверено» (ну или как будет лучше) пока его не подпишет модератор и так же все, что и в п.2. нужно просто все это подписывать по-отдельности и по-отдельности реализовывать функционал из п.2. Выглядит хорошо.

Проблема 4 — Для более-менее быстрой скачки по прежнему требуется трекер

Тут все сложнее. Нужно повысить жизнеспособность сети — для этого нужно реализовать следующий алгоритм поиска нового трекера.

Для этого нам нужна следующая функциональность:
  1. Получение подходящего трекера для раздачи у почти произвольного другого трекера
  2. Редирект с одного трекера на другой


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

Со вторым все просто и понятно — просто при announce вернуть ему что-то вроде «redirect to ****» и все.
А вот для первого необходима специальная настройка сервера — нужно создавать некоторую сеть из серверов (пусть будет нексус), желательно, что бы они были географически далекими. У каждого сервера из этого нексуса будет приоритезированный список всей этой маленькой сети, который он будет рассылать всем своим клиентам. Если вдруг трекер перестанет отвечать, то клиенты будут идти в низ по списку этих серверов и подключаться куда-нибудь. В это время внутри сети происходит обмен данными и определение того, кто реально будет раздавать контент теперь (это произойдет очень быстро — сеть маленькая и просто «договориться», а для реализации можно прикинуть какую-нибудь эвристику и придумать какие-нибудь простые и однозначные правила для определения преемника умершего трекера), а потом после того как решили, то всех редиректят на этот новый трекер.

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

Проблема 5 — Не так просто становится раздавать на торрентах

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

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

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

Для того, что бы идентифицировать сервера для участия его в нексусе будут использоваться цифровые подписи и т.д. Это позволит защитить сеть от внешних воздействий. А дочерние вспомогательные сервера могут иметь другой ключ и, соответственно, при создании нексуса все обмениваются парой ключей — от основного сервера и от вспомогательных. Вспомогательных может быть сколько угодно, а основной только один. Этот механизм создан для упрощения подключения и расширения сети со стороны одного участника сети — что бы не нужно было со всеми связываться и обмениваться ключами. По сути вспомогательные сервера являются лишь кеширующими проксями. Но вообще их потребность довольно иллюзорна.

Проблема 6 — Нет возможности автоматического обновления торрентов

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

Проблема 7 — Сложность инициации раздачи контента без использования раздачи на трекере

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

И это все идеи?


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

Насчет интерфейса — хочется сделать единый базовый интерфейс и не хочется, что бы это был прямо таки браузер. В браузере слишком мало возможностей для реального файлообмена.

И в следстивии этого — иметь некоторую иерархию нексусов, что бы было видно как на ладони «весь интернет». К примеру, разбиение по территориальному признаку, по направлению (IT, музыка и тпх) и т.д. А в самих нексусах тоже создать свою некоторую иерархию и т.д. Даже думаю, что с этого было бы интересно начать. А м.б. что бы не нексусы участвовали в иерархии, а сами трекеры. Вероятно, что придется делать что-то вроде DNS с выдачей имен в этой иерархии. Но вообще тут уже надо много думать над этим как что организовать, что бы не было киберсквоттерства никакого и т.д. Создать возможность создавать без собственного трекера закрытые сообщества. Но тут уже вопрос с безопасностью становится — у сервера же вся информация есть и в принципе он может все разослать другим участникам сети… тут можно использовать механизм — «трекер в клиенте» с синхронизацией участников сети по шифрованному каналу. В общем, много-много всего хорошего.

Ok. А дальше что?


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

  • Программисты UI/Верстальщики — без вас мы не сделаем хорошего UI, каким его видят юзабилисты и дизайнеры!
  • Программисты серверов — без вас нам не создать ничего надежного!
  • Дизайнеры — без вас нам не создать никогда красивой системы, которая была бы всем приятна для использования!
  • Юзабилисты/UI-дизайн — без вас мы не сделаем удобного и грамотного приложения!


Жду всех в комментариях.
Tags:
Hubs:
Total votes 120: ↑86 and ↓34+52
Comments161

Articles