4.3.3 flowspaces深入
(1)命令格式:
fvctl add-flowspace [options] <flowspace-name> <dpid> <priority> <match> <slice-perm>
圖 28
在上文中添加的flowspace是這樣的:
圖 29
上圖中的8888是在config.json文件中自定義的flowvisor控制端口,add-flowspace後面跟上的5個參數的分別是:
l fs1:新創建的flowspace名,這個flowspace名是可以重名的。
l all:指定數據通路,這裏的all指的是虛擬網絡中所有的數據通路。以下圖的的topo結構爲例:
圖 30
如果想要h1能夠ping通h2,只需要指定S3爲數據通路即可。而想要平通h1和h8則需要指定S3、S2、S1、S5、S7爲該flowspace規則的數據通路。
l 100:指定該規則的優先權,值範圍爲:0-65535。
l any:指定該規則的匹配項,any代表匹配所有字段。(可以指定一個或多個字段)
l S1=7:指定slice對該flowspace規則擁有的權限。DELEGATE=1, READ=2, WRITE=4。值爲這3個值的和,取值範圍爲{1,2,3,4,5,6,7}。
(2)聯機實驗
這裏採用的是上文提到的劃分兩個切片,一個連接到odl控制器,一個連接到floodlight控制器,具體操作過程詳見4.3.3節中的(1)、(2)段。下面創建flowspace規則,只允許h1與h2、h7與h8互相ping通。
l 爲連接到odl的s1創建sp1規則(分開創見兩個,分別指定h1->h2和h2->h1),因爲h1和h2連在同一個交換機上(拓撲圖見圖 30),所以數據通路只需要指定S3即可:
圖 31
l 爲連接到floodlight的s2創建創建sp2規則,同樣的,h7和h8連接在同一交換機上,數據通路也只需要指定S7即可:
圖 32
l 查看已添加的flowspace規則信息:
圖 33
l 重啓切片
這一步驟可以省略,但由於flowvisor並不穩定,有時新建的規則生效需要重啓該規則對應的切片:
圖 34
l pingall
在mininet中輸入pingall命令查看連通情況:
圖 35
如圖 35所示,虛擬網絡中只有h1和h2、h7和h8可以互相ping通,其他虛擬主機則不能。
(3)補充實驗
這裏補充一個h1與h8之間互相ping通的實驗(拓撲圖建圖 30)。由於fvctl命令只支持一次指定一個數據通路,所以想要將S3、S2、S1、S5、S7都指定爲數據通路,需要多次添加規則:
圖 36
圖 37
從圖 37中可以看出,除了之前fs1和fs2中指定的h1和h2、h7和h8之間能互相ping同之外,sp3指定的h1和h8之間也能互相ping通了。
————————END————————————