ハクソク

世界を動かす技術を、日本語で。

IPv6が優れた設計であった世界 (2017)

概要

  • IPv6の設計と複雑さの背景をIETF会議で探求した体験記
  • ネットワーク技術の歴史的進化と設計思想の違いを解説
  • バス型LANやEthernet、MACアドレスの登場とその課題を説明
  • ブリッジやルーティング、ARPの仕組みと問題点に言及
  • IPv6がIPv4の単純な拡張ではない理由を技術的・歴史的文脈から考察

IPv6が「良い設計」だった世界

  • 2023年11月、初めてIETF会議に参加した体験
  • IETFは、保守作業既存技術の拡張先端的な新規提案が混在する場
  • TCP BBRの初発表に対する反応は「期待と疑念が入り混じる」もの
  • 会議ではIPv6関連の発表が多く、「IPv4の時代は終わるべき」という意見が目立つ
  • IPv6がなぜ複雑なのか、なぜ単純なIPv4の拡張ではないのかを現場で調査

バス型ネットワークの誕生と混乱

  • 初期の電話網は物理的な回線交換で、アドレス不要の単純な構造
  • TDMや仮想回線交換の導入で、複数回線の効率的利用が可能に
  • インターネット(当時は別名)は点対点回線を利用し、IPアドレスやルーティングの概念が誕生
  • ローカル接続のためのバス型LANが登場し、MACアドレスなど独自のアドレス体系が乱立
  • arcnetやEthernetなど、各方式ごとにアドレス設定や管理方法が異なる

EthernetとMACアドレスの進化

  • Ethernetは48ビットのMACアドレスで一意性を確保、設定の手間を削減
  • LANプロトコルごとに異なる方式が存在し、NetwareやIPXなども普及
  • 大規模ネットワークの登場で、**複数バスの相互接続(ブリッジング)**が必要に
  • MACアドレスは階層化できず、効率的なルーティングが困難
  • ブリッジテーブルの自動生成やスパニングツリーアルゴリズムの誕生

ブリッジングの問題点と限界

  • ブリッジは高速だがデバッグ困難で、ネットワーク規模拡大で問題が顕在化
  • Ethernetの速度(10Mbps)を最大限活用するためのハードウェア最適化が進む
  • ブリッジのルート最適化やブロードキャストフラッドが運用上の課題

インターネットとバス型LANの接続

  • インターネット技術者はLAN技術の進化を積極的に取り入れ
  • 個別コンピュータ間の接続から、LAN同士の接続(長距離ブリッジ)への発展
  • Ethernetブリッジは帯域・混雑制御が未発達で、WAN接続には不向き
  • インターネットプロトコルによるLAN接続の標準化が進行

ルーティングとARPの複雑化

  • IPパケットをLAN上で転送する際、どのルータが転送するかの指定が必要
  • ルータの指定にMACアドレスが必要だが、設定時はIPアドレスで指定するのが一般的
  • OSはARP(Address Resolution Protocol)でIPアドレスからMACアドレスへ変換
  • ARPはブロードキャストを多用し、大規模LANではネットワーク負荷増大の原因
  • ブリッジやルータの混在環境で、運用とデバッグの複雑化が進行

このような歴史的経緯と設計思想の違いが、IPv6が単なるIPv4の拡張にとどまらず、複雑な仕様となった背景である。

Hackerたちの意見

