ovn Northbound DB

Northbound DB 是 OVN 和 CMS(比如openstack) 之间的接口。CMS产生Northbound DB 里面的几乎所有的内容。ovn-northd 监听这个数据库的内容变化,然后转换并保存到 Southbound DB 里面。

Northbound DB中有将近二十张表,下面介绍下在前面实验中用到的一些表,更详细的参考ovn-nb

  1. Logical_Switch: 每行代表一个二层逻辑交换机。有两种类型的逻辑交换机,一种是全虚拟化网络,也叫overlay逻辑交换机,另一种用来和物理网络连接,称为桥接逻辑交换机。如果用来连接同chassis上的逻辑端口,这两种交换机的工作方式是一样的,但是如果用来连接不同chassis上的逻辑端口,方式就不一样了。overlay逻辑交换机通过隧道来连接远端逻辑端口,而桥接逻辑交换机在localnet类型端口的帮助下,直接通过物理网络连接远端逻辑端口。每个桥接逻辑交换机有一个或者多个localnet类型的端口,此类型端口的地址类型为unknown。在它上面可以配置acl,qos和load balancer等功能。
  2. Logical_Switch_Port: 每行代表一个逻辑交换机端口。
    type字段: 如果type为空,则表示一个VM接口,如果type为router,则表示连接的是逻辑路由器;如果type为localnet,则表示连接外部网络(可能会绑定到多个chassis);如果类型为l2gateway,则表示连接外部网络(只能绑定到指定chassis上);等等
    up字段:此字段由ovn-northd修改,而不是CMS。如果逻辑端口绑定到了物理位置(Southbound DB中port_binding表up字段为true ),ovn-northd就会设置up字段为true。CMS通过此字段用来等待VM网络变成可用后,再启动VM。但是有一个例外,如果端口类型为router,这up字段永远是true。
  3. Logical_Router: 每行代表一个三层逻辑路由器。在它上面可以配置静态路由,策略,nat和load balancer功能。它是在每个chassis上存在的,通过openflow流表实现。但是有一个例外,如果它通过chassis选项绑定指定了指定chassis,则它就变为网关路由器。
  4. Logical_Router_Port: Logical_Router上的端口,每行代表一个逻辑路由器端口。通过networks指定它的网段。还能通过ha_chassis_group或者gateway_chassis将它设置为分布式网关端口。
  5. Gateway_Chassis: 用来关联到逻辑路由端口,实现分布式网关端口。发送到分布式网关端口的流量会被重定向到关联的chassis,可以设置多行,即多个chassis,同时指定优先级,优先级最高的生效。
  6. HA_Chassis_Group: 每行代表一组chassis,这组chassis用来提供高可用。组里面的每个chassis使用另一个table HA_Chassis来表示。也是用来关联到逻辑路由端口,实现分布式网关端口。
  7. HA_Chassis: HA_Chassis_Group组里面的chassis,每行表示一个chassis,同时可以通过priority指定此chassis的优先级。
  8. Load_Balancer : 每行代表一个load balancer。可以应用在逻辑交换机和路由器上。
  9. ACL: 每行代表一个acl规则。可以应用在逻辑交换机和port group上。
  10. NAT : 每行代表一个nat规则。可以应用在逻辑路由器上。
  11. DHCP_Options : 用来响应VM的DHCP请求。

相关命令行示例,可以参考ovn-nbctl。
可以使用ovn-nbctl封装好的命令,也可以直接操作数据库。
比如添加一个逻辑交换机

ovn-nbctl ls-add ls1 或者
ovn-nbctl create Logical_Switch  name=ls1

添加逻辑交换机端口

ovn-nbctl lsp-add ls1 port1

添加逻辑路由器

ovn-nbctl lr-add lr1

添加逻辑路由器端口

ovn-nbctl lrp-add lr1 port1

添加acl规则,并应用到逻辑交换机ls1上

ovn-nbctl acl-add ls1 to-lport 0 'outport == "ls1-vm1" && ip' drop

添加nat规则,并应用到逻辑路由器lr1上

ovn-nbctl -- --id=@nat create nat type="snat" logical_ip=10.10.10.0/24 external_ip=10.10.40.1 -- add logical_router lr1 nat @nat

添加load balancer规则,并应用到逻辑路由器lr1上

ovn-nbctl lb-add lb1 10.10.40.4:8000 "10.10.10.2:8000,10.10.10.3:8000" tcp
ovn-nbctl lr-lb-add lr1 lb1

你可能感兴趣的:(ovn Northbound DB)