加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ovsdb管理协议概述

(2020-04-14 06:10:27)
标签:

ovsdb

openvswitch

json-rpc

分类: networktech
下图显示了openvswitch的主要组件和到控制器和管理平台的接口。
ovsdb管理协议概述

一个OVS实例包括数据库服务器(ovsdb-server),vswitch守护进程,以及可选的执行快速转发的模块;管理和控制簇由一些管理器控制器组成,管理器由OVSDB管理协议来管理OVS实例,一个OVS至少由一个管理者来管理,控制器通过OpenFlow来加载流表到OpenFlow交换机,一个OVS实例可以支持多个逻辑数据通路,称为网桥(bridge),每个OVS网桥至少有一个控制器。
OVSDB管理接口用来执行对OVS实例的管理和配置操作,相比于OpenFlow,OVSDB管理操作在更长的时间维度上发生,OVSDB支持的操作包括:
  • 创建,修改,删除OpenFlow数据通路(网桥),
  • 配置OpenFlow数据通路所需要连接的控制器集合。
  • 配置OVSDB服务器所需要连接的管理者的集合。
  • 创建,修改,删除OpenFlow数据通路上的端口
  • 创建,修改,删除OpenFlow数据通路上的隧道接口
  • 创建,修改,删除队列
  • 配置QoS策略并负载到队列
  • 连接数据统计
OVSDB不执行流相关操作,这些留给OpenFlow执行。
ovsdb管理协议概述


OVSDB架构


3.1 JSON用法

OVSDB使用JSON作为数据库摘要和线路协议的格式,Open vSwitch实现的JSON有下列限制:
  • 
    Null字节(\u0000)不能用于字符串中
    
  • 
    只支持UTF-8
    
下面的描述使用了下列简略记号:
  • 
    :JSON字符串,任何unicode字符串都合法,但不包含null字符
    
  • 
    :匹配[a-zA-Z_][a-zA-Z0-9_]*.的JSON字符串
    

3.2.Schema格式



Open vSwitch配置数据库由一系列表构成,每个表有很多列和0个或多个行,数据库的格式由表示


"name": 
"version":
"cksum":
"tables": {: , ...}

"name"标识整个数据库,必须在大多数的JSON-RPC请求中存在以识别所需要操作的数据库,
"version"报告数据库schema的版本信息,



"columns": {: , ...}
"maxRows":
"isRoot":
"indexes": [*]

"columns"的值是个JSON对象,对象名即为column名,其值即为
每个表有下列列他们的定义不包含在shema中,

"_uuid":包含一个UUID值,在创建一行是由数据库引擎随机创建,只读,在行的生命周期中不改变。
"_version":

4.

 

Wire协议


4.1. RPC Methods


下面部分描述了所支持的RPC方法,如JSON-RPC 1.0所描述,每个请求包含方法名的字符串,传递给该方法的参数列表
,请求ID,用于匹配响应;每个响应包括结果对象(成功调用时是non-null),错误对象(出错时非空对象),匹配请求的ID,

OVSDB必须实现所有下面的操作,OVSDB客户必须实现"Echo",选择实现其他方法。


4.1.1. List Databases

这个操作获取这个连接上所有的数据库的名字列表。请求对象包含下列元素。
  • 
    "method": "list_dbs"
    
  • 
    "params": []
    
  • 
    "id": 
    
响应对象包含下列元素。
  • "result": [,...]
  • 
    "error": null
    
  • 
    "id": 同请求中的 "id" 

4.1.2. Get Schema


获取数据库
请求对象的参数包括:
  • 
    "method": "get_schema"
    
  • 
    "params": []
    
  • 
    "id": 
响应对象包含下列元素。
  • 
    "result": 
    
  • 
    "error": null
    
  • 
    "id":请求对象中的id
    
如果请求的数据库不存在,服务器发送JSON-RPC错误响应:
  • 
    "result": null
    
  • 
    "error": "unknown database"
    
  • 
    "id":请求对象中的id
    

4.1.3. Transact


Transact方法引发服务器对特定数据库执行一系列操作,请求对象包含参数:
  • 
    "method": "transact"
    
  • 
    "params": [, *]
    
  • 
    "id": 
    

"id"在所有JSON-RPC进行中的事物处理唯一,"params"数组由操作所作用的数据库名和数据库操作对象构成。




4.1.4. Cancel



4.1.5. Monitor



4.1.6. Update Notification



4.1.7. Monitor Cancellation



4.1.9. Locked Notification



4.1.10. Stolen Notification



4.1.10. Stolen Notification



5. 数据库操作



5.1. Notation



5.2. Operations



5.2.1. Insert



"insert"对象包含下列成员:
  • 
    "op": "insert" 
    
  • 
    "table": 
    
  • 
    "row": 
    
  • 
    "uuid-name":  
    
    相应的响应结果对象包括:
  • 
    "uuid": 
    










"insert"操作插入"row"到"table",如果"row"没有确定标中的所有列,那些列为缺省值,缺省值依赖与列的数据类型,

5.2.2. Select



"select"对象包括下列元素:
  • "op": "select"
  • 
    "table": 
    
  • 
    "where": [*]
    
  • 
    "columns": [*]
    
相应的结果对象包括:
  • 
    "rows": [*]
    
select操作查找表中满足where条件的行


5.2.3. Update



"update"对象包括:


 
  • 
    "op": "update" 
    
  • 
    "table": 
    
  • 
    "where": [*]
    
  • 
    "row":   
    
对应结果对象包括:
  • 
    "count": 
    
update操作更新表中的行,根据where条件查找表中的行,并更新匹配行的对应列,"count"为被更新的行数


5.2.4. Mutate



"mutate"变动表中的匹配行,查找表中匹配where条件的行,对匹配行的列根据"mutations"中的信息变动列,对象包括:

  •   "op": "mutate"
  • 
    "table": 
    
  • 
    "where": [*] 
    
  • 
    "mutations": [*]
    

5.2.5. Delete



5.2.6. Wait



5.2.7. Commit



5.2.8. Abort



5.2.9. Comment



5.2.10. Assert



0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有