【ネットワーク入門】マルチキャスト(MLD)について

  • URLをコピーしました!
目次

はじめに

こんにちは。ネットワークエンジニアの「だいまる」です。

前回まではマルチキャストの「一般編」や「PIM-SM」についてまとめてきました。

今回は、マルチキャストシリーズの続編である「MLD」についてまとめていきたいと思います。

MLD(Multicast Listener Discovery)とは

まずはじめに、MLD(Multicast Listener Discovery)とは何か?を説明したいと思います。

MLDとは、「IPv6 マルチキャストで利用するIPv4のIGMP該当するプロトコル」になります。

MLDv1とMLDv2の2つのバージョン

このMLDには、「MLDv1」と「MLDv2」の2つのバージョンが存在します。

これら2つのバージョンの違いは、MLDv1はIGMPv2MLDv2はIGMPv3に該当するような違いがあるためです。

バージョンIPv4の該当プロトコル
MLDv1IGMPv2に該当
MLDv2IGMPv3に該当

MLDを構成する4つのメッセージ

MLDには、4つのメッセージがあります。

長々と文章に書いてもわかりづらくなると思うので、メッセージ各種の説明は以下の表にまとめます。

メッセージタイプ用途
Query131Reportメッセージに対する応答
Report132マルチキャストグループへの参加・維持を要望する
Done133マルチキャストグループからの離脱時に利用
Report(MLDv2限定)143マルチキャストグループへの参加・維持・離脱で利用
 ・Current State:Queryの応答に利用する状態
 ・State Change:グループへの参加・離脱を通知する状態

ここからはMLDの仕組みを理解しよう!

Step1:MLDv1の仕組み

この章では、MLDv1のマルチキャストグループへの参加、維持、離脱の動作について説明します。

Step1-1:マルチキャストグループへの参加

マルチキャストグループへの参加は、「参加したいグループのマルチキャストアドレスを宛先としReportメッセージを送信」します。

Step1-2:マルチキャストグループ参加維持

マルチキャストグループの参加維持は、ラストホップルータが宛先FF02::1のQueryメッセージを送信し、受信者がReportメッセージを応答することで参加が維持されます。

この時、マルチキャストグループに所属する全ルータに対し送信する「General Query」マルチキャストグループの中の特定ルータに対し送信する「Specific Query」2種類があります。

Step1-3:マルチキャストグループからの離脱

マルチキャストグループから離脱するためには、「FF02::2宛のDoneメッセージを受信者からラストホップルータに送信」します。

このDoneメッセージを受信したルータは、「参加維持のためにラストホップルータが送信するQueryメッセージに対する応答がなくなることでグループの離脱が確定」します。

Step2:MLDv2の仕組み

次にMLDv2の参加、維持、離脱の仕組みについて記載していきます。

Step2-1:マルチキャストグループへの参加

マルチキャストグループに関する仕組みは、基本的にMLDv1と同様になりますが、メッセージの宛先が異なります。

その宛先は「FF02::16」になり、先程の表の一番下にあった「State Change Report」として送信します。

このメッセージの送信には、送信元アドレスを指定できる「ALLOW_NEW_RESOURCE」というタイプがあります。

送信元の指定がない場合は、「CHANGE_TO_EXCLUDE」というタイプを利用し送信することになります。

タイプ用途
ALLOW_NEW_RESOURCE送信者となる送信元アドレスを指定する
CHANGE_TO_EXCLUDE送信者となる送信元アドレスを指定しない

Step2-2:マルチキャストグループ参加の維持

マルチキャストグループ参加維持は、ラストホップルータ(LHR)から受信者に対しQueryメッセージを送信し、応答としてReportメッセージの「Current State Report」を送信することでマルチキャストグループへの参加を維持します。

このメッセージにも送信元アドレスの指定ができる「MODE_IS_INCLUDE」未指定の「MODE_IS_EXCLUDE」の2種類があります。

タイプ用途
MODE_IS_INCLUDE送信者の送信元アドレスを指定する場合
MODE_IS_EXCLUDE送信者となる送信元アドレスを指定しない場合

Step2-3:マルチキャストグループからの離脱

マルチキャストグループからの離脱は、MLDv1とは異なり、MLDv2のReportメッセージ(State Change)を「FF02::16」宛に送信し、ラストホップルータ(LHR)がQueryメッセージを送信し、応答がないことで離脱となります。

タイプ用途
BLOCK_IS_SOURCES送信者の送信元アドレスを指定する場合
CHANGE_TO_INCLUDE_MODE送信者となる送信元アドレスを指定しない場合

動作確認を実機でしてみよう!

今回の動作確認では、MLDv2の送信元アドレスの指定がないパターンで確認しました。

また、動作確認を実施した構成は、以下の図の通りとなります。

動作確認①:マルチキャストグループへの参加

MLDによるマルチキャストグループへの参加は、Receiver3のInterface設定配下に以下の設定が必要となります。

(config-if)# ipv6 mld join-group <マルチキャストグループアドレス>

今回は、Receiver4に設定した際の動作を確認します。

Receiver4#conf t
Receiver4(config)#interface gigabitEthernet 0/0
Receiver4(config-if)#ipv6 mld join-group ff08::1111

設定後のDebug Logを見てみるとしっかり参加していることがわかります。

*Feb 10 11:40:20.383: IPv6 PIM: (*,FF08::1111) Processing Periodic Join-Prune timer
*Feb 10 11:40:20.383: IPv6 PIM: (*,FF08::1111) J/P processing
*Feb 10 11:40:20.383: IPv6 PIM: (*,FF08::1111) Periodic J/P scheduled in 60 secs. Exact schedule time including jitter is: 59502 msec
*Feb 10 11:40:20.383: IPv6 PIM: (*,FF08::1111) J/P adding Join on GigabitEthernet0/0
*Feb 10 11:40:20.383: IPv6 PIM: Sending J/P message for neighbor FE80::2 on GigabitEthernet0/0 for 1 groups
*Feb 10 11:40:38.183: IPv6 PIM: Supressing multicast packets on loopback interface

この時のパケットの中身を見てみましょう。

想定通り、「FF02::16」を宛先としたメッセージがタイプ143で(Exclude)で送信していることがわかります。

動作確認②:マルチキャストグループ参加維持

マルチキャストグループ参加維持のために送信されるReportメッセージとQueryメッセージを見てみます。

Queryメッセージ
Reportメッセージ

動作確認③:マルチキャストグループからの離脱

マルチキャストグループからの離脱時のパケットを見ていきましょう。

この時も「CHANGE_TO_INCLUDE」がしっかりと利用されていることがわかります。

最後に

今回は、IPv6マルチキャストの技術の1つである「MLD」についてまとめてみました。

マルチキャストシリーズは、一旦これで終了としたいと思いますが、今後勉強したプロトコル等でてきた場合は続編として投稿したいと思います。

また、今後読んでみたい本と記事一覧を載せておきます。もし読んだ方がいれば感想を教えていただけるとありがたいです。

  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次