Cisco IOS マルチキャスト Multicast Helper Mapの設定方法

スポンサーリンク

Multicast Helper Mapはブロードキャスト, マルチキャスト, ユニキャストを自在に変換する機能です。workbookを見ると、マルチキャストをサポートしない機器に対応するための変換を行うようなシナリオが幾つか見られます。

概要

Multicast Helper Mapについてまとめます。Multicast Helper Mapはマルチキャスト・ブロードキャスト間の変換する技術で、使用例は以下が挙げられます。

  • ブロードキャストの転送
  • マルチキャスト転送不可セグメントへの対応

コマンド一覧

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

Router(config)# [ no ] ip forward-protocol udp <port>

Router(config-if)# ip multicast helper-map { <addr> | broadcast } <addr> MULTICAST
Router(config-if)# ip directed-broadcast

構成図 1

これ以降の動作確認は、以下の環境で行います。以下のような仮想の問題に対応し、Host1からHost2へのbroadcastが転送可能になるようにします。

  • Host1はudp 5000のブロードキャストを用いて、Host2にビデオストリーム配信を行います。
  • 最近、Host1は192.168.2.0/24から192.168.1.0/24への移動が行われました。
  • しかし、Host1は旧式のメディアサーバなので、マルチキャスト送信に対応しておらずブロードキャストの送信のみが可能です。
  • Host2も旧式のクライアントで、マルチキャストの受信ができずブロードキャストのみの受信が可能です。
  • R1, R2を設定変更して、Host1からHost2へのブロードキャストが可能になるようにして下さい。
  • ブロードキャストの転送には、マルチキャストアドレス239.12.12.12を利用して下さい。
 [ip address]
 +--------+        +--------+        +--------+        +--------+
 | Host 1 +--------+   R1   +--------+   R2   +--------+ Host 2| 
 +--------+.101  .1+--------+.1    .2+--------+.2  .202+--------+
         e0/0    e0/1      e0/0    e0/1      e0/0    e0/1
        192.168.1.0/24    192.168.12.0/24   192.168.2.0/24

                  R1 Loopback0      R2 Loopback0
                  10.1.1.1/32       10.2.2.2/32

 [multicast domain]
                   +--------+        +--------+
               ----+   R1   +--------+   R2  | 
                 .1+--------+.1    .2+--------+
                 e0/1      e0/0    e0/1
        192.168.1.0/24    192.168.12.0/24
 [R1]
interface Loopback0
 ip pim dense-mode
!
interface Ethernet0/0
 ip pim dense-mode
!
interface Ethernet0/1
 ip pim dense-mode

 [R2]
interface Loopback0
 ip pim dense-mode
!
interface Ethernet0/1
 ip pim dense-mode

設定全文は下記ファイルです。詳細設定は下記を参照ください。

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
!
!
ip multicast-routing 
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.1.1.1 255.255.255.255
 ip pim dense-mode
!
interface Ethernet0/0
 ip address 192.168.12.1 255.255.255.0
 ip pim dense-mode
 half-duplex
!
interface Ethernet0/1
 ip address 192.168.1.1 255.255.255.0
 ip pim dense-mode
 half-duplex
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
router eigrp 10
 network 0.0.0.0
 no auto-summary
!
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
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
!
!
ip multicast-routing 
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.2.2.2 255.255.255.255
 ip pim dense-mode
!
interface Ethernet0/0
 ip address 192.168.2.2 255.255.255.0
 half-duplex
!
interface Ethernet0/1
 ip address 192.168.12.2 255.255.255.0
 ip pim dense-mode
 half-duplex
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
interface Ethernet1/0
 no ip address
 shutdown
 half-duplex
!
interface Ethernet1/1
 no ip address
 shutdown
 half-duplex
!
interface Ethernet1/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet1/3
 no ip address
 shutdown
 half-duplex
!
!
router eigrp 10
 network 0.0.0.0
 no auto-summary
!
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
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 Ethernet0/0
 ip address 192.168.1.101 255.255.255.0
 half-duplex
!
interface Ethernet0/1
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
ip http server
ip forward-protocol nd
ip route 0.0.0.0 0.0.0.0 192.168.1.1
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end
Host2
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname Host2
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Ethernet0/0
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/1
 ip address 192.168.2.202 255.255.255.0
 half-duplex
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
ip http server
ip forward-protocol nd
ip route 0.0.0.0 0.0.0.0 192.168.2.2
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end

broadcast 転送

仕様説明

ip helper-addressコマンドを使用するとブロードキャストをユニキャストに変換する事ができます。同じようにip multicast helper-mapコマンドを使用するとブロードキャスト・マルチキャスト間の変換が可能です。なお、ブロードキャストに変換する時は、変換後アドレスは255.255.255.255ではなくダイレクトブロードキャストアドレスを指定して下さい。

Router(config-if)# ip multicast helper-map { <addr> | broadcast } <addr> MULTICAST

