スポンサーリンク

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]
−d
オプションが与えられないか、もしくは debug level として 0 が指 定された場合、 mrouted は起動された端末から切り離されます。それ以 外の場合は、 mrouted は、起動された端末に残り、起動された端末から のシグナルを受け付けます。 debug level の指定の有無にかかわらず、 mrouted は常に警告メッセージやエラーメッセージを syslogd に対して 送ります。 −debug-level 引数は、次に示すものをコンマで区切ったリ ストです:

packet
送受信したすべてのパケットに関し、タイプ・ソース・宛先を 表示します。

pruning
送受信した枝苅りに関し、更なる情報を表示します。

routing
送受信した経路更新パケットに関し、更なる情報を表示しま す。

route_detail
経路更新に関し、過度に詳細な程表示します。大概の場合、情 報が多すぎるでしょう。

neighbors
隣接ルータ発見に関し、情報を表示します。

cache
カーネルのフォワーディングキャッシュに関し、挿入・削除・ 更新を表示します。

timeout
タイムアウトと定期処理をデバッグします。

interface
インタフェースとその設定に関し、情報を表示します。

membership
物理インタフェースにおけるグループメンバシップに関し、情 報を表示します。

traceroute
このルータを通過するマルチキャスト経路追跡要求に関し、情 報を表示します。

igmp
グループメンバシップおよび問い合わせ者選出を含む IGMP 操 作を表示します。

icmp
ICMP 操作を監視します。

rsrr
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
親に送った枝苅りの平均生存時間を、秒で指定します。実際の生存時間 は [.5secs,1.5secs] の範囲でランダムとなります。デフォルトは 7200 (2 時間) です。小さな値を設定するとこのルータおよび親ルータが保存 する状態は少なくなりますが、ブロードキャストの頻度が高くなるとい う弊害があります。隣接ルータのリブート判定に DVMRP の世代 ID を使 用しないルータがあります (例えば 3.3 以前の mrouted と、cisco の IOS の現在知られている全バージョン)。リブートからの回復時間を短縮 するために、これらの隣接ルータに送信した枝苅りを保持する時間は短 くすべきです。このような状況で使用する場合、後述するように prune_lifetime キーワードをインタフェースに指定すると良いでしょ う。

noflood
mrouted
ユーティリティは DVMRP 最適化を使用し、各隣接ルータに対し て個々にルーティングテーブルを持つことを避けます。接続されている 個々のサブネットに対し、自己がフォワーダであると開始時に仮定する ことも、この最適化の一部です。ちょうど今開始したルータと正しい フォワーダの両方がトラフィックをフォワードすることにより、短期間 (およそ経路報告間隔 1 回分) 重複が生じることがあります。この動作 は noflood キーワードを指定することにより停止できます。 mrouted が自己をフォワーダであると仮定しなくなるためです。 noflood を指定 すると、再開時におよそ経路報告間隔 1 回分、ブラックホールを生じさ せることがあります。 noflood キーワードは個々のインタフェースに指 定可能です。

rexmit_prunes [on|off]
デフォルトでは、枝苅りを全ポイントツーポイントインタフェース (ト ンネル含む) に対して再フォワードしますが、マルチアクセスインタ フェースに対しては行いません。本オプションを使用すると、全インタ フェースに対してデフォルトをオン (またはオフ) にします。 rexmit_prunes キーワードもまた個々のインタフェースに指定可能で す。

name boundary-name scoped-addr/mask-len
boundary-name
scoped-addr/mask-len で記述される境界に関連付 け、設定ファイルにおいて、インタフェース設定を読み易くし、繰り返 しを減らします。

設定ファイルの第 2 の部分は、空でも構いませんが、物理インタフェースに適用 されるオプションを記述します。

phyint local-addr|ifname
phyint コマンド自身は何もしません。単なる埋め草であり、この後にイ ンタフェース固有のコマンドが続きます。インタフェースのアドレスま たは名前を指定します。

disable
本インタフェースにおけるマルチキャストのフォワーディングを無効に します。デフォルトでは、 mrouted はローカルに接続されたマルチキャ スト可能なインタフェースをすべて発見し、それらすべてに対してフォ ワードします。

