次のページ 前のページ 目次へ

4. Linux のネットワーク機能に関する一般的な情報

4.1 Linux カーネルのネットワーク機能の開発小史

カーネルに新規に TCP/IP プロトコルスタックを組み込み、既存のものと同等 の性能を出すのは簡単なことではありません。U.S.L(Unix Software Laboratory)が Unix に関する訴訟を起こして、既存のコードが著作権によって 使えなくなるかもしれない恐れが生じたことが主な理由となって、Linux の開 発者たちは、既存のネットワークコードを移植するのではなく、ゼロから新し いコードを書こうと決意しました。同時に、既存の実装とは全く異なったやり 方で、よりよいものを作り直してみようという熱意も、大きな原動力になりまし た。

カーネルに組み込まれたネットワークコードの開発を最初にリードしたボラン ティアは Ross Biro <biro@yggdrasil.com> でした。彼は、単純で機 能的には不十分ながら、まずまず使いものになるネットワークコードと WD-8003 ネットワークカード用のドライバを作成しました。このコードを使っ て多くの人々がソフトウェアのテストや実験をし、実際にインターネットに接 続した人たちもいました。しかし、Linux コミュニティの中でネットワーク機 能の開発に対する要望が高まるにつれ、Ross にのしかかる責任が増えてしま い、彼はネットワーク機能の開発のリーダーを降りました。しかし、Ross がこ のプロジェクトを開始したことと、様々な論争がなされている中で、 ある程度実用になるコードを責任を持って実際に開発したことのおかげで、 その後の作業が 容易になりました。したがって、彼のした仕事は現在のコードがうまくできて いることの重要な要素です。

Orest Zborowski <obz@Kodak.COM> が Linux カーネルに独自の BSD のソケットプログラムインターフェイスを組み込みました。これは極めて重要 な前進でした。というのも、これを使うことにより既存のネットワーク アプリケーションの多くが大きな変更なしに移植できるようになったからです。

同じ頃、Laurence Culhane <loz@holmes.demon.co.uk> が SLIP プ ロトコルをサポートする最初のドライバを開発しました。これにより、イーサ ネットを持たない多くの人々もネットワーク用のソフトウェアのテストができ るようになりました。こちらの場合でもまた、何人かの人々がこのドライバに 携わり、これを実際に使ってインターネットに接続しはじめました。 このドライバの成功により、Linux に充分なネットワーク機能が組み込まれれ ば、より多くのユーザが積極的に既存のネットワークソフトウェアを利用・実 験するようになるだろうと感じる人がますます多くなりました。

もう一人、熱心にネットワーク機能を開発したのが Fred van Kempen <waltje@uwalt.nl.mugnet.org> です。Ross がリーダーを降りてからの 不安定な時期に Fred は彼の時間と努力を捧げて開発をリードしました。Fred は Linux のネットワークソフトウェアを独特の方向に発展させようと考え、 その方向に開発をすすめました。Fred は `NET-2' と呼ばれるネットワークコー ドを開発し(Ross のコードは `NET' コードと呼ばれています)、このコードは 多くの人々にとって十分実用的なものでした。Fred は開発計画として、動的 なデバイスインターフェイスやアマチュア無線用の AX.25 プロトコル、より モジュール化されたネットワーク機能など、さまざまな革新的な機能をスケジュー ルに挙げていました。Fred の NET-2 コードは実に多くの熱心な開発者に 用いられ、「実際に動く」という評判が広まりました。このころのネットワー クコードはまだカーネル本体には組み込まれておらず、多数のパッチとして公 開されていました。当時書かれた NET-FAQ と NET-2-HOWTO はこのパッチを組 みこむずいぶん複雑な手順について説明していました。Fred は既存のネット ワーク系の実装に革新をもたらそうとしていましたが、それには時間がかかり ました。一方、Linux コミュニティでは、安定して動き、80% のユーザを満足 させる機能を持ったネットワーク機能をもとめる声が強まり、Ross 同様、開 発のリーダーとして Fred にかかるプレッシャーが強まってきました。

Alan Cox<iialan@www.linux.uk.org>がこの状況を解決する方法を提 案しました。彼は Fred の NET-2 コードを引きとり、デバッグして、信頼性 と安定性を高めてせっかちなユーザに提供しました。そうやって Fred の負担 を減らし、彼が本来の仕事を続けられるようにしました。Alan はこれをうま くやり、彼の作ったネットワークコードは `Net-2D(ebugged)' と呼ばれまし た。このコードはほとんどの設定で安定して動作し、多くのユーザはこのコー ドに満足しました。Alan にはネットワーク機能を開発していく計画に貢献す るだけの独自のアイデアと技術力があり、彼を中心に NET-2 コードの開発方 針について多くの議論がなされました。その結果、Linux のネットワーク界に 2 つの流れが生まれることになりました。一つは「まず動くものを作って、そ の後改善していこう」と考える人たち、もう一つは「最初から良いものを作ろ う」と考える人たちでした。最終的には Linus が判断をして、Alan の開発し たコードを標準のカーネルに組み込みました。その結果、Fred の立場は難しく なりました。彼が開発した新機能をテストしてくれるユーザの絶対数は少な くなり、開発のテンポも遅れ、しだいに開発そのものが難しくなっていきまし た。Fred はその後もしばらくは開発を続けていましたが次第に開発から手を 引き、Alan が Linux のネットワーク機能の開発者の新しいリーダーになりま した。

そのころ、Donald Becker<becker@cesdis.gsfc.nasa.gov>がハー ドウェアレベルのドライバの開発者としての頭角を現わし、多数のイーサネッ ト用ドライバを開発しました。現在のカーネルに組み込まれているネットワー クカード用ドライバのほとんどは彼が開発したものです。もちろん彼以外にも 重要な貢献をした人はいますが、Donald の素晴しい仕事は特に言及に値する ものでしょう。

Alan はその後も NET-2-Debugged コードの改善を進めるとともに、`TODO' リス トに載ったまま残されていたさまざまな仕事にも取り組みました。Linux 1.3.* のカーネルが公開され始めたころ、カーネルのネットワー クコードは現在のバージョンである NET-3 へと移行しました。Alan は、 Linux のネットワークコミュニティにいる多数の才能ある人々の助けを借りな がら、多くの機能を開発していきました。彼は動的なネットワークデバイスや AX.25 の最初のスタンダード、IPX 機能などを開発しました。彼はその後もネッ トワークコードを修正し続け、ゆっくりと再構築と機能強化につとめて現在の 状況に達しました。

