FrontPage

俺的まとめ

ちっとも普及する気配がないけど、いまさらまとめてみる。

IPv6 のどこがいいの?

  • 豊富なアドレス空間
    • NAT(IPマスカレード)とかが不要。すべてにグローバルアドレス振っちゃう感じ。
  • IPsec 標準実装
  • IPアドレスの自動構成機能
    • DHCPみたいに刺せば使える感じ? ルーターがやってくれる。

IPv6 で高速化する?

  • IPv4 に比べて IPv6 はパケットのヘッダがでかくなるのでほんのちょっぴり遅くなる。
  • IPv4 でトンネリングすると遅くなる…
  • IPv6 のヘッダは固定長なので、ハードウェアで処理しやすくなる。
  • IPv6 ではルータでのパケット分割禁止なので、分割に伴うロスがなくなる。
    • ホストがパケットサイズの自動調整をする。
  • IPv6 のアドレスはルーティングしやすいように構成されている。

128bit もアドレスに使ったら、ルーティングテーブル爆発しない?

  • アドレスの上位ビットからツリー状に物理的位置を示すようになっている。自由割り当てではない。
    • ということは、どこかよその国に出かけたらIPアドレス変わっちゃわない?
      • ダイヤルアップのような場合、掛けた先のISPのIPアドレスをもらうことになるはず。
    • あくまでISP内、組織内でのルーティング問題になる?
  • NLA, SLA による固定的な分割は obsolete。RFC3587 で破棄。CIDR のように組織内で自由に分割してよいことになった。
    オフセットビット幅名前用途
    0-23FP
    3-1513TLA IDTop Level Aggregation ID:最上位階層識別子
    16-2813sTLA IDsub TLA ID
    29-346予約
    35--NLA IDNext Level Aggregation ID:次階層識別子
    -63-SLA IDSite Level Aggregation ID:サイト階層識別子
    64-128インターフェイスID
  • いわゆるサブネットは上位64bitで決定する。
  • サブネット配下では 64bit のインターフェイスIDを記憶する必要があるはず。
    • 通常サブネットは高々数百台なので問題ないと考えられる。
  • ISP は sTLA ID まで上位29bit(正味26bit?)を持つ。
  • 組織としては通常上位48bit〜64bitを ISP から割り当ててもらう形になる。
  • 組織内でサブネットごとに SLA ID を振り出す。

IPv6 と IPv4 の相互通信はどうなってるの?

  • 本質的には IPv6 と IPv4 とはまったくの別物。互換性なし。
  • サーバーによっては直接アクセスできないケースは考えられる。
  • ホストにその機能があれば(デュアルスタック)、IPv4 のアドレスを IPv4-mapped IPv6 address としてやり取りすることができる。
IPv4 ServerIPv6 ServerIPv4 Server DualIPv6 Server Dual
IPv4 ClientIPv4xIPv4IPv4
IPv6 ClientxIPv6xIPv6
IPv4 Client DualIPv4xIPv4IPv4
IPv6 Client DualIPv4IPv6(x/IPv4)IPv6

(デュアルスタックホスト を Dual と表記)

  • IPv6 でコード書いたら、IPv4 と通信できなくなる?
    • デュアルスタックホストであれば、IPv6 専用アプリでも通信できる。(IPv4との変換をホストがやってくれる。)
    • IPv6 クライアントから IPv4 サーバーに接続する場合、IPv4-mapped IPv6 address を選ぶ必要がある。
    • デュアルスタックホストではないと、そもそも動かなかったり、IPv4 と通信できなくなる可能性がある。
      • getaddrinfo を使って、どの種別のホストでもかまわないように実装する。
  • FreeBSD の場合、カーネル変数 net.inet6.ip6.v6only が 0 の時に IPv4 アドレスから IPv6 アドレスへの自動変換が行われる。
    • rc.conf では ipv6_ipv4mapping="YES" にする。

MACアドレスの方が先に枯渇しない?

  • ベンダーIDが24bit, シリアルが24bit
  • ベンダーIDはベンダーが複数取ってもかまわない。

