一種虛擬交換器,可用來作為L2switch,切割網域,QoS或是流量監控,同時支持openFlow協定。
Bridge:對應物理的交換器,作用是根據規則做Packet轉發
Port:接收Packet的接口,可以根據Flow把Packet送到其他Port,包含Normal、Internal、Patch、Tunnel類型
Fail mode:當和Controller 連接失敗時
standalone:作為一般L2/L3交換器
secure:一定要連上 controller 才處理封包
ovsdb-server 管理ovsdb。
ovsdb 存放vswitch相關資料,EX:Bridge,Port,Interface,Flow Table,QoS,sFlow config
ovs-vswitch ovs daemon 用來控制 vswitch
ovs-dpctl : 管理ovs datapath,大部分資訊都是透過 netlink 反應出
ovs-vsctl : 對 ovsdb 操作,bridge,interface 新增,刪除,查詢,操作指令比較具有語意,會幫你轉化成 ovsdb 看的懂的語法
ovs-ofctl : openflow switch 管理工具,可以操作與 openflow 相關的設定
ovs-appctl : ovs-vswithd 的管理工具,可以跟 ovs-vswitchd 程序溝通,ex:ofproto/trace 可用來追蹤封包flow
ovs-docker : 提供與 docker container 的連接
sudo apt-get install openvswitch-switch
新增一個Bridge
ovs-vsctl add-br br0
將 interface 綁定 Bridge br0 並設定type=internel ,若此網卡存在則不需設定
ovs-vsctl add-port br0 interface -- set interface interface type=internel
查看 switch 的狀態,
ovs-vsctl show
新增Flow Entry
#若是沒有符合的條件,則丟棄封包
ovs-ofctl add-flow br0 "table=0,priority=0,actions=drop"
查詢Bridge Flow Entry
ovs-ofctl dump-flows br0
綁定container至ovs
#建立一個container
docker run -itd --name=c1 --network=none busybox
#綁定至ovs
ovs-docker add-port br0 t2 c2 --ipaddress=10.0.0.1/24
查看 Bridge br0 轉發表
ovs-appctl fdb/show br0
查看 Bridge br0 [port] 的流量
ovs-ofctl dump-ports br0 [port]
查看 Log
ovsdb-tool show-log -m