ATM のアドレスはそのままでは使いずらいので、 ほとんどの ATM ツールでは、数字を並べたアドレスの代わりに、 名前も認めています。 名前と数字のマッピングは、 /etc/hosts.atm というファイルで定義します。 このファイルの構造は、/etc/hosts ファイルと似たものになっています。
例えば、以下のようなものです。47.0005.80FFE1000000F21A26D8.0020EA000EE0.00 pc2-a.fqdn pc2-a 47.0005.80FFE1000000F21A26D8.0020D4102A80.00 pc3-a.fqdn pc3-a |
数字のアドレスは、[api] で説明している形式なら、どの形式で指定してもかまいません。 Linux システムの数字のアドレスは、 atmaddr -n コマンドを使って決定します (アドレスの手動設定 も参照して下さい)。
ATM ツールの多くは、アドレスを表示する際、 該当する名前も見つけようとします。 数字のアドレスから名前に変換する場合、 そのファイルにある最初に見つかった該当する名前を使用します。
SVC 用の ATM アドレスの他に、 /etc/hosts.atm には PVC アドレスも格納できます。 名前が同じでアドレスタイプが違うものを格納すると、 最初に該当するものを選びます。つまり、 アプリケーションが明示的に SVC アドレスだけを要求すれば、 PVC アドレスはいずれも無視されます。
ATM ネームサーバー (ANS) にアクセスできるのなら (例えば、ANS 拡張をインストールしてあるなら)、 それだけを使ってもいいし、 /etc/resolv.conf に hosts ファイルの他に、 ANS が動いているホストを指定して、 両方使用してもかまいません。
E.164 アドレスの逆引きには、電話の国別コードが必要になりまが、 このコードリストは International Telecommunications Union から入手できます。 List of ITU-T Recommendation E.164 Assigned Country Codes は、現在 PDF 形式と MS-Word 形式が利用できます。
注意: 万が一 URL が古くなっていても、 ITU のウェブサイトでこの文書のタイトルを検索すれば、簡単に見つかります。
atm-linux ディストリビューションに入っている src/lib/pdf2e164_cc.pl スクリプトを使えば、 PDF 版 の国別コードリストから E.164 国別コード表が作れます。 例えば以下のように使います。
上記のスクリプトを実行する際、 pdftotext を使用する必要があることに注意して下さい。 このプログラムは xpdf から入手できます。マニュアルページは次のようになっています。 atmsigd(8) atmsigd.conf(4)
atmsigd では、"ポイント・ツー・マルチポイント" のサポートに、大きな制限があります。注意して下さい。 ポイント・ツー・マルチポイントツリーのシングルリーフでしか動作しません。
デフォルトでは、atmsigd は、UNI バージョンを動的に構成し、それに従うような構成になっています。 具体的に言えば、linux-atm のソースディストリビューションの、 トップレベルディレクトリにある、 ./configure スクリプトに --with-uni=VERSION を指定すれば、UNI 3.0 か 3.1, あるいは 4.0 を、 コンパイル時に指定できます。
atmsigd は病的なほど疑り深い設定になっていますので、気をつけて下さい。 何か異常な問題を検知すると、よく止まってしまいます。 この件については、今後は当然変更されると思います。
また、-c オプションに指定した場所で設定ファイルも探します。 デフォルトの場所は /usr/local/etc/atmsigd.conf になっています。
ILMI はアドレスを自動設定する仕組みを提供するデーモンです。 しかし、スイッチが無い場合や、ILMI をサポートしていないスイッチの場合は、 手作業で ATM アドレスを設定する必要があります (アドレスの手動設定 を参照して下さい)。 アドレスを手作業で設定しているインタフェースでは、 ILMI は使わないよう注意して下さい。
ILMI デーモンは、以下のようにしてスタートします。
ilmid [-b] [-d] [-i local_ip] [-l log_file] [-q qos] [-u uni_version] [-v] [-x] [itf]
バックグラウンドで動かします。初期化後、 fork した子プロセス内で動かします。
デバッグ出力を有効にします。デフォルトでは、 ilmid は、非常に物静かです。
スイッチから問い合わせがあった時に答える IP アドレスです。 ドットで区切った 10 進数でも、テキスト形式でも、どちらでもかまいません。 デフォルトでは、ilmid は、発見的方法論を用いて、ローカルの IP アドレスを選びます。
診断メッセージを、標準エラー出力ではなく、 指定したファイルに書き出します。 システムログ採取プログラムに診断結果を送る場合は、 syslog という特定の名前を用います。
指定したサービス品質を用いるよう、ILMI VC を設定します。 デフォルトでは、ILMI の VC で、リンク速度の UBR を使用します。
UNI バージョンを設定します。 指定できる値は、 3.0 と 3.1、および 4.0 の三つです。真ん中の小数点は省略してもかまいません。 デフォルト値は ilmid のコンパイルの仕方によって異なりますが、 普通は、3.0 です。
拡張デバッグ出力を有効にします。
ColdstartTrap 内に変数のバインディングを含めないようにします。 (例えば、LS100 のように) 中にはこのオプションを設定しないと動作しないスイッチがあります。
インタフェース番号を指定しない場合、 ilmid は、インタフェース 0 を用います。 atmaddr コマンド(下記参照)を使えば、 アドレスが正しく登録されたかどうかが確認できます。
エージェントがサポートしているのは、 ATM フォーラムの UNI 3.1 仕様 にある 5.8 節に明記してある、 アドレス登録手順だけです。 この手順に含まれるのは、 ホスト上のネットワークプレフィックスをホストに登録するスイッチと、 それに応えて最終的な ATM アドレスをスイッチに登録するホストです。 ホストは、スイッチが登録したネットワークプレフィックスに、 ESI (エンドシステム識別子)とヌルセレクタバイトを追加するという方法で、 これを行ないます。ESI は ATM インタフェースの物理アドレス、 または MAC アドレスです。
お使いのスイッチが ILMI をサポートしていない場合、 スイッチ側と PC 側の両方で、ATM アドレスを手作業で設定しなければなりません。 Linux 側では、 ilmid が邪魔していないことを確かめてから、 atmaddr コマンドを使ってアドレスを設定して下さい。
マニュアルページは次のとおりです。 atmaddr(8)
ATM アドレスを手作業でスイッチに設定する方法は、 物によって異なります。 Fore ASX-200 では、次のコマンドを使って行ないます。
例えば、conf nsap route new 47000580ffe1000000f21510650020ea000ee000 152 1a2 0 |<---- NSAP prefix ----->||<--ESI--->|^^ SEL |
NSAP アドレス全体の長さは常に 40 桁でなければなりません。 別のプレフィックスと、 お使いのアダプタにある ESI 以外の ESI を付けたアドレスも使えますので、 覚えておいて下さい。 セレクタバイト (SEL) の値は無視します。
2 枚の NIC を直接接続し、 間にスイッチを置かずに動かすこともできます。 簡単なテスト環境としては最高です。
まず、UTP か STP-5 を使うつもりなら、適したケーブルが必要です。 筆者らの経験では、 標準的な 100Base-T のケーブルで直接接続してもうまく行きませんでした。 使っているピン配置が違っているようです。 何度か試した結果、次のケーブルでうまくいくことが分かりました。
RJ45 RJ45 1 ------------ 7 2 ------------ 8 7 ------------ 1 8 ------------ 2 3 番、4 番、5 番、6 番の各ピンは未接続 |
1 番と 7 番、および 2 番と 8番を、それぞれ接続して、 超簡単なループバックケーブルを作ることもできます。
ここで、マシンを二台用意し、 名前をそれぞれ "virgil"、そして "nestor" とします。 名前は必要に応じて、ご自分のものに置き換えて下さい。
ATM コネクションの一方には、 ネットワーク版の atmsigd を使う必要があります。 また、他方には通常のユーザー版を使って下さい。 では、nestor で、 以下のようにして atmsigd を起動します。
virgil では、以下のようにします。スイッチが無いと、ILMI は使えません。 その代わり、/etc/hosts.atm を作って、そこに二つのダミーアドレスを書いて下さい。 この例の ATM hosts ファイルは次のようになります。
47.0005.80FFE1000000F21A26D8.0020EA000EE0.00 nestor-atm 47.0005.80FFE1000000F21A26D8.0020D4102A80.00 virgil-atm |
もちろん、これは完全な模造アドレスですが、 公開されている ATM ネットワークやプライベートなものに接続しない限り、 問題にはならないと思います。 ドライバに正しくアドレスを設定するには、 この例の、virgil では以下のようにします
そして nestor では のようにします。 では、両マシンで、atmarpd を通常のやり方でスタートしてください。 これで正しく動作する ATM の設定ができました(そのはずです)。 "IP over ATM" を動かすには、 IP Over ATM の指示に従えば良いのです。Q.2931 メッセージコンパイラは、 そのメッセージ用のプリティプリンタ(フォーマッタ)も生成します。 この実行可能ファイルを q.dump と言い、 src/qgen ディレクトリに格納します。 make install では、 他のディレクトリにはコピーされないので注意して下さい。
q.dump が想定している入力シーケンスは、 標準入力から、空白で区切った 16 進数のバイト列で、 メッセージが解析できる場合は、メッセージの構造を出力します。 例:
% echo 09 03 80 00 05 5A 80 00 06 08 80 00 02 81 83 00 48 \ 00 00 08 | ./q.dump _pdsc = 9 "Q.2931 user-network call/connection control message" _cr_len = 3 call_ref = 8388613 (0x800005) msg_type = 0x5a "RELEASE COMPLETE" _ext = 1 _flag = 0 "instruction field not significant" _action_ind = 0 "clear call" msg_len = 6 (0x6) _ie_id = 0x08 "Cause" _ext = 1 cause_cs = 0 "ITU-T standardized" _flag = 0 "instruction field not significant" _action_ind = 0 "clear call" _ie_len = 2 (0x2) _ext = 1 location = 1 "private network serving the local user" _ext = 1 cause = 3 "no route to destination" |