裝載自http://sdnhub.cn/index.php/openv-switch-full-guide/
1 什么是OpenvSwitch
OpenvSwitch,簡(jiǎn)稱(chēng)OVS是一個(gè)虛擬交換軟件,主要用于虛擬機(jī)VM環(huán)境,作為一個(gè)虛擬交換機(jī),支持Xen/XenServer, KVM, and VirtualBox多種虛擬化技術(shù)。OpenvSwitch還支持多個(gè)物理機(jī)的分布式環(huán)境。
在這種某一臺(tái)物理機(jī)器的虛擬化環(huán)境中,一個(gè)虛擬交換機(jī)(vswitch)主要有如下兩個(gè)作用:
傳遞虛擬機(jī)VM之間的流量
以及實(shí)現(xiàn)VM和外界網(wǎng)絡(luò)的通信。
如下圖所示:

整個(gè)OVS代碼用C寫(xiě)的。目前有以下功能:
Standard 802.1Q VLAN model with trunk and access ports
NIC bonding with or without LACP on upstream switch
NetFlow, sFlow(R), and mirroring for increased visibility
QoS (Quality of Service) configuration, plus policing
GRE, GRE over IPSEC, VXLAN, and LISP tunneling
802.1ag connectivity fault management
OpenFlow 1.0 plus numerous extensions
Transactional configuration database with C and Python bindings
High-performance forwarding using a Linux kernel module
2 OpenvSwitch的組成
OVS的核心組件包括 ovsdb-server,ovs-vswitchd,ovs kernel module。如下圖所示:

運(yùn)行原理:
內(nèi)核模塊實(shí)現(xiàn)了多個(gè)“數(shù)據(jù)路徑(DataPath)”(類(lèi)似于網(wǎng)橋),每個(gè)都可以有多個(gè)“vports”(類(lèi)似于橋內(nèi)的端口)。每個(gè)數(shù)據(jù)路徑也通過(guò)關(guān)聯(lián)流表(flow table)來(lái)設(shè)置操作,而這些流表中的流都是用戶空間在報(bào)文頭和元數(shù)據(jù)的基礎(chǔ)上映射的關(guān)鍵信息,一般的操作都是將數(shù)據(jù)包轉(zhuǎn)發(fā)到另一個(gè)vport。當(dāng)一個(gè)數(shù)據(jù)包到達(dá)一個(gè)vport,內(nèi)核模塊所做的處理是提取其流的關(guān)鍵信息并在流表中查找這些關(guān)鍵信息。當(dāng)有一個(gè)匹配的流時(shí)它執(zhí)行對(duì)應(yīng)的操作。如果沒(méi)有匹配,它會(huì)將數(shù)據(jù)包送到用戶空間的處理隊(duì)列中(作為處理的一部分,用戶空間可能會(huì)設(shè)置一個(gè)流用于以后遇到相同類(lèi)型的數(shù)據(jù)包可以在內(nèi)核中執(zhí)行操作)。細(xì)節(jié)如下圖所示:

除了核心組件,還包括一些管理工具,詳細(xì)介紹如下:
ovs-vswitchd:OVS守護(hù)進(jìn)程是OVS的核心部件,實(shí)現(xiàn)交換功能,和Linux內(nèi)核兼容模塊一起,實(shí)現(xiàn)基于流的交換(flow-based switching)。它和上層 controller 通信遵從 OPENFLOW 協(xié)議,它與 ovsdb-server 通信使用 OVSDB 協(xié)議,它和內(nèi)核模塊通過(guò)netlink通信,它支持多個(gè)獨(dú)立的 datapath(網(wǎng)橋),它通過(guò)更改flow table 實(shí)現(xiàn)了綁定和VLAN等功能。
ovsdb-server:OVS輕量級(jí)的數(shù)據(jù)庫(kù)服務(wù)器,用于整個(gè)OVS的配置信息,包括接口,交換內(nèi)容,VLAN 等等。ovs-vswitchd 根據(jù)數(shù)據(jù)庫(kù)中的配置信息工作。它于 manager 和 ovs-vswitchd 交換信息使用了OVSDB(JSON-RPC)的方式。
ovs-dpctl:一個(gè)工具,用來(lái)配置交換機(jī)內(nèi)核模塊,可以控制轉(zhuǎn)發(fā)規(guī)則。
ovs-vsctl:主要是獲取或者更改ovs-vswitchd的配置信息,此工具操作的時(shí)候會(huì)更新ovsdb-server中的數(shù)據(jù)庫(kù)。
ovs-appctl:主要是向OVS守護(hù)進(jìn)程發(fā)送命令的,一般用不上。 a utility that sends commands to running Open vSwitch daemons (ovs-vswitchd)
ovsdbmonitor:GUI工具來(lái)顯示ovsdb-server中數(shù)據(jù)信息。(Ubuntu下是可以使用apt-get安裝,可以遠(yuǎn)程獲取OVS數(shù)據(jù)庫(kù)和OpenFlow的流表)
ovs-controller:一個(gè)簡(jiǎn)單的OpenFlow控制器
ovs-ofctl:用來(lái)控制OVS作為OpenFlow交換機(jī)工作時(shí)候的流表內(nèi)容。
ovs-pki:OpenFlow交換機(jī)創(chuàng)建和管理公鑰框架;
ovs-tcpundump:tcpdump的補(bǔ)丁,解析OpenFlow的消息;
brocompat.ko : Linux bridge compatibility module
openvswitch.ko : Open vSwitch switching datapath
一些用用的OVS命令示例:
sudo ovs-vsctl show
sudo ovs-vsctl add-br mybridge
sudo ovs-vsctl del-br mybridge
sudo ovs-vsctl add-port mybridge port-name
sudo ovs-vsctl del-port mybridge port-name
sudo ovs-vsctl list Bridge/Port/Interface/...
sudo ovs-appctl fdb/show mybridge
sudo ovs-ofctl show mybridge
sudo ovs-ofctl dump-flows mybridge
sudo ovs-ofctl add-flow mybridge dl_src=02:a2:a2:a2:a2:a2,dl_dst=02:b2:b2:b2:b2:b2,in_port=2,dl_type=0x0800,nw_src=10.0.0.1,nw_dst=10.0.0.2,actions=output:6
sudo ovs-ofctl del-flows mybridge dl_src=02:a2:a2:a2:a2:a2,dl_dst=02:b2:b2:b2:b2:b2,in_port=2,dl_type=0x0800,nw_src=10.0.0.1,nw_dst=10.0.0.2
sudo ovs-ofctl add-flow dp0 in_port=2,actions=output:6
# This will delete all the flow entries in the flow table
sudo ovs-ofctl del-flows mybridge
3 OpenvSwitch和其他vswitch
這里其他的vswitch,包括VMware vNetwork distributed switch以及思科的Cisco Nexus 1000V。
VMware vNetwork distributed switch以及思科的Cisco Nexus 1000V這種虛擬交換機(jī)提供的是一個(gè)集中式的控制方式,。而OVS則是一個(gè)獨(dú)立的vswitch,他運(yùn)行在每個(gè)實(shí)現(xiàn)虛擬化的物理機(jī)器上,并提供遠(yuǎn)程管理。
OVS提供了兩種在虛擬化環(huán)境中遠(yuǎn)程管理的協(xié)議:
一個(gè)是OpenFlow,通過(guò)流表來(lái)管理交換機(jī)的行為,
一個(gè)是OVSDB management protocol,用來(lái)暴露sietch的port狀態(tài)。
4 概念及工作流程
4.1 vswitch、Bridge、Datapath
在網(wǎng)絡(luò)中,交換機(jī)和橋都是同一個(gè)概念,OVS實(shí)現(xiàn)了一個(gè)虛擬機(jī)的以太交換機(jī),換句話說(shuō),OVS也就是實(shí)現(xiàn)了一個(gè)以太橋。那么,在OVS中,給一個(gè)交換機(jī),或者說(shuō)一個(gè)橋,用了一個(gè)專(zhuān)業(yè)的名詞,叫做DataPath!
要了解OVS如何工作,首先需要知道橋的概念:
網(wǎng)橋也叫做橋接器,連接兩個(gè)局域網(wǎng)的設(shè)備,網(wǎng)橋工作在數(shù)據(jù)鏈路層,將兩個(gè)LAN連接,根據(jù)MAC地址來(lái)轉(zhuǎn)發(fā)幀,可以看成一個(gè)“低層的路由器”(路由器工作在網(wǎng)絡(luò)層,根據(jù)IP地質(zhì)進(jìn)行轉(zhuǎn)發(fā))。
網(wǎng)橋的工作原理
網(wǎng)橋處理包遵循以下幾條規(guī)則:
在一個(gè)接口上接收到的包不會(huì)再往那個(gè)接口上發(fā)送此包。
每個(gè)接收到的包都要學(xué)習(xí)其源MAC地址。
如果數(shù)據(jù)包是多播或者廣播包(通過(guò)2層MAC地址確定)則要向接收端口以外的所有端口轉(zhuǎn)發(fā),如果上層協(xié)議感興趣,則還會(huì)遞交上層處理。
如果數(shù)據(jù)包的地址不能再CAM表中找到,則向接收端口以外的其他端口轉(zhuǎn)發(fā)。
如果CAM表中能找到,則轉(zhuǎn)發(fā)給相應(yīng)端口,如果發(fā)送和接收都是統(tǒng)一端口,則不發(fā)送。
注意,網(wǎng)橋是以混雜模式工作的。關(guān)于網(wǎng)橋更多,請(qǐng)查閱相關(guān)資料。
OVS中的bridge
上面,說(shuō)到,一個(gè)橋就是一個(gè)交換機(jī)。例如,在OVS中:
root@localhost:~# ovs-vsctl add-br br0
root@localhost:~# ifconfig br0
br0? ? Link encap:Ethernet? HWaddr 1a:09:56:ea:0b:49
inet6 addr: fe80::1809:56ff:feea:b49/64 Scope:Link
UP BROADCAST RUNNING MULTICAST? MTU:1500? Metric:1
RX packets:1584 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:316502 (316.5 KB)? TX bytes:468 (468.0 B)
當(dāng)我們創(chuàng)建了一個(gè)交換機(jī)(網(wǎng)橋)以后,此時(shí)網(wǎng)絡(luò)功能不受影響,但是會(huì)產(chǎn)生一個(gè)虛擬網(wǎng)卡,名字就是網(wǎng)橋的名稱(chēng)(br-int),之所以會(huì)產(chǎn)生一個(gè)虛擬網(wǎng)卡,是為了實(shí)現(xiàn)接下來(lái)的網(wǎng)橋(交換機(jī))功能。有了這個(gè)交換機(jī)以后,還需要為這個(gè)交換機(jī)增加端口(port),一個(gè)端口,就是一個(gè)物理網(wǎng)卡,當(dāng)網(wǎng)卡加入到這個(gè)交換機(jī)之后,其工作方式就和普通交換機(jī)的一個(gè)端口的工作方式類(lèi)似了。
root@localhost:~# ovs-vsctl add-port br0 port
這里要特別注意,網(wǎng)卡加入網(wǎng)橋以后,要按照網(wǎng)橋的工作標(biāo)準(zhǔn)工作,那么加入的一個(gè)端口就必須是以混雜模式工作,工作在鏈路層,處理2層的幀,所以這個(gè)port就不需要配置IP了。(你沒(méi)見(jiàn)過(guò)哪個(gè)交換的端口有IP的吧)
那么接下來(lái)你可能會(huì)問(wèn),通常的交換機(jī)不都是有一個(gè)管理接口,可以telnet到交換機(jī)上進(jìn)行配置吧,那么在OVS中創(chuàng)建的虛擬交換機(jī)有木有這種呢,有的!上面既然創(chuàng)建交換機(jī)brname的時(shí)候產(chǎn)生了一個(gè)虛擬網(wǎng)口 br-int,那么,你給這個(gè)虛擬網(wǎng)卡配置了IP以后,就相當(dāng)于給交換機(jī)的管理接口配置了IP,此時(shí)一個(gè)正常的虛擬交換機(jī)就搞定了。
root@localhost:~# ip address add 192.168.1.1/24 dev br0
最后,我們來(lái)看看一個(gè)br的具體信息:
root@localhost:~# ovs-vsctl show
bc12c8d2-6900-42dd-9c1c-30e8ecb99a1b
Bridge "br0"
Port "eth0"
Interface "eth0"
Port "br0"
Interface "br0"
type: internal
ovs_version: "1.4.0+build0"
首先,這里顯示了一個(gè)名為br0的橋(交換機(jī)),這個(gè)交換機(jī)有兩個(gè)接口,一個(gè)是eth0,一個(gè)是br0,上面說(shuō)到,創(chuàng)建橋的時(shí)候會(huì)創(chuàng)建一個(gè)和橋名字一樣的接口,并自動(dòng)作為該橋的一個(gè)端口,那么這個(gè)虛擬接口的作用,一方面是可以作為交換機(jī)的管理端口,另一方面也是基于這個(gè)虛擬接口,實(shí)現(xiàn)了橋的功能。
#### OpenvSwitch的典型工作流程
這一部分以一個(gè)簡(jiǎn)單的例子,說(shuō)明在虛擬化環(huán)境中OpenvSwitch的典型工作流程。
前面已經(jīng)說(shuō)到,OVS主要是用來(lái)在虛擬化環(huán)境中。實(shí)現(xiàn)虛擬機(jī)之間通信以及一個(gè)虛擬機(jī)和外網(wǎng)之間通信,如下是一個(gè)典型的結(jié)構(gòu)圖:
那么,通常情況下的工作流程如下:

VM實(shí)例 instance 產(chǎn)生一個(gè)數(shù)據(jù)包并發(fā)送至實(shí)例內(nèi)的虛擬網(wǎng)絡(luò)接口 VNIC,圖中就是 instance 中的 eth0.
這個(gè)數(shù)據(jù)包會(huì)傳送到物理機(jī)上的VNIC接口,如圖就是vnet接口。
數(shù)據(jù)包從 vnet NIC 出來(lái),到達(dá)橋(虛擬交換機(jī)) br100 上.
數(shù)據(jù)包經(jīng)過(guò)交換機(jī)的處理,從物理節(jié)點(diǎn)上的物理接口發(fā)出,如圖中物理機(jī)上的 eth0 .
數(shù)據(jù)包從 eth0 出去的時(shí)候,是按照物理節(jié)點(diǎn)上的路由以及默認(rèn)網(wǎng)關(guān)操作的,這個(gè)時(shí)候該數(shù)據(jù)包其實(shí)已經(jīng)不受你的控制了。
一般 L2 switch 連接 eth0 的這個(gè)口是一個(gè) trunk 口, 因?yàn)樘摂M機(jī)對(duì)應(yīng)的 VNET 往往會(huì)設(shè)置 VLAN TAG, 可以通過(guò)對(duì)虛擬機(jī)對(duì)應(yīng)的 vnet 打 VALN TAG 來(lái)控制虛擬機(jī)的網(wǎng)絡(luò)廣播域. 如果跑多個(gè)虛擬機(jī)的話, 多個(gè)虛擬機(jī)對(duì)應(yīng)的 vnet 可以設(shè)置不同的 vlan tag, 那么這些虛擬機(jī)的數(shù)據(jù)包從 eth0(4)出去的時(shí)候, 會(huì)帶上TAG標(biāo)記. 這樣也就必須是 trunk 口才行.
6 OVS簡(jiǎn)單應(yīng)用實(shí)例
6.1 創(chuàng)建物理機(jī)到物理機(jī)的網(wǎng)絡(luò)拓?fù)?/p>

