routed(8) ネットワークルーティングデーモン

書式

routed [-d ] [-g ] [-q ] [-s ] [-t ] [logfile ]

説明

routed は、ネットワークのルーティングテーブルを管理するために、ブート時に起動される。 ルーティングデーモンは、 Xerox NS ルーティング情報プロトコル (Routing Information Protocol) を変更したものを使う。 これにより、カーネルのルーティングテーブルのエントリを最新に保つ。 このサーバは、複数のアドレスタイプを使用できる一般化したプロトコルを使う。 しかし、現在のところは、ネットワーククラスタ内で インターネットのルーティングをするためだけに使われている。

通常の運用において routed は、 ルーティング情報パケットを待つために、 route(8) サービス ( services(5) を参照) 用の udp(4) ソケットの接続を待つ。 ホストがネットワーク間のルータである場合、 routed は、直接接続されている全てのホストとネットワークに、 ルーティングテーブルの複製を定期的に提供する。

routed が動作し始めると、 システムで設定されており、 かつ ``up'' とマークされている 直接接続されたインターフェースを探すために、 SIOCGIFCONF ioctl(2) が使われる (ソフトウェアループバックインターフェースは無視される)。 複数のインターフェースが存在する場合、 ホストはネットワーク間でパケットを転送するものと仮定される。 それから routed は、 リクエスト パケットを各インターフェースから送信する (インターフェースがサポートしている場合は、ブロードキャストパケットを使う)。 そして、 routed は、他のホストからの リクエスト パケットと レスポンス パケットの接続を待つループに入る。

リクエスト パケットを受信すると、 routed は内部テーブルで管理している情報に基づいてリプライを作成する。 作成された レスポンス パケットには既知のルートのリストが含まれ、 各ルートには「ホップカウント」メトリックが付く (16 以上のホップカウントは「無限大」とみなされる)。 ここで返された各ルートのメトリックは、 送信者からの相対的な メトリックである。

以下の条件を満たす場合、 routed が受信した レスポンス パケットは、 ルーティングテーブルを更新するために使われる:

  1. 到達先ネットワークまたは到達先ホストについての ルーティングテーブルのエントリが存在せず、 かつ到達先を示すメトリックが「到達可能」である場合 (すなわち、ホップカウントが無限大でない場合)。
  2. パケットの送信元ホストが、 既存のルーティングテーブルのエントリにあるネットワーク間ルータと同じ場合。 つまり、到達先へのパケットをルーティングする ルータそのものから、更新された情報を受け取る場合。
  3. ルーティングテーブルの既存のエントリが 一定期間 (90 秒と定義されている) 更新されておらず、 このルートが少なくとも現在のルートと同じくらい有効な価値がある場合。
  4. 新しいルートが、現在ルーティングテーブルに格納されているルートと比べて、 到達先へのより短いルートを表している場合。 これを決定するために、新しいルートのメトリックを テーブルに格納されているルートのメトリックと比較する。

更新が行われた場合、 routed は内部テーブルの変更を記録し、カーネルのルーティングテーブルを更新する。 この変更は次に レスポンス パケットを送信する際に反映される。

routed は外部からのパケットを処理するのに加え、 定期的にルーティングテーブルのエントリをチェックする。 エントリが 3 分間以上更新されていない場合、 そのエントリのメトリックは無限大に設定され、 削除のためのマークが付けられる。 そのエントリの失効が ローカルのインターネット上で通知されるのを保証するために、 削除は更に 60 秒後になる。

ネットワーク間ルータとして動作しているホストは、 直接接続された全てのホストやネットワークに対して、 30 秒毎に無条件でルーティングテーブルを提供する。 レスポンスは、 ブロードキャスト機能を持つネットワークのブロードキャストアドレス・ point-to-point リンクの到達先アドレス・ ルータ自身の他のネットワークでのアドレス に対して送信される。 無条件にレスポンスを送信する場合、 通常のルーティングテーブルは無視される。 ネットワークとインターフェースが正しく機能しているかを、 各ネットワークがレスポンスを受信できるか否かを使って決定する。 あるインターフェースでレスポンスが受信できない場合、 そのインターフェースに対してルーティングするために別のルートを選択する。 また、他のルートもない場合、そのルートはルーティングテーブルから削除される。

routed がサポートするオプションを示す:

