【ネットワーク入門】PIM-SMの代表的な機能 スイッチオーバ・Auto-RP

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

はじめに

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

今回は、前回の記事で紹介した「【ネットワーク入門】マルチキャストの代表的なプロトコル(PIM-SM)について」に続いたマルチキャストの機能をまとめたいと思います。

この記事では、前回の記事で触れた「PIM-SM」に関わる2つの機能スイッチオーバ機能」と「Auto-RP」を説明したいと思います。

常に最短経路を!スイッチオーバ機能

スイッチオーバ機能とは?

スイッチオーバ機能とは、「RP(ランデブーポイント)を経由しない最短経路を利用する機能」になります。

ディストリビューションツリーを作成するPIM-SMは、RP(ランデブーポイント)の経由が基本となります。

そのため、送信者(Sender)から受信者(Receiver)までの経路が最短にならないケースが多々存在します。

このスイッチオーバを適用するためには、「SPT(Shortest Path Tree) threshold値を超過した場合に適用」されます。

Cisco IOSのSPT thresholdは「デフォルトで0」となっているため、常にスイッチオーバが適用されます。

そのため、スイッチオーバを無効にするためには以下コマンドを適用する必要があります。

(config)# ip pim spt-threshold infinity

このConfigによりSPT thresholdが最大になり、超過することはなくなるため、無効化されます。

ちなみにこのConfigに関するオプションは以下になります。

(config)# ip pim spt-threshold {kbps| infinity}[group-list access-list]

今更だけどPIM-SMの8種類のエントリフラグ

PIM-SMで利用するエントリフラグ全部で8種類存在し、「show ip mroute」で状態を確認することができます。

Flag意味説明
SSparse(*,G)エントリがPIM-SMの共有ツリーであることを示す
CConnected直接接続しているレシーバの存在を示す
LLocal ルータのIFにレシーバが存在することを示す
PPrunedOILにある全IFがPrune状態
TSPT-bit Set1つ以上のマルチキャストを転送
FRegister-FlagSenderのFHRデPIM registerメッセージを送信
RRP-bit Flagスイッチオーバ機能により不要となったルータ
JJoin SPTスイッチオーバ機能のため、Jフラグをつける
エントリフラグ一覧表

スイッチオーバの動作確認をしてみよう!

この章では、「スイッチオーバの動作確認」を行います。

構成は前回と同様になります。

マルチキャスト受信者(Receiver)※ユーザ 今回はIOS Routerを代替として利用
マルチキャスト受信者(Receiver)※ユーザ 今回はIOS Routerを代替として利用
送信元(Sender)
送信元(Sender)
RP(ランデブーポイント)
RP(ランデブーポイント)
Router1
Router1
Router2
Router2
Router3
Router3
L2SW1
L2SW1
Gi0/1
Gi0/1
Gi0/1
Gi0/1
Gi0/2
Gi0/2
Gi0/2
Gi0/2
Gi0/1
Gi0/1
Gi0/1
Gi0/1
Gi0/3
Gi0/3
Gi0/3
Gi0/3
Gi0/2
Gi0/2
Gi0/3
Gi0/3
Gi0/2
Gi0/2
Gi0/1
Gi0/1
Gi0/2
Gi0/2
Gi0/2
Gi0/2
Gi0/1
Gi0/1
Text is not SVG – cannot display

Step1: 事前確認

最初は、スイッチオーバ機能の適用前の状態を確認していきます。

「show ip mroute」で確認すると、Jフラグがついてない状態となっています。

Router3#show ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
       L - Local, P - Pruned, R - RP-bit set, F - Register flag,
       T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet,
       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
       U - URD, I - Received Source Specific Host Report, 
       Z - Multicast Tunnel, z - MDT-data group sender, 
       Y - Joined MDT-data group, y - Sending to MDT-data group, 
       G - Received BGP C-Mroute, g - Sent BGP C-Mroute, 
       N - Received BGP Shared-Tree Prune, n - BGP C-Mroute suppressed, 
       Q - Received BGP S-A Route, q - Sent BGP S-A Route, 
       V - RD & Vector, v - Vector, p - PIM Joins on route, 
       x - VxLAN group
Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 239.1.1.5), 00:01:57/00:02:05, RP 10.1.0.2, flags: SCL
  Incoming interface: GigabitEthernet0/0, RPF nbr 192.168.1.1
  Outgoing interface list:
    GigabitEthernet0/2, Forward/Sparse, 00:01:54/00:02:05

(*, 224.0.1.40), 00:01:55/00:02:58, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    GigabitEthernet0/0, Forward/Sparse, 00:01:55/00:02:58

