← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1904869] [NEW] neutron-dynamic-routing reported as not alive after adding BGP Peer to BGP Speaker

 

Public bug reported:

I'm trying to create a PoC setup for neutron-dynamic-routing.
I'm working on an internal company install of OpenStack Queens with components deployed as Docker containers.

I'm an admin for this particular test platform. In terms of compute
nodes I have 1 compute node for VMs and 1 network node (apart from the
control plane nodes).


Reproduction :
I'm installing neutron-dynamic-routing 12.0.1 on top of a neutron base image (which already functions for other Neutron components ;  it also includes ryu 4.15). I'm allowing pip (or easy_install) to install dependencies.
I'm following the guide here :  https://docs.openstack.org/neutron/queens/admin/config-bgp-dynamic-routing.html

Plugin config snippet :
(neutron-bgp-dragent)[root@i1-net0001 /]$ cat /etc/neutron/bgp_dragent.ini
[BGP]
bgp_router_id = 192.168.1.109
bgp_speaker_driver = neutron_dynamic_routing.services.bgp.agent.driver.ryu.driver.RyuBgpDriver

In /etc/neutron/neutron.conf I already set :
service_plugins = router,metering,qos,trunk,segments,neutron.services.firewall.fwaas_plugin.FirewallPlugin,neutron_dynamic_routing.services.bgp.bgp_plugin.BgpPlugin


After adding the BGP Peer to the BGP Speaker, the output of "openstack network agent list --agent-type bgp" reports :  "State UP" but "Alive XXX" .
The agent doesn't report errors.

# openstack network agent list --agent-type bgp
+--------------------------------------+---------------------------+-----------------------+-------------------+-------+-------+---------------------+
| ID                                   | Agent Type                | Host                  | Availability Zone | Alive | State | Binary              |
+--------------------------------------+---------------------------+-----------------------+-------------------+-------+-------+---------------------+
| 2d10cebf-547c-4027-b31c-b62af4af734d | BGP dynamic routing agent | i1-net0001.mgmt.oiaas | None              | :-)   | UP    | neutron-bgp-dragent |
+--------------------------------------+---------------------------+-----------------------+-------------------+-------+-------+---------------------+

# openstack bgp speaker add peer bgpspeaker bgppeer

# openstack network agent list --agent-type bgp
+--------------------------------------+---------------------------+-----------------------+-------------------+-------+-------+---------------------+
| ID                                   | Agent Type                | Host                  | Availability Zone | Alive | State | Binary              |
+--------------------------------------+---------------------------+-----------------------+-------------------+-------+-------+---------------------+
| 2d10cebf-547c-4027-b31c-b62af4af734d | BGP dynamic routing agent | i1-net0001.mgmt.oiaas | None              | XXX   | UP    | neutron-bgp-dragent |
+--------------------------------------+---------------------------+-----------------------+-------------------+-------+-------+---------------------+


Log messages from dr agent after the "add" command :
"received message with unique_id: 1956299a1cd94c809a1b270abd92670f"
"Lock \"bgp-dr-agent\" acquired by \"neutron_dynamic_routing.services.bgp.agent.bgp_dragent.bgp_peer_association_end\" :: waited 0.000s"
"Received BGP peer associate notification for speaker_id=8e6348c8-d52d-42aa-9075-03940b863c26 peer_id=336dce4d-e0c9-43aa-99ec-f721c1dae10d from the neutron server."
"CALL msg_id: f75f5c50e30a4ffe860a32cab60bc502 exchange 'neutron' topic 'q-bgp-plugin'"
"received reply msg_id: f75f5c50e30a4ffe860a32cab60bc502"
"Calling driver interface for adding BGP peer 192.168.1.10 remote_as=4321 to BGP Speaker running for local_as=1234 auth_type=none"
"API method neighbor.create called with args: {'connect_mode': 'active', 'cap_mbgp_evpn': False, 'remote_as': 4321, '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'192.168.1.10', 'cap_mbgp_vpnv4fs': False, 'cap_mbgp_vpnv4': False, 'cap_mbgp_vpnv6fs': False}"
"Create CustomEvent called"
"Create CustomEvent called"
"Added BGP Peer 192.168.1.10 for remote_as=4321 to BGP Speaker running for local_as=1234."
"Lock \"bgp-dr-agent\" released by \"neutron_dynamic_routing.services.bgp.agent.bgp_dragent.bgp_peer_association_end\" :: held 0.059s"


After this, neutron-api logs a few times:
"Agent healthcheck: found 1 dead agents out of 6:\n                Type       Last heartbeat host\nBGP dynamic routing agent  2020-11-19 10:58:17 i1-net0001.mgmt.oiaas"


Problem is that after that "add", the container doesn't stop working but the agent doesn't log anything else and requires a restart to be considered Alive again.
The dr agent is also not generating any BGP messages (not even TCP session attempts to the neighbor). I have connectivity with the neighbor IP.

** Affects: neutron
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1904869

Title:
  neutron-dynamic-routing reported as not alive after adding BGP Peer to
  BGP Speaker

