Cisco IOS マルチキャスト PIM NBMA modeの設定方法

スポンサーリンク

フレームリレー, DMVPNなどのNBMA環境は、マルチキャスト通信をサポートしていません。もし、NMBA環境でマルチキャストを使用したい場合は、ip pim nbma-modeという特殊な設定を使用する必要があります。

概要

PIM nbma modeについてまとめます。NBMAとは、Non Broadcast Multi Accessの略で、frame relayのような非ブロードキャスト環境の事を指します。PIM nbma modeをfrema relayのhub routerに設定すると、以下のようにな動作になります。

  • Incomming List, Out goint Listの管理がInterface単位からDLCI単位に変わる
  • split holizonが無効になる

なお、NBMA modeが有効になるのはsparse modeのみです(dense modeを使用する場合は、GRE tunnelなどの別の回避策が必要となります)。

コマンド一覧

このシナリオで重要なコマンド一覧は以下の通りです。

Router(config)# interface <interface>
Router(config-if)# ip pim nbma-mode

構成図

これ以降の動作確認は、以下の環境で行います。R1, R2, R3はHub and Spokeのframe relay構成です。

 [ip address]
                                              +--------+
                                      ┌------+   R2  | 
        s0/1    s0/1      s0/0       2│    .2+--------+
+--------+.101  .1+--------+.1   1+---+----+s0/0
| Host 1 +--------+   R1   +------+  FRSW  |
+--------+        +--------+      +---+----+s0/0
                  RP Candidator      3│    .3+--------+
                  BSR Router          └------+   R3  | 
                                              +--------+
       192.168.1.0/24        192.168.123.0/24

                   R1 Loopback0     R2 Loopback0     R3 Loopback0
                   10.1.1.1/32      10.2.2.2/32      10.3.3.3/32

[frame relay mapping]
 1:102 = 2:201
 1:103 = 3:301
 [R1]
ip multicast-routing 
!
interface Loopback0
 ip pim sparse-mode
!
interface Serial0/0
 ip pim sparse-mode
!
interface Serial0/1
 ip pim sparse-mode
!
ip pim bsr-candidate Loopback0
ip pim rp-candidate Loopback0 interval 30

 [R2]
ip multicast-routing 
!
interface Loopback0
 ip pim sparse-mode
!
interface Serial0/0
 ip pim sparse-mode

 [R3]
ip multicast-routing 
!
interface Loopback0
 ip pim sparse-mode
 ip igmp join-group 239.3.3.3
!
interface Serial0/0
 ip pim sparse-mode

設定全文は下記ファイルです。ルーティングなどの詳細設定は下記を参照ください。

test

Host1
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname Host1
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Serial0/0
 no ip address
 serial restart-delay 0
!
interface Serial0/1
 ip address 192.168.12.101 255.255.255.0
 serial restart-delay 0
 clock rate 9600
!
interface Serial0/2
 no ip address
 shutdown
 serial restart-delay 0
!
interface Serial0/3
 no ip address
 shutdown
 serial restart-delay 0
!
!
ip http server
ip forward-protocol nd
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end
R1
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
no ip domain lookup
!
!
ip multicast-routing 
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.1.1.1 255.255.255.255
 ip pim sparse-mode
!
interface Serial0/0
 ip address 192.168.123.1 255.255.255.0
 ip pim sparse-mode
 encapsulation frame-relay
 ip ospf hello-interval 10
 ip ospf dead-interval 30
 serial restart-delay 0
 frame-relay map ip 192.168.123.2 102 broadcast
 frame-relay map ip 192.168.123.3 103 broadcast
!
interface Serial0/1
 ip address 192.168.1.1 255.255.255.0
 serial restart-delay 0
!
interface Serial0/2
 no ip address
 shutdown
 serial restart-delay 0
!
interface Serial0/3
 no ip address
 shutdown
 serial restart-delay 0
!
!
router ospf 1
 log-adjacency-changes
 network 0.0.0.0 255.255.255.255 area 0
 neighbor 192.168.123.2
 neighbor 192.168.123.3
!
ip http server
ip forward-protocol nd
!
!
ip pim bsr-candidate Loopback0 0
ip pim rp-candidate Loopback0 interval 30
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end
R2
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R2
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
no ip domain lookup
!
!
ip multicast-routing 
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.2.2.2 255.255.255.255
 ip pim sparse-mode
!
interface Serial0/0
 ip address 192.168.123.2 255.255.255.0
 ip pim sparse-mode
 encapsulation frame-relay
 ip ospf hello-interval 10
 ip ospf dead-interval 30
 ip ospf priority 0
 serial restart-delay 0
 frame-relay map ip 192.168.123.1 201 broadcast
!
interface Serial0/1
 no ip address
 shutdown
 serial restart-delay 0
!
interface Serial0/2
 no ip address
 shutdown
 serial restart-delay 0
!
interface Serial0/3
 no ip address
 shutdown
 serial restart-delay 0
!
!
router ospf 1
 log-adjacency-changes
 network 0.0.0.0 255.255.255.255 area 0
!
ip http server
ip forward-protocol nd
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end
R3
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R3
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
no ip domain lookup
!
!
ip multicast-routing 
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.3.3.3 255.255.255.255
 ip pim sparse-mode
 ip igmp join-group 239.3.3.3
!
interface Serial0/0
 ip address 192.168.123.3 255.255.255.0
 ip pim sparse-mode
 encapsulation frame-relay
 ip ospf hello-interval 10
 ip ospf dead-interval 30
 ip ospf priority 0
 serial restart-delay 0
 frame-relay map ip 192.168.123.1 301 broadcast
 frame-relay map ip 192.168.123.2 301 broadcast
