はじめに
こんにちは。ネットワークエンジニアの「だいまる」です。
今回は、マルチキャストを代表するPIM-SMで利用される「Auto-RP」について、まとめていきます。
Auto-RPとは?
通常、共有ツリーの根(Root)になるRP(ランデブーポイント)は、手動で設定することになります。
手間がかかる手動設定を自動にするのが「Auto-RP」機能になります。
この「Auto-RP」を学ぶ上で覚えておきたい用語が2つあります。
覚えておきたい用語①:RP Candidate
1つ目に覚えておきたいのは、RP(ランデブーポイント)の候補ルータとなる「RP Candidate」です。
「RP Candidate」は、ルータに以下のコマンドを設定することで、設定した範囲で「私はRPになりたい!」と宣言することになります。
(config)# ip pim send-rp-announce <IF名> scope <TTL値> [group-list <ACL>][interval <seconds>]
| No | 項目 | 詳細 |
|---|---|---|
| 1 | IF名 | RPのアドレスとして利用するインターフェースを指定 |
| 2 | TTL値 | 宣言する範囲となるTTL値を指定 |
| 3 | group-list <ACL名> | Auto-RPを適用するマルチキャストグループをACLで指定 |
| 4 | interval <second> | RP announceメッセージを送信する間隔を指定 |

