カーネルに新規に 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 プロトコルもサポートしました。
Linux 以外の OS で AX.25/NetRom プロトコルを組みこんだ OS は存在しない
ため、この機能も Linux の特色として重要な役割を果しています。
もちろん、ここで紹介した人以外にも何百人もの人々が Linux のネットワー クソフトウェアを開発する中で重要な役割を果してきました。彼らの何人かは 後にそれぞれの技術の詳細について触れる際に紹介することになるでしょう。 その他、モジュール化や各種のドライバの開発、バグの修正、新しい機能の提 案、テストレポート、精神的な支援、をしてきた多数の人々がいます。その全 ての人が、「自分は自分の役割を果し、自分に可能なことをしてきただけ」、 と言うことでしょう。Linux カーネルのネットワークコードは Linux 風のア ナーキーな開発がどのような結果をもたらすかの優れた実例です。今までの話 に驚かなかった人でも、これからの発展に驚くことは確実です。開発は現在も 続いているのですから。
Linux のネットワーク機能についての情報はさまざまなところから入手できま す。
現在の Linux カーネルのネットワークコードのメンテナンスをしている Alan Cox はネットワーク機能の現状と今後について紹介したページを公開しています。
もう一つお勧めの情報源は Olaf Kirch が書いた Network
Administrators Guide
です。この文書は
Linux Documentatation Project の成果の一つで、
Network Administrators Guide HTML version
を使えば HTML 版を読むことができます。その他、さまざまな形式に変換した
バージョンを
sunsite.unc.edu LDP ftp archive から入手できます。
Olaf の著書はわかりやすく書かれており、Linux におけるネットワーク関係
の設定の概要についての高度な情報が提供されています。
Linux のネットワーク機能について論じるニュースグループもあります。 comp.os.linux.networking です。
Linux のネットワーク機能について質問できるメーリングリストもあります。 このメーリングリストに参加するには、以下のようなメールを送ってください。
To: majordomo@vger.rutgers.edu
Subject: anything at all
Message:
subscribe linux-net
IRC にもさまざまなチャンネルがありますが、#linux
チャンネ
ルには Linux のネットワークに関する質問に答えてくれる人が多数います。
何か問題を報告する際には、関係する情報を可能な限り付属させることをお忘 れなく。使っているソフトウェアのバージョン、特にカーネルのバージョンや pppd や dip のバージョンは必須です。加えて、問題の本 質をきちんと報告してください。そのためには、出力されたエラーメッセージ を正確に記録し、どのようなコマンドを実行したかを詳しく記録しておきましょう。
TCP/IP ネットワークについての全般的な知識を得たいならば、以下の文書を 読んでみることをお勧めします。
この文書は テキスト版あるいは postscript 版 を入手可能です。
この文書も テキスト版 と postscript 版 があります。
TCP/IP ネットワークについて、より詳細な情報を知りたい場合は、次の書籍 がお勧めです。
"Internetworking with TCP/IP"
by Douglas E. Comer
ISBN 0-13-474321-0
Prentice Hall publications.
Unix 互換の環境でネットワーク機能を使ったアプリケーションを書くために は以下の書籍が参考になるでしょう。
"Unix Network Programming"
by W. Richard Stevens
ISBN 0-13-949876-1
Prentice Hall publications.
TCP/IP に関するニュースグループもあります( comp.protocols.tcp-ip)。
インターネットと TCP/IP プロトコル群に関する特定の技術的な情報について は RFC が重要です。RFC とは `Request For Comment' の略で、インターネッ トで標準的に使われているプロトコルについて定義したものになっています。 RFC は多くの ftp サイトに保存されており、何らかのサーチエンジンを使っ てキーワードから RFC のデータベースを検索できるような WWW のページもあ ります。
RFC に関するページとしては、 Nexor RFC databaseを紹介しておきます。