PPP の機能は Michael Callahan<callahan@maths.ox.ac.uk>と Al Longyear<longyear@netcom.com>が組み込みました。この機能も、多 数の人々が Linux をネットワーク接続に使う際に重要な役割を果しました。

Jonathon Naylor <jsn@cs.nott.ac.uk> は Alan の AX.25 コードを 引き継いでさまざまな機能を強化し、NetRom プロトコルと Rose プロトコル もサポートしました。 この AX.25/NetRom/Rose のサポートはとても重要です。なぜなら、これらの プロトコルを標準的にサポートしていると胸を張れる OS は Linux 以外に存 在しないからです。

もちろん、ここで紹介した人以外にも何百人もの人々が Linux のネットワー クソフトウェアを開発する中で重要な役割を果してきました。彼らの何人かは 後述のそれぞれの技術の詳細に関する節で紹介することになるでしょう。 その他、モジュール化や各種のドライバの開発、バグの修正、新しい機能の提 案、テストレポート、精神的な支援をしてきた多数の人々がいます。その全 ての人が、「自分は自分の役割を果し、自分に可能なことをしてきただけ」、 と言うことでしょう。Linux カーネルのネットワークコードは Linux 風のア ナーキーな開発がどのような結果をもたらすかの優れた実例です。今までの話 に驚かなかった人でも、これからの発展にはきっと驚くはずです。開発は現在も 続いているのですから。

4.2 Linux のネットワーク機能についての情報源

Linux のネットワーク機能についての情報はさまざまなところから入手できま す。

コンサルタント業者がたくさんあります。そのリストは LinuxPorts Consultants Database から入手できます。

現在の Linux カーネルのネットワークコードのメンテナンスをしている Alan Cox はネットワーク機能の現状と今後について紹介したページを公開しています: www.uk.linux.org

もう一つお勧めの情報源は Olaf Kirch が書いた Network Administrators Guide です。この文書は Linux Documentation Project の成果の一つで、 Network Administrators Guide HTML version を使えばインタラクティブに読むことができます。その他、さまざまな形式に変換した バージョンを metalab.unc.edu LDP ftp archive から入手できます。 Olaf の著書はわかりやすく書かれており、Linux におけるネットワーク関係 の設定を、十分高いレベルで概説しています。

Linux のネットワーク機能について論じるニュースグループもあります。 comp.os.linux.networking です。 [訳注: 日本語のニュースグループとしては fj.os.linux.networking があります]

Linux のネットワーク機能について質問できるメーリングリストもあります。 このメーリングリストに参加するには、以下のようなメールを送ってください。

To: majordomo@vger.rutgers.edu
Subject: anything at all
Message:

subscribe linux-net

IRC にもさまざまなチャンネルがありますが、#linux チャンネ ルには Linux のネットワークに関する質問に答えてくれる人が多数います。

何か問題を報告する際には、関係する情報を可能な限り付属させることをお忘 れなく。使っているソフトウェアのバージョン、特にカーネルのバージョンや pppddip のバージョンは必須です。加えて、問題の本 質をきちんと報告してください。そのためには、出力されたエラーメッセージ を正確に記録し、どのようなコマンドを実行したかを詳しく記録しておきましょう。

4.3 Linux 限定でないネットワークに関する情報源

TCP/IP ネットワークについての全般的な知識を得たいならば、以下の文書を 読んでみることをお勧めします:

TCP/IP 入門(tcp/ip introduction)

この文書は テキスト版 あるいは Postscript 版 を入手可能です。

TCP/IP の管理(tcp/ip administration)

この文書も テキスト版Postscript 版 があります。

TCP/IP ネットワークについて、より詳細な情報を知りたい場合は、次の書籍 が非常にお勧めです。

Internetworking with TCP/IP, Volume 1: principles, protocols and architecture, by Douglas E. Comer, ISBN 0-13-227836-7, Prentice Hall publications, Third Edition, 1995

Unix 互換の環境でネットワーク機能を使ったアプリケーションを書くために は以下の書籍が参考になるでしょう。

Unix Network Programming, by W. Richard Stevens, ISBN 0-13-949876-1, Prentice Hall publications, 1990

この本の第2版ももうすぐ出版されます。新しい版は 3 分冊になります。詳しくは Prenice-Hall のウェブサイト で調べてください。

comp.protocols.tcp-ip も見るとよいでしょう。

インターネットと TCP/IP プロトコル群に関する特定の技術的な情報について は RFC が重要です。RFC とは `Request For Comment' の略で、インターネッ トで標準的に使われているプロトコルについて定義したものになっています。 RFC は多くの ftp サイトに保存されており、何らかのサーチエンジンを使っ てキーワードから RFC のデータベースを検索できるような WWW のページもあ ります。

RFC に関するページとしては、 Nexor RFC database を紹介しておきます。


次のページ 前のページ 目次へ