OVSDB

OVS组件

OVS包含三个重要的组件:ovsdb-server、ovs-vswitchd、以及OVS内核模块。

  1. ovsdb-server:OVS的数据库服务进程,持久化存储的数据库,用于记录的网桥、端口、QOS等网络配置信息,为控制器和ovs-vswitchd提供OVSDB操作接口。
  2. ovs-vswitchd:OVS的核心组件,负责保存和管理控制器下发的所有流表,为OVS的内核模块提供流表查询功能,并为控制器提供OpenFlow协议的操作接口。
  3. OVS内核模块:缓存某些常用流表,并负责数据包转发,当遇到无法匹配的报文,该模块将向ovs-vswitchd发送pack-in请求,获取报文处理指令。
#ps -ef | grep ovs-vswitchd
root         987       1  0 Jan24 ?        02:43:11 ovs-vswitchd unix:/var/run/openvswitch/db.sock -vconsole:emer -vsyslog:err -vfile:info --mlockall --no-chdir --log-file=/var/log/openvswitch/ovs-vswitchd.log --pidfile=/var/run/openvswitch/ovs-vswitchd.pid --detach

ovs-vswitchd监听了一个本机的db.sock文件,这个socket就是openvswitch的ovsdb的链接,ovs-vswitchd可以通过这个socket把配置信息写到ovsdb

默认数据库:Open_vSwitch
默认db路径:/etc/openvswitch/conf.db
默认schema:/usr/share/openvswitch/vswitch.ovsschema
默认socket:/var/run/openvswitch/db.sock
ovs-vsctl add-br br-int
ovs-vsctl add-port ovs-veth10

1、Insert:插入,无任何关联项

ovsdb-client transact '["Open_vSwitch",{"op":"insert","table":"xxx","row":{"name":"xxx","value":"xxx"}}]'

2、Selsect:根据where条件筛选

ovsdb-client transact '["Open_vSwitch",{"op":"select","table":"xxx","where":[["name","==","xxx"]]}]'

3、Update:更新表项

ovsdb-client transact '["Open_vSwitch",{"op":"update","table":"xxx","where":[["name","==","xxx"]],"row":{'name':"xxx"}}]'

4、Delete:删除表项

ovsdb-client transact '["Open_vSwitch",{"op":"delete","table":"xxx","where":[["name","==","xxx"]]}]'

5、Mutate:联合操作在table1里insert数据,where里找到关联table2的元素,uuid-name和set保持一致即可,mutations里的第一个参数是table2的column在table1里作为uuid

