Сеть ed3k

Новая сеть рядом с eD2K

ed3k — собственная файлообменная сеть eMule Qt. Она сохраняет то, что двадцать лет работало в eD2K: файлы, известные по хэшу, сеть Kademlia для их поиска, необязательные серверы и очереди загрузки — и заново строит то, что устарело: формат сообщений, транспорт и способ, которым узлы подтверждают свою личность.

eMule Qt работает с обеими сетями одновременно. Диалог Информация о сети и панель Моя информация в окне «Серверы» показывают раздел Сеть ed3k прямо под разделами eD2K и Kad, так что их можно сравнивать строка за строкой.

Разделы Kad и сеть ed3k в диалоге «Информация о сети», адреса, ID и хэши скрыты

Те же идеи, новые названия

У большинства строк раздела ed3k есть аналог в eD2K. Самое важное: то, что в eD2K называется High ID, а в Kad — Open, в ed3k называется Router.

eD2K / Kad ed3k Что это значит
High ID / Kad Open Router: Yes Другие могут подключаться к вам напрямую. Роутер хранит записи Kad и помогает узлам за файрволом.
Low ID / Kad Firewalled Router: No (leaf) Вы за NAT. Другие узлы всё равно достигают вас через ретрансляторы и пробивание NAT.
Статус Kad UDP IPv4 / IPv6 Проверяется отдельно для каждого семейства: Open, Cone NAT или Symmetric NAT.
Kad buddy Relays Роутеры, которые передают вам запросы на соединение. У leaf-узла их не меньше двух.
Buddies served Buddies served Leaf-узлы, для которых ваш роутер работает ретранслятором.
Сервер eD2K Index node Обычный узел ed3k, индексирующий всё. Отдельного серверного ПО и протокола нет.
User hash + Kad ID Node ID Один ID на всё — хэш собственного ключа подписи узла.
Client ID — Не нужен. Другие узлы сообщают вам адрес, по которому они вас видят.
TCP-порт + UDP-порт UDP-порт Один порт на всё. Тот же номер, что и у вашего TCP-порта eD2K.
Обфускация (необязательно) Connections: Obfuscated Всегда включена. Открытого режима нет.
Kad Indexed Indexed Записи, которые ваш узел хранит для сети, и их размер.

Строка Статус раскрашена как в eD2K: зелёный, когда вы подключены как роутер, оранжевый — как leaf.

Главные улучшения по сравнению с eD2K

  • Шифрование по умолчанию. Каждый пакет идёт через обфусцированный QUIC — и Kad, и передача файлов. Ничего не отправляется открытым текстом, а трафик трудно распознать.
  • Low ID больше не второй сорт. Проверки доступности, ретрансляторы и UDP hole punching входят в базовый протокол, поэтому два узла за файрволом всегда могут обмениваться файлами.
  • IPv4 и IPv6 в одной сети. Оба равноправны, а доступность проверяется для каждого отдельно.
  • Один порт. Один UDP-порт вместо проброса TCP- и UDP-портов.
  • Настоящая идентификация. У каждого узла есть ключ Ed25519, а его node ID — хэш этого ключа. Захватить чужой ID невозможно.
  • Повреждённые данные ловятся сразу. Файлы идентифицируются по хэшу BLAKE3 и проверяются блоками по 256 КиБ, поэтому повреждённый блок обнаруживается при получении, а его отправитель известен — вместо того чтобы часть в 9,28 МБ оказывалась испорченной позже.
  • Сложнее атаковать. Позиции в Kad привязаны к IP-адресу узла, а число узлов на диапазон адресов ограничено — это защищает от потока фальшивых узлов. Записи ключевых слов подписываются издателем, что позволяет эффективно фильтровать спам.
  • Сервер может запустить любой. Index node — это просто узел с ещё одной возможностью.
  • Компактнее сообщения. Protocol Buffers со сжатием zstd заменяют вручную упакованные теги eD2K.
  • Есть куда расти. Расширения добавляют наборы файлов, торренты, посты Usenet и ссылки файлообменников как источники того же файла, чат-комнаты и многое другое — без нарушения работы старых узлов.

Работает вместе с eD2K, а не против него

Раздаваемый файл несёт и свой хэш eD2K, поэтому пиры eMule и узлы ed3k обслуживают одну и ту же загрузку. eMule Qt использует номер вашего TCP-порта eD2K для ed3k и выводит ваш user hash eD2K из node ID в ed3k, поэтому каждая запись об источнике eD2K — с серверов, из Kad или при обмене источниками — уже сообщает другим клиентам eMule Qt, что вы работаете с ed3k и где вас найти. Классические клиенты eMule ничего не замечают.

.:Как включить
Узел ed3k включён по умолчанию. Параметр Настройки → ed3k → «Включить узел ed3k» выключает или включает его. Сеть молодая: если можете, держите узел запущенным круглосуточно — каждый роутер делает сеть быстрее для всех. Протокол — открытая спецификация на GitHub в общественном достоянии; она пока в статусе черновика и может измениться.

 

Назад ко всем возможностям