上記コマンドにより、マルチキャストからブロードキャストへの変換を行う場合は、併せてダイレクトブロードキャストの転送許可を設定する必要があります。

Router(config-if)# ip directed-broadcast

ip helper-addressコマンドやip multicast helper-mapコマンドによって転送が許可されるパケットは、UDP 53(DNS)のように一部の有名なプロトコルのみになっています。転送を許可したいプロトコルを追加したい場合は以下のコマンドを使用します。逆に転送を禁止したい場合も以下のコマンドにnoを付け足す事で可能です。

Router(config)# [ no ] ip forward-protocol udp <port>

multicast helper

受信したブロードキャストをマルチキャストに変換して送信する設定をR1に投入します。

 [R1]
ip access-list extended MULTICAST
 10 permit udp any any
!
interface Ethernet0/1
 ip multicast helper-map broadcast 239.12.12.12 MULTICAST

受信したマルチキャストをブロードキャストに変換して送信する設定をR2に投入します。

 [R2]
ip access-list extended MULTICAST
 10 permit udp any any
!
interface Ethernet0/0
 ip directed-broadcast
!
interface Ethernet0/1
 ip multicast helper-map 239.12.12.12 192.168.2.255 MULTICAST

udp forwarding-protocol

デフォルトではudp 5000はip multicast helper-mapコマンドにより転送されません。udp 5000が設定されるよう、以下のコマンドを入力します。

 [R1]
ip forward-protocol udp 5000

 [R2]
ip forward-protocol udp 5000

udp broadcast 送信

udp 5000 broadcastの動作確認はIOSのみでは難しいですが、DNS queryを利用したudp 53 broadcastによる動作確認は可能です。Cisco IOSは”ip name-server”コマンドでDNSサーバを明示的に指定していない場合は、255.255.255.255宛てにDNS queryを送信します。

Host1からbroadcastのDNS queryが送信され、そのパケットがHost2まで届いているかどうかを確認します。Host2で以下デバッグを有効にし、DNS queryの有無を確認できるようにします。

 [Host2]
access-list 100 permit udp any any eq domain

Host2#debug ip packet 100
IP packet debugging is on for access list 100
Host2#

Host1からDNS queryを送信し、そのパケットがHost2まで届いている事を確認します。

 [Host1]
Host1#AAA
Translating "AAA"...domain server (255.255.255.255)
 (255.255.255.255)
Translating "AAA"...domain server (255.255.255.255)

 [Host2]
Host2#
*Mar  1 00:35:40.143: IP: s=192.168.1.101 (Ethernet0/1), d=255.255.255.255, len 49, rcvd 2
*Mar  1 00:35:43.099: IP: s=192.168.1.101 (Ethernet0/1), d=255.255.255.255, len 49, rcvd 2
*Mar  1 00:35:46.087: IP: s=192.168.1.101 (Ethernet0/1), d=255.255.255.255, len 49, rcvd 2

IGMP Stub Router(R1)を介した通信が可能な事を確認します。

 [R4]
R4#ping 239.1.1.1 source Loopback 0

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 10.4.4.4

Reply to request 0 from 192.168.1.101, 108 ms
Reply to request 0 from 192.168.1.101, 108 ms
R4#

構成図 2

これ以降の動作確認は、以下の環境で行います。以下のような仮想の問題に対応し、R1からR4へのマルチキャスト通信が可能になる事を目標とします。

  • 192.168.1.0/24のセグメントには動画配信サーバが配置されています。
  • このサーバはマルチキャストグループアドレス239.1.1.1とudp port 5000を使用します。
  • ある時、192.168.4.0/24のユーザが動画が受信できないとの報告を挙げました。
  • 通信経路を調査するとR2に問題がある事が判明しました。ユニキャスト、ブロードキャストはR3に送信できますが、マルチキャストのみR3に送信できないようです。
  • この問題をTACに報告しましたが、原因究明には時間がかかりそうです。192.168.1.0/24のユーザはすぐに動画を受信しなければならないようです。
  • R2, R3を設定変更し、動画が配信可能なよう設定変更して下さい。
  • なお、IPアドレスの追加・変更やtunnel interfaceの追加する事は認められません。
 [ip address]
            +--------+        +--------+        +--------+        +--------+    
        ----+   R1   +--------+   R2   +--------+   R3   +--------+   R4   +----
          .1+--------+.1    .2+--------+.2    .3+--------+.3    .4+--------+.4
          e0/1      e0/0    e0/1      e0/0    e0/1      e0/0    e0/1      e0/0
 192.168.1.0/24    192.168.12.0/24   192.168.23.0/24   192.168.34.0/24   192.168.4.0/24
                                      non multicast

           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]
            +--------+        +--------+        +--------+        +--------+    
        ----+   R1   +--------+   R2  |     ----+   R3   +--------+   R4   +----
          .1+--------+.1    .2+--------+.2    .3+--------+.3    .4+--------+.4
          e0/1      e0/0    e0/1      e0/0    e0/1      e0/0    e0/1      e0/0
 192.168.1.0/24    192.168.12.0/24   192.168.23.0/24   192.168.34.0/24   192.168.4.0/24
                                      non multicast
 [R1]
