■IPv6マルチキャストルーティング
IPv4でもIPv6でもマルチキャストの基本的な概念に大きな違いはありません。但しIPv6ではマルチキャストルータ-ホスト間でMLDと呼ばれるプロトコルが利用されます。このMLDがICMPv6を利用します。
マルチキャストを構成するためには複数のプロトコルが動作します。それらがどういった箇所で使われるのか整理したのが下記です。最初にあげられるIPv4との大きな違いはPIM-DMがIPv6ではサポートされていません。
■MLDv1
MLDv1はIPv4のIGMPv2に該当します。以下の3種類のメッセージが定義されておりICMPv6が利用されます。
・Multicast listener query ICMPタイプ130
このメッセージはルータがリスナーに対して受信を希望するマルチキャストグループが存在するかどうかを問い合わせるために使用されます。リスナーを探す方法は2種類あり、general query と address specific queryです。general query は”FF02::1″に送信することでリンクローカルスコープ内に存在するリスナーを検出することが可能です。address specific queryはマルチキャストアドレスをセットしqueryをリンク上に送信することで特定のマルチキャストアドレスに対するリスナーを検出できます。
・Multicast listener report ICMPタイプ131
このメッセージはリスナーがマルチキャストの受信を希望するとき希望するマルチキャストグループをルータに通知します。クエリの応答にも利用されます。
・Multicast listener done ICMPタイプ132
このメッセージはリスナーがマルチキャストの受信が不要になったときに送信されます。リンクローカルスコープのFF02::2宛てに送信されます。
■MLDv2
MLDv2はIPv4のIGMPv3に相当します。MLDv1にPIM-SSMに対応するための機能拡張を施したのがMLDv2です。MLDv2はMLDv1と互換性があります。このため現在ではMLDv2が主流となっています。MLDv2には以下の2種類のメッセージが定義されています。
・Multicast listener query ICMPタイプ130
このメッセージはMLDv1のときと同様の役割です。
・Multicast listener report ICMPタイプ143
これもMLDv1のときと同様の役割と同じです。追加された機能として特定の送信元アドレスから送信されたパケットのみ ( または特定の送信元アドレスを除くアドレスから送信されたパケットのみ ) を選択して受信することができるようになりました。PIM-SSMの実行時にはこの機能が利用されます。またMLDv2ではMLDv1のMulticast listener doneが廃止されdoneが提供していた機能はこのreportが包括します。
■IPv6マルチキャストアドレス
IPv6におけるマルチキャストのアドレスプレフィックスは以下のようになります。
FF00::/8
マルチキャストアドレスの中にはスコープフィールドという領域があります。
このスコープフィールドの4bitを操作することで同一拠点内への一斉同報や特定セグメント内での映像配信といったように配信範囲の制御を簡単に行うことができます。一般的によく使われる5つのスコープを以下に示します。
名称 | 送信先 | 例 |
リンクローカルスコープ ( ブロードキャストの代替 ) |
FF02::101 | 同一セグメント上で稼働している全てのノードに送信します。 |
サイトローカルスコープ | FF05::101 | 同一拠点内で稼働しているノードに送信します。 |
組織ローカルスコープ | FF08::101 | 同一組織内で稼働しているノードに送信します。 |
グローバルスコープ | FF0E:101 | インターネット上で稼働している全てのノードに送信します。 |
IPv4にもスコープの概念は存在しますのでIPv4との比較を以下にまとめます。
マルチキャストグループ | IPv4 | IPv6 |
リンクローカルスコープ | ||
同一リンク上の全ノード | 224.0.0.1 | FF02::1 |
同一リンク上の全ルータ | 224.0.0.2 | FF02::2 |
同一リンク上の全OSPFルータ | 224.0.0.5 | FF02::5 |
同一リンク上の全OSPF DR | 224.0.0.6 | FF02::6 |
RIP | 224.0.0.9 | FF02::9 |
EIGRP | 224.0.0.10 | FF02::A |
DHCPサーバ/リレーエージェント | 224.0.0.12 | FF02::1:2 |
PIM | 224.0.0.13 | FF02::D |
サイトローカルスコープ | ||
サイト内の全ルータ | – | FF05::2 |
サイト内の全DHCPサーバ | – | FF05::1:3 |
組織ローカルスコープ | ||
組織内でマルチキャストを使用するノード | 239.192.0.0 | FF08:: |
グローバルスコープ | ||
インターネット上でマルチキャストを使用するノード | 224.0.1.0~ 238.255.255.255 |
FF0E:: |
■IPv6マルチキャストの設定
IPv6マルチキャストではPIM-DMがサポートされません。デフォルトではPIM-SMが有効となりますのでPIMの有効化とRPの指定が必須となります。IPv6マルチキャストルーティングを有効にするには以下のコマンドを実施します。
ipv6 multicast-routing |
IPv4ではインターフェイスごとにPIMを有効にする必要がありましたが、IPv6では上記コマンドを実施すると全インターフェイスで自動で有効となります。
# show ipv6 pim interface Interface PIM Nbr Hello DR Count Intvl Prior VoIP-Null0 off 0 30 1 Address: :: DR : not elected FastEthernet0/0 on 0 30 1 Address: FE80::1 DR : this system FastEthernet0/1 on 1 30 1 Address: FE80::1 DR : FE80::2 Tunnel0 off 0 30 1 Address: FE80::C601:11FF:FEA4:0 DR : not elected |
特定のインターフェイスで無効にしたい場合は以下のコマンドを実施します。
interface FastEthernet0/0 no ipv6 pim |
RPを指定する場合は以下のコマンドを実施します。
ipv6 pim rp-address 2001:DB8:0:1::1 |
また、マルチキャストルーティングを有効とするとTunnelインターフェイスが自動で作成されます。これはIPv6のマルチキャスト送信元がRPにRegisterメッセージを送信する際に使用されます。
# show ipv6 pim tunnel Tunnel0* Type : PIM Encap RP : Embedded RP Tunnel Source: 2001:DB8:0:1::1 Tunnel1* Type : PIM Encap RP : 2001:DB8:0:1::1* Source: 2001:DB8:0:1::1 Tunnel2* Type : PIM Decap RP : 2001:DB8:0:1::1* Source: - |
IPv6のマルチキャストルーティングテーブルを表示するには以下のコマンドを実行します。
# show ipv6 mroute |