On Mon, 7 Nov 2016 16:04:23 +0900 IWASE Yusuke <iwase.yusu...@gmail.com> wrote:
> This patch enables BGPSpeaker to set the capability for IPv6 unicast > address family. > > Signed-off-by: IWASE Yusuke <iwase.yusu...@gmail.com> > --- > ryu/services/protocols/bgp/bgp_sample_conf.py | 32 > ++++++++++++++++++++++----- > ryu/services/protocols/bgp/bgpspeaker.py | 26 +++++++++------------- > ryu/tests/integrated/common/ryubgp.py | 11 +++++---- > 3 files changed, 42 insertions(+), 27 deletions(-) > snip > diff --git a/ryu/services/protocols/bgp/bgpspeaker.py > b/ryu/services/protocols/bgp/bgpspeaker.py > index 4934e41..9e30d3e 100644 > --- a/ryu/services/protocols/bgp/bgpspeaker.py > +++ b/ryu/services/protocols/bgp/bgpspeaker.py > @@ -64,6 +64,7 @@ from ryu.services.protocols.bgp.rtconf.base import > CAP_FOUR_OCTET_AS_NUMBER > from ryu.services.protocols.bgp.rtconf.base import MULTI_EXIT_DISC > from ryu.services.protocols.bgp.rtconf.base import SITE_OF_ORIGINS > from ryu.services.protocols.bgp.rtconf.neighbors import DEFAULT_CAP_MBGP_IPV4 > +from ryu.services.protocols.bgp.rtconf.neighbors import DEFAULT_CAP_MBGP_IPV6 > from ryu.services.protocols.bgp.rtconf.neighbors import > DEFAULT_CAP_MBGP_VPNV4 > from ryu.services.protocols.bgp.rtconf.neighbors import > DEFAULT_CAP_MBGP_VPNV6 > from ryu.services.protocols.bgp.rtconf.neighbors import DEFAULT_CAP_MBGP_EVPN > @@ -289,6 +290,7 @@ class BGPSpeaker(object): > > def neighbor_add(self, address, remote_as, > enable_ipv4=DEFAULT_CAP_MBGP_IPV4, > + enable_ipv6=DEFAULT_CAP_MBGP_IPV6, > enable_vpnv4=DEFAULT_CAP_MBGP_VPNV4, > enable_vpnv6=DEFAULT_CAP_MBGP_VPNV6, > enable_evpn=DEFAULT_CAP_MBGP_EVPN, > @@ -313,6 +315,9 @@ class BGPSpeaker(object): > ``enable_ipv4`` enables IPv4 address family for this > neighbor. The default is True. > > + ``enable_ipv6`` enables IPv6 address family for this > + neighbor. The default is False. > + > ``enable_vpnv4`` enables VPNv4 address family for this > neighbor. The default is False. > > @@ -371,23 +376,12 @@ class BGPSpeaker(object): > CONNECT_MODE: connect_mode, > CAP_ENHANCED_REFRESH: enable_enhanced_refresh, > CAP_FOUR_OCTET_AS_NUMBER: enable_four_octet_as_number, > + CAP_MBGP_IPV4: enable_ipv4, > + CAP_MBGP_IPV6: enable_ipv6, > + CAP_MBGP_VPNV4: enable_vpnv4, > + CAP_MBGP_VPNV6: enable_vpnv6, > + CAP_MBGP_EVPN: enable_evpn, > } > - # v6 advertisement is available with only v6 peering > - if netaddr.valid_ipv4(address): > - bgp_neighbor[CAP_MBGP_IPV4] = enable_ipv4 > - bgp_neighbor[CAP_MBGP_IPV6] = False > - bgp_neighbor[CAP_MBGP_VPNV4] = enable_vpnv4 > - bgp_neighbor[CAP_MBGP_VPNV6] = enable_vpnv6 > - bgp_neighbor[CAP_MBGP_EVPN] = enable_evpn > - elif netaddr.valid_ipv6(address): > - bgp_neighbor[CAP_MBGP_IPV4] = False > - bgp_neighbor[CAP_MBGP_IPV6] = True > - bgp_neighbor[CAP_MBGP_VPNV4] = False > - bgp_neighbor[CAP_MBGP_VPNV6] = False > - bgp_neighbor[CAP_MBGP_EVPN] = enable_evpn > - else: > - # FIXME: should raise an exception > - pass > > if multi_exit_disc: > bgp_neighbor[MULTI_EXIT_DISC] = multi_exit_disc Prior to this patch, CAP_MBGP_IPV6 capability is advertised to BGP peer when ipv6 transport is used for a BGP connection. So, v6 BGP on v6 transport worked automagically. Now the CAP_MBGP_IPV6 advertisement is controlled by the new enable_ipv6 argument, existing applications[1], which don't know the new argument, fail to advertise IPv6 routes. I think this patch is in the right direction, but I wish I could receive some warning of such an API change. [1] e.g. neutron-dynamic-routing on openstack https://github.com/openstack/neutron-dynamic-routing/blob/master/neutron_dynamic_routing/services/bgp/agent/driver/ryu/driver.py#L126 Thanks, kakuma -- fumihiko kakuma <kak...@valinux.co.jp> ------------------------------------------------------------------------------ Developer Access Program for Intel Xeon Phi Processors Access to Intel Xeon Phi processor-based developer platforms. With one year of Intel Parallel Studio XE. Training and support from Colfax. Order your platform today.http://sdm.link/xeonphi _______________________________________________ Ryu-devel mailing list Ryu-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ryu-devel