Thanks, applied the patch.

On Wed, 9 Sep 2015 10:15:32 +0900
Toshiki Tsuboi <[email protected]> wrote:

> Hi
> 
> It’s working fine in case of iBGP peering
> 
>                  (static)                iBGP
>      ------- R1 ----------- RyuBGP ---------> R2
> x.x.x.x/x  y.y.y.y          z.z.z.z        => UPDATE(Nexthop: z.z.z.z)
> 
> 
> Thanks
> 
> 
>> 2015/09/08 21:19、ISHIDA Wataru <[email protected]> のメール:
>> 
>> Hi tsuboi-san,
>> 
>> Could you try the patch I've sent now ?
>> 
>> Note: please specify is_next_hop_self=True when adding iBGP neighbor.
>> 
>> Thanks,
>> 
>>> -----Original Message-----
>>> From: ISHIDA Wataru [mailto:[email protected]]
>>> Sent: Tuesday, September 08, 2015 9:13 PM
>>> To: [email protected]
>>> Cc: ISHIDA Wataru
>>> Subject: [PATCH] bgp: enable nexthop_self for locally generated routes
>>> 
>>> Signed-off-by: ISHIDA Wataru <[email protected]>
>>> ---
>>> ryu/services/protocols/bgp/peer.py | 20 +++++++-------------
>>> 1 file changed, 7 insertions(+), 13 deletions(-)
>>> 
>>> diff --git a/ryu/services/protocols/bgp/peer.py
>>> b/ryu/services/protocols/bgp/peer.py
>>> index 67ba85c..c8eae4b 100644
>>> --- a/ryu/services/protocols/bgp/peer.py
>>> +++ b/ryu/services/protocols/bgp/peer.py
>>> @@ -851,24 +851,18 @@ class Peer(Source, Sink, NeighborConfListener,
>>> Activity):
>>>             nlri_list = [path.nlri]
>>> 
>>>             # By default we use BGPS's interface IP with this peer as
>>> next_hop.
>>> -            next_hop = self._session_next_hop(path)
>>> -            if path.is_local() and path.has_nexthop():
>>> +            if self.is_ebgp_peer():
>>> +                next_hop = self._session_next_hop(path)
>>> +                if path.is_local() and path.has_nexthop():
>>> +                    next_hop = path.nexthop
>>> +            else:
>>>                 next_hop = path.nexthop
>>> -
>>> -            # If this is a iBGP peer.
>>> -            if not self.is_ebgp_peer() and not path.is_local():
>>> -                # If the path came from a bgp peer and not from NC,
>>> according
>>> -                # to RFC 4271 we should not modify next_hop.
>>> -                # However RFC 4271 allows us to change next_hop
>>> +                # RFC 4271 allows us to change next_hop
>>>                 # if configured to announce its own ip address.
>>>                 if self._neigh_conf.is_next_hop_self:
>>> -                    next_hop = self.host_bind_ip
>>> -                    if path.route_family == RF_IPv6_VPN:
>>> -                        next_hop = self._ipv4_mapped_ipv6(next_hop)
>>> +                    next_hop = self._session_next_hop(path)
>>>                     LOG.debug('using %s as a next_hop address instead'
>>>                               ' of path.nexthop %s', next_hop,
>>> path.nexthop)
>>> -                else:
>>> -                    next_hop = path.nexthop
>>> 
>>>             nexthop_attr = BGPPathAttributeNextHop(next_hop)
>>>             assert nexthop_attr, 'Missing NEXTHOP mandatory attribute.'
>>> --
>>> 1.9.1
>> 
>> 
>> 
> 
> 
> ------------------------------------------------------------------------------
> Monitor Your Dynamic Infrastructure at Any Scale With Datadog!
> Get real-time metrics from all of your servers, apps and tools
> in one place.
> SourceForge users - Click here to start your Free Trial of Datadog now!
> http://pubads.g.doubleclick.net/gampad/clk?id=241902991&iu=/4140
> _______________________________________________
> Ryu-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/ryu-devel
> 

------------------------------------------------------------------------------
Monitor Your Dynamic Infrastructure at Any Scale With Datadog!
Get real-time metrics from all of your servers, apps and tools
in one place.
SourceForge users - Click here to start your Free Trial of Datadog now!
http://pubads.g.doubleclick.net/gampad/clk?id=241902991&iu=/4140
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to