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
