Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ gated(8) — NEWS-os 4.1C

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

routed(8)

GATED(8)  —  NEWS-OS Programmer’s Manual

名称

gated − ゲートウェイ用ルーティングデーモン

形式

gated [ −t[ierpuRHN] ] [ logfile ]

解説

Gated は、いくつかのプロトコルを処理するルーティングデーモンで routed(8), egpup や HELLO ルーティングプロトコルを処理するものに 置き代わるものです。 Gated は、RIP, EGP, HELLO ルーティングプロトコルを処理します。 Gated は、コンフィグレーションにしたがって、上記のプロトコルのいかなる 組合せにも対応することが出来ます。 コンフィグレーションは、"/etc/gated.conf" に記述します。

コマンドラインからのトレースオプション

Gated は、いくつかのトレースフラグとともに起動され、ログファイルを指定する ことも可能です。 また、トレースフラグは、コンフィグレーションファイルの中で “traceflags” として指定することも可能です。 ログファイルなしでトレースフラグが指定された場合をのぞいて、 Gated は、fork し制御端末を切り離します。 ログファイルが指定されない場合は、制御端末にトレース情報を 出力します。 現在有効なトレースフラグは以下のとおりです。

−t これが単独で用いられた場合は、 すべてのエラーメッセージ、 経路の変更、 送受信された EGP パケットが出力されます。 すなわち i, e, r, p のすべてのフラグが自動的にオンになります。 他のフラグとともに用いられた場合には、そのフラグが優先されます。 トレースを望む場合は、 −t とともに指定されなければなりません。

i すべての内部エラーおよびインテリアルーティングエラーを出力します。

e すべての EGP による外部エラー、 エクステリアルーティングエラー および EGP の状態変化を出力します。

r 経路情報の変化をすべて出力します。

p EGP パケットの送受信を出力します。

u p, R, H, N のいずれかとともに用いられると、それぞれのルーティングパケットの 内容を(送受信ともに)出力します。

R RIP パケットの送受信を出力します。

H HELLO パケットの送受信をを出力します。

N SNMP パケットのやりとりを出力します。

Gated は、常にフェータルエラーを出力します。 ただし、ログファイルが指定されず、トレースフラグもセットされないと すべてのメッセージは、"/dev/null" に送られます。

シグナル処理

Gated は、いくつかのシグナルに応じて特別な処理をします。 gated は、SIGHUP, SIGINT SIGUSR1 を受け付けます。

SIGHUP が送られ、かつ gated がトレースフラグおよびログファイルが指定されているときには、 トレースフラグはいったんオフになり、ログファイルはクローズされます。 このときログファイルは、移動あるいは削除されてもかまいません。 次の SIGHUP によって gated は、トレースフラグを再びオンにします。 Gated は、このときコンフィグレーションファイルを読みそのなかで "traceflags" に指定されているフラグをセットします。 もし、"traceflags" に関する記述がない場合には、コマンドラインからの 入力にしたがって再開します。 必要に応じてコマンドラインで指定されたログファイルが作成され、 そのファイルにトレースが出力されます。 すでにログファイルが存在している場合には、そこに追加されます。 これは、 syslogd(8) のようにログファイルをローテートする場合に有用です。

SIGINT を受けると、 gated は 60 秒以内にメモリーのダンプを取るようにセットされます。 メモリーダンプは、"/usr/tmp/gated_dump" に書かれます。 Gated は、メモリーダンプの前にペンデングとなっている経路の 更新を行います。 このメモリーダンプは、現在の gated の状態のスナップショットです。 このなかには、インターフェースのコンフィグレーションや EGP neighbor の状態、ルーティングテーブルが含まれています。 "/usr/tmp/gated_dump" がすでに存在する場合は、そこに追加されます。

SIGUSR1 を受けた場合には、 gated は、コンフィグレーションファイルからある種の情報を読み直します。 現在読み直す情報は、"announcetoAS", "noannouncetoAS", "validAS" です。 エラーがなければ新しいコンフィグレーションが使われますが、 エラーがあればコンフィグレーションは変更されません。 また、 gated は、SIGUSR1 を受けるとインターフェースの状態をチェックします。

トレースのためのコンフィグレーションオプション

traceflags traceflag [traceflag] [traceflag] ... 

この記述により gated は、トレースのレベルを決めます。 このオプションは、 gated の起動時と SIGHUP を受信したとき読み込まれます。 起動時にコマンドラインからトレースオプションが指定された 場合には、それが優先されます。 現在有効なフラグは以下のとおりです。

internal すべての内部エラーおよびインテリアルーティングエラーを出力します。

external すべての EGP による外部エラー、エクステリアルーティングエラー および EGP の状態変化を出力します。

route 経路情報の変化をすべて出力します。

egp EGP パケットの送受信を出力します。

update egp, rip, hello, snmp とともに用いられた場合、 すべての送受信されたルーティングパケットの内容を出力します。

rip RIP パケットの送受信を出力します。

hello HELLO パケットの送受信を出力します。

icmp ICMP リダイレクトパケットの受信を出力します。

snmp SNMP パケットのやりとりを出力します。

