Cisco IOS マルチキャスト IGMPv1の設定

スポンサーリンク

IGMPはマルチキャストグループに参加するためのプロトコルです。このページでは、旧バージョンであるIGMP version 1についてまとめます。

IGMP 概要

multicast groupへの参加

multicast groupに参加したいホストは、Membership report(通称join message)と呼ばれるパケットを送付します。このパケット以下の通りで、参加したいgroupのマルチキャストアドレス宛てに送付します。

Ethernet II, Src: cc:01:0b:24:00:00 (cc:01:0b:24:00:00), Dst: IPv4mcast_01:01:01 (01:00:5e:01:01:01)
Internet Protocol, Src: 192.168.0.2 (192.168.0.2), Dst: 239.1.1.1 (239.1.1.1)
Internet Group Management Protocol
    [IGMP Version: 1]
    Type: Membership Report (0x12)
    Header checksum: 0xfdfc [correct]
    Multicast Address: 239.1.1.1 (239.1.1.1)

multicast groupの維持

last hop routerは、multicast memberが存在するかどうか(生存しているかどうか)を確認するために、定期的(デフォルトは60秒間隔)にMembership Queryを送信します。このパケット以下の通りで、224.0.0.1(全ルータ)宛てに送信されます。

Ethernet II, Src: cc:03:0b:24:00:00 (cc:03:0b:24:00:00), Dst: IPv4mcast_00:00:01 (01:00:5e:00:00:01)
Internet Protocol, Src: 192.168.0.4 (192.168.0.4), Dst: 224.0.0.1 (224.0.0.1)
Internet Group Management Protocol
    [IGMP Version: 1]
    Type: Membership Query (0x11)
    Header checksum: 0xeeff [correct]
    Multicast Address: 0.0.0.0 (0.0.0.0)

Membership Queryを受信したmulticast memberは、Membership Reportを返信し、未だmulticast memberに参加している旨を伝えます。なお、パケットは以下の通りです。

Ethernet II, Src: cc:01:0b:24:00:00 (cc:01:0b:24:00:00), Dst: IPv4mcast_01:01:01 (01:00:5e:01:01:01)
Internet Protocol, Src: 192.168.0.2 (192.168.0.2), Dst: 239.1.1.1 (239.1.1.1)
Internet Group Management Protocol
    [IGMP Version: 1]
    Type: Membership Report (0x12)
    Header checksum: 0xfdfc [correct]
    Multicast Address: 239.1.1.1 (239.1.1.1)

multicast groupの離脱

last hot routerはMembership Queryに対して3回(回数のチューニング不可)応答がなかった場合、multicast memberは存在しないと判断し、multicastを転送しないようになります。

IGMPv1 設定

multicast receiverの設定

以下のコマンドを入力する事で、multicast memberに参加する事ができます。このような設定を使う事で、ルータをmulticast receiver代わりにエミュレートする事ができます。なお、デフォルトでIGMP version 2が使用されますので、IGMP version 1を使用する場合は明示的なversion指定が必要です。

Router(config-if)# ip igmp join-group <group_addr>
Router(config-if)# ip igmp version 1

last hop routerの設定

multicast-routingを有効にし、さらにpimを有効にすると、multicast memberが存在すると判断した場合は、multicast packetを転送するようになります。設定コマンドは以下の通りです。なお、デフォルトでIGMP version 2が使用されますので、IGMP version 1を使用する場合は明示的なversion指定が必要です。

Router(config)# ip multicast-routing
Router(config)# interface <interface>
Router(config-if)# ip pim { dense-mode | sparse-mode | sparse-dense-mode }
Router(config-if)# ip igmp version 1

任意の設定として、query-intervalの設定やdr-priorityの設定が可能です。

Router(config-if)# ip igmp query-interval <sec>
Router(config-if)# ip pim dr-priority <priority>

動作確認