Step2:スイッチオーバ機能の適用

Step2では、事前に追加していた「ip pim spt-threshold infinity」を削除し、スイッチオーバを適用します。

Router3#sh running-config | in ip pim spt-
ip pim spt-threshold infinity
Router3#conf t
Router3(config)#no ip pim spt-threshold infinity 
Router3(config)#end
Router3#sh running-config | in ip pim spt-
Router3#

Step3:事後確認

ip pim spt-threshold infinity」を削除し、スイッチオーバ機能を適用した後の状態を「show ip mroute」で確認します。

Router3#show ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
       L - Local, P - Pruned, R - RP-bit set, F - Register flag,
       T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet,
       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
       U - URD, I - Received Source Specific Host Report, 
       Z - Multicast Tunnel, z - MDT-data group sender, 
       Y - Joined MDT-data group, y - Sending to MDT-data group, 
       G - Received BGP C-Mroute, g - Sent BGP C-Mroute, 
       N - Received BGP Shared-Tree Prune, n - BGP C-Mroute suppressed, 
       Q - Received BGP S-A Route, q - Sent BGP S-A Route, 
       V - RD & Vector, v - Vector, p - PIM Joins on route, 
       x - VxLAN group
Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 239.1.1.5), 00:05:06/00:02:57, RP 10.1.0.2, flags: SJCL
  Incoming interface: GigabitEthernet0/0, RPF nbr 192.168.1.1
  Outgoing interface list:
    GigabitEthernet0/2, Forward/Sparse, 00:05:04/00:02:57

(*, 224.0.1.40), 00:05:05/00:02:41, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    GigabitEthernet0/0, Forward/Sparse, 00:05:05/00:02:41
ABEMA

手動設定はうんざり。。。そんな時は「AutoRP」

RP(ランデブーポイント)を手動で設定するのは、手間がかかりますよね。。。。

そんな時は、RP(ランデブーポイント)を自動で設定する「Auto RP」を利用すると負担が軽くなります。

「Auto RP」を利用する前にいくつか用語について、説明したいと思います。

①:RP Candidate

1つ目は、RP(ランデブーポイント)の候補ルータとなる「RP Candidate」です。

設定コマンドは以下の通り、Interface名とTTL値を設定することで自分が候補となりたいと宣言する範囲を指定できます。

(config)# ip pim send-rp-announce <IF名> scope <TTL値> [group-list <ACL>][interval <seconds>]

設定を行ったルータは、RP(ランデブーポイント)の選定に参加する「RP annnounce」を224.0.1.39宛に60秒ごとに送信します。

②:RP Mapping Agent

RP(ランデブーポイント)の候補となる「RP Candidate」の設定後は、「RP Mapping Agent」の設定を行います。

このRP Mapping Agentとは「RP Candidateの中からRPを決定する役割を持つルータ」です。

設定コマンドは以下の通りとなります。

(config)# ip pim send-rp-discover scope <TTL値>

この設定を行なったルータは、把握しているRP Candidateから「最大のIPアドレスを持ったルータ」をRP(ランデブーポイント)に選択します。

RP(ランデブーポイント)選択後は、「224.0.1.40宛にRP Discoveryメッセージを送信することで決定を通知」します。

一方、障害やメンテナンスによるRP(ランデブーポイント)の再判定「RP announceメッセージ」を3回受信しなかった場合に再計算となります。

概要を理解した後は実機確認のお時間です!

今回の検証構成は、SwitchOverの時とは少し変更しました。

マルチキャスト
受信者
葉(Leaf)
マルチキャスト受信者葉(Leaf)…
マルチキャスト
受信者
葉(Leaf)
マルチキャスト受信者葉(Leaf)…
マルチキャスト
受信者
葉(Leaf)
マルチキャスト受信者葉(Leaf)…
マルチキャスト
受信者
葉(Leaf)
マルチキャスト受信者葉(Leaf)…
マルチキャスト
送信元
根(Root)
マルチキャスト送信元根(Root)…
Router1
(RP Candidate)
Router1…
Router2
(RP Agent)
Router2…
Router3
(RP Candidate)
Router3…
Router4
Router4
L2SW
L2SW
Text is not SVG – cannot display

Router2をRP Agentとし、Router1とRouter3をRP Candidateとします。

今回は以下の2パターンを確認します。

パターンNoTTL設定値想定動作
11Router1がRPになる
2255Router2-Router3間にリンク追加
Router3がRPになる
→IPアドレスが大きいため

検証前の下準備(RP Candidate)

まずは、Router1とRouter3にRP Candidateの設定を追加していきましょう。(ログはR1のみ)

