マルチキャストルーティングは、はじめのうちはなかなかイメージがわかず、難しく感じると思います。この記事では、よく使われる PIM-SM(PIM Sparse Mode)をベースに、簡単な構成でマルチキャストが届くまでの流れをイメージでつかみます。
- 同じセグメント内なら、マルチキャストはルータなしで届くこと
- ルータをはさむと、FHR と LHR がお互いの場所を知らないという問題
- ランデブーポイント(RP)で配信サーバと受信機を出会わせる仕組み
- RP を経由しない最短経路への切り替え
登場人物
マルチキャストルーティングの登場人物を考えていきます。まず一番大事なのは、マルチキャストを配信する配信サーバと、それを受け取る受信機です。この記事では、配信サーバが 239.1.1.1 宛てにマルチキャストを配信するとします。
同じセグメントの場合
配信サーバと受信機が同じネットワークセグメントにあれば、配信サーバから送ったマルチキャストは、ルータを通らずに受信機まで届きます。
スイッチは、既定ではマルチキャストをブロードキャストと同じように、同じセグメント(ブロードキャストドメイン)のポートに流します。受け取った端末は、自分が受信したいグループのマルチキャストなら受け取り、そうでなければ捨てます。IGMP スヌーピングに対応したスイッチでは、受信を希望した端末のポートにだけ流すこともできます。
配信サーバは、誰がマルチキャストを受信するのかを気にしません。受信機も、配信しているサーバがどれかを意識する必要はありません。同じセグメントなので、配信サーバがマルチキャストを流せば、受信機まで届きます。
ルータをはさむ場合
ところが、配信サーバと受信機の間にルータが入ると、話が変わります。まず用語として、配信サーバにつながるルータをファーストホップルータ(FHR)、受信機につながるルータをラストホップルータ(LHR)と呼びます。
ここで、FHR にも LHR にも問題があります。
| ルータ | 困っていること |
|---|---|
| FHR | 配信サーバからマルチキャストを受け取っても、受信機がどこにいるかわからないので、どこへ転送すればよいかわからない |
| LHR | 受信機から IGMP で「239.1.1.1 を受信したい」と要求を受けても、配信サーバがどこにいるかわからないので、どこへ要求を伝えればよいかわからない |
ランデブーポイントで出会わせる
では、FHR と LHR を出会わせるにはどうすればよいでしょうか。これを解決するのがランデブーポイント(RP)です。
ランデブーは「待ち合わせ」という意味で、RP は配信サーバと受信機が出会う場所です。FHR から見ると、RP に行けばきっと受信機に出会えます。LHR から見ると、RP に行けばきっと配信サーバに出会えます。RP のアドレスは、あらかじめ各ルータに設定しておくなどして、全ルータが知っておきます。
FHR と LHR が RP に向かう
FHR は、マルチキャストの登録(PIM Register)で、配信サーバからのマルチキャストを RP へ送ります。LHR は、RP へマルチキャストへの参加要求(PIM Join)を送ります。
RP を経由して届く
これで、配信サーバからのマルチキャストが、RP を経由して受信機に届きます。
最短経路に切り替える
ただし、この経路では、マルチキャストは RP を経由して遠回りしています。FHR から LHR へ直接届けたほうが、ネットワークとしては最短です。できれば最短経路に切り替えたいところです。
RP を経由してマルチキャストが届いたことで、LHR は配信サーバの IP アドレス(送信元アドレス)がわかります。そこで、さっきは RP に向けて送った参加要求を、今度は配信サーバに向けて直接送ります。
これで、RP を経由しない、最短経路でのマルチキャスト配信ができるようになります。
まとめ
| 段階 | 内容 |
|---|---|
| 同じセグメント | ルータは関係なく、スイッチがマルチキャストを届ける |
| ルータをはさむ | FHR は受信機の場所を、LHR は配信サーバの場所を知らない |
| RP | FHR は PIM Register、LHR は PIM Join で RP に向かい、RP で出会う |
| 最短経路 | 送信元アドレスがわかった LHR が、配信サーバに向けて直接 PIM Join を送る |
実際の PIM-SM の設定と、パケットの中身は次の記事で確認しています。
コメント