interface Loopback0
 ip pim dense-mode
!
interface Ethernet0/0
 ip pim dense-mode
!
interface Ethernet0/1
 ip pim dense-mode

 [R2]
interface Loopback0
 ip pim dense-mode
!
interface Ethernet0/1
 ip pim dense-mode

 [R3]
interface Loopback0
 ip pim dense-mode
!
interface Ethernet0/0
 ip pim dense-mode
!
interface Ethernet0/1
 ip pim dense-mode

 [R4]
interface Loopback0
 ip pim dense-mode
!
interface Ethernet0/0
 ip pim dense-mode
!
interface Ethernet0/1
 ip pim dense-mode

設定全文は下記ファイルです。詳細設定は下記を参照ください。

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
!
!
ip multicast-routing 
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.1.1.1 255.255.255.255
 ip pim dense-mode
!
interface Ethernet0/0
 ip address 192.168.12.1 255.255.255.0
 ip pim dense-mode
 half-duplex
!
interface Ethernet0/1
 ip address 192.168.1.1 255.255.255.0
 ip pim dense-mode
 half-duplex
 no keepalive
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
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
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
!
!
ip multicast-routing 
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.2.2.2 255.255.255.255
 ip pim dense-mode
!
interface Ethernet0/0
 ip address 192.168.23.2 255.255.255.0
 half-duplex
!
interface Ethernet0/1
 ip address 192.168.12.2 255.255.255.0
 ip pim dense-mode
 half-duplex
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
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
!
!
ip multicast-routing 
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.3.3.3 255.255.255.255
 ip pim dense-mode
!
interface Ethernet0/0
 ip address 192.168.34.3 255.255.255.0
 ip pim dense-mode
 half-duplex
!
interface Ethernet0/1
 ip address 192.168.23.3 255.255.255.0
 ip pim dense-mode
 half-duplex
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
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
R4
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R4
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
!
!
ip multicast-routing 
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.4.4.4 255.255.255.255
 ip pim dense-mode
!
interface Ethernet0/0
 ip address 192.168.4.4 255.255.255.0
 ip pim dense-mode
 ip igmp join-group 239.1.1.1
 half-duplex
 no keepalive
!
interface Ethernet0/1
 ip address 192.168.34.4 255.255.255.0
 ip pim dense-mode
 half-duplex
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
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

非マルチキャスト対応

multicast helper

受信したマルチキャストをブロードキャストに変換して送信する設定をR2に投入します。

 [R1]
ip access-list extended MULTICAST
 10 permit udp any any
!
interface Ethernet0/0
 ip directed-broadcast
!
interface Ethernet0/1
 ip multicast helper-map 239.1.1.1 192.168.23.255 MULTICAST

受信したブロードキャストをマルチキャストに変換して送信する設定をR3に投入します。

 [R3]
ip access-list extended MULTICAST
 10 permit udp any any
!
interface Ethernet0/1
 ip multicast helper-map broadcast 239.1.1.1 MULTICAST

udp forwarding-protocol

デフォルトではudp 5000はip multicast helper-mapコマンドにより転送されません。udp 5000が設定されるよう、以下のコマンドを入力します。

 [R2]
ip forward-protocol udp 5000

 [R3]
ip forward-protocol udp 5000

udp multicast 送信

先程の動作確認ではDNS queryを利用しましたが、udp unicast, multicastならばIP SLAを利用する事によりテスト用のトラフィックを発生させる事ができます。

以下のIP SLAを実行し、udp 5000のマルチキャストトラフィックを定期的に発生させます。

 [R1]
ip sla monitor 1
 type udpEcho dest-ipaddr 239.1.1.1 dest-port 5000 source-ipaddr 192.168.1.1 control disable
 frequency 10
ip sla monitor schedule 1 life forever start-time now

R4で以下のデバッグ出力を有効にし、マルチキャストがR1からR4に届いている事を確認します。

 [R4]
access-list 100 permit udp any any eq 5000

R4#debug ip mpacket list 100
IP multicast packets debugging is on for access list 100
R4#
R4#
*Mar  1 00:17:01.671: IP(0): s=192.168.1.1 (Ethernet0/1) d=239.1.1.1 (Ethernet0/0) id=0, ttl=252, prot=17, len=44(44), mforward
*Mar  1 00:17:11.623: IP(0): s=192.168.1.1 (Ethernet0/1) d=239.1.1.1 (Ethernet0/0) id=0, ttl=252, prot=17, len=44(44), mforward
R4#
タイトルとURLをコピーしました