マルチキャストルータ間の通信を制御するプロトコルとしてPIMがあります。PIMには様々なモードが存在しますが、ここでは最も実装が簡単なdense modeについて説明します。
概要
マルチキャストによる通信を理解するには、PIMを理解する必要があります。PIMとはProtocol-Independent Multicastの略で、文字通りOSPFやBGPなどのルーティングプロトコルとは独立したマルチキャスト専用のルーティングプロトコルです。PIMにはdense mode, sparse modeなどの複数のmodeが存在し、概要は以下のようになります。
| モード | 説明 |
|---|---|
| dense mode | とりあえず転送して不要なパケットは後から遮断します。 不要なトラフィックが流れしまいますが、メモリ, CPUリソースに優しいモードです。 |
| sparse mode | RPと呼ばれる待ち合わせ場所を設けるモードです。 ソースからは送信元ツリーと呼ばれるツリーに従ってRPまで転送され、 RPからは共有ツリーと呼ばれるツリーに従ってレシーバまで転送されます。 |
| bidirectional mode | RPからレシーバまでだけでなく、ソースからRPまでも共有ツリーを使用します。 ソースとレシーバの関係がmany to manyの場合に適した転送方式です。 |
| ssm mode | ソースからレシーバまでの送信元ツリーを作成するモードです。 ソースとレシーバの関係がone to oneの場合に適した転送方式です。 |
このページでは、PIM dense modeについてまとめます。
PIM dense mode 基本動作
基本設定
マルチキャストによるルーティングを有効にするには、以下のコマンドを有効にします。
Router(config)# ip multicast-routing
マルチキャスト通信を実現したいinterfaceに対して、PIMを有効にします。
Router(config-if)# ip pim dense-mode
受信したマルチキャストパケットをサーバに対して転送するには、以下のいずれかのコマンドを使用します。サーバがIGMPをサポートしている場合は”ip igmp join-group”を使用し、サーバがIGMPをサポートしていない場合はmembership reportに関わらず無条件に転送する”ip igmp static-group”を使用します。
Router(config-if)# ip igmp join-group <group_addr> Router(config-if)# ip igmp static-group <group_addr>
| ip igmp join-group | ip igmp static-group | |
|---|---|---|
| 動作概要 | IGMP membership reportを受信した場合のみ マルチキャストを転送します。 |
配下にmuticast receiverがいるとみなし 無条件にマルチキャストを転送します |
| 使用目的 | サーバがIGMPをサポートする場合 | サーバがIGMPをサポートしない場合 |
| ping応答 | あり | なし |
動作確認
以下の構成で、Host1からHost2への通信について考察します。なお、検証の都合上、一部のinterfaceのみマルチキャストを有効にしています。
[ip address]
+--------+
| Host 2 |
+---+----+
│192.168.2.0/24
.2│e0/2
+---+----+
┌----+ R2 +----┐
e0/2 e0/0 │ .2+--------+.2 │ e0/1 e0/2
+--------+ .1+--------+.1 │ e0/0 e0/1 │ .4+--------+.4 +--------+
| Host 1 +----------+ R1 +----┤ ├----+ R4 +----------+ Host 4|
+--------+ +--------+ │ e0/0 e0/1 │ +--------+ +--------+
192.168.1.0/24 │ .3+--------+.3 │ 192.168.4.0/24
└----+ R3 +----┘
192.168.12.0/24 +---+----+ 192.168.23.0/24
.3│e0/2
│192.168.3.0/24
+---+----+
| Host 3|
+--------+
R1 Loopback0 R2 Loopback0 R3 Loopback0 R4 Loopback0
10.1.1.1/32 10.2.2.2/32 10.3.3.3/32 10.4.4.4/32
[multicast domain]
receive
239.1.1.1
+--------+
| Host 2 |
+---+----+
│192.168.2.0/24
.2│e0/2
+---+----+
┌----+ R2 |
e0/2 e0/0 │ .2+--------+ e0/1 e0/2
+--------+ .1+--------+.1 │ e0/0 .4+--------+.4 +--------+
| Host 1 +----------+ R1 +----┤ ├----+ R4 +----------+ Host 4|
+--------+ +--------+ │ e0/0 e0/1 │ +--------+ +--------+
feed 192.168.1.0/24 │ .3+--------+.3 │ 192.168.4.0/24
239.1.1.1 └----+ R3 +----┘
192.168.12.0/24 +---+----+
.3│e0/2
│192.168.3.0/24
+---+----+
| Host 3 |
+--------+
[R1] ip multicast-routing ! interface Loopback0 ip pim dense-mode ! interface Ethernet0/0 ip pim dense-mode ! interface Ethernet0/2 ip pim dense-mode [R2] ip multicast-routing ! interface Loopback0 ip pim dense-mode ! interface Ethernet0/0 ip pim dense-mode ! interface Ethernet0/1 ip pim dense-mode ! interface Ethernet0/2 ip pim dense-mode [R3] ip multicast-routing ! interface Loopback0 ip pim dense-mode ! interface Ethernet0/0 ip pim dense-mode ! interface Ethernet0/1 ip pim dense-mode ! interface Ethernet0/2 ip pim dense-mode [R4] ip multicast-routing ! interface Loopback0 ip pim dense-mode ! interface Ethernet0/1 ip pim dense-mode ! interface Ethernet0/2 ip pim dense-mode
設定全文は下記ファイルです。ルーティングなどの詳細設定は下記を参照ください。
疎通確認
Host 2をエミュレートするには、igmp join-groupコマンドが有効です。Host 1からHost 2への疎通が可能である場合はping応答を返すように、以下のコマンドを投入します。
[R2] interface Ethernet 0/2 ip igmp join-group 239.1.1.1
Host 1から疎通可能である事を確認するために、R1からinterfaceを指定してpingを送信します。(interfaceを省略すると、PIMが有効になっている全てのinterfaceからpingが送信されてしまいます。なお、ハードウェアやIOSによってはinterface指定が効かない事もありますが、そのような場合でも拡張pingでsource interfaceとsource ip addressを指定すると送信元指定が効く事もあります。)
R1#ping 239.1.1.1 source Ethernet 0/2 repeat 5 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds: Packet sent with a source address of 192.168.1.1 Reply to request 0 from 192.168.123.2, 64 ms Reply to request 1 from 192.168.123.2, 76 ms Reply to request 2 from 192.168.123.2, 60 ms Reply to request 3 from 192.168.123.2, 36 ms Reply to request 4 from 192.168.123.2, 24 ms R1#
PIM 確認
PIM neighborが確立されると以下のようなメッセージが出力されます。
R1(config)#interface Ethernet 0/0 R1(config-if)#ip pim dense-mode R1(config-if)# *Mar 1 00:03:53.595: %PIM-5-DRCHG: DR change from neighbor 0.0.0.0 to 192.168.123.1 on interface Ethernet0/0 R1(config-if)# R1(config-if)# *Mar 1 00:05:14.655: %PIM-5-NBRCHG: neighbor 192.168.123.2 UP on interface Ethernet0/0 *Mar 1 00:05:14.671: %PIM-5-DRCHG: DR change from neighbor 192.168.123.1 to 192.168.123.2 on interface Ethernet0/0 R1(config-if)#
PIMの設定は以下のコマンドで確認できます。これらコマンドはトラブルシューティング試験で非常に有効ですので、必ず使いこなせるようにしましょう。
R1#show ip pim interface
Address Interface Ver/ Nbr Query DR DR
Mode Count Intvl Prior
10.1.1.1 Loopback0 v2/D 0 30 1 10.1.1.1
192.168.1.1 Ethernet0/2 v2/D 0 30 1 192.168.1.1
192.168.123.1 Ethernet0/0 v2/D 2 30 1 192.168.123.3
R1#
R1#
R1#show ip pim neighbor
PIM Neighbor Table
Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority,
S - State Refresh Capable
Neighbor Interface Uptime/Expires Ver DR
Address Prio/Mode
192.168.123.3 Ethernet0/0 00:20:46/00:01:40 v2 1 / DR S
192.168.123.2 Ethernet0/0 00:26:53/00:01:39 v2 1 / S
R1#
ルーティングテーブル 確認
マルチキャストでは、マルチキャスト用のルーティングテーブルが作成されます。マルチキャストルーティングテーブルは以下のコマンドで確認できます。
R3#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,
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
Outgoing interface flags: H - Hardware switched, A - Assert winner
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 239.1.1.1), 00:00:30/stopped, RP 0.0.0.0, flags: D
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
Ethernet0/1, Forward/Dense, 00:00:30/00:00:00
Ethernet0/0, Forward/Dense, 00:00:30/00:00:00
(192.168.1.1, 239.1.1.1), 00:00:30/00:02:37, flags: PT
Incoming interface: Ethernet0/0, RPF nbr 192.168.123.1
Outgoing interface list:
Ethernet0/1, Prune/Dense, 00:00:30/00:02:35
(*, 224.0.1.40), 00:01:24/00:02:09, RP 0.0.0.0, flags: DCL
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
Ethernet0/1, Forward/Dense, 00:01:24/00:00:00
Ethernet0/0, Forward/Dense, 00:01:24/00:00:00
Loopback0, Forward/Dense, 00:01:24/00:00:00
R3#
PIM prune
パケット 確認
端的な言い方をすると、PIM dense modeは”とりあえず転送して不要なパケットは後から遮断”の方針です。この構成の場合、R4配下にレシーバは存在しないので、R3はR4にパケットを転送する必要がありません。このような不要である旨を伝えるメッセージがPIM pruneです。
R3 e0/1でパケットキャプチャを実施すると、以下のようにR4からR3へのPIM pruneを観測する事ができます。
Ethernet II, Src: cc:03:10:08:00:01 (cc:03:10:08:00:01), Dst: IPv4mcast_00:00:0d (01:00:5e:00:00:0d)
Internet Protocol Version 4, Src: 192.168.234.4 (192.168.234.4), Dst: 224.0.0.13 (224.0.0.13)
Protocol Independent Multicast
0010 .... = Version: 2
.... 0011 = Type: Join/Prune (3)
Reserved byte(s): 00
Checksum: 0x7c92 [correct]
PIM options
Upstream-neighbor: 192.168.234.3
Reserved byte(s): 00
Num Groups: 1
Holdtime: 210s
Group 0: 239.1.1.1/32
Num Joins: 0
Num Prunes: 1
IP address: 192.168.1.1/32
ルーティングテーブルの確認
Prune messageによりパケットの転送が不要になったinterfaceには、ルーティングテーブル上でPruneと表記されます。
R3#show ip mroute
<omitted>
(192.168.1.1, 239.1.1.1), 00:00:30/00:02:37, flags: PT
Incoming interface: Ethernet0/0, RPF nbr 192.168.123.1
Outgoing interface list:
Ethernet0/1, Prune/Dense, 00:00:30/00:02:35
PIM Graft
動作確認
上記の設定に加え、Host 4をマルチキャストグループに参加させます。
[multicast domain]
receive
239.1.1.1
+--------+
| Host 2 |
+---+----+
│192.168.2.0/24
.2│e0/2
+---+----+
┌----+ R2 |
e0/2 e0/0 │ .2+--------+ e0/1 e0/2
+--------+ .1+--------+.1 │ e0/0 .4+--------+.4 +--------+
| Host 1 +----------+ R1 +----┤ ├----+ R4 +----------+ Host 4|
+--------+ +--------+ │ e0/0 e0/1 │ +--------+ +--------+
feed 192.168.1.0/24 │ .3+--------+.3 │ 192.168.4.0/24 receive
239.1.1.1 └----+ R3 +----┘ 239.1.1.1
192.168.12.0/24 +---+----+
.3│e0/2
│192.168.3.0/24
+---+----+
| Host 3 |
+--------+
パケット 確認
Prune messageを送信した後に、Host 4がマルチキャストグループに参加したくなった場合はどうなるのでしょうか。マルチキャストルーティングテーブルのPruneのエントリが消えるまで(180秒)待たなければまらないのでしょうか。さすがに180秒は長すぎます。このような問題を解消するのがGraft (“接ぎ木”の意味) messageです。
Graft messageを観察するためにHost 4をマルチキャストグループに参加させます。
[R4] interface Ethernet 0/2 ip igmp join-group 239.1.1.1
上記のip igmp join-groupコマンドを実行すると、R4からR3に向けてPIM Graft messageが送信されます。Graft messageは、Prune messageの打ち消しの意味で、”さっきはマルチキャスト要らないと言ったけど、やっぱりマルチキャスト転送して下さい”という旨を伝えるメッセージです。パケットキャプチャすると以下のようになっています。
Ethernet II, Src: cc:03:10:08:00:01 (cc:03:10:08:00:01), Dst: cc:02:10:08:00:01 (cc:02:10:08:00:01)
Internet Protocol Version 4, Src: 192.168.234.4 (192.168.234.4), Dst: 192.168.234.3 (192.168.234.3)
Protocol Independent Multicast
0010 .... = Version: 2
.... 0110 = Type: Graft (6)
Reserved byte(s): 00
Checksum: 0x7992 [correct]
PIM options
Upstream-neighbor: 192.168.234.3
Reserved byte(s): 00
Num Groups: 1
Holdtime: 210s
Group 0: 239.1.1.1/32
Num Joins: 1
IP address: 192.168.1.1/32
Num Prunes: 0
もし、GraftがPIM neighborに届いていなかったとしたら経路の切り替わりが遅くなってしまうので、R3はR4に対して、以下のような確認応答のGraft-Ackと呼ばれるメッセージを返します。
Ethernet II, Src: cc:02:10:08:00:01 (cc:02:10:08:00:01), Dst: cc:03:10:08:00:01 (cc:03:10:08:00:01)
Internet Protocol Version 4, Src: 192.168.234.3 (192.168.234.3), Dst: 192.168.234.4 (192.168.234.4)
Protocol Independent Multicast
0010 .... = Version: 2
.... 0111 = Type: Graft-Ack (7)
Reserved byte(s): 00
Checksum: 0xf38d [correct]
PIM options
Upstream-neighbor: 192.168.234.4
Reserved byte(s): 00
Num Groups: 1
Holdtime: 210s
Group 0: 239.1.1.1/32
Num Joins: 1
IP address: 192.168.1.1/32
Num Prunes: 0
ルーティングテーブル 確認
Graft messageによりPruneからForwardに変わった事が読み取れます。
R3#show ip mroute
<omitted>
(192.168.1.1, 239.1.1.1), 00:00:35/00:02:25, flags: T
Incoming interface: Ethernet0/0, RPF nbr 192.168.123.1
Outgoing interface list:
Ethernet0/1, Forward/Dense, 00:00:35/00:00:00
PIM Assert
動作確認
PIMの構成を変更します。全てのinterfaceでPIMを有効し、Host 1からHost 4への通信について考察します。なお、ルーティングはOSPFとEIGRPに2種類を動作させています。
[ip address]
+--------+
| Host 2 |
+---+----+
│192.168.2.0/24
.2│e0/2
+---+----+
┌----+ R2 +----┐
e0/2 e0/0 │ .2+--------+.2 │ e0/1 e0/2
+--------+ .1+--------+.1 │ e0/0 e0/1 │ .4+--------+.4 +--------+
| Host 1 +----------+ R1 +----┤ ├----+ R4 +----------+ Host 4|
+--------+ +--------+ │ e0/0 e0/1 │ +--------+ +--------+
192.168.1.0/24 │ .3+--------+.3 │ 192.168.4.0/24
└----+ R3 +----┘
192.168.12.0/24 +---+----+ 192.168.23.0/24
.3│e0/2
│192.168.3.0/24
+---+----+
| Host 3 |
+--------+
R1 Loopback0 R2 Loopback0 R3 Loopback0 R4 Loopback0
10.1.1.1/32 10.2.2.2/32 10.3.3.3/32 10.4.4.4/32
[multicast domain]
+--------+
| Host 2 |
+---+----+
│192.168.2.0/24
.2│e0/2
+---+----+
┌----+ R2 +----┐
e0/2 e0/0 │ .2+--------+.2 │ e0/1 e0/2
+--------+ .1+--------+.1 │ e0/0 e0/1 │ .4+--------+.4 +--------+
| Host 1 +----------+ R1 +----┤ ├----+ R4 +----------+ Host 4|
+--------+ +--------+ │ e0/0 e0/1 │ +--------+ +--------+
feed 192.168.1.0/24 │ .3+--------+.3 │ 192.168.4.0/24 receive
239.1.1.1 └----+ R3 +----┘ 239.1.1.1
192.168.12.0/24 +---+----+
.3│e0/2
│192.168.3.0/24
+---+----+
| Host 3 |
+--------+
[OSPF domain]
│192.168.2.0/24
.2│e0/2
+---+----+
┌----+ R2 +----┐
e0/2 e0/0 │ .2+--------+.2 │ e0/1 e0/2
.1+--------+.1 │ e0/0 e0/1 │ .4+--------+.4
------+ R1 +----┤ ├----+ R4 +------
+--------+ +--------+
192.168.1.0/24 192.168.4.0/24
[EIGRP domain]
e0/2 e0/0 e0/1 e0/2
.1+--------+.1 .4+--------+.4
------+ R1 +----┤ ├----+ R4 +------
+--------+ │ e0/0 e0/1 │ +--------+
192.168.1.0/24 │ .3+--------+.3 │ 192.168.4.0/24
└----+ R3 +----┘
192.168.12.0/24 +---+----+ 192.168.23.0/24
.3│e0/2
│192.168.3.0/24
疎通確認
Host 1からHost 4への疎通を確認します。
このような構成の場合、R2経由とR3経由の2通りの経路が存在します。経路が複数存在する場合はPIM Assert messageにより不要な経路を遮断します。1発目のpingに対して応答が2回返ってきたのは、PIM Assertにより遮断される前であったためです。
[R4] interface Ethernet 0/2 ip igmp join-group 239.1.1.1 [R1] R1#ping 239.1.1.1 source Ethernet 0/2 repeat 3 Type escape sequence to abort. Sending 3, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds: Packet sent with a source address of 192.168.1.1 Reply to request 0 from 192.168.234.4, 116 ms Reply to request 0 from 192.168.234.4, 116 ms Reply to request 1 from 192.168.234.4, 52 ms Reply to request 2 from 192.168.234.4, 100 ms R1#
パケット 確認
マルチキャストを受信したR2は、e0/1からマルチキャストパケットを転送します。転送したパケットはR3にもR4にも届くので、R3は経路が複数存在する事を検知できます。
経路が複数存在する事を検知したらPIM Assertと呼ばれるメッセージを送信し、R2とR3のどちらがマルチキャストソースに近いか判断します。具体的には、マルチキャストソース(この場合は192.168.1.0/24)のエントリに関する、Administrative distanceとmetricを含むPIM Assert messageを送信し、どちらがマルチキャストソースに近いかを判断します。
パケットキャプチャした結果は以下の通りです。
Ethernet II, Src: cc:01:10:08:00:01 (cc:01:10:08:00:01), Dst: IPv4mcast_00:00:0d (01:00:5e:00:00:0d)
Internet Protocol Version 4, Src: 192.168.234.2 (192.168.234.2), Dst: 224.0.0.13 (224.0.0.13)
Protocol Independent Multicast
0010 .... = Version: 2
.... 0101 = Type: Assert (5)
Reserved byte(s): 00
Checksum: 0x25b1 [correct]
PIM options
Group: 239.1.1.1/32
Source: 192.168.1.1
0... .... = RP Tree: False
Metric Preference: 110
Metric: 20
Ethernet II, Src: cc:02:10:08:00:01 (cc:02:10:08:00:01), Dst: IPv4mcast_00:00:0d (01:00:5e:00:00:0d)
Internet Protocol Version 4, Src: 192.168.234.3 (192.168.234.3), Dst: 224.0.0.13 (224.0.0.13)
Protocol Independent Multicast
0010 .... = Version: 2
.... 0101 = Type: Assert (5)
Reserved byte(s): 00
Checksum: 0x75d4 [correct]
PIM options
Group: 239.1.1.1/32
Source: 192.168.1.1
0... .... = RP Tree: False
Metric Preference: 90
Metric: 307200
判定基準は以下の通りです。
- AD値が小さいルータを優先します。
- 上記が等しい場合は、メトリック値が小さいルータを優先します。
- 上記が等しい場合は、IPアドレスが大きいルータを優先します。
この構成の場合の判定基準は以下のようになりますので、R3が優先されます。なお、優先されたルータをAssert Winnerと呼び、優先されないルータをAssert Loserと呼びます。
| 要因 | R2 | R3 | |
|---|---|---|---|
| 第一判定基準 | AD | 110 | 90 |
| 第二判定基準 | metric | 20 | 307200 |
| 第三判定基準 | ip address | 192.168.234.2 | 192.168.234.3 |
ルーティングテーブル 確認
Assert Loser側はPruneと表記され、Assert Winner側にはAというフラグが表示されている事が読み取れます。
[R2]
R2#show ip mroute 192.168.1.1 239.1.1.1
<omitted>
(192.168.1.1, 239.1.1.1), 00:01:23/00:01:37, flags: PT
Incoming interface: Ethernet0/0, RPF nbr 192.168.123.1
Outgoing interface list:
Ethernet0/1, Prune/Dense, 00:01:22/00:01:37
R2#
[R3]
R3#show ip mroute 192.168.1.1 239.1.1.1
<omitted>
(192.168.1.1, 239.1.1.1), 00:01:33/00:02:06, flags: T
Incoming interface: Ethernet0/0, RPF nbr 192.168.123.1
Outgoing interface list:
Ethernet0/1, Forward/Dense, 00:01:33/00:00:00, A
R3#
デバッグメッセージ 確認
Assertの様子は以下のデバッグコマンドにより確認できます。
Router# debug ip pim
R2はloseと表示され、R3ではWinと表示されている事が読み取れます。
[R2] R2# *Mar 1 00:06:07.891: PIM(0): Send v2 Assert on Ethernet0/1 for 239.1.1.1, source 192.168.1.1, metric [110/20] *Mar 1 00:06:07.895: PIM(0): Assert metric to source 192.168.1.1 is [110/20] *Mar 1 00:06:07.899: PIM(0): We win, our metric [110/20] *Mar 1 00:06:07.903: PIM(0): Schedule to prune Ethernet0/1 *Mar 1 00:06:07.903: PIM(0): (192.168.1.1/32, 239.1.1.1) oif Ethernet0/1 in Forward state *Mar 1 00:06:08.895: PIM(0): Received v2 Assert on Ethernet0/1 from 192.168.234.3 *Mar 1 00:06:08.899: PIM(0): Assert metric to source 192.168.1.1 is [90/307200] *Mar 1 00:06:08.903: PIM(0): We lose, our metric [110/20] *Mar 1 00:06:08.903: PIM(0): Prune Ethernet0/1/239.1.1.1 from (192.168.1.1/32, 239.1.1.1) *Mar 1 00:06:08.907: PIM(0): Insert (192.168.1.1,239.1.1.1) prune in nbr 192.168.123.1's queue *Mar 1 00:06:08.911: PIM(0): Insert (192.168.1.1,239.1.1.1) prune in nbr 192.168.234.3(Ethernet0/1)'s queueold_nbr(192.168.123.1)(Ethernet0/0) *Mar 1 00:06:08.915: PIM(0): Insert (192.168.1.1,239.1.1.1) prune in nbr 192.168.234.3's queue *Mar 1 00:06:08.919: PIM(0): Send (192.168.1.1, 239.1.1.1) PIM-DM prune to oif Ethernet0/1 in Prune state *Mar 1 00:06:08.923: PIM(0): (192.168.1.1/32, 239.1.1.1) oif Ethernet0/1 in Prune state [R3] R3# *Mar 1 00:06:07.555: PIM(0): Received v2 Assert on Ethernet0/1 from 192.168.234.2 *Mar 1 00:06:07.559: PIM(0): Assert metric to source 192.168.1.1 is [110/20] *Mar 1 00:06:07.563: PIM(0): We win, our metric [90/307200] *Mar 1 00:06:07.563: PIM(0): Schedule to prune Ethernet0/1 *Mar 1 00:06:07.567: PIM(0): (192.168.1.1/32, 239.1.1.1) oif Ethernet0/1 in Forward state *Mar 1 00:06:08.487: PIM(0): Send v2 Assert on Ethernet0/1 for 239.1.1.1, source 192.168.1.1, metric [90/307200] *Mar 1 00:06:08.491: PIM(0): Assert metric to source 192.168.1.1 is [90/307200] *Mar 1 00:06:08.495: PIM(0): We win, our metric [90/307200] *Mar 1 00:06:08.495: PIM(0): (192.168.1.1/32, 239.1.1.1) oif Ethernet0/1 in Forward state
Asset Winnerの制御
Assert WinnerはAdministrative Distanceやmetricを調節する事によって制御する事ができます。例えば、以下のようにR2のDistanceをR3よりも小さくすれば、R2をAssert Winnerにする事ができます。
[R2]
router ospf 1
distance ospf intra-area 89
R2#show ip route
<omitted>
C 192.168.123.0/24 is directly connected, Ethernet0/0
C 192.168.234.0/24 is directly connected, Ethernet0/1
O 192.168.4.0/24 [89/20] via 192.168.234.4, 00:00:05, Ethernet0/1
10.0.0.0/32 is subnetted, 3 subnets
C 10.2.2.2 is directly connected, Loopback0
O 10.1.1.1 [89/11] via 192.168.123.1, 00:00:05, Ethernet0/0
O 10.4.4.4 [89/11] via 192.168.234.4, 00:00:05, Ethernet0/1
O 192.168.1.0/24 [89/20] via 192.168.123.1, 00:00:05, Ethernet0/0
C 192.168.2.0/24 is directly connected, Ethernet0/2
R2#
マルチキャストルーティングテーブルを削除した後、Host 1からHost 4へのpingを再び送信します。
[R2, R3] clear ip mroute * [R1] R1#ping 239.1.1.1 source Ethernet 0/2 Type escape sequence to abort. Sending 1, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds: Packet sent with a source address of 192.168.1.1 Reply to request 0 from 192.168.234.4, 172 ms Reply to request 0 from 192.168.234.4, 176 ms R1#
Assert Winnerが入れ替わり、R2がWinner、R3がLoseとなっている事が読みれます。
[R2]
R2#show ip mroute 192.168.1.1 239.1.1.1
<omitted>
(192.168.1.1, 239.1.1.1), 00:00:03/00:02:56, flags: T
Incoming interface: Ethernet0/0, RPF nbr 192.168.123.1
Outgoing interface list:
Ethernet0/1, Forward/Dense, 00:00:03/00:00:00, A
R2#
[R3]
R3#show ip mroute 192.168.1.1 239.1.1.1
<omitted>
(192.168.1.1, 239.1.1.1), 00:00:09/00:02:54, flags: PT
Incoming interface: Ethernet0/0, RPF nbr 192.168.123.1
Outgoing interface list:
Ethernet0/1, Prune/Dense, 00:00:09/00:02:50
R3#
