1. 程式人生 > 實用技巧 >nginxWebUI v2.1.4

nginxWebUI v2.1.4

實驗 5:OpenFlow 協議分析和 OpenDaylight 安裝

一、實驗目的

回顧 JDK 安裝配置,瞭解 OpenDaylight 控制的安裝,以及 Mininet 如何連線; 通過抓包獲取 OpenFlow 協議,驗證 OpenFlow 協議和版本,瞭解協議內容。

二、實驗任務
Mininet 生成拓撲連線 OpenDaylight,在 Mininet 上通過 ping 抓包驗證 OpenFlow 1.3 協議

三、實驗步驟

  1. 實驗環境
    安裝了 Ubuntu 16.04.6 的虛擬機器

  2. 實驗過程
    (1)安裝 OpenDaylight 控制器(提供兩個版本)
    由於 OpenDaylight 是基於 Java 執行的,因此需要先安裝 jdk 8 環境
    $ sudo mkdir /usr/local/java


    $ sudo tar -zxvf jdk-8u251-linux-i586.tar.gz //需將 jdk 壓縮包提前放在相應目錄下
    $ gedit ~/.bashrc
    在檔案末尾追加內容如下:
    export JAVA_HOME=/usr/local/java/jdk1.8.0_261
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=${JAVA_HOME}/bin:$PATH
    儲存退出,然後執行命令:
    $ source ~/.bashrc
    $ java -version //驗證安裝版本
    解壓安裝:
    $ tar -zxvf distribution-karaf-0.6.4-Carbon.tar.gz //Carbon 版本

    執行karaf:
    $ ./distribution-karaf-0.6.4-Carbon/bin/karaf //Carbon 版本
    第一次啟動需安裝外掛
    $ feature:install odl-restconf odl-l2switch-switch-ui odl-openflowplugin-flow-services-ui odl-mdsal-apidocs odl-dluxapps-applications //Carbon 版本
    至此 ODL 控制器啟動完畢。

(2)啟動 Mininet 虛擬機器,生成一個最簡拓撲並連線 OpenDaylight
執行命令生成拓撲並連線控制器:
$ sudo mn --switch ovs,protocols=OpenFlow13 --controller=remote,ip=127.0.0.1,port=6633

(3)Wireshark 抓包分析 OpenFlow 1.3
如果 wireshark 未安裝,那麼執行下面的命令安裝。
$ sudo apt-get install wireshark

sudo wireshark開啟 wireshark,選擇 any,抓取所有資料包
為了能夠抓到控制器和交換機最初的互動,應在 Mininet 拓撲建立前開啟抓包。
檢視抓包結果,利用 openflow_v4 過濾出 OpenFlow 1.3 協議,可以看到 OpenFlow協議下,交換機和控制器的互動過程。

HELLO——控制器與交換機互相傳送 Hello 訊息,告訴對方自己能夠支援的 OpenFlow 版本,向下相容雙方都能夠相容的版本,建立後續的通訊。
FEATURES_REQUEST——控制器向交換機要求特徵資訊。  FEATURES_REPLY——交換機會送特徵資訊。
SET CONFIG——控制器向交換機下發兩個配置,一個是 flags,指示如何處理IP 分片;另一個是 Miss send length,指示交換機遇到無法處理的資料包時,
向控制器傳送訊息的最大位元組數。
PACKET IN——交換機查詢流表,發現沒有匹配條目時,或有匹配條目但是對 應的 action 是 OUTPUT=CONTROLLER 時,向控制器傳送訊息 PACKET IN 訊息,前者資料包會被放到交換機快取中等待處理,後者不會。
PACKET OUT 和 FLOW MOD——控制器接收到交換機 PACKET IN 訊息後的響應方式有兩種,FLOW MOD 下發流表,告知交換機匹配項(MATCH)和對應的動作(ACTION),去處理這一類資料包;PACKET OUT 不下發流表,直接告知交換機如何處理這一個資料包。






用 OVS 命令檢視交換機中確實存在相應版本的流表,cookie、priority 等資訊可以上面的抓包能夠對應上。