[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