Router1#show running-config interface loopback 0
interface Loopback0
 ip address 10.0.0.1 255.255.255.255
 ip pim sparse-mode
end

Router1#conf t
Router1(config)#ip pim send-rp-announce loopback 0 scope 255
Router1(config)#end

Router1#show run | in pim
ip pim send-rp-announce Loopback0 scope 255

次にRouter2にRP Agentの設定を追加します。

パターン①の動作検証

Router2にRP Agentの設定を行う前にRouter1〜3の「show ip mroute」の状態を見てみましょう。

Router1
Router1#show ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
       L - Local, P - Pruned, R - RP-bit set, F - Register flag,
       T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet,
       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
       U - URD, I - Received Source Specific Host Report,
       Z - Multicast Tunnel, z - MDT-data group sender,
       Y - Joined MDT-data group, y - Sending to MDT-data group,
       G - Received BGP C-Mroute, g - Sent BGP C-Mroute,
       N - Received BGP Shared-Tree Prune, n - BGP C-Mroute suppressed,
       Q - Received BGP S-A Route, q - Sent BGP S-A Route,
       V - RD & Vector, v - Vector, p - PIM Joins on route,
       x - VxLAN group
Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 224.0.1.39), 00:12:23/stopped, RP 0.0.0.0, flags: DP
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list: Null

(10.0.0.1, 224.0.1.39), 00:12:23/00:02:36, flags: PT
  Incoming interface: Loopback0, RPF nbr 0.0.0.0
  Outgoing interface list: Null

(*, 224.0.1.40), 00:20:21/00:02:43, RP 0.0.0.0, flags: DPL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list: Null
Router2
Router2#show ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
       L - Local, P - Pruned, R - RP-bit set, F - Register flag,
       T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet,
       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
       U - URD, I - Received Source Specific Host Report,
       Z - Multicast Tunnel, z - MDT-data group sender,
       Y - Joined MDT-data group, y - Sending to MDT-data group,
       G - Received BGP C-Mroute, g - Sent BGP C-Mroute,
       N - Received BGP Shared-Tree Prune, n - BGP C-Mroute suppressed,
       Q - Received BGP S-A Route, q - Sent BGP S-A Route,
       V - RD & Vector, v - Vector, p - PIM Joins on route,
       x - VxLAN group
Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 239.10.10.1), 00:20:30/00:02:37, RP 0.0.0.0, flags: SJC
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    GigabitEthernet0/3, Forward/Sparse, 00:20:30/00:02:37

(*, 224.0.1.40), 00:21:31/00:02:32, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    GigabitEthernet0/1, Forward/Sparse, 00:21:30/00:02:32
Router3
Router3#show ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
       L - Local, P - Pruned, R - RP-bit set, F - Register flag,
       T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet,
       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
       U - URD, I - Received Source Specific Host Report,
       Z - Multicast Tunnel, z - MDT-data group sender,
       Y - Joined MDT-data group, y - Sending to MDT-data group,
       G - Received BGP C-Mroute, g - Sent BGP C-Mroute,
       N - Received BGP Shared-Tree Prune, n - BGP C-Mroute suppressed,
       Q - Received BGP S-A Route, q - Sent BGP S-A Route,
       V - RD & Vector, v - Vector, p - PIM Joins on route,
       x - VxLAN group
Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 224.0.1.39), 00:03:52/stopped, RP 0.0.0.0, flags: DP
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list: Null

(10.0.0.3, 224.0.1.39), 00:03:52/00:02:07, flags: PT
  Incoming interface: Loopback0, RPF nbr 0.0.0.0
  Outgoing interface list: Null

(*, 224.0.1.40), 00:04:42/00:02:31, RP 0.0.0.0, flags: DPL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list: Null

上記からわかるようにcandidateの状態も同様にRPのアドレスは入ってなく、「0.0.0.0」の状態となっています。

では、パターン①のTTL1をRouter2に追加していきましょう。

Router2#conf t
Router2(config)#ip pim send-rp-discovery scope 1
Router2(config)#end

追加後の状態を見たいと思います。

マルチキャストグループ「239.10.10.1」にRP(ランデブーポイント)が設定されたことがわかります。

また、設定されたIPアドレスが「10.0.0.1」よりRouter1の Loopback0であることもわかります。

