参考文献:
https://www.cnblogs.com/liuhongru/p/11121731.html
1、OVN的功能?
- L2 叫Logical switches 逻辑交换机
- L3 叫Logical Router 逻辑路由器
- ACL,就像我们物理交换机可以配置ACL, OVN可以针对
逻辑交换机
添加ACL
- NAT, SNAT, DNAT都支持
- Load Balancer, 支持面向内部的负载均衡和提供外部访问的负载均衡
2、OVN的架构
这幅架构图描绘了OVN的整体架构和
进程分布
,为了讨论方便我们把OVN中承担“管理”任务的节点成为ovn-central;把承担实际数据转发的节点成为ovn-host(可以类比成controller node、compute node)。
OVN引入了两个全新的OVSDB,
- 一个叫Northbound DB(北向数据库,NB),
- 一个叫Southbound DB(南向数据库,SB);
两个库都可以导出远程接口,允许用户通过OVSDB协议对数据库进行操作(不必担心OVSDB只是叫DB而已,其实它更像etcd、zookeeper这种中间件)。
NB存放的是我们定义的逻辑交换机
、逻辑路由器
之类的数据,
我们可以通过ovn
提供的命令行
(ovn-nbctl)完成添加
、删除
、修改
、查询
等操作;
当然可以写代码通过OVSDB协议完成类似动作。
OVN的NB是面向“上层应用”的或者叫“云管平台(Cloud Management System,CMS)”所以叫“北向接口”。
SB进程比较特殊它同时接受两边
的“写入”,
首先是运行在ovn-host上的ovn-controller启动之后
会去
主动
连接到ovn-central节点上的SB进程
,把自己的
IP地址(Chassis)
,本机的`OVS状态(Datapath_Binding)
写入到
SB数据库中(所以叫南向接口)。 ovn-controller还“监听”(etcd、zookeeper类似的功能)SB数据库中
流表的
变化(Flow)去更新本地的OVS数据库,这叫“
流表下发`”。
SB中的流表是由运行在ovn-central节点上的ovn-northd
进程修改的,ovn-northd会“监听”NB的改变,把逻辑交换机
、路由器
的定义转换
成流表(Flow)写入到SB数据库
。
整个架构非常简单
,
OVN仅仅提供了一组网络模型
(逻辑交换机、逻辑路由器等),
提供了一个OVSDB数据库
用来存放这些模型
同时把数据库的访问权限
开放给最终用户
,
让最终用户通过OVSDB协议来直接“写入”这些模型(北向)。
3、ovn-northd的作用?
通过一个叫ovn-northd的进程
- 把
网络模型
转换成流表
, 放入另一个数据库 - 让
ovn-host
自己来“取
”流表(南向),
以此完成
流表下发
。