跳轉到內容

Linux 網路/Linux 網路核心開發簡史

來自華夏公益教科書,開放的書籍,開放的世界

開發一個全新的 TCP/IP 協議棧核心實現,使其效能與現有實現一樣好,並非易事。決定不移植現有實現之一是在當時,因為當時人們還不確定現有的實現是否會被 U.S.L. 提出的訴訟案的限制性版權所束縛,並且當時人們對於以不同的方式,甚至可能比已經做過的更好,來完成這件事抱有很大的熱情。

最初自願領導核心網路程式碼開發的是 Ross Biro biro@yggdrasil.com。Ross 製作了一個簡單且不完整但大部分可用的例程實現集,該集合由 WD-8003 網路介面卡的乙太網驅動程式補充。這足以讓很多人測試和試驗該軟體,有些人甚至設法將機器連線到這種配置的即時網際網路連線。Linux 社群內部推動網路支援開發的壓力正在增加,最終,對 Ross施加的一些不公平的壓力與他自己的個人承諾相結合,超過了帶來的益處,他辭去了首席開發者的職位。

Ross 在啟動專案和承擔在如此有爭議的情況下真正產生有用的東西的責任方面的努力,催化了所有未來的工作,因此是當前產品成功的重要組成部分。

Orest Zborowski obz@Kodak.COM 為 Linux 核心製作了最初的 BSD 套接字程式設計介面。這是一項重大進步,因為它允許許多現有的網路應用程式移植到 Linux,而無需進行重大修改。

大約在同一時間,Laurence Culhane loz@holmes.demon.co.uk 開發了 Linux 的第一個驅動程式來支援 SLIP 協議。這些驅動程式使許多沒有訪問乙太網網路的人能夠試驗新的網路軟體。同樣,有些人利用這個驅動程式並將其投入使用以連線到網際網路。這使更多的人瞭解瞭如果 Linux 擁有完整的網路支援,可以實現的可能性,並且增加了積極使用和試驗現有網路軟體的使用者數量。

Fred van Kempen waltje@uwalt.nl.mugnet.org 也一直積極參與構建網路支援的工作。在 Ross 辭去首席開發者職位後的一段不確定的時期之後,Fred 提供了他的時間和精力,並接受了這個角色,幾乎沒有受到反對。Fred 對他想要讓 Linux 網路軟體發展的方向有一些雄心勃勃的計劃,他開始朝著這些方向前進。Fred 製作了一系列名為 NET-2' 的核心程式碼(NET' 程式碼是 Ross 的),許多人能夠非常有用地使用它。Fred 正式將一些創新列入開發議程,例如動態裝置介面、業餘無線電 AX.25 協議支援以及更模組化的網路實現設計。Fred 的 NET-2 程式碼被相當多數量的愛好者使用,隨著軟體有效的訊息不斷傳播,這個數量一直在增加。當時的網路軟體仍然是針對標準版本的核心程式碼的大量補丁,並沒有包含在正常版本中。NET-FAQ 以及隨後的 NET-2-HOWTO' 描述了當時相當複雜的讓它全部工作的過程。Fred 的重點是開發對標準網路實現的創新,這需要時間。使用者社群越來越迫切地希望得到一個可靠且滿足 80% 使用者需求的東西,而且,與 Ross 一樣,Fred 作為首席開發者的壓力也越來越大。

Alan Cox iialan@www.uk.linux.org 提出了一項旨在解決問題的方案,旨在解決這種情況。他提議,他將接受 Fred 的 NET-2 程式碼並對其進行除錯,使其可靠且穩定,以滿足那些沒有耐心的使用者群,同時減輕 Fred 的壓力,讓他能夠繼續他的工作。Alan 開始著手進行這項工作,取得了一些不錯的成功,他的第一個版本的 Linux 網路程式碼被稱為 Net-2D(ebugged)。該程式碼在許多典型配置中都能可靠地工作,使用者群也很高興。Alan 明顯有自己的想法和技能可以貢獻給這個專案,並且圍繞 NET-2 程式碼的發展方向展開了許多討論。在 Linux 網路社群中形成了兩個截然不同的派別,一個是“先讓它工作,然後讓它更好”,另一個是“先讓它更好”。Linus 最終仲裁併為 Alan 的開發工作提供了支援,並將 Alan 的程式碼包含在標準的核心原始碼分發中。這使 Fred 處於一個艱難的境地。任何繼續開發都將缺乏積極使用和測試程式碼的大量使用者群,這意味著進度會很緩慢而且很困難。Fred 繼續工作了一段時間,最終退出了,Alan 成為了 Linux 網路核心開發工作的新的領導者。

Donald Becker becker@cesdis.gsfc.nasa.gov 很快展現出他在網路底層方面的才華,並製作了大量的乙太網驅動程式,當前核心中包含的幾乎所有驅動程式都是由 Donald 開發的。還有其他人做出了重大貢獻,但 Donald 的工作效率很高,因此值得特別提及。

Alan 繼續對 NET-2-Debugged 程式碼進行了一段時間的改進,同時努力解決“TODO”列表中未解決的一些問題。到 Linux 1.3.* 核心原始碼發展壯大時,核心網路程式碼已經遷移到 NET-3 版本,當前版本就是基於此版本。Alan 處理了網路程式碼的許多不同方面,並在來自 Linux 網路社群的一系列其他有才華的人員的協助下,將程式碼朝著各個方向發展。Alan 製作了動態網路裝置以及第一個標準的 AX.25 和 IPX 實現。Alan 繼續對程式碼進行微調,慢慢地對其進行重構和增強,使其達到今天的狀態。

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 支援本身就非常重要,因為除了 Linux 之外,沒有其他作業系統可以吹噓對這些協議的標準原生支援。

當然,還有數百人對 Linux 網路軟體的開發做出了重大貢獻。其中一些你將在後面的技術特定部分遇到,其他人貢獻了模組、驅動程式、錯誤修復、建議、測試報告和道義支援。在所有情況下,每個人都可以聲稱自己發揮了作用並貢獻了自己的力量。Linux 核心網路程式碼是 Linux 風格的無政府主義開發所能取得的成果的絕佳示例,如果它還沒有讓你感到驚訝,那麼它肯定會讓你很快感到驚訝,開發並沒有停止。

華夏公益教科書