6. IP Over ATM

IP over ATM は、以下のプロトコルでサポートされています。

6.1. CLIP

デーモンプロセスは、ARP の問い合わせを行ない、 また問い合わせに答えるために使用します。 実際のカーネル部分は、小さなルックアップテーブルを保持していますが、 そこには部分的な情報しか入っていません。

マニュアルページには次のものがあります。 atmarpd(8), atmarp(8)

atmarpd を動かす際は、その前にあらかじめ atmsigdilmid を走らせておかなければなりません。 -b オプションを使用して、この二つを確実に正しく同期させてください。 例えば、

は動作しますが、 は、(まだ)うまくいかないことがよくあります。

atmarp は、ATMARP の設定に使用します。 まず、atmsigdilmid、それに atmarpd を動かす必要があります。 それから、以下のようにして、IP インタフェースを作成し、その設定を行ないます。

例:

PVC しか使用しないのであれば、以下のようなコマンドを使って作れます。

null キーワードを使う場合は、 NULL カプセル化を用います。 ARP には LLC/SNAP のカプセル化が必要になりますので注意して下さい。 したがって、NULL カプセル化は PVC の場合しか使えません。

SVC を使用する際、設定の追加作業いくらか必要になるかもしれません。 当該 LIS でそのマシンが ATMARP サーバーとして動作している場合は、 設定の追加は不要です。その他の場合は、 ATMARP サーバーの ATM アドレスを設定する必要があります。 これには、arpsrv というオプションで、 ネットワークアドレスのエントリを作成するという方法を用います。 例えば以下のように行ないます。

クライアントを設定する際は、 その前に、先に ATMARP サーバーを動かして設定しておかなければなりませんので、 注意して下さい。

カーネルの ATMARP テーブルは、 \path{/proc/net/atm/arp} を通じて読み出せます。 atmarpd-d オプションを付けて起動すると、 atmarpd が使用するテーブルは、定期的に標準エラー出力に表示します。 -d オプション無しで atmarpd を起動すると、 テーブルはダンプディレクトリの atmarpd.table ファイルに書き出します (ダンプディレクトリのデフォルトは /var/run ですが、 -D オプションで変更できます)。 また、atmarp -a コマンドを使えば、そのテーブルが読み出せます。

6.2. LAN エミュレーション

ATM で IP パケットを搬送するには、 "クラシカル IP over ATM" の他に、 LAN エミュレーション (LANE) を使ってもかまいません。 LANE は、ブロードキャストのサポートといったような、 従来の LAN 技術の特性をエミュレートするものです。 LANE サーバーのサポートに関しては、 linux-atm ディストリビューションにある、 src/lane/USAGE ファイルで説明しています。

マニュアルページには、次のものがあります。 bus(8), lecs(8), les(8), and zeppelin(8)

LANE クライアントや LANE サービスを複数動かすつもりなら、 各デーモンごとに別々の ATM アドレスを指定する必要があります。 LANE デーモンはすべて、 同じようなサービスアクセスポイント (SAP) を使用しているので、 コネクション相互の区別をつけるには、ATM アドレスを変える必要があるのです。

ちょうど CLIP のように、LANE クライアントを構成しているのは二つの部分です。 一つは、zeppelin というデーモンプロセスで、これは LANE プロトコルを処理しています。 あとは、カーネルの部分で、LANE の ARP キャッシュを持っています。

zeppelin を動かす際は、その前に先に atmsigdilmid を走らせておく必要があります。 zeppelin がスタートすると、カーネルは新しいインタフェースを作るので、 以下のようにして設定できます。

以下の例では、LANE クライアントを 2 台動かしています。 最初のクライアントは、デフォルトのインタフェース lec0 とデフォルトの listen アドレスを使用し、 デフォルトの ELAN に参加しようとします。 もう一方の LANE クライアントには lec2 というインタフェースが与えられ、 ローカルアドレス mybox3 にバインドし、 myelan という ELAN に参加しようとします。 そして、ELAN と イーサネットセグメントの間で、 パケットのブリッジを行ないます。 mybox3 というアドレスは /etc/hosts.atm で定義してあります。 ブリッジングの残りの部分は、 Bridging mini-HOWTO [bridge-howto] を読めば設定できます。

何もしないと、zeppelin は、インタフェース lec0 を使い、 セレクタバイトの値を 0 にしてローカルの ATM アドレスにバインドします。 それから、LECS のウェルノウン・アドレスを使って LECS にコンタクトし、 LECS が定義している ELAN に参加し、 LES が定義している MTU サイズを認識します。ですからプロキシ LEC では 動作しません。 このパラメータは、 zeppelin(8) で定義している、コマンドラインのオプションを使って調整できます。

また、zeppelin は、1516 バイトというデフォルトの MTU サイズを越える MTU の ELAN なら、どれにでも自動的に参加します。 LANE インタフェースの MTU は、その時点の ELAN の MTU に合わせて、 インタフェース自身が自分で調整します。

LANE ARP キャッシュの状態は、 /proc/net/atm/lec を通じて監視できます。 各エントリでは、MAC アドレスと ATM アドレス、それに状態をリストしています。 有効なコネクションがある場合は、 そのコネクションの識別子もエントリにリストします。

LANE のサービス (lecs(8) と、 les(8) および、 bus(8)) は設定ファイルを用いて設定します。 この設定ファイルの構文は各マニュアルページにリストしてあります。

Linux LANE のサービスに関する詳細は、 Marko Kiiskilの Master's Thesis [kiis] で解説しています。

6.3. MPOA

Linux の MPOA クライアントはユーザー空間の流儀を持ち続けています。 カーネルから分離した ATM サービスなのです。 カーネルが MPOA の入出力キャッシュを保持して、 パケットフォワーディングを行なっている間、 mpcd というデーモンプロセスが、 MPOA 制御パケットを処理します。

マニュアルページは mpcd(8) です。

atmsigdilmid は、mpcd の起動前に動かしておいて下さい。 MPOA は LANE トラフィックから IP レイヤ の流れを検知するので、 MPOA が機能する前に、zeppelin を動かしておく必要があるのです。 しかし、zeppelinmpcd を動かす順序は決まっていません。 好きな時にどのデーモンでも殺せますし、 後で再起動する際も、他のデーモンの再起動は不要です。 MPOA を無効にするもっとも簡単な方法は、 動作中の mpcd を殺すことです。

以下の例は LAN エミュレーション にあるもので、 LANE クライアントを 2 台動かしています。 ここでは、この LANE クライアントを用いる MPOA クライアントを 2 台追加しました。

MPOA デーモンがデータと制御コネクションを初期化して受信する際、 別々の ローカル ATM アドレスを二つ使用する必要があります。 このアドレスは、例にあるように同じものでもかまいません。 でも、zeppelin は実際、他の mpcd とは違うものにしなければなりません。 デフォルトでは、mpcd は、LECS から設定情報を取り出しません。 LECS を用いた、コマンドラインの必要なオプションと例は、 mpcd のマニュアルページに示してあります。 ここには、利用できる残りのオプションも載せてあります。

MPOA の入出力キャッシュの内容は、 /proc/net/atm/mpc ファイルを通じて監視できます。

Linux MPOA クライアントは、デフォルトの UBR の代わりに、 ショートカット SVC 用の CBR トラフィッククラスもサポートします。 今後のショートカットに関する QoS 仕様は、 /proc/net/atm/mpc を使うようになり、そのように修正されることがあります。

IP アドレス 130.230.54.146 のショートカットは先に示したパラメータを用いて確立しました。 フロー検出を拡張して、レイヤ 4 フローを完全にサポートするパッチも存在します。 レイヤ 4 フローは 五つのタプル (プロトコル、ローカルアドレス、ローカルポート、リモートアドレス、 リモートポート)で表現し、それらを使って、 アプリケーションとアプリケーションフローを区別します。 興味がおありなら、最新パッチに関しては ftp://sunsite.tut.fi/pub/Local/linux-atm/mpoa/ を参照して下さい。