【ネットワーク入門】PIM-SMの構築を楽にするAuto-RP機能

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

はじめに

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

今回は、マルチキャストを代表する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項目詳細
1IF名RPのアドレスとして利用するインターフェースを指定
2TTL値宣言する範囲となるTTL値を指定
3group-list <ACL名>Auto-RPを適用するマルチキャストグループをACLで指定
4interval <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項目詳細
1TTL値宣言する範囲となるTTL値を指定

設定を行ったルータは、「RP Candidateの中から最大のIPアドレスを持つルータをRPに選択」します。

RPの選択の過程は、3ステップで実施します。

STEP
RP Announceメッセージの送信(RP候補の宣言)

RP Candidateを設定したルータから「224.0.1.39」宛に、60秒ごとにAnnounceメッセージを送信します。

Announceメッセージに含まれる情報

1:RP候補となるルータのIPアドレス

2:マルチキャストグループ対象(ACL指定)

3:RP優先度

4:ホールドタイム

STEP
RP Discoveryメッセージの送信(RP決定通知)

RP Announceメッセージを受信したRP Agentは、受信したルータのIPアドレスからRPとなるルータを決定します。

決定後は、RP Discoveryメッセージ(224.0.0.40宛)を送信します。

RPは、候補となるIPアドレスの中から一番大きいアドレスを選択する

STEP
RP再判定・維持

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)
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)
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の設定

RP Candidateの設定(Router1・Router3)
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)
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)
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の設定を追加してみます。

RP Agentの設定(Router5)
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)
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のプロセスが走ったことが確認できました。

Debug確認(Router3)
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)
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について、まとめてみました。

マルチキャストシリーズの他の記事を参照頂けると幸いです。

  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次