
0x00️⃣ 起因
事情的起因是,客户的场景没有ovnController, 并且结合了SRIOV/DPDK的场景。但是没有见过所以用此文记录一下其中的详情。
因为场景是RHOSO,首先要明确以下概念
1 | Neutron network --+-- 东西流量 private network (tenant network) |
- 东西流量是指 instance-instance 流量
- 南北流量是指 instance-external 流量 — 本文重点
0x01️⃣ 北向中 OVN Controller 的工作类型
- 有ovnController — 连接instance需要通过OVN Gateway等组件转发到二层网络
- 无ovnController — 连接instance需要通过provider network例如BGP等二层网络
而进一步细分的话
1 | neutron network --+-- private network (tenant network) |
- 有ovnController
- OCP 节点作为OVN Gateway,则OVN controller需要运行在OCP节点

1
2
3
4
5
6
7
8
9
10
11
12https://docs.redhat.com/en/documentation/red_hat_openstack_services_on_openshift/18.0/html/configuring_networking_services/configuring-ovn-gateways_rhoso-cfgnet#ovn-gateway-ctrl-plane-dedicated-nic_configuring-gateways
ovnController:
spec:
...
ovn:
template:
ovnController:
networkAttachment: tenant
nicMappings:
<network_name: nic_name> - 单独的networker node作为 OVN Gateway, 则需要额外部署Network nodes

1
2
3
4
5
6
7
8
9
10
11
12
13Chapter 5. Configuring Networker nodes | Configuring networking services | Red Hat OpenStack Services on OpenShift | 18.0 | Red Hat Documentation
https://docs.redhat.com/en/documentation/red_hat_openstack_services_on_openshift/18.0/html/configuring_networking_services/configure-networker-nodes_rhoso-cfgnet#proc_creating-an-OpenStackDataPlaneNodeSet-CR-networker-preprovisioned_networkers
apiVersion: dataplane.openstack.org/v1beta1
kind: OpenStackDataPlaneNodeSet
metadata:
name: networker-nodes
namespace: openstack
spec:
env:
- name: ANSIBLE_FORCE_COLOR
value: "True"
- 无ovnController
1
2
3https://docs.redhat.com/en/documentation/red_hat_openstack_services_on_openshift/18.0/html/configuring_networking_services/configuring-ovn-gateways_rhoso-cfgnet#ovn-gateway-ctrlplane-none_configuring-gateways
移除所有ovnController内容
0x02️⃣ 南向中 neutron 的使用
较为复杂的北向结构探讨完了,以下是南向的一些情况
1 | neutron network --+-- private network (tenant network) 1 |
从上到下,创建它们的命令如下网络
1 | [1] |
1 | [2] |
1 | [3] |
0x03️⃣ 结语
对OVN的整体架构有了更深刻的认知。