ネットワーク

GNS3でMulticast labを構築しよう

詳解IPマルチキャストを読み終えました!

マルチキャストド素人でPIM…?IGMP…?はてさて…状態から、Multicast labを構築しバリバリ検証できちゃうくらいまで進化しました。
恐るべし!詳解IPマルチキャスト!
内容も本当にわかりやすく書かれていて、今後マルチキャストを勉強しようと思っている方は絶対に読んだほうがいいです。

また、僕は勉強する上でMulticast routingの理解度を深める為に、GNS3上でラボを構築し検証を行いました。
今後Multicastの検証を始める人の手助けとなるよう、構築方法を書いてみたいと思います。

1.準備するもの
GNS3(GNS3 version 1.3.11 on Windows (64-bit) with Python 3.4.2 Qt 4.8.6.)
Virtual Box(バージョン 5.0.10 r104061)
Linux OS(ubuntu-ja-15.10-desktop-amd64.iso)
VLC Media Player

2.Virtual Boxの環境構築
まずVirtual-BoxにLinuxを導入します。
左上アイコンの新規(N)から任意の名前(以下Linux#1)/Linux/Ubuntu(64-bit)を入力/選択し、次へ
全て 次へ でハードディスクのファイルタイプでは VDI を選択
物理ハードディスクにあるストレージでは固定サイズ を選択し、任意の値を入力(僕は8GBにしています)

これで、Virtual Box上にLinux#1が表示されるので、実際に起動します。
起動後はLinux OS(ubuntu-ja-15.10-desktop-amd64.iso)を選択しインストールします。
※詳細に知りたい方はVirtual Box Ubuntu インストール 等でググってください

3.Linuxの環境構築
次はLinuxの環境構築をします。
インターネットに接続できる環境で、Ubuntuソフトウェアセンターを起動し、VLCで検索
VLCメディアプレイヤーがヒットするので、インストールします。

次に、システム設定からipアドレスを設定します。
システム設定⇒ネットワーク⇒オプション⇒IPv4設定から任意の値を設定します。
この際、Virtual Boxの設定でネットワークアダプタを有効にし、割り当てを汎用ドライバーとしてください。

次に、マルチキャストとして配信する動画ファイルを準備します。
今回はこちらから動画をお借りしました。

ここまで完了すれば、一度Linuxを終了します。
そしてVirtual BoxでLinux#1を右クリックし、クローンをクリックします。
任意の名前を入力し、リンクしたクローンを選択しクローンを作成します。
これにより、Linux_testのコピーを作成することができます。
※Multicast SourceとReceiverで計2台必要なため、クローンを作成しています。

4.GNS3でネットワークを構築
GNS3上にネットワークを構築します。

LinuxをGNS3上に読み込ませるには
Edit⇒Preferences⇒Virtual Box VMsからLinux testを追加します。

これによって、GNS3にLinux#1が追加されます。

今回使用するトポロジは以下の通りです。
Multicast topology

Linux#1
eth0 172.16.1.100/24

IOU1
eth0/0 172.16.1.1/24
eth0.1 172.16.11.1/24

IOU2
eth0/0 172.16.6.1/24
eth0/1 172.16.11.2/24

Linux#2
eth0 172.16.6.100/24

—————————————-
#IOU1_config
ip multicast-routing
!
interface Ethernet0/0
ip address 172.16.1.1 255.255.255.0
ip pim dense-mode
!
interface Ethernet0/1
ip address 172.16.11.1 255.255.255.0
ip pim dense-mode
!
router ospf 1
network 172.16.0.0 0.0.255.255 area 0

#IOU2_config
ip multicast-routing
!
interface Ethernet0/0
ip address 172.16.6.1 255.255.255.0
ip pim dense-mode
!
interface Ethernet0/1
ip address 172.16.11.2 255.255.255.0
ip pim dense-mode
!
router ospf 1
network 172.16.0.0 0.0.255.255 area 0
—————————————-

Multicast routingはunicast routingができることが”大前提”となるので、ホスト間での疎通確認を行います。

Ping3 Ping4

疎通確認がとれました。

では、実際にMulticast routingを検証してみます。

まず、Multicast ReceiverであるLinux#2をMulticast groupに参加させます。
Linux2でVLCを起動し、メディア⇒ネットワークストリームを開くを選択し
udp://@239.1.1.1 を入力し再生をクリック

これにより、Multicast group 239.1.1.1に参加するメンバーシップレポートをLinux#2が送信します。
実際にIOU2でdistribution treeを見てみましょう

IOU2#show ip mroute 239.1.1.1
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, E – Extranet,
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,
G – Received BGP C-Mroute, g – Sent BGP C-Mroute,
N – Received BGP Shared-Tree Prune, n – BGP C-Mroute suppressed,
Q – Received BGP S-A Route, q – Sent BGP S-A Route,
V – RD & Vector, v – Vector, p – PIM Joins on route
Outgoing interface flags: H – Hardware switched, A – Assert winner, p – PIM Join
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 239.1.1.1), 00:00:44/00:02:26, RP 0.0.0.0, flags: DC
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
Ethernet0/1, Forward/Dense, 00:00:44/stopped
Ethernet0/0, Forward/Dense, 00:00:44/stopped