!
interface Serial0/1
 no ip address
 shutdown
 serial restart-delay 0
!
interface Serial0/2
 no ip address
 shutdown
 serial restart-delay 0
!
interface Serial0/3
 no ip address
 shutdown
 serial restart-delay 0
!
!
router ospf 1
 log-adjacency-changes
 network 0.0.0.0 255.255.255.255 area 0
!
ip http server
ip forward-protocol nd
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end

非ブロードキャスト環境における問題点

概要

PIM NBMA modeを無効である場合は、以下のような不都合が生じます。

  • 不要なDLCIに対してパケットがfloodingされてしまう
  • split holizonの法則が働き、spoke間での通信ができなくなる

不要なflooding

Host1からR3へマルチキャスト通信について考えます。以下のような通信を発生させて下さい。

 [R3]
interface Loopback0
 ip igmp join-group 239.3.3.3

 [Host1]
Host1#ping 239.3.3.3

Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 239.3.3.3, timeout is 2 seconds:

Reply to request 0 from 192.168.123.3, 200 ms
Host1#

この通信はR3のみに転送すれば充分ですが、PIM nbma modeが無効である場合は全てのspokeに対してfloodingされてしまいます。R2にもパケットが転送されてしまっている事は以下のデバッグメッセージにより確認できます。なお、マルチキャストパケットの確認を行にはip mroute-cacheを無効化する必要があります。

 [R2]
interface Serial0/0
 no ip mroute-cache

 [R2]
R2#debug ip mpacket
IP multicast packets debugging is on
R2#
R2#
R2#
*Mar  1 00:21:16.027: IP(0): s=192.168.1.101 (Serial0/0) d=239.3.3.3 id=51, ttl=253, prot=1, len=104(100), mroute olist null
*Mar  1 00:21:26.979: IP(0): s=192.168.1.101 (Serial0/0) d=239.3.3.3 id=52, ttl=253, prot=1, len=104(100), mroute olist null
R2#

spoke間の疎通不能

PIM nbma modeが有効ではない場合はspoke間の通信ができません。R2からR3への疎通が不能である事を確認します。

 [R3]
interface Loopback0
 ip igmp join-group 239.3.3.3

 [R2]
R2#ping 239.3.3.3 source Loopback 0

Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 239.3.3.3, timeout is 2 seconds:
Packet sent with a source address of 10.2.2.2
.
R2#

PIM nmba mode 基本動作

仕様確認

NBMA modeを有効にするには、以下コマンドを入力します。

Router(config-if)# ip pim  nbma-mode

flooding防止

PIM nmba modeを有効にする事によって、マルチキャストルーティングテーブルがinterface単位の管理からDLCI単位の管理に変わります。まず、PIM nmba modeを有効にする前は、Outgoing interface list:にinterfaceに関する情報しか載っていない事が読み取れます。

 [R1]
R1#show ip mroute 239.3.3.3

 <omitted>

(*, 239.3.3.3), 00:19:51/00:03:28, RP 10.1.1.1, flags: S
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Serial0/0, Forward/Sparse, 00:19:43/00:03:28

(10.2.2.2, 239.3.3.3), 00:01:01/00:02:10, flags: PJTX
  Incoming interface: Serial0/0, RPF nbr 192.168.123.2
  Outgoing interface list: Null

R1#

Hub RouterであるR1でPIM nmba modeを有効にし、マルチキャストルーティングテーブルを再作成します。

 [R1]
interface Serial0/0
 ip pim nbma-mode

 [R1, R2, R3]
clear ip mroute *

 [R3]
interface Loopback0
 no ip igmp join-group 239.3.3.3
 ip igmp join-group 239.3.3.3

Outgoing interface list:に記載されている情報が、interfaceだけでなくPIM neighborも加わった事が分かります。DLCI単位のルーティングが行われるようになり、不要なfloodingが防止されるようになりました。

 [R1]
R1#show ip mroute 239.3.3.3

 <omitted>

(*, 239.3.3.3), 00:08:45/00:02:35, RP 10.1.1.1, flags: S
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Serial0/0, 192.168.123.3, Forward/Sparse, 00:08:45/00:02:35

(192.168.1.101, 239.3.3.3), 00:00:59/00:02:37, flags: T
  Incoming interface: Serial0/1, RPF nbr 0.0.0.0
  Outgoing interface list:
    Serial0/0, 192.168.123.3, Forward/Sparse, 00:00:59/00:02:35

R1#

不要なfloodingが防止されているかどうかは、先ほどと同じデバッグメッセージを有効にしてメッセージが出力されない事により確認できます。(R1からR3へのpingではflooding防止は確認できませんでした。floodingが防止されるのはルータ発信のパケットではなく、ルーティングされるパケットのみのようです。ですので、Host1からR3へのpingで動作確認を行ってください。)

 [Host1]
Host1#ping 239.3.3.3
*Mar  1 00:11:16.151: %SYS-5-CONFIG_I: Configured from console by console

Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 239.3.3.3, timeout is 2 seconds:

Reply to request 0 from 192.168.123.3, 288 ms
Host1#

 [R2]
R2#debug ip mpacket
IP multicast packets debugging is on
R2#
R2#

spoke間の疎通確認

PIM nbma modeを有効にする事で、spoke間の疎通が可能になった事を確認します。R2からR3への疎通が可能である事を確認します。

R2#ping 239.3.3.3 source Loopback 0

Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 239.3.3.3, timeout is 2 seconds:
Packet sent with a source address of 10.2.2.2

Reply to request 0 from 192.168.123.3, 84 ms
R2#
タイトルとURLをコピーしました