[ネットワーク運用] 第3回 L2アドレスを解決する近隣探索プロトコル 1.IPv6におけるL2アドレス解決 デジタルアドバンテージ 打越 浩幸 |
Page1
Page2
|
前回までは、IPv6アドレスの基本と、IPv6パケットの構造について解説した。今回は、同一ネットワーク・セグメント上に接続されたIPv6ノード同士で、どうやってL2のアドレス(MACアドレスなど)を見つけるかについて見ていく。
IPv6アドレスを MACアドレスに変換するL2アドレス解決
IPv6で通信する場合、ユーザーやアプリケーションではIPv6アドレスを使って通信相手を識別・特定するが(名前を使う場合は、何らかの方法で名前からIPv6アドレスへ変換しておくが、この方法については今後解説)、実際のイーサネットなどのL2(OSI階層モデルでいう第2層のこと)メディアではL2アドレス(イーサネットなどでは「MACアドレス」と呼ばれている。ネットワーク・アダプタごとに割り当てられている6bytesのユニークな数値)を使って通信相手を識別している。そのため、IPv6でデータをほかのノードに送信するためには、そのノードが持つL2アドレスを何らかの方法で調べておき、そのL2アドレスをあて先としてイーサネット・パケットを送信しなければならない。このように、IPv6やIPv4のIPアドレス(L3アドレス)からL2アドレスを求める処理のことを「L2アドレス解決(L2 address resolution)」とか「MACアドレス解決(MAC address resolution)」という。
IPv4の場合は、「ARP(Address Resolution Protocol)」というプロトコルを使って通信相手のIPv4アドレスからそのノードのMACアドレスを求めていた(次の記事参照)。
参考のためにIPv4のARPの動作を簡単にまとめておくと、次のようになっている。
-
あるノードPC1が、通信相手PC2のL2アドレス(MACアドレス)を知りたいとする。PC1は、PC2のL3アドレス(IPアドレス)をARPパケットに埋め込んで、ARP要求パケットをブロードキャスト送信する。
-
ARPのブロードキャストを受信した各ノードは、自分自身のL3アドレスとARPパケット中の要求L3アドレスを比較し、一致していれば自分に対する要求であると判断し、自分自身のL2アドレスをARP応答パケットに埋め込んで、P1へ返信する。
-
PC1は、受信したパケットからPC2のL2アドレスを取り出し、以後、それをあて先とする。
-
一度取得したL3アドレスとL2アドレスの情報は「ARPテーブル」に(デフォルトでは最大10分間)キャッシュしておき、以後は通信相手のL3アドレスをここから取得する。ARPテーブル中に見つからない場合は、上記1〜3の手順を繰り返す。
IPv6の場合もこのARPと似たような仕組みを使っているが、IPv4の場合と違って、IPv6ではICMPv6の「近隣探索(ND:Neighbor Discovery)」機能を使って実現している点が異なる(※)。近隣探索とは、同一リンク(同一のネットワーク・セグメントのこと)上にあるIPv6のノードを見つけることだが、IPv4のARPやルータ発見、リダイレクトなど、ルーティング/L2アドレス解決に関する機能をまとめて整理している。今回は近隣探索のうち、IPv6ルータが存在しない、最もシンプルな形態のIPv6ネットワークにおける探索手順について詳しく見ていこう。IPv6ルータが存在するネットワークや、ドメイン名からIPv6への名前解決も同時に行うようなケースについては次回以降で取り上げる。
※「Neighbor Discovery」の訳語には近隣探索のほか、近隣者発見とか近隣発見などいくつかあるが、本連載ではWindows 7などでの用語に合わせている。 |
ICMPv6の近隣探索(ND)パケットの構造
まず近隣探索で利用されるICMPv6パケットの構造について見ておこう。ICMPv6にはいくつかのメッセージ・タイプ(コマンド)があるが、近隣探索では次のようなパケットが使われる。これはRFC 4861の「Neighbor Discovery for IP version 6 (IPv6)」で定義されている。
近隣探索では次のようなタイプが定義されているが、今回は135と136の2つに注目する。
タイプ | 名前 | 意味 |
133 | Router Solicitation(RS) | 同一リンク上におけるIPv6ルータの探索に使用される。ルータ情報の要求 |
134 | Router Advertisement(RA) | RSに対する応答。ルータは定期的にこのパケットを送信することにより、ほかのIPv6ノードに対してルータやIPv6アドレス情報などを通知する |
135 | Neighbor Solicitation(NS) | 同一リンク上におけるIPv6ノードのL2アドレス解決に使用される。IPv4におけるARP要求に相当 |
136 | Neighbor Advertisement(NA) | NSに対する応答。IPv4におけるARP応答に相当 |
137 | Redirect | より望ましいルーティング先情報の通知。IPv4におけるICMPリダイレクトに相当 |
近隣探索に利用される主なICMPv6メッセージ | ||
ICMPv6にはいくつかのサブコマンド(メッセージ・タイプ)があるが、リンク上でL2アドレス解決したり、ルータを見つけたりするために利用されるものとしては、これら5つがある。今回は135と136の2つに注目する。 |
IPv6における近隣探索
Neighbor SolicitationとNeighbor Advertisementを使った、IPv6におけるL2アドレス解決の様子を次に示す。
IPv6における近隣探索の動作 |
PC1からPC2に対してIPv6で通信を行おうとすると、通信に先立って、PC1はPC2のMACアドレスを入手する必要がある。これをL2アドレス解決という。IPv6では、ICMPv6の近隣探索機能を使ってこれを行う。 |
ここではPC1からPC2に対して、IPv6で通信を行おうとしているとする。PC1がPC2と通信するためには、PC2のMACアドレスが必要である。そこで、最初にPC2に対して近隣探索のNeighbor Solicitationパケットをマルチキャスト送信する。するとPC2はそれに対してNeighbor Advertisementパケット中に自分自身(PC2)のMACアドレスをセットしてユニキャスト通信で返す。これでPC1はPC2のL2アドレス情報を入手できる。
INDEX | ||
[ネットワーク運用]Windows管理者のためのIPv6入門 | ||
第3回 L2アドレスを解決する近隣探索プロトコル | ||
1.IPv6におけるL2アドレス解決 | ||
2.近隣探索の例と近隣キャッシュの操作 | ||
「連載」 |
TechTargetジャパン
- 新しくなったWin8のタスク・マネージャの使い方 (2013/2/15)
Windowsシステムの状態を調査するときにまず最初に使うタスク・マネージャ。新しくなったタスク・マネージャの機能のうちパフォーマンス・タブについて概説 - 大幅に強化された新Hyper-Vの概要 (2013/2/14)
仮想マシンの複製機能やマイグレーション、高機能なネットワークスイッチなど、Hyper-Vの新機能の概要を解説 - 第352話 カオスがここにも (2013/2/12)
やっぱり、複雑になりすぎた関係性を整理するには、絵を描いてみるのが一番だよね - Java Runtime Environmentのバージョンを調べる (2013/2/8)
最近よく聞くJavaランタイム(JRE)の脆弱性。解決するには、どのバージョンがインストール済みか調べる必要がある。64bit版など最新環境での確認方法は?
|
|
キャリアアップ
- - PR -
イベントカレンダー
- - PR -
転職/派遣情報を探す
**先週の人気講座ランキング**
〜 Android編 〜
ホワイトペーパー(TechTargetジャパン)
「ITmedia マーケティング」新着記事
ツイートが100件でもあればそこに答えはある――製品開発とユーザーの声
「ソーシャルメディアサミット 2013」第4部は「ユーザーと共に創るオープンイノベーショ...
第6回 データはアウトプットではなくインプット
Web解析=効果測定、というイメージがあるが、終わった施策の効果を後で調べ、改善の余地...
幼稚園や保育園の子供にバレンタインチョコを持たせない母親は82%〜調査データランキング〜
「調査のチカラ」で人気がある調査データを紹介します。「絶対泣ける! 漫画ベスト10ラン...