Netsukuku-あなた自身のインターネット





最近、habrasocietyは、著作権侵害、政府があらゆる種類のナッツやその他の無法性を強化することに関連するトピックについて活発に議論しています。 ネットワークの制御ポリシー、検閲、匿名化に対抗するためのオプションについて説明します。



このような背景のすべてに対して、「 ネツクク」のような面白いプロジェクトに関する記事が1 つもなかったことは奇妙です。 その目標は、それ以上に、チェスと管理者でインターネットを構築することです。



でたらめ? そうでもない。





基本から始めましょう。 私たちのインターネットが大好きだった人は、もともとは信頼性と耐障害性に厳しい要件を持つ軍事システムとして作成されました。 理想的には、ネットワークは、ノードの一部が失われた後でも、核戦争の場合でも機能するはずです。 まあ、私たちはすでにそれを知っています:)



実際、すべてが官僚主義に変わりました。 本質的に回復力があるため、ネットワークはInterNIC、IANAなどの高速道路と集中型サービスに基づいており、それらに完全に依存しています。 長い間、ロシアのインターネットは一般にほぼ1ポイント(M9)に集中していましたが、その失敗により数年前にネットワーク障害が発生しました。



純粋に技術的な問題に加えて、政治的な問題もあります。多かれ少なかれ定義された州は、管理するのではないにしても、そのトラフィックを制御しようとしています。 特に無視された場合、これは慈善活動を除くすべてのコンテンツの完全な封鎖で表されます。 著作権侵害との戦いの後援の下、あらゆる種類の法律が考案されており、弁護士、特別なサービス、その他の快適なオフィスの手を解散させています。 また、プロバイダー自体は、ユーザーに最大限の快適さを提供するために努力しているわけではありません。トラフィックが遮断され、ポートがブロックされています。



まあ?





これとは対照的に、熱い日本人の男が日本の名前でプロジェクトを設立しました-Netsukuku。 これは、TCP / IPやWiFiなどの既存のネットワークテクノロジーに基づいて構築された、フォールトトレラントな分散型の自己組織化ネットワークを実装するプロジェクトです。 ソフトウェア自体は非常にリソースを消費し、アクセスポイントやSOHOルーターなどの組み込みデバイス上でも実行できます。



このテクノロジーの主な機能は、最大2 128ノード(!)のサイズの動的ルーティングでネットワークメッシュを構築できることです。 そして大声でそれを構築するために-デバイスでデーモンを実行するだけで、残りは自動的に行われます。



Freenetとは異なり、Nは部分的にのみインターネットに依存しており、長期的にはそれを拒否する可能性があります。 また、NetsukukuはOSIモデルの第3レベルで動作し、独立した物理データネットワークの構築を伴うことに注意する必要があります。 つまり、これはインターネット上の別のアプリケーションプロトコルではなく、独立したネットワークです。



うーん...そしてもっと?





だから、順番に。 Netsukukuネットワーク全体の中核はホストです。 ノードは、ルーティングソフトウェアが実行されているネットワークデバイス(アクセスポイントまたはユーザーPC)です。 すべてのノードはピアツーピアであり、エンドユーザーノードと複数の隣接するサブネットを結合するルーターの間に違いはありません。 ネットワーク自体は、スケーリングと接続の点で最も便利な無線技術の使用を意味します。



ユーザーが自分のデバイスでNetsukukuデーモンを起動するとすぐに、彼のノードはネイバーを見つけるためにブロードキャストパケットをスローし始めます。 ネイバーが検出されるとすぐに、ルーティング情報が交換され、アドレスの割り当てなどの問題が発生します。 その後、クライアントはネットワークの完全なメンバーになり、すぐに使用を開始できます。ユーザーアプリケーションの場合、すべてが完全に平凡で透過的に行われます。



技術的な観点から見ると、これはダイナミックルーティングと独自のネームサーバーを備えた大規模なLANです。 ルーティングは、カーネルルーティングテーブルを操作するデーモンによって提供されます。 残りはそのままです。



全体のアイデアの鍵は、 QSPN量子ルーティングプロトコル(Eng。)と階層ネットワークトポロジです。これにより、2つの任意のノード間のルートをすばやく簡単に計算できる方法が提供されます。



