ed3k ネットワーク

eD2K と並ぶ新しいネットワーク

ed3k は eMule Qt 独自のファイル共有ネットワークです。ハッシュでファイルを識別し、Kademlia ネットワークで検索し、任意のサーバーとアップロードキューを備えるという、eD2K が 20 年間支えてきた仕組みはそのままに、古くなった部分である通信フォーマット、トランスポート、ピア同士の身元証明の方法を作り直しました。

eMule Qt は両方のネットワークを並行して動作させます。ネットワーク情報ダイアログと、サーバーウィンドウのマイ情報ペインには、eD2K と Kad のセクションのすぐ下に ed3k ネットワークセクションが表示されるので、項目ごとに比較できます。

ネットワーク情報ダイアログの Kad と ed3k ネットワークのセクション(アドレス、ID、ハッシュはぼかし処理済み)

考え方は同じ、名前は新しく

ed3k セクションの項目の多くには eD2K の対応項目があります。最も重要なのは、eD2K で High ID、Kad でオープンと呼ばれる状態が、ed3k ではルーターになる点です。

eD2K / Kad ed3k 意味
High ID / Kad オープン ルーター: はい 他のノードから直接接続できます。ルーターは Kad レコードを保持し、ファイアウォール内のノードを支援します。
Low ID / Kad ファイアウォール ルーター: いいえ(リーフ) NAT の内側にいる状態です。リレーとホールパンチングを介して、他のピアから接続できます。
Kad UDP ステータス IPv4 / IPv6 それぞれのアドレスファミリーを個別にテストします: オープン、Cone NAT、Symmetric NAT。
Kad バディ リレー 接続要求をあなたに中継するルーターです。リーフは少なくとも 2 つ保持します。
提供中のバディ 提供中のバディ あなたのルーターが中継しているリーフです。
eD2K サーバー インデックスノード すべてをインデックス化する通常の ed3k ノードです。専用のサーバーソフトやプロトコルは不要です。
ユーザーハッシュ + Kad ID ノード ID すべてに使う単一の ID で、ノード自身の署名鍵のハッシュです。
クライアント ID — 不要です。ピアが、見えているあなたのアドレスを教えてくれます。
TCP ポート + UDP ポート UDP ポート すべてを 1 つのポートで処理します。番号は eD2K の TCP ポートと同じです。
難読化(任意) 接続: 難読化済み 常にオンです。平文モードはありません。
Kad インデックス済み インデックス済み あなたのノードがネットワークのために保存しているレコードと、そのサイズです。

ステータス行は eD2K と同様に色分けされます。ルーターとして接続中は緑、リーフとして接続中はオレンジです。

eD2K からの主な改善点

  • 設計段階から暗号化。Kad もファイル転送も、すべてのパケットが難読化された QUIC 上を流れます。平文で送信されることは一切なく、トラフィックの特定も困難です。
  • Low ID はもう二級扱いではありません。到達性テスト、リレー、UDP ホールパンチングがコアプロトコルに含まれているため、ファイアウォール内のノード同士でも常に転送できます。
  • IPv4 と IPv6 を 1 つのネットワークに。どちらも第一級の扱いで、到達性はそれぞれ個別にチェックされます。
  • ポートは 1 つ。TCP と UDP の 2 つのポートを転送する代わりに、UDP ポート 1 つで済みます。
  • 本物の ID。各ノードは Ed25519 鍵を持ち、ノード ID はその鍵のハッシュです。他のノードの ID を乗っ取ることはできません。
  • 不正データを即座に検出。ファイルは BLAKE3 ハッシュで識別され、256 KiB ブロックごとに検証されます。そのため、破損ブロックは受信時に発見され、送信元も特定できます。9.28 MB のパートが後から失敗することはありません。
  • 攻撃に強い設計。Kad の位置はノードの IP アドレスに紐付けられ、アドレス範囲ごとのノード数も制限されるため、偽ノードの大量投入に対抗できます。キーワードレコードは公開者が署名するので、効率的なスパムフィルタリングが可能です。
  • 誰でもサーバーを運用可能。インデックスノードは、機能が 1 つ多いだけの通常のノードです。
  • よりスリムなメッセージ。eD2K の手作業でパックされたタグの代わりに、zstd 圧縮付きの Protocol Buffers を使用します。
  • 拡張の余地。拡張機能により、ファイルセット、torrent、Usenet の投稿、ファイルホスターのリンクを同一ファイルのソースとして扱えるほか、チャットルームなども追加できます。古いノードとの互換性も損ないません。

eD2K と競合せず、共存

共有ファイルには eD2K ハッシュも付与されるため、eMule のピアと ed3k ノードが同じダウンロードに提供できます。eMule Qt は ed3k に eD2K の TCP ポート番号を使い、eD2K のユーザーハッシュを ed3k のノード ID から導出します。そのため、サーバー、Kad、ソース交換のいずれから得た eD2K ソースレコードでも、他の eMule Qt クライアントはあなたが ed3k に対応していること、そしてその接続先をすでに把握できます。従来の eMule クライアントは何も気づきません。

.:有効にするには
ed3k ノードはデフォルトで有効です。オプション → ed3k →「ed3k ノードを有効にする」で、オンとオフを切り替えられます。ネットワークはまだ新しいため、可能であればノードを 24 時間稼働させてください。ルーターが増えるほど、全員にとって高速になります。プロトコルはオープンでパブリックドメインの GitHub 上の仕様として公開されています。まだドラフトの段階であり、変更される可能性があります。

 

すべての機能に戻る