TCP/IP協議的生命力----讀《DARPA協議結構的設計哲學》有感

衆所周知,從DARPA開始而在短短30年間佔領全世界互聯網絡的TCP/IP結構協議已成爲人類科技史上的一個傳奇。緣何一個只是美國軍方爲冷戰而設計的、滿足“最壞”條件下通信需求的協議結構變得如此成功呢?88年就發表在SIGCOMM的著名的David D. Clark撰寫的論文《The Design Philosophy of The DARPA Internet Protocols》對TCP/IP協議設計及其演變有着最深刻的理解。

一、“The simple is the best

在解決一個複雜問題時,需要考慮的因素之多自是必然的,但如何能以“四兩撥千斤”、舉重若輕的從衆多問題中提煉出最關鍵的、最普適的解決方案纔是王者之道。論文給出了當初網絡結構設計所要達到的目標,即:

1.        即使網絡和網關失效,網絡通信也必須能夠繼續;

2.        互聯網必須支持多種通信服務;

3.        互聯網結構必須能夠適應多種網絡硬件;

4.        互聯網結構必須允許資源的分佈式管理;

5.        互聯網結構的花費必須是有效的;

6.        互聯網結構必須能夠方便地進行主機互連;

7.        互聯網結構使用的資源必須是可以統計的。

       因此,爲解決網絡失敗問題,網絡結構選擇將狀態信息保存在終端節點,稱爲命運共享,只有在終端節點失效時,狀態信息纔會丟失,命運共享比複製狀態信息有兩個重要優勢。命運共享可以防止任意多的中轉節點失效,複製狀態信息只能防止一定數量的中轉節點失效;其次,命運共享簡單,便於工程實現。

       爲實現多種通信服務及可靠性、時延、帶寬等約束的服務,TCP提供了可靠的數據流傳輸,而IP提供了基於報文的協議,並可以建立多種服務。報文作爲IP協議的基本構造單元,能夠屏蔽底層通信細節,爲上層多種通信應用提供服務,也即我們所稱的“細腰結構”。但IP並不可靠的,爲滿足可靠通信要求,可以在高層協議通過確認、重傳等機制實現可靠性,或者用可靠性交換低時延,滿足如視頻會議等特殊場合的需求。UDP提供基於報文服務的應用級別接口。

       由於當時的設計並沒有較多的考慮網絡系統管理 ,但簡潔、靈活的設計爲後續網絡測量、管理及安全等提供了應用基礎。如作者在談到協議設計如何兼容各種不同結構及功能的網絡時,提出了最基本而且簡單的假設,即:所有網絡都是使用數據包來進行傳播的,包結構必須合理,而且易於傳播,沒有依賴性。在考慮系統數據的按序傳播、時延、網絡分層多播及優先級調整等需求時,若協議從一開始就進行上述因素的工程實現,相信我們的協議會從誕生時就是一個不健康的“巨嬰”,或許不到十年就將因自身負擔過重而被淘汰掉。按照需求分層實現是個不錯的選擇,將這些需求交給端系統或其他真正有需要的應用場合進行工程實現的意義更大些。

論文作者開始分析DARPA網絡體系結構的設計初衷,以及設計的指導思想。這些設計思想的產生與演變在論文中得到了很好的論述。從最初的實際應用型到打敗科班出生的OSI,成爲互聯網界的實際標準,一統天下,這確實與其強大的生命力分不開,正所謂“The simple is the best”。正如Robert KahnVinton Cerf多年前所知道的那樣,一個具備高度適應性的協議將具有強大的生命力,正是他們在DARPA的準確定位,使得TCP/IP協議最終成爲DoD標準。

二、需求才是最終驅動

