ovsdb管理协议概述

标签:
ovsdbopenvswitchjson-rpc |
分类: networktech |
下图显示了openvswitch的主要组件和到控制器和管理平台的接口。

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

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",选择实现其他方法。
-
"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
-
"op": "update"
-
"table":
-
"where": [*]
-
"row":
对应结果对象包括:
-
"count":
update操作更新表中的行,根据where条件查找表中的行,并更新匹配行的对应列,"count"为被更新的行数
后一篇:Linux-perf架构