一、實驗目的
1.能夠獨立完成OpenDaylight控制器的安裝配置;
2.能夠使用Postman工具調用OpenDaylight API接口下發流表。
二、實驗環境
1.下載虛擬機軟件Oracle VisualBox或VMware;
2.在虛擬機中安裝Ubuntu 20.04 Desktop amd64,並完整安裝Mininet;
三、實驗要求
(一)基本要求
1.配置JAVA環境,下載並解壓安裝OpenDaylight,版本選擇Carbon 或 Beryllium;
2.下載並解壓安裝Postman;
3.利用Mininet平台搭建下圖所示網絡拓撲,並連接OpenDaylight控制器;

- 打開ODL,啟動完成后打開瀏覽器訪問
http://127.0.0.1:8181/index.html進入ODL圖形化界面 - 在命令行中輸入
sudo mn --topo=single,3 --mac --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13構造上述拓撲 - 執行
pingall在ODL中查看搭建好的拓撲 

 
4.通過Postman工具調用OpenDaylight提供的API下發流表,實現拓撲內主機h1和h3網絡中斷10s。

(二)進階要求
1.查找資料,整理和記錄ODL控制器主要的REST API文檔,包括但不限於ODL提供的文檔鏈接,獲取拓撲的交換機、獲取流表狀態數量、獲取特定交換機端口的狀態、新增修改和刪除流表等。
(1)獲取拓撲的交換機
- URL:
http://127.0.0.1:8181/apidoc/explorer/index.html#!/network-topology(2013-07-12)/GET_network_topology_get_171

 
(2)獲取指定交換機信息
- URL:
http://127.0.0.1:8181/apidoc/explorer/index.html#!/opendaylight-inventory(2013-08-19)/GET_node_get_5

 
(3)獲取特定交換機端口的狀態
- URL:
http://127.0.0.1:8181/apidoc/explorer/index.html#!/opendaylight-port-statistics(2013-12-14)/get_node_connector_statistics_post_0

 
(4)流表的增刪改查
- URL:
http://127.0.0.1:8181/apidoc/explorer/index.html#!/opendaylight-inventory(2013-08-19)/GET_table_get_200 
四、個人總結
- 實驗難度:適中
 - 實驗過程遇到的困難及解決辦法: 
          
- 在安裝JAVA時,需將壓縮包提前放在/usr/local/java目錄下,在虛擬機中發現沒有找到這個文件夾,詢問同學后發現,可以將壓縮包防到虛擬機中任意位置,然后用
sudo mv /usr/local/java命令將文件夾移入指定目錄下。 - 在安裝ODL插件時發現出現錯誤,但輸入命令三次后就可以了。
 - 安裝Ryu時,在下載源碼的時候第一次發現等了很久還是不行,重新輸入了一次后就可以了。
 - 安裝Ryu時,在ryu目錄安裝 OF-Config,NETCONF,BGP,Zebra 等功能需要的擴展包這一步輸入
sudo pip install -r tools/optional-requires命令,等了許久后出現錯誤ERROR : Could not find a version that satisfies the requirenent lxnl!=3.7.0,>=2.3(fron -r tools/optional-requires( line 1)) (from versions: none)以為和之前一樣多試幾次就可以了,沒想到一直不行,查詢資料后發現可能是使用的鏡像源的問題,但還不知道怎么解決,詢問同學后學習到可以采用清華鏡像源,輸入的命令改為sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r tools/optional-requires,在安裝 Ryu,在 ryu 目錄允許命令時,輸入的命令也要改為sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple . - 在使用Postman模擬http請求下發硬超時流規則的時候,直接復制老師給的網址卻出現error
The value '1\n' for key 'id' specified in the URI doesn't match the value '1查詢資料后沒有找到結果,重新做了一次實驗后發現還是有問題,詢問助教后發現原來是復制網址的時候多了一個換行符。 
 - 在安裝JAVA時,需將壓縮包提前放在/usr/local/java目錄下,在虛擬機中發現沒有找到這個文件夾,詢問同學后發現,可以將壓縮包防到虛擬機中任意位置,然后用
 - 個人感想:
 
這次實驗要先安裝新的實驗環境,再完成實驗。安裝實驗環境的過程對我來說比較艱辛,好幾次都出現錯誤,通過不斷地搜索資料並詢問同學,才安裝清楚。這次實驗主要學習了用Postman調用OpenDayLight提供的API下發流表操作,實驗內容不是很難,主要是對ODL和Postman使用不熟悉,操作起來不是很難,通過這次實驗也熟悉了一些,但發現在使用ODL的過程中,多次出現虛擬機卡頓現象。

