ROUTED(8C) — UNIX Programmer’s Manual
名称
routed − ネットワークルーティングデーモン
形式
/etc/routed [ −d ] [ −g ] [ −s ] [ −q ] [ −t ] [ logfile ]
解説
routed は、ネットワークのルーティングテーブルを 管理するためにブート時に呼び出されます。 このルーティングデーモンは、 最新のカーネルルーティングテーブルエントリを 維持するために、ゼロックスの NSルーティング情報プロトコルの 修正版を使用します。 以前は複数のアドレスタイプで使用できる 一般化されたプロトコルを使用していましたが、 現在は、一群のネットワーク内での インターネットルーティングのためだけに使用されています。
通常のオペレーションでは、 routed は、 route サービス (services(5) 参照)のための udp(4P) ソケットでルーティング情報パケットを待ちます。 ホストがインターネットワークルータである場合には、 直接接続されているホストおよび ネットワークへ そのルーティングテーブルの コピーを定期的に供給します。
routed は、開始されると、SIOCGIFCONF の ioctl を使用して、システムに組み込まれて “up”とマークされている 直接接続のインタフェースを見つけます (ソフトウェアループバックインタフェースは無視されます)。 複数のインタフェースがある場合には、 ホストがネットワーク間で パケットの転送を行うことが想定されます。 次に、 routed は、 (インタフェースが ブロードキャストパケットを サポートしている場合には、 ブロードキャストパケットを使用して) 各インタフェースへ request パケットを送り、ループに入って、 他のホストからの request および response パケットを待ちます。
request パケットが受信されると、 routed は、その内部テーブルに維持されている情報を 基にして応答を作成します。その生成された response パケットには、“ホップ数”距離 (“hop count”metric;以下、距離と記す) (16 以上の数は“無限である”と見なされる)を 用いてマークされた既知の各ルートのリストが含まれています。 返される各ルートに対応付けられている計量は、 sender に相対的な計量 となっています。
routed によって受け取られた response パケットは、 次の条件のうちの 1つが満足されれば、 ルーティングテーブルを更新するために使用されます。
(1) 宛先のネットワークまたは ホストについての ルーティングテーブルエントリが 存在していない、かつ、 その宛先を示す距離が「到達可能」である (すなわち、ホップ数が無限ではない)。
(2) そのパケットのソースホストが、 既存のルーティングテーブルエントリに あるルータと同じである。 つまり、宛先へのパケットが 経由して送られている、 まさにそのインターネットワークルータから 更新情報が受け取られているということである。
(3) ルーティングテーブル内の 既存のエントリが一定時間(90秒と定義されている) 更新されてなく、かつ、 そのルートが現在のルートよりも 少しでもコストの面で効率がよい。
(4) その新しいルートが、 ルーティングテーブルに 現在収められているものよりも、 宛先までへの短いルートになっている。 これを判定するために、 新しいルートの計量は テーブルに収められているものと比較される。
更新が適用される場合には、 routed は、その内部テーブルに変更を記録し、 カーネルルーティングテーブルを更新します。 その変更は、次に送られる response パケットに反映されます。
入ってくるパケットの処理のほかに、 routed は、ルーティングテーブルの定期的な チェックも行います。 あるエントリが 3分間更新されていない場合には、 そのエントリの距離を無限にセットし、 削除のためにマークします。 実際の削除は、 無効がローカルインターネット全体に 伝えられるのを確実にするために、さらに 60秒遅れます。
インターネットワークルータとして 働いているホストは、 30秒毎にそのルーティングテーブルを無償で、 直接接続されているすべてのホストとネットワークへ送ります。 ブロードキャスト機能があるネット上のブロードキャストアドレス、 二点間リンク上の宛先アドレス、 および他のネットワーク上のルータのアドレスへ応答が送られます。 各ネットワークでの応答の受信は、 そのネットワークとインタフェースが 正しく機能しているかどうかを判定するために使用されます。 あるインタフェースで応答が受信されない場合には、 そのインタフェースへの別のルートが選ぶか、 または代替ルートがなければ、 そのルートを落とすこともできます。
routed は、次のオプションをサポートしています。
−d 不良パケットの受信といったような、 付加的なデバッギング情報が記録されるようにします。
−g このフラグは、“デフォルトの”宛先へのルートを示すために、 インターネットワークルータに対して使用されます。 普通、これは、インターネットへのゲートウェイ、 またはルートが他のローカルルータへ報告されていない 別のルーティングプロトコルを 使用しているゲートウェイに対して使用されます。
−s このオプションは、インターネットワークルータとして 働いているかどうかについての ルーティング情報の供給を routed に強制します。これは、 複数のネットワークインタフェースがある場合、 または二点間リンクが使用されている場合には デフォルトになります。
−q −s オプションの反対です。
−t −t オプションが指定された場合には、 送信または受信されたすべてのパケットが標準出力に表示されます。 さらに、 routed は、キーボードからの割込みで プロセスが終了されるように、 制御端末を自分から切り離しはしません。
他の引数が与えられた場合には、 routed の活動を記録するログファイルの名前として解釈されます。 このログには、ルーティングテーブルに対する変更、 およびすべてのパケットをトレースしていない場合には、 送信または受信された、 変更されたルートに関する最近のメッセージの 履歴が収められます。
前述の機能に加え、 routed は、“遠方の” passive および active なゲートウェイの概念もサポートしています。 routed は、開始されると、 /etc/gateways を読み、SIOGIFCONF の ioctl からの情報を使用しただけでは 突き止めることができないゲートウェイを見つけます。 このようにして指定されたゲートウェイは、 それらがルーティング情報を交換することを 期待されないものである場合には passive とマークされていますが、 active とマークされているゲートウェイは、 ルーティング情報の交換を行うことをいとわない (すなわち、そのマシンで routed のプロセスを実行させる)はずです。 passive なゲートウェイは ルーティングテーブルに永久に維持され、 それらのゲートウェイの存在に関する情報は、 転送されるルーティング情報に含められます。 active なゲートウェイは、 ネットワークインタフェースと同様に扱われます。 ルーティング情報はゲートウェイに配布され、 一定の期間ルーティング情報が受け取られない場合には、 そのルートは削除されます。外部のゲートウェイも passive ですが、これはカーネルルーティングテーブルに 置かれることもなく、また、ルーティングの更新に 含められることもありません。 external エントリの機能は、 別のルーティングプロセスが そのようなルートをインストールすることになっていて、 その宛先への代替ルートがインストールされるべきではないことを routed に知らせることです。このようなエントリは、 両方のルータが同じ宛先へのルートを 知っている場合にだけ必要とされます。
/etc/gateways は、一連の行から成り、各行は次の形式になっています。
< net | host > name1 gateway name2 metric value < passive | active | external >
キーワード net または host は、そのルートがネットワークへのものか、 または特定のホストへのものかを示します。
name1 は、宛先のネットワークまたはホストの名前です。 これは、 /etc/networks または /etc/hosts にある記号名(または named(8) のあとに開始された場合は ネームサーバに知られているもの) もしくは“ドット”表記法で 指定されたインターネットアドレス (inet(3N) 参照)でも構いません。
name2 は、メッセージが送られる ゲートウェイの名前またはアドレスです。
value は、宛先のホストまたはネットワークへのホップ数です。
キーワード passive または、 active、 external は、それぞれ、そのゲートウェイが passive または active (前述)として扱われるべきか、 またはそのゲートウェイが routed のプロトコルの範囲の外にあるかどうかを示します。
Arpanet または Milnet へ直接接続されている インターネットワークルータは、 passive なゲートウェイの 静的なルーティングテーブルは使用せずに、 Exterior Gateway Protocol(EGP) を使用して ルーティング情報を収集する必要があります。 EGP は、ローカルネットワークのルートを インターネットシステムの残りの部分へ 提供するために必要とされます。 このような構成の支援を必要としているサイトは、 Berkeley にある Computer Systems Research Group へ連絡する必要があります。
関連ファイル
/etc/gateways 遠方のゲートウェイ用
関連事項
“Internet Transport Protocol”, XSIS 028112, Xerox System Integration Standard.
udp(4P), XNSrouted(8C), htable(8)
バグ
カーネルのルーティングテーブルは、 リダイレクト (ネットワークの付け変え) でルートが変わったり追加された時、 routed のルーティングテーブルに対応しません。 これを解決する唯一の方法は、 ルーティング処理をカーネル内に置くことです。
他のルーティングプロトコル、たとえば、 Xerox NS (XNSrouted(8C)) や EGP といったものも routed に組み込むべきです。 それぞれについて別々のプロセスを使用することは、 過剰なまたは競合するルートを防止するための 構成オプションを必要とします。
routed は、より多くの情報を収集するためには、 IMP のようなインテリジェントインタフェースや ICMP のような エラープロトコルに従う必要があります。 routed は、ネットワークのインタフェースでの単一方向の失敗 (例えば、出力側が失敗したとき)を常に検出することはできません。
NEWS-OS Release 3.3