Skip to content

Commit 5f39926

Browse files
authored
Updated BBR to use peer group name as prefix. (#6515)
To make BBR configured for peer-group if it's name starts with (prefixed) with the string define in constants.yml instead of exact string match.
1 parent 0464d15 commit 5f39926

2 files changed

Lines changed: 41 additions & 6 deletions

File tree

src/sonic-bgpcfgd/bgpcfgd/managers_bbr.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,10 @@ def __set_prepare_config(self, status):
113113
for af in ["ipv4", "ipv6"]:
114114
cmds.append(" address-family %s" % af)
115115
for pg_name in sorted(self.bbr_enabled_pgs.keys()):
116-
if pg_name in available_peer_groups and af in self.bbr_enabled_pgs[pg_name]:
117-
cmds.append(" %sneighbor %s allowas-in 1" % (prefix_of_commands, pg_name))
118-
peer_groups_to_restart.add(pg_name)
116+
for peer_group_name in available_peer_groups:
117+
if peer_group_name.startswith(pg_name) and af in self.bbr_enabled_pgs[pg_name]:
118+
cmds.append(" %sneighbor %s allowas-in 1" % (prefix_of_commands, peer_group_name))
119+
peer_groups_to_restart.add(peer_group_name)
119120
return cmds, list(peer_groups_to_restart)
120121

121122
def __get_available_peer_groups(self):

src/sonic-bgpcfgd/tests/test_bbr.py

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ def test___set_validation_4():
252252
def test___set_validation_5():
253253
__set_validation_common("all", {"status": "disabled"}, None, True)
254254

255-
def __set_prepare_config_common(status, bbr_enabled_pgs, available_pgs, expected_cmds):
255+
def __set_prepare_config_common(status, bbr_enabled_pgs, available_pgs, expected_cmds, bbr_applied_pgs=None):
256256
cfg_mgr = MagicMock()
257257
common_objs = {
258258
'directory': Directory(),
@@ -269,10 +269,10 @@ def __set_prepare_config_common(status, bbr_enabled_pgs, available_pgs, expected
269269
}
270270
}
271271
m.bbr_enabled_pgs = bbr_enabled_pgs
272-
m._BBRMgr__get_available_peer_groups = MagicMock(return_value = available_pgs)
272+
m._BBRMgr__get_available_peer_groups = MagicMock(return_value = sorted(available_pgs))
273273
cmds, peer_groups = m._BBRMgr__set_prepare_config(status)
274274
assert cmds == expected_cmds
275-
assert set(peer_groups) == available_pgs
275+
assert set(peer_groups) == (available_pgs if not bbr_applied_pgs else bbr_applied_pgs)
276276

277277
def test___set_prepare_config_enabled():
278278
__set_prepare_config_common("enabled", {
@@ -327,7 +327,41 @@ def test___set_prepare_config_disabled_part():
327327
' no neighbor PEER_V4 allowas-in 1',
328328
' no neighbor PEER_V6 allowas-in 1',
329329
])
330+
def test___set_prepare_config_enabled_multiple_peers():
331+
__set_prepare_config_common("enabled", {
332+
"PEER_V4": ["ipv4"],
333+
"PEER_V6": ["ipv6"],
334+
}, {"PEER_V4", "PEER_V4_DEPLOYMENT_ID_0", "PEER_V4_DEPLOYMENT_ID_1", "PEER_V6", "PEER_V6_DEPLOYMENT_ID_0", "PEER_V6_DEPLOYMENT_ID_1", "PEER_INVALID"},
335+
[
336+
'router bgp 65500',
337+
' address-family ipv4',
338+
' neighbor PEER_V4 allowas-in 1',
339+
' neighbor PEER_V4_DEPLOYMENT_ID_0 allowas-in 1',
340+
' neighbor PEER_V4_DEPLOYMENT_ID_1 allowas-in 1',
341+
' address-family ipv6',
342+
' neighbor PEER_V6 allowas-in 1',
343+
' neighbor PEER_V6_DEPLOYMENT_ID_0 allowas-in 1',
344+
' neighbor PEER_V6_DEPLOYMENT_ID_1 allowas-in 1',
345+
],
346+
{"PEER_V4", "PEER_V4_DEPLOYMENT_ID_0", "PEER_V4_DEPLOYMENT_ID_1", "PEER_V6", "PEER_V6_DEPLOYMENT_ID_0", "PEER_V6_DEPLOYMENT_ID_1"})
330347

348+
def test___set_prepare_config_disabled_multiple_peers():
349+
__set_prepare_config_common("disabled", {
350+
"PEER_V4": ["ipv4"],
351+
"PEER_V6": ["ipv6"],
352+
}, {"PEER_V4", "PEER_V4_DEPLOYMENT_ID_0", "PEER_V4_DEPLOYMENT_ID_1", "PEER_V6", "PEER_V6_DEPLOYMENT_ID_0", "PEER_V6_DEPLOYMENT_ID_1", "PEER_INVALID"},
353+
[
354+
'router bgp 65500',
355+
' address-family ipv4',
356+
' no neighbor PEER_V4 allowas-in 1',
357+
' no neighbor PEER_V4_DEPLOYMENT_ID_0 allowas-in 1',
358+
' no neighbor PEER_V4_DEPLOYMENT_ID_1 allowas-in 1',
359+
' address-family ipv6',
360+
' no neighbor PEER_V6 allowas-in 1',
361+
' no neighbor PEER_V6_DEPLOYMENT_ID_0 allowas-in 1',
362+
' no neighbor PEER_V6_DEPLOYMENT_ID_1 allowas-in 1',
363+
],
364+
{"PEER_V4", "PEER_V4_DEPLOYMENT_ID_0", "PEER_V4_DEPLOYMENT_ID_1", "PEER_V6", "PEER_V6_DEPLOYMENT_ID_0", "PEER_V6_DEPLOYMENT_ID_1"})
331365

332366
def test__get_available_peer_groups():
333367
cfg_mgr = MagicMock()

0 commit comments

Comments
 (0)