ICMPv6 / Internet Control Message Protocol Version 6
■ ICMPv6。Internet Control Message Protocol Version 6。
IPv4のICMPをIPv6に対応したもの。
ICMPは、IPv6ノードに置いて、
パケット処理中に発生したエラーを報告したり、
通信状況の通知を行ったりします。
ICMPv6は大きく分けて次の2種に分類できます。
(1) エラーメッセージ
宛先到達不能、Too-Big-Message(MTU以上のサイズのパケットを送ろうとした)、
TTL・タイムアウトなどのエラーを通知するためのICMP。
IPv4におけるICMPの機能を提供する。
パスMTUディスカバリーを実現する。
パスMTUディスカバリ(パスMTUの検出)には、このICMPのToo-Bigメッセージが用いられている。
(2) 情報メッセージ
エコー要求・エコー応答などが含まれる。
また後述するルータ要請や近隣要請などのNDP機能も情報メッセージにまれる。
IPv4におけるARPの機能を提供する。
■ パスMTUディスカバリー。Path MTU Discovery。
「MTUディスカバリ」を行わないIPv4網では
リンクが切替わるごとにパケットを分割(フラグメント)合体する作業が
必要となり、ルータに負担がかかっていた
IPv6では、ルータの負担を軽減するため
一切フラグメントの作業をせず
転送(パディング)のみを行うことになる
このように、
IPv6では、経路途中のルータでフラグメントを行わない。
そのため、送信元のノードで適切な MTUを設定してパケットを送信しなくてはならない。
そのMTUを調べるための機能がパスMTUディスカバリーである。
IPv6では、直下の層、すなわちデータリンク層
(ATM、イーサネット、PPP等)を「リンク」と呼び、
同一リンク上で転送できるパケットの最大長を「リンクMTU」と呼ぶ。
リンクの種類が切替わるごとに、この「リンクMTU」も変化する。
たとえばイーサネットの場合、リンクMTUは1200バイトとなっている。
送受信ノード間の全ての「リンクMTU」の中で
最小のMTUを「パスMTU」と呼ぶ。
IPv6のパスMTUディスカバリは、
送信元ホストが、経路上(送信元→宛先)の全てのリンクを
パケット分割なしで通過できる最小のMTUを探索して、
あらかじめ最小サイズでパケットを送り出す機能である。
IPv6網では、送受信ホストが通信に先立ってお互いに「パスMTU」を
確認しあい、最も小さいMTUで送受信を開始する仕組みになっている
これを「MTUディスカバリ」と呼び、IPv6では非常に重要な手順である
この機能により、ルータはパケットのフラグメンテーション処理を
する必要がなくなり、ルータの処理負荷が軽減した。
パスMTUディスカバリの手順は、以下の通りである。
(1) 送信元のノードは
デフォルトのMTU(Ethernetに接続されていれば1500)でパケットを送信する。
(2) 経路の途中でより小さなMTUが設定されていると、
その直前のルータが送信元ノードへ「Too-Big-Message」を送信する。
(3) 「Too-Big-Message」を受け取った送信元ノードは、
そのMTU値に合わせてパケットをフラグメント化し、
再度パケットの送信を行う(このときにフラグメントオプションヘッダが付加される)。
(4) 上記(2),(3)を繰り返し、
送信元から送信先までのパスにおけるMTUを発見することができる。
決して、パケット送信前にICMPを利用してパスMTUを調査する、という訳ではないので注意。
ただし注意点として、ISPなどがICMPをフィルタしてしまうと
「パスMTUディスカバリ」ができなくなる
この影響で特定のサイトが見えなくなるなどの現象が発生する
■ 近隣探索プロトコル。NDP。Neighbor Discovery Protocol。
IPv6とIPv4とでは,アドレス解決のしくみが違う。
IPv6ではアドレス解決を「近隣探索プロトコル」(NDPと呼ぶプロトコルで実施する。
NDPは,IPv6向けに開発されたプロトコルである。
IPv4では、データリンク層のアドレス解決に、
ARP(アドレス解決プロトコル)を使用したが、
IPv6では、データリンク層のアドレス解決に、
NDP(近隣探索プロトコル)を使用する。
NDPはいずれもICMPv6の一部として動作します。
リンク上に存在する近隣ノードのMacアドレス(データリンク層アドレス)を判別したり、
そのアドレスの変更・停止検出を行ったりし、
近隣ノードへの到達性のチェックを行います。
さらにリンク上にいるルータを検出し、パケット転送先として設定したりもします。
NDPには大きく分けて次の5つの機能があります。
具体的な手順としては、下記の通り。
ノードAが、近隣要請メッセージに解決したいIPアドレスを載せて
前述の要請マルチキャストアドレス宛てに送信する。
リンク内のノードBは、近隣通知メッセージに自身のMACアドレスを
載せて返信する。
(1) 近隣要請パケット (NS:Neighbor Solicitation)
特定のノードのMacアドレス(データリンク層アドレス)を解決するための要求。
IPv4におけるARPリクエストと同じ。
IPv6ではブロードキャストが無いため、
近隣要請用のマルチキャストアドレスへ問い合わせパケットを送信する。
マルチキャストアドレスは、
解決したいIPアドレスの下24bitにff02::1:ff00:0000/104プレフィクスを加えたアドレスを利用する。
(2) 近隣通知パケット (NA:neighbor Advertisement)
NS(近隣要請)に対する応答。
Macアドレスなど、要求に対する返答が含まれる。
次に3ffe:200::39ff:feb3:f503というアドレスを持つノードのアドレス解決の手順を示す。
ターゲットノードのIPアドレスの下位24bitに
ff02:0:0:0:0:1:ff00::/104のプレフィックスを付加したマルチキャストアドレスを作成する。
この場合、ff02::1:ffb3:f503というマルチキャストアドレスになる。
そのマルチキャストアドレス宛にリクエストを送信する。
該当するノードがそのNSパケットを受信する。
該当したノードがNSに対するNAを返信する。
(3) ルータ要請 (RS:Router Solicitation)
リンク上のルータに向けて、ノードが発行するリクエスト。
ネットワークアドレス(プレフィクス)やゲートウェイアドレスなどの情報を提供するように要求する。
RSはノードが初めてリンクに接続されたときや、
ノードの再起動などによってインタフェースが初期化されたときなどに発行される。
(4) ルータ応答 (RA:Router Advertisement)
RS(ルータ要求)に対する応答。
RAはRSによって要求されたとき以外にも、自ら定期的に発行する。
(5) リダイレクトメッセージ
宛先に到達するために最適な第1ホップをノードに通知するためのICMPv6メッセージ。
■ 参照URL
v6start.net
http://itpro.nikkeibp.co.jp/free/v6start/road2_v6/20020218/1/
[ つづきはこちら ]
2004/03/24 pm