一個(gè)大學(xué)生的SDN修煉記
作為一個(gè)在校的本科生,我們學(xué)習(xí)的SDN著眼點(diǎn)與已工作的人有所不同。說說我的學(xué)習(xí)路線吧:去年上半年,我大二,老師科研項(xiàng)目其中一個(gè)分支就是有關(guān)OpenFlow/SDN的,有幸參與其中,我也由此開始踏上網(wǎng)絡(luò)學(xué)習(xí)之路。
剛開始的時(shí)候我完全不懂網(wǎng)絡(luò)相關(guān)知識(shí),所以花了兩個(gè)月惡補(bǔ)網(wǎng)絡(luò)知識(shí)順便考了CCNA,所以說學(xué)習(xí)SDN的重要前提是你得熟悉傳統(tǒng)網(wǎng)絡(luò)相關(guān)知識(shí)。在此推薦謝希仁的《計(jì)算機(jī)網(wǎng)絡(luò)》和Todd Lammle的《CCNA學(xué)習(xí)指南》。后者雖然是一本考試認(rèn)證教材,但其介紹的網(wǎng)絡(luò)基礎(chǔ)知識(shí)由淺入深通俗易懂。
在對(duì)網(wǎng)絡(luò)基礎(chǔ)知識(shí)有一定了解后,了解了OpenFlow的前世今生和發(fā)展路線。認(rèn)真看了OpenFlow協(xié)議1.0版,侯杰老師在其著作《深入淺出MFC》中說“莫在浮沙筑高臺(tái)”,所以即使現(xiàn)在主流的版本已經(jīng)是OF1.3了,也建議由淺入深,認(rèn)真讀一下各版本的OF標(biāo)準(zhǔn),了解其演進(jìn)路線,及每一次演進(jìn)背后的驅(qū)動(dòng)力。在此推薦 @李呈大神的博客,其中有一篇博文用圖表形式表示了OpenFlow各消息的報(bào)文格式,特別贊。
理論知識(shí)再扎實(shí),也還是要落實(shí)到實(shí)踐上來驗(yàn)證。下一步就該搭個(gè)實(shí)驗(yàn)環(huán)境玩了。一個(gè)SDN環(huán)境無非由控制器、OpenFlow交換機(jī)和HOST組成,選一個(gè)自己看對(duì)眼的控制器,一個(gè)虛擬機(jī),一個(gè)Mininet或幾個(gè)OpenvSwitch,只需一臺(tái)電腦,一個(gè)實(shí)際的SDN環(huán)境就已經(jīng)在運(yùn)行了。前面學(xué)了這么多理論,看到一個(gè)環(huán)境真切地在你眼前運(yùn)行,使用著OF協(xié)議來通信,你甚至可以抓到每一次交互的報(bào)文,和OF標(biāo)準(zhǔn)里說的一模一樣,那感覺,amazing!SDN的核心目標(biāo)是什么?是流表匹配,是為每一條流找到一條似乎就是為它量身定做的轉(zhuǎn)發(fā)路徑。如何去實(shí)現(xiàn)這一目標(biāo)?靠控制器上層應(yīng)用。每一個(gè)控制器都有北向接口,現(xiàn)在一般的標(biāo)準(zhǔn)是以REST API的方式來提供,這樣的好處是你可以用任何一種能解析JSON的語言來編寫應(yīng)用。通過你的應(yīng)用,每一個(gè)數(shù)據(jù)包都按照你的意志在網(wǎng)絡(luò)里被傳送,amazing++!
網(wǎng)絡(luò)環(huán)境多種多樣,控制器不可能能處理所有的需求,這就要求能深入控制器內(nèi)部,安裝你自己編寫的模塊,處理南向數(shù)據(jù),或許還需要向北向提供接口。你可能會(huì)擔(dān)心控制器的代碼規(guī)模是如此龐大,不知道怎樣甚至不敢動(dòng)其內(nèi)部的代碼。好在面向?qū)ο蠛湍K化程序設(shè)計(jì)的思想已經(jīng)深入人心并被實(shí)實(shí)在在的踐行在控制器的編寫過程中,控制器的每一個(gè)構(gòu)件,像一塊塊樂高積木,彼此關(guān)聯(lián)累積,再加一塊新的積木,相信對(duì)你來說也是游刃有余的。完成了這一步,amazing²!
終于,現(xiàn)有的控制器已經(jīng)不能滿足你了,天哪,地球已經(jīng)阻止不了你了啊少年。于是你開啟超級(jí)變換形態(tài),去吧皮卡丘,自己編寫控制器吧!這應(yīng)該是學(xué)習(xí)SDN的***境界了,所謂大音希聲,大象無形,眼前有碼,心中無碼。
總之,SDN發(fā)展到現(xiàn)在,各種組織各種項(xiàng)目百家爭(zhēng)鳴。找你的key words,google之,先了解,再模仿,然后理解,***創(chuàng)造。能在正年輕的時(shí)候參與到SDN這一革命浪潮里來,多么幸運(yùn)。