Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[chassis] Support advertisement of Loopback0 of all LC's across all e-BGP peers in TSA mode #16714

Merged
merged 24 commits into from
Nov 20, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
7a3d7e5
Fix the Loopback0 IPv6 address of LC's in chassis not reachable from
abdosi Aug 3, 2023
b5b08cf
Merge remote-tracking branch 'upstream/master'
abdosi Aug 17, 2023
8d9dbb6
Added change to have flag
abdosi Aug 17, 2023
d04bc54
Merge remote-tracking branch 'upstream/master'
abdosi Aug 23, 2023
264d912
Merge remote-tracking branch 'upstream/master'
abdosi Aug 25, 2023
957cd71
Merge remote-tracking branch 'upstream/master'
abdosi Aug 31, 2023
4e8b101
Assign the metric vaule for Ipv6 default route learnt via RA message to
abdosi Aug 31, 2023
05ec92a
Merge remote-tracking branch 'upstream/master'
abdosi Sep 8, 2023
fcbd38d
Add alternate name for bridge interface on supversior in chassis systrem
abdosi Sep 8, 2023
76019a7
Merge remote-tracking branch 'upstream/master'
abdosi Sep 8, 2023
311c639
Revert "Add alternate name for bridge interface on supversior in chas…
abdosi Sep 13, 2023
2109e03
ASIC Count is updated to the running numbers of ASIC's and not max
abdosi Sep 13, 2023
ced57e2
Merge remote-tracking branch 'upstream/master' into chassis
abdosi Sep 26, 2023
3cf4697
Enable Seding BGP Community over internal neighbors over iBGP Session
abdosi Sep 26, 2023
5d4fb5d
Revert "ASIC Count is updated to the running numbers of ASIC's and no…
abdosi Sep 26, 2023
4dbfe1c
In Chassis TSA mode Loopback0 Ip's of each should be advertise
abdosi Sep 27, 2023
48ba69f
Merge remote-tracking branch 'upstream/master' into chassis-bgp
abdosi Sep 27, 2023
4f295de
Updated UT
abdosi Sep 27, 2023
6dcf219
Updated UT
abdosi Sep 27, 2023
c38a06e
Added extra UT for chassis-packet.
abdosi Sep 28, 2023
c94da05
FIxed UT typo
abdosi Sep 28, 2023
a5c217a
Fixes
abdosi Sep 28, 2023
93fc511
Update TS
abdosi Oct 5, 2023
2195754
Merge remote-tracking branch 'upstream/master' into chassis-bgp
abdosi Oct 8, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions dockers/docker-fpm-frr/TS
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ function check_not_installed()
is_internal_route_map $route_map_name && continue
echo "$config" | egrep -q "^route-map $route_map_name permit 20$"
c=$((c+$?))
echo "$config" | egrep -q "^route-map $route_map_name deny 30$"
echo "$config" | egrep -q "^route-map $route_map_name permit 30$"
c=$((c+$?))
echo "$config" | egrep -q "^route-map $route_map_name deny 40$"
c=$((c+$?))
done
return $c
Expand All @@ -33,7 +35,10 @@ function check_installed()
echo "$config" | egrep -q "^route-map $route_map_name permit 20$"
c=$((c+$?))
e=$((e+1))
echo "$config" | egrep -q "^route-map $route_map_name deny 30$"
echo "$config" | egrep -q "^route-map $route_map_name permit 30$"
c=$((c+$?))
e=$((e+1))
echo "$config" | egrep -q "^route-map $route_map_name deny 40$"
c=$((c+$?))
e=$((e+1))
done
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,56 @@
!
{% from "common/functions.conf.j2" import get_ipv4_loopback_address %}
!
route-map FROM_BGP_INTERNAL_PEER_V4 permit 100
{% if CONFIG_DB__DEVICE_METADATA['localhost']['sub_role'] == 'BackEnd' %}
route-map FROM_BGP_INTERNAL_PEER_V4 permit 1
set originator-id {{ get_ipv4_loopback_address(CONFIG_DB__LOOPBACK_INTERFACE, "Loopback4096") | ip }}
!
route-map TO_BGP_INTERNAL_PEER_V4 permit 100
route-map FROM_BGP_INTERNAL_PEER_V6 permit 1
set ipv6 next-hop prefer-global
on-match next
!
route-map FROM_BGP_INTERNAL_PEER_V6 permit 2
set originator-id {{ get_ipv4_loopback_address(CONFIG_DB__LOOPBACK_INTERFACE, "Loopback4096") | ip }}
{% elif CONFIG_DB__DEVICE_METADATA['localhost']['switch_type'] == 'chassis-packet' %}
bgp community-list standard DEVICE_INTERNAL_COMMUNITY permit {{ constants.bgp.internal_community }}
!
route-map FROM_BGP_INTERNAL_PEER_V4 permit 1
match community DEVICE_INTERNAL_COMMUNITY
set comm-list DEVICE_INTERNAL_COMMUNITY delete
set tag {{ constants.bgp.internal_community_match_tag }}
!
route-map FROM_BGP_INTERNAL_PEER_V6 permit 1
set ipv6 next-hop prefer-global
on-match next
!
route-map FROM_BGP_INTERNAL_PEER_V6 permit 100
route-map FROM_BGP_INTERNAL_PEER_V6 permit 2
match community DEVICE_INTERNAL_COMMUNITY
set comm-list DEVICE_INTERNAL_COMMUNITY delete
set tag {{ constants.bgp.internal_community_match_tag }}
!
route-map TO_BGP_INTERNAL_PEER_V6 permit 100
route-map TO_BGP_INTERNAL_PEER_V4 permit 1
match ip address prefix-list PL_LoopbackV4
set community {{ constants.bgp.internal_community }}
!
{% if CONFIG_DB__DEVICE_METADATA['localhost']['sub_role'] == 'BackEnd' %}
route-map FROM_BGP_INTERNAL_PEER_V4 permit 2
set originator-id {{ get_ipv4_loopback_address(CONFIG_DB__LOOPBACK_INTERFACE, "Loopback4096") | ip }}
route-map TO_BGP_INTERNAL_PEER_V6 permit 2
match ipv6 address prefix-list PL_LoopbackV6
set community {{ constants.bgp.internal_community }}
!
{% else %}
route-map FROM_BGP_INTERNAL_PEER_V6 permit 1
set ipv6 next-hop prefer-global
on-match next
!
route-map FROM_BGP_INTERNAL_PEER_V6 permit 2
set originator-id {{ get_ipv4_loopback_address(CONFIG_DB__LOOPBACK_INTERFACE, "Loopback4096") | ip }}
{% endif %}
!
route-map FROM_BGP_INTERNAL_PEER_V4 permit 100
!
route-map FROM_BGP_INTERNAL_PEER_V6 permit 100
!
route-map TO_BGP_INTERNAL_PEER_V4 permit 100
!
route-map TO_BGP_INTERNAL_PEER_V6 permit 100
!
!
! end of template: bgpd/templates/internal/policies.conf.j2
!
Original file line number Diff line number Diff line change
@@ -1,17 +1,37 @@
!
! template: bgpd/templates/voq_chassis/policies.conf.j2
!
bgp community-list standard DEVICE_INTERNAL_COMMUNITY permit {{ constants.bgp.internal_community }}
!
route-map FROM_VOQ_CHASSIS_V4_PEER permit 1
match community DEVICE_INTERNAL_COMMUNITY
set comm-list DEVICE_INTERNAL_COMMUNITY delete
set tag {{ constants.bgp.internal_community_match_tag }}
!
route-map FROM_VOQ_CHASSIS_V4_PEER permit 100
!
route-map TO_VOQ_CHASSIS_V4_PEER permit 1
match ip address prefix-list PL_LoopbackV4
set community {{ constants.bgp.internal_community }}
!
route-map TO_VOQ_CHASSIS_V4_PEER permit 100
!
!
route-map FROM_VOQ_CHASSIS_V6_PEER permit 1
set ipv6 next-hop prefer-global
on-match next
!
route-map FROM_VOQ_CHASSIS_V6_PEER permit 2
match community DEVICE_INTERNAL_COMMUNITY
set comm-list DEVICE_INTERNAL_COMMUNITY delete
set tag {{ constants.bgp.internal_community_match_tag }}
!
route-map FROM_VOQ_CHASSIS_V6_PEER permit 100
!
route-map TO_VOQ_CHASSIS_V6_PEER permit 1
match ipv6 address prefix-list PL_LoopbackV6
set community {{ constants.bgp.internal_community }}
!
route-map TO_VOQ_CHASSIS_V6_PEER permit 100
!
! end of template: bgpd/templates/voq_chassis/policies.conf.j2
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
route-map {{ route_map_name }} permit 20
match {{ ip_protocol }} address prefix-list PL_Loopback{{ ip_version }}
set community {{ constants.bgp.traffic_shift_community }}
route-map {{ route_map_name }} deny 30
route-map {{ route_map_name }} permit 30
match tag {{ constants.bgp.internal_community_match_tag }}
set community {{ constants.bgp.traffic_shift_community }}
route-map {{ route_map_name }} deny 40
!
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
no route-map {{ route_map_name }} permit 20
no route-map {{ route_map_name }} deny 30
no route-map {{ route_map_name }} permit 30
no route-map {{ route_map_name }} deny 40
!
2 changes: 2 additions & 0 deletions files/image_config/constants/constants.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ constants:
"2" : 65433
bgp:
traffic_shift_community: 12345:12345
internal_community: 11111:11111
internal_community_match_tag: 1002
sentinel_community: 12345:12346
families:
- ipv4
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,17 @@
route-map TO_BGP_PEER_V4 permit 20
match ip address prefix-list PL_LoopbackV4
set community 12345:12345
route-map TO_BGP_PEER_V4 deny 30
route-map TO_BGP_PEER_V4 permit 30
match tag 1001
set community 12345:12345
route-map TO_BGP_PEER_V4 deny 40
!
route-map TO_BGP_PEER_V6 permit 20
match ipv6 address prefix-list PL_LoopbackV6
set community 12345:12345
route-map TO_BGP_PEER_V6 deny 30
route-map TO_BGP_PEER_V6 permit 30
match tag 1001
set community 12345:12345
route-map TO_BGP_PEER_V6 deny 40
!

Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,11 @@


