Linux DECnet ネットワーク層についての情報 =========================================== 1) 他の文書について.... o プロジェクトのホームページ http://www.sucs.swan.ac.uk/~rohan/DECnet/index.html - カーネルの情報 http://linux-decnet.sourceforge.net/ - ユーザ領域ツール o FTP サイト ftp://ftp.sucs.swan.ac.uk/pub/Linux/DECnet/ - Swansea 大学コンピュータ協会(?) DECnet アーカイブ (カーネルパッチや情報を含む) - ftp.dreamtime.org のユーザ領域ツールのミラー - Alexey Kuznetsov の iproute2 パッケージおよびその他のユー ティリティのミラー ftp://linux-decnet.sourceforge.net/pub/linux-decnet/ - Patrick Caulfield のユーザ領域ツールのアーカイブと Eduardo Serrat のカーネルパッチ 2) カーネルの設定 以下のオプションを有効にするように: CONFIG_DECNET (言わずもがな) CONFIG_PROC_FS (何が起きているかを知るため) CONFIG_SYSCTL (設定を楽にするため) もしルータサポート(まだそんなにデバッグされてないけど)を試してみたいなら 以下のオプションも必要となる。 CONFIG_DECNET_ROUTER (ルートの追加・削除を可能とするため) CONFIG_NETLINK (rtnetlink を可能とするため) CONFIG_RTNETLINK (カーネルのルーティング層との通信用) CONFIG_NETFILTER (DECnet ルーティングデーモンで必要になる) 3) コマンドラインオプション カーネルのコマンドラインは次の様なオプションをとる: decnet=1,2 このふたつの数字はノードアドレス 1,2 (つまり 1.2) のことである。2.2.xx カ ーネルおよび 2.3.xx の初期のカーネルでは DECnet アドレスを指定するのにこ のようにコンマを使わなければならない。最近の 2.3.xx カーネルではスペース 以外のほとんどの文字を使うことができる。とは言え、もっとも分かりやすい選 択は「. (ピリオド)」だろう。:-) 以前はノードタイプを指定する第 3 の数字もあった。このオプションはインター フェースごとノードタイプを指定するために無くなった。現在は /proc/sys/net/decnet/donf//forwarding を使って設定する。このファイル では 1 個だけの数値を指定して、それぞれ 0 は EndNode、1 は L1 ルータ、2 は L2 ルータである。 モジュールに対しても同様なオプションがある。その他のシステムパラメータに ついてできるのと同じく、ノードアドレスは /proc/sys/net/decnet/ 以下のファ イルを通じて設定できる。 現在のところ、サポートされるデバイスはイーサネットと ip_gre (訳注:Generic Routing Encapsulation のこと)だけである。ノードの DECnet アドレスが認識 される(それに伴い /proc/net/decnet_dev で見られるようになる)ためには、そ の DECnet アドレスに基づいてイーサネットカードのアドレスが設定される必要 がある。上記の FTP サイトにおいて dn2ethaddr というユーティリティを手に いれられる。これは使用すべき正しいイーサネットアドレスを計算するものであ る。アドレスはデバイスが立ち上がる前か、あるいは立ち上がるときに ifconfig を用いて設定することができる。もし RedHat を使っているのなら、次の行: MACADDR=AA:00:04:00:03:04 または同様な内容のものを、/etc/sysconfig/network-scripts/ifcfg-eth0 もし くはあなたのネットワークカードについての設定をしている場所に追加しておく。 また、特定の経路が指定されていないときに DECnet のパケットをルーティング するデバイスを /proc/sys/net/decnet/default_device に設定する必要があるだ ろう。通常は eth0 であろう。例えば、 echo -n "eth0" >/proc/sys/net/decnet/default_device のようにする。 /proc/sys/net/decnet/ 以下の他のファイルが何の仕事をするかについてのリス トが(上記の)カーネルパッチのウェッブサイトにある。 4) 実行時のカーネル設定 カーネルの設定は sysctl/proc インターフェース(種々のオプションがどういう 働きをするかについての詳細はカーネル(のパッチのある:訳注)ウェッブページ を参照のこと)を通じてか、または IPv4/6 を設定するのと同様、iproute2 パッ ケージを通じて行われる。 iproute2 についてのドキュメントはパッケージに添付されている。DECnet につ いてまだ特に記述はないが、大半の機能は IP と DECnet に共通である。ただし IP アドレスを DECnet アドレスに読み替えることと機能に制限があることに注意。 DECnet ルータを設定したいのならば iproute2 パッケージが必要となる。現段階 ではそれが経路を追加したり削除したりする*唯一*の方法だからである。実際 にはルーティングデーモンが存在して、各インターフェースについてルーティン グメッセージを送受したり、それに従ってカーネルのルーティングテーブルを更 新したりする。ルーティングデーモンはルーティングパケットを受け取るために netfilter を使い、またカーネルのルーティングテーブルを更新するために rtnetlink を使う。 DECnet の raw socket layer は単にルーティングデーモンが使っていただけなの で削除された。ルーティングデーモンは現在は netfilter (ずっとクリーンでより 一般的な解決法である)を代わりに使っている。 5)動いているかどうか、どうやって見究めるのか 以下に DECnet 用カーネルサブシステムが動いているかどうかを知るためには何 を見ればいいか、についての簡単な説明を示す。 - ノードアドレスは設定されているか。 (/proc/sys/net/decnet/node_address を見なさい) - 正しいタイプのノードですか。 (/proc/sys/net/decnet/conf//forwarding を見なさい) - 各イーサネットカードの MAC アドレスが DECnet アドレスに対応するよう 設定されているか。よく分からないときは、ftp アーカイブにある dn2ethaddrユーティリティを使いなさい。 - もし上記の二つのステップが正しく設定されており、イーサネットカードが 立ち上がっていれば、そのデバイスが /proc/net/decnet_dev にリストされ ていて、また /proc/sys/net/decnet/conf にそのディレクトリが存在するは ずである。ループバックデバイス(lo)も存在しているはずで、これはノード 内で通信を行うために必要である。 - あなたのネットワーク上に DECnet ルータがあれば、それが /proc/net/decnet_neigh に現われるはずである。ルータがなければ、このフ ァイルには自分自身のノードについてのエントリーだけが存在するだろう。 (もしそれもなければ、lo が立ち上がっているかどうかをチェックしなさい) - /proc/net/decnet/_neigh ファイルにリストされていないノードに向けて送 信するなら、ルータへとつながるイーサネットカードをデフォルトデバイス が指し示すよう設定する必要がある。繰り返しになるが、このことは /proc/sys/net/decnet/default_device ファイルにおいて設定を行う。 - ループバックインターフェース越しの dnping/dnmirror といった簡単なサー バとクライアントからまず始めなさい。運がよければ、通信を行うはずだ。 この段階と以降において実際のユーティリティはもちろん、DECnet ライブラ リも必要となるだろう。DECnet ライブラリは上記の ftp サイトから取得で きる。 - これでうまく動いているようなら、次にローカルネットワークのノードとの 通信をしてみなさい。上と同様な結果が得られるかどうか調べなさい。 - ここまでくれば、もう一人前ですね... :-) 6) バグレポートを送るには もしバグを発見して、それを報告しようとするなら、間違いとされる箇所を私が正 しく解決するために手伝って欲しいことが少々ある。有益な情報(「大抵」は「基 本的な」ことがら「で」ある)は以下の通り: - あなたの使っているカーネルのバージョンは? - あなたの使っているパッチのバージョンは? - 上記のテストをどれくらいやってみましたか? - /proc/decnet* また /proc/sys/net/decnet/* 以下のファイルはどうですか? - あなたの使っているサービスは? - どのクライアントが問題となったか? - どのくらいのデータを転送したところだったか? - ネットワークは輻輳していたか? - もしカーネルパニックになったのなら、その出力を私に送りつける前に ksymoops に通して欲しい。さもなければ「無意味」。 - その問題は再現するか? - tcpdump を使ってトレースを取ることは可能か?(ご注意。tcpdump の大抵の(全 ての?)バージョンは正しく DECnet のパケットをダンプする方法を知らないの で、パケットの内容の hex リストを一緒にとることは「基本的なこと」である。 通常これには -x フラグを使う。また -s フラグを使って取得する長さを増やす 必要があるかも知れない。さらに -e フラグを使えばとても有用な情報(イーサ ネットの MAC アドレス)を教えてくれる。 7)メーリングリスト もし開発に参加してみたいとか、設定について質問をしたいとか、バグを報告する だけとかでも、あなたの参加できるメーリングリストがある。詳しくはこちら: http://sourceforge.net/mail/?group_id=4993 8) 法律関係の情報 Linux DECnet プロジェクトチームはそのコードが GPL に従うこととする。ソフト ウェアはそのまま(as is)提供されるものであり、明示的ないし暗示的な保証を含 むものではない。DECnet は Compaq 社の商標である。このソフトウェアは Compaq 社の製品ではない。Compaq 社の人々が以前では公に利用できなかったような文書 についてまで提供して手助けしてくれたことに我々は謝意を表したい。 Steve Whitehouse (翻訳:幸田あきひろ Jan. 28, 2001)