SDN相比傳統(tǒng)網(wǎng)絡具有很多優(yōu)點,比如控制與轉(zhuǎn)發(fā)分離,這種思想打破了傳統(tǒng)設備供應商的綁定,提高了新業(yè)務的部署速度,可以從整個網(wǎng)絡層面對流量進行優(yōu)化等等。在SDN網(wǎng)絡中,不管是開發(fā)人員還是用戶,都可以更多的發(fā)揮自己的想象,而不用再受各種RFC的強力約束。
一、傳統(tǒng)網(wǎng)絡發(fā)展及特點從1969年ARPA NET運行算起,傳統(tǒng)網(wǎng)絡已經(jīng)發(fā)展了半個世紀,網(wǎng)絡按照OSI的模型分成7層,通常所見最多的是二層和三層。二層就是二層交換機構(gòu)成的網(wǎng)絡,在這個網(wǎng)絡中交換機學習mac地址和端口的對應關(guān)系,通過匹配二層報文的mac地址決定如何轉(zhuǎn)發(fā)。一般在一個二層網(wǎng)絡中,由于廣播風暴的原因,管理的設備不應超過百臺,否則會導致網(wǎng)路不穩(wěn)定和網(wǎng)絡性能的下降。三層就是由路由設備連接不同網(wǎng)段構(gòu)成的網(wǎng)絡,跨網(wǎng)段的通信都需要路由,而路由器就通過記錄IP地址和端口的對應關(guān)系連通不同的網(wǎng)段。不管是IPv4還是IPv6,我們能夠在世界范圍內(nèi)使用internet,底層都是由二層網(wǎng)絡和三層網(wǎng)絡構(gòu)成的堅實基礎。
傳統(tǒng)網(wǎng)絡從一開始就是一個分布式的網(wǎng)絡,沒有中心的控制節(jié)點,網(wǎng)路中的各個設備之間通過口口相傳的方式學習網(wǎng)絡的可達信息,由每臺設備自己決定要如何轉(zhuǎn)發(fā),這直接導致了沒有整體觀念,不能從整個網(wǎng)絡的角度對流量進行調(diào)控。由于是口口相傳,就必須使用大家都會的語言,這就是網(wǎng)絡協(xié)議。各個設備供應商不能自己隨便開發(fā)協(xié)議,否則不同廠商各執(zhí)己見,網(wǎng)絡還是不通。這樣全球性的組織就誕生了,比如IETF,而RFC就是網(wǎng)絡協(xié)議的法律,相當于國際法,各個設備供應商遵從國際法行事,就基本保證了整個網(wǎng)絡世界的正常運行。設備提供商就相當于不同的國家,與現(xiàn)實中一樣,法律為了適應時代的發(fā)展也在不斷的修訂補充,而各個國家基于自己利益的考慮,不斷搶占對自己更有利的山頭,想盡辦法規(guī)避其他國家主導的法律對自己的約束,傳統(tǒng)網(wǎng)絡就在博弈中不斷前進。這種由通用法律約束的發(fā)展方式,就限制了網(wǎng)絡運營商新業(yè)務的部署速度。網(wǎng)絡運營商負責對用戶提供網(wǎng)絡接入功能,用戶的需求千差萬別,一旦原有基礎網(wǎng)絡無法滿足新需求,就需要上升到協(xié)議制定修改的層面,各個設備提供商開始提出各種方案交由IETF裁決,形成新的法律,再由設備提供商實現(xiàn),重新升級基礎網(wǎng)絡內(nèi)的所有設備以支持新業(yè)務的部署。這個過程想想就覺得漫長,一般都要經(jīng)過至少半年,甚至幾年的時間。
從傳統(tǒng)網(wǎng)絡的部署方式能看出來,傳統(tǒng)網(wǎng)絡新業(yè)務部署是補丁式的,因為網(wǎng)絡中新老設備并存,新業(yè)務必須兼容老業(yè)務,新的協(xié)議基本上都是在原有協(xié)議上進行擴展,這就大大限制的設備提供商的想象力。
傳統(tǒng)網(wǎng)絡的協(xié)議為了適應各種不同的需求場景,發(fā)展也越來越復雜,想必有傳統(tǒng)網(wǎng)絡開發(fā)和維護經(jīng)驗的同學都有深刻體會吧。單說部署一個傳統(tǒng)的網(wǎng)絡,就涉及到ARP、STP、OSPF、ISIS、RIP、BGP、組播等多種協(xié)議,如果涉及VPN,又有L2VPN、L3VPN,其中又會有VPLS、PWE3、VLL、MPLS、LDP、BGP VPN擴展,而部署方式又有Martini、Kompella、Option A、Option B、Option C、跨域C&C.....,是不是看著就暈?并且由于法律的不完善,RFC中常常存在一些沒有明確的地方,這導致了各提供商的實現(xiàn)中存在些許差異,而如果你將要部署的網(wǎng)路中存在多個提供商的設備,那么這些差異很可能在將來某個時候爆發(fā)網(wǎng)絡問題。傳統(tǒng)網(wǎng)絡的運維工程師都是經(jīng)過長年累月的學習和經(jīng)驗積累成長起來的。
雖然數(shù)量眾多并且復雜,但是傳統(tǒng)網(wǎng)絡協(xié)議也有他的優(yōu)點,協(xié)議本身做到了和設備提供商無關(guān),如果理解了一個協(xié)議,那么運維工程師之間交流不會有問題,運用此協(xié)議構(gòu)建的網(wǎng)絡都可以維護。各設備提供商的最大的差異主要集中在操作界面上。
二、SDN網(wǎng)絡的發(fā)展及特點當前的SDN網(wǎng)絡一般都是如下形式:有一個控制器(或集群),他負責收集整個網(wǎng)絡的拓撲、流量等信息,計算流量轉(zhuǎn)發(fā)路徑,通過openflow協(xié)議將轉(zhuǎn)發(fā)表項下發(fā)給交換機,交換機按照表項執(zhí)行轉(zhuǎn)發(fā)動作。和控制器對應,執(zhí)行轉(zhuǎn)發(fā)動作的交換機一般稱為轉(zhuǎn)發(fā)器??刂泼鎻膫鹘y(tǒng)網(wǎng)絡的單個設備上剝離,集中到了控制器上,轉(zhuǎn)發(fā)面由轉(zhuǎn)發(fā)器構(gòu)成。
網(wǎng)絡部署有兩種形式:一種是underlay的網(wǎng)絡,這種網(wǎng)絡中,所有的轉(zhuǎn)發(fā)行為都由控制器決定,控制器通過OpenFlow協(xié)議或者定制的BGP協(xié)議將轉(zhuǎn)發(fā)表項下發(fā)給轉(zhuǎn)發(fā)器,轉(zhuǎn)發(fā)器僅僅執(zhí)行動作,沒有單獨的控制面。另一種是overlay的網(wǎng)絡,這種網(wǎng)絡的轉(zhuǎn)發(fā)器一般都是傳統(tǒng)設備,不支持OpenFlow,或者私有定制協(xié)議不能部署。這時就要用到隧道技術(shù),基礎網(wǎng)絡還是傳統(tǒng)網(wǎng)絡形式,通過路由協(xié)議打通各個節(jié)點,但是在服務器接入點,采用隧道技術(shù)將數(shù)據(jù)報文進行封裝或者解封裝。對傳統(tǒng)網(wǎng)絡來說見到的就是普通的數(shù)據(jù)報文,轉(zhuǎn)發(fā)即可。隧道技術(shù)實際上就是報文的馬甲,迷惑網(wǎng)絡設備,讓設備以為是自己人,但是實際上報文的心是虛擬化的心?,F(xiàn)在一般采用VxLan、GRE、NVGRE等隧道技術(shù)。而這些也是新增的協(xié)議,也需要升級現(xiàn)有網(wǎng)絡設備才能支持。穿馬甲雖然能夠在不進行大的改造的情況下增加新的功能,但無疑會降低網(wǎng)路性能,underlay方式一定是SDN網(wǎng)絡的終極形式。
SDN網(wǎng)絡的控制面,不再是口口相傳,而是集中智能,從更高的層次看整個網(wǎng)絡,通過軟件來控制網(wǎng)絡行為。這里的軟件已經(jīng)不再由設備供應商綁定設備提供,而是用戶可以自己實現(xiàn)。SDN網(wǎng)絡唯一標準化的是控制器與轉(zhuǎn)發(fā)器的通信接口,就是OpenFlow,不是傳統(tǒng)意義上的網(wǎng)絡控制協(xié)議,只是一個接口,控制器和轉(zhuǎn)發(fā)器按接口實現(xiàn)即可,至于控制器要如何控制,轉(zhuǎn)發(fā)器要如何轉(zhuǎn)發(fā),都是一片空白。SDN打開了一扇通往奇境的大門。
ovs已經(jīng)成為轉(zhuǎn)發(fā)器實現(xiàn)事實上的標準,而控制器則是百家爭鳴,有ODL、ONOS、AC、Ryu等。各種控制器的實現(xiàn)也有不小的差異,控制原理也都不同,這就對運維人員帶來了挑戰(zhàn)。在傳統(tǒng)網(wǎng)絡時代懂得了協(xié)議就懂得了網(wǎng)絡,而在SDN時代,控制器才是網(wǎng)絡的核心,只有弄懂控制器實現(xiàn)原理,才能懂得網(wǎng)絡。
在現(xiàn)階段,OpenFlow作為接口,網(wǎng)絡上傳遞的報文還是按照傳統(tǒng)網(wǎng)絡時代定義的格式進行封裝,而控制器現(xiàn)階段能做的也僅是對報文封裝的字段進行修改。而下一階段,當P4或者華為的POF作為接口時,網(wǎng)絡將徹底變革,用戶不僅可以控制轉(zhuǎn)發(fā)行為,還能按需定義報文封裝格式,而不再局限于mac、ip等等。雖然更靈活,但是各個局域網(wǎng)絡的實現(xiàn)可能都不相同,對網(wǎng)絡運維人員來說可能會更困難,換一個網(wǎng)絡可能就需要學習一套新的規(guī)則。但是這也真正體現(xiàn)軟件定義的魅力,控制器的控制形式勢必會更加多種多樣,網(wǎng)絡也會進入一個新的輪回。
三、從ping的流程看傳統(tǒng)網(wǎng)絡與SDN網(wǎng)絡:1.傳統(tǒng)網(wǎng)絡
如上圖拓撲,網(wǎng)絡中間有三臺設備構(gòu)成基礎網(wǎng)絡,兩個客戶端屬于不同的網(wǎng)絡,兩個客戶端要互訪
基礎網(wǎng)絡構(gòu)建步驟如下:
1)由于客戶端處于不同網(wǎng)段,因此需要路由設備,可以用CE2作為路由設備,或者CE1、2、3均作為路由設備,這里將三臺均作為路由設備,CE1、2、3之間三層通信
2)CE1作為CLIENT1的網(wǎng)關(guān)設備;CE3作為CLIENT2的網(wǎng)關(guān)設備,網(wǎng)關(guān)代答ARP
3)CE1、CE2、CE3之間通過靜態(tài)路由或者路由協(xié)議學習 192.168.10 和192.168.20 網(wǎng)段的路由
路由通路的建立主要關(guān)注兩個字段:路由前綴和下一跳。在傳統(tǒng)路由器上,通過命令行可以很直觀的看到各種信息之間的關(guān)聯(lián)