OVN中的Logical Flow 与 Open Flow
OVN架构
整个架构非常简单,OVN 仅仅提供了一组网络模型(逻辑交换机、逻辑路由器等),提供了一个OVSDB 数据库用来存放这些模型同时把数据库的访问权限开放给最终用户,让最终用户通过 OVSDB 协议来直接“写入”这些模型(北向)。通过一个叫 ovn-northd 的进程把网络模型转换成OpenFlow流表,放入另一个数据库让 ovn-host 自己来“取”流表(南向),以此完成流表下发。
CMS
|
|
+-----------|-----------+
| | |
| OVN/CMS Plugin |
| | |
| | |
| OVN Northbound DB |
| | |
| | |
| ovn-northd |
| | |
+-----------|-----------+
|
|
+-------------------+
| OVN Southbound DB |
+-------------------+
|
|
+------------------+------------------+
| | |
HV 1 | | HV n |
+---------------|---------------+ . +---------------|---------------+
| | | . | | |
| ovn-controller | . | ovn-controller |
| | | | . | | | |
| | | | | | | |
| ovs-vswitchd ovsdb-server | | ovs-vswitchd ovsdb-server |
| | | |
+-------------------------------+ +-------------------------------+
逻辑网络
OVN 中的逻辑网络概念包括逻辑交换机和逻辑路由器,分别是以太网交换机和 IP 路由器的逻辑版本。就像物理实现一样,逻辑交换机和路由器可以连接到复杂的拓扑结构中。逻辑交换机和路由器通常是纯逻辑实体,也就是说,它们不关联或绑定到任何物理位置,并且在参与 OVN 的每个 Hypervisor 中以分布式方式实现。
Logical Flow 与 Open Flow的异同
从概念上来说,Logical Flows和OpenFlow类似,它们都由table组成,table中包含flow,每个flow都有priority,match和action。两者最大的不同是,logical flow对整个网络的行为进行了详细地描述并且能扩展到任意数量的主机上。并且它把对于具体网络行为的定义和对于现实的物理设备的布局(有多少机器以及机器端口的分布)分离了开来。
OVN Logical Flow 与 Open Flow的转换
转换过程:
SB 中的OpenFlow流表是由运行在 ovn-central 节点上的 ovn-northd 进程修改的,ovn-northd 会“监听” NB中的逻辑流表的改变,把逻辑交换机、路由器的定义转换成OpenFlow流表写入到 SB 数据库。
你可以使用"ovn-sbctl lflow-list"命令来查看完整的logical flow
OVN 南北向数据库与Logical Flow 和 Open Flow的关系
OVN 引入了两个全新的 OVSDB:
一个叫 Northbound DB(北向数据库,NB),一个叫 Southbound DB(南向数据库,SB);两个库都可以导出远程接口,允许用户通过 OVSDB 协议对数据库进行操作。
承上启下的ovn northd组件:
将 CMS 的北向配置转换为南向数据库的逻辑流。连接其上方的 ovn Northbound 数据库和下方的 ovn Southbound 数据库。它将传统网络概念中的逻辑网络配置(逻辑流表,取自 OVN 北向数据库)转换为其下方 OVN 南向数据库中的逻辑数据路径流(OpenFlow流表)。
ovn northbound Database(北向数据库):
接收 OVN/CMS 插件传递的逻辑网络配置的中间件。数据库模式意味着与 CMS 中使用的概念匹配,它直接支持逻辑交换机、路由器、ACL等概念。
通过 ovn 提供的命令行(ovn-nbctl)完成添加、删除、修改、查询等操作;
也可以写代码通过 OVSDB 协议完成类似动作。OVN 的 NB 是面向“上层应用”的或者叫“云管平台(Cloud Management System,CMS)”。
OVN Southbound Database(南向数据库):
包含三种数据:指定如何到达 hypervisor 和其他节点的物理网络(PN)表,用“逻辑数据路径流”描述逻辑网络的逻辑网络(LN)表,“”和将逻辑网络组件的位置链接到物理网络的绑定表。
SB 中的流表是由运行在 ovn-central 节点上的 ovn-northd 进程修改的,ovn-northd 会“监听” NB 的改变,把逻辑交换机、路由器的定义转换成流表(Flow)写入到 SB 数据库。
Southbound Database的特殊性
同时接受两边的“写入”,首先是运行在 ovn-host 上的 ovn-controller 启动之后会去主动连接到 ovn-central 节点上的 SB 进程,把自己的 IP 地址(Chassis),本机的 OVS 状态(Datapath_Binding)写入到 SB 数据库中。ovn-controller 还“监听” SB 数据库中流表的变化(Flow)去更新本地的 OVS 数据库 – 流表下发。