R1, R2をmulticast receiverとして、R3, R4をlast hop routerとして設定します。

        e0/0      e0/0
  +------+.1      .3+------+
  |  R1  +----┬----+  R3 | 
  +------+    │    +------+
              │
  +------+    │    +------+
  |  R2  +----┴----+  R3 | 
  +------+.2      .4+------+
        e0/0      e0/0

        192.168.0.0/24
 [R1]
interface Ethernet0/0
 ip address 192.168.0.1 255.255.255.0
 ip igmp join-group 239.1.1.1
 ip igmp version 1

 [R2]
interface Ethernet0/0
 ip address 192.168.0.2 255.255.255.0
 ip igmp join-group 239.1.1.1
 ip igmp version 1

 [R3]
ip multicast-routing 
!
interface Ethernet0/0
 ip address 192.168.0.3 255.255.255.0
 ip pim dr-priority 10
 ip pim dense-mode
 ip igmp version 1
 ip igmp query-interval 15

 [R4]
ip multicast-routing 
!
interface Ethernet0/0
 ip address 192.168.0.4 255.255.255.0
 ip pim dense-mode
 ip igmp version 1
 ip igmp query-interval 15

なお、設定全文は下記ファイルです。

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
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Ethernet0/0
 ip address 192.168.0.1 255.255.255.0
 ip igmp join-group 239.1.1.1
 ip igmp version 1
 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
!
!
!
!
!
!
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
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Ethernet0/0
 ip address 192.168.0.2 255.255.255.0
 ip igmp join-group 239.1.1.1
 ip igmp version 1
 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
!
!
!
!
!
!
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 Ethernet0/0
 ip address 192.168.0.3 255.255.255.0
 ip pim dr-priority 10
 ip pim dense-mode
 ip igmp version 1
 ip igmp query-interval 15
 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
!
!
!
!
!
!
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 Ethernet0/0
 ip address 192.168.0.4 255.255.255.0
 ip pim dense-mode
 ip igmp version 1
 ip igmp query-interval 15
 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
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end

パケットの観察

IGMPに関するパケットのみを抽出します。特筆すべき事は以下の通りです。

  • membership queryを送信するのはDRルータのみです。
  • R1, R2の両方がmembership reportを返信します。

最初はR3, R4の両方がqueryを送信していますが、dr-priorityが大きいR3がPIM DRとして選出されると、R3のみがqueryを送信するようになります。

membership reportに着目すると、R1, R2の両方がmembership reportを返信している事が分かります。IGMPv1では全てのmulticast memberが返信する仕様になっていますが、IGMPv2では帯域節約のために1台のmulticast memberが返信する仕様になっています。

