[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openvswitch-discuss
Subject:    [ovs-discuss] RSTP crash in Open vSwitch
From:       daniele.venturino () m3s ! it (Daniele Venturino)
Date:       2015-09-30 21:19:46
Message-ID: 1B1F7D8E-CA78-4629-9529-32494F30572B () m3s ! it
[Download RAW message or body]

Sorry, I was speaking of changing set_rstp_port() of course.
Anyway, my concerns on those additions remain.

Daniele


> Il giorno 30/set/2015, alle ore 23:00, Daniele Venturino <daniele.venturino at \
> m3s.it> ha scritto: 
> Hi Jarno,
> I've seen your patch and although your suggestions look reasonable, I fear changing \
> rstp_unref() like that. The reason is that I no longer have access to the IXIA \
> validation suite and all these calls: rstp_port_set_aux(rp, NULL);
> rstp_port_set_state(rp, RSTP_DISABLED);
> rstp_port_set_mac_operational(rp, false);
> update_rstp_port_state(of port);
> might have a strong effect on the behavior of the protocol that I can't test as I'd \
> like to. 
> For this reason I, like you, would like to know if Daniel tried my patch alone, \
> since it introduces only an initialization and a check on old_root_aux and \
> new_root_aux. 
> Daniele
> 
> > Il giorno 30/set/2015, alle ore 22:50, Jarno Rajahalme <jrajahalme at nicira.com \
> > <mailto:jrajahalme at nicira.com>> ha scritto: 
> > Daniele,
> > 
> > Could you review my patch (in combination with yours), i.e., reply with an \
> > Acked-by: if you think it is necessary, or reason why it is not needed or is not \
> > sufficient. 
> > Regards,
> > 
> > Jarno
> > 
> > > On Sep 30, 2015, at 1:54 AM, Daniele Venturino <daniele.venturino at m3s.it \
> > > <mailto:daniele.venturino at m3s.it>> wrote: 
> > > I tried the commands you listed but I was not able to reproduce this in a \
> > > simpler setup only with RSTP enabled on the bridge. 
> > > I'm attaching a patch I'd like you to try. I'm not really expecting much from \
> > > it, but can you give it a try since I can't reproduce this? 
> > > Daniele
> > > 
> > > <0001-ofproto-dpif-Add-check-in-rstp_run.patch>
> > > 
> > > > Il giorno 30/set/2015, alle ore 10:12, Daniel Swahn <daniel.swahn at \
> > > > clavister.com <mailto:daniel.swahn at clavister.com>> ha scritto: 
> > > > I tested with the patch but unfortunately the same crash occurs.
> > > > 
> > > > -----Original Message-----
> > > > From: Jarno Rajahalme [mailto:jrajahalme at nicira.com <mailto:jrajahalme at \
> > > >                 nicira.com>] 
> > > > Sent: 2015-09-29 23:10
> > > > To: Ben Pfaff
> > > > Cc: Daniel Swahn; Daniele Venturino; bugs at openvswitch.org <mailto:bugs at \
> > > >                 openvswitch.org>
> > > > Subject: Re: [ovs-discuss] RSTP crash in Open vSwitch
> > > > 
> > > > 
> > > > > On Sep 28, 2015, at 9:13 PM, Ben Pfaff <blp at nicira.com <mailto:blp at \
> > > > > nicira.com>> wrote: 
> > > > > On Wed, Sep 23, 2015 at 11:31:31AM +0000, Daniel Swahn wrote:
> > > > > > (gdb) frame 0
> > > > > > #0  0x00000000004291ca in rstp_run (ofproto=<optimized out>, \
> > > > > > ofproto=<optimized out>) at ofproto/ofproto-dpif.c:2278 2278              \
> > > > > > bundle_move(((struct ofport_dpif \
> > > > > > *)rstp_get_old_root_aux(ofproto->rstp))->bundle,
> > > > > 
> > > > > Thanks for the report.
> > > > > 
> > > > > Jarno and Daniele, the code around line 2278 in v2.4.0 is this:
> > > > > 
> > > > > if (rstp_shift_root_learned_address(ofproto->rstp)) {
> > > > > bundle_move(((struct ofport_dpif \
> > > > > *)rstp_get_old_root_aux(ofproto->rstp))->bundle, ((struct ofport_dpif \
> > > > > *)rstp_get_new_root_aux(ofproto->rstp))->bundle); \
> > > > > rstp_reset_root_changed(ofproto->rstp); }
> > > > > 
> > > > > Looking at lib/rstp*.[ch], I see some code that sets 'old_root_aux' 
> > > > > and 'new_root_aux'.  I don't see any code that clears them or updates 
> > > > > them if something happens to invalidate them (that is, if a port gets 
> > > > > deleted or if its aux gets updated).  I suspect that this may be the 
> > > > > problem here.
> > > > > 
> > > > > Jarno or Daniele, can you confirm this?
> > > > 
> > > > I looked into this, and it may be that we fail to move the RSTP state machine \
> > > > when removing a port. In rstp_port_unref(), we are setting the port state to \
> > > > RSTP_DISABLED, but are then removing and freeing the port without triggering \
> > > > any change in the RSTP state machine, so if this port was the root, the root \
> > > > aux would still point to the deleted ofport. 
> > > > Maybe this would help:
> > > > 
> > > 
> > 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://openvswitch.org/pipermail/discuss/attachments/20150930/ca0d397a/attachment.html>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic