Yggdrasilネットワーク
(yggdrasil-network.github.io)- Yggdrasilは、構造化ルーティングプロトコルに対する分散型の代替を実験するネットワークで、大規模なメッシュネットワークを念頭に置いたコンパクトルーティング方式を使用する
- 現在の実装は、設定が容易な軽量のユーザー空間ソフトウェアルーターであり、参加者間にエンドツーエンドで暗号化されたIPv6ルーティングを接続する
- ノードのピアリングは、LAN、拠点間リンク、インターネット上のTCP/TLS接続で構成でき、実際のピアリングはIPv4またはIPv6上で可能
- 大規模トポロジー、障害・モビリティイベントからの回復、常時有効なエンドツーエンド暗号化、中央拠点のないP2P動作、複数のオペレーティングシステム対応を特徴とする
- まだアルファ段階のため互換性破壊の可能性は残っているが、日常利用にはおおむね安定しており、一部の利用者が強い負荷をかけてストレステストしている
Yggdrasilが解決しようとしているネットワーキングの課題
- Yggdrasilは新しい実験的なコンパクトルーティング方式
- インターネットで一般的に使われている構造化ルーティングプロトコルに代わる未来志向の分散型代替を目指している
- 将来的に大規模なメッシュネットワークを可能にする技術として設計されている
-
ネットワーク設計の特性
- スケーラビリティ: 大きく複雑なトポロジーやインターネット規模のトポロジーをサポート
- 自己修復: 接続障害やモビリティイベントに素早く反応
- 暗号化: ネットワークを通過するトラフィックは常に完全なエンドツーエンド暗号化を使用
- P2P: 組み込みの中央集権的なポイントなしにアドホックに動作
- クロスプラットフォーム: Linux、macOS、Windows、iOS、Androidなどをサポート
実装方式とネットワークへの参加
- 現在の実装は軽量のユーザー空間ソフトウェアルーター
- 設定が容易で、さまざまなプラットフォームをサポート
- すべてのネットワーク参加者の間でエンドツーエンド暗号化されたIPv6ルーティングを接続
- ノード間のピアリングはTCP/TLS接続で構成可能
- ローカルエリアネットワーク、拠点間リンク、インターネット上で利用できる
- Yggdrasil Networkはノード間にIPv6ルーティングを提供するが、ピアリング接続自体はIPv4またはIPv6ネットワーク上で設定できる
- プロジェクトはまだアルファ段階
- 今後互換性破壊が発生する可能性がある
- それでも日常利用にはおおむね安定している
- 一部の利用者がさまざまな用途で強い負荷をかけ、ストレステストしている
-
開始方法と貢献経路
1件のコメント
Hacker News のコメント
ウェブサイトと GitHub で最初に探したのは、参照実装とは独立して実装できるプロトコル仕様だったが、scheme/protocol として宣伝しているわりには、どこにも仕様へのリンクがなかった。
自分で掘っていくうちに、別の GitHub プロジェクトのサイドブランチで [1] を見つけた。著者には拍手を送りたい。暗号化されたアイデンティティ、メッセージ形式、転送プロトコル、ピアリングとストリームのセマンティクス、スパニングツリーの更新とルート選択、DHT、転送ロジック、セッションなど、必要な内容がかなりよく盛り込まれている。
ただし、ルート更新の検証/署名方式などの TODO があり、次ホップ選択で同率になった場合の処理アルゴリズムには曖昧さがある。また、すべてのパケットが信頼性をもって順序どおりに配送される必要があり、MTU に合わせてより小さなパケットに分割できなければならないため、トランスポート層が TCP に強く結合しているように見える。
[1] https://github.com/yggdrasil-network/yggdrasil-specs/blob/ys...
v0.4 では DHT がかなり変わり、v0.5 では DHT を完全に取り除いた。研究プロジェクトなので、より満足のいく設計に到達するまでは変わり続ける可能性が高く、その時点では文書化に間違いなくもっと時間を割くつもりだ。
順序保証/信頼性のあるリンクが必要なのは、現段階では開発上の都合という面が大きいが、その部分は確実に修正できる。
私の理解では、yggdrasil と cjdns は既存のインターネット上に構築された仮想 P2P ネットワークで、一般的な第 3 層ルーティングサービスを提供するものだ。
そのため、依然として ISP やインターネットバックボーンなどが必要になる。Verizon や Cisco のルーターなしで動作できる、IP 層を置き換える世界規模の P2P ネットワークを作ろうとしているプロジェクトはあるのだろうか?
小規模な分断ネットワーク向けのメッシュネットワーク技術はいくつか知っているが、コンシューマー向けで数千ノード以上を支えられるものはよく分からない。
https://github.com/cjdelisle/cjdns/blob/master/doc/Whitepape... の最初の段落を参照。残念ながら、そのルーティング方式は実際にはスケーラビリティが不足していることが明らかになった。Yggdrasil は別のルーティングアルゴリズムを使っているので、可能性はあるかもしれない。
その方式には多くの利点があり、特に導入が容易になる。今ではレガシーアプリのために、電話網を IP 上で動かしている。この Yggdrasil が成功すれば、最終的にはレガシーシステムのために IP をその上で動かすことになると思う。
これは数ある問題の一つではなく、設計上の根本的な限界だ。インターネット(ARPAnet)も当初はメッシュネットワークとして始まり、そのスケーラビリティ問題を解決するためにトランク、バックボーン、ルーティングという概念が生まれた。
あるいは「インターネット」上ではなく、別のネットワーク上の IP 層のことを言っているのか? そうだとしたら、人々をどうやって互いにつなぐつもりなのか気になる。規模が大きくなるほどメッシュルーティングのせいでメッシュは非効率になり、結局は近いうちに「独自のインターネット」を再発明することになる。ただし、世界中を実際につなぐリソースがないので、世界規模にはなれないだろう。
当時は、2009〜2010 年の Pirate Bay 判決に対する理想主義的/アナーキズム的な反応に近かった。記憶では cjdns は少し後に出てきて、グループの大半を吸収した。
不満を抱えたハッカーとソフトウェア海賊たちが、もっと出来の悪いインターネットを作っても長続きしないなんて、誰が分かっただろうか?
[0] https://en.m.wikipedia.org/wiki/Athens_Wireless_Metropolitan...
関連リンク:
Yggdrasil Network - https://news.ycombinator.com/item?id=41669625 - 2024年9月、コメント3件
Yggdrasil P2P mesh E2EE IPv6 network - https://news.ycombinator.com/item?id=30156551 - 2022年1月、コメント77件
Yggdrasil – Early-stage implementation of an end-to-end encrypted IPv6 network - https://news.ycombinator.com/item?id=27577201 - 2021年6月、コメント102件
Show HN: Yggdrasil Network – compact mesh routing experiment for mesh networks - https://news.ycombinator.com/item?id=18863554 - 2019年1月、コメント15件
Announcing Yggdrasil Network v0.3 - https://news.ycombinator.com/item?id=18751991 - 2018年12月、コメント3件
Yggdrasil: End-To-end Encrypted IPv6 Networking - https://news.ycombinator.com/item?id=18666245 - 2018年12月、コメント1件
ファイアウォール/NATを越えられる実用的なメッシュP2P IPネットワークが必要なら、Tailscale/Headscaleを使えばよい
暗号化キーでアドレス指定するP2P接続ネットワークが欲しいなら、比較的最近のプロジェクトでこれをかなりうまくやっているものがある: https://www.iroh.computer
ファイアウォール/NATを越えてQUIC接続を確立する。すでに使えそうな概念実証も2つある:
https://github.com/n0-computer/sendme
https://github.com/n0-computer/dumbpipe
利点はあるのか? 個人用の軽量なプライベートVPNを動かしたいだけならTailscaleは優秀だし、ネットワークを自分でホストしたいならHeadscaleもあって利点が多い
3〜4年前はかなり期待していたが、今はある程度放置されたプロジェクトのように見える。実際に使っている人がいるのか、印象はどうなのか気になる
昨年末に新しいプロトコル設計を含む0.5バージョンを出し、約1か月前にはリンクコストの変更でネットワーク遅延を大きく改善した0.5.9をリリースした
私はスマートフォンとホームネットワークをつなぐVPNのように使っていて、どちらもVPSにプライベートでピアリングしている
自宅に直接接続するより少し複雑だが、動的IP、ポートフォワーディング、WireGuardの鍵交換を気にするよりは設定が簡単だった
マルチキャストピアリングは悪くないので、自宅にいるときも同じYgg IPでホームサーバーに直接アクセスできる。問題はIPを使わなければならないことだ。iOSアプリがYgg VPN接続でカスタムDNSサーバー設定をサポートしていない
この用途にはHeadscaleのほうが実際にはより良い解決策だが、ピアリングを1つ追加するだけで代替インターネットが手に入るという点はかなり面白い
今はすべてのデバイスでyggdrasilを使っていて、NATの背後にいても互いにsshで接続できる
Androidでtermuxとyggdrasil Androidアプリを使えば、移動中でもファイルをどこかのクラウドに保存せずに、自宅のコンピューター上のファイルへアクセスできる
開発はかなり活発で、最新リリースでは遅延が最も低いホップを優先するようにルーティングアルゴリズムが改善され、体感できる改善があった
ネットワーク内の大きなコミュニティハブを期待しているなら失望するかもしれないが、自分で作ってみることもできる。自分の用途に合わせて使っている人は多く、プロジェクトは放置とはほど遠い
私はこれをLinuxディストリビューションだと思っていた
https://en.m.wikipedia.org/wiki/Yggdrasil_Linux/GNU/X
この分野にはReticulum Network Stackもある: https://reticulum.network/
FAQには「Yggdrasilは匿名なのか? いいえ、Yggdrasilプロジェクトの目的は匿名性を提供することではありません」とある
問題が難しく、単なる技術的問題を超えて解くべき課題があることは理解するが、正直これは自分にとっては出発点で脱落。実際のインターネットの進化であるなら、実質的な匿名性を含むべきだと思う
それを除外すると、現在の構成で、既存のインターネットにおいてまだ解決されていないどの問題を実際に解決するのか分からない
匿名ネットワークは通常、コストとオーバーヘッドが非常に大きい。秘匿のために、長く間接的な経路を意図的に作るからだ。Tor回線の全般的に低い性能と信頼性を見れば、インターネット全体がそのように動作してほしくない理由が分かる
Yggdrasilネットワークを動かし、その中でI2Pネットワークを運用できない理由はない。そうすれば、匿名性が不要な通信では性能低下が少なく、匿名ピアもクリアネットに出ずに作れる
アドレスが公開鍵から派生するというアイデアは本当に良いが、このアプローチには問題がある。Yggdrasilは現在IPv6アドレスを使っているため長さが非常に制限され、衝突を見つけられる
先頭ビットがより多い鍵をブルートフォースで探す回避策はある。理解したところでは、長期的な計画はアドレス長の制限がないカスタムプロトコルを追加することだ
だが、すでに使用中のアドレス集合と衝突させるのは、依然として現実的でないように見える。Yggdrasilの文脈で、前者が実際にどれほど問題になるのだろうか?
それでも現時点では、ほぼすべての既存のIPv6対応アプリケーションが修正なしにYggdrasil上で動作するという意味であり、テストネットとしては良い性質だ
「Yggdrasil is a new experimental compact routing scheme」とあるが、もうそれほど新しくはないのでは? 少なくとも6年は経っている