目次
Anycast RPの目的
Anycast RPの目的は、PIM-SMにおいてRPの冗長化と負荷分散を実現することです。
あらためて、RPについて振り返ります。PIM-SMにおいて、マルチキャストグループごとにRPアドレスが必ず必要です。そして、特定のマルチキャストグループのRPアドレスはただ一つです。RPがダウンしてしまうと、ラストホップルータは共有ツリーを作成することができません。また、ファーストホップルータはPIM Registerメッセージを送信できなくなります。RPはPIM-SMのマルチキャストルーティングにおいて非常に重要な役割を果たしています。RPがダウンしてしまうと、PIM-SMではマルチキャストルーティングを正常に行うことができません。そのため、RPの冗長化を考えておくことが重要です。
なお、スイッチオーバーしてしまえば、RPがダウンしていてもマルチキャストパケットをルーティングし続けることができる場合はあります。
RPの冗長化
RPの冗長化は、Auto RP/BSRでRP候補を複数設定することで実現することができます。RPとして選ばれたルータがダウンしても、別のRP候補のルータがRPの役割を引き継ぐことができます。ただし、Auto RP/BSRでのRPの冗長化では、RPを切り替えるのに時間がかかります。
Auto RPでは、RP候補はRP-AnnounceメッセージをRP_ANNOUNCE_INTERVALの間隔で送信します。デフォルトでは、RP_ANNOUNCE_INTERVALは60秒です。そして、MAは定期的なRP-Announceメッセージを受信することで、RP候補が動作していることを確認しています。RP-Announceメッセージで通知されるRP候補の情報は、RP_ANNOUNCE_INTERVALの3倍の制限時間が設けられています。つまり、デフォルトで180秒です。そのため、現在アクティブなRP候補がダウンしてから、新しいRPに切り替えるまでに最大で3分間かかってしまうことになります。
Auto RPでRPの切り替えに要する時間を短くするためには、RP候補の設定のオプションでRP_ANNOUNCE_INTERVALを短く設定します。
(config)#ip pim send-rp-announce <interface> scope <ttl> [group-list <ACL>] [interval < sec >]
<interface> : RPアドレスとしてアドバタイズするインタフェース
<ttl> : RP AnnounceメッセージのTTL値
<ACL> : RPとするマルチキャストグループを特定するためのACL番号
< sec > : RP_ANNOUNCE_INTERVAL
BSRでも、同じような仕組みです。BSRでは、RP候補はC-RP通知メッセージをC-RP-ADV-PERIODの間隔で送信します。C-RP-ADV-PERIODのデフォルトは60秒です。C-RP通知メッセージのRPの情報は、C-RP-ADV-PERIODの2.5倍の制限時間が設けられています。デフォルトでは、150秒です。現在アクティブなRP候補がダウンしてから、新しいRPに切り替わるまで最大で150秒間の時間がかかります。
BSRでRPの切り替え時間を短くするには、RP候補の設定のオプションでC-RP-ADV-PERIODを短くします。
(config)#ip pim rp-candidate <interface> group-list <ACL> [interval < sec >]
<interface> : RPアドレスとしてアドバタイズするインタフェース
<ACL> : RPとするマルチキャストグループを特定するためのACL番号
< sec > : C-RP-ADV-PERIOD
Auto RP/BSRで複数のRP候補を設定して、RPを冗長化しても負荷分散を行うことはできません。RP候補を複数設定しても、アクティブなRPはひとつに決定されるからです。RPの冗長化だけではなく、正常時には複数のRPに負荷分散するためにはAnycast RPを利用します。
Anycastの概要
Anycastは、通信の方式で「1対近く(one-to-nearest)」の通信です。Anycastの通信を行うには、複数のインタフェースに同じアドレスを設定します。つまり、ひとつのアドレスを複数のインタフェースで共有します。この共有しているアドレスをAnycastアドレスと呼びます。
Anycastアドレスを送信先アドレスに指定してパケットを送信すると、送信元から最も近いインタフェースにルーティングされます。「近い」というのは、ネットワーク上で利用しているルーティングプロトコルのメトリックによって判断されます。
Anycastの通信では正常時に、Anycastアドレスを共有しているインタフェースで負荷分散を行います。Anycastアドレスを共有しているインタフェースのひとつに障害が発生すると、ユニキャストルーティングプロトコルによってAnycastアドレスへ到達するためのルート情報が変更されます。つまり、Anycastアドレスを共有している別のインタフェースへ切り替えることができます。
Anycast RPの仕組み
このようなAnycastの仕組みをRPの冗長化と負荷分散に応用した機能がAnycast RPです。複数のRPにAnycastアドレスを設定します。つまり、同じIPアドレスを複数のRPに設定します。その他のルータには、複数のRPに設定したAnycastアドレスをRPアドレスとして設定します。RPアドレスの設定は、スタティックでもAuto RP/BSRのダイナミックでもどちらでも構いません。
Anycast RPの概要を示したのが次の図です。
RP1とRP2で1.1.1.1というIPアドレスを共有しています。1.1.1.1がAnycastアドレスです。マルチキャストネットワーク内のルータは1.1.1.1をRPアドレスとして設定します。ソースに直接接続されているFHRは、ソースからのマルチキャストパケットをRP1へPIM Registerメッセージでカプセル化して転送します。FHRから1.1.1.1のAnycastアドレスの最も近いインタフェースはRP1だからです。そして、レシーバが現れるとLHRはPIM JoinメッセージをRP2の方向へ送信して、共有ツリーを作成します。LHRから1.1.1.1の最も近いインタフェースはRP2になるためです。このようにして、RP1とRP2でRPの役割を負荷分散することができます。
MSDP
Anycast RPでマルチキャストパケットのルーティングを考えると、問題があります。それは、通常のPIM-SMの仕組みでは複数のRP間でマルチキャストパケットを転送することができないことです。
そこで、複数のRP間でマルチキャストパケットを転送するために、MSDP(Multicast Source Discovery Protocol)を利用します。MSDPは、本来、
異なるAS間でマルチキャストパケットを転送するためのプロトコルです。異なるASのRP間でMSDPピアを確立します。マルチキャストパケットを別のASに転送するときには、MSDPピアである転送先のASのRPへマルチキャストソースの情報を通知します。そのためのメッセージがSA(Source Active)メッセージです。また、マルチキャストパケットをSAメッセージにカプセル化して、別のASのRPへ転送することもできます。
Anycast RPでは、MSDPのSAメッセージを利用して複数のRP間でマルチキャストパケットを転送できるようにします。そのため、複数のRP間でMSDPピアの設定を行います。
Anycast RPでのマルチキャストパケットの転送の様子を表したのが次の図です。
この図では、すでに送信元ツリーや共有ツリーは作成されているものとしています。ソースから送信されたマルチキャストパケットは、送信元ツリーにしたがってRP1までマルチキャストパケットのままルーティングされていきます。RP1では、マルチキャストパケットをMSDP SAメッセージでカプセル化してRP2へ転送します。RP2は、SAメッセージのカプセル化を解除して、マルチキャストパケットを共有ツリーにしたがってレシーバまでルーティングします。
SAメッセージに毎回マルチキャストパケットをカプセル化すると大きな負荷がかかります。そのため、SAメッセージにカプセル化するのは1つ目のマルチキャストパケットだけです。マルチキャストパケットのままルーティングできるようにSAメッセージを受信したRP2は送信元ツリーに参加します。SAメッセージによってソースのIPアドレスがわかるので、PIM(S,G)Joinメッセージを送信して送信元ツリーに参加します。
RP2が送信元ツリーに参加すれば、マルチキャストパケットのままソースからレシーバまでルーティングができるようになります。
IPマルチキャストの仕組み
- ユニキャスト/ブロードキャスト/マルチキャストの振り返り
- IPマルチキャストの用途 ~同じデータの同報~
- マルチキャストグループへの参加 ~マルチキャストデータを受信できるようにする~
- マルチキャストアドレス ~レイヤ3とレイヤ2のマルチキャストアドレス~
- IGMPの概要 ~マルチキャストグループへの参加を通知~
- IGMPの仕組み
- IGMPの設定と確認コマンド
- IGMPスヌーピング
- マルチキャストルーティングの概要
- ディストリビューションツリー
- RPFチェック
- PIM-DMの仕組み
- PIM-DMの設定と確認コマンド
- PIM-SMの仕組み ~ディストリビューションツリー作成~
- PIM-SMの仕組み ~ディストリビューションツリー作成例~
- PIM-SMの設定と確認コマンド
- PIM-SM ダイナミックなRPの設定 ~Auto RP/BSRの概要~
- PIM-SM AutoRPの設定例
- PIM-SM BSRの設定例
- Bidirectional PIMの設定と確認コマンド
- PIM SSMの設定と確認コマンド
- PIM-SMの設定演習 [スタティックRP]
- PIM-SMの設定演習 [Auto RP]
- PIM-SMの設定演習 [BSR]
- PIM-SMの設定演習 [Bidirectional PIM]
- PIM-SMの設定演習 [SSM]
- PIM-SMの設定演習 [トラブルシュート]
- Anycast RP ~RPの負荷分散~
- Anycast RPの設定と確認コマンド
- Anycast RPの設定例
- マルチキャストパケットの転送経路の制御 ~ip mrouteコマンド~
- ip multicast rate-limitコマンド ~マルチキャストパケットのレート制限~
- ip multicast rate-limitコマンドの設定例
- IGMPレポートの制限
- PIM-SM 設定ミスの切り分けと修正 Part1
- PIM-SM 設定ミスの切り分けと修正 Part2
- PIM-SM 設定ミスの切り分けと修正 Part3