RP announceは「私がRPになりたい!」と宣言するメッセージ
覚えておきたい用語②:RP Mapping Agent
2つ目に覚えておきたいのは、「RP Mapping Agent」と呼ばれる設定です。
RP Mapping Agentが持つ役割は、「RP Candidateの中からRPを決定する役割を持つルータ」です。
これもRP Mapping Agentにしたいルータに設定する必要があります。
(config)# ip pim send-rp-discover scope <TTL値>
| No | 項目 | 詳細 |
|---|---|---|
| 1 | TTL値 | 宣言する範囲となるTTL値を指定 |
設定を行ったルータは、「RP Candidateの中から最大のIPアドレスを持つルータをRPに選択」します。
RPの選択の過程は、3ステップで実施します。
RP Candidateを設定したルータから「224.0.1.39」宛に、60秒ごとにAnnounceメッセージを送信します。
1:RP候補となるルータのIPアドレス
2:マルチキャストグループ対象(ACL指定)
3:RP優先度
4:ホールドタイム
RP Announceメッセージを受信したRP Agentは、受信したルータのIPアドレスからRPとなるルータを決定します。
決定後は、RP Discoveryメッセージ(224.0.0.40宛)を送信します。
RPは、候補となるIPアドレスの中から一番大きいアドレスを選択する
RP Candidateから送信されるAnnounceメッセージが、ホールド時間内に再度受信できれば、維持され、受信できなければ再判定のプロセスに移ります。
実機で確認してみよう
今回も実機で動作確認をして理解を深めてみましょう。
検証環境
今回も他記事同様に検証環境は以下で実施します。
検証項目
| No | 項目 | 詳細 |
|---|---|---|
| 1 | 基本設定の確認 | Auto-RPの設定方法の確認 |
項目1:基本設定の確認
項目1では、Router1とRouter3を「RP Candidate」、Router5を「RP Agent」と設定します。
最初に設定前の事前確認を行います。
今回の確認コマンドは以下を利用し、Auto-RPとRPの情報について確認します。
show ip pim autorp:Auto-RPの状態を確認
show ip pim rp:RPの状態を確認
今回はRouter1とRouter3の状態を確認していきます。
Router1とRouter3共に、Auto-RPが有効となっていますが、マルチキャストグループ「239.1.1.1」のRPは何も設定されていない点とツリー自体作成されていないことがわかります。
Router1#show ip pim autorp
AutoRP Information:
AutoRP is enabled.
RP Discovery packet MTU is 0.
224.0.1.40 is joined on GigabitEthernet0/1.
PIM AutoRP Statistics: Sent/Received
RP Announce: 0/0, RP Discovery: 0/0
Router1#show ip pim rp
Router1#show ip mroute
IP Multicast Routing Table
(*, 224.0.1.40), 00:01:07/00:02:01, RP 0.0.0.0, flags: DPL
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list: Null
Router3#show ip pim autorp
AutoRP Information:
AutoRP is enabled.
RP Discovery packet MTU is 0.
224.0.1.40 is joined on GigabitEthernet0/1.
PIM AutoRP Statistics: Sent/Received
RP Announce: 0/0, RP Discovery: 0/0
Router3#show ip pim rp
Router3#show ip mroute
IP Multicast Routing Table
(*, 224.0.1.40), 00:03:53/00:02:28, RP 0.0.0.0, flags: DPL
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list: Null
事前確認を終えたら、実際にRouter1とRouter3にRP Candidateの設定を投入します。
Router1にip pim send-rp-announce loopback 0 scope 255の投入時に以下アラート出力
アラート:Must first configure PIM mode on the interface: Loopback0
WorkAround:利用するIFにもPIMの設定
Router1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#ip pim send-rp-announce loopback 0 scope 255
Router1(config)#end
Router3#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router3(config)#ip pim send-rp-announce loopback 0 scope 255
Router3(config)#end
上記設定後の状態を確認したところ、LoopbackにもPIM-SMの設定を追加したため、マルチキャストルーティングテーブルの状態が変化していますが、無視します。
また、RP Candidateの設定を行った影響で、StattisticsのRP AnnounceのSentカウンターが上がっています。
Router3#show ip pim autorp
AutoRP Information:
AutoRP is enabled.
RP Discovery packet MTU is 0.
224.0.1.40 is joined on GigabitEthernet0/1.
PIM AutoRP Statistics: Sent/Received
RP Announce: 8/0, RP Discovery: 0/0
Router3#show ip pim rp
Router3#show ip mroute
IP Multicast Routing Table
(*, 224.0.1.39), 00:01:07/stopped, RP 0.0.0.0, flags: DP
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list: Null
(10.0.3.1, 224.0.1.39), 00:01:07/00:02:51, flags: PT
Incoming interface: Loopback0, RPF nbr 0.0.0.0
Outgoing interface list: Null
(*, 224.0.1.40), 00:15:09/00:02:17, RP 0.0.0.0, flags: DPL
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list: Null
Router3#
RP Candidateの設定を終えたので、RP Agentの設定をRouter5に投入します。
事前確認では、状態はRouter1とRouter3と変わらないと言えます。
Router5#show ip pim autorp
AutoRP Information:
AutoRP is enabled.
RP Discovery packet MTU is 0.
224.0.1.40 is joined on GigabitEthernet0/1.
PIM AutoRP Statistics: Sent/Received
RP Announce: 0/0, RP Discovery: 0/0
Router5#show ip pim rp
Group: 239.1.1.1, RP: 0.0.0.0
では、実際にRouter5にRP Agentの設定を追加してみます。
Router5#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router5(config)#ip pim send-rp-discover scope 255
Router5(config)#end
事後状態を確認したところ、何も変化がない + 「239.1.1.1」に送信してみても自ホスト以外からの返答がない。。。
Router5#show ip pim autorp
AutoRP Information:
AutoRP is enabled.
RP Discovery packet MTU is 0.
224.0.1.40 is joined on GigabitEthernet0/1.
PIM AutoRP Statistics: Sent/Received
RP Announce: 0/0, RP Discovery: 0/0
Router5#show ip pim rp
Group: 239.1.1.1, RP: 0.0.0.0
Sender#ping 239.1.1.1 repeat 100 timeout 1
Type escape sequence to abort.
Sending 100, 100-byte ICMP Echos to 239.1.1.1, timeout is 1 seconds:
Reply to request 0 from 192.168.10.2, 2 ms
Reply to request 1 from 192.168.10.2, 2 ms
Reply to request 2 from 192.168.10.2, 1 ms
原因は、Auto-RPのAnnnouce/Discoveryメッセージを送受信するための設定「ip pim autorp listener」が抜けていました。
この設定を入れた後、Router3のDebug出力上でAuto-RPのプロセスが走ったことが確認できました。
Router3#
*Sep 27 02:20:45.283: PIM(0): Initiating register encapsulation tunnel creation for RP 10.0.1.1
*Sep 27 02:20:45.283: PIM(0): Initial register tunnel creation succeeded for RP 10.0.1.1
*Sep 27 02:20:45.298: PIM(0): pim_reg_tun_comingup Tunnel0 RP 10.0.1.1 previous event 0
*Sep 27 02:20:45.298: PIM(0): pim_ipv4_reg_tun_event_set Tunnel0 RP 10.0.1.1 previous event 0 new event 2
*Sep 27 02:20:45.306: PIM(0): Received v2 Join/Prune on GigabitEthernet0/3 from 10.6.0.2, to us
*Sep 27 02:20:45.306: PIM(0): Join-list: (*, 239.1.1.1), RPT-bit set, WC-bit set, S-bit set
*Sep 27 02:20:45.307: PIM(0): Check RP 10.0.1.1 into the (*, 239.1.1.1) entry
*Sep 27 02:20:45.307: PIM(0): Building Triggered (*,G) Join / (S,G,RP-bit) Prune message for 239.1.1.1
*Sep 27 02:20:45.307: PIM(0): Add GigabitEthernet0/3/10.6.0.2 to (*, 239.1.1.1), Forward state, by PIM *G Join
*Sep 27 02:20:45.307: PIM(0): Building Triggered (*,G) Join / (S,G,RP-bit) Prune message for 239.1.1.1
この時、Router5のパケットキャプチャを取得したので、中身を確認していきます。
以下からも分かる通り、ホールド時間が181秒、RPアドレスは10.0.1.1で送信されていることがわかります。

