Get IPs of OVN routers from DHCP

Hi there,

I am trying to get an OVN network working on a single host. I have an unmannaged bridge (let us call it br0) that is connected to my LAN network and it is working normally. I can connect containers and VMs to it and they get addresses from my DHCP server. I wanted to isolate some of my containers and get them to work on a separate virtual network using OVN.

What I did is attach a physical interface (UPLINK), with parent being br0. Then I created an OVN network (ovntest) with the UPLINK as its network.

incus network create UPLINK --type=physical parent=br0
incus network create ovntest --type=ovn network=UPLINK

Both networks are created without a problem. My guess was that by doing this OVN virtual networks will get ‘external’ IPs from my home network and then I will be able to statically route certain subnets to a specific OVN network. However, the networks never get a volatile.network.ipv4.address, as they do if I use a managed bridge as an uplink, and I have no connection outside of the ovn network. Which is understandable given that there is no addressing.

user@machine:~$ incus network show ovntest
config:
  bridge.mtu: "1500"
  ipv4.address: 10.13.126.1/24
  ipv4.nat: "true"
  network: UPLINK
description: ""
name: ovntest
type: ovn
used_by:
- /1.0/instances/starter-kit?project=default
- /1.0/profiles/ovntest
managed: true
status: Created
locations:
- none
project: default

I went through the documentation of the OVN and Physical network types but I could find any config keys that I can change so that this setup might work.

So my question is am I missing something or am I complete misinterpreting how OVN and uplink networks work?

Here is the configuration of the bridge and the UPLINK as well

user@machine:~$ incus network show br0
config: {}
description: ""
name: br0
type: bridge
used_by:
- /1.0/instances/bastion-01
- /1.0/instances/unbound-test
- /1.0/networks/UPLINK
- /1.0/profiles/default
- /1.0/profiles/home
managed: false
status: ""
locations: []
project: default

user@machine:~$ incus network show UPLINK
config:
  parent: br0
  volatile.last_state.created: "false"
description: ""
name: UPLINK
type: physical
used_by:
- /1.0/networks/ovntest
- /1.0/networks/ovntest02
managed: true
status: Created
locations:
- none
project: default

That’s because you didn’t configure your UPLINK network.

Given it’s not a network that it manages itself, you need to tell it what the gateway, DNS and usable OVN range is by setting those config keys. Once that’s done, networks created with that network as the uplink will get IPs assigned.

You at least need to set:

  • ipv4.gateway
  • ipv6.ovn.ranges
  • dns.nameservers

It worked. Thank you very much for the clarification!