すごく面白い記事をシェアしてくれてありがとう!でも、一つよくわからない点があって、誰か教えてくれたら嬉しいな。著者が「Wi-FiでもCSMA/CDプロトコルはもう使われていない」と言っているけど、実際にはどうやって動いているの?このことについて、著者はこう説明してるんだよね。>「同じアクセスポイントに接続された2つのWi-Fiステーションは、直接お互いに話さないんだ。たとえお互いの声が聞こえていてもね。だから、各ステーションは、自分が聞いているものが自分のためのものかどうかを判断しなきゃいけない。別のステーションがAPに話しかけているかもしれないし、APが別のステーションに話しかけているかもしれないから。CSMA/CD(またはそれに似たもの)を使わずに、これはどうやって実現されているの?」
>「これはどうやって実現されているの?CSMA/CD(またはそれに似たもの)を使わずに?」私の知る限り、Wi-Fiは常にCSMA/CAを使っていて、802.11ax規格からはOFDMAも使われているよ。詳しくはここを見てね:https://en.wikipedia.org/wiki/Hidden_node_problem#Background
この記事、何が言いたいの?私のネットワークはMACアドレスに基づいて自動的にIPv6アドレスを割り当てるって?それでステートレスIPv6ができるの?それにしても、IPv6はIPv4の枯渇とNATのせいで、もっとIPアドレスを持つためのものだったよね?私のXboxは「ネットワークがクソだ」って言ってるけど、これは完全に北米的な視点だね。
IPv4がないとXboxは動くの?私の会社のWindowsデバイスは動かないし、他のゲーム機もそうだって知ってる。
>「私のXboxはネットワークがクソだって言ってる、IPv6がないから」多分、UPnPがないことについて文句を言ってるんだと思う。確かに、IPv6があれば問題じゃないんだけど…皮肉なことに、コンソールは自分たちでIPv6のサポートを導入するのが遅れてるから、Xboxが本当にサポートしてるのか気になるな。
>「私のネットワークはMACアドレスに基づいて自動的にIPv6アドレスを割り当てるって?それでステートレスIPv6ができるの?」ちょっと指摘したいんだけど、RFC8064[0]によると、ほとんどの現代の非サーバーデバイスは、MACアドレス/EUI64を使うんじゃなくて「意味的に不透明なインターフェース識別子」でアドレスを設定するべきなんだ。安定したアドレスは、受信トラフィックに使われて、送信トラフィックはランダム化された一時的なプライバシーアドレスを使って、時間とともに変わるんだ。ステートレス性は、DHCPv6のような中央集権的な設定ではなく、デバイスがSLAACを使ってアドレスを自己割り当てすることで実現されるんだよ。[0] https://datatracker.ietf.org/doc/rfc8064/ [1] https://datatracker.ietf.org/doc/rfc7217/
この投稿のARPに対するネガティブな見方は好きじゃないな。ARPがあるおかげで、ルーターなしでLAN上でIPネットワークができるんだから。デフォルトゲートウェイは、LAN上の一般的なIPネットワークの特別なケースになるだけだよ。それ以外は、この投稿のネットワーキングの歴史部分はすごく面白い。まだIPv6の部分には到達してないけど。
でも、ARPが暗示するレイヤー2アドレスの解決の問題に対処する方法はそれだけじゃないし、ARPが引き起こすレイヤー違反や広範なブロードキャストトラフィックを導入せずに解決できるよ。例えば、IPv6のNDPは実際のIPv6パケット(ICMPv6)に基づいているから、偽のIPに似たものじゃないんだ。レイヤー違反もないし、マルチキャストのおかげで、レイヤー2ネットワークに大量のブロードキャストトラフィックを流す必要もないんだ。
とても興味深い投稿ですね。IPv6が単に大きなIPv4になるだけだとは考えたことがなかったです。それに、1990年に作られたのに、最近やっと50%の普及率に達したのも面白いですね。
年に騙されないで。IPv6は90年代に設計されたけど、実際に使われ始めたのは2012年からなんです。
その50%の普及率は、中国が2017年のほぼゼロから2025年には80%以上に増えたからこそ、ここまで高くなったんだよ。彼らはIPv6の普及を5カ年計画の一環に含めたからね。
我々の世界。私たちの世界では良いデザインだったと思います。v6がプロトコルデザインの絶対的な頂点とは思わないけど、誰かが「悪い」と言って、より良い代替案を考えようとすると、結局はIPv6と同じようなものが出てくるんですよね。もしみんながv6より良いものを一貫して作れないなら、v6はかなり decent だと言えると思います。
振り返ってみると、V4に16ビットか32ビット追加するだけで良かったんじゃないかと思いますが、あなたの意見には賛成です。v6は良いし、ちゃんと機能します。聞く不満はほとんどが無知から来ていると思いますが、一つだけ本当の不便さがあります。それは長いアドレスです。これは確かに面倒で、エンコーディングもイマイチです。人間が読みやすいアドレスのエンコーディングを改善すれば助かると思います。
> 彼らは結局IPv6と同等のものを考え出す。 それだけじゃないよ。人々が「より良い」と考えるほとんどのことは、IPv6の設計プロセスで検討されて却下されたもので、ほとんどがしっかりした理由があるんだよね。
それが彼の言いたいことじゃないって分かってるでしょ。世界は常に変わってるし。1998年にネットワーク機器の会社が自分たちのニーズを考えて設計したものだよ。エンドユーザーやネットワーク管理者、アプリ開発者のことは考慮されてなかった。今も残ってるのは、埋没コストの誤謬と、何十年も前の技術的負債に縛られている人たちのせい。今の時代に新しいプロトコルを設計すれば、RustがAdaと違うのと同じように、全然違うものになるよ。1998年にはSD-WANなんてなかったし、チップのコストやモバイル顧客の需要も存在しなかった。供給と需要の経済がプロトコルの要件を変えてしまったんだ。ソースアドレスやデスティネーションアドレスの概念すら再考する必要がある。2026年にデフォルトで0RTT暗号化を取り入れないネットワーク層プロトコルの概念は馬鹿げてるよ。NDやARP、RA、DHCPなどのプロトコルもデフォルトでは安全じゃないし。なんで私のデバイスは、認証なしで隣のデバイスが特定のアドレスを持ってるっていうランダムな主張を信じるの?なんでネットワークのセキュリティやアイデンティティの権威を認証せずに、ネットワークに接続するの?「ゼロトラスト」って言葉は嫌いだけど、要するにそういうことだよね。人々はセキュリティや信頼、アイデンティティについて話さないけど、IPv6はネットワーク機器のベンダーのコストを削減するために設計されたから。新しい高価な機能は、SD-WANホスティングのような収益源を持ってこないといけない。新しいレイヤー3プロトコルがもたらすことができる新しいことはたくさんあるけど、セキュリティを除けば、主なことは番号付きアドレスをアイデンティティベースのアドレスに置き換えることだよ。RFC委員会の参加者にとって、どれだけコストがかかるかが全てだ。世界がこの技術にどれだけ依存しているかを考えると、政府が介入することを願ってる。この技術を未来の世代に渡すのは悲しいよね。火星にコロニーを作ることになるのに、アドレスやセキュリティの問題を2005年みたいにトラブルシューティングしてるなんて。
彼らがもっと良いものを作れなかったって言ってるんだね。彼らは「出荷した」って感じで手を引いたと思う。でも、もう少し改良を重ねるべきだったと思う。もう少しIPv4+で、IPv6が少なくなるまで。
みんな忘れがちだけど、インターネットアーキテクチャボードは「インターネットの透明性とエンドツーエンド原則」に対して宗教的な見解を持っていて、実際のツールの限界やサイト運営者のニーズとは逆行していました。[0] 1990年代中頃、まだIPng(IP次世代)だった頃に、実際に動かそうとした人たちがたくさんいて、かなりの努力をしたんだけど、非現実的なイデオロギーに阻まれてしまったんです。特に当時のセキュリティツールの制限があったから。IPngが始まった頃、大きな地域ISPでさえフィンガーサーバーを持っていて、多くの人がtelnetを使っていたし、実際にSlackwareはデフォルトでrootパスワードなしでtelnetを有効にしていました!私は、遅刻した同僚を壁に叩き起こすために両方を使っていました。あの頃は、Altavistaのようなひどいアプリケーションファイアウォールがあって、PIXはまだ発明されていなかったし、大規模な監視資本主義市場も存在していませんでした。IABは、現実的な代替案を提供せずに、死ぬべき丘を選んで展開を妨げていました。そして、IPv4の枯渇が問題になるまで譲らなかった。みんながCGNATに強制される羽目になったのは、IETFのせいであって、そうならなかったわけではない。IABとIETFは、MIT ITSの考え方に囚われていて、現実世界ではそのモデルが危険で不可能になっていたんです。エンドツーエンドの透明性は一部の人には「美しい」かもしれないけど、顧客が必要としていたものではなかった。RFCを書いて、IPv6をローカルで有効にしてもISPのサポートがないと他のサービスが単に失敗してタイムアウトするようにしたことで、多くの善意を燃やしてしまった。みんなはIPv6スタックを取り外して、IPv4だけを使うようになった。私の意見では、ほとんどの技術的失敗と同じように、これは技術的なメリットに基づいて失敗したわけではなく、ユーザーのニーズを無視し、それを考慮しようとしなかったからです。採用者は自分たちの特定の味のクールエイドを飲むか、IPv4に留まるしかないと主張して、強制されるまでほとんどの人は後者を選びました。[0] https://www.rfc-editor.org/rfc/rfc5902.txt
実際、30年後の今週、UbuntuのaptミラーにIPv6ブロックを追加しなければならなかったんです。なぜなら、aaaaレコードのクエリが優先度が高くて、CIでタイムアウトしてビルド時間が殺されてしまったからです。この挙動は、上で述べた同じ政治的な理由によるものです。もう少し現実的な決定や、少なくとも共感的なガイダンスがあれば、IPv6の受け入れは劇的に変わっていたと思います。
あなたはIABがエリートすぎて、その時の重要な問題に対処することを拒否していたと何度も繰り返していますが、詳しくはあまり触れていませんね。私はv6の初期実装を、承認前に書いたことがあり(UNHの相互運用性賞も受賞しました!)、彼らにどんな責任を負わせようとしているのか正直理解に苦しんでいます。もしかしたら、彼らはe2e原則を真剣に受け止めすぎて、ひどいナットの妥協を支持すべきではなかったのでしょうか?
SLAACとDHCPv6の両方があるのはIPv6の大きな欠陥だと思う。SLAACは素晴らしいけど、2つの設定メカニズムがあるのは混乱するよね。AndroidがDHCPv6をサポートしないのも助けになってないし。SLAACは、コンピュータが高価だった時代から来たもので、DHCPサーバーは別々にあって、それを排除したかったんだと思う。でも今は、コンピュータが安くて、どのルーターもDHCPを動かせる時代だよ。DHCPv6がデフォルトでMACベースのアドレスを配布する簡単な設定ができたはずなのに。自動設定はリンクローカルでも機能するし。
v6の設計に、企業が私たちのインターネット体験をさらに悪化させる機会を提供する部分ってあるの?