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