Router2#show ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
       L - Local, P - Pruned, R - RP-bit set, F - Register flag,
       T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet,
       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
       U - URD, I - Received Source Specific Host Report,
       Z - Multicast Tunnel, z - MDT-data group sender,
       Y - Joined MDT-data group, y - Sending to MDT-data group,
       G - Received BGP C-Mroute, g - Sent BGP C-Mroute,
       N - Received BGP Shared-Tree Prune, n - BGP C-Mroute suppressed,
       Q - Received BGP S-A Route, q - Sent BGP S-A Route,
       V - RD & Vector, v - Vector, p - PIM Joins on route,
       x - VxLAN group
Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 239.10.10.1), 00:26:08/00:01:57, RP 10.0.0.1, flags: SJC
  Incoming interface: GigabitEthernet0/1, RPF nbr 192.168.1.1
  Outgoing interface list:
    GigabitEthernet0/3, Forward/Sparse, 00:26:08/00:01:57

(*, 224.0.1.39), 00:01:03/stopped, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    GigabitEthernet0/3, Forward/Sparse, 00:01:03/00:02:56
    GigabitEthernet0/1, Forward/Sparse, 00:01:03/00:02:56

(10.0.0.1, 224.0.1.39), 00:00:12/00:02:47, flags: LT
  Incoming interface: GigabitEthernet0/1, RPF nbr 192.168.1.1
  Outgoing interface list:
    GigabitEthernet0/3, Forward/Sparse, 00:00:12/00:02:56

(*, 224.0.1.40), 00:27:09/00:02:55, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    GigabitEthernet0/1, Forward/Sparse, 00:27:08/00:02:55

Router2#

パターン②の動作検証

次にパターン②である「TTLを255とした際の動作」を確認します。

この項目ではRouter2とRouter3の間にリンクを追加します。

マルチキャスト
受信者
葉(Leaf)
マルチキャスト受信者葉(Leaf)…
マルチキャスト
受信者
葉(Leaf)
マルチキャスト受信者葉(Leaf)…
マルチキャスト
受信者
葉(Leaf)
マルチキャスト受信者葉(Leaf)…
マルチキャスト
受信者
葉(Leaf)
マルチキャスト受信者葉(Leaf)…
マルチキャスト
送信元
根(Root)
マルチキャスト送信元根(Root)…
Router1
(RP Candidate)
Router1…
Router2
(RP Agent)
Router2…
Router3
(RP Candidate)
Router3…
Router4
Router4
L2SW
L2SW
Text is not SVG – cannot display

Router3がRPとして選択される想定になります。

では、実際に設定していきましょう。

Router2#conf t
Router2(config)#ip pim send-rp-discovery scope 255
Router2(config)#end

設定後の状態は?

Router2#show ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
       L - Local, P - Pruned, R - RP-bit set, F - Register flag,
       T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet,
       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
       U - URD, I - Received Source Specific Host Report,
       Z - Multicast Tunnel, z - MDT-data group sender,
       Y - Joined MDT-data group, y - Sending to MDT-data group,
       G - Received BGP C-Mroute, g - Sent BGP C-Mroute,
       N - Received BGP Shared-Tree Prune, n - BGP C-Mroute suppressed,
       Q - Received BGP S-A Route, q - Sent BGP S-A Route,
       V - RD & Vector, v - Vector, p - PIM Joins on route,
       x - VxLAN group
Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 239.10.10.1), 00:07:13/00:02:54, RP 10.0.0.3, flags: SJC
  Incoming interface: GigabitEthernet0/0, RPF nbr 192.168.4.2
  Outgoing interface list:
    GigabitEthernet0/3, Forward/Sparse, 00:07:13/00:02:54

(*, 224.0.1.39), 00:07:15/stopped, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    GigabitEthernet0/3, Forward/Sparse, 00:00:26/00:02:45
    GigabitEthernet0/1, Forward/Sparse, 00:00:26/00:02:45

(10.0.0.3, 224.0.1.39), 00:00:14/00:02:45, flags: LT
  Incoming interface: GigabitEthernet0/0, RPF nbr 192.168.4.2
  Outgoing interface list:
    GigabitEthernet0/1, Forward/Sparse, 00:00:14/00:02:45
    GigabitEthernet0/3, Forward/Sparse, 00:00:14/00:02:45

(*, 224.0.1.40), 00:07:14/00:02:45, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    GigabitEthernet0/3, Forward/Sparse, 00:04:25/00:02:45

Router2とRouter3の間にリンクを追加せずにTTL値をあげてもRouter1がRPとなります。

Hulu

最後に

今回は、マルチキャストのプロトコルの1つである「PIM-SM」が持つ「スイッチオーバ機能」と「Auto-RP」についてまとめました。

次回は、MLDについて勉強し、CMLで実機確認を行った上で記事にしたいと思います。

  • URLをコピーしました!

この記事を書いた人

目次