如上所述,DARPA的設計者們在最初爲了完成網絡互聯的需要,設計了很多目標,然而在不同的應用環境下這些目標的重要性又不盡相同,軍隊網絡和商用網絡的開放性使得網絡協議架構存在根本的差異。如何處理好這些需求的優先級以及協議關係非常重要。論文從一開始就說明DARPA的出發點,提出了一個最基本的目的:爲了開發一個能夠充分利用現存網絡的高效的技術,這也決定了互聯網絡的結構是一個高度可適的結構。因此,報文交換技術及其相關技術被付諸實踐至今,如網關、存儲-轉發機制等。如何“高效”,論文中作者對高效的含義做了7個方面的註解。並且提出當7個目標的實現順序被更改,網絡體系結構也必將發生變化。這也表明,網絡體系結構該如何設計,和我們需要達到的目的有非常緊密的聯繫。並且,當我們改變了設計並且優化了某方面的性能時,我們很可能正在把另外幾個方面的性能的優先級排到了後面。我們既要保證數據傳輸的穩定性還要有時效性,同時還需要互聯網能提供多樣的服務以適應不同的需求。
我們都知道,TCP可以提供穩定的數據傳輸,而IP又能兼容很多服務。在需求驅動下,TCP/IP協議結構使得這些目標能夠最好的達到。但是,它仍然不能夠滿足所有的要求,正因爲這樣,互聯網協議纔在不斷的發展和完善,比如UDP協議的出現。

數據報的應用及其成功無需置疑:中轉節點無需保存連接的狀態信息,這意味着網絡失敗後可以方便地的進行重建,而不需要考慮到狀態;數據報提供了用於創造多種服務的基本構造塊,便於擴展應用;數據報只對網絡進行了很少的假設,使得系統可以兼容多種網絡結構,進行多種網絡實現。可以說,選擇數據報作爲網絡傳輸的基礎是互聯網結構獲得巨大成功的重要原因。但是,我們也應看到:數據報無法達到資源統計和管理的目標,因爲數據報通常是由字節流分拆得到的,是整個流的一部分,而不是孤立的單元,而網關將所有的數據報當作單獨的單元進行處理。

關於需求驅動的問題,論文中也提到,DARPA體系結構的稱也說明了某些場合,設計者的實現並不是按照實際用戶的需求來的。但是我認爲:單個羣體的需求並不能決定演化的方向,互聯網作爲一個“巨系統”,它的需求輸入是複雜的。針對各種網絡突現行爲的研究能在一定程度上說明需求的衍生與相互干涉。只有這樣的綜合,才能作爲未來發展的最終驅動。

三、其他

論文中討論了關於主機駐留的算法實現與網絡魯棒性折中的設計,確實,在很多應用中,算法實現的效率往往是與在與現實進行權衡後的值。這對我們的研究工作有所啓示:也許理論上這個算法堪稱完美,但在與實踐接軌時可能會遇到一些批評,不要說“仁者見仁,智者見智”,那只是直接證明了這個算法的不完美性,即:只有符合應用實際的纔是完美的算法。

論文對協議與規範、架構與實現的關係進行了討論,最終作者認爲始終需要對協議的實現進行指導,即使到今天也是如此。

論文也分析了體系結構的架構過程,提出了問題複雜性的討論,體系結構的設計者們痛恨那種只關心邏輯對錯,而忽略了系統性能的現象。這也提出了關鍵性的另一個問題,就是在體系結構中如何規範的描述結構性能問題,以期能切實指導實踐者,單純的指明“這個網絡能吞吐多少數據”並不能解決根本性的問題,也不是體系結構需要進行描述的。也許如今網絡測量研究及形式化方法的進一步研究能夠解決這些問題。文中提到使用模擬的手段對體系結構進行評測,但是迄今還沒有什麼模擬器可以完整地對主機的實現和網絡的真實性能做出有說服力的評測結果,例如網關的實現。

論文還探討了數據報和人們的一些誤區,聲明瞭數據報並不是因爲用戶的需求才被使用的。對於TCP協議和字符流,作者也比照數據報闡述了它的自身優勢,分析了EOL發展和逝去的過程。

在結論部分,作者認爲會有更好的流和信息塊分割來代替現在的數據報,網絡體系結構也會發展得越來越完善。

四、思考

讀完這篇經典論文,我感覺收穫挺大,初步理解了今天互聯網絡如此設計的原因及其演進,加深了對網絡結構的理解。如今互聯網絡的蓬勃發展爲我們創造了許多機遇,也爲我們帶來很多挑戰。有人就認爲互聯網發展到今天簡直髮展得像一個怪物,技術的更新甚至不能趕上衆多用戶在現有技術上的創新;也催生了很多新應用,衍生出網絡專業的很多研究方向,如:移動網絡、社會網絡、綠色網絡、傳感器網絡等。Clark的這篇論文直到現在仍然對我們的研究有着很多啓發。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章