no route-map TO_BGP_PEER_V4 permit 20
no route-map TO_BGP_PEER_V4 deny 30
no route-map TO_BGP_PEER_V4 permit 30
no route-map TO_BGP_PEER_V4 deny 40
!
no route-map TO_BGP_PEER_V6 permit 20
no route-map TO_BGP_PEER_V6 deny 30
no route-map TO_BGP_PEER_V6 permit 30
no route-map TO_BGP_PEER_V6 deny 40
!

Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,16 @@
route-map TO_BGP_PEER_V4 permit 20
match ip address prefix-list PL_LoopbackV4
set community 12345:12345
route-map TO_BGP_PEER_V4 deny 30
route-map TO_BGP_PEER_V4 permit 30
match tag 1001
set community 12345:12345
route-map TO_BGP_PEER_V4 deny 40
!
route-map TO_BGP_PEER_V6 permit 20
match ipv6 address prefix-list PL_LoopbackV6
set community 12345:12345
route-map TO_BGP_PEER_V6 deny 30
route-map TO_BGP_PEER_V6 permit 30
match tag 1001
set community 12345:12345
route-map TO_BGP_PEER_V6 deny 40
!
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@

no route-map TO_BGP_PEER_V4 permit 20
no route-map TO_BGP_PEER_V4 deny 30
no route-map TO_BGP_PEER_V4 permit 30
no route-map TO_BGP_PEER_V4 deny 40
!
no route-map TO_BGP_PEER_V6 permit 20
no route-map TO_BGP_PEER_V6 deny 30
no route-map TO_BGP_PEER_V6 permit 30
no route-map TO_BGP_PEER_V6 deny 40
!
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,11 @@
},
"CONFIG_DB__LOOPBACK_INTERFACE": {
"Loopback4096|10.10.10.10/32": {}
},
"constants": {
"bgp": {
"internal_community": "12345:556",
"internal_community_match_tag": "101"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"CONFIG_DB__DEVICE_METADATA": {
"localhost": {
"type": "SpineRouter",
"sub_role": "FrontEnd",
"switch_type": "chassis-packet"
}
},
"constants": {
"bgp": {
"internal_community": "12345:556",
"internal_community_match_tag": "101"
}
},
"loopback0_ipv4": "10.10.10.10/32"
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
{
"CONFIG_DB__DEVICE_METADATA": {
"localhost": {
"sub_role": "FrontkEnd"
"sub_role": "FrontEnd"
}
},
"constants": {
"bgp": {
"internal_community": "12345:556",
"internal_community_match_tag": "101"
}
},
"loopback0_ipv4": "10.10.10.10/32"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
!
! template: bgpd/templates/internal/policies.conf.j2
!
route-map FROM_BGP_INTERNAL_PEER_V4 permit 100
!
route-map TO_BGP_INTERNAL_PEER_V4 permit 100
route-map FROM_BGP_INTERNAL_PEER_V4 permit 1
set originator-id 10.10.10.10
!
route-map FROM_BGP_INTERNAL_PEER_V6 permit 1
set ipv6 next-hop prefer-global
on-match next
!
route-map FROM_BGP_INTERNAL_PEER_V6 permit 100
route-map FROM_BGP_INTERNAL_PEER_V6 permit 2
set originator-id 10.10.10.10
!
route-map TO_BGP_INTERNAL_PEER_V6 permit 100
route-map FROM_BGP_INTERNAL_PEER_V4 permit 100
!
route-map FROM_BGP_INTERNAL_PEER_V4 permit 2
set originator-id 10.10.10.10
route-map FROM_BGP_INTERNAL_PEER_V6 permit 100
!
route-map FROM_BGP_INTERNAL_PEER_V6 permit 2
set originator-id 10.10.10.10
route-map TO_BGP_INTERNAL_PEER_V4 permit 100
!
route-map TO_BGP_INTERNAL_PEER_V6 permit 100
!
! end of template: bgpd/templates/internal/policies.conf.j2
!
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
!
! template: bgpd/templates/internal/policies.conf.j2
!
bgp community-list standard DEVICE_INTERNAL_COMMUNITY permit 12345:556
!
route-map FROM_BGP_INTERNAL_PEER_V4 permit 1
match community DEVICE_INTERNAL_COMMUNITY
set comm-list DEVICE_INTERNAL_COMMUNITY delete
set tag 101
!
route-map FROM_BGP_INTERNAL_PEER_V6 permit 1
set ipv6 next-hop prefer-global
on-match next
!
route-map FROM_BGP_INTERNAL_PEER_V6 permit 2
match community DEVICE_INTERNAL_COMMUNITY
set comm-list DEVICE_INTERNAL_COMMUNITY delete
set tag 101
!
route-map TO_BGP_INTERNAL_PEER_V4 permit 1
match ip address prefix-list PL_LoopbackV4
set community 12345:556
!
route-map TO_BGP_INTERNAL_PEER_V6 permit 2
match ipv6 address prefix-list PL_LoopbackV6
set community 12345:556
!
route-map FROM_BGP_INTERNAL_PEER_V4 permit 100
!
route-map FROM_BGP_INTERNAL_PEER_V6 permit 100
!
route-map TO_BGP_INTERNAL_PEER_V4 permit 100
!
route-map TO_BGP_INTERNAL_PEER_V6 permit 100
!
! end of template: bgpd/templates/internal/policies.conf.j2
!
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
!
! template: bgpd/templates/internal/policies.conf.j2
!
route-map FROM_BGP_INTERNAL_PEER_V4 permit 100
!
route-map TO_BGP_INTERNAL_PEER_V4 permit 100
!
route-map FROM_BGP_INTERNAL_PEER_V6 permit 1
set ipv6 next-hop prefer-global
on-match next
!
route-map FROM_BGP_INTERNAL_PEER_V4 permit 100
!
route-map FROM_BGP_INTERNAL_PEER_V6 permit 100
!
route-map TO_BGP_INTERNAL_PEER_V4 permit 100
!
route-map TO_BGP_INTERNAL_PEER_V6 permit 100
!
! end of template: bgpd/templates/internal/policies.conf.j2
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
route-map test_rm_name permit 20
match ip address prefix-list PL_LoopbackV4
set community 12345:555
route-map test_rm_name deny 30
route-map test_rm_name permit 30
match tag 1002
set community 12345:555
route-map test_rm_name deny 40
!
5 changes: 3 additions & 2 deletions src/sonic-bgpcfgd/tests/data/sonic-cfggen/tsa/isolate.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
{
"constants": {
"bgp": {
"traffic_shift_community": "12345:555"
"traffic_shift_community": "12345:555",
"internal_community_match_tag": "1002"
}
},
"route_map_name": "test_rm_name",
"ip_version": "V4",
"ip_protocol": "ip"
}
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
no route-map test_rm permit 20
no route-map test_rm deny 30
no route-map test_rm permit 30
no route-map test_rm deny 40
!
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
{
"CONFIG_DB__DEVICE_METADATA": {
"localhost": {}
},
"constants": {
"bgp": {
"internal_community": "12345:556",
"internal_community_match_tag": "101"
}
}
}
Loading
Loading