MROUTED(8) FreeBSD システム管理者マニュアル MROUTED(8)
名称
mrouted − IP マルチキャストルーティングデーモン |
書式
mrouted [−c config_file] [−d [debug_level]] [−p] |
解説 |
mrouted ユーティリティは、Distance-Vector Multicast Routing Protocol (DVMRP) の実装です。 DVMRP の以前のバージョンは RFC1075 で規定されていま す。本コマンドは distance-vector routing protocol (RIP に似たプロトコルで あり、RFC1058 に記述されています) を使うことで、ネットワークトポロジに関 する情報を管理し、そのプロトコルの上で、Reverse Path Multicasting と呼ば れるマルチキャストデータグラムフォワーディングアルゴリズムを実装していま す。 mrouted ユーティリティは、マルチキャストデータグラムを、データグラムが生 成されたサブネットを幹として樹状に構成されるパス上に、パスの最短距離を通 過するようにして送出します。マルチキャストツリーは目的のグループを含むサ ブネットを越えないブロードキャストツリーと考えることができます。したがっ て、データグラムはマルチキャストの受け手がいない枝には送出されません。さ らに、マルチキャストデータグラムパケットの生存時間によっては、到達できる 範囲が限定される場合もあります。 IP マルチキャストをサポートしない (ユニキャスト) ルータを介したサブネット 間で、マルチキャストを実現するために、 mrouted の実装にはトンネリングのサ ポートも含まれます。トンネリングとは、インターネットのあらゆるところにて 稼働しているマルチキャストルータの組の間で仮想的なポイントツーポイントリ ンクを確立する技術です。 IP マルチキャストパケットは、トンネルを通過する ところでカプセル化されます。間にあるルータ及びサブネットにとっては、カプ セル化されたパケットは、通常のユニキャストデータグラムに見えます。トンネ ルの入口でカプセル化が行われ、トンネルの出口でカプセルが取り外されます。 パケットは、IP-in-IP プロトコル (IP プロトコル番号 4) を用いることでカプ セル化を行ないます。古いバージョンの mrouted のトンネリングは、 IP ソース ルーティングを用いたものですが、これはルータによっては大きな負荷をかける ことになります。本バージョンでは、IP ソースルーティングを用いたトンネリン グはサポートしません。 トンネリング機構の実装により、 mrouted は、実際のインターネットとは独立 の、マルチキャストパケットのみを扱う広範囲の自立システムに跨る仮想イン ターネットを構築できます。この機能は、普通の (ユニキャスト) ルータによる マルチキャストルーティングの広範囲なサポートがなされるまで、インターネッ トマルチキャスティングのみを実験的にサポートするように意図したものです。 mrouted ユーティリティは distance vector ルーティングプロトコルが持つよく 知られたスケーリングの問題の影響を被りますし、階層的なマルチキャストルー ティングを (まだ) サポートしていません。 mrouted ユーティリティはマルチキャストルーティングのみを扱いますので、 mrouted と同じ機械の上でユニキャストルーティングソフトが走っていてもいな くても構いません。トンネリングを利用すれば、 mrouted はマルチキャストフォ ワーディングのためにひとつより多くの物理的なサブネットにアクセスする必要 がありません。 次のオプションを使用可能です: |
−c config_file
別の設定コマンドファイルを指定します。デフォルトは /etc/mrouted.conf です。 −d [debug_level] packet pruning routing route_detail neighbors cache timeout interface membership traceroute igmp icmp rsrr 起動にともない、 mrouted はそのプロセス ID を /var/run/mrouted.pid ファイルに書き出します。 設定 |
mrouted ユーティリティは、自動的にすべてのマルチキャスト可能なインタ フェース、つまり、IFF_MULTICAST フラグがセットされたインタフェース (ルー プバックインタフェースは除きます) に対して初期化を行い、別の DVMRP ルータ に直接接続可能なインタフェースを探索します。デフォルトの設定を上書きす る、あるいは別のマルチキャストルータに対するトンネルリンクを付加するに は、 /etc/mrouted.conf (もしくは −c オプションによって指定されるファイル) を編集します。 ファイルの形式は自由です。すなわち、空白文字 (改行も含みます) は意味を持 ちません。 mrouted の操作全体またはデフォルト設定に適用されるコマンドか ら、ファイルは開始します。 |
cache_lifetime secs
カーネル内のマルチキャストフォワーディングキャッシュ経路エントリ の生存時間を、秒で指定します。カーネル内のマルチキャストフォワー ディングキャッシュのエントリは、 secs 秒毎にチェックされ、ソース がアクティブな場合にはリフレッシュされ、そうでない場合は削除され ます。この値を設定するときには注意してください。小さな値を設定す るとカーネルキャッシュは小さくなりますが、定期的な送信者がいると キャッシュの「スラッシング」が起るという弊害がありますし、大きな 値を設定すると許容できない程カーネルキャッシュが大きくなります。 デフォルトは 300 (5 分) です。 prune_lifetime secs noflood rexmit_prunes [on|off] name boundary-name scoped-addr/mask-len 設定ファイルの第 2 の部分は、空でも構いませんが、物理インタフェースに適用 されるオプションを記述します。 phyint local-addr|ifname disable netmask netmask altnet network/mask-len igmpv1 force_leaf 更に、後述する共通の vif コマンドを phyint に対してすべて使用可能です。 設定ファイルの第 3 の部分は、これも空でも構いませんが、このルータが持つ DVMRP トンネルの設定を記述します。 tunnel local-addr|ifname
remote-addr|remote-hostname リモートアドレスへのユニキャスト経路が、 local-addr|ifname で指定 されるインタフェースから出て行くように気を付けてください。 mrouted が扱うパケットのソースアドレスを、送出インタフェースのア ドレスに書き換えてしまう UNIX カーネルがあります。安全第一のため には、静的なホスト単位の経路を使用してください。 次の共通の vif コマンドを tunnel や phyint に対してすべて使用可能です。 metric m advert_metric m threshold t 特定のサブネットやトンネルへ接続される全マルチキャストルータは、 そのサブネットやトンネルに対し、一般的にはすべて同じ metric と threshold を持つべきです。 rate_limit r boundary boundary-name|scoped-addr/mask-len passive noflood prune_lifetime secs rexmit_prunes [on|off] allow_nonpruners notransit accept|deny (route/mask-len [exact])+ [bidir] accept と deny のキーワードの後には、経路のリストが続きます。経路 の後にキーワード exact が続くと、その経路のみがマッチします。指定 しない場合には、その経路とより具体的な経路がマッチします。例え ば、 deny 0/0 はすべての経路を拒否しますが、 deny 0/0 exact はデ フォルト経路のみ拒否します。デフォルト経路は default キーワードで 指定することも可能です。 bidir キーワードは双方向の経路フィルタリングを可能にします。フィ ルタは、出力および入力の両方の経路に適用されます。 bidir キーワー ドを指定しないと、 accept および deny のフィルタは、入力に対して のみ適用されます。 Poison reverse 経路は、フィルタにより取り除か れることはありません。 mrouted ユーティリティは、 2 つ以上の有効な vif (仮想インタフェース) が無 いときには実行を開始しません。 vif はマルチキャスト可能な物理インタフェー スもしくはトンネルです。すべての仮想インタフェースがトンネルの場合は警告 が記録されます。そのような mrouted の設定は、より多くの直接トンネルを指定 した方が良いかもしれません (中間管理者を削除するという意味です)。 設定例 |
次に示すのは大きな学校にある架空のマルチキャストルータでの例です。 # # mrouted.conf の例 # # 簡単に記述するため、境界に名前を付けます。 name LOCAL 239.255.0.0/16 name EE 239.254.0.0/16 # # le1 は compsci に対する我々のゲートウェイであり、 # ローカルグループはそちらにフォーワードしません。 phyint le1 boundary EE # # le2 は classroom ネット上の我々のインタフェースであり、 # 4 つの異なった長さのサブネットがあります。 # IP アドレスでもインタフェース名でも使えることに注意。 phyint 172.16.12.38 boundary EE altnet 172.16.15.0/26 |
altnet 172.16.15.128/26 altnet 172.16.48.0/24 |
# |
rate_limit 0 |
# |
boundary LOCAL boundary EE |
シグナル
mrouted ユーティリティは次のシグナルに反応します。 |
HUP
mrouted を再スタートします。設定ファイルは再度読み込まれます。 INT TERM USR1 USR2 QUIT シグナルを送る際の便宜のために、 mrouted は開始時に自身のプロセス ID を /var/run/mrouted.pid に書き出します。 使用例 |
ルーティングテーブルは次のようになります: Virtual Interface Table Vif Local-Address Metric Thresh Flags 0 36.2.0.8 subnet: 36.2/16 1 1 querier groups: 224.0.2.1 224.0.0.4 pkts in: 3456 pkts out: 2322323 1 36.11.0.1 subnet: 36.11/16 1 1 querier groups: 224.0.2.1 224.0.1.0 224.0.0.4 pkts in: 345 pkts out: 3456 2 36.2.0.8 tunnel: 36.8.0.77 3 1 peers: 36.8.0.77 (3.255) boundaries: 239.0.1/24 : 239.1.2/24 pkts in: 34545433 pkts out: 234342 |
tunnel: 36.6.8.23 |
3 16 |
Multicast Routing Table (1136 entries) この例では、4 つの vif が 2 つのサブネットと 2 つのトンネルにつながってい ます。 vif 3 がつながったトンネルは使われていません (peer アドレスが有り ません)。 vif 0 と vif 1 がつながったサブネットにはいくつかのグループが有 ります。トンネルにはグループは有りません。この例の mrouted は、 "querier" フラグが示すように、定期的なグループメンバシップの問い合わせを vif 0 およ び vif 1 サブネットにて送出する責任が有ります。境界のリストは当該インタ フェースのアドレス範囲が示されます。入力及び出力パケット数が各インタ フェースに対して示されます。 マルチキャストデータグラムの起源となりうるサブネットに関連して表示される 情報は、直前のホップのルータのアドレス (サブネットが直接接続されていない 場合)、起源までのパスの metric、当該サブネットから最後に更新を受信してか ら経過した時間、当該起源からのマルチキャストが入力される vif、出力 vif 一 覧です。 "*" は、起源を根とするブロードキャストツリーの葉に、当該出力 vif が接続していることを意味します。宛先グループのメンバが当該葉にいる時の み、当該起源からのマルチキャストデータグラムを当該出力 vif からフォワード します。 mrouted ユーティリティはカーネル内のフォワーディングキャッシュテーブルも 管理します。エントリの生成及び削除は mrouted が行います。 キャッシュテーブルは次のようなものです: Multicast Routing Cache Table (147 entries) Origin Mcast-group CTmr Age Ptmr IVif Forwvifs 13.2.116/22 224.2.127.255 3m 2m - 0 1 >13.2.116.19 >13.2.116.196 138.96.48/21 224.2.127.255 5m 2m - 0 1 >138.96.48.108 128.9.160/20 224.2.127.255 3m 2m - 0 1 >128.9.160.45 198.106.194/24 224.2.135.190 9m 28s 9m 0P >198.106.194.22 各エントリは起源のサブネット番号、マスク、宛先マルチキャストグループにて 区別します。 ’CTmr’ フィールドは当該エントリの生存時間を表します。このタイマ値が 0 ま で減算されたエントリはキャッシュテーブルから削除されます (エントリはトラ フィックが流れるとリフレッシュされます)。 ’Age’ フィールドはこのエントリ が最初に生成されてから経過した時間を表します。キャッシュエントリはリフ レッシュされるため、当該エントリに関するトラフィックが続く限りルーティン グエントリは生き残ります。 ’Ptmr’ フィールドは、上流に枝刈が送出されていなければ単に -、そうでないば あいには上流の枝刈がタイムアウトするまでの時間を表します。 ’Ivif’ フィールドは起源からのマルチキャストパケットが入力される vif を表 します。各ルータは特定のソース及びグループに関し、隣接するルータより受信 する枝刈数の記録も管理します。あるサブネットに関してマルチキャストツリー の下流の枝においてマルチキャストグループのメンバが存在しない場合、上流の ルータに対して枝刈メッセージが送信されます。この場合、vif 番号の後に "P" が付けられます。 ’Forwvifs’ フィールドはソースグループに属するデータグラムがフォワードされ るインタフェースを表します。 "p" は、このインタフェースを介してフォワード されるデータグラムが存在しないことを表します。リストされないインタフェー スは葉のサブネットであり、特定のグループのメンバを当該サブネットに持ちま せん。インタフェースにおける "b" の表示は、当該インタフェースが境界インタ フェースであることを表します。すなわち、範囲内のアドレスのトラフィックは 当該インタフェースを介してフォワードされないことを意味します。 ">" を最初の文字として表示する追加の行は、当該サブネット上のソースを表し ます。 1 つのサブネット上に複数のソースが存在可能であることに注意して下さ い。 "<" を最初の文字として表示する追加の行は、このサブネットもしくはグ ループに関して、下流の隣接ルータから受信した枝苅りを表示します。 |
関連ファイル
/etc/mrouted.conf
/var/run/mrouted.pid 関連項目 |
map-mbone(8), mrinfo(8), mtrace(8) DVMRP は、他のマルチキャスト経路制御アルゴリズムと共に、 ACM SIGCOMM ’88 コンファレンスのプロシーディングに、 S. Deering が "Multicast Routing in Internetworks and Extended LANs" として記述しています。 |
作者
Steve Deering, FreeBSD 10.0 May 8, 1995 FreeBSD 10.0 |