作者:范桂颶,AWS Community Builder,EdgeGallery 開源社區(qū)成員。
自 2006 年以來,SDN 技術(shù)發(fā)展了近二十年,從狹義的OpenFlow SDN,到廣義的SDN,再到現(xiàn)如今的P4 完全可編程網(wǎng)絡(luò),期間的紛紛擾擾亂入迷人眼,偶爾讓人感到迷茫徘徊:網(wǎng)絡(luò)何以至此?網(wǎng)絡(luò)到底要如何發(fā)展?不妨讓我們從網(wǎng)絡(luò)的起源開始回顧歷史,撥開云霧看清網(wǎng)絡(luò)的初心與未來。
01
從冷戰(zhàn)背景說起
第二次世界大戰(zhàn)以后,當(dāng)時的美國和蘇聯(lián)同為世界上的 “超級大國”,為了爭奪世界霸權(quán),一道鐵幕在歐洲大陸落下,兩國及其盟國展開了數(shù)十年的斗爭。在這段時期,雖然雙方分歧和沖突嚴(yán)重,但都盡力避免新一輪的世界范圍戰(zhàn)爭(第三次世界大戰(zhàn)),其對抗通常通過局部代理戰(zhàn)爭、科技和軍備競賽、太空競賽、外交競爭等 “冷”方式進(jìn)行,即“相互遏制,不動武力”,因此稱之為 “冷戰(zhàn)”。
02
APRA 成立
1957 年 10 月 4 日,蘇聯(lián)發(fā)射了人類第一顆人造衛(wèi)星,斯普特尼克一號。這顆衛(wèi)星的升空,轟動了整個世界,也讓當(dāng)時的美國政府震驚不已。他們恐懼,在日趨激烈的冷戰(zhàn)對抗中,自己已經(jīng)全面落后于蘇聯(lián)。?
為了扭轉(zhuǎn)這一局面,美國總統(tǒng)艾森豪威爾(Dwight D. Eisenhower)授權(quán)美國國防部于 1958 年 2 月組建了 APRA(Advanced Research Project Agency,美國國防部高級研究計劃局)科研部門。ARPA 的主要工作,就是研究如何將那些具有潛在軍事價值的 “黑科技”,應(yīng)用于軍事領(lǐng)域,包括彈道導(dǎo)彈防御、衛(wèi)星導(dǎo)航、核試驗檢測等等。
1961 年 10 月,蘇聯(lián)成功發(fā)射 R-16 洲際導(dǎo)彈,結(jié)合 1949 年 8 月成功爆破的原子彈,這意味著美國本土正面臨遠(yuǎn)程核導(dǎo)彈打擊的威脅。為了保證自己能在蘇聯(lián)的第一輪核打擊下具備一定的生存和反擊能力,美國國防部授權(quán) APRA 研究一種 “分布式“ 的指揮系統(tǒng)。它由無數(shù)的節(jié)點組成,當(dāng)若干節(jié)點被摧毀后,其它節(jié)點仍能相互通信。
從此,ARPA 的核心項目之一就是建立一個可經(jīng)受敵軍打擊的軍用通信系統(tǒng)。
03
ARPANET 項目啟動
這個任務(wù)最早交到 ARPA IPTO(Information Processing Techniques Office,信息處理技術(shù)辦公室)負(fù)責(zé)。
1966 年,來自 NASA(美國航空航天局)的羅伯特·泰勒(Robert Taylor),成為 ARPA IPTO 的第三任主管。羅伯特·泰勒在上任后考察了 IPTO 當(dāng)時構(gòu)建的一個小型通信網(wǎng)絡(luò)之后(由三個電傳打字機(jī)和三臺計算機(jī)組成),認(rèn)為不兼容的計算機(jī)通信沒有任何意義,應(yīng)該建立一個兼容的協(xié)議,允許所有終端之間互相通信。并很快就完成了新型通信網(wǎng)絡(luò)項目的內(nèi)部立項,ARPA 將其命名為 ARPANET(阿帕網(wǎng))。
為了完成 ARPANET 項目,羅伯特·泰勒到處搜羅人才,其中包括:
??麻省理工學(xué)院(MIT)林肯實驗室的拉里·羅伯茨(Lawrence G. Roberts);
??提出 “分布式通信理論” 的蘭德公司科學(xué)家保羅.巴蘭(P.Baran);
??美國加州大學(xué)洛杉磯分校(UCLA)的分組交換理論專家倫納德.克蘭羅克(L.Kleinrock);
其中,保羅.巴蘭的 “分布式通信理論” 提出了 2 個重要思想:
??網(wǎng)絡(luò)的控制權(quán)應(yīng)該完全分散;
??網(wǎng)絡(luò)應(yīng)該采用分組交換(Packet switching)替代電路交換(Circuit Switching)。
分布式通信理論的思想讓每個節(jié)點在進(jìn)行數(shù)據(jù)路由時都具備同等地位,這成為未來互聯(lián)網(wǎng)的最根本特征。
另外,拉里·羅伯茨(Larry Roberts)則被任命為 ARPANET 項目的項目經(jīng)理和首席架構(gòu)師。
1967 年 4 月,在美國密歇根州安娜堡召開的 ARPA IPTO PI 會議上,拉里·羅伯茨組織了有關(guān) ARPANET 設(shè)計方案的討論。不久后就發(fā)表第一篇關(guān)于 ARPANET 設(shè)計的論文《Multiple Computer Networks and Intercomputer Communication》(多計算機(jī)網(wǎng)絡(luò)和計算機(jī)之間的通信)。
在羅伯茨的設(shè)計中,主機(jī)不應(yīng)該處理數(shù)據(jù)路由的任務(wù),這個任務(wù)應(yīng)該由一個小型的廉價計算機(jī)來承擔(dān),命名為 IMP(Interface Message Processor,接口信號處理機(jī))。
IMP 的作用是連接、調(diào)度和管理。主機(jī)把數(shù)據(jù)包發(fā)給 IMP,IMP 查看目標(biāo)地址,或者把它傳遞到本地連接的主機(jī),或者傳遞給另外一個 IMP。有了它,大型主機(jī)就不必 “親自” 參與聯(lián)網(wǎng),從根本上解決了計算機(jī)系統(tǒng)不兼容的問題。后來,人們普遍將 IMP 視為路由器的雛形。
為了防止數(shù)據(jù)包丟失,Sender IMP 會暫存數(shù)據(jù)包,直到獲得 Receiver IMP 的 ACK 確認(rèn)為止,如果沒能收到確認(rèn),它就重新發(fā)送。在那時,ACK 重傳機(jī)制還是由中間路由節(jié)點來完成的,后面才逐步演進(jìn)到由主機(jī) TCP/IP 協(xié)議棧來完成。
1968 年,拉里·羅伯茨在研究報告《資源共享的計算機(jī)網(wǎng)絡(luò)》中,著力闡述了讓 ARPA 的計算機(jī)互相連接,從而使大家分享彼此的研究成果。同年夏天,美國國防部正式啟動了 ARPANET 項目的商業(yè)招標(biāo)。
04
ARPANET 的誕生
1969 年 1 月,來自馬薩諸塞州坎布里奇市的 BBN(Bolt Beranek and Newman Inc.)公司贏得了這個價值 100 萬美元的合同。同年,ARPA 建立了 IMP 的研發(fā)測試中心,IMP 的基礎(chǔ)硬件是配有 12K Memory 的 Honeywell DDP-516 小型計算機(jī)。
??IMP 設(shè)備內(nèi)部
??IMP 設(shè)備面板
項目的第一階段,拉里·羅伯茨計劃在美國西南部建立一個四節(jié)點的網(wǎng)絡(luò)。節(jié)點分別是加州大學(xué)洛杉磯分校、斯坦福大學(xué)研究學(xué)院、加州大學(xué)圣巴巴拉分校和猶他州大學(xué)的 4 臺大型計算機(jī)。
這 4 個節(jié)點之間,采用分組交換技術(shù),通過專門的 IMP 設(shè)備和由 AT&T 公司提供的、速率為 50kbps 的通信線路進(jìn)行連接。
1969 年 8 月 30 日,來自 BBN 公司的第一臺 IMP 運(yùn)抵加州大學(xué)洛杉磯分校。校內(nèi)的倫納德.克蘭羅克教授帶著 40 多名工程技術(shù)人員和研究生進(jìn)行安裝和調(diào)試。
此后不久,被公認(rèn)對 ARPANET 建成作出了巨大貢獻(xiàn)的,來自 BBN 公司的鮑伯·卡恩(Bob Kahn,也稱為:羅伯特·卡恩,Robert Elliot Kahn)也來到了加州大學(xué)洛杉磯分校,加入到 ARPANET 項目中。
??加州大學(xué)洛杉磯分?,F(xiàn)場機(jī)房
1969 年 10 月,第二臺 IMP 運(yùn)抵斯坦福大學(xué)研究院。
10 月 29 日晚,倫納德.克蘭羅克教授安排他的助理、UCLA 大學(xué)本科生查理·克萊恩(Charley Kline)坐在 IMP 終端前,與 SRI 終端操作員進(jìn)行對接。當(dāng)時,查理·克萊恩戴著頭戴式耳機(jī)和麥克風(fēng),以便通過長途電話隨時與對方聯(lián)系。
據(jù)查理·克萊恩回憶,倫納德.克蘭羅克教授那天讓他首先傳輸 LOGIN(登錄)這 5 個英文字母 ,以確認(rèn)分組交換技術(shù)的傳輸效果。根據(jù)事前約定,他只需要鍵入 LOG 這 3 個字母傳送出去,然后斯坦福那邊的主機(jī)就會自動產(chǎn)生 IN 這兩個字母,合成為 LOGIN。以此驗證 2 個節(jié)點之間的通信成功。?
隨后,1969 年 11 月,第三臺 IMP 抵達(dá)加州大學(xué)圣巴巴拉分校。
1969 年 12 月,最后一臺 IMP 在第四節(jié)點猶他大學(xué)安裝成功。
至此,第一個 ARPANET 就在 1969 年誕生了,將加利福尼亞州大學(xué)洛杉磯分校、加州大學(xué)圣巴巴拉分校、斯坦福大學(xué)、猶他州大學(xué)四所大學(xué)的 4 臺大型計算機(jī)進(jìn)行了互聯(lián)。人類社會開始進(jìn)入 “網(wǎng)絡(luò)時代”。?
05
TCP/IP 協(xié)議與 Internet 的誕生
在運(yùn)行 ARPANET 不久后,大家才發(fā)現(xiàn)各個 IMP 在進(jìn)行連接的時候,需要考慮使用一種 4 臺 IMP 都能夠統(tǒng)一識別的信號來作為開發(fā)和關(guān)閉通信管道,否則這些 IMP 不會知道什么時候應(yīng)該接收信號,什么時候該結(jié)束。
對于這個問題,實際上在 1968 年 ARPANET 項目剛啟動的時候,拉里·羅伯茨就成立了一個專門的研究小組,名為 NWG(Network Working Group),由 史蒂夫·克羅克(Steve Crocker)擔(dān)任組長。這個小組試圖通過編寫主機(jī)與主機(jī)之間的通信軟件來解決這個問題。
1970 年 12 月,NWG 通過軟件的方式實現(xiàn)了最初的 ARPANET 通信協(xié)議,稱為 NCP(網(wǎng)絡(luò)控制協(xié)議)。
1972 年,鮑伯·卡恩在國際計算機(jī)通信大會(ICCC)上成功演示了 ARPANET 網(wǎng)絡(luò),那是 ARPANET 的首次公開亮相。經(jīng)過幾年的發(fā)展,在當(dāng)年 ARPANET 已經(jīng)擁有了 40 個節(jié)點,E-mail、FTP 和 Telnet 是當(dāng)時最主要的網(wǎng)絡(luò)應(yīng)用。尤其是 E-mail,占據(jù)了 75% 的流量。
在 ARPANET 成功的激勵下,計算機(jī)網(wǎng)絡(luò)領(lǐng)域開始漸漸出現(xiàn)了其他的一些網(wǎng)絡(luò)類型,例如:夏威夷建立了無線電網(wǎng)絡(luò),硅谷發(fā)明了以太網(wǎng)絡(luò),太空衛(wèi)星也組建了衛(wèi)星網(wǎng)絡(luò)等等。
1973 年,ARPANET 通過衛(wèi)星通信實現(xiàn)了與夏威夷、英國倫敦大學(xué)和挪威皇家雷達(dá)機(jī)構(gòu)的聯(lián)網(wǎng)。ARPANET 從美國本地互聯(lián)網(wǎng)絡(luò)逐漸進(jìn)化成為了一張國際性的互聯(lián)網(wǎng)絡(luò)。
隨著 ARPANET 的發(fā)展和用戶對網(wǎng)絡(luò)需求的不斷提高,人們開始發(fā)現(xiàn) NCP 協(xié)議存在著很多的缺點,比如 NCP 只能在同構(gòu)環(huán)境中運(yùn)行(指網(wǎng)絡(luò)上的所有計算機(jī)都運(yùn)行著相同的操作系統(tǒng)),又比如 NCP 支持的主機(jī)數(shù)量有限。對于一個分布廣泛的網(wǎng)絡(luò)而言,這些缺陷就必然成為了發(fā)展路上最大障礙。
1973 年,針對 NCP 協(xié)議存在的問題,鮑伯·卡恩認(rèn)識到只有在深入理解了各種操作系統(tǒng)細(xì)節(jié)的基礎(chǔ)上,才能建立一種對各種操作系統(tǒng)都使用的協(xié)議。于是鮑伯·卡恩提出了 “開放的網(wǎng)絡(luò)架構(gòu)” 思想。同年,來自斯坦福大學(xué)的溫頓.瑟夫(Vinton G. Cerf)加入 ARPA,并負(fù)責(zé)領(lǐng)導(dǎo)基于 NWG 改建的 INWG 工作組。順理成章的,鮑伯·卡恩邀請溫頓.瑟夫一起研究新協(xié)議的各個細(xì)節(jié),并在不久就共同提出了 TCP 傳輸協(xié)議。
為了驗證 TCP 協(xié)議的可用性,INWG 開始試驗基于 TCP 協(xié)議 Client 軟件將一個數(shù)據(jù)發(fā)送到距離 10 萬公里外的 Server。結(jié)果觀察數(shù)據(jù)在傳輸過程中沒有任何丟失,TCP 協(xié)議的可行性得到了驗證,也一度引起相關(guān)領(lǐng)域的廣泛關(guān)注。
1977 年,APRA 改建的 DARPA(美國國防部高級研究計劃署)與 BBN 公司、斯坦福大學(xué)和倫敦大學(xué)學(xué)院簽訂商業(yè)合同,正式開始在不同的 CPU 硬件平臺上開發(fā) TCP 協(xié)議的驗證版本:TCPv1 和 TCPv2。
隨后 1977 年 11 月,鮑伯·卡恩和溫頓.瑟夫給予 TCPv2 完成了一個具有里程碑意義的實驗。數(shù)據(jù)包從一輛載有無線傳輸器的箱式貨車發(fā)出,進(jìn)入 APRANET,然后通過專用衛(wèi)星鏈路到達(dá)倫敦,再通過衛(wèi)星傳輸網(wǎng)絡(luò),到達(dá) APRANET, 最后傳回南加州大學(xué)信息科學(xué)研究所,行程 9.4 萬英里,沒有丟失一個比特的數(shù)據(jù)信息。
同時這也讓很多組織機(jī)構(gòu)見識到了計算機(jī)聯(lián)網(wǎng)的重要性,紛紛開展研究。全球涌現(xiàn)了大量的新型網(wǎng)絡(luò),例如:計算機(jī)科學(xué)研究網(wǎng)絡(luò) CSNET、加拿大網(wǎng)絡(luò) CDnet、因時網(wǎng) BITNET 等。
1978 年,溫頓·瑟夫、鮑伯·卡恩、丹尼·科恩(Danny Cohen)和約翰·普斯特爾(Jon Postel)合力將 TCP 協(xié)議從分層思想的角度劃分為 2 個協(xié)議,即:
1、傳輸層的 TCP 協(xié)議,負(fù)責(zé)可靠傳輸。
2、網(wǎng)絡(luò)層的 IP 協(xié)議,負(fù)責(zé)在不同的網(wǎng)絡(luò)之間進(jìn)行互聯(lián)。
它們合稱 TCP/IPv3,并在不久的將來演進(jìn)為穩(wěn)定版本 TCP/IPv4。
??溫頓.瑟夫
? TCP/IP,現(xiàn)代 Internet 的基石。
1980 年,DARPA 開始研究如何將不同的網(wǎng)絡(luò)類型連接起來,并啟動了 The Interneting Project(互聯(lián)網(wǎng)技術(shù))項目。這個項目讓剛剛嶄露頭角的 TCP/IPv4 協(xié)議獲得了施展空間。
1981 年,DARPA 資助 BBN 公司和加州大學(xué)伯克利分校,把 TCP/IP 協(xié)議實現(xiàn)到 UNIX 操作系統(tǒng)。值得一提的是,當(dāng)時還在上研究生的天才程序員 Bill Joy 對 TCP/IP 協(xié)議深感興趣,但卻對 BBN 提供的代碼深痛欲絕。于是 Bill Joy 另起爐灶,只用了幾天時間就在 BSD UNIX 發(fā)行版中實現(xiàn)了一個高性能的 TCP/IP 協(xié)議棧。當(dāng)然那時的 TCP/IP 協(xié)議很很簡單,但 BSD Socket 直到今天還在發(fā)揮著余熱。
1982 年,ARPANET 開始采用 TCP/IP 協(xié)議替代 NCP 協(xié)議。
1983 年,美國國防部將 ARPANET 劃分為軍用和民用兩部分。
1984 年, TCP/IP 協(xié)議得到美國國防部的肯定,成為計算機(jī)領(lǐng)域共同遵守的一個主流標(biāo)準(zhǔn)。
至此,基于 IP(Internet Protocol)協(xié)議標(biāo)準(zhǔn)的 Internet 誕生了。鮑伯·卡恩和溫頓·瑟夫也因此被譽(yù)為 “互聯(lián)網(wǎng)之父”。
實際上,TCP/IP 協(xié)議的發(fā)展也并非一帆風(fēng)順,其中最大的競爭對手就是國際標(biāo)準(zhǔn)化組織(ISO)。ISO 在制定國際化標(biāo)準(zhǔn)上經(jīng)驗十足,很快就提出了 OSI 七層模型,并大力推廣。
面對挑戰(zhàn),那時溫頓.瑟夫努力勸說讓 IBM、DEC、HP 等主機(jī)大廠支持 TCP/IP 協(xié)議,但都遭到了拒絕。因為在他們看來 TCP/IP 只是一屆研究項目,無力與在商業(yè)社會中獲得過巨大成功的 ISO 抗衡。
而美國國防部的應(yīng)對策略則是將 TCP/IP 協(xié)議與 UNIX 系統(tǒng)、C 語言捆綁在一起,并由 AT&T 向美國各個大學(xué)發(fā)放非商業(yè)許可證。這樣才迫使這些跟 UNIX 系統(tǒng)有緊密聯(lián)系的企業(yè)轉(zhuǎn)向 TCP/IP 的懷抱。這為 UNIX 系統(tǒng)、C 語言、TCP/IP 協(xié)議的發(fā)展拉開了序幕,它們分別在操作系統(tǒng)、編程語言、網(wǎng)絡(luò)協(xié)議這 3 個關(guān)鍵領(lǐng)域影響至今。
1985 年,TCP/IP 協(xié)議棧成為 UNIX 操作系統(tǒng)密不可分的組成部分。UNIX 的廣泛傳播也極大助力了 TCP/IP 的發(fā)展。后來,幾乎所有的操作系統(tǒng)都開始支持 TCP/IP 協(xié)議。經(jīng)典的 TCP/IP 五層模型已成氣候。
后來,美國國家科學(xué)基金會(NSF)自己出資,基于 TCP/IP 協(xié)議,建立完全屬于自己的 NSFnet 廣域網(wǎng)。
NSFnet 的發(fā)展非常迅速,很快將全美各地的大學(xué)、政府和私人科研機(jī)構(gòu)連接起來。同時,NSFnet 的網(wǎng)絡(luò)速度也很快,比當(dāng)時民用的 ARPANET 要快 25 倍以上。漸漸地,NSFnet 開始取代 ARPANET,成為 Internet 的主干網(wǎng)。
80 年代末,連接到 NSFnet 的計算機(jī)數(shù)量遠(yuǎn)遠(yuǎn)超過了 ARPANET 用戶的數(shù)量。
直至 1990 年 6 月 1 日,ARPANET 正式退出歷史舞臺。
1990 年 9 月,由 Merit、IBM 和 MCI 公司聯(lián)合建立了一個非盈利的組織 ANS(Advanced Network&Science Inc.,先進(jìn)網(wǎng)絡(luò)科學(xué)公司)。ANS 的目的是建立一個全美范圍的 T3 級主干網(wǎng),能以 45Mbps 的速率傳送數(shù)據(jù)。
1991 年底,NSFnet 主干網(wǎng)與 ANS T3 級主干網(wǎng)進(jìn)行互聯(lián)互通,并宣布開始對全社會進(jìn)行商業(yè)運(yùn)營。
后來大家都知道,網(wǎng)絡(luò)連接數(shù)量開始指數(shù)級增長。Internet 真正變成了全球互聯(lián)網(wǎng),開始走進(jìn)人們的生活。
1994 年,舉辦互聯(lián)網(wǎng)大會。
??前排從左到右:Dave Walden, Barry Wessler, Truett Thach, Larry Roberts, Len Kleinrock, Bob Taylor, Roland Bryan, Bob Kahn.
??后排從左到右:Marty Thrope, Ben Barker, Vint Cerf, Severo Ornstein, Frank Heart, Jon Postel, Doug Englebart, and Steve Crocker.
1998 年,美國成立非營利性民間組織 ICANN(Internet Corporation for Assigned Names and Numbers,互聯(lián)網(wǎng)名稱與數(shù)字地址分配機(jī)構(gòu)),它由商務(wù)部的國家電信和信息管理局監(jiān)督,負(fù)責(zé)全球互聯(lián)網(wǎng)域名系統(tǒng)、根服務(wù)器系統(tǒng)、IP 地址資源的協(xié)調(diào)、管理和分配。由 ICANN 的下屬機(jī)構(gòu) IANA(Internet Assigned Numbers Authority,互聯(lián)網(wǎng)號碼分配機(jī)構(gòu))負(fù)責(zé)管理全球互聯(lián)網(wǎng)域名的根服務(wù)器。
2014 年,ICANN決定將監(jiān)管權(quán)移交給一個由多方利益相關(guān)者管理的獨(dú)立機(jī)構(gòu)。
2016 年 10 月 1 日,ICANN 表示,正式將互聯(lián)網(wǎng)的控制權(quán)移交給一個非盈利的全球互聯(lián)網(wǎng)多方利益相關(guān)者組織。這標(biāo)志著美國結(jié)束對這一互聯(lián)網(wǎng)核心資源近 20 年的單邊壟斷,對于每一個網(wǎng)民來說都是一大喜事。
06
HTTP 協(xié)議與 Web 世界的誕生
再回到 1989 年,當(dāng)時在瑞士日內(nèi)瓦 CERN(核子研究中心)工作的 Tim Berners-Lee(蒂姆·伯納斯·李)在論文中提出了一種可以在 Internet 上構(gòu)建超鏈接文檔的技術(shù),即 HTTP/Web 技術(shù),并提出了 3 點基本要素:
1、URI(Uniform Resource Identifier,統(tǒng)一資源標(biāo)識符):Internel 中的統(tǒng)一資源標(biāo)識符,用于唯一標(biāo)識一個 Internet 上的資源。
2、HTML(Hyper Text Markup Language,超文本標(biāo)記語言):使用 HTML 標(biāo)簽來構(gòu)建超文本文檔,HTML 標(biāo)簽將文字,圖形、動畫、聲音、表格、鏈接等內(nèi)容格式進(jìn)行了統(tǒng)一。
3、HTTP(Hyper Text Transfer Protocol,超文本傳輸協(xié)議):最初設(shè)計來用于傳輸 HTML 的協(xié)議,處于 TCP/IP 應(yīng)用層,傳輸?shù)臄?shù)據(jù)主體稱為 Message(消息),基于 TCP 傳輸協(xié)議。
Tim Berners-Lee 所定義的 Resource,指的是 Internet 上的一個實體,它可以是一段文本、一張圖片、一首歌曲、一種服務(wù)等。URI 就是在 Internet 中標(biāo)識一個 Resource 的唯一 ID,包含了 URL 和 URN 這 2 種形式。
? URL(Uniform Resource Loader,統(tǒng)一資源定位符):側(cè)重于 “定位”,類似一個地址,XX省XX市XX區(qū)XX單元XX室。
? URN(Uniform Resource Name,統(tǒng)一資源名稱):側(cè)重于 “命名”,類似身份證號。
由于 URL 更具有空間層次設(shè)計,所以如今已經(jīng)成為了主流,但開發(fā)者仍應(yīng)該清晰區(qū)分兩者。?
1990 年 12 月 25 日,Tim Berners-Lee 和羅伯特·卡里奧一起實現(xiàn)了基于 HTTP 協(xié)議的 Web Server,并通過 Internet 成功完成了 HTTP Client 和 Web Server 的第一次通信。
1991 年 8 月 6 日,Tim Berners-Lee 基于 HTTP 和 HTML 設(shè)計并開發(fā)了第一個網(wǎng)頁瀏覽器,并發(fā)布了世界上第一個 Web 網(wǎng)站。它被稱為 The First Website(第一個網(wǎng)站)或 InfoMesh(信息管理系統(tǒng)項目),運(yùn)行在 CERN 的服務(wù)器上,旨在幫助研究人員共享信息和文獻(xiàn)?;?HTML,該網(wǎng)站可以提供一些鏈接,讓用戶通過單擊超鏈接跳轉(zhuǎn)到其他頁面或文檔,這種超鏈接的設(shè)計 Web 技術(shù)最重要的創(chuàng)新之一。
同年,Tim Berners-Lee 正式提出了 WWW(World Wide Web,萬維網(wǎng))的概念。
1992 年,幾個 Internet 組織合并成立統(tǒng)一的 ISOC(因特網(wǎng)協(xié)會),此時的 Internet 已經(jīng)注冊了超過 100 萬臺主機(jī),并持續(xù)指數(shù)級瘋狂增長。
1994 年 10 月 1 日,Tim Berners-Lee 創(chuàng)建了非營利性的 W3C(World Wide Web Consortium,萬維網(wǎng)聯(lián)盟),邀集 Microsoft、 Netscape、 Sun、Apple、IBM 等共 155 家互聯(lián)網(wǎng)上的著名公司。由 Tim Berners-Lee 擔(dān)任 W3C 的主席,致力推動 WWW 協(xié)議的標(biāo)準(zhǔn)化,并進(jìn)一步推動 Web 技術(shù)的發(fā)展。
在當(dāng)時的瀏覽器熱潮下,Tim Berners-Lee 也曾考慮過成立一家叫做 Websoft 的公司做網(wǎng)頁瀏覽器。但很快他就放棄了,他擔(dān)心這么做會導(dǎo)致激烈的市場競爭,開發(fā)出技術(shù)上互不兼容的瀏覽器、最終把 WWW 割裂成一個個利益集團(tuán)。
??Tim Berners-Lee,萬維網(wǎng)之父
最初,由于那時候網(wǎng)絡(luò)資源匱乏,HTTP/0.9 版本相對簡單,采用純文本格式,且設(shè)置為只讀,所以當(dāng)時整個 HTTP Request Message 只有一行,比如:GET www.leautolink.com。只能使用 GET 的方式從 Web 服務(wù)器獲得 HTML 文檔,響應(yīng)以后則關(guān)閉。響應(yīng)中也只包含了文檔本身,無響應(yīng)頭,無錯誤碼,無狀態(tài)碼。
1995 年,由 Brian Behlendorf 發(fā)布了基于 HTTP/0.9 的 Apache HTTP Server 開源項目。同年,網(wǎng)景和微軟開啟瀏覽器大戰(zhàn),但好在 Tim Berners-Lee 擔(dān)心的 “撕裂“ 并未發(fā)生,HTTP 協(xié)議已經(jīng)逐成氣候。
隨著 Apache HTTP Server 的誕生,以及同時期其他的多媒體等技術(shù)發(fā)展迅速,都進(jìn)一步促使 HTTP 協(xié)議的演進(jìn)。緊跟著 1996 年,HTTP/1.0 發(fā)布,更好的支持采用圖文網(wǎng)頁形式。具體而言增加了以下幾個特性:
增加 HTTP Header 格式。
增加協(xié)議版本號。
增加 POST 方法。
增加 HEAD 方法。
增加文件處理類型。
增加響應(yīng)狀態(tài)碼。
提供國際化支持。
經(jīng)過幾年的發(fā)展,1999 年,HTTP/1.1 發(fā)布并成為標(biāo)準(zhǔn),寫入 RFC。至此,HTTP 協(xié)議已然成為了 Web 世界的奠基石。
增加 PUT 等方法。
增加緩存處理機(jī)制:在 Header 增加了如:Entity tag,If-Unmodified-Since,If-Match,If-None-Match 等可供選擇的 Request Body 來控制緩存策略。
增加帶寬優(yōu)化機(jī)制:在 Header 增加了 Range 字段,它允許只請求資源的某個部分,而不是一攬子返回,得以更充分地利用帶寬和網(wǎng)絡(luò)連接。
增加錯誤通知的管理:新增了 24 個錯誤狀態(tài)響應(yīng)碼。
增加 Host 虛擬主機(jī):支持 HTTP Server 虛擬主機(jī)技術(shù)??梢栽谝慌_物理服務(wù)器上存在多個虛擬主機(jī)(Multi-homed Web Servers),并且它們共享一個 IP 地址,通過不同 Hostname 區(qū)分。
增加長連接機(jī)制:默認(rèn)使用長連接,應(yīng)對日益復(fù)雜的網(wǎng)頁(網(wǎng)頁內(nèi)的圖片、腳本越來越多了)。
等等。
隨著 HTTP/1.1 被納入 RFC 標(biāo)準(zhǔn),同在 1992 年,由 HTTP/1.0 和 1.1 的主要設(shè)計者 Roy Thomas Fielding 宣布成立了 Apache 軟件基金會,并作為 Apache 基金會的第一任主席,從此,Apache Web Server 和 HTTP 協(xié)議攜手共生共榮。 除了 HTTP 協(xié)議,Apache 軟件基金會旨在促進(jìn)各種開源軟件項目的開發(fā)和使用,其中 Apache HTTP Server 作為首個核心項目。這為 Apache HTTP Server 的長期發(fā)展奠定了良好的基礎(chǔ),同時也締造了繁榮的開源生態(tài)系統(tǒng),孵化了包括:Tomcat、Hadoop、Lucene、OpenOffice 等開源項目。 ? 至今而至,Apache 軟件基金會已成為了全球最大的開源組織之一。
07
REST 系統(tǒng)架構(gòu)的誕生與 API 經(jīng)濟(jì)的騰飛
2000 年,Apache 基金會的第一任主席 Roy Thomas Fielding 在博士論文《Architectural Styles and the Design of Network-based Software Architectures(架構(gòu)風(fēng)格和基于網(wǎng)絡(luò)的軟件架構(gòu)設(shè)計)》中提出了 REST(Representational State Transfer,表現(xiàn)層狀態(tài)轉(zhuǎn)移)的理念。
顧名思義,Roy Thomas Fielding 在這篇論文中主要討論的是:如何在符合架構(gòu)原理的前提下,理解和評估以網(wǎng)絡(luò)為基礎(chǔ)的應(yīng)用軟件的架構(gòu)設(shè)計,得到一個功能強(qiáng)、性能好、適宜通信的架構(gòu)。
可見,REST、HTTP 協(xié)議、Web 服務(wù)器,這 3 者之間天生關(guān)系緊密。所以,開發(fā)者要清晰理解 Representational State Transfer 含義,應(yīng)該先對 HTTP 協(xié)議有一個清晰的認(rèn)識。
通過拆詞法,嘗試對 Representational State Transfer 的含義進(jìn)行以下解構(gòu):
??Representational(表現(xiàn)層):即 Resources 的表現(xiàn)層。上述我們知道 Resource 是一種抽象,它具有多種表現(xiàn)形式,而最終把 Resource 具體呈現(xiàn)出來的形式,就叫做它的 “表現(xiàn)層”。例如:一個文本資源可以使用 TEXT 格式表現(xiàn),也可以使用 HTML、XML、JSON 等格式表現(xiàn)。在 HTTP/1.0 中,Roy Thomas Fielding 為 HTTP Header 設(shè)計了 Accept/Content-Type 字段來描述這個 Resource 的 Representational。
所以,需要注意的是:URI 僅用于標(biāo)識一個 Resource,而不應(yīng)該在 URI 中描述表現(xiàn)層的內(nèi)容,一個優(yōu)雅的 RESTful API 應(yīng)該使用 Accept/Content-Type 字段來描述 Resource 的表現(xiàn)層。
Accept:?Application/json
Content-Type:?Application/json
??State Transfer(狀態(tài)轉(zhuǎn)移):Resource 作為 C/S 交互的實體,必然存在著狀態(tài)的變化,然而 HTTP 是一種 Stateless(無狀態(tài))的協(xié)議(不傳輸資源狀態(tài)的描述)。這意味著:Resource 的狀態(tài)都保存在 Server,而 Client 想要操作某個 Resource(改變其狀態(tài))就必須通過某種手段讓 Resource 在 Server 上發(fā)生狀態(tài)的 “轉(zhuǎn)移”,而且這種 “轉(zhuǎn)移” 必然是建立在 Resource 的 “表現(xiàn)層” 之上的,例如:創(chuàng)建一個圖片資源、刪除一個圖片資源;啟動一個服務(wù),關(guān)閉一個服務(wù)。故稱之為 "表現(xiàn)層狀態(tài)轉(zhuǎn)移"。
Client 可以使用的手段就是 Roy Thomas Fielding 在 HTTP 請求行中設(shè)計的 Request Methods(HTTP/0.9 引入 GET,HTTP/1.0 引入 POST、HEAD,HTTP/1.1 引入 PUT 等)。
# Client
GET?/resource
Accept:?text/html
# Server
Content-Type:?text/html;charset=utf-8
Response code: 200
至此,我們回頭再看,REST 討論的其實是一個:如何將軟件和網(wǎng)絡(luò)兩個領(lǐng)域進(jìn)行交叉融合,繼而得到一個功能強(qiáng)、性能好、適宜通信的互聯(lián)網(wǎng)軟件架構(gòu)的問題。
2006 年,正值 AWS 孵化的初期,時任 Amazon CTO Werner Vogels 在一封郵件中強(qiáng)調(diào):
1、AWS 必須是一種 Resilient software architecture(具有韌性/彈性的軟件架構(gòu))。
2、不使用 RESTful API 的員工將被辭退。(注:RESTful API 就是符合 REST 架構(gòu)設(shè)計思想的軟件 API 風(fēng)格,*-ful 在西文語境中常用于表示一種風(fēng)格)
直到 2013 年筆者接觸 OpenStack(OpenStack 初期常被認(rèn)為是 AWS 的開源對標(biāo)版本)之后才更深刻地體會到了其內(nèi)涵和精髓。大型分布式軟件的各個組件之間必須具備解耦和擴(kuò)展的能力,而網(wǎng)絡(luò)(Network-base)就是組件之間通信的唯一依賴,且對資源的操作具有唯一的確定性。
我們可以選取一個角度來比較一下 RESTful 與另外兩種常見的分布式架構(gòu)風(fēng)格的區(qū)別:
? RESTful 抽象的是資源:資源的抽象不需要依賴開發(fā)平臺或編程語言,C/S 架構(gòu)完全松耦合。
? DO(Distributed Objects,分布式對象)抽象的是對象:不同的編程語言對對象的定義有很大差別,所以 DO 架構(gòu)通常會與某種編程語言(.NET)綁定,若跨語言交互,實現(xiàn)則會非常復(fù)雜。典型有 RMI、EJB/DCOM、.NET Remoting 等。
? RPC(Remote Procedure Call,遠(yuǎn)程過程調(diào)用)抽象的是過程:這要求 C/S 之間具有很強(qiáng)的 RPC 通信模型耦合度,否則雙方無法理解對方的意圖。典型有 SOAP、XML-RPC、Flash AMF 等。
AWS 在后面很長的時間內(nèi)一直都奉行著 RESTful API 的鐵律,使其得以在幾年間飛速擴(kuò)展至上百個核心組件,成為了極具韌性/彈性和良好生態(tài)的公有云架構(gòu)?,F(xiàn)在的軟件公司基本都會采用 RESTful API 風(fēng)格,讓產(chǎn)品可以通過 API 的方式融入到行業(yè)生態(tài)中,形成 APIs 經(jīng)濟(jì)效益。
08
Future Internet(未來互聯(lián)網(wǎng))思想萌芽
21 世紀(jì)初,隨著 Internet 的全球普及,隨之也逐漸暴露出了在可擴(kuò)展性、安全性、可管理性、帶寬性能等多方面的問題。
以安全性為例子,傳統(tǒng) Internet 的網(wǎng)絡(luò)設(shè)計源自 ARPANET,認(rèn)為所有的用戶都是可信的、自律的,并沒有內(nèi)生考慮在基礎(chǔ)網(wǎng)絡(luò)結(jié)構(gòu)上確保網(wǎng)元不受攻擊。更具體地說,TCP/IP 是一套開放的協(xié)議和標(biāo)準(zhǔn),Sender 和 Receiver 之間不存在固定的互聯(lián)電路和信令系統(tǒng),網(wǎng)絡(luò)中的 Sender 可以向其它任何 Receiver 發(fā)送任何內(nèi)容,而 Receiver 卻無法拒絕接收。這也意味著網(wǎng)絡(luò)上的任何人都可以使用這些協(xié)議和標(biāo)準(zhǔn)來攻擊其他人或組織,而且很難防止這種攻擊。
1、第一代科研型互聯(lián)網(wǎng):軍事與科研網(wǎng)。
2、第二代消費(fèi)型互聯(lián)網(wǎng):萬維網(wǎng)(突發(fā)性,盡力而為、不安全、難管理、不強(qiáng)調(diào) QoS)。
3、第三代生產(chǎn)型互聯(lián)網(wǎng):未來互聯(lián)網(wǎng)(確定性、差異性、安全、易于管理、強(qiáng)調(diào) QoS,與實體經(jīng)濟(jì)深度融合)。
可見,傳統(tǒng) Internet 的發(fā)展早已經(jīng)走到了十條路口,F(xiàn)uture Internet(未來互聯(lián)網(wǎng))的演進(jìn)成為了業(yè)界關(guān)注的焦點。
并且長期以來,計算機(jī)網(wǎng)絡(luò)領(lǐng)域?qū)?Future Internet 的發(fā)展都存在著 2 種不同觀點:
1、演進(jìn)派:認(rèn)為 Internet 應(yīng)像過去那樣繼續(xù)存在,遇到什么樣的問題,就打什么樣的補(bǔ)丁,安全性此類問題并不是由網(wǎng)絡(luò)基礎(chǔ)架構(gòu)本身引起的。應(yīng)該采用網(wǎng)絡(luò)重疊的方式來提供所需安全性和性能,而不觸動現(xiàn)有的基礎(chǔ)設(shè)施。2008 年 12 月,互聯(lián)網(wǎng)創(chuàng)建人之一 Bob Kahn 在印度海德拉巴舉辦的 “互聯(lián)網(wǎng)治理論壇”上發(fā)言,提出了 “數(shù)字對象架構(gòu)” 的新標(biāo)準(zhǔn),旨在使信息能在互聯(lián)網(wǎng)上更順暢地傳輸。他堅持認(rèn)為這樣就能解決問題,而又不損害基本的架構(gòu)。
2、革命派:則認(rèn)為 Internet 應(yīng)該被 “重新發(fā)明“,不斷打補(bǔ)丁的方式,會增加 Internet 的復(fù)雜性,使其變得更難以管理、對突破性的新型應(yīng)用更不友好,且使 Internet 的技術(shù)體系逐步僵化,現(xiàn)有體系可能已快走到盡頭,還能修補(bǔ)的余地已經(jīng)不大。2005 年,作為 Internet 協(xié)議的總設(shè)計師之一的 Dave Clark 教授發(fā)表了一篇題為《互聯(lián)網(wǎng)不再聯(lián)》的文章,指出:“Internet 的本質(zhì)缺陷讓商家花費(fèi)了幾十億成本,但卻阻礙了新發(fā)明,威脅到了國家安全?,F(xiàn)在到了從頭再來的時候了?!?革命派倡導(dǎo)新路線有可能孵化更多種類的網(wǎng)絡(luò)體系,并創(chuàng)造持續(xù)創(chuàng)新的環(huán)境。在走革命路線的過程中,也會為演進(jìn)路線提供更多的改進(jìn)機(jī)會。
顯然的,演進(jìn)派的擁躉主要來自商業(yè)社會,而革命派則得到了學(xué)術(shù)界和國家機(jī)構(gòu)的支持。
2005 年 8 月,NSF(美國國家科學(xué)基金會)投資了 GENI(Global Environment for Networking Innovations,全球網(wǎng)絡(luò)創(chuàng)新研究環(huán)境)和 FIND(Future Internet Network Design,未來的互聯(lián)網(wǎng)設(shè)計)兩個項目。
GENI 項目是一個開放的、大規(guī)模的、真實的、分布式的,用于研究未來互聯(lián)網(wǎng)技術(shù)(Future Internet technologies)的全國性網(wǎng)絡(luò)創(chuàng)新試驗床基礎(chǔ)設(shè)施。通過為研究者提供一個可自定義的、可重復(fù)實現(xiàn)的虛擬網(wǎng)絡(luò)試驗床基礎(chǔ)設(shè)施的協(xié)作方式,加速 Future Internet 的研究,繼而改變傳統(tǒng)網(wǎng)絡(luò)體系研究所遵循的 “打補(bǔ)丁” 的演進(jìn)方式,借此從根本上思考 Future Internet 的體系和功能,并以此指導(dǎo)未來網(wǎng)絡(luò)體系的演化。
GENI 希望網(wǎng)絡(luò)的新體系結(jié)構(gòu)具有以下 4 個基本特征:
良好的安全性與可管理性。
允許各種計算設(shè)備,包括 PC、手機(jī)、傳感器、嵌入式處理器與此網(wǎng)絡(luò)連接,以實現(xiàn)普適計算。
能實現(xiàn)對其他重要基礎(chǔ)設(shè)施必要的控制與管理。
引入一些使網(wǎng)絡(luò)變得更有彈性、更容易管理的技術(shù),便于業(yè)務(wù)提供商能更好地開展新業(yè)務(wù)。
在技術(shù)層面,GENI 通過虛擬化技術(shù)和分布式技術(shù),從物理空間和時間兩個方面,將資源以虛擬化切片的形式進(jìn)行交付,為不同網(wǎng)絡(luò)實驗者提供他們所需求的試驗床資源(如:計算、存儲、帶寬、網(wǎng)絡(luò)拓?fù)涞龋?,并提供試驗床資源的可操作性、可測性和安全性。
2007 年 3 月,NSF 通過 GENI 和 FIND 項目資助幾項大學(xué)研究,斯坦福大學(xué)的一個跨學(xué)科研究項目 Clean Slate Program(意為:白手起家,或從頭再來)就是其中之一。Clean Slate 項目的最終目的是要重新發(fā)明 Internet,旨在改變設(shè)計已略顯不合時宜,且難以革命性進(jìn)化發(fā)展的傳統(tǒng)網(wǎng)絡(luò)基礎(chǔ)架構(gòu)。該課題除了得到 NSF 的支持外,后來還逐漸得到了 Cisco、德國電信、NTT DoCoMo、NEC 和 Xilinx 等商業(yè)伙伴的支持。
09
OpenFlow 與 SDN 的誕生
2006 年,斯坦福教授 Nick McKeown(時任 Clean Slate 項目主任)的博士學(xué)生 Martin Casado,在 RCP 和 4D 論文的基礎(chǔ)上提出了一種邏輯上集中控制的企業(yè)安全解決方案 SANE,希望通過集中控制的方式來解決安全問題。集中控制思想是對保羅.巴蘭最初在 “分布式通信理論” 中提出的分散控制思想的一種顛覆。
2007 年,Martin Casado 在 SANE 基礎(chǔ)上開始領(lǐng)導(dǎo)面向企業(yè)網(wǎng)絡(luò)安全與管理的 Ethane 項目。該項目試圖通過一個集中式的 Controller(控制器),讓網(wǎng)絡(luò)管理員方便地定義基于網(wǎng)絡(luò)流的安全控制策略,并將這些安全策略應(yīng)用到各種網(wǎng)絡(luò)設(shè)備中,從而實現(xiàn)對整個網(wǎng)絡(luò)通訊的安全控制。
后來,受 Ethane 項目的啟發(fā),Martin Casado 和他的導(dǎo)師 Nick McKeown 教授發(fā)現(xiàn),如果將 Ethane 的設(shè)計更簡化,將傳統(tǒng)網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)轉(zhuǎn)發(fā)(Data Plane)和路由控制(Control Plane)兩個功能模塊相分離,并通過集中式的 Controller 以標(biāo)準(zhǔn)化的接口對各種網(wǎng)絡(luò)設(shè)備進(jìn)行管理和配置,那么這將為網(wǎng)絡(luò)資源的設(shè)計、管理和使用提供更多的可能性,從而更容易推動網(wǎng)絡(luò)的革新與發(fā)展。
同年,Nick Mckeown 教授、Scott Shenker 教授和 Martin Casado 博士在硅谷一起創(chuàng)辦了 Nicira(后被 VMware 收購),這是 SDN 歷史上第一個初創(chuàng)公司。
??控制面、數(shù)據(jù)面統(tǒng)一的傳統(tǒng)路由器設(shè)備:
??控制面、數(shù)據(jù)面分離的 SDN 網(wǎng)絡(luò)架構(gòu):
2008 年,Nick McKeown 教授等人在 ACM SIGCOMM 發(fā)表了題為《OpenFlow: Enabling Innovation in Campus Networks》(OpenFlow:校園網(wǎng)的創(chuàng)新使能)的論文,首次詳細(xì)地介紹了 OpenFlow 和 OpenFlow Switch 的概念。
該篇論文首次詳細(xì)地介紹了 OpenFlow 的概念、工作原理,列舉了 OpenFlow 的幾大應(yīng)用場景。包括:
校園網(wǎng)絡(luò)中對實驗性通訊協(xié)議的支持;
網(wǎng)絡(luò)管理和訪問控制;
網(wǎng)絡(luò)隔離和 VLAN;
基于 Wi-Fi 的移動網(wǎng)絡(luò);
非 IP 網(wǎng)絡(luò);
基于網(wǎng)絡(luò)包的處理。
OpenFlow Switch 相較于傳統(tǒng) Switch 有著本質(zhì)不同。OpenFlow Switch 將控制權(quán)上交給集中控制器,以此解決了 “難管理" 的問題,也讓網(wǎng)絡(luò)基礎(chǔ)設(shè)施具備了內(nèi)生的安全性。OpenFlow 很久就在 GENI 項目中得到了應(yīng)用。
同年,Nick McKeown 教授帶領(lǐng)的斯坦福大學(xué)研究團(tuán)隊發(fā)布了首個開源 SDN Controller NOX。緊接著,2009 年又發(fā)布了 Python 版的 SDN Controller POX,以及 OpenFlow1.0 協(xié)議和開源網(wǎng)絡(luò)虛擬化軟件 FlowVisor。2010 年,Nick McKeown 的團(tuán)隊又發(fā)布了 Mininet。迄今為止,Nick McKeown 團(tuán)隊發(fā)布的這些軟件依然被業(yè)界廣泛使用。
OpenFlow/SDN 可以說是 “革命派” 在未來互聯(lián)網(wǎng)技術(shù)研究上的關(guān)鍵成果。
集中式的 Controller 通過 OpenFlow 協(xié)議對 OpenFlow Switch 中的 Flow Table 進(jìn)行控制。Controller 會為特定的工作負(fù)載計算最佳路徑,從而對 Switch 的數(shù)據(jù)轉(zhuǎn)發(fā)定義路徑??刂妻D(zhuǎn)發(fā)分離的架構(gòu)由 Controller 對網(wǎng)絡(luò)中的各種 Switch 設(shè)備進(jìn)行綜合管理,這種行為就像對網(wǎng)絡(luò)進(jìn)行整體 “編程” 一樣。
2009 年,基于 OpenFlow 為網(wǎng)絡(luò)帶來的可編程特性,Nick McKeown 教授團(tuán)隊與加州大學(xué)伯克利分校的 Scott Shenker 教授進(jìn)一步提出了 SDN(Software Defined Network,軟件定義網(wǎng)絡(luò))的概念。
2010 年,Google 開始將數(shù)據(jù)中心與數(shù)據(jù)中心之間的網(wǎng)路連線(G-scale),轉(zhuǎn)換成 SDN 架構(gòu)。
2011 年 5 月,NEC 面向虛擬化數(shù)據(jù)中心和云服務(wù)市場,推出了第一臺可商用的 OpenFlow 交換機(jī)。
2011 年 10 月,Cisco 在數(shù)據(jù)中心官方 Blog 上宣布會在 Nexus 交換機(jī)上提供對 OpenFlow 的支持。
2011 年 10 月,Juniper 開始在 Junos 操作系統(tǒng) SDK 中添加 OpenFlow 代碼。
由 OpenFlow 帶來了兩項革命性的網(wǎng)絡(luò)創(chuàng)新成就:“控制轉(zhuǎn)發(fā)分離架構(gòu)” 和 “可編程性”,也成為了 SDN 思想的核心理論。
10
SDN 蠻荒混戰(zhàn)
Open Networking Foundation 成立
2011 年,在 Nick McKeown 教授等研究學(xué)者的推動下,成立了開放網(wǎng)絡(luò)基金會(ONF,Open Networking Foundation)。
ONF 最初的主要發(fā)起成員包括德國電信、Facebook、Google、Yahoo、Microsoft 等公司。這些公司要么是網(wǎng)絡(luò)服務(wù)提供商,要么是電信運(yùn)營商,唯獨(dú)沒有一家網(wǎng)絡(luò)設(shè)備提供商。
ONF 成立的目的,是為了推動 SDN 和 OpenFlow 協(xié)議的發(fā)展,由非網(wǎng)絡(luò)設(shè)備提供商組成的 “軟件定義網(wǎng)元” 戰(zhàn)線聯(lián)盟。他們希望以此擺脫網(wǎng)絡(luò)設(shè)備提供商長久以來的枷鎖,獲得更加靈活且契合自身需求的、更加低耗高效的網(wǎng)絡(luò)基礎(chǔ)設(shè)施。ONF 的成立標(biāo)志著 OpenFlow 從散兵游勇的野蠻狀態(tài)正式過渡到產(chǎn)業(yè)化發(fā)展的軌道中。
同年,ONF 召開了第一屆開放網(wǎng)絡(luò)峰會(Open Networking Summit),并發(fā)表了 SDN 白皮書《Software Defined Networking:The New Norm forNetworks》,為 OpenFlow 和 SDN 在學(xué)術(shù)界和工業(yè)界都做了很好的介紹和推廣。
Nick McKeown 教授還與 Scott Shenker、Guru Parulkar、Larry Peterson 教授等人創(chuàng)建了 ON.Lab(開放網(wǎng)絡(luò)實驗室)。ONF 和 ON.Lab 兩大組織的成立,主要致力于推動 SDN 架構(gòu)、OpenFlow 標(biāo)準(zhǔn)和規(guī)范的維護(hù)和發(fā)展,成功地將 SDN 推到前臺,并獲得業(yè)界的廣泛關(guān)注,為推動 SDN 被業(yè)界廣泛采用奠定了基礎(chǔ)。
2012 年召開的第二屆 Open Networking Summit 上,Google 宣布已經(jīng)在其全球各地的數(shù)據(jù)中心骨干網(wǎng)絡(luò)中大規(guī)模地使用 OpenFlow。完成 SDN 改造之后,Google B4 網(wǎng)絡(luò)將全面運(yùn)行在 OpenFlow 上,并且通過 10G 網(wǎng)絡(luò)鏈接分布在全球各地的 12 個數(shù)據(jù)中心,使廣域線路的利用率從 30% 提升到 90% 以上,接近 100%。
Google B4 是世界上首個跳出數(shù)據(jù)中心網(wǎng)絡(luò),而在骨干網(wǎng)絡(luò)上取得巨大成功的 SDN 案例,這標(biāo)志著 OpenFlow 技術(shù) SDN 完成了從實驗技術(shù)向網(wǎng)絡(luò)部署的重大跨越,這樣的結(jié)果毫無疑問是令人震撼的,也堅定了行業(yè)對 SDN 的信心,從而開啟了 SDN 網(wǎng)絡(luò)新時代。
同年 8 月,VMware 以 12.6 億美金收購了 Nick Mckeown 教授的 SDN 創(chuàng)業(yè)公司 Nicira,其核心產(chǎn)品是基于 OpenFlow 協(xié)議創(chuàng)建了網(wǎng)絡(luò)虛擬平臺(NVP)。VMware 宣稱會將 Open vSwitch 等核心技術(shù)合并到自己的虛擬網(wǎng)絡(luò)軟件產(chǎn)品組合中。
2013 年,Google 在 SIGCOMM 上發(fā)表了論文《B4: Experience with a Globally-Deployed Software Defined WAN》,詳細(xì)介紹了 Google 的 WAN 加速 SDN 方案。論文中提及,Google 使用的控制器名叫 ONIX。
2013 年,AT&T 發(fā)布了 Domain2.0 計劃,并發(fā)布 Domain2.0 白皮書,通過 SDN/NFV 技術(shù)將網(wǎng)絡(luò)基礎(chǔ)設(shè)施從 “以硬件為中心” 轉(zhuǎn)向 “以軟件為中心”,實現(xiàn)基于云架構(gòu)的開放網(wǎng)絡(luò),率先打造 ECOMP 網(wǎng)絡(luò)編排系統(tǒng),首次將 SDN 技術(shù)用于電信運(yùn)營商大網(wǎng)的編排管理。
OpenDayLight 成立
面對 SDN 和 ONF 提出的網(wǎng)元軟件化,作為傳統(tǒng)的網(wǎng)絡(luò)設(shè)備廠商當(dāng)然不能無動于衷,他們組建了 “軟件定義網(wǎng)管” 捍衛(wèi)同盟,開始向 OpenFlow 的致命弱點發(fā)起了攻擊。
以 Cicso、Juniper、HUAWEI 為代表的設(shè)備廠商,認(rèn)為純粹 OpenFlow 網(wǎng)元有很大的問題。比如,OpenFlow 不支持 IPv6、MAC-in-MAC 運(yùn)營商骨干橋接、Q-in-Q 虛擬局域網(wǎng)棧、QoS 服務(wù)質(zhì)量、流量整形能力、容錯和彈性等功能,這些缺陷限制了 OpenFlow 協(xié)議和 SDN 在電信網(wǎng)絡(luò)中的應(yīng)用。所以他們提出了:轉(zhuǎn)發(fā)層面仍然基于現(xiàn)有協(xié)議體系,但設(shè)備應(yīng)該開放更多的北向 API 供調(diào)用,即:通過網(wǎng)管來實現(xiàn) Controller 的功能。
2013 年 4 月 8 日,在 Linux 基金會的支持下,作為網(wǎng)絡(luò)設(shè)備商中的領(lǐng)導(dǎo)者,Cisco、Juniper、博通、IBM 等網(wǎng)絡(luò)設(shè)備廠商聯(lián)合成立了 OpenDayLight(打開天窗說亮話)開源項目。
OpenDaylight 強(qiáng)調(diào),SDN 不等于 OpenFlow,SDN 需要重新被定義。也就是說,OpenDaylight 強(qiáng)調(diào) SDN Controller 不僅僅局限于 OpenFlow,而是應(yīng)該支持多種南向協(xié)議。同時,OpenDaylight 還強(qiáng)調(diào),應(yīng)該采用分布式的 Controller 來取代集中式的 Controller。這樣可以管理更大的網(wǎng)絡(luò),提供更強(qiáng)勁的性能,還能增強(qiáng)系統(tǒng)的安全性和可靠性。
OpenDaylight 對 SDN 的定義進(jìn)行了更高層次的抽象,模糊了 OpenFlow 的存在:
控制與轉(zhuǎn)發(fā)分離。
邏輯上的集中控制。
控制平面與轉(zhuǎn)發(fā)平面之間提供可編程接口。
但是,由于商業(yè)社會殘酷的競爭,OpenDaylight 在成立之初就留下了矛盾的隱患。軟件防火墻與 VPN 供應(yīng)商 Vyatta 的 CEO Kelly Herrell 就曾公開指出:Cisco 依賴于大量昂貴硬件的銷售,這與 SDN 的未來是 “矛盾的”。
但無論如何,激烈的商業(yè)競爭也同樣意味著產(chǎn)業(yè)的發(fā)展勢頭欣欣向榮,大量的 SDN 項目破土而出,例如:Cisco OpFlex、Juniper Tungsten Fabric、BigSwitch Floodlight 等等。
New Open Networking Foundation 改建
2014 年 12 月 5 日,為了向 ODL 予以還擊,ON.Lab 推出了一款創(chuàng)新性的網(wǎng)絡(luò)操作系統(tǒng) ONOS(Open Network Operating System)。
ON.Lab 還一度嚴(yán)格要求加入的成員不得為任何網(wǎng)絡(luò)設(shè)備廠商工作,以此防范引入設(shè)備商們的利益糾葛。后來由于 ON.Lab 的組織者和職能都與 ONF 重疊。所以,在 2016 年 10 月 19 日,兩個組織宣布正式合并,改建了新的 ONF。
就這樣,圍繞 SDN 控制器和協(xié)議,各大流派及廠商進(jìn)行了十多年的明爭暗斗,至今仍在發(fā)生著。
11
狹義 SDN 已死,廣義 SDN 永生
Overlay 虛擬網(wǎng)絡(luò)
在經(jīng)歷了 ODL 的陣痛之后,網(wǎng)絡(luò)設(shè)備商們也紛紛開始押注走向另外一條更熟悉的道路,即:面向數(shù)據(jù)中心網(wǎng)絡(luò)的、基于標(biāo)準(zhǔn)協(xié)議(VxLAN、GRE、MPLSoGRE/UDP)的 Overlay 虛擬網(wǎng)絡(luò)。
2011 年 8 月,IETF 發(fā)布了 RFC 7348 草案《Virtual eXtensible Local Area Network (VXLAN): A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks》,主要由 VMware 與 Cisco 公司草擬。該技術(shù)利用 L2 over UDP 機(jī)制傳輸原始報文、利用 VxLAN 頭中 24bits 的 VNI 信息將傳統(tǒng) VLAN 標(biāo)記擴(kuò)展至 16MB。
2011 年 9 月,IETF 發(fā)布了 RFC 7637 草案《NVGRE: Network Virtualization Using Generic Routing Encapsulation》,主要由 Microsoft 公司草擬。該技術(shù)利用 L2 Over GRE 機(jī)制傳輸原始報文、利用 GRE Key 字段中的高 24bits 將 VLAN 數(shù)據(jù)擴(kuò)展至 16MB。
2012 年 2 月,IETF 發(fā)布了 RFC 7665 草案《A Stateless Transport Tunneling Protocol for Network Virtualization (STT) 》,主要由 Nicira 草擬。該技術(shù)利用 L2 Over Stateless TCP 機(jī)制在傳輸原始報文、利用 STT 頭中的 64bits Context ID 標(biāo)識二層網(wǎng)絡(luò)分段。
當(dāng)然,Overlay 網(wǎng)絡(luò)誕生的誘因并不完全是因為 SDN 領(lǐng)域激烈的競爭,更多是由云計算/數(shù)據(jù)中心快速發(fā)展所帶來的業(yè)務(wù)驅(qū)動。但 Overlay 網(wǎng)絡(luò)確實很好地繼承了來自 “狹義 SDN“ 的良好思想,在傳統(tǒng)網(wǎng)絡(luò)設(shè)備架構(gòu)不需要進(jìn)行大規(guī)模修改的前提下,疊加了 “中央管控“ 和 “可編程接口“ 機(jī)制,實現(xiàn)了應(yīng)用和網(wǎng)絡(luò)的感知與協(xié)同。目前 Overlay 已經(jīng)大規(guī)模被部署到各個云計算數(shù)據(jù)中心網(wǎng)絡(luò)中。
P4 可編程網(wǎng)絡(luò)
同樣的,Nick McKeown 教授等人也深刻領(lǐng)會到 OpenFlow 從純軟件方向切入的無力感,于是繼續(xù)從更本質(zhì)的硬件層面探索 SDN 的可能性。
2014 年,Nick McKeown 教授聯(lián)合普林斯頓大學(xué)的 Jennifer Rexford 教授等人發(fā)布了成果論文《P4: Programming Protocol-Independent Packet Processors》。
論文中介紹了一種具有協(xié)議無關(guān)性、目標(biāo)無關(guān)性、以及現(xiàn)場可重配置能力的 P4 DSL(專用芯片編程語言)編程語言。不久后,Nick McKeown 教授又聯(lián)合創(chuàng)立了數(shù)據(jù)平面可編程芯片公司 Barefoot Networks,并推出了 Barefoot Tofino DSA(專用芯片架構(gòu))可編程網(wǎng)絡(luò)芯片。
從 Nick McKeown 教授的表述中,可以將 P4 誕生的需求背景歸納為以下幾點:
一方面,可編程 CPU 無法滿足日益增長的網(wǎng)絡(luò)流量處理需求:目前最好的 ASIC 交換芯片可以處理大約 12.8Tbps,而目前最先進(jìn)的 CPU 的網(wǎng)絡(luò)處理能力僅略高于 100Gbps;一個 ASIC 交換機(jī)以 10Tbps 的速度處理 40 種協(xié)議需要 400W 功耗,而一顆 CPU “等效的” 以 10Tbps 速度僅處理 4 個協(xié)議就需要 25KW 功耗;在可預(yù)見的未來,高性能交換機(jī)將完全基于 ASIC 芯片。
但另一方面,ASIC 的開發(fā)者并不是來自最終用戶:ASIC 無法讓最終用戶根據(jù)自己的需要編寫代碼,真正編寫代碼的還是設(shè)備商。但是,設(shè)備商并不運(yùn)營大型網(wǎng)絡(luò),所以他們傾向于簡單地實施現(xiàn)有的標(biāo)準(zhǔn)。他們永遠(yuǎn)不會主動成為創(chuàng)新的人,所有這些都使得引入新想法變得困難,因此一切都趨于停滯。當(dāng)用戶希望在 ASIC 中添加一個新的協(xié)議時,其開發(fā)周期可能是 4 年。
在這樣的背景下,用戶越來越強(qiáng)烈地需求一款新的針對特定領(lǐng)域的處理器芯片。并且與 CPU 上的通用計算一樣,所有特定領(lǐng)域的處理器都有相應(yīng)的高級編程語言和編譯器。而網(wǎng)絡(luò)領(lǐng)域的 DSL 和 DSA 就是 P4 編程語言(軟件)和 Barefoot Tofino 可編程交換芯片(硬件)。
在 OpenFlow 時代,傳統(tǒng)交換機(jī)結(jié)合 OpenFlow 協(xié)議,通過 Control Plane 正確設(shè)置 ASIC 芯片的各種 Flow Table Entries 來控制 Data Plane 的轉(zhuǎn)發(fā)行為。但前提是,不能超出 ASIC 芯片原本沒有支持的功能范圍??梢姡琌penFlow 只是從軟件層面提供了一種 Control Plane 和 Data Plane 交互的協(xié)議,其功能完全受制于硬件的特性。
而 P4 可以說是 OpenFlow 的接棒者,以期解決 OpenFlow 編程能力不足和可拓展性差等問題。Tofino 可編程芯片的本身并不具備任何網(wǎng)絡(luò)協(xié)議功能,而是根據(jù)開發(fā)者編寫的 P4 程序來自定義轉(zhuǎn)發(fā)芯片的功能。P4 將網(wǎng)絡(luò)功能和協(xié)議設(shè)計交給了廣大開發(fā)者而不是傳統(tǒng)的網(wǎng)絡(luò)設(shè)備廠商,從而實現(xiàn):
??最大化地加速網(wǎng)絡(luò)創(chuàng)新;
??縮短協(xié)議部署周期;
??開發(fā)者自頂向下網(wǎng)絡(luò)設(shè)計,擁有完整的創(chuàng)新實驗平臺;
12
未來:基于軟硬件融合的完全可編程網(wǎng)絡(luò)
2019 年 6 月,Intel 收購 Barefoot Networks 公司,并由 Nick McKeown 教授出任 Intel SVP,繼續(xù)領(lǐng)導(dǎo)網(wǎng)絡(luò)研發(fā)團(tuán)隊(現(xiàn)已退居二線)。在同年的 ONF Connect 2019 演講中,Nick McKeown 教授第一次定義了 SDN 發(fā)展的 3 個階段:
2010–2020 年:通過 OpenFlow 將控制面和數(shù)據(jù)面分離,用戶可以通過集中的控制端去控制每個交換機(jī)的行為;
2015–2025 年:通過 P4 編程語言以及可編程 FPGA 或 ASIC 實現(xiàn)數(shù)據(jù)面可編程,這樣,在包處理流水線加入一個新協(xié)議的支持,開發(fā)周期從數(shù)年降低到數(shù)周;
2020–2030 年:展望未來,網(wǎng)卡、交換機(jī)以及協(xié)議棧均可編程,整個網(wǎng)絡(luò)成為一個可編程平臺。
這預(yù)示著,未來互聯(lián)網(wǎng)技術(shù)的發(fā)展還將繼續(xù),這場從 21 世紀(jì)初開始直至今天的 “革命“ 仍未結(jié)束。
正如計算機(jī)體系結(jié)構(gòu)領(lǐng)域的權(quán)威、圖靈獎得主 David A. Patterson 和 John L. Hennessy 在 2018 年聯(lián)合發(fā)布的論文《A New Golden Age for Computer Architecture》(計算機(jī)體系結(jié)構(gòu)的新黃金時代)中所提到的 —— 未來將是計算機(jī)體系結(jié)構(gòu)的黃金十年。
希望這也會是未來互聯(lián)網(wǎng)技術(shù)實現(xiàn)徹底革新的十年。
編輯:黃飛
?
評論
查看更多