netmask netmask
カーネルの netmask がサブネットを正確に反映していない場合 (例えば IP サブネット化の代りに代理 ARP 使用の場合)、 netmask コマンドを 使用して実際の netmask を記述してください。

altnet network/mask-len
phyint が複数の IP からなるサブネットに接続されている場合、 altnet キーワードを使用してそれぞれのサブネットについて記述して下 さい。本コマンドを複数回使用して、複数のサブネットを記述可能で す。

igmpv1
phyint 上に IGMPv1 ルータが存在する場合、 igmpv1 キーワードを使用 して mrouted を強制的に IGMPv1 モードにしてください。 phyint 上の 全ルータは、同じバージョンの IGMP を使用する必要があります。

force_leaf
このインタフェース上の他のルータを無視するように、 mrouted に強制 します。 mrouted は、本インタフェース上では、隣接ルータへプローブ や経路報告を送りませんし、受け付けません。

更に、後述する共通の vif コマンドを phyint に対してすべて使用可能です。

設定ファイルの第 3 の部分は、これも空でも構いませんが、このルータが持つ DVMRP トンネルの設定を記述します。

tunnel local-addr|ifname remote-addr|remote-hostname
このコマンドは、このホスト (local-addr または ifname で記述される インタフェース) とリモートホスト (remote-addr または remote-hostname で識別されます) との間の DVMRP トンネルを確立しま す。リモートのホスト名は、単一の IP アドレスにマップされる場合の み使用可能です。トンネルは、使用前に、両方のルータ上で構成されて いる必要があります。

リモートアドレスへのユニキャスト経路が、 local-addr|ifname で指定 されるインタフェースから出て行くように気を付けてください。 mrouted が扱うパケットのソースアドレスを、送出インタフェースのア ドレスに書き換えてしまう UNIX カーネルがあります。安全第一のため には、静的なホスト単位の経路を使用してください。

次の共通の vif コマンドを tunnel や phyint に対してすべて使用可能です。

metric m
metric は、指定したインタフェースもしくはトンネルでデータグラムを 受信するための「コスト」であり、経路選択に影響を与えるために使用 します。 metric のデフォルト値は 1 です。 metric は可能なかぎり小 さくすべきです。なぜなら、 DVMRP は metric の合計が 31 を越える経 路を通ることができないからです。

advert_metric m
advert_metric は、指定したインタフェースもしくはトンネルでデータ グラムを送信するための「コスト」であり、経路選択に影響を与えるた めに使用します。 advert_metric のデフォルト値は 0 です。リンクの 実際の metric は一端の metric ともう一端の advert_metric との和で す。

threshold t
threshold は最小の IP の生存時間であり、この要件を満たすマルチ キャストデータグラムは指定したインタフェースもしくはトンネルに フォワードされます。このパラメータは、マルチキャストデータグラム の到達範囲を定めるために使用します (フォワードされたパケットの TTL は threshold と比較されるだけで、 threshold だけ TTL を減らす というわけではありません。すべてのマルチキャストルータは TTL を丁 度 1 づつ減らします)。 threshold のデフォルト値は 1 です。

特定のサブネットやトンネルへ接続される全マルチキャストルータは、 そのサブネットやトンネルに対し、一般的にはすべて同じ metric と threshold を持つべきです。

rate_limit r
rate_limit オプションによって、マルチキャストトラフィック用に何キ ロビット毎秒のバンド幅を割り当てるかを、ネットワーク管理者は指定 可能です。デフォルト値は、0 (無制限) です。

boundary boundary-name|scoped-addr/mask-len
boundary オプションは、ある範囲のアドレスに対する管理上の境界とし て、インタフェースを設定します。この範囲のアドレスに属するパケッ トは範囲内のインタフェースにはフォワードされません。boundary オプ ションは名前もしくは境界にて指定します。単一のインタフェースに対 して本コマンドを複数回使用して、複数の境界を記述可能です。