ovsdb-client transact '["Open_vSwitch",{"op":"insert","table":"xxx1","row":{'name':"xxx"},"uuid-name":"abc"},{"op":"mutate","table":"xxx2","where":[["name","==","xxx"]],"mutations":[["name","insert",["set",[["named-uuid","abc"]]]]]}]'
查看ovsdb里对ovs的操作,可以看到Open_vSwitch表里增加一条记录,Bridge表增加一条记录,Port表增加两条记录
ovsdb-tool show-log -m
record 0: "Open_vSwitch" schema, version="8.2.0", cksum="xxx"
record 1: 2022-07-11 06:42:10.679 "compacting database online"
table Interface insert row "ovs-veth10" (92dee19b):
table Port insert row "br-int" (ccfd1042):
table Port insert row "ovs-veth10" (751976fd):
table Bridge insert row "br-int" (64043d26):
table Open_vSwitch insert row 097bf88c:
列出ovsdb里的所有数据库,默认是Open_vSwitch
ovsdb-client list-dbs
Open_vSwitch
列出ovsdb里的所有table
ovsdb-client list-tables Open_vSwitch
Table
Controller
Bridge
Queue
IPFIX
NetFlow
Open_vSwitch
CT_Zone
QoS
Datapath
SSL
Port
sFlow
Flow_Sample_Collector_Set
CT_Timeout_Policy
Mirror
Flow_Table
Interface
AutoAttach
Manager
查看Open_vSwitch表新增内容,bridges会不断更新网桥id,同时会记录cur_cfg和next_cfg
ovsdb-client dump Open_vSwitch Open_vSwitch
Open_vSwitch table
_uuid                                bridges                                                                      cur_cfg datapath_types   datapaths db_version dpdk_initialized dpdk_version external_ids                                                                                       iface_types                                                                              manager_options next_cfg other_config ovs_version ssl statistics system_type system_version
--------------------------------------------------------------------------------
097bf88c-b5c3-4e62-b795-51ea0f0c0053 [64043d26-8311-4a68-837a-f58b6bd3293c] 183     [netdev, system] {}        "8.2.0"    false            none         {hostname=ubuntu, rundir="/var/run/openvswitch", system-id="e73b1ede-9e48-4412-9665-c0f998fec762"} [erspan, geneve, gre, internal, ip6erspan, ip6gre, lisp, patch, stt, system, tap, vxlan] []              183      {}           "2.13.3"    []  {}         ubuntu      "20.04"
查看数据库Open_vSwitch中Bridge表内容,看到一个br-int网桥
ovsdb-client dump Open_vSwitch Bridge
Bridge table
_uuid                                auto_attach controller datapath_id        datapath_type datapath_version external_ids fail_mode flood_vlans flow_tables ipfix mcast_snooping_enable mirrors name    netflow other_config ports                                                                                                                                                                                          protocols                rstp_enable rstp_status sflow status stp_enable
--------------------------------------------------------------------------------
64043d26-8311-4a68-837a-f58b6bd3293c []          []         "0000263d0464684a" ""            "<unknown>"      {}           []        []          {}          []    false                 []      br-int  []      {}           [28e2a8cf-5bad-43c1-a6e9-b6bb635295bb, 751976fd-0cec-42bc-ada2-cf7bee05453d, 9f4d9f67-5b0e-4cbd-ba8b-9386dcbf3c65, c0e09899-3197-4763-9bf0-a1de941f0d32, ccfd1042-55f4-4af6-9bc7-49ddb29c09de] []                       false       {}          []    {}     false
查看数据库Open_vSwitch中Port表内容,看到一个网桥同名接口br-int和自建接口ovs-veth10,每个port都关联一个interface
ovsdb-client dump Open_vSwitch Port
Port table
_uuid                                bond_active_slave bond_downdelay bond_fake_iface bond_mode bond_updelay cvlans external_ids fake_bridge interfaces                             lacp mac name       other_config protected qos rstp_statistics rstp_status statistics status tag trunks vlan_mode
--------------------------------------------------------------------------------
ccfd1042-55f4-4af6-9bc7-49ddb29c09de []                0              false           []        0            []     {}           false       [58c5bd1a-6165-46d5-bd74-b5879874ed28] []   []  br-int     {}           false     []  {}              {}          {}         {}     []  []     []
751976fd-0cec-42bc-ada2-cf7bee05453d []                0              false           []        0            []     {}           false       [92dee19b-7042-4ec4-81eb-2b8f10095c5c] []   []  ovs-veth10 {}           false     []  {}              {}          {}         {}     []  []     []
监控数据库Open_vSwitch中Port表变动
ovsdb-client monitor Open_vSwitch Port
查看数据库Open_vSwitch中Interface表内容,看到port关联的interface里对应的ofport就是网桥的编号
ovsdb-client dump Open_vSwitch Interface
Interface table
_uuid                                admin_state bfd bfd_status cfm_fault cfm_fault_status cfm_flap_count cfm_health cfm_mpid cfm_remote_mpids cfm_remote_opstate duplex error                                                       external_ids ifindex ingress_policing_burst ingress_policing_rate lacp_current link_resets link_speed  link_state lldp mac mac_in_use          mtu  mtu_request name       ofport ofport_request options other_config statistics                                                                                                                                                                                                      status                                                        type
--------------------------------------------------------------------------------
58c5bd1a-6165-46d5-bd74-b5879874ed28 down        {}  {}         []        []               []             []         []       []               []                 []     []                                                          {}           137     0                      0                     []           0           []          down       {}   []  "26:3d:04:64:68:4a" 1500 []          br-int     65534  []             {}      {}           {collisions=0, rx_bytes=0, rx_crc_err=0, rx_dropped=66459, rx_errors=0, rx_frame_err=0, rx_missed_errors=0, rx_over_err=0, rx_packets=0, tx_bytes=0, tx_dropped=0, tx_errors=0, tx_packets=0}                   {driver_name=openvswitch}                                     internal
92dee19b-7042-4ec4-81eb-2b8f10095c5c up          {}  {}         []        []               []             []         []       []               []                 full   []                                                          {}           138     0                      0                     []           1           10000000000 up         {}   []  "f2:85:c5:5c:e2:8e" 1500 []          ovs-veth10 2      []             {}      {}           {collisions=0, rx_bytes=57076, rx_crc_err=0, rx_dropped=0, rx_errors=0, rx_frame_err=0, rx_missed_errors=0, rx_over_err=0, rx_packets=722, tx_bytes=22453284, tx_dropped=0, tx_errors=0, tx_packets=66450}      {driver_name=veth, driver_version="1.0", firmware_version=""} ""
自建数据库

1、创建schema文件amber.schema

{
"name": "Amber",
"version": "1.0.1",
"cksum": "xxx",
"tables": {
"Information": {
"columns":{
"name": {
"type": {
"key": "string",
"max": 1,
"min": 0
}
},
"age": {
"type": {
"key": "integer",
"max": 1,
"min": 0
}
},
"number": {
"type": {"key": {"type": "string", "minLength": 17, "maxLength": 17}}}
},
"isRoot": true,
"maxRows": 1
},
"Score": {
"columns": {
"math":{
"type": {
"key": {
"type": "integer",
"max": 1,
"min": 1
}
},
"mutable": false
},
"chinese": {
"type": {
"key": {
"type": "integer",
"max": 1,
"min": 1
}
},
"mutable": false
},
"english": {
"type": "integer"
"max": 1,
"min": 1
},
"isRoot": true
},}

注意,名称值可选性说明“columns”{: , …}必选包含的表格的UUID、版本信息等“maxRows”可选表格的最大行数“isRoot”可选表格内是否存在强依赖关系“indexes”[*]可选用于标识表格列”type”必选列的类型“ephemeral”< boolean >可选数据是否持久化“mutable”可选数据是否可修改

2、创建ovsdb数据库:ovsdb-tool create amber.db amber.schema

3、启动ovsdb数据库:ovsdb-server -vconsole:off -vfile:info --log-file=/root/amberd.log --remote=punix:/var/run/amber/amberd.sock --pidfile=/var/run/amberd.pid --unixctl=/var/run/amberd.ctl --detach --monitor /root/sdn/platform/src/ctrlplane/ovsdb/amber.db
4、查看数据库Table时要指定socket

ovsdb-client list-tables unix:/var/run/amber/amberd.sock DP_Option
ovsdb-client dump unix:/var/run/amber/amberd.sock DP_Option DP_Option
ovsdb-client transact unix:/var/run/amber/amberd.sock '["DP_Option",{"op":"select","table":"DP_Option","where":[]}]'
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值