[OVSDB-222] Periodic ARP resolver is missing calls to NeutronL3Adapter::updateExternalRouterMac() Created: 05/Nov/15  Updated: 19/Oct/17  Resolved: 12/Jan/16

Status: Resolved
Project: ovsdb
Component/s: openstack.net-virt
Affects Version/s: unspecified
Fix Version/s: None

Type: Bug
Reporter: Flavio Fernandes Assignee: Unassigned
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


External issue ID: 4579

 Description   

From: Andre Fredette <afredette@redhat.com>
Date: Thu, Nov 5, 2015 at 7:34 AM
Subject: Re: updateExternalRouterMac(externalRouterMacUpdate) in NeutronL3Adapter
To: Flavio Fernandes <ffernand@redhat.com>
Cc: Anil Vishnoi <vishnoianil@gmail.com>

FYI, I noticed this when trying out Badri's change that enables ODL to add the external port to brex.

With his change, the port isn't there initially, so the first ARP fails, and NeutronL3Adapter ends up installing the IPRewrite flows using the DEFAULT_EXT_RTR_MAC = "00:00:5E:00:01:01" instead of the real MAC address.

After a while, the external port gets added, and GatewayMacResolverService resolves the MAC address, but it never gets back to NeutronL3Adapter, so the flows aren't updated with the right MAC address.

Andre

On Wed, Nov 4, 2015 at 4:26 PM, Flavio Fernandes <ffernand@redhat.com> wrote:
>
> Hi Anil,
>
> Andre and I are looking at a piece of the periodic arp resolver code,
> where it should be calling updateExternalRouterMac() when mac changes
> at a later time.
>
> It seems that the code is called in "triggerGatewayMacResolver", but only once.
>
> Can you tell us how you envisioned for updateExternalRouterMac() to be
> called when
> we are in "GatewayMacResolverService::onPacketReceived()" and the mac
> is changed?
>
> It looks that that "setGatewayMacAddress()" should be queuing an event
> that percolates
> back to the NeutronL3Adapter, right?
>
> I will open a bug on this, if you think that is a good idea.
>
> Thanks,
>
> – flavio



 Comments   
Comment by Flavio Fernandes [ 05/Nov/15 ]

From: Anil Vishnoi <vishnoianil@gmail.com>
Date: Thu, Nov 5, 2015 at 7:30 AM
Subject: Re: updateExternalRouterMac(externalRouterMacUpdate) in NeutronL3Adapter
To: Flavio Fernandes <ffernand@redhat.com>
Cc: Andre Fredette <afredette@redhat.com>

Hi Flavio,

On Thu, Nov 5, 2015 at 2:56 AM, Flavio Fernandes <ffernand@redhat.com> wrote:
>
> Hi Anil,
>
> Andre and I are looking at a piece of the periodic arp resolver code,
> where it should be calling updateExternalRouterMac() when mac changes
> at a later time.
>
> It seems that the code is called in "triggerGatewayMacResolver", but only once.

or when it receives the next NeutronPort event for router gateway

>
>
> Can you tell us how you envisioned for updateExternalRouterMac() to be
> called when
> we are in "GatewayMacResolverService::onPacketReceived()" and the mac
> is changed?

I think we need to define an listener interface in netvirt & NeutronL3Adaptor.java should implement the listener interface. GatewayMacResolvedService should
should call all the listener whenever the resolved mac address is different then the previously resolved mac address.
>
>
> It looks that that "
> setGatewayMacAddress()" should be queuing an event
> that
> percolates
> back to the NeutronL3Adapter, right?

Yes, and we will need the above mentioned listener interface for that.

Comment by Flavio Fernandes [ 12/Dec/15 ]

Gerrits under review:

master: https://git.opendaylight.org/gerrit/#/c/31222/
lithium: https://git.opendaylight.org/gerrit/#/c/31067/

Generated at Wed Feb 07 20:35:49 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.