インフラエンジニアに成る

しゃべるインフラエンジニア。

タグ: IGMP

前にいったとおりマルチキャストの設定を
Ciscoルータ実機にいろいろと組み込んでみた。

理屈や理論はわからずとも
とりあえずコマンドをたたいてその動作を観察すると
見えてくることがある。

---マルチキャスト

PIM(Protocol Independent Multicast)
 | →マルチキャスト用のルーティングプロトコル
 |  マルチキャストパケットをルータ間で伝送するには
 |  ルーティングプロトコルを用いる。
 |
 |---PIM-DM(Dense Mode):発信元配布ツリー
 |---PIM-SM(Sparse Mode):共有配布ツリー

マルチキャストルーティングプロトコルでは
パケットを配布する配布ツリーが構成される。
配布されるマルチキャストパケットの行きと帰りの
インタフェース(L3デバイス)を確認し特定するのがRPF。

PIM-DMの場合
→ルータ全体にマルチキャストパケットをフラッディング。
 そこから必要のない行き先をIGMPを使って取り除いて
 マルチキャストルーティングを形成する。
 このときフローごとのツリーが複数形成される。

PIM-SMの場合
ランデブーポイント(RP)を作成して単体のツリーで
 マルチキャストトラフィックを管理する。
 つまり発信元のルータは1台だけ。
 他のルータは必要なフローに応じてJoinメッセージで
 RPとやりとりする。
 PIM-DMと違いフラッディングによる負荷はないが、
 RPとなったルータの負荷は高い。

※ PIM-SMってRPのルータに障害がおきたら
  どうなるんだろうね。OSPFのDR/BDRのように
  バックアップとなるルータはなさそうだし。
  マルチキャストも奥がふかそうだなあ。

(L3のIGMP情報をL2デバイスで管理する方法)

CGMP(Cisco Group Multicast Protocol)
→Cisco独自。Ciscoルータ(CGMP ON)とやりとりして
 ホストのMAC情報を取得して管理する。
 これによりスイッチでフローを管理できる。
 Catalystスイッチにぶらさがった
 マルチキャストを利用するホストが対象。

IGMPスヌーピング
→L2スイッチにIGMPメッセージを盗ませる方法。
 IGMPv1/v2のjoin/leaveメッセージを認識できる。
 ただし、L3情報も扱う分負荷は高い。

(マルチキャストコマンド)
・PIM-SMでRPルータを作成。
 IGMPを利用するインタフェースをUpして
 PCと接続すると以下のメッセージがコンソール出力。
---
00:13:15: IP(0): s=192.168.0.1 (Ethernet0) d=224.0.1.39 id=8, prot=17, len=62(48), RPF lookup failed for source or RP
---show run
Router2514_B#show run | include ip pim
 ip pim sparse-mode
ip pim rp-address 192.168.0.1
ip pim send-rp-announce Ethernet0 scope 20
ip pim send-rp-discovery scope 20
---
で、マルチキャストルーティングを見ると
---
Router2514_B#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

(*, 224.0.1.39), 00:01:03/00:02:54, RP 192.168.0.1, flags: SJCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Ethernet0, Forward/Sparse, 00:01:03/00:02:54

(*, 224.0.1.40), 00:01:03/00:02:10, RP 192.168.0.1, flags: SJCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Ethernet0, Forward/Sparse, 00:01:03/00:02:10
---
Router2514_B#show ip pim int

Address          Interface                Ver/   Nbr    Query  DR     DR
                                          Mode   Count  Intvl  Prior
192.168.0.1      Ethernet0                v2/S   0      30     1      192.168.0.1

IGMPはVer2ってことか。DRとあるということはBDRもつくれるのか?
Queryの間隔はデフォルトで30秒。
---
ルータと接続したPCでEtherealを起動してパケットキャプチャ。
定期的に送られてくるマルチキャストパケットを見てみる。
RPを設定しているのでRPのパケットが流れている。

224.0.1.39:IGMP V2 MemberShip Report(RP Announce)
224.0.1.40:IGMP V2 MemberShip Report(RP Discovery)
Auto-RPというマッピング機能が働く。

224.0.0.1:MemberShip Query
224.0.0.13
:PIM V2 Hello
---

続きを読む

マルチキャストは苦手だ。

実際に構築してみないと動きがよくわからないものの
ひとつだと思う。
動かしたことがないのでよーくわからない。
って、えらそうにいうことではないな。

とりあえずまとめカキカキ。

---マルチキャスト
(レイヤ3マルチキャストアドレス ※ 予約済み)
リンクローカル:224.0.0.0〜224.0.0.255
 →TTL=1。つまり内部専用。
グローバルスコープ:224.0.1.0 〜 238.255.255.255
他にSSMやGLOPに管理スコープなどなどあるが、
リンクローカルアドレスの代表的な
224.0.0.*のいくつかが頭に入ればいいと思う。

・IGMP(INternet Group Management Protocol)
→PC-ルータ間でマルチキャストを操作するプロトコル。
 所属しているグループを把握する。Ver1〜3まである。
バージョンがあがるごとにマルチキャストアドレスのやりとりが
効率よくなっている。

RPF(Reverse Path Forwarding)

---実機でコマンドをたたいてみた
Router2514_B(config)#ip multicast-routing
Router2514_B(config-if)#ip pim ?
  dense-mode             Enable PIM dense-mode operation
  sparse-dense-mode      Enable PIM sparse-dense-mode operation
  sparse-mode            Enable PIM sparse-mode operation
Router2514_B(config)#ip pim rp-address 192.168.0.10 override
Router2514_B(config)#ip pim send-rp-announce ethernet 0 scope 20
Router2514_B(config)#ip pim send-rp-discovery scope 20
Router2514_B(config)#ip pim ?
  rp-address            PIM RP-address (Rendezvous Point)
  send-rp-announce      Auto-RP send RP announcement
  send-rp-discovery     Auto-RP send RP discovery message
Router2514_B(config)#ip pim send-rp-discovery ?
  scope              Scope of the RP discovery packets
Router2514_B#show run
Building configuration...
!
ip pim rp-address 192.168.0.10 override
ip pim send-rp-announce Ethernet0 scope 20
ip pim send-rp-discovery scope 20
!
---
なんかいろいろとコマンドがある。
どれも全然おぼえていないんだが。
せっかくなんで時間のあるときに試そうと思う。
パケットキャプチャすれば動きがなんとなくわかるだろう。

そういえば、日経ネットワーク7月号を読んだが、
L3スイッチで実現できるマルチキャストの特集をやっていたな。
もうちょっと読んどこ。

このページのトップヘ