ovsdb <7> OVSDB操作实践及各种机制的分析

4.2OVSDB操作实践及各种机制的分析
在安装了上述的openvswitch和做了相应的配置之后,下面对openvswitch中提供的各种ovsdb的工具、操作方式和工作机制做一些简单的说明:
1、Ovsdb-server:ovsdb的服务器进程,该进程主要是实现了passive listener,被动的监听client所提交的各种transaction,并对各种transaction做出各种响应,实现的方式是基于jsonrpc;
2、Ovsdb-client:ovsdb数据库的client进程,该进程主要实现了ovsdb数据库的的操作的发起端,发起了各种操作后等待ovsdb-server给出各种响应并对各种响应的结果做出显示,实现的方式是基于jsonrpc;
3、Ovsdb-tool:ovsdb的数据库操作的工具,该工具不依赖于ovsdb的任何的进程就可以直接对ovsdb数据库做出相应的操作,不像ovsdb-client一样需要依赖jsonrpc的方式对数据库做出操作;
下面就openvswitch中的ovsdb提供的各种机制做各种实践及分析,这里主要是考虑基于jsonrpc的方式来完成实践操作。
4.2.1transact的operation为insert
向OVN_Northbound数据库中的table Logical_Router中插入column的name为111的项:
ovsdb-client transact -v ‘[“OVN_Northbound”,{“op”:“insert”,“table”:“Logical_Router”,“row”:{“name”:“111”}}]’
2016-07-29T09:03:15Z|00001|jsonrpc|DBG|unix:/usr/local/var/run/openvswitch/db.sock: send request, method=“transact”, params=[“OVN_Northbound”,{“row”:{“name”:“111”},“op”:“insert”,“table”:“Logical_Router”}], id=0
null
2016-07-29T09:03:15Z|00002|jsonrpc|DBG|unix:/usr/local/var/run/openvswitch/db.sock: received reply, result=[{“uuid”:[“uuid”,“90e99ebf-f343-4908-b857-b008606810ea”]}], id=0
[{“uuid”:[“uuid”,“90e99ebf-f343-4908-b857-b008606810ea”]}]
然后观察DBG信息是否成功(通过-v参数可以观察DBG信息),并使用命令ovsdb-client dump Logical Router查看是否添加成功:
ovsdb-client dump OVN_Northbound Logical_Router
Logical_Router table
_uuid default_gw external_ids name ports


90e99ebf-f343-4908-b857-b008606810ea [] {} “111” []
4.2.2transact的operation为upate
将OVN_Northbound数据库中的table Logical_Router中column的name为111的项改为123:
ovsdb-client -v transact ‘[“OVN_Northbound”,{“op”:“update”,“table”:“Logical_Router”,“where”:[],“row”:{“name”:“123”}}]’
2016-08-05T05:48:55Z|00001|jsonrpc|DBG|unix:/usr/local/var/run/openvswitch/db.sock: send request, method=“transact”, params=[“OVN_Northbound”,{“where”:[],“row”:{“name”:“123”},“op”:“update”,“table”:“Logical_Router”}], id=0
2016-08-05T05:48:55Z|00002|jsonrpc|DBG|unix:/usr/local/var/run/openvswitch/db.sock: received reply, result=[{“count”:1}], id=0
[{“count”:1}]
然后观察DBG信息是否成功(通过-v参数可以观察DBG信息),并使用命令ovsdb-client dump Logical Router查看是否修改成功:
ovsdb-client dump OVN_Northbound Logical_Router
Logical_Router table
_uuid default_gw external_ids name ports


90e99ebf-f343-4908-b857-b008606810ea [] {} “123” []

补充上述的where项流程:
ovsdb-client dump OVN_Northbound Logical_Router
Logical_Router table
_uuid default_gw external_ids name ports