No.     Time        Source                Destination           Protocol Info
      1 0.000000    192.168.0.3           224.0.0.1             IGMP     V1 Membership Query
      4 1.094000    192.168.0.1           239.1.1.1             IGMP     V1 Membership Report
      5 1.203000    192.168.0.2           239.1.1.1             IGMP     V1 Membership Report
     10 15.016000   192.168.0.3           224.0.0.1             IGMP     V1 Membership Query
     13 16.078000   192.168.0.1           239.1.1.1             IGMP     V1 Membership Report
     17 16.172000   192.168.0.4           224.0.0.1             IGMP     V1 Membership Query
     19 16.188000   192.168.0.2           239.1.1.1             IGMP     V1 Membership Report
     22 16.234000   192.168.0.4           224.0.0.1             IGMP     V1 Membership Query
     28 17.094000   192.168.0.1           239.1.1.1             IGMP     V1 Membership Report
     29 17.203000   192.168.0.2           239.1.1.1             IGMP     V1 Membership Report
     39 30.031000   192.168.0.3           224.0.0.1             IGMP     V1 Membership Query
     43 31.078000   192.168.0.1           239.1.1.1             IGMP     V1 Membership Report
     44 31.188000   192.168.0.2           239.1.1.1             IGMP     V1 Membership Report
     50 45.031000   192.168.0.3           224.0.0.1             IGMP     V1 Membership Query
     55 46.094000   192.168.0.1           239.1.1.1             IGMP     V1 Membership Report
     56 46.203000   192.168.0.2           239.1.1.1             IGMP     V1 Membership Report
     64 60.047000   192.168.0.3           224.0.0.1             IGMP     V1 Membership Query
     68 61.094000   192.168.0.1           239.1.1.1             IGMP     V1 Membership Report
     69 61.203000   192.168.0.2           239.1.1.1             IGMP     V1 Membership Report
     76 75.047000   192.168.0.3           224.0.0.1             IGMP     V1 Membership Query
     79 76.078000   192.168.0.1           239.1.1.1             IGMP     V1 Membership Report
     81 76.188000   192.168.0.2           239.1.1.1             IGMP     V1 Membership Report
     91 90.063000   192.168.0.3           224.0.0.1             IGMP     V1 Membership Query
     95 91.188000   192.168.0.2           239.1.1.1             IGMP     V1 Membership Report
     96 92.078000   192.168.0.1           239.1.1.1             IGMP     V1 Membership Report
    104 105.078000  192.168.0.3           224.0.0.1             IGMP     V1 Membership Query
    108 106.203000  192.168.0.2           239.1.1.1             IGMP     V1 Membership Report
    109 107.094000  192.168.0.1           239.1.1.1             IGMP     V1 Membership Report

話がやや横道にそれますが、PIM DRの選出方法についてまとめます。PIM DRは以下のように決定されます。

  • dr-priorityが大きいルータがPIM DRとして選出されます。
  • dr-priorityが等しい場合は、IPアドレスが大きいルータがPIM DRとして選出されます。

PIMに関するパケットをキャプチャすると以下の通りです。IPアドレスやdr-priorityに関する情報が含まれている事が読み取れます。

Ethernet II, Src: cc:02:06:f8:00:00 (cc:02:06:f8:00:00), Dst: IPv4mcast_00:00:0d (01:00:5e:00:00:0d)
Internet Protocol, Src: 192.168.0.3 (192.168.0.3), Dst: 224.0.0.13 (224.0.0.13)
Protocol Independent Multicast
    Version: 2
    Type: Hello (0)
    Checksum: 0xb187 [correct]
    PIM parameters
        Holdtime (1): 105s 
        Generation ID (20): -681683621
        DR Priority (19): 10
        Unknown option (21), length: 4, value: 0x1000000

設定確認

以下のコマンドで、multicast memberを確認する事ができます。Expiresはmulticast memberとして認識しなくなるまでの残り時間です。15秒間隔(デフォルトでは60秒)で3回応答がない場合はmulticast memberとして削除する仕様なので、この場合はExpires30秒から45秒の間を遷移するはずです。

R3#show ip igmp groups
IGMP Connected Group Membership
Group Address    Interface                Uptime    Expires   Last Reporter   Group Accounted
239.1.1.1        Ethernet0/0              00:02:51  00:00:38  192.168.0.2
224.0.1.40       Ethernet0/0              00:04:51  00:00:38  192.168.0.4
R3#

以下のコマンドでIGMPに関する設定を確認する事ができます。IGMP version, query interval, DRルータなどの項目は要チェックです。

R3#show ip igmp interface Ethernet 0/0
Ethernet0/0 is up, line protocol is up
  Internet address is 192.168.0.3/24
  IGMP is enabled on interface
  Current IGMP host version is 1
  Current IGMP router version is 1
  IGMP query interval is 15 seconds
  Inbound IGMP access group is not set
  IGMP activity: 2 joins, 0 leaves
  Multicast routing is enabled on interface
  Multicast TTL threshold is 0
  Multicast designated router (DR) is 192.168.0.3 (this system)
  IGMP querying router is 192.168.0.3 (this system)
  Multicast groups joined by this system (number of users):
      224.0.1.40(1)
R3#
タイトルとURLをコピーしました