passive
もう一端から何かが聞こえるまで、このリンクまたはトンネルに対して パケットを送出しません。要求時にダイヤルするリンク上のトンネルに おける「サーバ」側で使用すると良いです。「サーバ」側を passive と することで、もう一方から何かが聞こえるまで定期的なプローブをサー バは送りませんので、リンクをアップ状態に保つということはありませ ん。トンネルの両端でこのオプションを指定すると、トンネルはいつに なっても使えないでしょう。

noflood
前述の通りですが、このインタフェース/トンネルに対してのみ適用され ます。

prune_lifetime secs
前述の通りですが、このインタフェース/トンネルに対してのみ適用され ます。

rexmit_prunes [on|off]
前述の通りですが、このインタフェース/トンネルに対してのみ適用され ます。枝苅りの再送信のデフォルトは、ポイントツーポイントリンクと トンネルではオンであり、マルチアクセスリンクではオフです。

allow_nonpruners
デフォルトでは、枝苅りをサポートしないと主張する DVMRP 隣接ルータ とは mrouted は仲間にはなりません。本オプションを使用すると、本イ ンタフェースにおいて、このようなルータとも仲間となります。

notransit
経路フィルタリングの特殊ケースです。 "notransit" とマークされたイ ンタフェースから学習された経路は、他の "notransit" とマークされた インタフェースにおいて広告されません。単一のインタフェースのみを "notransit" とマークしても、意味はありません。

accept|deny (route/mask-len [exact])+ [bidir]
accept および deny のコマンドにより、原始的な経路フィルタリングが 可能となります。 accept コマンドにより、設定されたインタフェース に関してリストされた経路のみ、 mrouted は受け付けます。 deny コマ ンドにより、リストされた経路以外のすべての経路を、 mrouted は受け 付けます。ひとつのインタフェースには、 accept または deny のどち らかのみ使用可能です。

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

#
# atm0 は我々の ATM インタフェースであり、
# マルチキャストを正しくサポートしません。
phyint atm0 disable
#
# これは、別の EE サブネットに対する内部トンネルです。
# トンネルはイーサネット上にあるので、
# トンネルのデフォルトのレート制限を取り除きます。
tunnel 192.168.5.4 192.168.55.101 metric 1 threshold 1

rate_limit 0

#
# これは外世界に対する我々のトンネルです。
# これらの境界には注意してくださいね、Eugene (訳注: ユージーン; 人名)。
tunnel 192.168.5.4 10.11.12.13 metric 1 threshold 32

boundary LOCAL boundary EE

シグナル

mrouted ユーティリティは次のシグナルに反応します。

       HUP

mrouted を再スタートします。設定ファイルは再度読み込まれます。

INT
後かたづけをしてから実行終了します (たとえば、隣接するルータすべ てにさよならのメッセージを送ります)。

TERM
INT と同じです。

USR1
内部ルーティングテーブルを /var/tmp/mrouted.dump にダンプします。

USR2
内部キャッシュテーブルを /var/tmp/mrouted.cache にダンプします。

QUIT
内部ルーティングテーブルを stderr にダンプします。ただし、 mrouted が 0 以外の debug level の時のみです。

シグナルを送る際の便宜のために、 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

3 36.2.0.8

tunnel: 36.6.8.23

3 16

Multicast Routing Table (1136 entries)
Origin-Subnet From-Gateway Metric Tmr In-Vif Out-Vifs
36.2 1 45 0 1* 2 3*
36.8 36.8.0.77 4 15 2 0* 1* 3*
36.11 1 20 1 0* 2 3*
.
.
.

この例では、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
/var/tmp/mrouted.dump
/var/tmp/mrouted.cache

関連項目

map-mbone(8), mrinfo(8), mtrace(8)

DVMRP は、他のマルチキャスト経路制御アルゴリズムと共に、 ACM SIGCOMM ’88 コンファレンスのプロシーディングに、 S. Deering が "Multicast Routing in Internetworks and Extended LANs" として記述しています。

作者

Steve Deering,
Ajit Thyagarajan,
Bill Fenner

FreeBSD 10.0 May 8, 1995 FreeBSD 10.0

スポンサーリンク