1246854f-9f0d-4044-b751-832f86b26cf9 [] {} “111” []
22ccacf1-64bc-4154-a77a-3cffb3d2ced5 [] {} “111” []
4d53215c-eddb-497b-abda-c92207b57a73 [] {} “123” []
b70e9067-9b00-4a9f-ab48-38b4faac785a [] {} “12345” []
将上述的12345的项目改成tyrone:
ovsdb-client -v transact '[“OVN_Northbound”,{“op”:“update”,“table”:“Logical_Router”,“where”:[[“name”,"",“12345”]],“row”:{“name”:“tyrone”}}]’
2016-08-12T09:45:13Z|00001|jsonrpc|DBG|unix:/usr/local/var/run/openvswitch/db.sock: send request, method=“transact”, params=[“OVN_Northbound”,{“where”:[[“name”,"
",“12345”]],“row”:{“name”:“tyrone”},“op”:“update”,“table”:“Logical_Router”}], id=0
2016-08-12T09:45:13Z|00002|jsonrpc|DBG|unix:/usr/local/var/run/openvswitch/db.sock: received reply, result=[{“count”:1}], id=0
[{“count”:1}]
root@tyrone-virtual-machine:/home/tyrone# ovsdb-client dump OVN_Northbound Logical_Router
Logical_Router table
_uuid default_gw external_ids name ports


1246854f-9f0d-4044-b751-832f86b26cf9 [] {} “111” []
22ccacf1-64bc-4154-a77a-3cffb3d2ced5 [] {} “111” []
4d53215c-eddb-497b-abda-c92207b57a73 [] {} “123” []
b70e9067-9b00-4a9f-ab48-38b4faac785a [] {} tyrone []
4.2.3 transact的operation为delete
将OVN_Northbound数据库中的table Logical_Router中column的name为123的项目删除:
ovsdb-client -v transact ‘[“OVN_Northbound”,{“op”:“delete”,“table”:“Logical_Router”,“where”:[]}]’
2016-08-05T05:59:05Z|00001|jsonrpc|DBG|unix:/usr/local/var/run/openvswitch/db.sock: send request, method=“transact”, params=[“OVN_Northbound”,{“where”:[],“op”:“delete”,“table”:“Logical_Router”}], id=0
2016-08-05T05:59:05Z|00002|jsonrpc|DBG|unix:/usr/local/var/run/openvswitch/db.sock: received reply, result=[{“count”:1}], id=0
[{“count”:1}]
然后观察DBG信息是否成功(通过-v参数可以观察DBG信息),并使用命令ovsdb-client dump Logical Router查看是否删除成功:
ovsdb-client dump OVN_Northbound Logical_Router
Logical_Router table
_uuid default_gw external_ids name ports


4.2.4dump操作的用法
Ovsdb-client dump除了上述查看TABLE表项的功能之外,其用法相当丰富,还可以dump DATABASE和dump COLUMN;
1、dump DATABASE
ovsdb-client dump OVN_Northbound
ACL table
_uuid action direction external_ids log match priority


Logical_Port table
_uuid addresses enabled external_ids name options parent_name port_security tag type up


Logical_Router table
_uuid default_gw external_ids name ports


Logical_Router_Port table
_uuid enabled external_ids mac name network peer


Logical_Switch table
_uuid acls external_ids name ports


2、dump COLUMN
ovsdb-client dump OVN_Northbound Logical_Router name
Logical_Router table
name

4.2.5关于monitor操作
Openvswitch中的ovsdb还提供了monitor操作,在rfc文档中描述为使client能够靠发送jsonrpc的request,得知OVSDB的数据库内容的update情况。最终ovsdb-server以update的形式通知到client并显示出来,该形式包括了initial表示开启ovsdb-client的monitor功能时候的初始数据、insert表示插入新的行、delete表示删除符合条件的数据、old new表示修改相应的数据时的新旧数据的对比显示等。具体在实践中结果如下:
1、初始表项的结果:
ovsdb-client monitor OVN_Northbound Logical_Router
row action default_gw external_ids name ports _version


b761e948-a2c4-4208-bc4e-7bfcf6dd45d3 initial [] {} “111” [] a6cc25c9-6f53-4ead-89dd-03a2c7f1c8d0
84aa4bfd-88d9-4a44-8432-a9460653181f initial [] {} tyrone [] 4cca5bd3-84d5-4ce2-8d91-263136022632
e88dfb20-7a6f-4d5d-83a1-38ecc8725e29 initial [] {} tyr [] c63c69b2-06df-47cf-9695-686beed2aa28
19887ee6-540e-4297-af62-5cd6be831ca7 initial [] {} “123” [] 6559cee4-5e83-4775-a948-b88f48a87e34
08107c6b-483a-4a85-a8e8-1581b896a03f initial [] {} tyr [] 68f7ce06-4ed9-4190-928e-baa0e6b5ccaf

2、向数据库中插入新的行的时候的monitor显示的结果:
row action default_gw external_ids name ports _version


d0c04213-ba2e-4206-b09f-541e689e4b56 insert [] {} xf [] 7e013f41-14ff-411b-aecd-bc9d28fe0717

3、向数据库中修改部分数据的时候的monitor显示的结果
row action default_gw external_ids name ports _version


b761e948-a2c4-4208-bc4e-7bfcf6dd45d3 old “111” a6cc25c9-6f53-4ead-89dd-03a2c7f1c8d0
new [] {} zyq [] d21e4914-937f-42c1-9b18-26b81359a6a6
e88dfb20-7a6f-4d5d-83a1-38ecc8725e29 old tyr c63c69b2-06df-47cf-9695-686beed2aa28
new [] {} zyq [] 0bd2a3e6-209f-4d7f-af9c-024ef198dbb3
d0c04213-ba2e-4206-b09f-541e689e4b56 old xf 7e013f41-14ff-411b-aecd-bc9d28fe0717
new [] {} zyq [] cb423507-f7f7-41b4-b8d3-1ce05c8eb5b4
84aa4bfd-88d9-4a44-8432-a9460653181f old tyrone 4cca5bd3-84d5-4ce2-8d91-263136022632
new [] {} zyq [] d8ae2b10-a2f6-42bf-b2ca-ba0127e0d3ad
19887ee6-540e-4297-af62-5cd6be831ca7 old “123” 6559cee4-5e83-4775-a948-b88f48a87e34
new [] {} zyq [] 8a0d605a-6f8b-4bf5-a414-edf7629a2bb5
08107c6b-483a-4a85-a8e8-1581b896a03f old tyr 68f7ce06-4ed9-4190-928e-baa0e6b5ccaf
new [] {} zyq [] 42a934ee-d6bf-4627-a678-68a335177fb7

4、删除数据库中的表项时的monitor的显示结果:
row action default_gw external_ids name ports _version


b761e948-a2c4-4208-bc4e-7bfcf6dd45d3 delete [] {} zyq [] d21e4914-937f-42c1-9b18-26b81359a6a6
e88dfb20-7a6f-4d5d-83a1-38ecc8725e29 delete [] {} zyq [] 0bd2a3e6-209f-4d7f-af9c-024ef198dbb3
d0c04213-ba2e-4206-b09f-541e689e4b56 delete [] {} zyq [] cb423507-f7f7-41b4-b8d3-1ce05c8eb5b4
84aa4bfd-88d9-4a44-8432-a9460653181f delete [] {} zyq [] d8ae2b10-a2f6-42bf-b2ca-ba0127e0d3ad
19887ee6-540e-4297-af62-5cd6be831ca7 delete [] {} zyq [] 8a0d605a-6f8b-4bf5-a414-edf7629a2bb5
08107c6b-483a-4a85-a8e8-1581b896a03f delete [] {} zyq [] 42a934ee-d6bf-4627-a678-68a335177fb7

row action default_gw external_ids name ports _version


7e0fece4-6b38-492c-95d8-6707cdea029f insert [] {} xf [] 4be1ec8b-0597-4c3c-9d1e-26344762c78a

4.2.6关于commit操作
在rfc7407文档中对commit操作做了相应的描述,且在代码中也实现了具体的操作,但是该操作在实现的过程中和rfc文档中描述的有出入。在rfc文档中只有当durable值为true 的时候才会将最终的结果写入数据库中,durable为false时则相当于对数据库是一个no-op操作,而在具体的代码流程中当durable为任何情况时所有的操作均发生变化了,且均写入了数据库,只有当所有的operation有失败的情况的时候才将数据库的内容abort掉,不再写入数据库中永久保存。该功能有待完善,完善之后可用于命令的提交执行和立即执行的处理。

4.2.7ovsdb的依赖关系

在这里插入图片描述
Ovsdb-client依赖于各个应用程序,命令行作为其trigger。ovsdb-server则为ovsdb的管理者,对ovsdb-client的request做出reply

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
OVNDB和OVSDB都是与网络虚拟化解决方案相关的数据库,但它们有一些区别。 1. OVNDB(Open Virtual Network Database):OVNDB是Open Virtual Network(OVN)的数据库,用于存储和管理OVN的逻辑网络配置、状态信息以及流量处理规则等。OVN是建立在Open vSwitch(OVS)之上的虚拟网络解决方案,通过OVNDB来管理和控制逻辑网络。 2. OVSDB(Open vSwitch Database):OVSDB是Open vSwitch(OVS)的数据库,用于存储和管理OVS的配置信息、状态数据以及网络拓扑等。OVS是一个开源的虚拟交换机软件,提供网络转发和流量处理功能。通过OVSDB,管理员可以对OVS进行配置和管理。 虽然OVNDB和OVSDB都是数据库,但它们在以下方面存在区别: 1. 功能:OVNDB专门用于管理OVN的逻辑网络配置和流量处理规则,而OVSDB用于管理OVS的配置信息和网络拓扑。它们的功能和数据模型略有不同。 2. 架构:OVNDB和OVSDB在架构上也存在差异。OVNDB采用分布式架构,支持多个OVN控制器之间的数据同步和共享。而OVSDB通常采用集中式架构,支持单一的OVS控制器。 3. 使用场景:OVNDB主要用于支持虚拟化环境中的逻辑网络管理和控制,而OVSDB适用于各种网络环境,包括物理网络和虚拟网络。 总结来说,OVNDB和OVSDB都是用于网络虚拟化解决方案的数据库,但针对不同的软件和功能进行了设计和优化。OVNDB用于管理OVN的逻辑网络配置和流量处理规则,而OVSDB用于管理OVS的配置信息和网络拓扑。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值