IPv6 だと DHCP いらないって?

  • インターフェースにはリンクローカルアドレスが必ず付く。同一リンク内(ルータを越えない単一のサブネット)なら相手とつなげることができる。
    • リンクローカルアドレスを示す上位64bitの prefix fe80::/64 と下位 64bit のインターフェースIDを組み合わせる。
    • インターフェースIDの生成方法は決まっていて通常は重複しない。
  • ルータ広告(RA Router Advertisement)で、IPv6 アドレスの上位64bitの prefix を広告する。
    • クライアントは自分のリンクローカルの IPv6 アドレスの下位64bit(インターフェースID)を、広告された上位64bitの prefix と組み合わせて、IPv6 アドレスとする。
    • RA パケットの発信元がデフォルトゲートウェイになる。
      • 複数のルータがある場合は? RA パケットに優先度が書かれている。

DNS が IPv6 で動かないんじゃ?

  • そもそも DNS サーバに IPv6 で接続できないのでは?
    • IPv6 接続に対応した DNS サーバーが必要。少なくとも BIND9 は対応済み。
  • そもそも ISP やレジストラの DNS に IPv6 で問い合わせできないのでは?
    • ルートサーバーに IPv6 のアドレス(AAAAレコード)が付き始めている。
    • ISP やレジストラのDNSは、順次、IPv6 でも問い合わせできるようになってきている段階。
  • IPv6 と IPv4 とではレコードが異なる(IPv6はAAAA, IPv4はA)から、一発で問い合わせはできないんじゃないの?
    • できないので、2回問い合わせる。
  • 2回問い合わせると AAAA レコードがないことがわかるまでの時間がかかるのでは?
    • AAAA レコードの問い合わせパケットを出した直後に Aレコードの問い合わせパケットを送る。(これは実装による。)
  • 問い合わせた結果、IPv6 アドレスがなくて、IPv4アドレスが返ってきた場合はどうなるの?
    • Dual スタッククライアントなら IPv4 で接続する。
  • IPv6 と IPv4 とのアドレスが取得できた場合、実際には IPv6 で接続できない場合はどうなるの?
    • 接続できないとわかるまで待たされて、次に IPv4 を試すことになる。(が、たいていの場合はタイムアウトで試すことにならないはず。あるいはまったく試さないか。アプリの実装による。)
  • DNSサーバーのアドレスを IPv6 でどう自動構成すればいいの?
    • LAN では問い合わせ先のアドレス well-known address として fec0:0:0:ffff::1, fec0:0:0:ffff::2, fec0:0:0:ffff::3 を使用することが提案されている。(Windows 7 ではそうしている。)
    • IPアドレスの自動構成機能(RA)では DNS サーバーのアドレスを教えられない。DHCPv6 でアドレスを教える必要がある。
      • 最近 RFC 5006 で RA で DNS サーバのアドレスを広告するというのが出た。(2007年9月…)
  • DNS には UDP パケットの最大サイズ512バイトの制限がある。IPv6のレコード(名前/アドレス)を収めるには短すぎるのでは?
    • ルートサーバーやレジストラはDNSサーバーの名前を短くして対応。(圧縮機能があるから、あんまり変わらないような気が。)
    • TCP で問い合わせれば 512 バイト以上でもよい。でも、遅い。
    • EDNS0 (Extension mechanisms for DNS version 0) で拡張。要求時に受信可能サイズを渡すことができる。
      • DNS amp の問題がある?

IPアドレスの自動構成はいいとして、名前解決はどうするの?

  • LLMNR (Linklocal Multicast Name Resolution) っつーのでやるとのこと。Windows はこれ。
    • UDP 5355 ポート
    • http://www.exconn.net/Blogs/windows/archive/2006/06/05/12679.aspx
    • サブネット内に DNS は不要。
    • アプリケーションの改造は不要。resolver の仕事ですね。
    • 大声で名前呼ぶと、その人が答えてくれるっつー仕組み。
      • マルチキャストでそれいいの?
      • Ethernet 配下なら Ethernet ブロードキャスト扱いになるらしい。
  • mDNS という方法もある。Mac はこれ。
    • UDP 5353 ポート
    • 昔 Apple が Rendezvous と呼んでいた。今は Bonjour と呼んでいる。
    • iTune とか入れると勝手にぶち込まれるのがこれ。