ネットワークトポロジー





インターネットルーティングは簡単ではありません。 トランクルーターは、巨大な(ホームルーターの観点から)メモリ量とクレイジーなパフォーマンスを持つモンスターの一種です。 これは、それらがネットワークのボトルネックであるためです-すべての地域のトラフィックは限られた数のチャネルを急いでいます。 適切なルートの選択は、複雑なグラフアルゴリズムを使用して実行されます。 これはすべて、最新のネットワークの構築とその管理の単純さに貢献しません。



従来の技術を使用して、1つずつインターネットのサイズのネットワークを構築しようとすると、パフォーマンスは言うまでもなく、膨大なメモリが必要になります。 あるノードから別のノードへのルートを1つだけ保存した場合、およびこの情報が1バイトしか占めていなかったとしても、現代のインターネット(約10 9ノード)には1ギガバイトのメモリが必要です。 すべてのノードに!



Netsukukuネットワークは階層的に構築されています。つまり、256ノードごとにいわゆる結合が行われます。 グループノード(gnode) 256個のグループノードはすでに高次グループ(ggnode)を構成しています。 各グループノードは同じ本格的なネットワークノードであるため、QSPNプロトコルは階層のすべてのレベルで同じように機能します。 同時に、ルートを検索する場合、それぞれの場合で最大256ノードで動作するため、検索自体が非常に簡単になります。



最後に、フラクタルアプローチを使用してルート自体を保存します。ネットワークの自己相似性が高いため、すべての情報をわずか数キロバイト(2 32ノードで4K)に詰め込むことができます。



ルートの検出とトレース





QSPNプロトコルの基礎は、トレースパケット(TP)です。 これは、通過したノードの識別子を含むパッケージです。 このパッケージは、特に誰にも送信されません。 代わりに、自然の洪水洪水が配置されます。 「ノードAがTPパケットを送信した」と言うとき、それは「ノードAがフラッドフラッドを開始した」ことを意味します。



セッション中、トレースパッケージは各ノードを1回だけ渡します。 TPを受け入れると、ノードはそれをすべてのネイバー(もちろん、ソースネイバーを除く)に送信し、TPに追加します。 フラッディングセッションに参加すると、ノードは同じフラッディングに関連する着信TPを転送しなくなります。



したがって、TPを受信する各ノードは、送信元ノードと各中間ノードへのルートに関する完全な情報を受信することがわかります。 最初にノードAが複数のTPを(すぐ隣の各ノードに)送信するため、各瞬間に「ブーケ」と呼ばれる同じフラッドに属する複数のTPバージョンがネットワーク上にあります。



ノードAから最初のTPを受信し、パケットの内部を見ている任意のノードXは、ノードAへの最小RTTを持つ最短ルートと、チェーンのすべてのノードを突然受信します:)後続のパケットは、それぞれ長い代替ルートになります。 したがって、実際のネットワークトポロジと遅延に基づいて、ルーティング情報が自動的に収集されます。



最初の部分の終わり





結論として、プロジェクトの現状について少しお話ししたいと思います。 まず、開発者が保証するように、プロジェクトは存続します。 現時点では、Pythonでのデーモンのドキュメントと実装が書かれています。これは、Cの古いバージョンに置き換わるものです。 第二に、ネットワークの完全な立ち上げはまだ行われていませんが、すぐに実現することを本当に望んでいます。



トピックに関する情報は、プロジェクトの公式ウェブサイトで見つけることができます。 wikiFAQロシア語版 +)もあります



PS:





さて、今日は以上です:)もっと書きたかったのですが、すでに目がくっついていて、頭が考えていません。



次のパートでは、トレースパケットのタイプとIPアドレスの衝突を解決するための重要なメカニズムについて詳しく説明します。 通常のDNSの類似物であるホストネーミングシステムについていくつか説明します。 おそらく、ネットワークとインターネットの相互作用に十分なスペースがあります。



もちろん、質問や提案がある場合は、歓迎します。 答えようとします。 はい、繰り返しますが、私は(まだ?)このシステムの開発者ではなく、アルゴリズムの微妙な点をすべて想像することはできません。 しかし、情報とそれをマスターしたいという願望もあります。



All Articles