また、Announceに対し、Discoveryメッセージはmappingメッセージとして送付されていることがわかります。

グループアドレスの部分はマルチキャスト全体がPrefixとなるんですね。

パケットを確認した後は、最初に確認したように「showコマンド」で確認してみます。(代表でRouter3のみ)
Router3#show ip pim autorp
AutoRP Information:
AutoRP is enabled.
RP Discovery packet MTU is 0.
224.0.1.40 is joined on GigabitEthernet0/1.
AutoRP groups over sparse mode interface is enabled
PIM AutoRP Statistics: Sent/Received
RP Announce: 1468/0, RP Discovery: 0/708
##コメント##
RPメッセージの送受信が行われていることがわかります。
Router3#show ip pim rp
Group: 239.1.1.1, RP: 10.0.3.1, next RP-reachable never
##コメント##
RPがRouter3に決まっていることが分かります。
Router3#show ip mroute
IP Multicast Routing Table
##コメント##
黄色の部分で以下のことがわかる
・グループアドレスのRPが決まっていること
・224.0.1.39宛のツリーが生成されている(RP Announceのため)
・224.0.1.40宛のツリーが生成されている(RP Discoveryのため)
(*, 239.1.1.1), 05:49:54/00:03:14, RP 10.0.3.1, flags: S
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
GigabitEthernet0/2, Forward/Sparse, 05:49:42/00:03:14
GigabitEthernet0/3, Forward/Sparse, 05:49:54/00:02:53
(*, 224.0.1.39), 05:50:18/stopped, RP 0.0.0.0, flags: DC
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
GigabitEthernet0/3, Forward/Sparse, 05:50:18/stopped
GigabitEthernet0/2, Forward/Sparse, 05:50:18/stopped
GigabitEthernet0/1, Forward/Sparse, 05:50:18/stopped
(10.0.3.1, 224.0.1.39), 05:49:54/00:02:17, flags: T
Incoming interface: Loopback0, RPF nbr 0.0.0.0
Outgoing interface list:
GigabitEthernet0/1, Forward/Sparse, 05:49:54/stopped, A
GigabitEthernet0/2, Forward/Sparse, 05:49:54/stopped
GigabitEthernet0/3, Prune/Sparse, 00:00:35/00:02:24
(10.0.1.1, 224.0.1.39), 05:49:54/00:01:04, flags: T
Incoming interface: GigabitEthernet0/2, RPF nbr 10.2.0.1
Outgoing interface list:
GigabitEthernet0/1, Forward/Sparse, 05:49:54/stopped, A
GigabitEthernet0/3, Prune/Sparse, 00:01:54/00:01:05
(*, 224.0.1.40), 05:50:22/stopped, RP 0.0.0.0, flags: DCL
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
GigabitEthernet0/3, Forward/Sparse, 05:50:22/stopped
GigabitEthernet0/2, Forward/Sparse, 05:50:22/stopped
GigabitEthernet0/1, Forward/Sparse, 05:50:22/stopped
(10.4.0.2, 224.0.1.40), 05:49:54/00:02:50, flags: LT
Incoming interface: GigabitEthernet0/2, RPF nbr 10.2.0.1
Outgoing interface list:
GigabitEthernet0/1, Prune/Sparse, 00:04:53/00:01:02
GigabitEthernet0/3, Forward/Sparse, 05:49:54/stopped
(10.5.0.2, 224.0.1.40), 05:49:54/00:02:50, flags: LT
Incoming interface: GigabitEthernet0/1, RPF nbr 10.5.0.2
Outgoing interface list:
GigabitEthernet0/2, Forward/Sparse, 05:49:54/stopped
GigabitEthernet0/3, Forward/Sparse, 05:49:54/stopped
Router3#
最後に
今回は、マルチキャストを代表するPIM-SMで利用するAuto-RPについて、まとめてみました。
マルチキャストシリーズの他の記事を参照頂けると幸いです。



コメント