-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[bgp]: Implement Universal Traffic Shift for SONiC (#3209)
* [bgp]: Implement Universal Traffic Shift for SONiC * Fix issue with ipv6 loopback match * Add tests
- Loading branch information
1 parent
1860dd5
commit b4517b9
Showing
12 changed files
with
299 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
#!/bin/bash | ||
|
||
c=0 | ||
config=$(vtysh -c "show run") | ||
echo "$config" | grep -q "route-map TO_BGP_PEER_V4 permit 2" | ||
c=$(($c+$?)) | ||
echo "$config" | grep -q "route-map TO_BGP_PEER_V4 deny 3" | ||
c=$(($c+$?)) | ||
echo "$config" | grep -q "route-map TO_BGP_PEER_V6 permit 2" | ||
c=$(($c+$?)) | ||
echo "$config" | grep -q "route-map TO_BGP_PEER_V6 deny 3" | ||
c=$(($c+$?)) | ||
|
||
if [[ $c -eq 4 ]]; | ||
then | ||
vtysh -c "configure terminal" -c "route-map TO_BGP_PEER_V4 permit 2" -c "match ip address prefix-list PL_LoopbackV4" | ||
vtysh -c "configure terminal" -c "route-map TO_BGP_PEER_V4 deny 3" | ||
vtysh -c "configure terminal" -c "route-map TO_BGP_PEER_V6 permit 2" -c "match ipv6 address prefix-list PL_LoopbackV6" | ||
vtysh -c "configure terminal" -c "route-map TO_BGP_PEER_V6 deny 3" | ||
echo "System Mode: Normal -> Maintenance" | ||
else | ||
echo "System is already in Maintenance mode" | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
#!/bin/bash | ||
|
||
c=0 | ||
config=$(vtysh -c "show run") | ||
echo "$config" | grep -q "route-map TO_BGP_PEER_V4 permit 2" | ||
c=$(($c+$?)) | ||
echo "$config" | grep -q "route-map TO_BGP_PEER_V4 deny 3" | ||
c=$(($c+$?)) | ||
echo "$config" | grep -q "route-map TO_BGP_PEER_V6 permit 2" | ||
c=$(($c+$?)) | ||
echo "$config" | grep -q "route-map TO_BGP_PEER_V6 deny 3" | ||
c=$(($c+$?)) | ||
|
||
if [[ $c -eq 0 ]]; | ||
then | ||
vtysh -c "configure terminal" -c "no route-map TO_BGP_PEER_V4 deny 3" | ||
vtysh -c "configure terminal" -c "no route-map TO_BGP_PEER_V4 permit 2" | ||
vtysh -c "configure terminal" -c "no route-map TO_BGP_PEER_V6 deny 3" | ||
vtysh -c "configure terminal" -c "no route-map TO_BGP_PEER_V6 permit 2" | ||
|
||
echo "System Mode: Maintenance -> Normal" | ||
else | ||
echo "System is already in Normal mode" | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
#!/bin/bash | ||
|
||
echo "Traffic Shift Check:" | ||
c=0 | ||
config=$(vtysh -c "show run") | ||
echo "$config" | grep -q "route-map TO_BGP_PEER_V4 permit 2" | ||
c=$(($c+$?)) | ||
echo "$config" | grep -q "route-map TO_BGP_PEER_V4 deny 3" | ||
c=$(($c+$?)) | ||
echo "$config" | grep -q "route-map TO_BGP_PEER_V6 permit 2" | ||
c=$(($c+$?)) | ||
echo "$config" | grep -q "route-map TO_BGP_PEER_V6 deny 3" | ||
c=$(($c+$?)) | ||
|
||
if [[ $c -eq 4 ]]; | ||
then | ||
echo "System Mode: Normal" | ||
elif [[ $c -eq 0 ]]; | ||
then | ||
echo "System Mode: Maintenance" | ||
else | ||
echo "System Mode: Not consistent" | ||
fi | ||
|
||
echo |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
#!/bin/bash | ||
|
||
docker exec -i bgp /usr/bin/TSA |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
#!/bin/bash | ||
|
||
docker exec -i bgp /usr/bin/TSB |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
#!/bin/bash | ||
|
||
docker exec -i bgp /usr/bin/TSC | ||
|
||
/usr/bin/portstat -p 5 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
125 changes: 125 additions & 0 deletions
125
src/sonic-config-engine/tests/sample_output/bgpd_frr.conf
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,125 @@ | ||
! | ||
! =========== Managed by sonic-cfggen DO NOT edit manually! ==================== | ||
! generated by templates/quagga/bgpd.conf.j2 with config DB data | ||
! file: bgpd.conf | ||
! | ||
! | ||
hostname switch-t0 | ||
password zebra | ||
log syslog informational | ||
log facility local4 | ||
agentx | ||
! enable password ! | ||
! | ||
! bgp multiple-instance | ||
! | ||
route-map FROM_BGP_SPEAKER_V4 permit 10 | ||
! | ||
route-map TO_BGP_SPEAKER_V4 deny 10 | ||
! | ||
ip prefix-list PL_LoopbackV4 permit 10.1.0.32/32 | ||
ipv6 prefix-list PL_LoopbackV6 permit fc00:1::32/64 | ||
! | ||
! | ||
route-map TO_BGP_PEER_V4 permit 100 | ||
! | ||
route-map TO_BGP_PEER_V6 permit 100 | ||
! | ||
router bgp 65100 | ||
bgp log-neighbor-changes | ||
bgp bestpath as-path multipath-relax | ||
no bgp default ipv4-unicast | ||
bgp graceful-restart restart-time 240 | ||
bgp graceful-restart | ||
bgp graceful-restart preserve-fw-state | ||
bgp router-id 10.1.0.32 | ||
network 10.1.0.32/32 | ||
address-family ipv6 | ||
network fc00:1::32/64 | ||
exit-address-family | ||
network 192.168.0.1/27 | ||
neighbor 10.0.0.57 remote-as 64600 | ||
neighbor 10.0.0.57 description ARISTA01T1 | ||
neighbor 10.0.0.57 route-map TO_BGP_PEER_V4 out | ||
address-family ipv4 | ||
neighbor 10.0.0.57 allowas-in 1 | ||
neighbor 10.0.0.57 activate | ||
neighbor 10.0.0.57 soft-reconfiguration inbound | ||
maximum-paths 64 | ||
exit-address-family | ||
neighbor 10.0.0.59 remote-as 64600 | ||
neighbor 10.0.0.59 description ARISTA02T1 | ||
neighbor 10.0.0.59 route-map TO_BGP_PEER_V4 out | ||
address-family ipv4 | ||
neighbor 10.0.0.59 allowas-in 1 | ||
neighbor 10.0.0.59 activate | ||
neighbor 10.0.0.59 soft-reconfiguration inbound | ||
maximum-paths 64 | ||
exit-address-family | ||
neighbor 10.0.0.61 remote-as 64600 | ||
neighbor 10.0.0.61 description ARISTA03T1 | ||
neighbor 10.0.0.61 route-map TO_BGP_PEER_V4 out | ||
address-family ipv4 | ||
neighbor 10.0.0.61 allowas-in 1 | ||
neighbor 10.0.0.61 activate | ||
neighbor 10.0.0.61 soft-reconfiguration inbound | ||
maximum-paths 64 | ||
exit-address-family | ||
neighbor 10.0.0.63 remote-as 64600 | ||
neighbor 10.0.0.63 description ARISTA04T1 | ||
neighbor 10.0.0.63 route-map TO_BGP_PEER_V4 out | ||
address-family ipv4 | ||
neighbor 10.0.0.63 allowas-in 1 | ||
neighbor 10.0.0.63 activate | ||
neighbor 10.0.0.63 soft-reconfiguration inbound | ||
maximum-paths 64 | ||
exit-address-family | ||
neighbor fc00::7a remote-as 64600 | ||
neighbor fc00::7a description ARISTA03T1 | ||
address-family ipv6 | ||
neighbor fc00::7a allowas-in 1 | ||
neighbor fc00::7a activate | ||
neighbor fc00::7a soft-reconfiguration inbound | ||
neighbor fc00::7a route-map set-next-hop-global-v6 in | ||
neighbor fc00::7a route-map TO_BGP_PEER_V6 out | ||
maximum-paths 64 | ||
exit-address-family | ||
neighbor fc00::7e remote-as 64600 | ||
neighbor fc00::7e description ARISTA04T1 | ||
address-family ipv6 | ||
neighbor fc00::7e allowas-in 1 | ||
neighbor fc00::7e activate | ||
neighbor fc00::7e soft-reconfiguration inbound | ||
neighbor fc00::7e route-map set-next-hop-global-v6 in | ||
neighbor fc00::7e route-map TO_BGP_PEER_V6 out | ||
maximum-paths 64 | ||
exit-address-family | ||
neighbor fc00::72 remote-as 64600 | ||
neighbor fc00::72 description ARISTA01T1 | ||
address-family ipv6 | ||
neighbor fc00::72 allowas-in 1 | ||
neighbor fc00::72 activate | ||
neighbor fc00::72 soft-reconfiguration inbound | ||
neighbor fc00::72 route-map set-next-hop-global-v6 in | ||
neighbor fc00::72 route-map TO_BGP_PEER_V6 out | ||
maximum-paths 64 | ||
exit-address-family | ||
neighbor fc00::76 remote-as 64600 | ||
neighbor fc00::76 description ARISTA02T1 | ||
address-family ipv6 | ||
neighbor fc00::76 allowas-in 1 | ||
neighbor fc00::76 activate | ||
neighbor fc00::76 soft-reconfiguration inbound | ||
neighbor fc00::76 route-map set-next-hop-global-v6 in | ||
neighbor fc00::76 route-map TO_BGP_PEER_V6 out | ||
maximum-paths 64 | ||
exit-address-family | ||
!! | ||
maximum-paths 64 | ||
! | ||
route-map ISOLATE permit 10 | ||
set as-path prepend 65100 | ||
! | ||
route-map set-next-hop-global-v6 permit 10 | ||
set ipv6 next-hop prefer-global | ||
! |
44 changes: 44 additions & 0 deletions
44
src/sonic-config-engine/tests/sample_output/zebra_frr.conf
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
! | ||
! =========== Managed by sonic-cfggen DO NOT edit manually! ==================== | ||
! generated by templates/quagga/zebra.conf.j2 using config DB data | ||
! file: zebra.conf | ||
! | ||
! | ||
hostname switch-t0 | ||
password zebra | ||
enable password zebra | ||
! | ||
! Enable link-detect (default disabled) | ||
interface PortChannel01 | ||
link-detect | ||
! | ||
interface PortChannel02 | ||
link-detect | ||
! | ||
interface PortChannel03 | ||
link-detect | ||
! | ||
interface PortChannel04 | ||
link-detect | ||
! | ||
! | ||
! set static default route to mgmt gateway as a backup to learned default | ||
ip route 0.0.0.0/0 10.0.0.1 200 | ||
! | ||
! Set ip source to loopback for bgp learned routes | ||
route-map RM_SET_SRC permit 10 | ||
set src 10.1.0.32 | ||
! | ||
|
||
route-map RM_SET_SRC6 permit 10 | ||
set src fc00:1::32 | ||
! | ||
ip protocol bgp route-map RM_SET_SRC | ||
! | ||
ipv6 protocol bgp route-map RM_SET_SRC6 | ||
! | ||
! | ||
log syslog informational | ||
log facility local4 | ||
! | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters