VyOSでマルチキャストによる動画配信を簡単に検証したので、まとめます。
- 検証環境
- VyOS 1.4.0-rolling-202206290841 (sagitta)
- 動画テスト用:VLC Media Player
- Cent OS 7.4
マルチキャストとは
1つの送信元から複数の宛先へ、UDPベースで 同じデータを送る通信。
(例:リアルタイム 映像配信など)
配信にはクラスDアドレス(224.0.0.0 ~ 239.255.255.255)が使用され、サーバが配信するデータがネットワーク上で複製されてクライアントに到達する。サーバから送信されたデータをクライアントまで転送する為、マルチキャスト ルーティング が必要となる。
マルチキャスト ルータ が使用するプロトコルは2種類。
- IGMP:マルチキャスト クライアント が、マルチキャスト ルータ に自身の存在を通知する為のプロトコル(IGMP Join)
- PIM:マルチキャスト ルータ 間でのマルチキャスト クライアント の経路情報の交換/維持の為のプロトコル。一般的に RP(ランデブーポイント)と呼ばれるルータが中心となり、経路ツリーを維持する。(PIM-SMモード)
VyOSでの マルチキャストルーティング
今回はVyOSを使用してこちら を参照の上、マルチキャストルーティングを実施しました。
-
VyOS マルチキャスト ルーティングコマンド
- set protocols pim interface : PIMネイバーとの通信用に、インターフェースでPIMを有効化
- set protocols pim rp address group : IGMP Joinの送信先となるRPと、対象のネットワーク範囲を指定
- set protocols igmp interface : インターフェースでIGMPを有効化
マルチキャスト ルーティング 構成図
こちら の構成図の内容に基本的に揃えました。(Router2 の配下にマルチキャスト サーバ、Router1 の配下にマルチキャスト クライアントがあり、Router3 がRPです。)
マルチキャスト ルーティング コマンド設定例
上記構成にて実施した設定コマンドのサンプルです。
※ Router3のインターフェースを一部変更しています
# Router1 (マルチキャスト クライアント側)
set interfaces ethernet eth1 address '100.64.0.1/24'
set interfaces ethernet eth2 address '172.16.0.2/24'
set protocols ospf area 0 network '172.16.0.0/24'
set protocols ospf area 0 network '100.64.0.0/24'
set protocols igmp interface eth1
set protocols pim interface eth1
set protocols pim interface eth2
set protocols pim rp address 172.16.255.1 group '239.1.1.0/24
# Router3 (RP)
set interfaces dummy dum0 address '172.16.255.1/24'
set interfaces ethernet eth1 address ‘172.16.0.1/24’
set interfaces ethernet eth2 address '172.16.1.1/24'
set protocols ospf area 0 network '172.16.0.0/24'
set protocols ospf area 0 network '172.16.255.0/24'
set protocols ospf area 0 network '172.16.1.0/24'
set protocols pim interface dum0
set protocols pim interface eth1
set protocols pim interface eth2
set protocols pim rp address 172.16.255.1 group '239.1.1.0/24'
マルチキャスト 動画配信の確認
こちら を参考に、CentOS 7.4 上にVLC Media Playerをインストールし、動画配信を実施しました。配信用のMP4動画 はこちら を利用させていただきました。
実行結果として、マルチキャスト サーバからマルチキャスト クライアントに動画が配信される様子が確認出来ました(クライアント側で、マルチキャストアドレス 239.1.1.1 アドレスにてRTP により動画を受信)
マルチキャスト 確認コマンド
以下 いくつかshowコマンドにて、マルチキャストルーティング の動作を確認しました。
# Router1 VyOSマルチキャストルーティングテーブルの確認(Sparseモードで動作)
vyos@Router-1:~$ show ip multicast route
IP Multicast Routing Table
Flags: S - Sparse, C - Connected, P - Pruned
R - SGRpt Pruned, F - Register flag, T - SPT-bit set
Source Group Flags Proto Input Output TTL Uptime
100.64.0.2 239.1.1.1 SP none eth1 none 0 --:--:--
# PIMが動作するインターフェースを確認
vyos@Router-1:~$ show ip pim interfaces
Interface State Address PIM Nbrs PIM DR FHR IfChannels
eth1 up 100.64.0.1 4 172.16.1.2 0 0
eth2 up 172.16.0.2 4 172.16.1.2 0 0
pimreg up 0.0.0.0 0 local 0 0
# PIMネイバーを確認
vyos@Router-1:~$ show ip pim neighbor
Interface Neighbor Uptime Holdtime DR Pri
eth1 172.16.0.1 00:13:54 00:01:20 1
eth1 172.16.1.1 00:13:54 00:01:20 1
eth1 10.0.0.1 00:13:54 00:01:20 1
eth1 172.16.1.2 00:13:54 00:01:20 1
eth2 10.0.0.1 00:13:54 00:01:20 1
eth2 172.16.1.2 00:13:54 00:01:20 1
eth2 172.16.0.1 00:13:54 00:01:20 1
eth2 172.16.1.1 00:13:54 00:01:20 1