2002/2/22 博士論文最終試験 Protocols Design and Implementation for IPv6 Internet (IPv6インターネットに向けたプロトコルの設計と実装) 大阪大学大学院 基礎工学科 情報数理系専攻 ソフトウェア科学分野 北村 浩 IPv6をめぐる背景 • IPv4のアドレス空間枯渇の問題に端を発し 次世代のIP(IPng) の研究開発が1994年頃より本格化 • IETFにおける議論の末、IPv6をIPngとすることに決定 • IPv6の最大の特徴は 2128≒1038に及ぶ広大でグローバルな空間 • IPv6はIPv4のアドレス枯渇の問題を解決するだけでなく、 IPv4の問題点を改善するとともに、新しい機能 (Autoconfiguration やIPsec など)を提供 • IPv6は新たな通信分野 (移動端末、自動車、家電など)を開拓 • End-to-Endの通信が一般的になる • IPv6の基本機能は既に確立し、多くのOSで標準的にサポートを 開始(Solaris、FreeBSD、 NetBSD、Linux、WindowsXP など) • 既に100以上に及ぶsubTLA(商用IPv6アドレス)の申請があり、 複数のISPによる商用IPv6 サービスが開始されている • IPv6は実験から実用のフェーズに入っており、 IPv4からIPv6への移行は既に始まっている • IPv6はもう次世代のプロトコルではなく現世代のプロトコル 2 IPv6の未来とビジネス (公聴会のコメントを受けて) • IPv6の未来 – 普及は工学だけでなく、政治的要素が大きい – IPv4と違いIPv6ではグローバルな着信が可能となること が新しいサービスモデルを生む – 移動体端末のIPv6化が普及の原動力になる • IPv6のビジネスモデル – SOCKS-based IPv6/IPv4 Translator は • Client は Freeで配る • 高性能 なServer製品を作り、そこで利益を上げる – アドレスが絶対的に足りない地域 日本、欧州、中国あたりが有力市場 3 IPv6に向けて必要となる機能 (発表の構成) • IPv4からIPv6へスムーズに移行する技術 – 移行の技術及び必要条件の分析 – 最小の制約でIPv6/IPv4相互通信を効率的に実現する SOCKS-based IPv6/IPv4 Translatorの設計と実装 • IPv6ならではの魅力的な新機能 – Hop-by-Hop Option機能を拡張 – 通信経路に沿って最小のコストでネットワークと通信装置の情報 を実時間で効率的に取得し問題点やボトルネックを発見できる Connection/Link Status Investigation (CSI)の設計と実装 • Plug and Play機能強化と拡張 – プラグインしたIPv6ノードに自動的に論理ホスト名を設定し、 Plug and Playでの通信やEnd-to-Endの通信の鍵となる技術 Domain Name Auto-Registration の設計と実装 4 IPv4からIPv6へスムーズに移行する技術 3種類の移行技術 • Dual Stack – IPv6とIPv4両方のプロトコルスタックを実装 – アドレス空間枯渇の問題を解決することができない • Tunneling – IPv4パケットへカプセル化してIPv6パケットを運ぶ – IPv4の海を越えてIPv6の陸地間の通信 – IPv6ノードはIPv4ノードと通信をすることができない • Translator – – – – パケット及びプロトコルを変換する 異種プロトコル間の相互通信を実現する 移行初期から最終段階まで利用される技術 (本質的解で本発表で取り上げる移行技術) 5 Dual Stack IPv4/IPv6 2重ネット S 相手がIPv4ならIPv4 相手がIPv6ならIPv6 D IPv6とIPv4両方のプロトコルスタックを実装 アドレス空間枯渇の問題を解決することができない 6 Tunneling (パケットのカプセル化) IPv4ネット IPv6ネット IPv6ネット S R IPv6 IPv4へ カプセル化 R IPv6 D トンネルの出入口 IPv4パケットへカプセル化してIPv6パケットを運ぶ IPv4の海を越えてIPv6の陸地間の通信 IPv6ノードはIPv4ノードと通信をすることができない 7 Translator (パケットの変換) IPv4ネット S IPv6ネット T IPv4 IPv6 D トランスレータ パケット及びプロトコルを変換する 異種プロトコル間の相互通信を実現する 移行初期から最終段階まで利用される技術 (本質的解で本発表で取り上げる移行技術) 9 IPv6環境に移行するにあたっての 変換技術に必要とされる条件 • 現在IPv4で利用されている通信モデルでの 使いやすさを保持すること • 既存の通信インフラとなる フレームワーク(DNSなど)を保持 すること • 既存のIPv4用に作られたアプリケーションを 全く修正することなく IPv4-IPv6間の相互通信に利用できること • 多様なIPv4及びIPv6サービスをサポートできること • スケーラブルで負荷分散に容易に対応できること 11 プロトコル変換の観点から 必要とされる機能の分析 • IP プロトコルの変換 – 各パケットの IP ヘッダの置き換え – 置き換えに利用する IP アドレス空間の予約 – アドレスマッピングに伴う複雑なアドレス空間管理 • IP に関連するプロトコルの変換 – IP に関連するプロトコル (例えば ICMP) の変換 – アプリケーション層でアドレス情報を交換する アプリケーション(例えば ftpなど) に対処する機能 12 ユーザ アプリケーションの観点から 必要とされる機能の分析 ユーザアプリケーション内部での手続き 1. 通信相手を 論理的ホスト名であるFQDNで指定 2. FQDN から IP アドレスへ“DNS名前解決 API” を利用して解決し て、その情報をコネクションを確立のために用いる FQDN が通信を開始する起点となる情報であり、 IPv4 及び IPv6に依存しない唯一の情報となっている スムーズな変換機能に必要で、キーとなる重要な技術は DNS 名前解決の機能 を どのようにトランスレータ機能に取り込むか IPv4アドレスしか処理できない既存のアプリケーションで いかにしてIPv6を示すAAAA レコードを解決するか 13 機能を実装するプロトコル層による分類 基本機能はどのプロトコル層に実装するかで決定される • IP 層で実装 (NAT 技術の応用) – IP ヘッダはIPv4とIPv6の間で透過的に(transparently)変換される – 変換されるコネクションは終端されない – “Transparent モデル” • アプリケーション層での実装(ALG firewall/proxy 技術の応 用) IPv4 と IPv6 の二つのコネクションは 一旦終端されリレーされる – ひとつは “Full-Termination モデル” ユーザは内部の変換トポロジーなどの構造を知る必要があり、 手動で変換に必要な情報を設定する必要がある – もう一方は “Semi-Termination モデル” ユーザは内部の変換のための構造は基本的に知る必要がなく、 変換に必要な情報は、特別なプロトコル(例えば SOCKSなど)を 用いて内部で自動的に交換される 14 機能を実装するノード位置による分類 • Source ノードへの実装 – IPv4 アプリケーションはローカルに変換され、 IPv6アプリケーションがそこにあるように振舞う – 長所: DNS 名前解決機能を変換機能の中に取り込める – 短所: そのノードにあるローカルアプリケーションしか変換対象にできない 変換機能を全ての端末に実装する必要がある • Intermediateノードへの実装 (一般的な利用法) – IP 層への実装 通信パス上のルータに実装: 各ノードのdefault route をそのルータに設定 – アプリケーション層への実装 サーバとして動作: サーバの位置を各ノードに設定 – 長所: ネットワーク上にいる全てのノードが変換機能を利用可能 – 短所: DNS 名前解決を変換機能に取り込むことができない • Destinationノードへの実装 – Source ノードに対して何ら制限を与えない – Dual Stack の方法に似ている アドレス空間枯渇問題を解決できない 15 “Transparent モデル” の特徴 • IP ヘッダの変換に集中 パケットが届けば、変換できる. • Source ノードに対して なんら修正を必要としない • 致命的問題: DNS 名前解決機能を変換機能の中にとりこめない Source ノードは通信を開始することができない • 解: DNS の問い合わせパケットを置き換えるというスケーラブル ではない多くの制限を伴う機構を使う必要がある • 基本的に正しく対応できなICMPv4 と ICMPv6の間の 複雑なプロトコル変換を行う必要がある • 変換途中でパケット長が変わるので、性能劣化に直結する パケットのフラグメンテーションを起こす危険性がある • IPv6での新しい仕様(IPsec など)を利用することができない “Transparent モデル” は問題点が多い 現在のネットワークフレームワークの柔軟性を欠く 18 “Full-Termination モデル” の特徴 • コネクションが一旦終端されてリレーされるため、 ”Transparent モデル“ のほとんど問題は解決される • 終端されるので、ICMPの変換は必要ない • パケットサイズはリレーされるそれぞれのコネクションで調整 されるので、フラグメンテーションを起こす危険性はない • IPv6独自の新しい機能を容易かつ効率的に取り込める • 制限事項:ユーザは内部の変換トポロジーなどの構造を知り、 手動で変換に必要な情報を設定する必要がある • もともと変換に必要な情報を転送できるような機能を持たない アプリケーションの場合は、このモデルは利用できない。 21 “Semi-Termination モデル” の特徴 • “Full-Termination モデル”の持つ問題は解決されている • 変換に必要な情報を自動的に内部で転送するために、 新しいプロトコルと機構を導入する • Source ノードに新しい機能をインストールする必要がある • 新しい機能のインストールにより、 DNS 名前解決の機能 をトランスレータ機能に取り込むことが可能 (このモデルの絶対的特徴でもある) “Semi-Termination モデル” が最適と判断 SOCKS-based Translator として実現する 22 基本 Translator 機構 Client C Translator T Destination D Translator Application Application Same APIs Socks Lib Socket, DNS IPvX Network I/F Socksified Connection to D to T Socket, DNS IPvX IPvY Network I/F data to D (control) to D data Socket, DNS IPvY Network I/F Normal Connection 23 DNS名前解決の手続き (DNS Name Resolving Delegation and Address Mapping) Application socket FQDN 1 gethostbyname2() getaddreinfo() 4 DNS Server 7 real IP 6 3 connect() 2 FQDN real IP Translator socket FQDN fake IP fake IP socket Socks Lib FQDN 8 connect() 5 socksified connection 24 DNS 名前解決の手続き (DNS Name Resolving Delegation and Address Mapping) ① “FQDN” を引数としてDNS 名前解決を試みる ② “fake IP” を返値として受け取る ③ “fake IP” を用いた“socket” を利用してコネクションを開設する ④ “fake IP”に対応する“FQDN”を変換テーブルから取り出す (この変換テーブルが実質的 Address Mapping) ⑤ “FQDN” をSOCKS化されたコネクションを通してTranslatorに 伝える ⑥ Dual Stack であるTranslator において、通常のDNS Serverに 問い合わせて、DNS 名前解決の委譲 (DNS name resolving delegation)を実現する ⑦ “real IP” を受け取る ⑧ Translator上で “real IP” を用いて “socket” を作成し、 Destinationに対してコネクションを張る 25 発展形 Translator 機構 (Multiple Chained Relay) Client C Translator T1 Translator T2 Destination D Application Same APIs Application to D Translator2 T Translator1 Socks Lib to D Socks Lib T1 Socket, DNS to T2 Socket, DNS to D Socket, DNS Socket, DNS to S IPvY IPvZ IPvZ IPvX IPvX IPvY Network I/F Network I/F Network I/F Network I/F data to D (control) Socksified Connection data to D (control) Socksified Connection data Normal Connection 26 特徴 (1/2) • DNS に全く手を加える必要がない – Address map servers などというものは不要 – 変換のためのアドレス空間を予約する必要が全くない • アプリケーションに依存しない – 基本的にソケットとDNS名前解決APIを利用する 全てのアプリケーションに対して利用できる – 例外: アプリケーション層でIPアドレス情報を交換するようなアプリ ケーション (例えば ftp PORT など) は例外となる • OS や NIC の種類に依存しない – UNIX も Windows どちらのOSも対象にしている – 物理的な NIC の種類に対する依存性はない • 必要な処理は 簡単な SOCKS化だけである – Dynamic link library の技術が SOCKS化を容易にしている • IPv6 での新しい機能 (IPSecなど)が簡単に利用できる – 二つの終端されたコネクションのリレーを行っているので 28 特徴 (2/2) • IPv4⇒IPv6 と IPv6⇒IPv4 両方の変換が可能である • 既存の client SOCKSv5 library がそのまま利用できる – IPv4 ⇒IPv6 の変換の場合は IPv4⇒ IPv4用に開発された 既存の client SOCKSv5 library がそのまま利用できる • TCP と UDP 両方のリレー変換が可能である – SOCKSv5 は TCP と UDP リレーをサポートしており、 トランスレータでも同様に TCP と UDP のリレー変換にも対応している • 多段に連なった変換が可能である • アドレス情報をアプリケーション層で交換する FTP に対応可能 – トランスレータは容易にプロトコル変換ルーチンを導入することが可能 – ftpの例のように、どのようなプロトコルかがわかっている場合は、 特別なプロトコル変換ルーチンを用いて対応可能 • 並列した複数のサーバにより、容易に負荷分散を行える 29 制限事項 • アドレス長の差に起因する本質的制限 – IPv6 と IPv4 は異なるプロトコルであるため、getpeername() や getsockname() 関数では本当のIP address情報を返せない。 (空間の広さが等しく、SOCKSで変換するのでポート情報は正しい) – 実際のところ、これらの関数は多くの場合ポート情報の取得のために 用いられるため、実質的制限は小さい • SOCKS 機構に依存する制限 – 現在の SOCKSv5 は異常なコネクションの張り方を行うアプリケーション には対応できず、トランスレータでもそれらには対応できない • Fake address を利用することによる制限 – Fake address はアプリケーションにおける一時的情報として扱う必要が あり、ブックマークのようなものに記録してはならない。 – 多くのアプリケーションは IP address ではなくて FQDN を恒久的情報とし て、ブックマークに記録するので、実質的制限はほとんどない 30 評価環境 100BASE-TX (Full-Duplex) Switching Hub Source Translator1 SOCKS Client SOCKS Server OS IPv6 Implementation Source, Translator1, Translator2, Destination Network Translator2 SOCKS Server Destination FreeBSD2.2.7R KAME etc. PCs (CPU PentiumII 400MHz Memory 128MB) 100BASE-TX (Full Duplex) Switching Hub 31 実装したSOCKS-based IPv6/IPv4 Translatorの評価 • 典型的な TCP と UDP のサービス (telnet, http, pop, ftp, tftp など) を用いたIPv4 IPv6間での相互通信を実現 • IPv4ノードからでもIPv6ノードでも相互通信コネクションが張れる • 特別な変換ルーチンを用いて、ftp もサポート IPアドレスを引数にとるftpコマンド (PORTとLPRT, PASVの LPSV返値) の適切な変換を実現 • IPv6のプロトコル実装に依存しないことを検証 性能 • 一台の translator サーバにつき 同時に100 あまりの相互通信コネクションを実現 各コネクションのスループットを合計して60 Mbps を実現 • 標準的な規模のネットワークをサポートする 十分な性能があることが実証された 32 IPv6への移行技術のまとめ • • • • • • • IPv6へ移行するための要求事項を明確化を行った 多様な移行技術を比較し分類した 鍵となる技術はいかにしてDNS名前解決機構を取り込むか 最適な解として “Semi-Termination モデル” を選択 “SOCKS-based IPv6/IPv4 Translator”としてそれを実装 実装を既に終え、評価及び検証も終えている 典型的なサービスである (telnet, ftp, http, tftpなど)用いたIPv4 IPv6 間での相互通信が性能などの問題もなく実現できることを検証 • (IETFに提案し、RFC3089として標準化を終えている) • その初期実装を http://www.socks.nec.com/ において公開 • CGI登録を通した download 年間 5000件、世界80カ国からある 33 一日当たりの Download数 30 Tue Mon 25 Thu Mon Tue Tue Thu 04-13 v1.2 Mon Tue Thu Tue FriWed Mon Fri Fri Thu WedWedFri Thu Mon Mon Wed ThuFri Wed SunTue Fri Wed Mon Wed Wed Tue Wed Fri Tue Tue Wed TueThu Fri Mon Wed Thu Wed MonMon Fri Tue Fri Mon Tue Thu Mon Mon MonWed Tue Tue Thu ThuSat Mon Sun Thu Tue Tue Mon Thu Tue Thu Tue Tue Wed Fri Wed Mon Fri Tue Fri TueWed Sat Tue Mon Sun FriThu Tue Tue Tue Wed Wed Fri Thu Mon Wed Sat Sat WedFri Sat Wed Wed Mon Wed Thu Fri Thu Mon Thu MonThu Wed Sun Tue Fri Wed Wed Sat Mon Sat Thu Wed Wed Thu Thu TueTue Wed Sun WedThu Fri Mon Fri Fri Mon ThuThu Fri Fri MonThu Sat Fri Sun SunMon Tue MonTue Wed Mon Wed Tue Sun Wed Tue Fri Sun Tue Wed Sat Sat Mon TueTue Fri Sun Sat Thu Sat MonWed Mon Sat Tue Fri Fri SatFri Sun Mon Mon Fri Mon Tue FriTueThu SatSun Sun Sat Thu Fri Sat Sun Fri Sun Wed Thu Sun SatSat Mon Tue Fri Sat Sun Wed Tue MonMon MonThu Sun WedWed Fri Sun Thu Fri MonThuThu FriWed Mon Wed Fri Sun Sun Fri Wed Sun Sun Sun Fri MonThu Sun Tue Sat Thu Tue Mon SatSat Fri Fri Tue Thu SatSat TueMon Sun Thu Sun Sat Fri Sat WedFriThu Sun Mon Tue Sat Wed Thu Thu Fri Fri Sat Sun Wed TueWed Mon Sun MonWed Thu SunSun Sat Sun Thu Tue Sat Mon Sun Wed Sun Sun SatSunSunSun Sat SatSat Fri Sun Mon Mon Tue Sun Sun Thu SatFri 02-04 ThuThu Sat Thu Sun Fri Wed Mon Sat ThuSat Sun Sun Thu Sun Wed Sat Thu Tue Sat Sat Sun Sat v1.1 SatSat Fri Sat Fri Sat Wed Fri Sun Sun Sat Sat Tue Sat Sun Sun Sat Tue Thu 20 15 10 5 00-01-31 00-01-17 00-01-03 99-12-20 99-12-06 99-11-22 99-11-08 99-10-25 99-10-11 99-09-27 99-09-13 99-08-30 99-08-16 99-08-02 99-07-19 99-07-05 99-06-21 99-06-07 99-05-24 99-05-10 99-04-26 99-04-12 99-03-29 99-03-15 99-03-01 99-02-15 0 99-02-01 times 08-20 v1.3 34 IPv6ならではの魅力的な新機能 Connection/Link Status Investigation (CSI) を生む背景 • 現状の問題 – best-effort ネットワークでは様々な理由(不適当なネットワーク設計、 通信の輻輳など)により、通信品質の劣化が発生する • 要求事項として – 通信品質劣化に遭遇するのを避けたい – 通信経路のどこに問題やボトルネックがあるかを簡単に発見したい • その要求を満たすために – 通信経路に沿ったノードやネットワークの状態情報などのデータを効 率的に収集する機構が欲しい – hop-by-hop でデータを獲得する機能を利用すれば、その機構を実現 する最適な方法になる – IPv6にはhop-by-hop option があり、それを実現するための基礎となる 機能があると共に歴史的にもよい時期にあたる 38 現状の状態調査機構(ツール)の問題点1/2 (ping) • ping – 良いツールである。単純であり end-to-end 通信の 基本的状態情報を集めることができる しかし – 通信経路に沿った hop-by-hop の状態情報を 収集することはできない – 通信経路上のどこに問題やボトルネックがあるかを 探し出すことはできない 39 現状の状態調査機構(ツール)の問題点2/2 (traceroute, pathchar) • tracestatus (pathchar) – 有効なツールではあるが、その機能は最適化されていない (この機構は他の目的のために用意された既存の機能を、 その本来の目的とは違う方法で無理やり利用しているから) 2つの大きな制限(問題)と一つの小さな制限(問題) – 通信相手から自分への下りの経路を基本的に調査できない • ほとんどのユーザは下り(ダウンロード)経路の状態を調査を行いたいという 要求があるため、これは致命的な問題になる – 調査のために数多くのプローブ/リプライ パケットを発行する • 非効率的な方法 • この観点からすると、“pathchar” は “traceroute” より相当に多くのパケットを 発行し、極めて非効率 – 複数のプローブを利用することは取得したデータの信頼性を下げてしま うかもしれない (二番目のプローブは前のプローブと同じ経路を通過しないかもしれない) 40 traceroute (or pathchar) 型の状態調査機構 MPMR (Multiple-Probe/Multiple-Reply) UDP packets Outgoing Path 3 1 node 1 2 node 2 4 5 6 source destination ICMP messages Incoming Path node 5 node 4 41 これらの問題点に対する解として IPv6 hop-by-hop で状態調査を効率的に行う Connection/Link Status Investigation (CSI) を提案 要求事項 • “上り”のパスのみならず “下り”のパス も調査できること • 調査のために発行するパケット数を最小化すること • 動的経路制御によって調査を行うパスが変化をしてしまう 問題を避けること • 十分にシンプルな機構であること • 様々な規模や様々な型のネットワークに適応可能なこと • コネクションの到達性がない問題のあるネットワークでも動 作して、問題を起こしている場所を発見できること 42 CSI 機構の設計 • 一般的なフレームワークとして – 実時間で上り及び下りの経路に沿ったノードの状態情報を、 (最小数のパケットを用いた)効率的な方法で調査する機構 – 多様なデータに取得できるような拡張性を持たせる – 中間ノード(ルータ)での処理は簡単に – 複雑でインテリジェンスを必要とする処理はソースノードで • 1つの新しい IPv6 Hop-by-Hop option – CSI option • 3つの新しい ICMPv6 メッセージ – Status Request / Status Reply – Status Report 43 CSI Option (IPv6 Hop-by-Hop option) • CSI option が設定されたパケットは、 経路に沿ったノードを通過する際に、 そのノードの状態を調査し状態情報を取得する +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Next Header | Hdr Ext Len | 4n+2 alignment +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Option Type | Opt Data Len | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |M|Invest. Class| Invest. Type | Reserved |R| Hop Limit Base| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identifier | Record Count | Report Count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Data Space + | | | | 44 Status Request / Reply (ICMPv6 messages) • Round trip loop を形成する一対のメッセージ – Status Request メッセージ • (Source から Destinationへの) outgoing(上り) パスを担当 – Status Reply メッセージ • (Destination から Source への) incoming (下り) パスを担当 • ブーメラン のような動作をする • 2つの役割がある – 経路に沿ったそれぞれのノードでのデータ取得の引き金になる – 取得したデータを自分自身のメッセージに添付し運ぶ • 取得したデータはメッセージ内のデータを記録するため に事前に確保した空間に埋められて運ばれる – 空間を埋めるだけなので、メッセージの長さは変化させない • ほとんどの場合、一対のメッセージだけで経路に沿った ノードの状態情報を集めることが可能 45 Status Request / Reply (ICMPv6 messages) Status Request ICMPv6 message Outgoing Path source node 1 node 2 Hop-by-Hop CSI Option Hop-by-Hop CSI Option Hop-by-Hop CSI Option Hop-by-Hop CSI Option Hop-by-Hop CSI Option Hop-by-Hop CSI Option node 5 node 4 destination Incoming Path Status Reply ICMPv6 message 46 Record 2 Record 3 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Option Type | Opt Data Len | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0| I. Class = 1| I. Type = 0| Reserved |R| Hop Limit Base| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identifier | Record Count | Report Count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Hop Number = 1|0 1| Timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Upper part of IPv6 Address [Incoming I/F] + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Lower part of IPv6 Address [Incoming I/F] + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Hop Number = 2|0 1| Timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Upper part of IPv6 Address [Incoming I/F] + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Lower part of IPv6 Address [Incoming I/F] + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Hop Number = 3|0 1| Timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Upper part of IPv6 Address [Incoming I/F] + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Lower part of IPv6 Address [Incoming I/F] + | | +---------------------------------------------------------------+ Record 1 Record format in Data Space (Record Route 動作の例) 47 Status Report (ICMPv6 message) • スケーラビリティ問題を回避するために Status Report メッセージを導入する – データを運搬する容量 (メッセージ内に事前に確保した空間 の広さ)は有限である • 事前に確保した空間が取得データで一杯になったとき 全ての取得データはStatus Report メッセージ を利用して 状態調査を開始したイニシエータ ノードに運ばれる • Status Report メッセージが発行された後は Status Request/Reply プローブメッセージ内のデータを記録 する空間を空にし、データ収集動作を続ける 48 Status Report (ICMPv6 message) Status Request ICMPv6 message Outgoing Path source node 1 node 2 Hop-by-Hop CSI Option Hop-by-Hop CSI Option Hop-by-Hop CSI Option Hop-by-Hop CSI Option Hop-by-Hop CSI Option Hop-by-Hop CSI Option node 5 node 4 destination Incoming Path Status Reply ICMPv6 message 49 Operation モード • CSI機構はどんなネットワーク環境 でも動作する必要がある – 通常のネットワークでは、効率的に動作するように – コネクションの到達性がないような問題のあるネットワークでは、 問題点がどこにあるかを発見するために動作するように • この条件を満たすために“Operation モード” という考えを導入 – SPSR (Single-Probe/Single-Reply) モード • 通常のネットワークで通常の状態調査に用いる – SPMR (Single-Probe/Multiple-Reply) モード • 問題のあるネットワークで機能するために用いる • Status Report メッセージが通信経路に沿った 全てのノードから発行される 50 CSI in SPSR (Single-Probe/Single-Reply) mode Status Request ICMPv6 message Outgoing Path source node 1 node 2 Hop-by-Hop CSI Option Hop-by-Hop CSI Option Hop-by-Hop CSI Option Hop-by-Hop CSI Option Hop-by-Hop CSI Option Hop-by-Hop CSI Option node 5 node 4 destination Incoming Path Status Reply ICMPv6 message 51 CSI in SPMR (Single-Probe/Multiple-Reply) mode Status Request ICMPv6 message Outgoing Path source node 1 node 2 Hop-by-Hop CSI Option Hop-by-Hop CSI Option Hop-by-Hop CSI Option Hop-by-Hop CSI Option Hop-by-Hop CSI Option Hop-by-Hop CSI Option node 5 node 4 destination Incoming Path Status Reply ICMPv6 message 52 実装と評価 • CSI 機能をIPv6の新機能として実装し、評価及び検証を終えた • “tracestatus” CUIツールを作成 – 基本機能として動作する • “pathview” GUIツールを作成 – “tracestatus”のfront-endとして動作する • “tracestatus” と Status Request/Reply の関係は “ping” と Echo Request/Reply メッセージの関係と同じ • 典型的な使用法は、プローブパケットは周期的に発行し、 ネットワーク状態を継続的に調査する – 初期プローブは経路に沿ったノードの (アドレスや所持するI/F数などの)静的情報を取得 – それに続く繰り返し発行されるプローブはノードの (カウンターなどの)動的情報を取得 • ソースルーティングを利用することにより、 調査する通信経路を固定することが可能 初期プローブで経路を固定するためのアドレス情報を取得 56 “tracestatus”(CUI) と “pathview”(GUI) 57 タイムスタンプと実時間利用帯域計測 • 繰り返し発行する多重プローブを利用した計測 Repeated Times = n node 1 Repeated Times = n+1 node 2 node 1 destination source node 5 node 4 At node X: Timestamp = Tn Octet Count = Cn node 2 destination source node 5 node 4 At node X: Timestamp = Tn+1 Octet Count = Cn+1 C Cn 1 Cn Consumed Bandwidth T Tn 1 Tn 58 途中通過ノード(ルータ)への実装の評価 • 途中通過ノード(ルータ) へのCSI機能の実装の影響が 最も大きな関心事となる • 途中通過ノードにおける CSI機能の性能(動作時間) のみ測定して評価した OS ノード(ルータ) ネットワーク Source code size FreeBSD2.2.8R + KAME PCs (Pentium II 400MHz) 100BASE-TX/10BASE-T Ethernet 1.2kline (on intermediate nodes) 59 評価方法 Investigation Data Type Name Address, Static, Compress, Dynamic, All Operation Mode SPSR, SPMR Investigated Interface(s) Incoming, Outgoing, Both Number of passed nodes from 20 to 32 • ソースルートしたパケットを評価のために用いた node S node A node S node B (n-1) times repeated S->S=>S S->A->B->…->A->B->S=>S Main evaluation For correction 60 中間ノードにおけるCSI 機能の動作時間 200 180 160 : 140 Operation time (micro sec) 120 address static compress dynamic all 100 80 60 40 20 0 SR- SR- SR- MR- MR- MR- SR- SR- SR- MR- MR- MR- SR- SR- SR- MR- MR- MR- SR- SR- SR- MR- MR- MR- SR- SR- SR- MR- MR- MRI- O- B- I- O- B- I- O- B- I- O- B- I- O- B- I- O- B- I- O- B- I- O- B- I- O- B- I- O- B20 20 20 20 20 20 22 22 22 22 22 22 24 24 24 24 24 24 26 26 26 26 26 26 28 28 28 28 28 28 Operation Mode - Class (Investigated Interface) - # of passed nodes 61 中間ノードにおける CSI 機能の動作の平均時間 • “Investigation Data Type”, “Operation Mode”, “Investigated Interface(s) に依存する • “Number of passed nodes” には依存しない Record length (byte) SPSR Incoming time (usec) SPSR Outgoing time (usec) SPSR Both time (usec) SPMR Incoming time (usec) SPMR Outgoing time (usec) SPMR Both time (usec) address 20 14.9 14.0 39.0 87.0 92.2 110.9 static compress 28 20 24.0 14.3 24.4 14.4 62.4 39.9 93.0 87.0 99.4 93.5 124.8 112.0 dynamic 28 24.0 24.6 62.2 93.5 99.7 124.8 all 60 65.4 64.0 139.4 122.1 126.1 180.5 全ての値は < 200 μsec (十分小さい) 参考: 10Mbps, 300B のパケット ⇒ 通過するだけで(300 x 8 bit)/10M bps = 240 μsec 62 IPv6ならではの魅力的な新機能 CSI機構のまとめ • Hop-by-hop ベースで 実時間で状態調査を効率的に行う機構 Connection/Link Status Investigation (CSI) 機構を提案 • IPv6 の新機能 として設計し実装し評価を行った • CSI機構では上りのパスのみならず下りのパスをも 絶対最小の数 (ほとんどの場合1対) のパケットを用いて効率的に状態調査を行う • 状態調査のための基本フレームワークとして設計した • 柔軟で拡張性に富む機構、多様な状態調査に用いることが可能 • • • • • Hop-by-hop ベースの実時間で正確な消費帯域測定を実現 経路上の ボトルネック を見つけることが可能 ネットワークの再設計を行うためのデータ取得に利用 QoS を保証するネットワークでは、状態を検証する機構として利用 シンプルでルータに対して複雑な動作を要求しない機構 容易に実装できて中間ノード(ルータ)において性能問題を生じない 63 Plug and Play機能強化と拡張 Domain Name Auto-Registrationを生む背景 • IPv6は新たな通信分野 (移動体端末、自動車、家電、 ホームネットワークなど )の開拓を促進 • これらの装置の特徴 – その台数が非常に多い – 手動で 通信のための情報を設定するのが困難 – これらの装置のユーザは多くの場合 通信プロトコルに関する十分な知識を持っていない • Plug and Play 機能なくしては、この分野へ展開できない – 管理コストを低減する必要がある • グローバルアドレスならでは特性を生かす – End-to-End通信が一般的に – 発信のみならず外部からの着信アクセスを可能に • 実用的なPlug and Play 技術 – IPアドレスが自動設定できるだけで、実用的通信は実現できない 69 Plug and Play の視点から見た IPアドレスとホスト名 • IPv6 アドレスはとても長くて覚えることが困難 • EUI64ベースのIPv6アドレスは規則性のない数字の連続と なる複雑なアドレスであり、更に覚えることが困難 • 強い要求事項として: – 通信相手を指定するのに、 IPv6 アドレスを用いて指定するのではなく、 容易に覚えることが可能な論理ホスト名で指定したい – プラグインするIPv6ノードの論理ホスト名を プラグイン動作に連係して自動的に登録したい 70 Domain Name Auto-Registration機構の目標 • 必要とされる機能は – プラグインしたIPv6ノードをすばやく発見し、 – そのノードの論理ホスト名を設定し、 – 自動的にその正引き及び逆引きの情報をDNSへの登録を行う • この機構は 一連の autoconfiguration (plug and play) 機能の 鍵となる要素技術 • “Address Autoconfiguration” [RFC2462]でステートレスアドレス設定 された後に、引き続いて動作するPlug and Play機構として動作 • “Dynamic Updates in the DNS” [RFC2136] を ドメイン名情報の登録に利用する • “Dynamic Updates” をドメイン名情報を自動登録する機能に適応する にあたっての問題点を明確にする 問題の解であり Plug and Playでの通信やEnd-to-End通信を実現する上で 鍵となる技術として “Domain Name Auto-Registration” 機構を提案 71 プラグインする IPv6ノードに対する考慮 1. プラグインする IPv6 ノードは自分の好みを示せるような 十分が機能を持っていない プラグインする IPv6 ノードにとっては、自分のドメイン名を 何にしたいかという好みを示すことは一般に困難 2. この機能の実現にあたり、プラグインする IPv6ノードに 新たな機能追加することを避けたい 3. プラグインするノードにとって本質的なことは 記憶可能な“何らか”のドメイン名を持つ(登録する)こと 実際にどのような名前が割り当てられるかは、 プラグインするノードの最大の関心事ではない 73 “デフォルト ドメイン名” “デフォルト ドメイン名” という考えを導入 1. 新しくプラグインしたIPv6 ノードが出現する 2. その出現を自動的にすばやく 検知する 3. そのノードに対応させる“デフォルト ドメイン名” を選択す る 4. その“デフォルト ドメイン名” に対応する正引き及び逆引き の情報をDNSサーバに自動的に登録する もしノードがその“デフォルト ドメイン名”に 不満足であれば、 手動で改名可能 (plug and playでない環境において) 74 Dynamic Updates を利用する上での問題点1/2 Dynamic Updates [RFC2136] をドメイン名の自動登録を行う機構 に用いるには解決しなくてはならない問題がある プラグインしたノードは: 1. DNSサーバからみて信用できるノードになれない • プラグインしたノードからのDynamic Updatesメッセージは信用できない 一般にDNSサーバはそのメッセージを受け付けない 2. ノードのドメイン名情報をどのDNSサーバへ 登録に行けばよいかを知るのが困難 3. 登録すべき十分なドメイン名情報を用意するのが困難 • 登録するのに必要なFQDN情報を用意するために、 ノードが所属する DNS ゾーンの情報が 必要だが、 プラグインしたばかりのノードがその情報を入手するのは一般に困難 75 Dynamic Updates を利用する上での問題点2/2 4. 同じ名前の二重登録を回避するための明確な方法がない • • DNS サーバは受信したDynamic Updatesメッセージが 正しいフォーマットで、正しく認証されていれば、 その二重登録のチェックを行うことなく登録してしまう (DNSサーバにとって、二重登録と上書き(更新)処理とを 区別することは本質的に実現できない) 5. プラグインノードから発生するDynamic Updates メッセージ数を 制御(制限)する機能が存在しない • 悪意のある若しくは間違って設定されたノードからの 要求メッセージの影響を最小化したい 6. 登録メッセージを発行すべき時期が明確でない • いつ登録を行うかのタイミングの定義が必要 76 問題点に対する解としての機構の基本設計 “Domain Name Auto-Registration” 機構は 二つの新しい機能から成り立つ • “Detector” 機能 – 新しいIPv6プラグインノードの出現を検出す – 検出したアドレス“detected address” を“Registrar”に送る • “Registrar” 機能 – 受信した“detected address”が 登録を必要とする情報であるか検証 – 検証されたら、そのノードの“デフォルト ドメイン名” を用意 – “デフォルト ドメイン名” 情報を DNS サーバに登録 Plugged-in IPv6 Node には全く機能を追加しない 既存のDAD(Duplicate Address Detection)仕様を利用 77 単一リンクの場合 DNS Servers (4) Check & Name R Detector (2) Detect (1) Plug-in Registrar (3) Request (5) Register Plugged-in IPv6 Node 78 単一リンクの場合 DNS Servers Detector RA prefix detected address with Detector ID R DAD finished start Registrar inverse query domain name NS address address Plugged-in IPv6 Node dynamic update duplication check finished start 79 複数リンクの場合 DNS Servers (4) Check & Name Registrar (3) Request R1 (5) Register Detector1 R2 Detector2 (2) Detect (1) Plug-in Plugged-in IPv6 Node Plugged-in IPv6 Node 80 複数リンクの場合 DNS Servers dynamic update duplication check finished start Registrar inverse query domain name R1 RA prefix DAD start finished Detector1 detected address with Detector ID NS address address Plugged-in IPv6 Node R2 Detector2 Plugged-in IPv6 Node 81 典型的動作手順 Plugged-in IPv6 Node DAD (a) link-local (b) Router Detector NS [no NA] (c) DAD (d) global (e) (f) (g) (h) Registrar DNS servers (RS) detected address with Detector ID discarded RA NS [no NA] detected address with Detector ID check (i) inverse DNS query (j) (property (k) query) (l) (optional) default domain name selected (m) Dynamic (n) Updates (o) (p) regular info. dynamic update inverse info. dynamic update 82 典型的動作手順 Plugged-in IPv6 Node DAD (a) link-local (b) (c) DAD (d) global (e) (f) (g) (h) Router Detector NS [no NA] (1) Plug-in (RS) RA (2) Detect NS [no NA] (4) Check & Name (property (k) query) (l) (optional) (m) Dynamic (n) Updates (o) (p) detected address with Detector ID discarded (i) (j) check Registrar DNS servers (3) Request detected address with Detector ID inverse DNS query default domain name selected regular info. dynamic update (5) Register inverse info. dynamic update 83 実装と検証 • Detector–Registrar 間は http ベースのプロトコルを利用 • Plugged-in Nodeは BSD UNIXにもWindowsに対応 • 問題なく動作することを検証 Plugged-in IPv6 Node OS FreeBSD 4.4R, NetBSD 1.5.2, and Windows 2000 with Technology Preview Detector OS FreeBSD 4.4R, NetBSD 1.5.2 Registrar OS FreeBSD 4.4R, NetBSD 1.5.2 DNS Server OS FreeBSD 4.4R, NetBSD 1.5.2 DNS 実装 BIND 9.1.3 84 Plug and Play機能強化と拡張 Domain Name Auto-Registration機能のまとめ • IPv6は新たな通信分野 (移動体端末、自動車、家電)の開拓を促進 • これらの装置は、台数が非常に多い、手動で の設定が困難など 独特 な特徴をもち、管理コストを軽減するPlug and Play 機能が必須 • グローバルアドレスならでは特性を生かし、 End-to-End通信を実現する上で 通信相手を指定するのには、記憶が 困難なIPv6 アドレスではなく、記憶が容易な論理ホスト名が必要 • IPv6ノードに新たな機能を追加することなくして、プラグインしたノードを すばやく検知し、論理ホスト名を選択し、DNSへの登録を自動的に行う “Domain Name Auto-Registration” 機構を発案し実装し評価、 問題なく動作することを検証 • 今後は、足りないPlug and Play要素技術 (例えば、 Service Location Protocol (SLP) によるサービスの自動発見など)の開発を通し 完全なPlug and Play の実現を目指す • Plug and Playと相性が良くないセキュリティー機能の連係強化も課題 85 IPv6に向けて必要となる機能のまとめ • IPv4からIPv6へスムーズに移行する技術 – 最小の制約でIPv6/IPv4相互通信を効率的に実現する SOCKS-based IPv6/IPv4 Translatorの設計と実装 • IPv6ならではの魅力的な新機能 – IPv6 Hop-by-Hop Option機能を拡張し、 通信経路に沿って最小のコストでネットワークと通信装置の情報 を実時間で効率的に取得し問題点やボトルネックを発見できる Connection/Link Status Investigation (CSI)の設計と実装 • Plug and Play機能強化と拡張 – プラグインしたIPv6ノードに自動的に論理ホスト名を設定し、 Plug and Playでの通信やEnd-to-Endの通信の鍵となる技術 Domain Name Auto-Registration の設計と実装 いずれの機能もIETFに提案して標準化の道を歩んでいる SOCKS-based IPv6/IPv4 TranslatorはRFC3089として標準化を終えている 86
© Copyright 2025 ExpyDoc