雲端衛士 | 玩得就是專業 基於ONOS的SDN-IP實驗

《實戰錄》導語

雲端衛士《實戰錄》欄目定期會向粉絲朋友們分享一些在開發運維中的經驗和技巧,希望對於關注我們的朋友有所裨益。本期分享人爲雲端衛士SDN工程師李松青,將帶來基於ONOS的SDN-IP實驗的分享。


學習ONOS一段時間了,着力點是SDN-IP模塊兒;SDN-IP實現了BGP協議,使得ONOS控制的孤島網絡可作爲transit AS域插入大網,對於逐步替換大網設備,或步進式融入大網環境不可或缺。
本文檔不再贅述SDN-IP模塊兒的架構及運行原理(可參考附錄文獻),而從搭建SDN-IP實驗環境角度整合Quagga、Mininet、ONOS等開源軟件,爲新手提供比官網wiki更詳盡的環境搭建流程。

Qugga簡介


設備互聯已經是當今Internet的主題,安裝了quagga後,設備就可以充當路由器的角色。利用quagga,可以和其他路由器利用已知的路由協議交互路由信息;quagga利用這些信息更新設備轉發表,以達到正確轉發數據包的目的。當然,可以通過quagga提供的終端接口(如CLI)手工配置或查看路由信息,及表項信息。


目前quagga支持知名的動態路由協議,如RIP/OSPF/IS-IS/BGP等,通過Zebra也支持靜態路由;另外,即將實現的LDP協議,可以支持MPLS。


Quagga由一組路由協議daemon組成,其中bgpd、ripd、ospfd等用於實現具體的路由協議;zebra則用於管理內核路由表,及在不同的協議間分發路由信息等。Quagga系統的架構如下圖所示:



圖1 Quagga系統架構圖


準備環境


下載源碼包:http://www.nongnu.org/quagga/


編譯、安裝

 yum install readline-devel       centos依賴(optional)
 或apt-get install libreadline-dev      ubuntu依賴(optional)
./configure --prefix=/root/Applications/quagga
make
make install


添加quagga可執行程序到PATH路徑


 vim /root/.bashrc
  export PATH=/root/Applications/quagga/sbin:/root/Applications/quagga/bin:$PATH
 source /root/.bashrc


Mininet簡介


目前,SDN/OpenFlow發展,但是在真實網絡中又很難進行相關的網絡實驗,Mininet應運而生,擔當起SDN網絡拓撲模擬器的職責。Mininet是一個強大的網絡仿真平臺,通過它可以很方便的模擬真實環境中的網絡及設備,如交換機、主機、控制器等;另外,它也支持外置的控制器。


準備環境


  • 下載源碼:git clone git://github.com/mininet/mininet

  • 建立編譯目錄:mkdir mini-build

  • 編譯,安裝所有功能(-a):./mininet/util/install.sh -s mini-build –a

  • 測試安裝是否成功:sudo mn --test pingall


備註:需使用最新版本,否則會出現下載源碼、地址無法解析等錯誤


實驗拓撲環境



圖2 ONOS wiki的SDN-IP教程網絡拓撲


圖3 本文檔實驗環境的網絡拓撲


圖3所示的實驗拓撲,主體繼承自wiki的SDN-IP教程的實驗拓撲(圖2);ONOS控制器控制S1-S6等6臺OF交換機組成的SDN網絡;S1/S2/S5/S6分別外接其他的4個AS域,邊界分別對應傳統路由器R1-R4;每個AS域由一臺主機模擬對應的內部網絡;幾個AS域通過和BGP speaker節點建立eBGP對等鄰居,達到AS域間路由分發的目的。


原wiki實驗中,控制器雖然也爲外置ONOS控制器,不過和Mininet仿真的拓撲部署在一臺物理機器上(實際爲虛擬機);而本文檔的拓撲,ONOS部署在單獨的物理設備上,這兩臺物理設備通過兩臺路由器鏈路可達。


整個實驗環境,除ONOS外,其他網絡設備由Mininet仿真;傳統路由器,通過在仿真Host上運行quagga套件bgpd、zebra仿真。


ONOS設備

  • Centos

  • 192.168.6.246

  • 10G Mem  8CPUS  50G硬盤


宿主機

  •  VMWare,Ubuntu

  • 192.168.24.250

  • 3G Mem  4CPUS  50G硬盤


Mininet節點:h1-h4,r1-r4,s1-s6,bgp speaker,tor


 運行在宿主機

 構建拓撲腳本及配置



SDN-IP配置


將配置文件network-cfg.json(此文件位於目錄$ONOS_ROOT/tools/tutorials/sdnip/configs/)放置於$ONOS_ROOT/../config目錄,用於配置BGP speaker及各個eBGP對等體的連接關係。



實驗步驟


實驗步驟

啓動ONOS


啓動網絡拓撲


查看鏈路狀態


查看路由條目


由上圖可知,BGP speaker和其他的AS邊界路由器R1-R4建立了對等鄰居,已經獲取到了他們的網絡路徑。


由上圖可知,R2-R4所在的AS域網絡通過R1可達了;同理可查看其它路由器的路由表,得知所有的AS域互通互達。


查看ONOS拓撲


查看ONOS端BGP信息


由以上圖可知,ONOS和BGP speaker之間的iBGP對等關係已經建立成功;並且通過iBGP鄰居已經獲取到了相鄰AS域的路徑信息。


驗證各AS域互聯互通


通過上圖,可知H1-H4之間可以互相ping通,即各個AS域之間通過SDN-IP控制的網絡可以互聯互通,實驗成功!

總結


本文檔從搭建實驗環境的角度,重現了ONOS wiki上SDN-IP模塊兒教程的實驗,並附上了較爲詳細的拓撲仿真腳本、配置文件,以便幫助新手迅速搭建BGP測試環境。


環境搭建成功後,可以通過抓包等方式分析BGP協議交互流程,也可以分析OF協議交互流程……這不屬於本文檔的重點,有待其他同學補充!


參考文獻

https://wiki.onosproject.org/display/ONOS/SDN-IP+User+Guide
https://wiki.onosproject.org/display/ONOS/SDN-IP+Architecture
http://www.sdnlab.com/6903.html
http://www.sdnlab.com/6946.html
https://github.com/sdnds-tw/SDN-IP-Example-VM

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