stamp 10 分ごとにログファイルにタイムスタンプを記録します。

general "internal", "external", "route", "egp" を指定したのと同じ意味です。

all すべてのフラグをオンにします。

“traceflags” で始まる記述が複数行ある場合には、 それらのすべてが有効になります。

デフォルトコンフィグレーション

Gated は、通常コンフィグレーションの情報をファイルから読みますが もし、ファイルがない場合には

RIP yes
HELLO no
EGP no

をデフォルトのコンフィグレーションとします。

コンフィグレーションファイルがなく、 一つのネットワークインターフェースしかなく、 カーネルに default route がある場合には、 gated は、単純な default route ですむため終了します。

ルーティングプロトコル処理のためのコンフィグレーション

ここでは、非常に多くのオプションを説明します。 gated が起動されるたびに "/etc/gated.conf" が読み込まれ、 それぞれのルーティングプロトコルに対し どのように処理するかを指示します。 設定可能なコンフィグレーションは以下のとおりです。

RIP {yes | no | supplier | pointopoint | quiet | gateway #}

これは、 gated に対して、RIP をどのように処理するかを指示します。 キーワード "RIP" につづく引数は、一つだけしか認められません。 もし、いくつもある場合には、最初のものだけが使われます。 "RIP" の後の引数には、以下のような意味があります。

yes RIP を処理します。 すべての入力 RIP パケットを処理し RIP 情報を 30 秒ごとに流します。 (ただし、RIP を流すのは二つ以上のネットワークインターフェースが ある場合のみです)

no RIP を無視します。

supplier RIP を処理します。 すべての入力 RIP パケットを処理し RIP 情報を 30 秒ごとに流します。 (ただしこの場合、ネットワークインターフェースの数に関係なく RIP を流します)

pointopoint RIP を処理します。 すべての入力 RIP パケットを処理し RIP 情報を 30 秒ごとに流します。 (ただしこの場合、ネットワークインターフェースの数に関係なく RIP を流します) RIP 情報は、ブロードキャストパケットとしては流しません。 この場合 RIP 情報は、後述の "sourceripgateways" として示された ゲートウェイにのみ直接送られます。

quiet 入力 RIP パケットは処理しますが、ネットワークインターフェースの 数に関係なく RIP を流しません。

gateway # すべての入力 RIP パケットを処理し RIP 情報を 30 秒ごとに流します。 そして、default route (0.0.0.0) をメトリック "#" として情報を流します。 このメトリックは、RIP のホップカウントとして見なされます。 このオプションがセットされると 他のゲートウェイから RIP 情報として送られてくる すべての default route が無視されます。 少なくとも一つの EGP neighbor がアクティブな peer となっている場合にのみ default route がアナウンスされます。 すなわち EGP を用いている場合にのみこのオプションを使うべきです。

"RIP" で始まる記述がない場合には、RIP は処理されません。

HELLO {yes | no | supplier | pointopoint | quiet| gateway #}

これは、 gated に対して、HELLO をどのように処理するかを指示します。 RIP の際のオプションと意味は似ていますが、 少々意味の違うものがあります。 キーワード "HELLO" につづく引数は、一つだけしか認められません。 もし、いくつもある場合には、最初のものだけが使われます。 "HELLO" の後の引き数には、以下のような意味があります。

yes HELLO を処理します。 すべての入力 HELLO パケットを処理し HELLO 情報を 15 秒ごとに流します。 (ただし、HELLO を流すのは二つ以上のネットワークインターフェースが ある場合のみです)

no HELLO を無視します。

supplier HELLO を処理します。 すべての入力 HELLO パケットを処理し HELLO 情報を 15 秒ごとに流します。 (ただしこの場合、ネットワークインターフェースの数に関係なく HELLO を流します)

pointopoint HELLO を処理します。 すべての入力 HELLO パケットを処理し HELLO 情報を 15 秒ごとに流します。 (ただしこの場合、ネットワークインターフェースの数に関係なく HELLO を流します) HELLO 情報は、ブロードキャストパケットとしては流しません。 この場合 HELLO 情報は、後述の "sourcehellogateways" として示された ゲートウェイにのみ直接送られます。

quiet 入力に対する HELLO パケットを処理しますが、ネットワークインターフェースの 数に関係なく HELLO を流しません。

gateway # すべての入力 HELLO パケットを処理し HELLO 情報を 15 秒ごとに流します。 そして、default route (0.0.0.0) を delay time "#" として情報を流します。 これは、ミリ秒単位で指定してください。 少なくとも一つの EGP neighbor がアクティブな peer となっている場合にのみ default route がアナウンスされます。 すなわち EGP を用いている場合にのみこのオプションを使うべきです。

"HELLO" で始まる記述がない場合には、HELLO は処理されません。

EGP {yes | no}

これは、 gated が EGP を処理するかどうかを指定します。

no EGP を処理しません。

yes EGP を処理します。

デフォルトでは、EGP を処理します。 もし、コンフィグレーションファイルに "EGP" で始まる記述がない場合でも、 EGP は処理されます。

autonomoussystem #

EGP を処理する場合、 autonomous system number (#) を指定しなければなりません。 もし、指定されなければ gated は、エラーメッセージとともに終了します。

egpmaxacquire #

EGP を処理する場合に いくつの EGP peer が存在するかを指定します。 この数は、ゼロより大きく EGP neighbor の数と等しいか小さい 値を指定します。そうでないと gated は終了します。 この記述がないと、 すべての EGP neighbors は acquire されます。

egpneighbor gateway

metricin metric
egpmetricout egpmetric
ASin asin
ASout asout
AS as
nogendefault
acceptdefault
defaultout egpmetric
validate
intf interface
sourcenet net
gateway gateway

EGP を処理する場合、 gated がどこと EGP のやりとりを行うかを指定します。"Gateway" は、 /etc/hosts にあるホスト名か (a.b.c.d) の形式のドット記法で記述します。 ここでは、ドット記法をお勧めします。 それぞれの EGP neighbor は、このコンフィグレーションファイルに書いてある 順序にしたがって acquire されます。

"metricin" オプションは、 この neighbor から得た経路にたいするメトリックとして用いる delay time を 指定します。 これは、0 から 30000 までの値を指定します。 このオプションと validate オプションが指定されないとき、 内部で用いられる metric は、EGP distance に 100 を掛けたものです。

"egpmetricout" オプションは、この neighbor に伝えられるすべてのネットワーク で使われる EGP distance を指定します。 ここで指定される EGP distance は、0 から 255 までです。 このオプションが指定していない場合は、内部での delay time を 100 で割った値 をそれぞれの経路に対する EGP distance とします。このとき 255 より大きく なった場合には、255 にされます。

"ASin" オプションにより、この neighbor からの autonomous system number をチェックします。 neighbor acquisition パケットにある autonomous system number とチェックし、一致しないとコネクション拒否のエラーメッセージを生じます。 もし、このオプションが指定されないと autonomous system numbers に関するチェックはしません。

"ASout" オプションは、この neighbor に送る EGP パケットに入れられる autonomous system number を指定します。 このオプションが指定されないと、 "autonomoussystem" で指定されたものが使われます。 このオプションは、通常使われません。 ARPAnet や NSFnet などにつながる特別なインターフェースにのみ使われるよう 用意してあります。

"AS" オプションは、 この neighbor から得た経路に対してこの autonomous system number を、アサインするように指示します。 もし、これが指定されないと neighbor から受信したパケットの autonomous system number を使います。 このオプションは、通常使われません。 ARPAnet や NSFnet などにつながる特別なインターフェースにのみ使われるよう 用意してあります。

"nogendefault" オプションは、 "RIP gateway" あるいは "HELLO gateway" として使われているときに、 この neighbor が内部からの default route にならないようにします。 これが指定されないと、 この neighbor がアクティブな peer のときに、内部の default route となる ことがあります。

"acceptdefault" オプションは、 この neighbor から default route (0.0.0.0) を受けたときに、それを認める ということを示します。 このオプションが指定されていないときには、 default route の情報を受けたときには、ワーニングメッセージを出力し その情報を無視します。

"defaultout" オプションは、 内部的に生成された default route をこの EGP neighbor に 指定した distance で送ります。 distance は、0 から 255 の値を指定します。 他のゲートウェイから得た default route は、EGP neighbor に は知らせることはしません。一般に、default route は EGP によっては 伝播されません。 "defaultout" オプションが指定されたとき、 "acceptdefault" オプションは、指定されるべきではありません。 "egpmetricout" オプションで指定された egpmetric は無視され、 default route のメトリックは "defaultout" で指定されたものが用いられます。

"validate" オプションは、この EGP neighbor から受けた すべてのネットワークは、"validAS" によって指定されたもので なければならないことを指定します。 もし、"validAS" にないネットワーク情報を受けたときには、 ワーニングメッセージとともにその値を無視します。

"intf" オプションは、この EGP neighbor にパケットを送るために使う インターフェースを指定します。 この EGP neighbor の知らない net/subnet が存在するときのみ このオプションを使います。 現在このオプションは、テストの目的で使われており 正しく動くことを保証しません。

"sourcenet" オプションは、 EGP poll パケットを送るときのソースネットワークを 指定します。 このオプションが指定されないとき、 neighbor との通信に実際使われるネットワークが用いられます。 現在このオプションは、テストの目的で使われており 正しく動くことを保証しません。

"gateway" オプションは、 異なるネットワークにある EGP neighber から経路情報を得たとき、そ のゲートウェイを指定します。普通この経路は無視されます。 現在このオプションは、テストの目的で使われており 正しく動くことを保証しません。

経路情報の処理に関するオプション

以下のオプションは、 gated が、入出力する経路情報をどのように処理するかを指定します。

trustedripgateways gateway [gateway] [gateway] ..... 
trustedhellogateways gateway [gateway] [gateway] .....

これらの記述があると gated は、それぞれ RIP あるいは HELLO を指定されたゲートウェイからのものだけ 受け取るようにします。 "gateway" は、/etc/hosts でのホスト名でも (a.b.c.d) のドット記法の ものでも構いません。 ここでも、ドット記法のものをお勧めします。 ここでの記述は、経路情報の配布に関しては、影響を与えない ことに注意してください。

sourceripgateways gateway [gateway] [gateway] ..... 
sourcehellogateways gateway [gateway] [gateway] .....

Gated は、RIP あるいは HELLO プロトコルを指定されたゲートウェイに 直接送ります。 "RIP" あるいは "HELLO" の項で述べた "pointopoint" が 指定されると gated は、RIP あるいは HELLO を指定されたゲートウェイだけに送ります。 この場合、 gated は、ブロードキャストアドレスを使いません。 "pointopoint" が指定されないときで、 gated が、RIP あるいは HELLO を送るときは、 gated は、ブロードキャストアドレスを用いてブロードキャストするとともに、 指定されたゲートウェイにたいして情報を送ります。

noripoutinterface intfaddr [intfaddr] [intfaddr] ..... 
nohellooutinterface intfaddr [intfaddr] [intfaddr] .....
noripfrominterface intfaddr [intfaddr] [intfaddr] .....
nohellofrominterface intfaddr [intfaddr] [intfaddr] .....

これらは、それぞれのインターフェースに対するプロトコルの処理を オン/オフします。 "no{rip|hello}frominterface" は、指定されたインターフェースからの RIP あるいは HELLO を受け付けません。 "no{rip|hello}outinterface" は、指定されたインターフェースから RIP あるいは HELLO を送り出しません。 "intfaddr" は、(a.b.c.d) のドット記法でなければなりません。

passiveinterfaces intfaddr [intfaddr] [intfaddr] ..... 

インターフェースが動いているかどうか動的にチェックするために、 gated は、それぞれのインターフェースから RIP, HELLO, EGP のいずれも受信しないとき タイムアウトし、そのインターフェースは動かないと見なされます。 PSN インターフェースに対しては、EGP のパケットの delay が timeout 値よりも長いので、 自分自身に RIP あるいは HELLO パケットを送って インターフェースが動いているかどうかチェックします。 自動的にタイムアウトしたと見なされたインターフェースも、 そのインターフェースから再び経路情報が流れてきたときに 再インストールされます。 このオプションでは、 gated が、そのインターフェースをタイムアウトすることを防ぎます。 ここに書かれたインターフェースは、 常にアクティブでかつ動いていると見なされます。 もし、 gated が、RIP あるいは HELLO の供給を止められているとき、 すべてのインターフェースのタイマは働かず、 "passiveinterfaces" だと見なされます。

interfacemetric intfaddr metric#

これは、インターフェースに対してメトリックを付けることを可能にします。 インターフェースメトリックをサポートしているマシンでは、 この記述にのほうが、カーネルで指定されているメトリックより 優先します。 指定されたインターフェースから来た経路情報に含まれる メトリックに、ここに指定されたメトリック値が加えられます。 また、ここに指定されたインターフェースから送られる経路情報に ここで指定されたメトリック値が加えられます。 直接接続しているインターフェースのメトリックは、 このインターフェースメトリックにセットされます。 直接接続のネットワークにブロードキャストする経路 情報は、ここで指定されたメトリックを規準にされます。 この記述は、インターフェースメトリックを必要をする インターフェースに対してそれぞれ必要です。

reconstmetric intfaddr metric#

これは、経路制御を gated によって作り直そうとするために用意されています。 この記述があると、記述されているインターフェースから入ってくる すべての RIP に含まれるメトリックを "metric#" にセットします。 メトリックを再構築するようことを軽々しく用いてはいけません。 これは、ルーティングループを引き起こす大きな要因となるからです。 これを使用する際は、最大限に注意を払ってください。 infinity (すなわち unreach) となった経路は、再構築できませんし、 そのまま残ります。

fixedmetric intfaddr proto {rip|hello} metric#

これは、経路制御を gated によって作り直そうとするために用意されてるもう一つの手段です。 この記述があると、記述されているインターフェースに出力される すべての経路情報に含まれるメトリックを "metric#" にセットします。 RIP では、 0 から infinity までの値を指定します。 HELLO では、 メトリックとしてミリ秒単位で測った delay 値を用い、0 から infinity までのいずれかを指定します。 これを使用する際は、最大限に注意を払ってください。

donotlisten net intf addr [addr] ... proto {rip|hello}
donotlistenhost host intf addr [addr] ... proto {rip|hello}

"donotlisten" の後ろには、ドット記法で書かれたネットワーク番号と "intf" が書かれます。 それらのネットワークリストの最後に "proto" が書かれ "rip" あるいは "hello"が続きます。

これは、指定されたプロトコルにより指定されたインターフェースから来る "net" に関する情報を無視します。 "intf" の後ろに "all" が指定されるとそのマシンのすべてのインターフェース を意味します。 例:

donotlisten 10.0.0.0 intf 128.84.253.200 proto rip

インターフェース 128.84.253.200 から来る RIP に含まれる ネットワーク 10.0.0.0 に関する情報を無視します。 このような制限をするためには、それぞれのネットワークに関して 上記のような記述が必要です。

donotlisten 26.0.0.0 intf all proto rip hello

すべてのインターフェースから来る RIP および HELLO に含まれる ネットワーク 26.0.0.0 に関する情報を無視します。

"donotlistenhost" に関しても、ネットワークアドレスがホストアドレスになっただけで 同じ意味を持ちます。 指定されたプロトコルから得たホストルートに関する情報に上記のような 制限が適用されます。

listen net gateway addr [addr] ... proto {rip|hello}
listenhost host gateway addr [addr] ... proto {rip|hello}

"listen" の後には、ドット記法で書かれたネットワーク番号と "gateway" に続くゲートウェイアドレスが続きます。 これらのゲートウェイのリストの後に "proto" が書かれ "rip" あるいは "hello"が続きます。

この記述の意味は、 指定されたゲートウェイからの指定されたプロトコル に含まれるネットワーク情報のみを受け付けるという意味です。 例:

listen 128.84.0.0 gateway 128.84.253.3 proto hello

ゲートウェイ 128.84.253.3 から来る HELLO に含まれている ネットワーク 128.84.0.0 に関する情報のみ使用するということです。 他のゲートウェイから来る 128.84.0.0 に関する情報は、破棄されます。 このような制限をするためには、それぞれのネットワークに関して 上記のような記述が必要です。

listenhost 26.0.0.15 gateway 128.84.253.3 proto rip

ゲートウェイ 128.84.253.3 から RIP で来るホスト 26.0.0.15 に関する情報 のみ使用し、このホストに関する他の情報は無視します。

announce net intf addr [addr] ... proto type [egpmetric #]
announcehost host intf addr ... proto type [egpmetric #]
noannounce net intf addr [addr] ... proto type [egpmetric #]
noannouncehost host intf addr ... proto type [egpmetric #]

これらの記述は、どのネットワーク(ホスト)に関する情報をどのプルトコル で制御するかを示します。 "announce{host}" と "noannounce{host}" を同じインターフェースに対して用いてはいけません。 "announce{host}" 記述があると、 gated は、指定されたプロトコルで、指定されたネットワークあるいはホストの情報のみを 流します。 "noannounce{host}" 記述があると、 gated 指定されたネットワークあるいはホスト「以外」の すべての情報を流します。 これにより、それぞれのインターフェース単位で 情報を流すもののリストあるいは流さないもののリストが 指定できます。

引き数として、"donotlisten" と同じ記述ができます。 ただし、"proto" フィールドに "egp" も記述できます。 "type" は "rip", "hello", "egp", あるいは、これらの任意の組合せが書けます。 "egp" が、"proto" フィールドに書いてあるときは、 egp メトリックを指定しなければなりません。 このメトリックは、 gated が、EGP でリストアップされているネットワークに対してアナウンスします。

これらは、static (静的な)経路ではないことに注意してください。 これらの制限は、 ネットワークあるいはホストに対する経路が ルーティングプロトコルによって生成された場合のみ 有効です。 もし、制限しているネットワークが突然 unreachable になったり、 ダウンしたりした場合には、このネットワークへのアナウンスは 再び経路が生成されるまで、ストップします。

現在は、 ひとつのネットワークあるいはホストに対して、ただひとつの "announce{host}" または "noannounce{host}" しか指定できません。 また、あるネットワークあるいはホストの情報をあるインターフェースでは HELLO でアナウンスし、違ったインターフェースでは RIP でアナウンスする といったことは出来ません。

例:

announce 128.84 intf all proto rip hello egp egpmetric 0
announce 10.0.0.0 intf all proto rip
announce 0.0.0.0 intf 128.84.253.200 proto rip
announce 35.0.0.0 intf all proto rip egp egpmetric 3

この 4 つの "announce" の記述しかコンフィグレーションファイルになかった場合、 gated は、この 4 つのネットワークの情報しかアナウンスしません。 128.84.0.0 は、RIP と HELLO と EGP メトリック 0 で すべてのインターフェースからアナウンスされます。 ネットワーク 10.0.0.0 は、RIP によりすべてのインターフェースから アナウンスされます。 ネットワーク 0.0.0.0 (default route) は、RIP によりインターフェース 128.84.253.200 からのみアナウンスされます。 ネットワーク 35.0.0.0 は RIP および EGP メトリック 3 で すべてのインターフェースからアナウンスされます。 これらがこのゲートウェイからブロードキャストされるネットワークすべてです。 いったん "announce"が、指定されると "announce" で指定されているネットワークだけがブロードキャストされます。 (この中には、ローカルなサブネットも含まれます) また、 "announce{host}" あるいは "noannounce{host}" の記述で "intf" の後に " all" が指定されると すべてのインターフェースに適応され、 インターフェース単位での制限事項は失われます。 もし、経路情報のアナウンスに関して制限を付けたくなければ "announce" で始まる記述は用いるべきではありません。 そのときは、すべての情報がアナウンスされます。 また、この記述は gated が、情報を受け取る際の挙動には無関係であることに注意してください。 たとえ "announce" に記述してなくても、いかなるネットワークに関する 情報も、カーネルのルーティングテーブルには加えられますが、 プロトコルを通してアナウンスされることはありません。 もし、カーネルに加えることを止めたい場合には、 "donotlisten" を使ってください。

announce 128.84 intf 128.59.2.1 proto rip
noannounce 128.84 intf 128.59.1.1 proto rip

上記の記述では、128.84.0.0 に関する情報を、RIP を使って インターフェース 128.59.2.1 からアナウンスします。 しかし、インターフェース 128.59.1.1 では、 128.84.0.0 に関する情報を RIP を使って流しません。 (それ以外の情報を流すことはします)

noannounce 128.84 intf all proto rip hello egp egpmetric 0
noannounce 10.0.0.0 intf all proto hello

上記の記述では、指定された二つのネットワーク以外の すべてのネットワークに関する情報を流します。

特に、ネットワーク 128.84.0.0 に関する情報は、 いかなるプロトコルでもいかなるインターフェースからも流しません。 つまり、128.84.0.0 に関する情報は、どこにも送られません。 ネットワーク 10.0.0.0 に関する情報は、いかなるインターフェースからも HELLO によってはアナウンスされません。 また、これは 10.0.0.0 に関してはすべてのインターフェースから RIP により アナウンスされるうることを意味します。 また、EGP により "defaultegpmetric" で指定されたメトリックとともに ブロードキャストされ得ます。

defaultegpmetric #

これは、特にルーティングの制限事項がない場合の、デフォルトの EGP メトリック として用いられます。 一般に、ルーティングに制限のない場合、 gated は、HELLO あるいは RIP により生成されたすべてのネットワークの 経路情報を、ここで指定されたデフォルト EGP メトリックを使って EGP でアナウンスします。 もし、この記述がない場合には デフォルトは、255 となります。 これは、普通無視されるような値です。 ルーティングに関する制限が無い場合には、 直接接続されているすべてのネットワークは、EGP によりメトリック 0 で アナウンスされるべきです。 ただし、これはサブネットは含んでいません。 サブネットされていないネットワークに関してのみです。

defaultgateway gateway proto [metric metric] {active|passive}

ここで指定された default gateway は、 起動時および default gateway に関する情報が失われたときに、 カーネルのルーティングテーブルに登録されます。 メトリックオプションで他のメトリックが指定されないかぎり、 time delay が RIP のメトリック 15 となるように 登録されます。

‘RIP gateway’ あるいは ‘HELLO gateway’ が使われている場合、 "nogendefault" と指定されていない EGP neighbor が peer として acquire されたときには、この default gateway は削除されます。

"active" な default route は、他のルーティングプロトコルによって生成される default gateway によって書き換えられます。 "passive" な default route は、より小さなメトリックの default route が来たときにのみ書き換えられます。

"active" default route は経路の更新に際しアナウンス されませんが、 "passive" default route はアナウンスされます。

"gateway" はドット記法で書いてください。 "metric" はオプションであり、 0 から infinity までのメトリック値を記述してください。 指定されない場合、RIP メトリックは 15 となります。 "proto" としては、 "rip", "egp", "hello" のいずれかを書きます。 "proto" により、どのルーティングプロトコルからこの経路を 受けたかを初期設定します。 このフィールドは使われていませんが、 一貫性のために残してあります。

net netaddr gateway addr metric hopcnt {rip|egp|hello}
host hostaddr gateway addr metric hopcnt {rip|egp|hello}

以上の記述は、 ネットワーク "netaddr" あるいは ホスト "hostaddr" への メトリック "hopcnt" の ゲートウェイ "addr" 経由の スタティックルーティングを示します。 この情報は RIP HELLO EGP のいずれかにより設定されます。 ここでもアドレスにはドット記法を用います。 この経路は、カーネルのルーティングテーブルに登録され、 他のゲートウェイからの RIP あるいは HELLO による内容に影響されません。 EGP によってこの経路情報が伝わる際に、 どのプロトコルによってこの経路が設定されたかが重要になります。 プロトコルが "rip" あるいは "hello" で、ルーティングに制限がないとき、 この経路は EGP により "defaultegpmetric"のメトリックでアナウンス されます。 プロトコルが "egp" で、ルーティングに制限がないとき、 この経路は EGP により "hopcnt" のメトリックでアナウンスされます。

egpnetsreachable net [net] [net] ..... 

このオプションは、 "soft restriction" のためにあります。 "announce" あるいは "noannounce"が使われているときには、 使用できません。 通常、制限のない場合には、 gated は、RIP および HELLO から得た経路情報を EGP によりアナウンス します。 "egpnetsreachable" は、ここにリストアップされたネットワークの情報のみを EGP で流すように制限します。 HELLO と RIP で使われるメトリックは、 "defaultegpmetric" で指定した値になります。 この記述がない場合には、その値は 255 に設定されます。 "egpnetsreachable" では、 それぞれのネットワークにたいして 個別の EGP メトリックは設定されません。 直接接続されたネットワーク(メトリック 0)以外の すべてのネットワークにたいして "defaultegpmetric" が用いられます。

martiannets net [net] [net] ... 

この記述は、 gated の "martian" ネットワークのリストに記述されたネットワークを加えます。 "Martian" ネットワークとは、 無効あるいは無視されるべきネットワークを意味します。 gated が、いかなる方法であれ、これらのネットワークの情報を受け取ると それはただちに破棄されます。 "external" トレースフラグがセットされていると、 その旨のトレースログが出力されます。 この記述が複数あると、すべてが "martian" ネットワークに追加されます。

"martian" ネットワークの初期値は、 127.0.0.0, 128.0.0.0, 191.253.0.0, 192.0.0.0, 223.255.255.0, 224.0.0.0.  です。

AUTONOMOUS SYSTEM ROUTING のためのコンフィグレーションオプション

gated のもつルーティングテーブルは、それぞれの経路情報がどの autonomous system から得たものかを知るためにその autonomus system 番号を 常に持っています。 Autonomous system は、エクステリアルーティングプロトコル(この場合は EGP) を使っているときにのみ用いられます。 経路情報がどの EGP peer から得たものであるか知るために それぞれの経路情報に autonomous system 番号を付けています。 インテリアルーティングプロトコル(RIP と HELLO) から得た 経路情報には "autonomoussystem" で記述された番号をタグとして付けます。

Gated は、通常エクステリアルーティングプロトコルから得た情報を インテリアルーティングプロトコルには流しません。 これは、 ARPANET の core gateway が受け取った経路情報を検証する手立て がなかったという歴史的理由によります。 以下に述べる方法を用いれば、 エクステリアルーティングをインテリアプロトコルを通じて 流すことができますが、 最大限の注意を払って行ってください。 これらの記述の使用方法に何か疑問があった場合、 作成者に相談せずにこの方法を用いることは、 絶対に止めてください。

以下の記述により、 autonomous system 番号によるルーティングの限られた制御が可能となります。

validAS net AS as metric metric

"validAS" オプションにより、 ある AS (Autonomous System) からのネットワーク情報を、正当と見なします。 "egpneighbor" の記述中に "validate" オプションのある EGP neighbor から EGP update パケットを受け取ると、 "validAS" 行のなかに、その EGP neighbor の autonomous system 番号と ネットワークが指定されているか探します。 もし、見つかればそのネットワークは指定されたメトリックで ルーティングテーブルの中に追加されます。 もし、無い場合には、 ワーニングメッセージとともにそのネットワークは無視されます。

ひとつのネットワークが、 異なる autonomous system とともに 複数の "validAS" に記述されてもかまいません。

announcetoAS as0 {restrict|norestrict} ASlist as1 as2 as3 ... 
noannouncetoAS as0 {restrict|norestrict} ASlist as1 as2 as3 ...

"announcetoAS" あるいは "noannouncetoAS" は、 異なる autonomous system 間での経路情報の交換を 制御します。 gated は、通常、 autonomous system 間で経路情報を流し合うことはしません。 ただし、例外として gated の所属する autonomous system 内の RIP と HELLO を通じて得た 経路情報は EGP をかいして流されます。 これらの記述は、ある autonomous system から EGP で得た情報を 他の autonomous system へ EGP で流したり、自分の autonomous system に RIP あるいは HELLO で流すことを許可します。

"announcetoAS" が指定されると、 as1, as2, as3, ... で指定された autonomous system から EGP で得た情報を as0 で指定されている autonomous system に流します。 また、 gated の所属する autonomous system ("autonomoussystem" で指定する) が、 as0 として指定されると、 この情報は、 RIP や HELLO により流されます。 AS のリストにない autonomous system からの情報は、 as0 には流されません。

また、"noannouncetoAS" が指定されると、 as1, as2, as3, ... 以外のすべての autonomous system から EGP で得た情報が、 as0 に対して流されます。 また、 gated の所属する autonomous system が、 as0 として指定されると これらの情報は、 RIP や HELLO では流されません。

"[no]restrict" オプションは、 "announce" および "noannounce" によって 異なる autonomous system に対して経路情報を 流す際の制御を可能にします。 "restrict" が指定されると 通常の制限が適応されます。 "norestrict" が指定されると 制限がなくなり、 発信元 autonomous system からのすべての経路情報が 宛先 autonomous system へ流されます。

ひとつのターゲット autonomoys system に対して、ただひとつの "announcetoAS" あるいは "noannounceAS" が指定できます。

コンフィグレーションオプションに対する注意

Gated は、自分のプロセス ID を "/etc/gated.pid" に保持します。

default route が、 ("RIP gateway" あるいは "HELLO gateway" から) 供給されていてかつ EGP を使用している状況で すべての EGP neighbor が失われたときには、 少なくとも一つの EGP neighbor が再び acquire されるまで、 default route の情報を流しません。

ルーティングに対する制限が適応されているときには、 gated は、 syslog の LOG_WARNIG レベルで LOG_DAEMON ファシリティを用いて 不適当なネットワーク情報に関する ログを取ります。

ネットワークトポロジーの複雑さ、多くの抜け道のありえる状況では、 ルーティングに対する制限を設けることを推奨します。 ARPAnet Core や NSFNnet バックボーンにたいして 不正不当にアクセスできるネットワークを 作ることは簡単です。 ルーティングに制限を設けることは、メンテナンスの時間を 少なくすることに寄与します。 ルーティングに制限を設けることは、長い目で見れば解決にならない のですが、 現時点でインターネットをうまく利用するためには、 使わざるおえないのです。

GATED 内で用いられるメトリック

Gated は、内部的には、すべてのメトリックをミリ秒単位の delay time として 記憶しています。それは、HELLO で使われる time delay を近似します。 内部での delay time は、 0 から 30000 ミリ秒の値を取り、 30000 は、infinity とみなされます。 他のプロトコルは、この time delay 値からメトリック値に直して 受信・送信されます。 EGP の distance は、HELLO や RIP のメトリックには相当しないのですが、 他の EGP メトリックと比べるために内部では delay time 値として 保持されています。 EGP distance と delay time との変換係数は 100 です。 また、RIP とインターフェースメトリックと内部の delay time との変換 には、以下の表を用います。

Time DelayRIP metricRIP metricTime Delay
0-0000
1-10011100
101-14822148
149-21933219
220-32544325
326-48155481
482-71366713
714-1057771057
1058-1567881567
1568-2322992322
2323-344010103440
3441-509711115097
5098-755212127552
7553-11190131311190
11191-16579141416579
16580-24564151524564
24565-30000161630000

インプリメンテーションに関する注意

gated のコンフィグレーションファイル内では、 すべての POINT-TO-POINT のインターフェースは DESTINATION アドレスをもちいなければなりません。 これは、SOURCE アドレスを用いていた以前のバージョンからの 唯一の変更点です。 これ以外は、 以前のコンフィグレーションファイルと互換性があります。

すべてのプロトコルでは、2 分間の hold down タイムを持ちます。 すなわち、経路の update パケットのなかで 現在使用中の経路が削除されるよう指示されたときに gated は、2 分間削除を待ちます。

インターフェースに変更があった場合でも、 gated は、リスタートさせることなくそれに対応します。 netmask, subnetmask, broadcast address, interface metric などが変更される場合、 "ifconfig" によって down とし、 少なくとも 30 秒後に up とします。 フラグの変更の場合は、down とし up としなおす必要はありません。

RIP は、ホストに対する経路も受け付け、また、流します。 これは、POINT-TO-POINT リンクをより一貫的に扱えます。 また、RIP_TRACE コマンドをサポートしています。

サブネットインターフェースをサポートしています。 サブネット情報は、同じネットワーク上の他のサブネットに対して のみ流されます。 例えば, 二つの class B ネットワークを結んでいるゲートウェイがあったとすると、 それぞれの class B ネット内のサブネットの経路情報は 他方の class B ネットには流されません。 単に class B のネットワーク番号のみが流されます。

Gated は、ネットワーク(ホスト)に関する REDIRECT を処理します。 これは、カーネルが行うのとほとんど同じ処理を同時に行おうとします。 これにより、 gated 内の REDIRECT ルーチンは、 Berkeley カーネルの REDIRECT ルーチンに非常に似ています。 Berkeley のカーネルとの相違点は、 gated では、REDIRECT によって得た経路は 6 分間でタイムアウトします。 そして、このエントリーをカーネルのルーティングテーブルから 削除します。 これは、カーネルのルーティングテーブルと 内部のテーブルの一貫性を保つためです。 また、REDIRECT によって得た経路は ルーティングプロトコルによって他に流されることはありません。

gated は、EGP の仕様にしたがってクラス A, B, C で正しいかどうかチェックします。 これらの規準に合わないネットワークの情報は流しません。 もし、EGP update パケットの中にクラス A, B, C のいずれにも含まれないネットワークが含まれるていると、 その update パケットはエラーとされ無視されます。

関連ファイル

/etc/gated.conf コンフィグレーションファイル

/etc/gated.pid gated のプロセス ID

/usr/tmp/gated_dump メモリーダンプファイル

/etc/gated.version gated バージョン、作成日、起動時間、プロセス ID

/etc/gated gated そのもの

関連事項

routed(8)

RFC827EXTERIOR GATEWAY PROTOCOL (EGP)
RFC888"STUB" EXTERIOR GATEWAY PROTOCOL
RFC891DCN Local-Network Protocols (HELLO)
RFC904Exterior Gateway Protocol Formal Specification
RFC911EGP GATEWAY UNDER BERKELEY UNIX 4.2

著者

Mark Fedor (1986-1987), fedor@nisc.nyser.net
Jeffrey C Honig
Cornell Theory Center, 265 Olin Hall, Cornell University, Ithaca, NY 14853-5201,
607-255-8686,
jch@tcgould.tn.cornell.edu,
{ucbvax,uunet,decvax}!tcgould.tn.cornell.edu!jch

謝辞

このプログラムは、 Paul Kirton の EGP for UNIX, バークレイの routed(8), University of Maryland の Mike Petry の HELLO ルーチン などを参考にしています。

ここで特に、 チェック、プロファイル、パフォーマンス向上を行ってくれた Craig Partridge (craig@nnsc.nsf.net) に感謝します。

また、すべての BETA テストに協力された方々および NSFNET バックボーン関係者に、 時としてひどい条件の元の 使用・開発に耐えてくださったことに感謝を捧げます。

NEWS-OSRelease 4.1C

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026