ovsdb-server:
儲存OVS的設定資料,例如 bridge, port 或是 tunnel 的設定資訊。存在硬碟中。另外 ovsdb-server 是用 IPC-channel 來跟 ovs-vswitchd 溝通。
ovs-vswitchd:
如上圖所示,是 Openvswitch kernel module 和 ovsdb-server 最重要的中間聯絡人。透過 IPC-channel 拿 ovsdb-server 的資料或將相關統計資料丟回給 ofproto。
Openvswitch kernel module:
或稱作datapath,封包進到 OVS 會先進到這裡,先針對在 datapath 內的 Flow table 做 Match-And-Action(只有Exact沒有Wildcards),若封包有有命中Flow(Hit)則根據Flow所定義的Action進行動作,若沒有命中Flow則透過Netlink往上送到ovs-vswitchd,進行第二次的Flow Match-And-Action。
ovs-vswitchd :
建立unixctl連線、建立ovs-db連線、初始化netdev、初始化ofproto(OpenFlow switch)、初始化bridge(同步db內的設定)、執行ofproto(維護openflow port、連結openflow)
ofproto:
實現openflow switch的地方,負責管理datapath跟netdev還有跟openflow controller溝通。
ofproto-dpif :
除了datapath外,第二個放openflow的Flow rules/ Flow Tables的地方。若Missed則往上經由ofproto轉送往openflow controller,若Hit則執行actions並往下新增flow到datapath的Flow rules/ Flow Tables,且只能是exact match的flow rule。
datapath (Missed) ---> ofproto-dpif (Missed) ---> ofproto ---> OpenFlow controller
ofproto provider:
用來控制、監控支援OpenFlow的軟體、硬體 switch。
netdev:
管理PHY跟Virtual的連接裝置、裝置間互動的抽象層。