# IPv6マルチキャスト / MLD

MLD（Multicast Listener Discovery）は、LAN上のマルチキャスト対応ルーターとIPv6ノードがメッセージを交換しあい、LAN上にどのマルチキャストグループのメンバーがいるかを把握するためのプロトコルです。
ルーターはMLDを通じて得た情報をもとに、他のルーターから受け取ったマルチキャストパケットを配下のLANに転送するかどうか判断したり、他のルーターに対して特定グループ宛てのパケットを配送してくれるよう依頼したりします。
IPv6用のマルチキャスト経路制御プロトコル（PIM-SMv6）を使用するときや、スタティックIPv6マルチキャストルーティング機能を使用するときは、MLD機能もあわせて使用します。
以下では、本製品でMLDを使用する場合の設定について解説します。
なお、以下の説明では、IPv6の基本設定は完了しているものとします。VLANの設定については、「L2スイッチング」の「バーチャルLAN」をご覧ください。また、IPv6インターフェースの基本設定については「IPv6」の「IPv6インターフェース」を、静的な経路設定については「IPv6」の「経路制御」を、RIPngについては「IPv6」の「経路制御（RIPng）」を、OSPFv3については「IPv6」の「経路制御（OSPFv3）」をご覧ください。

## 基本設定

通常MLDはマルチキャスト経路制御プロトコル（PIM-SMv6）と組み合わせて使用します。マルチキャストルーティングを行うインターフェースでは、PIM-SMv6とMLDをペアで設定してください。
たとえば、vlan10、vlan20、vlan30の各インターフェース間でPIM-SMv6によるマルチキャストルーティングを行う場合には、ipv6 pim sparse-modeコマンドでPIM-SMv6を有効化するとともに、ipv6 mldコマンドでMLD機能も有効化してください。

    awplus(config)# ipv6 multicast-routing
    awplus(config)# interface vlan10,vlan20,vlan30
    awplus(config-if)# ipv6 pim sparse-mode
    awplus(config-if)# ipv6 mld

vlan10、vlan20、vlan30の各インターフェースでマルチキャストルーティングを無効にする場合は、これらのインターフェースにおいて、PIM-SMv6とMLDの両方を無効化してください。

    awplus(config)# interface vlan10,vlan20,vlan30
    awplus(config-if)# no ipv6 pim sparse-mode
    awplus(config-if)# no ipv6 mld

PIM-SMv6については「IPv6マルチキャスト」の「PIM」をご覧ください。
また、スタティックIPv6マルチキャストルーティングを行う場合も同様に、マルチキャストルーティングを行うすべてのインターフェースでMLDを有効に設定してください。
たとえば、vlan10を上流、vlan20とvlan30を下流とするスタティックなIPv6マルチキャストルーティングを行う場合は、スタティックなマルチキャスト経路を登録するとともに、上下流すべてのインターフェースにおいてMLDを有効化してください。

    awplus(config)# ipv6 multicast-routing
    awplus(config)# ipv6 multicast route 2001:db8:10:10::feed ff1e::beef vlan10 vlan20,vlan30
    awplus(config)# interface vlan10,vlan20,vlan30
    awplus(config-if)# ipv6 mld

スタティックIPv6マルチキャストルーティングについては「IPv6マルチキャスト」の「一般設定」をご覧ください。

### 単独使用時

MLD機能を単独で有効化するには、対象インターフェースでipv6 mldコマンドを実行します。

    awplus(config)# interface vlan1
    awplus(config-if)# ipv6 mld

単独で使用しているMLD機能を無効化するには、対象インターフェースでipv6 mldコマンドをno形式で実行します。なお、同コマンドをno形式で実行すると、MLD機能だけでなく、MLDに関連するすべての機能（MLD Snoopingを含む）の設定が削除され、初期状態に戻るので注意してください。

    awplus(config)# interface vlan1
    awplus(config-if)# no ipv6 mld

### 共通項目

MLDの動作パラメーターを調整する方法や設定を確認する方法は、マルチキャスト経路制御プロトコルと併用する場合でも、単独で使用する場合でも同じです。
使用するMLDのバージョンは、インターフェースごとにipv6 mld versionコマンドで指定します。初期設定はバージョン2です。

    awplus(config)# interface vlan10
    awplus(config-if)# ipv6 mld version 1

グループメンバーをスタティック登録するには、ipv6 mld static-groupコマンドを使います。

    awplus(config)# interface vlan10
    awplus(config-if)# ipv6 mld static-group ff1e::d510 interface port1.0.7

MLDグループメンバーシップの情報は、show ipv6 mld groupsコマンドで確認できます。
インターフェースのMLD設定は、show ipv6 mld interfaceコマンドで確認できます。

## 注意事項

### MLDは最初の63 VLANでのみ使用可能

MLD機能は、システム起動後に作成された最初の63 VLANでのみ使用可能です。
システム起動時には、スタートアップコンフィグ内のvlanコマンドで指定された順序にしたがってVLANが作成されますが、デフォルトVLAN（vlan1）は最初から存在しているため必ず1番目となります。
たとえば、スタートアップコンフィグに次のような記述がある場合を考えます。

    vlan database
     vlan 2-200 state enable

この場合、VLAN作成順序は、つねに存在するデフォルトVLAN（vlan1）が先頭に入るため、vlan1、vlan2、vlan3 ... vlan200 の順となります。
この構成においてMLD機能を有効化できるのは先頭の63 VLAN、すなわち、vlan1 ～ vlan63 だけです。64番目以降の vlan64 ～ vlan200 で MLD機能を有効化しようとするとエラーになります。これは、vlan1 ～ vlan63 で MLD機能を有効化していなくても同じです。
作成順が64番目以降のVLANでMLD機能を有効化したい場合は、スタートアップコンフィグを手で編集し、MLDを有効化したいVLANをvlanコマンドの先頭に記述して再起動してください。
たとえば、前述の構成において、vlan151 ～ vlan200 でMLD機能を有効化したい場合は、スタートアップコンフィグ内のvlanコマンドを次のように編集し、再起動します。

    vlan database
     vlan 151-200,2-150 state enable

この場合、再起動後のVLAN作成順序は、つねに存在するデフォルトVLAN（vlan1）が先頭に入るため、vlan1、vlan151、vlan152 ... vlan200、vlan2、vlan3 ... vlan150 の順となります。
このときMLD機能を有効化できるのは先頭の63 VLAN、すなわち、vlan1、vlan151 ～ vlan200、vlan2 ～ vlan50 だけです。64番目以降の vlan51 ～ vlan150 で MLD機能を有効化しようとするとエラーになります。

### ログメッセージについて

MLD/MLD Snoopingが無効なVLANインターフェースでMLDパケットを受信すると、以下のログが出力されます。
ログレベル（重要度）はinformationalです。

    NSM[1414]: [MLD-DECODE] Socket Read: No MLD-IF for interface