名前
routed — ネットワークルーティングデーモン書式
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 が受信した
レスポンス
パケットは、
ルーティングテーブルを更新するために使われる:
- 到達先ネットワークまたは到達先ホストについての ルーティングテーブルのエントリが存在せず、 かつ到達先を示すメトリックが「到達可能」である場合 (すなわち、ホップカウントが無限大でない場合)。
- パケットの送信元ホストが、 既存のルーティングテーブルのエントリにあるネットワーク間ルータと同じ場合。 つまり、到達先へのパケットをルーティングする ルータそのものから、更新された情報を受け取る場合。
- ルーティングテーブルの既存のエントリが 一定期間 (90 秒と定義されている) 更新されておらず、 このルートが少なくとも現在のルートと同じくらい有効な価値がある場合。
- 新しいルートが、現在ルーティングテーブルに格納されているルートと比べて、 到達先へのより短いルートを表している場合。 これを決定するために、新しいルートのメトリックを テーブルに格納されているルートのメトリックと比較する。
- -d
- 不正なパケットを受信したというような、 付加的なデバッグ情報をログに記録するようにする。
- -g
- このフラグは、ネットワーク間ルータにおいて ``default'' の到達先へのルートを設けるために使われる。 このフラグは、インターネットのゲートウェイや、 他のローカルルータにルートを報告しない 別のルーティングプロトコルを利用するゲートウェイで、 典型的に使われる。
- -s
- このオプションを指定すると、 ネットワーク間ルータとして動作しているか否かに関係なく、 routed に強制的にルーティング情報を提供させる。 複数のネットワークインターフェースがある場合や、 point-to-point リンクを使用中である場合は、これがデフォルトである。
- -q
- このオプションは、 -s オプションの反対である。
- -t
- -t オプションが指定すると、 送受信した全てのパケットが標準出力に表示される。 更に、 routed は自分自身を制御端末から切り離さないため、 キーボードからインタラプトを入力すればプロセスが kill される。
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>
キーワード net
と host
はそれぞれ、ルートがネットワークに付いてのルートなのか、
特定のホストについてのルートなのかを示す。
name1
は、到達先ネットワークまたはホストの名前である。
この名前は、
/etc/networks または
/etc/hosts
にあるシンボル名でもよい
(また、 routed が
named(8)
の後に起動される場合は、
ネームサーバがこの名前を知っていなければならない)。
また、
「ドット」表記で指定したインターネットアドレスでもよい。
inet(3)
を参照すること。
name2
は、メッセージがフォワードされるべきゲートウェイの名前またはアドレスである。
value
は、到達先ホストまたはネットワークへのホップカウントを表すメトリックである。
キーワード passive,
active, external
の 1 つを使って、
ゲートウェイが
passive または
active として
(上記のように)
扱われる必要があるか、
あるいはゲートウェイが
routed
プロトコルのスコープで
external
であるのかを示す。
Arpanet や Milnet
に直接接続されたネットワーク間ルータは、
ルーティング情報を集めるために
(EGP) を使うべきである。
さもなければ、passive
ゲートウェイの静的ルーティングテーブルを使うことになる。
EGP
は、ローカルネットワークに対して
他のインターネットシステムへのルートを提供するために必要である。
ファイル
- /etc/gateways
- 遠隔ゲートウェイについての情報を記述するファイル
関連項目
udp(7), icmp(7) Internet Transport Protocols, XSIS 028112, Xerox System Integration Standard.バグ
routed は (動作などが) 疑わしい。 gated(8) または zebra(8) の使用を考慮に入れること。 リダイレクトによりルートが変更または追加された場合、 カーネルのルーティングテーブルと routed のルーティングテーブルが対応しない可能性がある。 routed は、 raw ソケット経由で受信した ICMP パケットを読み込むことにより、 受信したリダイレクトを注目すべきである。 routed は他のルーティングプロトコルも組み込むべきである。 各プロトコルに対して別々のプロセスを使うには、 余計なルートや競合するルートを排除するために、設定オプションが必要である。 routed は、より多くの情報を集めるために、 IMP のようなインテリジェントなインタフェースで接続を待つべきである。 routed は、(例えば、出力側の失敗といった) ネットワークインターフェースの 一方向の失敗を、常に検出できるとは限らない。履歴
routed コマンドは 4.2BSD で登場した。翻訳者謝辞
この man ページの翻訳にあたり、 FreeBSD jpman project <http://www.jp.freebsd.org/man-jp/> による翻訳を参考にさせていただいた。December 11, 1993 | Linux NetKit (0.17) |