Home > IPv6実践導入ガイド > 02 IPv6の実装に必要な知識

02-06 IPv6では重要な役割を担うICMPv6とリンクローカルアドレス


IPv6は、IPv4に比べはるかにICMPに対する依存度が高い。極端な言い方をすると、IPv4の場合は、ICMPを完全停止してもネットワークアクセスは可能だが、IPv6でICMPを完全停止すると通信そのものが全く出来なくなってしまうくらい重要な役割を担っている。

また、IPv6通信の根幹を支えてるいるICMPv6に加え、ネットワークコントロールにはリンクローカルアドレスが多用されているので、その基本的な通信に必要なICMPv6通信とその制御にリンクローカルアドレスがどのように使われているのかを、少し掘り下げた解説をしていこう。

 

ND(Neighbor Discovery)

IPv4では近隣探索をするのにARPを使用し、IPv4アドレスとMACアドレスをマッピングしてL2(イーサネットプロトコル)で通信を実現している。
IPv4のARPはL2レベルの通信なので、IPv4を使用しているわけではなく、ARPに乗せたIPv4アドレスを持っているノードりMACアドレスをL2ブロードキャストの形で問い合わせている。
第1章で登場したOSI7階層を思い出していただきたいが、L2で使用されるイーサネット プロトコルは、MACアドレスを使用して通信指定いるので、MACアドレスIPv4アドレスのマッピングを実現しているARPはIPv4通信において必須な仕組みだ。

ところが、IPv6でMACアドレスとIPv6アドレスのマッピングはARPではなく別のプロトコルで実現されているのである。

IPv6もIPv4と同様にL3プロトコルなので、実際のLAN上通信ではL2プロトコルであるイーサネットプロトコルを使用しているが、IPv6の近隣探索は、ARPではなくICMPv6を使用しており、IPv6そのものに依存している。

実際にNDでMACアドレスが解決されてまでの流れをフェンス図で説明してみよう。

[ NDフェンス図 ]

NDでは、ICMPv6のタイプ135(近隣探索要請)とtype136(近隣広告)を使用しており、近隣広告で使用された探索先の物理MACアドレスを学習している。

フェンス図を見て頂くとお分かりのように、近隣探索であるNDはリンクスコープマルチキャストIPv6アドレスのICMPv6を使い、IPv6パケットそのものでMACアドレスの学習をしているのだ。
つまり、IPv6でICMPv6を停止してしまうと、隣のPCやデフォルトゲートウェイすらアクセスできないので、一切の通信が出来なくなってしまうという事になる。

IPv4では、DMZではping等に反応させたくないためにICMPv4そのものを停止するケースを見受けるが、これをやってしまうと、IPv6では通信が全く出来なくなくなってしまう。

 

RA(Router Advertisement)

IPv6アドレスの自動構成に欠かせないのがRAだ。手動でIPv6アドレスを構成するのであればRAは不要だが、固定IPv6アドレスを必要としないサーバーやクライアントPC等のノードはRAなしでは運用が出来ない。
RAもリンクローカルIPv6アドレスのICMPv6を巧みに利用しているので、その動作をフェンス図で見てみよう。

[ RAフェンス図 ]

このようにIPv6通信で必須であるNDとRAはICMPv6とリンクローカルアドレス/リンクスコープマルチキャストに完全依存しているので、間違ってICMPv6を停止してはならない。
ファイアウォール製品などの防御装置でICMPv6を停止しなくでも、OSが持つファイヤウォール機能で、IPv6通信に不要なICMPv6を受け付けないようにすることができるし、手動でICMPv6を停止する場合は、タイプを指定して、必要なICMPv6通信を停止しないように細心の注意が必要だ。

 

Path MTU Discovery

IPv4とIPv6の大きな違いの1つとして、「IPv6は経路途中でパケットのフラグメント(分割)をしない」と言う仕様がある。
つまり、送信元のノードでは、相手までパケットが届くのに必要な最大MTUサイズを知らなくてはならない事になる。
この通信可能な最大MTUサイズを調べるのがPath MTU Discoveryだ。
Path MTU Discoveryは、IPv4でも実装されてるので、IPv6専用と言うわけではないが、IPv6の仕様上、経路でのフラグメントをサポートしない仕様であるゆえに、とても大切な機能だ。

[ Path MTU Discovery ]

RAは、プレフィックスとフラグだけではなくMTU値も通知しているので、送信元のノードはこのMTU値に従って通信を開始するのだが、経路中の中継装置で扱えるMTU値を超えたパケットが到達した場合は、サイズ超過メッセージであるICMPv6 Type:2(Packet Too Big)を送信元に返す。
このメッセージには、MTU値が含まれているので、送信元のノードでパケットサイズを調整して再送をする。

困った事に、RFCでPath MTU Discoveryは必須扱となっていないので、Path MTU Discoveryをサポートしていない中継装置が経路途中に存在することも想定されるので、IPv6の最小MTU単位である1280オクテットをインターネット境界ルーターにセットしておくのも手だ。

 

>> 03 IPv6ネットワーク設計に必要な知識とポリシー実装例

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.