IPアドレスを自動構成するってことは、グローバルアドレス割り当てられたら外から丸見え?

  • はい。丸見え。NAT でセキュリティを確保していた場合、ルータでパケットフィルタなどを用意しないとダメ。
  • 大半のパケットフィルタは IPv4 用で、IPv6 はスルーだったりするので要注意。

ISP が IPv6 のサービスしてくれないんじゃ、使えないんじゃ?

  • 外部のトンネリングサービスを利用する。(6to4)
local           ISP     tunneling               remote
+------------+  +----+  +------------+  +----+  +----+
|IPv6 -> IPv4|--|IPv4|--|IPv4 -> IPv6|--|IPv6|--|IPv6|
+------------+  +----+  +------------+  +----+  +----+
  • 192.88.99.1 で自動的に 6to4 リレールータを見つけることができる。(RFC3068)
  • Windows XP 以降で端末がグローバルIPアドレスを持っているなら、以下の設定でいけるはず。
    netsh interface ipv6 6to4 relay 192.88.99.1 enable

ISP の IPv6 たけーんですけど

  • いや、金取りたいのはわかるんですけどね。水道のパイプを金属からプラスティックに変えるのに料金負担させますか。

IPv6 試しに使ったらやけに遅いんだけど

  • 「IPv6 にしたら速くなる」ってことは、残念だけどまずないです。プロバイダは IPv6 が速いかのように宣伝してますが大ウソです。
  • デュアルスタックでは、DNS をAレコードを検索してから、AAAAレコードを検索します。
    • AAAA からじゃねーの? と思うけど、Aレコードの方が多いのでこっちかららしい。
  • IPv6 で DNS に問い合わせてアクセスして失敗したら IPv4 に切り替えてやり直します。
    • たぶん遅くなる大半がこれ。
    • よって、IPv6 アドレスと IPv4 アドレスとを同じドメイン名で提供するとろくなことにならないようです。('A`)
    • よって「透過的な移行」なんてたぶんできないです。
  • IPv6 はヘッダがでかくなります。
  • 6to4 なんかやってたら、当然おそくなります。

プログラミングはどうすりゃいいの?

で、結局普及するの?

  • Windows 2000 では IPv6 Technology Preview をインストールする必要がある。でも、一番使うであろう IE 6.x は IPv6 Technology Preview に未対応。
  • Windows XP はすぐにインストール可能。でもトンネルがない。
    • 以下のコマンドをたたくと IPv6 スタックがインストールされる
      ipv6 install
    • アンインストールしたい時には以下のコマンドをたたく
      ipv6 uninstall
  • Windows Vista は IPv6 標準装備。トンネルも用意。
  • Windows 7 では、Teredo サーバー(teredo.ipv6.microsoft.com )が用意された。知らず知らずのうちに IPv6 reachable になっているが、名前解決で IPv6 のアドレスが取得されないのであれば、全く使われない。
  • NTT東西のフレッツは地域網として IPv6 対応済みだが、Internet reachable ではない。('A`)
  • djb は普及しないと見ている。デュアルスタックのクライアント/経路/サーバーのコストが異様に高いと見ているため。でも、クライアント側は Windows Vista で一変しそうな雰囲気。残るは経路とサーバー。
  • サーバーも大部分はOSレベルでは対応済みだったりする。
  • 問題は
    • IPv6のアドレス割り当て(コストかかる)
    • IPv6を通してくれる経路(コストかかる)
    • アプリケーション対応(IPv4用アプリをIPv6も可能に書き換える必要あり。)(コストかかる)
    • ルータとかファイアウォールとか負荷分散装置とかのIPv6対応、対応品への交換(コストかかる)
    • 「IPv6? 何それ? IPv4で同じサービスできるならそれでいいじゃん」「はい、ごもっともです。」
    • 新規プロジェクトならIPv6使う可能性はあるかも?
    • でも、IPv6 を知ってる技術者どのくらいいるの? 見たことないよ。
  • え、KAMEプロジェクト解散済みだったのか
  • KDDIがやってた6to4実験ルーター停止
  • IPTVテクノロジの本質 http://itpro.nikkeibp.co.jp/article/COLUMN/20080526/304009/?ST=ngn
    • うれしいのは消費者じゃなくて権利者だけっぽいですね…
    • いつ帯域使い切ってトラブル起こすか(・∀・)ニヤニヤしながら見守ってます

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-06-26 (土) 10:40:32 (71d)