Adding remote server to OVN network

I have been trying to add a remote server to an OVN network, I think I am very close, but just cannot seem to make it work.

So I have an Incus installation on 10.0.1.30 which has a configured ovn network (ovn1, 10.137.5.0/24). I have exposed the northbridge and southbridge server ports, and for now all encryption is disabled.

I wish to add the ‘remote’ server 10.0.1.31 to that network with the address 10.137.5.100.

(This is a proof of concept, in reality the remote server will be connected via a relatively low bandwidth/higher latency link, so it is not suitable to create a cluster.)

I have set /etc/defaults/ovn-central on the remote server to:

OVN_CTL_OPTS="--ovn-northd-sb-db=tcp:10.0.1.30:6642 --ovn-northd-nb-db=tcp:10.0.1.30:6641"

On the remote I have connected the switch using:

ovs-vsctl set open_vswitch . external_ids:ovn-remote=tcp:10.0.1.30:6642 external_ids:ovn-encap-type=geneve external_ids:ovn-encap-ip=10.0.1.31

The ‘chassis’ shows up on the Incus server:

Chassis "04ce9ab0-0249-424b-88c6-463407f20b83"
    hostname: incus1
    Encap geneve
        ip: "127.0.0.1"
        options: {csum="true"}
    Port_Binding cr-incus-net6-lr-lrp-ext
    Port_Binding incus-net6-instance-099efabb-6a5d-40a2-857e-c68f5bfe169a-eth0
Chassis "eaa90051-5b84-4ad6-befc-660927a9e205"
    hostname: remote
    Encap geneve
        ip: "10.0.1.31"
        options: {csum="true"}

On the Incus server I have created a new port on the internal switch:

ovn-nbctl lsp-add incus-net6-ls-int extprt

Then on the remote I configure an interface:

ovs-vsctl add-port br-int extprt -- set interface extprt type=internal 
ip link set extprt up
ovs-vsctl set interface extprt external_ids:iface-id=extprt

After doing this (and possibly running ovn-sbctl lsp-bind extprt eaa90051-5b84-4ad6-befc-660927a9e205 on the Incus server, not sure if it made a difference), the ovn-sbctl show command shows:

Chassis "04ce9ab0-0249-424b-88c6-463407f20b83"
    hostname: incus1
    Encap geneve
        ip: "127.0.0.1"
        options: {csum="true"}
    Port_Binding cr-incus-net6-lr-lrp-ext
    Port_Binding incus-net6-instance-099efabb-6a5d-40a2-857e-c68f5bfe169a-eth0
Chassis "eaa90051-5b84-4ad6-befc-660927a9e205"
    hostname: incus2
    Encap geneve
        ip: "10.0.1.31"
        options: {csum="true"}
    Port_Binding extprt

(With Port_Binding extprt now set).

ovn-nbctl lsp-get-up extprt on the Incus service returns ‘up’.

I have then set the ip address of exprt on the remote to 10.137.5.100/24 and then from a container on the ovn1 network I attempt to point that address.

I have attempted to set the address on the server end using ovn-nbctl lsp-set-addresses extprt "1e:5d:bc:ed:52:6f static:10.137.5.100" (with various mac addresses for the br-int, through to the extprt interface).

I can see traffic appearing on the remote using tcpdump, however in /var/log/openvswitch/ovs-vswitchd.log I get:

2025-05-22T12:47:02.808Z|00090|ofproto_dpif_upcall(handler6)|INFO|received packet on unassociated datapath port 3 (no OpenFlow tunnel port for this packet)
2025-05-22T13:08:04.423Z|00091|tunnel(handler6)|WARN|Dropped 19 log messages in last 1262 seconds (most recently, 1252 seconds ago) due to excessive rate
2025-05-22T13:08:04.423Z|00092|tunnel(handler6)|WARN|receive tunnel port not found (icmp6,tun_id=0x3,tun_src=10.0.1.30,tun_dst=10.0.1.31,tun_ipv6_src=::,tun_ipv6_dst=::,tun_gbp_id=0,tun_gbp_flags=0,tun_tos=0,tun_ttl=64,tun_erspan_ver=0,gtpu_flags=0,gtpu_msgtype=0,tun_flags=csum|key,in_port=3,vlan_tci=0x0000,dl_src=10:66:6a:cb:03:81,dl_dst=33:33:00:00:00:02,ipv6_src=fe80::1266:6aff:fecb:381,ipv6_dst=ff02::2,ipv6_label=0x695b5,nw_tos=0,nw_ecn=0,nw_ttl=255,nw_frag=no,icmp_type=133,icmp_code=0)
2025-05-22T13:08:04.423Z|00093|ofproto_dpif_upcall(handler6)|INFO|Dropped 9 log messages in last 1261 seconds (most recently, 1253 seconds ago) due to excessive rate
2025-05-22T13:08:04.423Z|00094|ofproto_dpif_upcall(handler6)|INFO|received packet on unassociated datapath port 3 (no OpenFlow tunnel port for this packet)

If I throw individual packets from the Incus instance on 10.137.5.2 to 10.137.5.100 I can see the system attempting to find the endpoint:

14:12:20.887233 IP 10.0.1.30.10023 > 10.0.1.31.6081: Geneve, Flags [C], vni 0x3, options [8 bytes]: ARP, Request who-has 10.137.5.100 tell 10.137.5.2, length 28

But its not coming together!

Does anyone have any thoughts? I have not been able to find examples of anyone doing the same - but I could have easily missed something.

Many thanks,

  • Martyn