インフラ・DevOps
Show HN: Linuxカーネル、Libc、BGPでIPv8インターネットドラフトを実装しました
Show HN: We Implemented the IPv8 Internet-Draft in Linux, Libc, and BGP (goonhost.rocks)
要約
goonhost.rocksの研究チームは、インターネットドラフト「IPv8」の仕様をLinuxカーネル、Musl Libc、FRRouting BGP、およびGoで書かれたゾーンサーバープラットフォームに実装しました。実験の結果、ラボ環境ではプロトコルが機能しましたが、実際のネットワーク展開ではMTUの問題、非対称ルーティング、レガシーハードウェアの互換性、単一障害点となるゾーンサーバーなど、多くの問題が明らかになりました。
全文翻訳
Show HN: Linuxカーネル、Musl Libc、BGPでIPv8インターネットドラフトを実装しました
なぜこれを構築したのか
数週間前、「Internet Protocol Version 8 (IPv8) — draft-thain-ipv8-02」というタイトルのインターネットドラフトが私たちの目に留まりました。このドラフトはいくつかの驚くべき主張をしています。
アドレス枯渇ゼロ: すべてのASN(Autonomous System Number)ホルダーは、自動的に4,294,967,296個のホストアドレス($2^{32}$)を受け取ります。
100%の後方互換性: 「IPv4はIPv8の適切なサブセットです...フラグデーや強制移行はありません。」
完全なネットワーク管理: すべてのパケットはDNS8およびWHOIS8に対して検証されます。すべての要素はOAuth2 JWTトークンを介して認可されます。すべてのコアサービス(DHCP、DNS、NTP、Syslog、WHOIS、NAT、ACL)は単一の「ゾーンサーバー」にバンドルされます。
ほとんどのネットワークエンジニアは、これをバズワード過剰なエンタープライズアーキテクトが書いたエイプリルフールのRFCだと笑い飛ばすでしょう。しかし、メーリングリストで議論する代わりに、goonhost.rocksのチームは、仕様全体をゼロから構築し、分散されたマルチASネットワークに展開した場合に何が起こるかをテストすることにしました。
構築したもの(オープンソースリポジトリ)
リング0のカーネルコードからユーザー空間アプリケーションまで、完全なIPv8スタックを実装しました。
Linuxカーネル 6.6 (GitLab Repo):
AF_INET8(アドレスファミリー46)をネイティブに実装し、SOCK_STREAM(TCP8)、SOCK_DGRAM(UDP8)、SOCK_RAW(RAW8)をサポートします。28バイトのIPv8ヘッダー解析、64ビットルーティングテーブルルックアップ、sysctl境界ドロップルール(filter_internal_zones、filter_rine、filter_interior_links)を備えています。
Musl Libc (GitLab Repo):
64496.10.0.0.1形式のアドレスに対応するため、sockaddr_in8、inet_pton8、inet_ntop8、getaddrinfo()、getnameinfo() を追加しました。
iproute2 (GitLab Repo):
ネイティブな ip -8 route および ip -8 addr 管理コマンド。
FRRouting (FRR) (GitLab Repo):
ピアリングおよびIPv8ルート交換のためのマルチプロトコル拡張(AFI/SAFI)を備えたBGP8デーモン。
GoによるIPv8ゾーンサーバープラットフォーム (GitLab Repo):
10個のRFCサブプロトコルすべてを実装しました: DHCP8(オプション224–230)、DNS8(TYPE_A8 88)、SNTP Stratum-1、NetLog8(UDP 514テレメトリ)、OAuth8 JWTサーバー、WHOIS8 TCP 43/REST、ACL8、XLATE8ステートフルNAT。
Nginx & cURL (Nginx Repo | cURL Repo):
64ビットIPv8エンドポイント(http://64497.20.0.0.254:80/)でのHTTPの提供とリクエスト。
10ノードQEMUマルチASテストベッド:
4つの自律システム(AS 64496、AS 64497、AS 64498、AS 64499)が、マルチキャストWAN/LANセグメントを介して接続され、112,000以上のアクティブなFIBルートと継続的なクライアントトラフィック生成(trafficgen8)がロードされています。
結果:良い点、悪い点、そして壊滅的な点
良い点(ラボ環境にて)
隔離されたサンドボックス内では、プロトコルは驚くほどスムーズに機能します。
curl -i http://64497.20.0.0.254/ は、AS間WANメッシュ全体でNginxからHTTP/1.1 200 OKを返します。
dhcp8cは設定されていないインターフェイスで起動し、デュアルゲートウェイ(.254 Even / .253 Odd)のリースを受け取り、NTP8を介して2.27ミリ秒でクロックを同期します。
Linuxカーネルのfib_trieは、継続的なトラフィック下でサブミリ秒のルックアップレイテンシで112,117のアクティブルートを処理しました。
悪い点:なぜ現実世界で壊れるのか
1. Path MTU (PMTUD) & サイレントMSSブラックホーリング
IPv8アドレスは、送信元と宛先にそれぞれ4バイトを追加するため、IPヘッダーが20バイトから28バイトに拡張されます。標準的な1500バイトMTUのイーサネットリンクでは、標準的なIPv4 TCPパケット(ペイロード1460バイト + TCP 20バイト + IPv8 28バイト = 1508バイト)はMTUを超過します。何千ものレガシーな中間ボックスがICMP Fragmentation Neededメッセージを送信せずに大きすぎるパケットをドロップするため、TLSハンドシェイクや大きなファイル転送は無期限にハングします。
修正: 地球上のすべてのルーターとホストは、TCP MSSクランプを1452バイト(または8to4トンネルの場合は1432バイト)に強制する必要があります。
2. マルチホーミングと非対称uRPF (BCP 38) ドロップ
IPv8では、IPアドレスはプライマリASN(64496.10.0.1)にハードコードされています。2つのアップストリームトランジットプロバイダー(プロバイダーAとプロバイダーB)でマルチホームし、プロバイダーB経由でアウトバウンドパケットを送信する場合を考えます。プロバイダーBのインバウンドフィルター(strict uRPF / BCP 38)は、プロバイダーBがAS 64496への最短パスであるかを確認します。プロバイダーAがプライマリルートであるため、プロバイダーBはすべての送信トラフィックをなりすましパケットとしてサイレントにドロップします。
3. モノリシックなゾーンサーバーのDDoSターゲット
DHCP、DNS、NTP、Syslog、OAuth2認証、NATを1つの「ゾーンサーバー」ゲートウェイにまとめることは、究極の単一障害点を作り出します。ポート8080またはポート53に対する単純なUDPリフレクション攻撃は、会社全体の時刻同期、動的アドレス指定、トークン検証、およびインターネットエグレスを同時にダウンさせます。
4. レガシー スイッチ ASIC の CPU へのパンティング(遅延パス)
最新のデータセンターにある固定機能スイッチチップ(Broadcom Tomahawk/Trident、Cisco Silicon One)は、32ビットIPv4(0x0800)と128ビットIPv6(0x86DD)用にTCAMマイクロコードがハードワイヤードされています。これらはEtherType 0x88B8を認識しません。ラインレート(400Gbps/800Gbps)でハードウェアでパケットをスイッチングすることはできません。スイッチはIPv8フレームをコントロールプレーンCPUの例外キューにパンティングし、大量のパケットロスを引き起こし、スループットを400Gbpsから10Gbps未満に低下させます。
壊滅的な点:RIRとTier-1アップストリームの経済的崩壊
1. RIR(ARIN、RIPE、APNIC)の財政破綻
RIRは、保有するIPアドレス空間の量に基づいた段階的な年額料金で資金提供される非営利団体です。IPv8の下では、単一の32ビットASN($100–$500/年)を登録すると、43億ものルーティング可能なIPアドレスが得られます。アドレスの量は料金から切り離され、RIRの運営収入は75%から90%減少します。数十億ドル規模の二次IPv4譲渡市場(IPあたり$40–$55)は一夜にして消滅します。
2. 32ビットASNの投機的「ラッシュ」
1つのASNで43億IPが得られるため、ドメインのクアッターやスパマーは数千もの32ビットASNを買い占めようと殺到し、数年以内にグローバルASNレジストリを枯渇させるでしょう。
3. Tier-1トランジットのマージン破壊とコアTCAMの爆発
DFZルートの爆発: 現在のグローバルBGPテーブルは約115万ルートです。IPv8では、115,000以上のASNがTier-1およびTier-2サブネットを発表するため、Default-Free Zoneは300万から500万以上のアクティブルートに拡張され、グローバルバックボーン全体で何十億ドルものラインカード交換を強制します。
RINEピアリング収益の損失: IPv8のRINE指令(100.0.0.0/8)は、ゼロコストの地域ピアリングを強制し、Tier-1トランジットプロバイダー(Lumen、Arelion、NTT)から、海底ケーブルの資金を提供する高マージンのトランジットコミットメント収益を奪います。
完全なホワイトペーパーを読む
完全なデータ、テスト方法論、プロトコル解析を、包括的な研究論文にまとめました。
フルレポート: IPV8_RESEARCH_REPORT.md
公式IETFドラフト: draft-thain-ipv8-02.html
コメントでご意見をお聞かせください!
— goonhost.rocks リサーチチーム