Status in neutron:
  New

Bug description:
  I'm trying to create a PoC setup for neutron-dynamic-routing.
  I'm working on an internal company install of OpenStack Queens with components deployed as Docker containers.

  I'm an admin for this particular test platform. In terms of compute
  nodes I have 1 compute node for VMs and 1 network node (apart from the
  control plane nodes).

  
  Reproduction :
  I'm installing neutron-dynamic-routing 12.0.1 on top of a neutron base image (which already functions for other Neutron components ;  it also includes ryu 4.15). I'm allowing pip (or easy_install) to install dependencies.
  I'm following the guide here :  https://docs.openstack.org/neutron/queens/admin/config-bgp-dynamic-routing.html

  Plugin config snippet :
  (neutron-bgp-dragent)[root@i1-net0001 /]$ cat /etc/neutron/bgp_dragent.ini
  [BGP]
  bgp_router_id = 192.168.1.109
  bgp_speaker_driver = neutron_dynamic_routing.services.bgp.agent.driver.ryu.driver.RyuBgpDriver

  In /etc/neutron/neutron.conf I already set :
  service_plugins = router,metering,qos,trunk,segments,neutron.services.firewall.fwaas_plugin.FirewallPlugin,neutron_dynamic_routing.services.bgp.bgp_plugin.BgpPlugin


  After adding the BGP Peer to the BGP Speaker, the output of "openstack network agent list --agent-type bgp" reports :  "State UP" but "Alive XXX" .
  The agent doesn't report errors.

  # openstack network agent list --agent-type bgp
  +--------------------------------------+---------------------------+-----------------------+-------------------+-------+-------+---------------------+
  | ID                                   | Agent Type                | Host                  | Availability Zone | Alive | State | Binary              |
  +--------------------------------------+---------------------------+-----------------------+-------------------+-------+-------+---------------------+
  | 2d10cebf-547c-4027-b31c-b62af4af734d | BGP dynamic routing agent | i1-net0001.mgmt.oiaas | None              | :-)   | UP    | neutron-bgp-dragent |
  +--------------------------------------+---------------------------+-----------------------+-------------------+-------+-------+---------------------+

  # openstack bgp speaker add peer bgpspeaker bgppeer

  # openstack network agent list --agent-type bgp
  +--------------------------------------+---------------------------+-----------------------+-------------------+-------+-------+---------------------+
  | ID                                   | Agent Type                | Host                  | Availability Zone | Alive | State | Binary              |
  +--------------------------------------+---------------------------+-----------------------+-------------------+-------+-------+---------------------+
  | 2d10cebf-547c-4027-b31c-b62af4af734d | BGP dynamic routing agent | i1-net0001.mgmt.oiaas | None              | XXX   | UP    | neutron-bgp-dragent |
  +--------------------------------------+---------------------------+-----------------------+-------------------+-------+-------+---------------------+


  
  Log messages from dr agent after the "add" command :
  "received message with unique_id: 1956299a1cd94c809a1b270abd92670f"
  "Lock \"bgp-dr-agent\" acquired by \"neutron_dynamic_routing.services.bgp.agent.bgp_dragent.bgp_peer_association_end\" :: waited 0.000s"
  "Received BGP peer associate notification for speaker_id=8e6348c8-d52d-42aa-9075-03940b863c26 peer_id=336dce4d-e0c9-43aa-99ec-f721c1dae10d from the neutron server."
  "CALL msg_id: f75f5c50e30a4ffe860a32cab60bc502 exchange 'neutron' topic 'q-bgp-plugin'"
  "received reply msg_id: f75f5c50e30a4ffe860a32cab60bc502"
  "Calling driver interface for adding BGP peer 192.168.1.10 remote_as=4321 to BGP Speaker running for local_as=1234 auth_type=none"
  "API method neighbor.create called with args: {'connect_mode': 'active', 'cap_mbgp_evpn': False, 'remote_as': 4321, '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'192.168.1.10', 'cap_mbgp_vpnv4fs': False, 'cap_mbgp_vpnv4': False, 'cap_mbgp_vpnv6fs': False}"
  "Create CustomEvent called"
  "Create CustomEvent called"
  "Added BGP Peer 192.168.1.10 for remote_as=4321 to BGP Speaker running for local_as=1234."
  "Lock \"bgp-dr-agent\" released by \"neutron_dynamic_routing.services.bgp.agent.bgp_dragent.bgp_peer_association_end\" :: held 0.059s"

  
  After this, neutron-api logs a few times:
  "Agent healthcheck: found 1 dead agents out of 6:\n                Type       Last heartbeat host\nBGP dynamic routing agent  2020-11-19 10:58:17 i1-net0001.mgmt.oiaas"


  Problem is that after that "add", the container doesn't stop working but the agent doesn't log anything else and requires a restart to be considered Alive again.
  The dr agent is also not generating any BGP messages (not even TCP session attempts to the neighbor). I have connectivity with the neighbor IP.

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1904869/+subscriptions


Follow ups