root@localhost:~# ovs-vsctl add-br br0
root@localhost:~# ovs-vsctl add-port br0 eth0
root@localhost:~# ovs-vsctl add-port br0 eth1
6.2 創(chuàng)建虛擬機(jī)到虛擬機(jī)的網(wǎng)絡(luò)拓?fù)?/p>
使用KVM虛擬化。

root@localhost:~# ovs-vsctl add-br br0
root@localhost:~# cat /etc/ovs-ifup
#!/bin/sh
switch='br0'
/sbin/ifconfig? $1 0.0.0.0 up
ovs-vsctl add-port ${switch} $1
root@localhost:~# cat /etc/ovs-ifdown
#!/bin/sh
switch= 'br0'
ovs-vsctl del-port ${sw/sbin/ifconfig? $1 0.0.0.0 down
itch} $1
root@localhost:~# kvm -m 512 -net nic,macaddr=00:11:22:33:44:55 -net \
tap,script=/etc/ovs-ifup,downscript=/etc/ovs-ifdown-drive \
file=/path/to/disk-image,boot=on
root@localhost:~# kvm -m 512 -net nic,macaddr=11:22:33:44:55:66 -net \
tap,script=/etc/ovs-ifup,downscript=/etc/ovs-ifdown-drive \
file=/path/to/disk-image,boot=on
7.Misc
7.1 查表
ovs-vsctl list bridge ovs-br
7.2 關(guān)于 Brdige 及 Port
創(chuàng)建 Brdige
ovs-vsctl add-br ovs-br
在 ovs-br 上添加 interface
ovs-vsctl add-port ovs-br eth0
(1) + (2) 的可以合并為:
ovs?vsctl add?br ovs-br -- add?port ovs-br eth0
刪除 Bridge
ovs-vsctl del-br ovs-br #如果不存在, 會(huì)有error log
ovs-vsctl --if-exists del-br ovs-br
更改 ofport (openflow port number)為100:
ovs-vsctl add-port ovs-br eth0 -- set Interface eth0 ofport_request=100
設(shè)置 port 為 internal
ovs-vsctl set Interface eth0 type=internal
7.3 關(guān)于Controller
設(shè)置 Controller
ovs-vsctl set-controller ovs-br tcp:1.2.3.4:6633
設(shè)置 multi controller
ovs-vsctl set-controller ovs-br tcp:1.2.3.4:6633 tcp:5.6.7.8:6633
查詢 Controller
ovs-vsctl show
如果有成功連到 controller 則提示 is_connected:true, 反之未連上:
ovs-vsctl get-controller ovs-br
移除 Controller
ovs-vsctl del-controller ovs-br
7.4 關(guān)于 STP (Spanning Tree Protocol)
開(kāi)啟 STP
ovs-vsctl set bridge ovs-br stp_enable=true
關(guān)閉 STP
ovs-vsctl set bridge ovs-br stp_enable=false
查詢 STP 配置信息
ovs-vsctl get bridge ovs-br stp_enable
設(shè)置 Priority
ovs?vsctl set bridge br0 other_config:stp-priority=0x7800
設(shè)置 Cost
ovs?vsctl set port eth0 other_config:stp-path-cost=10
移除 STP 設(shè)置
ovs?vsctl clear bridge ovs-br other_config
7.5 關(guān)于 Openflow Version
支持 OpenFlow Version 1.3
ovs-vsctl set bridge ovs-br protocols=OpenFlow13
支持 OpenFlow Version 1.3 1.2
ovs-vsctl set bridge ovs-br protocols=OpenFlow12,OpenFlow13
移除 OpenFlow 支持設(shè)置
ovs-vsctl clear bridge ovs-br protocols
7.6 關(guān)于 VLAN
設(shè)置 VLAN tag
ovs-vsctl add-port ovs-br vlan3 tag=3 -- set interface vlan3 type=internal
移除 VLAN
ovs-vsctl del-port ovs-br vlan3
查詢 VLAN
ovs-vsctl show
ifconfig vlan3
設(shè)置 Vlan trunk
ovs-vsctl add-port ovs-br eth0 trunk=3,4,5,6
設(shè)置已 add 的 port 為 access port, vlan id 9
ovs-vsctl set port eth0 tag=9
ovs-ofctl add-flow 設(shè)置 vlan 100
ovs-ofctl add-flow ovs-br in_port=1,dl_vlan=0xffff,actions=mod_vlan_vid:100,output:3
ovs-ofctl add-flow ovs-br in_port=1,dl_vlan=0xffff,actions=push_vlan:0x8100,set_field:100-\>vlan_vid,output:3
ovs-ofctl add-flow 拿掉 vlan tag
ovs-ofctl add-flow ovs1 in_port=3,dl_vlan=100,actions=strip_vlan,output:1
two_vlan example
ovs-ofctl add-flow pop-vlan
ovs-ofctl add-flow ovs-br in_port=3,dl_vlan=0xffff,actions=pop_vlan,output:1
7.7 關(guān)于 GRE Tunnel
設(shè)置 GRE tunnel
ovs?vsctl add?port ovs-br ovs-gre -- set interface ovs-gre type=gre options:remote_ip=1.2.3.4
查詢 GRE Tunnel
ovs-vsctl show
7.8 關(guān)于 Dump flows
Dumps OpenFlow flows 不含 hidden flows (常用)
ovs-ofctl dump-flows ovs-br
Dumps OpenFlow flows 包含 hidden flows
ovs-appctl bridge/dump-flows ovs-br
Dump 特定 bridge 的 datapath flows 不論任何 type
ovs-appctl dpif/dump-flows ovs-br
Dump 在 Linux kernel 裡的 datapath flow table (常用)
ovs-dpctl dump-flows [dp]
Top like behavior for ovs-dpctl dump-flows
ovs-dpctl-top
7.9 XenServer 開(kāi)啟 OpenvSwitch 方式
檢查是否啟動(dòng)openvswitch服務(wù):
service openvswitch status
啟動(dòng)服務(wù)
xe-switch-network-backend openvswitch
關(guān)閉服務(wù)
xe-switch-network-backend bridge
7.10 關(guān)于 Log
查詢 log level list
ovs-appctl vlog/list
設(shè)置 log level (以 stp 設(shè)置 file 為 dbg level 為例)
ovs-appctl vlog/set stp:file:dbg
ovs-appctl vlog/set {module name}:{console, syslog, file}:{off, emer, err, warn, info, dbg}
7.11 關(guān)于 Fallback
Controller connection: false 的時(shí)候, 會(huì)自動(dòng)調(diào)成 legacy switch mode
ovs-vsctl set-fail-mode ovs-br standalone
無(wú)論 Controller connection status 為何, 都必須通過(guò) OpenFlow 進(jìn)行網(wǎng)絡(luò)行為 (default)
ovs-vsctl set-fail-mode ovs-br secure
移除
ovs-vsctl del-fail-mode ovs-br
查詢
ovs-vsctl get-fail-mode ovs-br
7.12 關(guān)于 sFlow
查詢
ovs-vsctl list sflow
新增
Set sFlow 缺
刪除
ovs-vsctl -- clear Bridge ovs-br sflow
7.13關(guān)于 NetFlow
查詢
ovs-vsctl list netflow
新增
Set NetFlow 缺
刪除
ovs-vsctl -- clear Bridge ovs-br netflow
7.14 設(shè)置 Out-of-band 和 in-band
查詢
ovs-vsctl get controller ovs-br connection-mode
Out-of-band
ovs-vsctl set controller ovs-br connection-mode=out-of-band
In-band (default)
ovs-vsctl set controller ovs-br connection-mode=in-band
移除 hidden flow
ovs-vsctl set bridge br0 other-config:disable-in-band=true
7.15 關(guān)于 ssl
查詢
ovs-vsctl get-ssl
設(shè)置
ovs-vsctl set-ssl sc-privkey.pem sc-cert.pem cacert.pem
OpenvSwitch Lab 6$ TLS SSL : http://roan.logdown.com/posts/208707-openvswitch-lab-6-ssl
刪除
ovs-vsctl del-ssl
7.16 關(guān)于 SPAN
詳細(xì)設(shè)置
ovs-vsctl add-br ovs-br
ovs-vsctl add-port ovs-br eth0
ovs-vsctl add-port ovs-br eth1
ovs-vsctl add-port ovs-br tap0 \
-- --id=@p get port tap0 \
-- --id=@m create mirror name=m0 select-all=true output-port=@p \
-- set bridge ovs-br mirrors=@m
將 ovs-br 上 add-port {eth0,eth1} mirror 至 tap0
刪除
ovs-vsctl clear bridge ovs-br mirrors # 關(guān)於 Table
查 table ovs-ofctl dump-tables ovs-br
7.17 關(guān)于 Group Table
參考hwchiu – Multipath routing with Group table at mininet
建立 Group id 及對(duì)應(yīng)的 bucket
ovs-ofctl -O OpenFlow13 add-group ovs-br group_id=5566,type=select,bucket=output:1,bucket=output:2,bucket=output:3
type 共有 All, Select, Indirect, FastFailover, 詳細(xì)規(guī)格:http://flowgrammable.org/sdn/openflow/message-layer/groupmod/#GroupMod_1.3
使用 Group Table
ovs-ofctl -O OpenFlow13 add-flow ovs-br in_port=4,actions=group:5566
7.18 關(guān)于 VXLAN
參考rascov – Bridge Remote Mininets using VXLAN
建立 VXLAN Network ID (VNI) 和指定的 OpenFlow port number, eg: VNI=5566, OF_PORT=9
ovs-vsctl set interface vxlan type=vxlan option:remote_ip=x.x.x.x option:key=5566 ofport_request=9
VNI flow by flow
ovs-vsctl set interface vxlan type=vxlan option:remote_ip=140.113.215.200 option:key=flow ofport_request=9
設(shè)置 VXLAN tunnel id
ovs-ofctl add-flow ovs-br in_port=1,actions=set_field:5566->tun_id,output:2
ovs-ofctl add-flow s1 in_port=2,tun_id=5566,actions=output:1
7.19 關(guān)于 OVSDB Manager
參考OVSDB Integration:Mininet OVSDB Tutorial
Active Listener 設(shè)置
ovs-vsctl set-manager tcp:1.2.3.4:6640
Passive Listener 設(shè)置
ovs-vsctl set-manager ptcp:6640
7.20 OpenFlow Trace
Generate pakcet trace
ovs-appctl ofproto/trace ovs-br in_port=1,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02 -generate
7.21 其它
查詢 OpenvSwitch 版本
ovs-ofctl -V
查詢指令歷史記錄
ovsdb-tool show-log [-mmm]
[參考]
http://git.openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=blob_plain;f=FAQ;hb=HEAD
http://git.openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=blob_plain;f=README;hb=HEAD
http://openvswitch.org/support/config-cookbooks/vlan-configuration-cookbook/
http://roan.logdown.com/posts/191801-set-openvswitch
http://roan.logdown.com/posts/208707-openvswitch-lab-6-ssl
http://flowgrammable.org/sdn/openflow/message-layer/groupmod/#GroupMod_1.3
http://www.areteix.net/blog/2013/08/network-flow-monitoring-with-open-vswitch/
http://blog.scottlowe.org/2014/11/21/removing-ovs-configuration-settings/