This article discusses Spoke-Hub-Hub-Spoke (SHHS) configuration via Versa Director GUI. Topology A is referred in doing the SHHS configuration. In Spoke-Hub-Hub-Spoke setup, there are three different transport domain(Networks) connecting the topology. Transport Domain id 30 for SPOKE1& SPOKE2 to HUB1(MPLS1), Transport Domain id 20 HUB1 to HUB2 (Internet) connectivity and Transport Domain id 35 for SPOKE3& SPOKE 4 to HUB2 (MPLS2). Controller reachability is via Hub only (Refer KB for Controller behind HUB setup). There is no direct communication between two spokes of different spoke group. HUB1 and HUB2 will act as transit for communication between two different spoke groups

Pre-requisite
· Versa director and Controller already deployed. Should be aware of Workflow Template and Branch On boarding.




Follow work flow template to created Device Configuration > Workflow>Devices> + Add Device and Device Group for HUB1 staging




Follow work flow template to create Device
· Hub1

§ There is already a redistribution policy created by workflow “To-DUN-SubOrg-LAN-VR-Export”, configured in LAN-VR and called in LAN-Export-VR to export BGP routes from LAN-VR to LAN-Export-VR on HUB1.
§ These routes are advertise by HUB1 from LAN-Export-VR as next hop-self to controller(RR, but this can cause a routing loop as HUB1 will be advertising HUB2 and its spoke group routes as self.
§ To avoid this we will add one more term to redistribution policy “To-DUN-SubOrg-LAN-VR-Export” in DUN-SubOrg-LAN-VR to match routes learned via Hub2 and add specific community when exporting them to LAN-Export-VR of HUB1.
§ First we will create a prefix list to match the HUB2 routes.

§ In redistribution policy To-DUN-SubOrg-LAN-VR-Export add on more term(PEER-HUB) on top and call the prefix-list PEER-HUB. You can also uses Community/Extended Community in place of Prefix Filter.

§ Add a community in action and accept. We have set community 8889:1 for HUB2 routes in HUB1 (On HUB2 set it to 8880:1 for HUB1 routes

§ In routing instance DUN-SubOrg-Control-VR on Hub1 edit BGP> Import-From-SDWAN-policy and add a term(Reject-Loop) on top to reject the Hub1 and it spoke(1/2) group routes exported by Hub2.
§ We will use community configured on HUB2 for HUB1 routes to match and reject them.


· HUB 2
§ On Hub2, follow similar step as we did in Hub1. Add VRF import target of Hub1to Install the Hub1 advertised routes in Hub2 LAN-VR.

§ Set specific community to HUB1 route when exporting to LAN-Export-VR.



§ Reject the Hub2 and it spoke group routes exported by Hub1











#HUB1:
“LAN-VR” and “LAN-VR-Export” in HUB will have routes for spoke subnets. Hub will act as transit router for all spoke to spoke communication.
admin@HUB1-cli> show route routing-instance DUN-SubOrg-LAN-VR-Export
Prot Type Dest Address/Mask Next-hop Age Interface name
---- ---- ----------------- -------- --- --------------
BGP RTI +192.168.77.0/24 0.0.0.0 2d23h10m Indirect
BGP RTI +192.168.88.0/24 0.0.0.0 2d23h10m Indirect
BGP RTI +192.168.99.0/24 0.0.0.0 2d23h11m Indirect
BGP RTI +192.168.109.0/24 0.0.0.0 2d23h11m Indirect
BGP RTI +192.168.129.0/24 0.0.0.0 2d23h11m Indirect
admin@HUB1-cli> show route routing-instance DUN-SubOrg-LAN-VR
Prot Type Dest Address/Mask Next-hop Age Interface name
---- ---- ----------------- -------- --- --------------
conn N/A +169.254.0.2/31 0.0.0.0 2d23h20m tvi-0/603.0
local N/A +169.254.0.3/32 0.0.0.0 2d23h20m directly connected
conn N/A +192.168.56.0/24 0.0.0.0 2d23h11m vni-0/2.0
local N/A +192.168.56.1/32 0.0.0.0 2d23h11m directly connected
BGP N/A +192.168.77.0/24 10.4.64.103 2d23h11m Indirect
BGP N/A +192.168.88.0/24 10.4.64.105 2d23h11m Indirect
BGP N/A +192.168.99.0/24 10.4.64.106 2d23h11m Indirect
BGP N/A +192.168.109.0/24 10.4.64.106 2d23h11m Indirect
BGP N/A +192.168.129.0/24 10.4.64.106 2d23h11m Indirect
admin@HUB1-cli> show interfaces brief
tvi-0/16.0 n/a up up 2 DUN-SubOrg-Control-VR 10.4.0.104/32
tvi-0/17.0 n/a up up 2 DUN-SubOrg-Control-VR 10.4.64.104/32
tvi-0/602.0 n/a up up 2 INT-Transport-VR 169.254.0.2/31
tvi-0/603.0 n/a up up 2 DUN-SubOrg-LAN-VR 169.254.0.3/31
tvi-0/604.0 n/a up up 2 INT-Transport-VR 169.254.0.4/31
tvi-0/605.0 n/a up up 2 MPLS-HUB1-Transport-VR 169.254.0.5/31
vni-0/0.0 52:54:00:ac:f4:70 up up 2 INT-Transport-VR 192.168.50.10/24
vni-0/1.0 52:54:00:df:7f:3b up up 2 MPLS-HUB1-Transport-VR 192.168.51.10/24
vni-0/2.0 52:54:00:a3:cd:d0 up up 2 DUN-SubOrg-LAN-VR 192.168.56.1/24
#SPOKE1:
Spoke1 will have all route with next hop as hub1 tvi-0/17 (.104)
admin@SPOKE1-cli> show route routing-instance DUN-SubOrg-LAN-VR
Prot Type Dest Address/Mask Next-hop Age Interface name
---- ---- ----------------- -------- --- --------------
BGP N/A +192.168.56.0/24 10.4.64.104 2d23h06m Indirect
conn N/A +192.168.77.0/24 0.0.0.0 5d15h16m vni-0/2.10
local N/A +192.168.77.1/32 0.0.0.0 5d15h16m directly connected
BGP N/A +192.168.88.0/24 10.4.64.104 2d23h06m Indirect
BGP N/A +192.168.99.0/24 10.4.64.104 2d23h06m Indirect
BGP N/A +192.168.109.0/24 10.4.64.104 2d23h06m Indirect
BGP N/A +192.168.129.0/24 10.4.64.104 2d23h06m Indirect
admin@SPOKE1-cli> show interfaces brief
tvi-0/16.0 n/a up up 2 DUN-SubOrg-Control-VR 10.4.0.103/32
tvi-0/17.0 n/a up up 2 DUN-SubOrg-Control-VR 10.4.64.103/32
vni-0/1.0 52:54:00:1a:9b:e6 up up 2 SG-MPLS1-Transport-VR 192.168.71.1/24
vni-0/2.10 52:54:00:e8:96:34 up up 2 DUN-SubOrg-LAN-VR 192.168.77.1/24
#SPOKE2:
Similarly spoke2 will have all route with next hop as hub1 tvi-0/17 (.104)
admin@SPOKE2-cli> show route routing-instance DUN-SubOrg-LAN-VR
Prot Type Dest Address/Mask Next-hop Age Interface name
---- ---- ----------------- -------- --- --------------
BGP N/A +192.168.56.0/24 10.4.64.104 2d23h08m Indirect
BGP N/A +192.168.77.0/24 10.4.64.104 2d23h08m Indirect
conn N/A +192.168.88.0/24 0.0.0.0 5d15h22m vni-0/2.0
local N/A +192.168.88.1/32 0.0.0.0 5d15h22m directly connected
BGP N/A +192.168.99.0/24 10.4.64.104 2d23h08m Indirect
BGP N/A +192.168.109.0/24 10.4.64.104 2d23h08m Indirect
BGP N/A +192.168.129.0/24 10.4.64.104 2d23h08m Indirect
admin@SPOKE2-cli> show interfaces brief
tvi-0/16.0 n/a up up 2 DUN-SubOrg-Control-VR 10.4.0.105/32
tvi-0/17.0 n/a up up 2 DUN-SubOrg-Control-VR 10.4.64.105/32
vni-0/1.0 52:54:00:4b:65:2f up up 2 SG-MPLS1-Transport-VR 192.168.81.1/24
vni-0/2.0 52:54:00:26:f0:e4 up up 2 DUN-SubOrg-LAN-VR 192.168.88.1/24
#HUB2:
“LAN-VR” and “LAN-VR-Export” in HUB will have routes for spoke subnets. Hub will act as transit router for all spoke to spoke communication.
admin@HUB1-cli> show route routing-instance DUN-SubOrg-LAN-VR-Export
Prot Type Dest Address/Mask Next-hop Age Interface name
---- ---- ----------------- -------- --- --------------
BGP RTI +192.168.56.0/24 0.0.0.0 2d23h22m Indirect
BGP RTI +192.168.77.0/24 0.0.0.0 2d23h22m Indirect
BGP RTI +192.168.88.0/24 0.0.0.0 2d23h22m Indirect
BGP RTI +192.168.109.0/24 0.0.0.0 2d23h37m Indirect
BGP RTI +192.168.129.0/24 0.0.0.0 2d23h35m Indirect
admin@HUB1-cli> show route routing-instance DUN-SubOrg-LAN-VR
Prot Type Dest Address/Mask Next-hop Age Interface name
---- ---- ----------------- -------- --- --------------
BGP N/A +192.168.56.0/24 10.4.64.104 2d23h22m Indirect
BGP N/A +192.168.77.0/24 10.4.64.104 2d23h22m Indirect
BGP N/A +192.168.88.0/24 10.4.64.104 2d23h22m Indirect
conn N/A +192.168.99.0/24 0.0.0.0 2d23h42m vni-0/2.0
local N/A +192.168.99.1/32 0.0.0.0 2d23h42m directly connected
BGP N/A +192.168.109.0/24 10.4.64.107 2d23h37m Indirect
BGP N/A +192.168.129.0/24 10.4.64.108 2d23h35m Indirect
admin@HUB1-cli> show interfaces brief
tvi-0/16.0 n/a up up 2 DUN-SubOrg-Control-VR 10.4.0.106/32
tvi-0/17.0 n/a up up 2 DUN-SubOrg-Control-VR 10.4.64.106/32
tvi-0/602.0 n/a up up 2 INT-Transport-VR 169.254.0.2/31
tvi-0/603.0 n/a up up 2 DUN-SubOrg-LAN-VR 169.254.0.3/31
tvi-0/604.0 n/a up up 2 INT-Transport-VR 169.254.0.4/31
tvi-0/605.0 n/a up up 2 MPLS-HUB2-Transport-VR 169.254.0.5/31
vni-0/0.0 52:54:00:5a:e4:e4 up up 2 INT-Transport-VR 192.168.90.1/24
vni-0/1.0 52:54:00:52:b0:e3 up up 2 MPLS-HUB2-Transport-VR 192.168.91.1/24
vni-0/2.0 52:54:00:85:84:75 up up 2 DUN-SubOrg-LAN-VR 192.168.99.1/24
#SPOKE3:
Spoke3 will have all routes with next hop as hub2 tvi-0/17 (.106)
admin@SPOKE1-cli> show route routing-instance DUN-SubOrg-LAN-VR
Prot Type Dest Address/Mask Next-hop Age Interface name
---- ---- ----------------- -------- --- --------------
BGP N/A +192.168.56.0/24 10.4.64.106 2d23h24m Indirect
BGP N/A +192.168.77.0/24 10.4.64.106 2d23h24m Indirect
BGP N/A +192.168.88.0/24 10.4.64.106 2d23h24m Indirect
BGP N/A +192.168.99.0/24 10.4.64.106 2d23h40m Indirect
conn N/A +192.168.109.0/24 0.0.0.0 2d23h40m vni-0/2.0
local N/A +192.168.109.1/32 0.0.0.0 2d23h40m directly connected
BGP N/A +192.168.129.0/24 10.4.64.106 2d23h37m Indirect
admin@SPOKE1-cli> show interfaces brief
NAME MAC OPER ADMIN TENANT VRF IP
-----------------------------------------------------------------------------------------------
tvi-0/16.0 n/a up up 2 DUN-SubOrg-Control-VR 10.4.0.107/32
tvi-0/17.0 n/a up up 2 DUN-SubOrg-Control-VR 10.4.64.107/32
vni-0/1.0 52:54:00:61:25:6e up up 2 SG-MPLS2-Transport-VR 192.168.101.1/24
vni-0/2.0 52:54:00:5c:be:e1 up up 2 DUN-SubOrg-LAN-VR 192.168.109.1/24
#SPOKE4:
Similarly spoke4 will have all routes with next hop as hub2 tvi-0/17 (.106)
admin@SPOKE2-cli> show route routing-instance DUN-SubOrg-LAN-VR
Prot Type Dest Address/Mask Next-hop Age Interface name
---- ---- ----------------- -------- --- --------------
BGP N/A +192.168.56.0/24 10.4.64.106 2d23h25m Indirect
BGP N/A +192.168.77.0/24 10.4.64.106 2d23h25m Indirect
BGP N/A +192.168.88.0/24 10.4.64.106 2d23h25m Indirect
BGP N/A +192.168.99.0/24 10.4.64.106 2d23h39m Indirect
BGP N/A +192.168.109.0/24 10.4.64.106 2d23h39m Indirect
conn N/A +192.168.129.0/24 0.0.0.0 2d23h39m vni-0/2.0
local N/A +192.168.129.1/32 0.0.0.0 2d23h39m directly connected
admin@SPOKE2-cli> show interfaces brief
tvi-0/16.0 n/a up up 2 DUN-SubOrg-Control-VR 10.4.0.108/32
tvi-0/17.0 n/a up up 2 DUN-SubOrg-Control-VR 10.4.64.108/32
vni-0/1.0 52:54:00:8c:7f:91 up up 2 SG-MPLS2-Transport-VR 192.168.121.1/24
vni-0/2.0 52:54:00:c6:75:5e up up 2 DUN-SubOrg-LAN-VR 192.168.129.1/24