OVN Base flow L2/L3 forwarding
OVN 支持分布式逻辑路由器,每个计算节点都有逻辑路由器的实例,模型和 neutron 的 DVR 类似。OVN 目前只实现了一些基本的路由功能,比如路由查找,路由报文的转发还有动态 ARP,路由类型只支持直连路由,静态路由,动态路由没有计划支持。
OVN 为每个 router interface 创建一对 OVS patch port,一个 patch port 连 logical switch,另一个连 logical router,和传统网络的拓扑一致。如下图所示,logical router 有两个 interface 分别连 network1 和 network2,OVN 为每个 router interface 创建一对 OVS patch port,一个接 logical router,另外一个接 network 对应的 logical switch。
OVN 路由实验逻辑网络拓扑,如下图:
下面通过分析 br-int 里面的这些 flow 来描述 OVN 的路由功能,分析 flow 之前需要先了解 OVN 里面用到的一些特殊的 Openflow 字段:
- Metadata:这个字段保存的是 logical datapath identifier,每个 switch 和 router 都对应唯一的一个 logical datapath identifer,它保存在 Southbound DB 里面的表 Datapath_Binding 的列 tunnel_key 里,由 ovn-northd 统一分配。进入相同 switch 或者 router 里的报文的 metadata 的值相同。
-
Nicira extensive register 14(reg14):这个字段里面保存的是 logical input port identifier,每个 neutron port 对应一个 logical input port identifier,它保存在 Southbound DB 里面的表 Port_Binding 的列 tunnel_key 里,由 ovn-northd 统一分配,在每个 logical datapath 里唯一。从相同端口进入 br-int 里的报文的 reg14 的值相同。
-
Nicira extensive register15(reg15): reg14 在 Openflow ingress pipeline 被赋值和使用, reg15 是在 Openflow egress pipeline 被赋值和使用。
执行pipeline期间Regxx代表的意义如下(openvswitch 2.6.0):
Flow table与功能对应关系,如下表:
OVN Working Pipeline 如下:
参考文档:
http://www.ibm.com/developerworks/cn/cloud/library/1605-ovn-introduction/index.html
http://blog.spinhirne.com/2016/09/an-introduction-to-ovn-routing.html