任務目的
1、瞭解Open vSwitch流表的基本概念。
2、掌握流表的基本命令,學會添加、刪除、查看流表,爲後續實驗做準備。
任務環境
設備名稱 | 軟件環境 | 硬件環境 |
---|---|---|
交換機 | Ubuntu 14.04命令行版 Open vSwitch 2.3.1 |
CPU:1核 內存:2G 磁盤:20G |
注:系統默認的賬戶爲root/root@openlab,openlab/user@openlab。
任務內容
1、學習Open vSwitch流表的基本概念。
2、學習常用的流表命令,進行流表的添加、刪除、查看等操作。
實驗原理
OpenFlow是用於管理交換機流表的協議,ovs-ofctl是Open vSwitch提供的命令行工具。在沒有配置OpenFlow控制器的模式下,用戶可以使用ovs-ofctl命令通過OpenFlow協議連接Open vSwitch來創建、修改或刪除Open vSwitch中的流表項,並對Open vSwitch的運行狀況進行動態監控。ovs-ofctl關於流表管理的常用命令如下表所示。
對於add-flow、add-flows和mod-flows這3個命令,還需要指定要執行的動作actions=[target],[target]…,一個流規則中可能有多個動作,按照指定的先後順序執行。
常見的流表操作如下表所示。
在OpenFlow白皮書中,Flow被定義爲某個特定的網絡流量。例如,一個TCP連接就是一個Flow,或者從某個IP地址發出來的數據包,都可以被認爲是一個Flow。支持OpenFlow協議的交換機應該包括一個或多個流表,流表中的條目包含:數據包頭的信息、匹配成功後要執行的指令和統計信息。當數據包進入OVS後,會將數據包和流表中的流表項進行匹配,如果發現了匹配的流表項,則執行該流表項中的指令集。相反,如果數據包在流表中沒有發現任何匹配,OVS會通過控制通道把數據包發到OpenFlow控制器中。在OVS中,流表項作爲ovs-ofctl的參數,採用如下的格式:字段=值,如果有多個字段,可以用逗號或空格分開,一些常用的字段列舉如下表所示。
實驗步驟
一、實驗環境檢查
步驟1 登錄交換機,執行以下命令,查看鏡像中原有的網橋,如下圖所示。
ovs-vsctl show
步驟2 執行以下命令,刪除當前網橋,並進行確認,如下圖所示。
ovs-vsctl del-br br-sw
ovs-vsctl show
二、流表管理
步驟1 執行以下命令,添加網橋,並查看虛擬交換機的基本信息,如下圖所示。
# ovs-vsctl add-br br0
# ovs-ofctl show br0
由上圖可知,可以查看到交換機dpid、流表數量、性能參數、動作參數、MAC地址等信息。
步驟2 執行以下命令,查看虛擬交換機上各端口的狀態,如下圖所示。
# ovs-ofctl dump-flows br0
由上圖可知,輸出的結果中包含了各端口上收到的數據包數,字節數,丟包數,錯誤數據包數等。
步驟3 執行以下命令,添加一條流表項,設置流表項生命週期爲1000s,優先級爲17,入端口爲3,動作是output:2。
# ovs-ofctl add-flow br0 idle_timeout=1000,priority=17,in_port=3,actions=output:2
說明:這條流表項的作用是將端口3接收到的數據包從端口2輸出。
步驟4 執行以下命令,查看交換機上所有流表信息,如下圖所示。
# ovs-ofctl dump-flows br0
步驟5 執行以下命令,刪除入端口爲3的的流表項,刪除後,再次查看流表信息,如下圖所示。
# ovs-ofctl del-flows br0 in_port=3
# ovs-ofctl dump-flows br0