[ovs-dev] [PATCH] OVN: Add port addresses to IPAM after all ports are joined.
Ben Pfaff
blp at ovn.org
Wed Mar 6 22:29:09 UTC 2019
Thanks, applied and backported.
On Wed, Mar 06, 2019 at 09:34:14AM -0500, Mark Michelson wrote:
> This will require backporting to 2.11
>
> On 3/6/19 9:33 AM, Mark Michelson wrote:
> > Joining ports involves setting the peer field on ovn_ports. If a switch
> > port is visited, and it is connected to a router port, then the switch
> > port's peer is set to the router port and the router port's peer is set
> > to the switch port.
> >
> > A router port's addresses are added to IPAM if it is peered with a
> > switch that has dynamic addressing enabled.
> >
> > When visiting ports, if a router port is visited before its connected
> > switch port, then the router port's peer is not set yet. Therefore the
> > router's port addresses cannot be added to IPAM. The result is that
> > duplicate addresses can be assigned by a logical switch.
> >
> > The fix for this is to wait until all ports have been joined and then
> > add port addresses to IPAM. This way, we guarantee that all peer
> > assignments have been set, and no duplicate IP addresses may be assigned
> > by a switch.
> >
> > Reported-by: James Page <james.page at canonical.com>
> > Signed-off-by: Mark Michelson <mmichels at redhat.com>
> > ---
> > ovn/northd/ovn-northd.c | 5 +++++
> > 1 file changed, 5 insertions(+)
> >
> > diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c
> > index 3569ea2be..a9de366fb 100644
> > --- a/ovn/northd/ovn-northd.c
> > +++ b/ovn/northd/ovn-northd.c
> > @@ -1829,7 +1829,12 @@ join_logical_ports(struct northd_context *ctx,
> > }
> > }
> > }
> > + }
> > + /* Wait until all ports have been connected to add to IPAM since
> > + * it relies on proper peers to be set
> > + */
> > + HMAP_FOR_EACH (op, key_node, ports) {
> > ipam_add_port_addresses(op->od, op);
> > }
> > }
> >
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
More information about the dev
mailing list