OpenvSwitch的操作命令有若干個,其中比較重要的有
ovs-ovsctl 獲取或者更改ovs-vswitchd的配置信息,此工具操作的時候會更新ovsdb-server中的數據庫
ovs-ofctl 操作交換機里的流表
ovsdb-tool 對ovsdb數據庫操作,不經過ovsdb-server模塊
前面已經介紹過了ovs-ovsctl命令是對交換機上網橋和端口等信息進行配置的命令。這里首先需要說明一下ovs的概念中 ‘橋’ 這個詞的意思就是指交換機。我們說創建一個網橋,其實說的意思就是創建一個交換機。而端口則是指交換機的網口。
查看網橋
使用如下命令能夠查看所有的網橋的信息。記住這是我們學會的第一個命令,也是使用頻率最高的命令。
[root@localhost openvswitch-2.8.1]# ovs-vsctl show b9da3f20-b407-40fa-8944-df970f4ca3ad 該主機的id ovs_version: "2.8.1" 版本信息
因為這是一個剛裝好ovs的機器,所以還沒有任何網橋信息,但是還是有一些信息的。比如這一串數字指的是該主機的id,只在連接了SDN控制器之后才有作用;還有一個交換機的版本信息,這里的版本是2.5.5。
添加網橋
可以很方便的創建網橋,也就是交換機。使用如下命令創建一個名字叫着 br-test的網橋。
[root@localhost ~]# ovs-vsctl add-br br-test
當創建好網橋之后用第一個學會的命令來看看創建好的網橋
b9da3f20-b407-40fa-8944-df970f4ca3ad Bridge br-test Port br-test Interface br-test type: internal ovs_version: "2.8.1"
可以看到已經有創建好的網橋br-test了,Bridge br-test 指的是網橋br-test,那么在這個交換機中只有一個網口,是的,這個網口叫着port,即port br-test。為什么我們只創建了網橋並沒有創建端口這里卻有一個呢?其實這個端口就是常見的環回口。在我們的電腦上都有一個叫着localhost的端口,交換機中也會有一個和交換機同名的網口,都是指環回口。
創建port
在上面創建好一個網橋之后默認有一個同名的port,使用下面的命令可以繼續添加port。格式是:ovs-vsctl add-port 網橋名 端口名 。這里端口需要是存在機器上的網卡名。
我的機器上的網卡的信息如下
[root@localhost ~]# ifconfig docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255 ether 02:42:58:d0:b7:bc txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.220 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::448f:7a09:b3fa:48e0 prefixlen 64 scopeid 0x20<link> inet6 2409:8a0c:1c:3050:7c6:7714:febe:63f6 prefixlen 64 scopeid 0x0<global> ether 00:0c:29:c5:19:99 txqueuelen 1000 (Ethernet) RX packets 216953 bytes 302976430 (288.9 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 41861 bytes 4911746 (4.6 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Local Loopback) RX packets 108 bytes 9847 (9.6 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 108 bytes 9847 (9.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
因為我的機器上有網卡 ens33 所有可以使用下面的命令向網橋br-test上添加port ens33。如果想在自己的機器上做這個實驗要把網卡替換成你機器的真實網卡。
[root@localhost ~]# ovs-vsctl add-port br-test ens33
[root@localhost ~]# ovs-vsctl add-port br-test ens33
刪除port
能添加一個port,就能刪除這個port。這是ovs的最基本的操作。
注意:如果刪除port時不指明名字,那么將會刪除全部的port,小心這個操作。
刪除網橋
使用如下命令刪除一個網橋。
[root@localhost ~]# ovs-vsctl del-br br-test
值得注意的是:刪除網橋時如果網橋上有很多端口,那么端口也會被一並刪除。這個很好理解
再次查看網橋信息
[root@localhost ~]# ovs-vsctl show b9da3f20-b407-40fa-8944-df970f4ca3ad ovs_version: "2.8.1"
網橋連接控制器
這五個命令是ovs最基本的操作命令,下面還有一個連接控制器的命令是為下一篇打好基礎。
ovs交換作為SDN交換機連接到SDN控制器上才能發揮最大的效能。連接控制器的命令如下
[root@localhost ~]# ovs-vsctl add-br br-test [root@localhost ~]# ovs-vsctl set-controller br-test tcp:172.171.82.31:6633 [root@localhost ~]# ovs-vsctl show b9da3f20-b407-40fa-8944-df970f4ca3ad Bridge br-test Controller "tcp:172.171.82.31:6633" Port br-test Interface br-test type: internal ovs_version: "2.8.1"
查看此時網橋的配置信息,在Bridge下出現了一個Controller ,控制器的IP是172.171.82.31,端口是6633,下面還有一個連接成功的狀態:is_connected=True。