はじめに
こんにちは。ネットワークエンジニアの「だいまる」です。
今回は、前回の記事で紹介した「【ネットワーク入門】マルチキャストの代表的なプロトコル(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 | 意味 | 説明 |
S | Sparse | (*,G)エントリがPIM-SMの共有ツリーであることを示す |
C | Connected | 直接接続しているレシーバの存在を示す |
L | Local | ルータのIFにレシーバが存在することを示す |
P | Pruned | OILにある全IFがPrune状態 |
T | SPT-bit Set | 1つ以上のマルチキャストを転送 |
F | Register-Flag | SenderのFHRデPIM registerメッセージを送信 |
R | RP-bit Flag | スイッチオーバ機能により不要となったルータ |
J | Join SPT | スイッチオーバ機能のため、Jフラグをつける |
スイッチオーバの動作確認をしてみよう!
この章では、「スイッチオーバの動作確認」を行います。
構成は前回と同様になります。
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
手動設定はうんざり。。。そんな時は「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の時とは少し変更しました。
Router2をRP Agentとし、Router1とRouter3をRP Candidateとします。
今回は以下の2パターンを確認します。
パターンNo | TTL設定値 | 想定動作 |
1 | 1 | Router1がRPになる |
2 | 255 | Router2-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の間にリンクを追加します。
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となります。
最後に
今回は、マルチキャストのプロトコルの1つである「PIM-SM」が持つ「スイッチオーバ機能」と「Auto-RP」についてまとめました。
次回は、MLDについて勉強し、CMLで実機確認を行った上で記事にしたいと思います。