[ovs-dev] [PATCH v6] ovn: Allow for automatic dynamic updates of IPAM

Jakub Sitnicki jkbs at redhat.com
Thu Aug 2 12:48:34 UTC 2018


Hi Mark,

On Thu,  2 Aug 2018 08:18:12 -0400
Mark Michelson <mmichels at redhat.com> wrote:

> OVN offers a method of IP address management that allows for an IPv4
> subnet or IPv6 prefix to be specified on a logical switch. Then by
> specifying a switch port's address as "dynamic" or "<mac address>
> dynamic", OVN will automatically assign addresses to the switch port.
> 
> While this works great for initial assignment of addresses, addresses
> do not automatically adjust when changes are made to the switch's
> configuration. For instance:
> * If the subnet, ipv6_prefix, or exclude_ips for a logical switch
> changes, the affected switch ports are not updated.
> * If a switch port with a static IP address is added to the switch,
> and that address conflicts with a dynamically assigned IP address, the
> dynamic address is not updated.
> * If a MAC address switched from being statically assigned to
> dynamically assigned, the MAC address would not be updated.
> * If a statically assigned MAC address changed, then the IPv6 address
> would not be updated.
> 
> This patch solves all of the above issues by changing the algorithm
> for IPAM assignment. There are essentially three steps.
> 1) While joining logical ports, all statically-assigned addresses
> (i.e. any ports without "dynamic" addresses) have their addresses
> registered to IPAM. This gives them top priority.
> 2) All logical ports with dynamic addresses are inspected. Any changes
> that must be made to the addresses are collected to be made later. Any
> addresses that do not require change are registered to IPAM. This
> allows for previously assigned dynamic addresses to be kept.
> 3) All gathered changes are enacted.
> 
> The change contains new tests that ensure that dynamic addresses are
> updated when appropriate.
> 
> This patch also alters some existing IPAM tests. Those tests assumed
> that dynamic addresses would not be updated automatically, so those
> tests either had to be altered or removed.
> 
> Signed-off-by: Mark Michelson <mmichels at redhat.com>
> Acked-by: Jakub Sitnicki <jkbs at redhat.com>
> ---
> v5->v6:
>  * Rebased
> 
> v4->v5:
>  Cleanups suggested by Jakub Sitnicki + rebase
>  * Add some convenience pointers for shortened code.
>  * Separate checking of updates of dynamic addresses and registration
>    of unchanged addresses.
>  * Use OVS_NOT_REACHED() instead of ovs_assert(0)
> 
> v3->v4:
>  Print warning when multiple dynamic addresses are configured on a
>  switch port. Ensure that dynamic addresses beyond the first on a
> switch port are ignored. Found by Ben Pfaff.
> 
> v2->v3:
>  Fixed a checkpatch problem (line too long)
> 
> v1->v2:
>  Rebased
> ---

Recent fix pushed to master, 4d0214a365ae ("ovn: Fix typos in "ovn --
Address Set generation... test."), will cause the following test to
fail with this patch applied:

2578: ovn -- Address Set generation from Port Groups (dynamic addressing)

To fix the test you need to revert the mentioned commit and squash the
diff with your changes.

Thanks,
Jakub


More information about the dev mailing list