yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #92587
[Bug 2025969] [NEW] bgp os_ken ssh_console support
Public bug reported:
Hi, is it possible to enable the os_ken ssh_console?
For now there is no way to see the live status of the bgp connections.
There exist a closed RFE about bgp statistics:
https://bugs.launchpad.net/neutron/+bug/1527993
Enabling ssh console should require less effort than bgp statistics RFE.
ssh console example:
$ ssh localhost -p 4990
Hello, this is OSKen BGP speaker (version 4.19).
bgpd> # Hit '?' key
clear - allows to reset BGP connections
help - show this help
quit - exit this session
set - set runtime settings
show - shows runtime state information
bgpd>
bgpd> show rib all
Status codes: * valid, > best
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Labels Next Hop Reason Metric LocPrf Path
*> 10.10.1.0/24 None 0.0.0.0 Only Path i
bgpd>
os-ken supports ssh console:
ssh_console specifies whether or not SSH CLI need to be started.
ssh_port specifies the port number for SSH CLI server. The default is
bgp.operator.ssh.DEFAULT_SSH_PORT.
ssh_host specifies the IP address for SSH CLI server. The default is
bgp.operator.ssh.DEFAULT_SSH_HOST.
ssh_host_key specifies the path to the host key added to the keys list
used by SSH CLI server. The default is
bgp.operator.ssh.DEFAULT_SSH_HOST_KEY.
# ./os_ken/services/protocols/bgp/bgpspeaker.py
class BGPSpeaker(object):
"""Class to provide the APIs of OSKen BGP Speaker.
``as_number`` specifies an Autonomous Number. It must be an integer
between 1 and 65535.
``router_id`` specifies BGP router identifier. It must be the
string representation of an IPv4 address (e.g. 10.0.0.1).
``bgp_server_host`` specifies a list of TCP listen host addresses.
``bgp_server_port`` specifies TCP listen port number. 179 is
used if not specified.
``refresh_stalepath_time`` causes the BGP speaker to remove
stale routes from the BGP table after the timer expires, even
if the speaker does not receive a Router-Refresh End-of-RIB
message. This feature is disabled (not implemented yet).
``refresh_max_eor_time`` causes the BGP speaker to generate a
Route-Refresh End-of-RIB message if it was not able to
generate one due to route flapping. This feature is disabled
(not implemented yet).
``best_path_change_handler``, if specified, is called when any
best remote path is changed due to an update message or remote
peer down. The handler is supposed to take one argument, the
instance of an EventPrefix class instance.
``adj_rib_in_change_handler``, if specified, is called when any
adj-RIB-in path is changed due to an update message or remote
peer down. The given handler should take three argument, the
instance of an EventPrefix class instance, str type peer's IP address
and int type peer's AS number.
``peer_down_handler``, if specified, is called when BGP peering
session goes down.
``peer_up_handler``, if specified, is called when BGP peering
session goes up.
``ssh_console`` specifies whether or not SSH CLI need to be started.
``ssh_port`` specifies the port number for SSH CLI server.
The default is bgp.operator.ssh.DEFAULT_SSH_PORT.
``ssh_host`` specifies the IP address for SSH CLI server.
The default is bgp.operator.ssh.DEFAULT_SSH_HOST.
``ssh_host_key`` specifies the path to the host key added to
the keys list used by SSH CLI server.
The default is bgp.operator.ssh.DEFAULT_SSH_HOST_KEY.
``label_range`` specifies the range of MPLS labels generated
automatically.
``allow_local_as_in_count`` maximum number of local AS number
occurrences in AS_PATH. This option is useful for e.g. auto RD/RT
configurations in leaf/spine architecture with shared AS numbers.
The default is 0 and means "local AS number is not allowed in
AS_PATH". To allow local AS, 3 is recommended (Cisco's default).
``cluster_id`` specifies the cluster identifier for Route Reflector.
It must be the string representation of an IPv4 address.
If omitted, "router_id" is used for this field.
``local_pref`` specifies the default local preference. It must be an
integer.
"""
def __init__(self, as_number, router_id,
bgp_server_hosts=DEFAULT_BGP_SERVER_HOSTS,
bgp_server_port=DEFAULT_BGP_SERVER_PORT,
refresh_stalepath_time=DEFAULT_REFRESH_STALEPATH_TIME,
refresh_max_eor_time=DEFAULT_REFRESH_MAX_EOR_TIME,
best_path_change_handler=None,
adj_rib_in_change_handler=None,
peer_down_handler=None,
peer_up_handler=None,
ssh_console=False,
ssh_port=None, ssh_host=None, ssh_host_key=None,
label_range=DEFAULT_LABEL_RANGE,
allow_local_as_in_count=0,
cluster_id=None,
local_pref=DEFAULT_LOCAL_PREF):
super(BGPSpeaker, self).__init__()
# ./neutron_dynamic_routing/services/bgp/agent/driver/os_ken/driver.py
curr_speaker = bgpspeaker.BGPSpeaker(as_number=speaker_as,
router_id=self.routerid, bgp_server_port=0,
best_path_change_handler=best_path_change_cb,
peer_down_handler=bgp_peer_down_cb,
peer_up_handler=bgp_peer_up_cb)
Dynamic Routing can get the ssh_console, ssh_port, ssh_host and
ssh_host_key variables from config and initialize the curr_speaker with
ssh_console support.
Do you have any idea why this feature is not implemented? Thanks.
** 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/2025969
Title:
bgp os_ken ssh_console support
Status in neutron:
New
Bug description:
Hi, is it possible to enable the os_ken ssh_console?
For now there is no way to see the live status of the bgp connections.
There exist a closed RFE about bgp statistics:
https://bugs.launchpad.net/neutron/+bug/1527993
Enabling ssh console should require less effort than bgp statistics
RFE.
ssh console example:
$ ssh localhost -p 4990
Hello, this is OSKen BGP speaker (version 4.19).
bgpd> # Hit '?' key
clear - allows to reset BGP connections
help - show this help
quit - exit this session
set - set runtime settings
show - shows runtime state information
bgpd>
bgpd> show rib all
Status codes: * valid, > best
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Labels Next Hop Reason Metric LocPrf Path
*> 10.10.1.0/24 None 0.0.0.0 Only Path i
bgpd>
os-ken supports ssh console:
ssh_console specifies whether or not SSH CLI need to be started.
ssh_port specifies the port number for SSH CLI server. The default is
bgp.operator.ssh.DEFAULT_SSH_PORT.
ssh_host specifies the IP address for SSH CLI server. The default is
bgp.operator.ssh.DEFAULT_SSH_HOST.
ssh_host_key specifies the path to the host key added to the keys list
used by SSH CLI server. The default is
bgp.operator.ssh.DEFAULT_SSH_HOST_KEY.
# ./os_ken/services/protocols/bgp/bgpspeaker.py
class BGPSpeaker(object):
"""Class to provide the APIs of OSKen BGP Speaker.
``as_number`` specifies an Autonomous Number. It must be an integer
between 1 and 65535.
``router_id`` specifies BGP router identifier. It must be the
string representation of an IPv4 address (e.g. 10.0.0.1).
``bgp_server_host`` specifies a list of TCP listen host addresses.
``bgp_server_port`` specifies TCP listen port number. 179 is
used if not specified.
``refresh_stalepath_time`` causes the BGP speaker to remove
stale routes from the BGP table after the timer expires, even
if the speaker does not receive a Router-Refresh End-of-RIB
message. This feature is disabled (not implemented yet).
``refresh_max_eor_time`` causes the BGP speaker to generate a
Route-Refresh End-of-RIB message if it was not able to
generate one due to route flapping. This feature is disabled
(not implemented yet).
``best_path_change_handler``, if specified, is called when any
best remote path is changed due to an update message or remote
peer down. The handler is supposed to take one argument, the
instance of an EventPrefix class instance.
``adj_rib_in_change_handler``, if specified, is called when any
adj-RIB-in path is changed due to an update message or remote
peer down. The given handler should take three argument, the
instance of an EventPrefix class instance, str type peer's IP address
and int type peer's AS number.
``peer_down_handler``, if specified, is called when BGP peering
session goes down.
``peer_up_handler``, if specified, is called when BGP peering
session goes up.
``ssh_console`` specifies whether or not SSH CLI need to be
started.
``ssh_port`` specifies the port number for SSH CLI server.
The default is bgp.operator.ssh.DEFAULT_SSH_PORT.
``ssh_host`` specifies the IP address for SSH CLI server.
The default is bgp.operator.ssh.DEFAULT_SSH_HOST.
``ssh_host_key`` specifies the path to the host key added to
the keys list used by SSH CLI server.
The default is bgp.operator.ssh.DEFAULT_SSH_HOST_KEY.
``label_range`` specifies the range of MPLS labels generated
automatically.
``allow_local_as_in_count`` maximum number of local AS number
occurrences in AS_PATH. This option is useful for e.g. auto RD/RT
configurations in leaf/spine architecture with shared AS numbers.
The default is 0 and means "local AS number is not allowed in
AS_PATH". To allow local AS, 3 is recommended (Cisco's default).
``cluster_id`` specifies the cluster identifier for Route Reflector.
It must be the string representation of an IPv4 address.
If omitted, "router_id" is used for this field.
``local_pref`` specifies the default local preference. It must be an
integer.
"""
def __init__(self, as_number, router_id,
bgp_server_hosts=DEFAULT_BGP_SERVER_HOSTS,
bgp_server_port=DEFAULT_BGP_SERVER_PORT,
refresh_stalepath_time=DEFAULT_REFRESH_STALEPATH_TIME,
refresh_max_eor_time=DEFAULT_REFRESH_MAX_EOR_TIME,
best_path_change_handler=None,
adj_rib_in_change_handler=None,
peer_down_handler=None,
peer_up_handler=None,
ssh_console=False,
ssh_port=None, ssh_host=None, ssh_host_key=None,
label_range=DEFAULT_LABEL_RANGE,
allow_local_as_in_count=0,
cluster_id=None,
local_pref=DEFAULT_LOCAL_PREF):
super(BGPSpeaker, self).__init__()
# ./neutron_dynamic_routing/services/bgp/agent/driver/os_ken/driver.py
curr_speaker = bgpspeaker.BGPSpeaker(as_number=speaker_as,
router_id=self.routerid, bgp_server_port=0,
best_path_change_handler=best_path_change_cb,
peer_down_handler=bgp_peer_down_cb,
peer_up_handler=bgp_peer_up_cb)
Dynamic Routing can get the ssh_console, ssh_port, ssh_host and
ssh_host_key variables from config and initialize the curr_speaker
with ssh_console support.
Do you have any idea why this feature is not implemented? Thanks.
To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/2025969/+subscriptions