$Date: 2021/03/30 08:21:01 $
RTシリーズは、MLDv1、MLDv2、MLDプロキシの機能を提供します。 MLDv1とMLDv2については、ホスト側とルーター側の双方に対応し、インターフェースごとにホストとルーターの機能を使い分けることができます。 MLDv1はRFC2710、MLDv2はdraft-vida-mld-v2-07.txtに対応します。
MLDプロキシは、下流のインターフェースに存在するリスナーの情報を、上流のインターフェースに中継する機能であり、 draft-ietf-magma-igmp-proxy-04.txtに基づいて実装しています。
マルチキャストは、マルチキャストのルーティングに対応した特別な網で実現されます。マルチキャスト網を構成するルーターは、特定の端末が送信するマルチキャストパケットを複製して、複数の端末に配送します。マルチキャストパケットを送信する端末をソース(source)と呼び、それを受信する端末をリスナー(listener)と呼びます。以下の説明では、マルチキャストパケットを単にパケットと書きます。
ソースが送信するパケットは原則としてすべてのリスナーに届きます。しかし、リスナーによって受信するパケットを変えたければ、リスナーをグループに分けることができます。同じグループに属する端末は同じパケットを受信し、異なるグループに属する端末は異なるパケットを受信します。それぞれのグループには識別子として マルチキャストアドレスが割り当てられます。
パケットのIPヘッダーの終点アドレスには、グループに対応するマルチキャストアドレスが格納されます。網内のルーターは、このマルチキャストアドレスを見て、パケットの転送先のグループを確認します。網内のルーターはグループごとに編成された経路表を持っているので、その経路表にしたがってパケットを配布します。経路表は、通常、 PIM-SM、PIM-DM、DVMRPなどのルーティングプロトコルによって自動的に生成されます。
MLD(Multicast Listener Discovery)の目的は、端末がマルチキャスト網に対して、端末が参加するグループを通知することです。
網内のルーターは端末に対してクエリー(Query) というメッセージを送信します。クエリーを受信した端末は、ルーターに対してレポート(Report)というメッセージを返信します。レポートの中には、端末が参加するグループのマルチキャストアドレスを格納します。レポートを受信したルーターはその情報をルーティングに反映します。
MLDv2では、受信するパケットのソースを制限することができますが、この機能を実現するためにフィルターモード(Filter Mode)と ソースリスト(Source List)を使用します。フィルターモードにはINCLUDEとEXCLUDEがあり、 INCLUDEでは許可するソースを列挙し、 EXCLUDEでは許可しないソースを列挙します。例えば、次の場合には、 2001:x:x:x::1と2001:x:x:x::2をソースとするパケットだけが転送の対象になります。
MLDのメッセージは原則としてルーターを超えることができません。そこで、端末とマルチキャスト網の間にルーターが介在する場合には、ルーターがMLDプロキシの機能を持つ必要があります。 MLDプロキシの機能を持つルーターは、LAN側に対してクエリーを送信し、 LAN側からレポートを受信します。また、そのレポートに含まれる情報をWAN側に転送します。
現在の実装には、下記の制限があります。
次の3つのコマンドを使用します。
MLDプロキシを使う接続方法が一般的です。ネットワークの構成は次のようになります。
マルチキャスト網 | 2001:x:x:x::1 | | LAN2 +-----------+ | ルーター | +-----------+ | LAN1 | ------+--------+---------+---- | | ホスト ホスト
この構成に対応する設定は次のようになります。
# ipv6 lan1 mld router version=2 # ipv6 lan2 mld host version=2
もし、LAN1に接続されているホストがMLDに対応していない場合には、次のように静的にリスナーを登録することができます。
# ipv6 lan1 mld static ff03::1 include 2001:x:x:x::1
MLDの状態を表示するためには、show status ipv6 mldコマンドを実行します。このコマンドの表示例と意味を説明します。
# show status ipv6 mld ↓ルーターに共通な定数の値を表示します。(詳細はRFCなどを参照してください。) VARIABLES Query Interval: 125.0, Query Response Interval: 10.0 LLQI: 1.0, Unsolicited Report Interval: 1.0 ↓インターフェースの名前、設定内容、定数、タイマーの値などを表示します。 ↓ルーターの場合はQuerierかNon-Querierを表示します。 LAN1 (fe80::2a0:deff:fexx:xxxx) mode: router(querier), syslog: off, version: MLDv1 (config: 1) Robust Variable: 2, Startup Query Count: 2 LLQC: 2, LLQT: 2.0, MALI: 260.0 Other Querier Present Timeout: 255.0 Older Version Host Present Timeout: 260.0 Query Interval: 125.0, Startup Query Interval: 31.2 Older Version Querier Present Timer: -.- last received QRV: 0, last received QQI: 0 Query Timer: 119.9 Other Querier Present Timer: -.- ↓リスナーが通知したグループについて、タイマーを表示します。 ff02::1:ffxx:xxxx Compatibility Mode: MLDv1 Older Version Host Present Timer: -.- MLDv1 Group Timer: 259.7 ff02::2:35xx:xxxx Compatibility Mode: MLDv1 Older Version Host Present Timer: -.- MLDv1 Group Timer: 259.7 ↓このインターフェースはホストとして設定されています。 LAN2 (fe80::2a0:deff:fexx:xxxx) mode: host, syslog: on, version: MLDv2 (config: 1,2) Robust Variable: 2, Startup Query Count: 2 LLQC: 2, LLQT: 2.0, MALI: 260.0 Other Querier Present Timeout: 255.0 Older Version Host Present Timeout: 260.0 Query Interval: 125.0, Startup Query Interval: 31.2 Older Version Querier Present Timer: -.- Report Timer: 0.4, Interface Timer: -.- ↓このインターフェースが通知すべきリスナーのグループです。 ff02::1:ffxx:xxxx listener state: EXCLUDE [] (dynamic) INCLUDE [2001:x:x:x::1] (static) ↓複数のlistener state(↑)を集約したものを表示します。 listener state (aggregation): EXCLUDE [] Filter Mode Retrans Count: 2, Multicast Address Timer: -.- retrans source list: [] ff02::2:35xx:xxxx listener state: EXCLUDE [] (dynamic) INCLUDE [2001:x:x:x::1] (static) listener state (aggregation): EXCLUDE [] Filter Mode Retrans Count: 1, Multicast Address Timer: -.- retrans source list: [] ff03::1 listener state: INCLUDE [2001:x:x:x::1, 2001:x:x:x::2] (static) listener state (aggregation): INCLUDE [2001:x:x:x::1, 2001:x:x:x::2] Filter Mode Retrans Count: 0, Multicast Address Timer: -.- retrans source list: [] ↓MLDプロキシの情報です。左から順にDynamic/Static、LAN側のインターフェース、 ↓グループ、フィルターモード、ソースリスト、WAN側のインターフェースを表します。 PROXY INFORMATION D LAN1 ff02::1:ffxx:xxxx EXCLUDE [] LAN2 D LAN1 ff02::2:35xx:xxxx EXCLUDE [] LAN2 S LAN1 ff03::1 INCLUDE [2001:x:x:x::1, 2001:x:x:x::2] LAN2 ↓ルーティングの情報です。WAN側のインターフェースのそれぞれのグループと ↓ソースについて、転送先のLAN側のインターフェースが表示されます。 ↓アスタリスク「*」はデフォルトの経路を示します。 FORWARDING LAN2 ff02::1:ffxx:xxxx * : LAN1 ff02::2:35xx:xxxx * : LAN1 ff03::1 2001:x:x:x::1: LAN1 2001:x:x:x::2: LAN1
MLDに関係するsyslogを下記の表にまとめます。種別欄に★がついているものは、 INFOレベルのsyslogで、それ以外はすべてDEBUGレベルのsyslogです。また、種別欄に▲がついているものは、インターフェースごとに出力が制御されており、 ipv6 INTERFACE mldコマンドのsyslogオプションでonを設定したときだけ表示されます。このオプションはデフォルトではoffになっています。
表中の記号I、G、F、 Sはそれぞれ、インターフェース、グループ、フィルターモード、ソースのリストを表しています。また、Lはリスナーの識別子であり、 staticとdynamicのいずれかを表示します。 staticはipv6 INTERFACE mld staticコマンドの設定に対応し、 dynamicは下流のインターフェースのリスナーから受信したReportに対応します。
IP-SAは、パケットの始点IPアドレスを表します。また、TIMERは、MLDの各種のタイマーの名前を示します。タイマーについては、8.タイマーを参照してください。
表示するメッセージ | 意味 | 種別 |
---|---|---|
initialize interface I mode: MODE | インターフェースを初期化しました。 MODEには、 host(ホスト)かrouter(ルーター)を表示します。 | ★ |
listen multicast (I, G, F, S, L) | ホストのインターフェースで、新しいリスナーを登録しました。 | − |
receive v1 report, stop v1 report timer (I, G) | ホストのインターフェースで、MLDv1のReportを受信しました。 | − |
link-local address changed, initialize I | インターフェースのリンクローカルアドレスが変化したため、 インターフェースを初期化しました。 | − |
discard message from I, IP-SA | MLDメッセージを破棄しました。(場合によっては、 このメッセージの後に破棄した理由が表示されます。) | − |
receive unknown message from I, IP-SA | MLDのHop-by-Hopオプションが指定されているものの、 ICMPヘッダのTypeフィールドが不明でした。 | − |
discard invalid {query, report, done} from I, IP-SA | 不正な内容の{Query, Report, Done} を受信しました。 (場合によっては、このメッセージの後に破棄した理由が表示されます。) | − |
receive {v1, v2} {query, report, done} | {MLDv1, MLDv2}の{Query, Report, Done}を受信しました。 | − |
send {v1, v2} {query, report, done} | {MLDv1, MLDv2}の{Query, Report, Done}を送信しました。 (MLDv2 Reportの場合は、Current State ReportとState Change Reportの 違いも表示されます。) | − |
change compatibility mode (I) to {MLDv1, MLDv2} | インターフェースの互換モードを{MLDv1, MLDv2}に変更しました。 | − |
change state (I) from querier to non-querier, new querier: IP-SA | ルーターのインターフェースの状態が QuerierからNon-Querierに変化しました。 新しいQuerierはIP-SAです。 | − |
change state (I) from non-querier to querier | ルーターのインターフェースの状態が Non-QuerierからQuerierに変化しました。 | − |
change filter mode (I, G) to INCLUDE S | グループのフィルターモードがEXCLUDEからINCLUDEに変化しました。 すなわち、EXCLUDEモードのリスナーが存在しなくなったことを示します。 | − |
change listener state (I, G): F, S -> F, S | ホストのインターフェースで、グループの状態が変化しました。 | ▲ |
schedule report R S | Reportの送信をスケジュールしました。 Rは送信するReportのレコードの種別を示しています。 | ▲ |
set TIMER ... | MLDのタイマーを設定しました。TIMERの部分には、 タイマーの名前が表示されます。 | ▲ |
TIMER expired | MLDのタイマーが満了しました。 TIMERの部分には、タイマーの名前が表示されます。 | ▲ |
select delay (I) ... | MLDで規定された各種の遅延を決定します。この種のsyslogは、 取り得る値の範囲と、実際に乱数で選択された値を示すものです。 | ▲ |
interface timer < delay, don't send report | 乱数で選択した値がInterface Timerよりも小さいために、Reportの 送信を抑制しました。 | ▲ |
remove source (S) from include list (I, G) | ルーターのインターフェースで、 include listからソースSを取り除きました。 | ▲ |
move source (S) from requested list to exclude list (I, G) | ルーターのインターフェースで、 ソースSをrequested listからexclude listへ移しました。 | ▲ |
can't select source address for query (I) | 始点アドレスを選択できず、Queryを送信できません。 例えば、回線が接続されていないときに表示されます。 | ▲ |
タイマーの名前は、RFCやInternet-Draftの表現に基づいていますが、特に名前が定義されていない場合には、独自の名前を採用しています。
名前 | 役割 | ルーター/ホスト | MLDのバージョン |
---|---|---|---|
Report Timer | 状態が変化してからState Change Reportを送信するまでの遅延を計ります。 | ホスト | MLDv2 |
Interface Timer | General Queryを受信してから Current State Reportを送信するまでの遅延を計ります。 | ホスト | MLDv2 |
Multicast Address Timer | MAS/MASS Queryを受信してから Current State Reportを送信するまでの遅延を計ります。 | ホスト | MLDv2 |
V1 Report Timer | Queryを受信してからReportを送信するまでの遅延を計ります。 | ホスト | MLDv1 |
Query Timer | 定期的なQueryの送信間隔を計ります。 | ルーター | MLDv1/MLDv2 |
MAS/MASS Query Timer | MAS/MASS Queryの再送間隔を計ります。 | ルーター | MLDv2 |
Source Timer | リスナーから受信したソースの有効時間を計ります。 このタイマーが満了したら、ソースは無効になります。 | ルーター | MLDv2 |
Filter Timer | EXCLUDEのフィルターモードの有効時間を計ります。 このタイマーが満了したら、 フィルターモードはINCLUDEになります。 | ルーター | MLDv2 |
Other Querier Present Timer | より優先度の高いルーター(Querier)が存在することを示します。 このタイマーが満了したら、自分自身がQuerierになります。 | ルーター | MLDv1/MLDv2 |
Older Version Host Present Timer | 古いバージョンのホストが存在することを示します。 このタイマーが満了したら、互換モードをMLDv2に戻します。 | ルーター | MLDv2 |
V1 Group Timer | リスナーから受信したグループの有効時間を計ります。 このタイマーが満了したら、グループは無効になります。 | ルーター | MLDv1 |
V1 Query Timer | MAS Queryの再送間隔を測ります。 | ルーター | MLDv1 |
Older Version Querier Present Timer | 古いバージョンのルーター(Querier)が存在することを示します。 このタイマーが満了したら、互換モードをMLDv2に戻します。 | ホスト/ルーター | MLDv2 |
Copyright © 2004 YAMAHA CORPORATION. All rights reserved.