Hi Iwase-san,

On Thu, 8 Dec 2016 15:28:42 +0900
Iwase Yusuke <iwase.yusu...@gmail.com> wrote:

> Hi Kakuma-San,
> 
> 
> On 2016年12月08日 15:06, fumihiko kakuma wrote:
> > 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.
> 
> Thank you for pointing out.
> 
> How have we better to notify changes?
> Describing NOTE more explicitly on commit logs?

I think this is better.

> Or reporting on OpenStack lauchpad?
> 

In the openstack, announce on documents, release note or ML in
the current release that some features are marked for a deprecation and
remove or change them in the next release.
But a release cycle will be diffrent from ryu.

> 
> Then, for quick-fix, how about setting IPv6 capability enable when
> neighbor IP address is valid IPv6 address automatically?
> 

We pushed the following patch for the openstack.
- add 'ryu >= 4.9' to requirement list.
- modify neutron-dynamic-routing to use ryu 4.9 api.

Thanks,
kakuma

> $ git diff
> diff --git a/ryu/services/protocols/bgp/bgpspeaker.py 
> b/ryu/services/protocols/bgp/bgpspeaker.py
> index c56f8dd..fed47bf 100644
> --- a/ryu/services/protocols/bgp/bgpspeaker.py
> +++ b/ryu/services/protocols/bgp/bgpspeaker.py
> @@ -372,6 +372,9 @@ class BGPSpeaker(object):
>          CONNECT_MODE_BOTH use both methods.
>          The default is CONNECT_MODE_BOTH.
>          """
> +        # For the backward compatibility
> +        if netaddr.valid_ipv6(address):
> +            enable_ipv6 = True
>          bgp_neighbor = {
>              neighbors.IP_ADDRESS: address,
>              neighbors.REMOTE_AS: remote_as,
> 
> 
> Thanks,
> Iwase
> 
> > 
> > 
> > [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

Reply via email to