-d
不正なパケットを受信したというような、 付加的なデバッグ情報をログに記録するようにする。
-g
このフラグは、ネットワーク間ルータにおいて ``default'' の到達先へのルートを設けるために使われる。 このフラグは、インターネットのゲートウェイや、 他のローカルルータにルートを報告しない 別のルーティングプロトコルを利用するゲートウェイで、 典型的に使われる。
-s
このオプションを指定すると、 ネットワーク間ルータとして動作しているか否かに関係なく、 routed に強制的にルーティング情報を提供させる。 複数のネットワークインターフェースがある場合や、 point-to-point リンクを使用中である場合は、これがデフォルトである。
-q
このオプションは、 -s オプションの反対である。
-t
-t オプションが指定すると、 送受信した全てのパケットが標準出力に表示される。 更に、 routed は自分自身を制御端末から切り離さないため、 キーボードからインタラプトを入力すればプロセスが kill される。

この他に指定された引き数は、 routed の動作を記録するファイルの名前として解釈される。 このログにはルーティングテーブルの変更が記録される。 また、全てのパケットを追跡しない場合は、 変更されたルートに関連して送受信された最新のメッセージの履歴も記録される。

上記の機能に加えて、 routed は「遠隔にある」 passive もしくは active なゲートウェイという概念をサポートする。 routed が起動すると、 SIOGIFCONF ioctl(2) からの情報のみでは突き止められない可能性のあるゲートウェイを見付けるために、 /etc/gateways ファイルが読み込まれる。 このようにして指定したゲートウェイには、 ルーティング情報を交換するつもりがない場合には、 passive というマークを付ける必要がある。 また、ルーティング情報を交換する場合には、 active というマークを付ける必要がある (すなわち、この場合には routed がマシン上で稼働している必要がある)。 passive ゲートウェイを通るルートは、 起動時に一度だけカーネルのルーティングテーブルに設定される。 このようなルートは、送信されるルーティング情報には含まれない。 active ゲートウェイは、ネットワークインターフェースと同様に扱われる。 ルーティング情報はゲートウェイに配布される。 また、一定時間ルーティング情報が受信されない場合、 それに関連したルートは削除される。 external とマークされたゲートウェイも passive であるが、 カーネルのルーティングテーブルに載ることもなく、 ルーティングの更新時にもその情報が含められることはない。 external エントリの機能は、 routed に対して、 「別のルーティングプロセスがそのようなルートを追加する可能性があり、 その到達先に対して他のルートを設定すべきでない」 と知らせることである。 external エントリは、 2 つのルータが同じ到達先へのルートを覚えてもよい場合にのみ、必要である。

/etc/gateways は、以下のフォーマットの行で構成される: < net | host > name1 gateway name2 metric value < passive | active | external >

キーワード nethost はそれぞれ、ルートがネットワークに付いてのルートなのか、 特定のホストについてのルートなのかを示す。

name1 は、到達先ネットワークまたはホストの名前である。 この名前は、 /etc/networks または /etc/hosts にあるシンボル名でもよい (また、 routednamed(8) の後に起動される場合は、 ネームサーバがこの名前を知っていなければならない)。 また、 「ドット」表記で指定したインターネットアドレスでもよい。 inet(3) を参照すること。

name2 は、メッセージがフォワードされるべきゲートウェイの名前またはアドレスである。

value は、到達先ホストまたはネットワークへのホップカウントを表すメトリックである。

キーワード passive active external の 1 つを使って、 ゲートウェイが passive または active として (上記のように) 扱われる必要があるか、 あるいはゲートウェイが routed プロトコルのスコープで external であるのかを示す。

Arpanet や Milnet に直接接続されたネットワーク間ルータは、 ルーティング情報を集めるために (EGP ) を使うべきである。 さもなければ、passive ゲートウェイの静的ルーティングテーブルを使うことになる。 EGP は、ローカルネットワークに対して 他のインターネットシステムへのルートを提供するために必要である。

ファイル

/etc/gateways
遠隔ゲートウェイについての情報を記述するファイル

バグ

routed は (動作などが) 疑わしい。 gated(8) または zebra(8) の使用を考慮に入れること。

リダイレクトによりルートが変更または追加された場合、 カーネルのルーティングテーブルと routed のルーティングテーブルが対応しない可能性がある。 routed は、 raw ソケット経由で受信した ICMP パケットを読み込むことにより、 受信したリダイレクトを注目すべきである。

routed は他のルーティングプロトコルも組み込むべきである。 各プロトコルに対して別々のプロセスを使うには、 余計なルートや競合するルートを排除するために、設定オプションが必要である。

routed は、より多くの情報を集めるために、 IMP のようなインテリジェントなインタフェースで接続を待つべきである。 routed は、(例えば、出力側の失敗といった) ネットワークインターフェースの 一方向の失敗を、常に検出できるとは限らない。

履歴

コマンドは BSD 4.2 で登場した。

翻訳者謝辞

この man ページの翻訳にあたり、 FreeBSD jpman project <http://www.jp.freebsd.org/man-jp/> による翻訳を参考にさせていただいた。