[Openstack-operators] [neutron] [neutron-dynamic-routing] bgp-dragent not sending BGP UPDATE messages

Tobias Urdin tobias.urdin at crystone.com
Mon Jul 30 19:16:44 UTC 2018


So the real question is pretty much if Ryu supports MP-BGP and it does however it seems that neutron-dynamic-routing
is disabling IPv6 if the peer IP is a IPv4 address :(

So the link below answers my own question [1]

[1] https://github.com/openstack/neutron-dynamic-routing/blob/98d3cf24d6d7b5eca55ca19eb19bdd2e7b1975ec/neutron_dynamic_routing/services/bgp/agent/driver/ryu/driver.py#L131
________________________________________
From: Tobias Urdin <tobias.urdin at crystone.com>
Sent: Monday, July 30, 2018 7:08 PM
To: openstack-operators at lists.openstack.org
Subject: [Openstack-operators] [neutron] [neutron-dynamic-routing] bgp-dragent not sending BGP UPDATE messages

Hello,
I'm trying to get the neutron-bgp-dragent that is delivered by the
neutron-dynamic-routing project to work.

I've gotten it to open a BGP peer session without any issues but the no
BGP UPDATE messages seems to be sent from the
neutron-bgp-dragent daemon.

I'm having a BGP peer with a machine running FreeBSD 11 with OpenBGPD,
my goals is being able to announce IPv6 over IPv4 peers which should
work but I'm unsure
if python-ryu supports this.

[root at controller ~]# openstack bgp speaker show bgp-speaker-ipv6
+-----------------------------------+-------------------------------------------+
| Field                             |
Value                                     |
+-----------------------------------+-------------------------------------------+
| advertise_floating_ip_host_routes |
False                                     |
| advertise_tenant_networks         |
True                                      |
| id                                |
d22b30f2-50fe-49eb-9577-77cceb3fcc81      |
| ip_version                        |
6                                         |
| local_as                          |
64600                                     |
| name                              |
bgp-speaker-ipv6                          |
| networks                          |
[u'fdcead67-8a12-42fe-a31d-8cb3a03d8ee0'] |
| peers                             |
[u'b42d808f-c2ef-41e7-93b5-859a51cf6a36'] |
| project_id                        |
050c556faa5944a8953126c867313770          |
| tenant_id                         |
050c556faa5944a8953126c867313770          |
+-----------------------------------+-------------------------------------------+

[root at controller ~]# openstack bgp peer show
b42d808f-c2ef-41e7-93b5-859a51cf6a36
+------------+--------------------------------------+
| Field      | Value                                |
+------------+--------------------------------------+
| auth_type  | none                                 |
| id         | b42d808f-c2ef-41e7-93b5-859a51cf6a36 |
| name       | bgp-peer-1                        |
| peer_ip    | 172.20.x.y                       |
| project_id | 050c556faa5944a8953126c867313770     |
| remote_as  | xxxx                                |
| tenant_id  | 050c556faa5944a8953126c867313770     |
+------------+--------------------------------------+
[root at controller ~]# openstack bgp speaker list advertised routes
bgp-speaker-ipv6
+----+--------------------+--------------+
| ID | Destination        | Nexthop      |
+----+--------------------+--------------+
|    | xxxx:xxxx:0:1::/64 | xxxx:xxxx::f |
+----+--------------------+--------------+


2018-07-30 19:00:57.302 2143006 INFO
neutron_dynamic_routing.services.bgp.agent.driver.ryu.driver [-]
Initializing Ryu driver for BGP Speaker functionality.
2018-07-30 19:00:57.302 2143006 INFO
neutron_dynamic_routing.services.bgp.agent.driver.ryu.driver [-]
Initialized Ryu BGP Speaker driver interface with bgp_router_id=172.20.zz.yy
2018-07-30 19:00:57.351 2143006 INFO
neutron_dynamic_routing.services.bgp.agent.bgp_dragent [-] BGP dynamic
routing agent started
2018-07-30 19:00:57.450 2143006 INFO bgpspeaker.api.base
[req-f15418e8-731b-4ebe-82a9-e2933e8df8b7 - - - - -] API method
core.start called with args: {'router_id': '172.20.zz.yy',
'label_range': (100, 100000), 'waiter': <ryu.lib.hub.Event object at
0x7f3448774510>, 'bgp_server_port': 0, 'local_as': 64600,
'allow_local_as_in_count': 0, 'refresh_stalepath_time': 0, 'cluster_id':
None, 'local_pref': 100, 'refresh_max_eor_time': 0}
2018-07-30 19:00:57.455 2143006 INFO
neutron_dynamic_routing.services.bgp.agent.driver.ryu.driver
[req-f15418e8-731b-4ebe-82a9-e2933e8df8b7 - - - - -] Added BGP Speaker
for local_as=64600 with router_id= 172.20.zz.yy.
2018-07-30 19:00:57.456 2143006 INFO bgpspeaker.api.base
[req-f15418e8-731b-4ebe-82a9-e2933e8df8b7 - - - - -] API method
neighbor.create called with args: {'connect_mode': 'active',
'cap_mbgp_evpn': False, 'remote_as': 35041, 'cap_mbgp_vpnv6': False,
'cap_mbgp_l2vpnfs': False, 'cap_four_octet_as_number': True,
'cap_mbgp_ipv6': False, 'is_next_hop_self': False, 'cap_mbgp_ipv4':
True, 'cap_mbgp_ipv4fs': False, 'is_route_reflector_client': False,
'cap_mbgp_ipv6fs': False, 'is_route_server_client': False,
'cap_enhanced_refresh': False, 'peer_next_hop': None, 'password': None,
'ip_address': u'172.20.x.y', 'cap_mbgp_vpnv4fs': False,
'cap_mbgp_vpnv4': False, 'cap_mbgp_vpnv6fs': False}
2018-07-30 19:00:57.456 2143006 INFO
neutron_dynamic_routing.services.bgp.agent.driver.ryu.driver
[req-f15418e8-731b-4ebe-82a9-e2933e8df8b7 - - - - -] Added BGP Peer
172.20.x.y for remote_as=xxxx to BGP Speaker running for local_as=64600.
2018-07-30 19:00:57.457 2143006 INFO bgpspeaker.api.base
[req-f15418e8-731b-4ebe-82a9-e2933e8df8b7 - - - - -] API method
network.add called with args: {'prefix': u'xxxx:xxxx:0:1::/64',
'next_hop': u'2a05:4545::f'}
2018-07-30 19:00:57.457 2143006 INFO
neutron_dynamic_routing.services.bgp.agent.driver.ryu.driver
[req-f15418e8-731b-4ebe-82a9-e2933e8df8b7 - - - - -] Route
cidr=xxxx:xxxx:0:1::/64, nexthop=xxxx:xxxx::f is advertised for BGP
Speaker running for local_as=64600.
2018-07-30 19:00:58.460 2143006 INFO bgpspeaker.peer [-] Connection to
peer: 172.20.zz.yy established
2018-07-30 19:00:58.460 2143006 INFO
neutron_dynamic_routing.services.bgp.agent.driver.ryu.driver [-] BGP
Peer my.peer.id for remote_as=xxxx is UP.

On the router side the peer is up but there is no BGP UPDATE messages so
I don't get any prefixes.

root at router:~ # bgpctl show sum
Neighbor                   AS    MsgRcvd    MsgSent  OutQ Up/Down
State/PrfRcvd
controllername       64600        488        491     0 00:02:20      0

root at dr20-1-sto1:~ # bgpctl show neighbor 172.20.104.192
BGP neighbor is 172.20.zz.yy, remote AS 64600
 Description: controllername
  BGP version 4, remote router-id 172.20.zz.yy
  BGP state = Established, up for 00:03:03
  Last read 00:00:01, holdtime 40s, keepalive interval 13s
  Neighbor capabilities:
    Multiprotocol extensions: IPv4 unicast
    Route Refresh
    4-byte AS numbers

  Message statistics:
                  Sent       Received
  Opens                    6          6
  Notifications            0          0
  Updates                  0          0
  Keepalives             489        486
  Route Refresh            0          0
  Total                  495        492

  Update statistics:
                  Sent       Received
  Updates                  0          0
  Withdraws                0          0
  End-of-Rib               0          0

I'm wondering if this might be something related to the neighbor
capabilities that is announces, see the output below and from the
neutron-bgp-dragent log we can see this capabilities:
2018-07-30 19:00:57.456 2143006 INFO bgpspeaker.api.base
[req-f15418e8-731b-4ebe-82a9-e2933e8df8b7 - - - - -] API method
neighbor.create called with args: {'connect_mode': 'active',
'cap_mbgp_evpn': False, 'remote_as': 35041, 'cap_mbgp_vpnv6': False,
'cap_mbgp_l2vpnfs': False, 'cap_four_octet_as_number': True,
'cap_mbgp_ipv6': False, 'is_next_hop_self': False, 'cap_mbgp_ipv4':
True, 'cap_mbgp_ipv4fs': False, 'is_route_reflector_client': False,
'cap_mbgp_ipv6fs': False, 'is_route_server_client': False,
'cap_enhanced_refresh': False, 'peer_next_hop': None, 'password': None,
'ip_address': u'172.20.x.y', 'cap_mbgp_vpnv4fs': False,
'cap_mbgp_vpnv4': False, 'cap_mbgp_vpnv6fs': False}

Here is an example on how the bgpd.conf looks like:
group "peering AS64600" {
  remote-as 64600
  softreconfig in yes
  transparent-as yes

  neighbor 172.20.zz.yy {
    announce none
    announce IPv6 unicast
    descr "controller"
    local-address 172.20.x.x
    depend on vlan10
  }

If I interpret the IPv6 section in this document correctly
https://docs.openstack.org/mitaka/networking-guide/config-bgp-dynamic-routing.html
it should work.
Anybody have any ideas or know if it's supported?

Appreciate any help or pointers.
Best regards

_______________________________________________
OpenStack-operators mailing list
OpenStack-operators at lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-operators



More information about the OpenStack-operators mailing list