在KVM中,可以使用網橋+VLAN實現虛擬交換機,也可以使用Open vSwitch實現。
Open vSwitch即開放的軟件虛擬交換機,能夠達到產品級的質量,也就是說可以部署一些生產環境使用。它不光支持基本的二層交換,還支持標準的管理機接口和協議(如NetFlow,sFlow,SPAN,RSAPN,CLI,LACP,802.1ag),同時也支持OpenFlow,可以很好第與SDN體系融合。
官方網站http://www.openvswitch.org/features/
一、安裝Open vSwitch
1、安裝KVM包
yum install kvm libvirt-bin virtinst
2.加載802.1Q
yum install vconfig modprobe 802.1q
3.使用yum安裝
yum install openvswitch openvswitch-devel openvswitch-test openvswitch-debuginfor
啓動服務
systemctl enable openvswitch systemctl start openvswitch
安裝完成後,檢查版本
ovs-vsctl show
二、使用ovs-vsctl管理OVS
OVS提供了不同的管理工具,其中最常用的是ovs-vsctl
網橋相關的操作
ovs-vsctl add-br br0 #增加網橋 ovs-vsctl add-port br0 eth0 #將網卡加網橋
查看OVS中所有網橋及端口信息
ovs-vsctl show
此時,將eth0加入到br0網橋後,eth0的Ip地址就失效了,也不需要配置eth0地址,按照如下方式配置eth0網卡地址爲0,配置網橋br0的地址爲管理地址
ifconfig eth0 0 ifconfig br0 172.31.208.60 netmask 255.255.255.0 route add default gw 172.31.208.1 dev br0 #增加網橋的默認路由
修改網卡eth0配置文件,不配置ip地址
vim /etc/sysconfig/network-scripts/ifcfg-eth0
新建網卡br0的配置文件,按照以下填寫ip地址
vim /etc/sysconfig/network-scripts/ifcfg-br0
三、OVS的數據庫配置與網絡配置文件的關係
OVS的配置寫在一個ovsdb數據庫中。ovsdb是一個非常輕量級的數據庫,是一個提供增查刪改等功能的臨時配置緩存。
OVS數據庫操作的一般格式爲:
ovs-vsctl list/set/get/add/remove/clear/destroy table record colunm [value]
默認情況下,ovsdb中有以下數據表:bridge,controller,interface,mirror,netflow,open_vswitch,port,qos,ssl,sflow。即table可爲其中的任意一個,rdcord爲數據表中name字段的值,
colum爲數據表中任意一個字段的字段名,即value字段值。
例如,使用ovs-vsctl list bridge命令查詢ovsdb的bridge表中關於橋與網卡的信息
ovs-vsctl list bridge
ovs-vsctl list port
由上面的信息可以看到,bridge數據表中br0的橋包括了br0和eh3端口的uuid,這樣就完整的記錄了橋與端口的關係。同時在顯示port的時候,也看到每個橋
會‘隱含’建立同名的短褲。但是,數據庫中不記錄每個橋的ip地址,即ip地址信息仍由/etc/sysconfig/network-script/ifcfg-br0保存。這就是ovsdb與/etc/sysconfig/network-script/ifcfg-br0文件間的關係。
四、VLAN的設置及VLAN接口IP地址
OVS設置trukn和access
將eth0作爲trunk接口加入到br0中
ovs-vsctl add-br br0 #增加網橋 ovs-vsctl add-port br0 eth0 #將網卡加網橋
在br0中增加vlan10與vlan20端口,分別屬於vlan10與vlan20
ovs-vsctl add-port br0 vlan10 tag=10 #設置trunk ovs-vsctl add-port br0 vlan20 tag=20
配置vlan10端口ip地址
ovs-vsctl set Interface vlan10 type=internal ifconfig vlan10 192.168.10.1 netmask 255.255.255.0 ovs-vsctl set Interface vlan20 type=internal ifconfig vlan20 192.168.20.1 netmask 255.255.255.0
配置完成後,查看相關信息
五、OVS支持OpenFlow的SDN模式
在SDN模式下,交換機通過OpenFlow協議與控制(controller)連接,控制確定轉發表後下發到交換機,交換機根據轉發表在各個端口間轉發數據
OVS安裝完成後,OVS控制器會自動安裝。控制器工作在操作系統的6633端口,若要將OVS與控制器連接,那麼需要OVS中創建一個網橋,此網橋包含
物理網卡,並透過物理網卡與操作系統中的OVS OpenFlow控制連接
舉例如下:
ovs-vsctl add-br br1 ovs-vsctl add-port br1 eth1 ifconfig eth1 0 ifconfig br1 172.31.208.61 netmask 255.255.255.0
設置OVS與控制器連接
ovs-vsctl set-controller br1 tcp: 172.31.208.61
使用ovs-vsctl show檢查狀態
在OVS控制器上操作OVS時,可以使用ovs-ofctl命令來處理
六、OVS的常用操作命令
1、查看當前流表
ovs-ofctl dump-flows br0 ovs-ofctl -O OpenFlow13 dump-flows br0 ovs-appctl bridge/dump-flows br0
2、查看接口id
ovs-appctl dpif/show
3、查看接口統計
ovs-ofctl dump-ports br0