Chapter 8. マルチキャストのルーティング

FIXME: 編集者がいません!

Multicast-HOWTO は (あえて言えば) 古代のもので、 そのため各所に不正確な部分や間違いがあります。

どのようなものであれ、マルチキャストルーティングを行う前には、 カーネルを設定して行いたいルーティングのタイプをサポートさせる必要があります。 これは逆に、どのようなマルチキャストルーティングを使うのかは、 自分で決めなければならない、ということでもあります。 「通常」のタイプは、基本的に 4 つあります。 DVMRP (RIP ユニキャストプロトコルのマルチキャスト版)、 MOSPF (同じく OSPF のマルチキャスト版)、 PIM-SM ("Protocol Independent Multicasting - Sparse Mode": マルチキャストグループのユーザが集中しておらず、分散していると仮定しています)、 PIM-DM (上記の "Dense Mode" で、同じマルチキャストグループに属するユーザは、 ある程度まとまっていると仮定しています)、です。

Linux カーネルには、これらの選択肢は登場しません。 プロトコルそのものは、Zebra, mrouted, pimd などの ルーティングアプリケーションが扱うからです。 しかしそれでも、どれを用いるかはしっかり決めておかないと、 カーネルで正しいオプションを選ぶことができません。

すべてのマルチキャストルーティングにおいて、 まず何はおいても "multicasting" と "multicast routing" は必ず 有効にしておかなければなりません。 DVMRP と MOSPF では、これだけで OK です。 PIM を用いるつもりなら、接続しているネットワークにおける PIM のバージョンに応じて、PIMv1 か PIMv2 かのどちらかも 有効にしておかなければなりません。

前述の選択を行ったら、新しい Linux カーネルをコンパイルします。 するとブート時に IP プロトコルがリストされ、 ここでは IGMP が含まれているはずです。 これはマルチキャストグループを管理するプロトコルです。 これを書いている現在では、Linux は IGMP の バージョン 1 と 2 だけしかサポートしていませんが、 バージョン 3 も既に存在し、文書化されています。 しかしバージョン 3 はかなり新しく、 IGMPv3 の拡張機能はそれほど利用されていないので、 これはあまり大きな問題にはなりません。 IGMP はグループを扱うので、グループ全体のうち、 最もシンプルなバージョンの IGMP における機能だけが 用いられることになります。 ほとんどの場合これは IGMPv2 になるでしょうが、 IGMPv1 になることもまだあるでしょう。

ここまではいいですね。マルチキャスティングを有効にできました。 さて、ルーティングを開始するには マルチキャストで実際に何らかの作業を行うよう Linux カーネルに伝える必要があります。 これは、マルチキャスト仮想ネットワークを経路テーブルに追加することを意味します。

ip route add 224.0.0.0/4 dev eth0

(当然ですが、ここではマルチキャスティングを eth0 で行っているとしています! ほかのデバイスを使いたかったらここを置き換えてください。)

では、パケットをフォワードするよう指示しましょう…

echo 1 > /proc/sys/net/ipv4/ip_forward

ここまでのところで、 これがいったい何を行うのか、不思議に思っているかもしれません。 そこで、接続テストとして、デフォルトのグループ 224.0.0.1 に ping して、 誰かが生きているか見てみることにしましょう。 マルチキャストを有効にした LAN のマシンはすべて応答するはずですが、 ほかには何も起こりません。どのマシンも 224.0.0.1 という IP アドレスは持っていません。なんと不思議なことでしょう! :) これはグループアドレス (購読者への「ブロードキャスト」)であって、 グループのすべてのマシンは、グループアドレスではなく、 すべて自分自身のアドレスで応答するのです。

ping -c 2 224.0.0.1

これで、実際のマルチキャストルーティングを行う準備ができました。 さて、2 つのネットワークがあり、この間でルーティングを行いたいとしましょう。

(続く!)