IOU2はメンバーシップレポートを受信したことにより、Muticast group 239.1.1.1に対するdistribution treeを作成しました。

次に、Multicast SourceであるLinux#1から実際にMulticastを配信してみましょう。

Mcast

端末から ls を入力し、multicastとして配信する動画データがあることを確認(今回はmovie.mp4を配信します)

次に
vlc movie.mp4 –sout udp://239.1.1.1 –ttl 15 –loop –intf ncurses

を入力し、VLCからMulticast gorup 239.1.1.1宛にmovie.mp4を配信します。

では実際に各ルータでMulticastが配信されているか確認してみましょう。

IOU1#show ip mroute 239.1.1.1
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, E – Extranet,
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,
G – Received BGP C-Mroute, g – Sent BGP C-Mroute,
N – Received BGP Shared-Tree Prune, n – BGP C-Mroute suppressed,
Q – Received BGP S-A Route, q – Sent BGP S-A Route,
V – RD & Vector, v – Vector, p – PIM Joins on route
Outgoing interface flags: H – Hardware switched, A – Assert winner, p – PIM Join
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 239.1.1.1), 00:01:01/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:01:01/stopped

(172.16.1.100, 239.1.1.1), 00:01:01/00:01:58, flags: T
Incoming interface: Ethernet0/0, RPF nbr 0.0.0.0
Outgoing interface list:
Ethernet0/1, Forward/Dense, 00:01:01/stopped

IOU2#show ip mroute 239.1.1.1
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, E – Extranet,
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,
G – Received BGP C-Mroute, g – Sent BGP C-Mroute,
N – Received BGP Shared-Tree Prune, n – BGP C-Mroute suppressed,
Q – Received BGP S-A Route, q – Sent BGP S-A Route,
V – RD & Vector, v – Vector, p – PIM Joins on route
Outgoing interface flags: H – Hardware switched, A – Assert winner, p – PIM Join
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 239.1.1.1), 00:08:07/stopped, RP 0.0.0.0, flags: DC
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
Ethernet0/1, Forward/Dense, 00:08:07/stopped
Ethernet0/0, Forward/Dense, 00:08:07/stopped

(172.16.1.100, 239.1.1.1), 00:00:13/00:02:46, flags: T
Incoming interface: Ethernet0/1, RPF nbr 172.16.11.1
Outgoing interface list:
Ethernet0/0, Forward/Dense, 00:00:13/stopped

Multicastが配信されたことにより、IOU1/2でSource treeが作成されています。
※今回はPIMがdence-modeなため

IOU2側で実際にMulticastを受信できているか確認します。

IOU2#show ip mroute 239.1.1.1 count
Use “show ip mfib count” to get better response time for a large number of mroutes.

IP Multicast Statistics
3 routes using 1914 bytes of memory
2 groups, 0.50 average sources per group
Forwarding Counts: Pkt Count/Pkts per second/Avg Pkt Size/Kilobits per second
Other counts: Total/RPF failed/Other drops(OIF-null, rate-limit etc)

Group: 239.1.1.1, Source count: 1, Packets forwarded: 75992, Packets received: 75992
Source: 172.16.1.100/32, Forwarding: 75992/724/1344/7791, Other: 75992/0/0

Multicast SourceであるLinux#1(172.16.1.100)から、Multicastを受信できていることが確認できます。

以上がMulticast labの構築、及び検証となります!
よければ皆さんも実際に構築してみて、Multicastと素敵な日々を過ごしてみてください!

何か質問等あれば、コメントにてお願いします。

そして、実はこの土日を使ってMPLS VPNの勉強もある程度すませてしまいました!
設定は癖があるものの、割と理解しやすかったですね!

次は究めるOSPFを読破して、9月末のCCIE Writtenに向けて問題集をひたすら解く!
そのあとは、いよいよCisco Pressを読みます。。。

英語のドキュメントを読むのは初めてですが、まずは一冊読破できるよう頑張ります!