Skip to content

Commit

Permalink
[multi-ASIC] util changes with the BGP_INTERNAL_NEIGHBOR table. (soni…
Browse files Browse the repository at this point in the history
…c-net#5760)

- Why I did it
Update the routine is_bgp_session_internal() by checking the BGP_INTERNAL_NEIGHBOR table.
Additionally to address the review comment sonic-net#5520 (comment)
Add timer settings as will in the internal session templates and keep it minimal as these sessions which will always be up.
Updates to the internal tests data + add all of it to template tests.

- How I did it
Updated the APIs and the template files.

- How to verify it
Verified the internal BGP sessions are displayed correctly with show commands with this API is_bgp_session_internal()
  • Loading branch information
judyjoseph authored Nov 9, 2020
1 parent e0fdf45 commit c972052
Show file tree
Hide file tree
Showing 7 changed files with 21 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
!
neighbor {{ neighbor_addr }} remote-as {{ bgp_session['asn'] }}
neighbor {{ neighbor_addr }} description {{ bgp_session['name'] }}
neighbor {{ neighbor_addr }} timers 3 10
!
{% if neighbor_addr | ipv4 %}
address-family ipv4
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
!
neighbor 10.10.10.10 remote-as 555
neighbor 10.10.10.10 description remote_peer
neighbor 10.10.10.10 timers 5 30
neighbor 10.10.10.10 shutdown
neighbor 10.10.10.10 timers 3 10
address-family ipv4
neighbor 10.10.10.10 peer-group INTERNAL_PEER_V4
neighbor 10.10.10.10 route-map FROM_BGP_INTERNAL_PEER_V4 in
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
!
neighbor fc::10 remote-as 555
neighbor fc::10 description remote_peer
neighbor fc::10 timers 5 30
neighbor fc::10 shutdown
neighbor fc::10 timers 3 10
address-family ipv6
neighbor fc::10 peer-group INTERNAL_PEER_V6
neighbor fc::10 route-map FROM_BGP_INTERNAL_PEER_V6 in
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
!
neighbor 10.10.10.10 remote-as 555
neighbor 10.10.10.10 description remote_peer
neighbor 10.10.10.10 timers 5 30
neighbor 10.10.10.10 shutdown
neighbor 10.10.10.10 timers 3 10
address-family ipv4
neighbor 10.10.10.10 peer-group INTERNAL_PEER_V4
neighbor 10.10.10.10 next-hop-self force
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
!
neighbor fc::10 remote-as 555
neighbor fc::10 description remote_peer
neighbor fc::10 timers 5 30
neighbor fc::10 shutdown
neighbor fc::10 timers 3 10
address-family ipv6
neighbor fc::10 peer-group INTERNAL_PEER_V6
neighbor fc::10 next-hop-self force
Expand Down
12 changes: 12 additions & 0 deletions src/sonic-bgpcfgd/tests/test_templates.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,18 @@ def test_general_instance():
test_data = load_tests("general", "instance.conf")
run_tests("general_instance", *test_data)

def test_internal_policies():
test_data = load_tests("internal", "policies.conf")
run_tests("internal_policies", *test_data)

def test_internal_pg():
test_data = load_tests("internal", "peer-group.conf")
run_tests("internal_pg", *test_data)

def test_internal_instance():
test_data = load_tests("internal", "instance.conf")
run_tests("internal_instance", *test_data)

def test_dynamic_policies():
test_data = load_tests("dynamic", "policies.conf")
run_tests("dynamic_policies", *test_data)
Expand Down
17 changes: 4 additions & 13 deletions src/sonic-py-common/sonic_py_common/multi_asic.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
PORT_CHANNEL_CFG_DB_TABLE = 'PORTCHANNEL'
PORT_CFG_DB_TABLE = 'PORT'
BGP_NEIGH_CFG_DB_TABLE = 'BGP_NEIGHBOR'
BGP_INTERNAL_NEIGH_CFG_DB_TABLE = 'BGP_INTERNAL_NEIGHBOR'
NEIGH_DEVICE_METADATA_CFG_DB_TABLE = 'DEVICE_NEIGHBOR_METADATA'
DEFAULT_NAMESPACE = ''
PORT_ROLE = 'role'
Expand Down Expand Up @@ -359,20 +360,10 @@ def is_bgp_session_internal(bgp_neigh_ip, namespace=None):
for ns in ns_list:

config_db = connect_config_db_for_ns(ns)
bgp_sessions = config_db.get_table(BGP_NEIGH_CFG_DB_TABLE)
if bgp_neigh_ip not in bgp_sessions:
continue

bgp_neigh_name = bgp_sessions[bgp_neigh_ip]['name']
neighbor_metadata = config_db.get_table(
NEIGH_DEVICE_METADATA_CFG_DB_TABLE)

if ((neighbor_metadata) and
(neighbor_metadata[bgp_neigh_name]['type'].lower() ==
ASIC_NAME_PREFIX)):
bgp_sessions = config_db.get_table(BGP_INTERNAL_NEIGH_CFG_DB_TABLE)
if bgp_neigh_ip in bgp_sessions:
return True
else:
return False

return False

def get_front_end_namespaces():
Expand Down

0 comments on commit c972052

Please sign in to comment.