đ§Ş Lab 04 ¡ Multihomed Edge á áá áşááᯠáĄá áĄááŻáśá¸ áááşááąáŹááşááźááşá¸¶
â Validated on Arista cEOS 4.32.0F, 2026-08-03. ááąáŹáşááźááŹá¸ááąáŹ output áĄáŹá¸ááŻáśá¸ááᯠlive fabric ááž áááŻááşáááŻááşáááşá¸áá°ááŹá¸ááŤáááşá
ááźáŹááźááˇáşááťáááş: ~áá áááá Ạ¡ Nodes áĄááąáĄáá˝ááş: á áᯠ(Switches/Routers á áᯠ+ Hosts á ááŻ)
16 GB Lab VM áááŻáĄááşááŤáááş
cEOS containers á
ááŻáááş 16 GB host áá
áşááŻááᯠááźááˇáşááťááşá
áąáááŻááşááŤáááş â áááááŻáśá¸ á
ááşá¸áááşáážáŻáá˝ááş VM áá
áşááŻááŻáśá¸ crash ááźá
áşáá˝áŹá¸áá˛áˇáá°á¸áááşá --max-workers 1 ááźááˇáş deploy ááźáŻááŻááşááŤá áĄáááşá áááşá VM áááş áááŻáááŻááąá¸áááşááŤá sw1 ááᯠááťááşáážááşá host1 ááᯠr1 áážááˇáş áááŻááşáááŻááş ááťáááşáááşáááŻááşááŤáááşá VRRP á
ááşá¸áááşáážáŻááᯠáááşáá˝ááşááááşááźá
áşááąáŹáşáááşá¸ multihoming á
áá
áşááᯠáááşáááşá
ááşá¸áááşáááŻááşáááş ááźá
áşáááşá
ááá lab ááŻáśá¸ááŻáá˝ááş loopbacks ááťáŹá¸ááᯠnetwork ááťáŹá¸áĄááźá áş áĄá áŹá¸áááŻá¸ áĄááŻáśá¸ááźáŻáá˛áˇáááşá ᤠlab áááş ááŻáśá¸áá˝á˛ áááŻáˇáááŻááş site áĄááąá¸á áŹá¸áá áşááŻá áĄá á áşáĄáážááş áá˝á˛áˇá ááşá¸ááŻáś ááźá áşáááş- áĄá á áşáĄáážááş hosts ááťáŹá¸á Access switch áá áşááŻá Redundant default gateway áá áşááŻá áážááˇáş ááŽá¸ááźáŹá¸ upstream providers áážá áşáᯠâ áááŻáˇááąáŹááş Layer áá áşááŻááťááşá¸á áŽááᯠááźááşááąáŹááşááźáŽá¸ áá˝ááşáááş áááźááşááąáŹááşáᲠááśáááŻááşáááşáážáááŻáśááᯠá áąáŹááˇáşááźááˇáşááąáˇááŹááŤáááşá
Multihoming áááŻáááşáážáŹ Provider áá áşááŻáááşá¸áᎠlinks áážá áşáᯠáááŻááşáᲠááá°ááŽááąáŹ Provider áážá áşááŻáᎠááťáááşáááşááźááşá¸ ááźá áşáááşá Provider áá áşááŻáááşá¸áᎠlinks áážá áşáᯠááťáááşááźááşá¸áááş ááźááŻá¸áááŻááşá¸ááźááşááąáŹááşáážáŻ (cable fault) áááŻáᏠááŹáá˝ááşááąá¸áááŻááşáááşá ááá°ááŽááąáŹ Provider áážá áşáᯠááťáááşáááşááźááşá¸áááş ááᯠprovider áá áşááŻááŻáśá¸ outage ááźá áşáá˝áŹá¸áááˇáş áĄááźáąáĄááąááᯠááŹáá˝ááşááąá¸áááŻááşáááş â áááşá¸áááş path selection áážááˇáş policy ááťáŹá¸ááᯠáĄáážááşááááş á ááşá¸á áŹá¸áá˝áąá¸ááąáŤáşá áąáááˇáş áááşáá˝áąáˇáĄááźáąáĄááą ááźá áşáááşá
áĄááźááşá
áááşáááş áááşá¸áá˝ážááş (áááşááąááŹ: labs/edge-lab/)
áĄáááˇáş á ¡ Lab Fabric ááᯠá áááşáááşáááşá፠(á run áááąá¸ááŤá)
cd labs/edge-lab
sudo containerlab deploy -t topology.clab.yml --max-workers 1
áĄáááˇáş á ¡ áĄááźááşáĄáážááş áááşá¸áá˝ážááşáážáŻááŤáážáááąáŹ Interactive Walkthrough ááᯠá áááşááŤ
./run.sh --guided
áĄááźáŹá¸ áá˝áąá¸ááťááşáááŻááşááąáŹ áááşá¸áááşá¸ááťáŹá¸ (Automated Script áááŻáˇáááŻááş Manual CLI)
- áĄáááŻáĄááťáąáŹááş Script ááźááˇáş áĄááźááşáááˇáşáá˝ááşá¸ááźááşá¸:
./run.sh 02 # step 02 ááᯠapply áážááˇáş verify áĄáááŻáĄááťáąáŹááş ááźáŻááŻááşáááş ./run.sh --all # áĄáááˇáşáĄáŹá¸ááŻáśá¸ááᯠáĄá ááşáááŻááş run áááş - Manual Line-by-Line CLI ááźááˇáş ááŻááşááąáŹááşááźááşá¸:
Container node ááąáŤáşáá˝ááş áááŻááşáááŻááş interactive CLI shell áá˝ááˇáşáááş:
áááŻáˇáááŻááş áĄáááˇáşáá áşááŻááťááşá¸á áŽá config snippet ááťáŹá¸ááᯠstdin áážáá áşáááˇáş ááąá¸áááŻáˇáááş:
docker exec -it clab-edge-lab-r1 Clidocker exec -i clab-edge-lab-r1 Cli -p 15 < steps/02-r1-underlay.cfg
áááşáá°ááąáˇááŹááááˇáş áĄááťááşááťáŹá¸¶
- Provider ááŽáááŻáˇ Dual-homing ááťáááşáááşááźááşá¸áážááˇáş uplink áá áşáᯠááźááşááąáŹááşáá˝áŹá¸áááˇáşáĄá፠áááşáá˝áąáˇ áááşáááŻáˇááźá áşáá˝áŹá¸ááááşá¸
- VRRP â Host áá˝ááş gateway áá áşááŻáááşá¸áᏠáážáááąááŤá dual uplinks áážáááąááŻáśááźááˇáş áĄáááşááźáąáŹááˇáş áĄááŻáśá¸ááááşáááááşá¸
- L2 access layer áááş áááşáááˇáşááąááŹáá˝ááş áááşáááˇáşááźáŽá¸ routing áááşáááˇáşááąááŹáá˝ááş á áááşááááşá¸
- ááťááŻáˇáá˝ááşá¸ááťááşááᯠrouter á áĄááźááşááž áááŻááşáᲠhost á áĄááźááşááž áááşáážáŻá á áşááąá¸ááźááşá¸
Topology áĄáááşá¸áĄááťááşá¸¶
graph LR
H1["host1<br/>192.168.10.10"] --- SW["sw1<br/>VLAN 10"]
SW --- R1["r1<br/>VRRP 110"]
SW --- R2["r2<br/>VRRP 100"]
R1 ---|iBGP| R2
R1 ---|"eBGP"| R3["r3<br/>AS 65002<br/>provider A"]
R2 ---|"eBGP"| R4["r4<br/>AS 65003<br/>provider B"]
R3 ---|"peering"| R4
R3 --- H2["host2<br/>172.16.30.10"]
R4 --- H3["host3<br/>172.16.40.10"]
classDef edge fill:#1565c0,stroke:#90caf9,color:#ffffff,stroke-width:2px,font-size:14px;
classDef prov fill:#2e7d32,stroke:#a5d6a7,color:#ffffff,stroke-width:2px,font-size:14px;
classDef host fill:#ef6c00,stroke:#ffcc80,color:#ffffff,stroke-width:2px,font-size:14px;
class R1,R2,SW edge; class R3,R4 prov; class H1,H2,H3 host;
áááşá áá˝ááşáááşáááş AS 65001 ááźá áşáááşá ááááşáááŻááşááąáŹ ááŽá¸ááźáŹá¸ providers áážá áşááŻááśááž transit áááşáá°ááŹá¸ááźáŽá¸ ááᯠproviders áĄááťááşá¸ááťááşá¸áááşáááşá¸ peering ááťáááşáááşááŹá¸ááźáááş â áááşá¸ááźáąáŹááˇáş destination áááŻááşá¸ááŽáááŻáˇ ááá°ááŽááąáŹ áĄááťáŹá¸áážááááˇáş áááşá¸ááźáąáŹááşá¸áážá áşáᯠááźá áşááąáŤáşá áąáááşá
Traffic á áŽá¸áááşá¸áᏠáááşá¸ááźáąáŹááşá¸áĄáááŻááşá¸ áááşááž ááŹáááŻáˇ áááşáážáŻááŤ: User â Access switch â Edge routers â Provider â Remote hostá Link address ááťáŹá¸ááᯠáááşáážáŻá áá˝ááşáá°á áąáááş áĄáąáŹááşááŤáááŹá¸áá˝ááş ááąáŹáşááźááŹá¸ááŤáááş -
| Device | áĄáááşá¸ááášá (Role) | áĄááá Addresses ááťáŹá¸ |
|---|---|---|
| host1 | User endpoint | 192.168.10.10/24, Gateway 192.168.10.1 |
| sw1 | L2 access switch | VLAN 10, IP ááážáá፠|
| r1 | Edge, VRRP Master | 192.168.10.2, Uplink 10.0.13.1 â Provider A |
| r2 | Edge, VRRP Backup | 192.168.10.3, Uplink 10.0.24.2 â Provider B |
| r3 | Provider A, AS 65002 | 172.16.30.0/24 ááᯠááźáąááŹáááş |
| r4 | Provider B, AS 65003 | 172.16.40.0/24 ááᯠááźáąááŹáááş |
| host2 / host3 | Remote endpoints | Provider A / Provider B ááąáŹááşáá˝ááşáá˝ááş áážááááş |
ááŽá¸ááźáŹá¸áá˝ááşáááşááąáŹ Redundancy áĄáá˝ážáŹ á áᯠ(ᤠlab á áĄááá áĄáážá áşááŹá ááźá áşáááş) -
áá ááŽá¸ááźáŹá¸ Upstream Providers áážá áşáᯠ(r1 â AS 65002, r2 â AS 65003) áá Host áĄáá˝ááş Redundant default gateway (VRRP) áá Edge routers áĄááťááşá¸ááťááşá¸ááźáŹá¸ Internal path (OSPF + iBGP) áážááááźááˇáş áá áşáááşá áŽá áĄááźáŹá¸áá áşáááşá provider ááŽáááŻáˇ áá˝áŹá¸ááąáŹááşáááŻááşááźááşá¸
áĄáááˇáş á ¡ Deploy ááźáŻááŻááşááźááşá¸¶
name: edge-lab
topology:
nodes:
r1: { kind: arista_ceos, image: ceos:4.32.0F } # AS 65001 edge -> provider A
r2: { kind: arista_ceos, image: ceos:4.32.0F } # AS 65001 edge -> provider B
r3: { kind: arista_ceos, image: ceos:4.32.0F } # AS 65002 provider A
r4: { kind: arista_ceos, image: ceos:4.32.0F } # AS 65003 provider B
sw1: { kind: arista_ceos, image: ceos:4.32.0F } # L2 access
# Host addressing goes in exec, NOT cmd: cmd runs before containerlab has
# wired eth1, which crash-loops the container.
host1:
kind: linux
image: alpine:latest
cmd: sleep infinity
exec:
- ip addr add 192.168.10.10/24 dev eth1
# containerlab owns the default route (management), so add specific ones.
- ip route add 172.16.30.0/24 via 192.168.10.1
- ip route add 172.16.40.0/24 via 192.168.10.1
host2:
kind: linux
image: alpine:latest
cmd: sleep infinity
exec:
- ip addr add 172.16.30.10/24 dev eth1
- ip route add 192.168.10.0/24 via 172.16.30.1
host3:
kind: linux
image: alpine:latest
cmd: sleep infinity
exec:
- ip addr add 172.16.40.10/24 dev eth1
- ip route add 192.168.10.0/24 via 172.16.40.1
# endpoints MUST be lowercase ethN â cEOS entrypoint counts eth* interfaces
links:
- endpoints: ["r1:eth1", "r2:eth1"] # 10.0.12.0/24 OSPF + iBGP
- endpoints: ["r1:eth2", "r3:eth1"] # 10.0.13.0/24 eBGP -> provider A
- endpoints: ["r2:eth2", "r4:eth1"] # 10.0.24.0/24 eBGP -> provider B
- endpoints: ["r3:eth2", "r4:eth2"] # 10.0.34.0/24 provider peering
- endpoints: ["r1:eth3", "sw1:eth1"] # VLAN 10
- endpoints: ["r2:eth3", "sw1:eth2"] # VLAN 10
- endpoints: ["sw1:eth3", "host1:eth1"]
- endpoints: ["r3:eth3", "host2:eth1"]
- endpoints: ["r4:eth3", "host3:eth1"]
sudo containerlab deploy -t topology.clab.yml --max-workers 1
Host configuration áááş cmd áá˝ááş áááŻááşáᲠexec áá˝ááş áážáááááş
ᤠlab áááşááąáŹááşá ááş áĄáá˝áąáˇáĄááźáŻáśáĄá ááááŹá¸áááˇáşáááˇáş áĄááťááş á ááťááş -
Containerlab á eth1 ááᯠáááťáááşáááşáᎠcmd á áĄáááş run áá˝áŹá¸áááşáááşá áááŻááąááŹáá˝ááş interface configure ááŻááşááŤá fail ááźá
áşáá˝áŹá¸ááźáŽá¸ container ááááşáá˝áŹá¸áᏠnamespace path not available ááźááˇáş crash-loop ááźá
áşá
áąáááşá ááźááŻá¸áááŻááşá¸ááťáŹá¸ ááťáááşáááşááźáŽá¸ááž run áááˇáş exec áĄáąáŹááşáá˝ááşáᏠaddressing ááᯠáááˇáşáá˝ááşá¸ááŤá
Containerlab áááş management áĄáá˝ááş default route ááᯠáááŻááşáááŻááşááźáŽá¸ááŹá¸ ááźá
áşáááşá áááŻáˇááźáąáŹááˇáş ip route add default ... ááąá¸ááŤá route áážáááźáŽá¸ááŹá¸ááźá
áşáááźááˇáş áĄááśááááş fail ááźá
áşáá˝áŹá¸áááşá áĄááąá¸áá˝ááşáááşááŽáááŻáˇ Specific route áá
áşááŻááᯠáááˇáşáá˝ááşá¸ááąá¸á፠â áĄáááşá፠topology áá˝ááş áááŻáĄáááŻááşá¸ ááźáŻááŻááşááŹá¸ááŤáááşá
á á áşááąá¸áĄáááşááźáŻááźááşá¸:
./run.sh 01
r1 3 ready, 0 unknown
r2 3 ready, 0 unknown
r3 3 ready, 0 unknown
r4 3 ready, 0 unknown
sw1 3 ready, 0 unknown
host1 192.168.10.10
host2 172.16.30.10
host3 172.16.40.10
â
DONE
â Network devices á ááŻá ááŻáśá¸áá˝ááş ports ááťáŹá¸ ready ááźá áşááźáŽá¸ hosts á ááŻá ááŻáśá¸ IP addresses ááážáááŹá¸ááŤá ááźáŽá¸ááźáąáŹááşááŤááźáŽá
áĄáááˇáş á ¡ Access Layer áááşááąáŹááşááźááşá¸¶
sw1 áááş Pure Layer-2 device ááźá
áşáááşá áááşá¸áá˝ááş IP address ááážááááᯠrouting áááşá¸ ááážáá፠â áááşá¸á ááŹáááşáá
áşááŻáááşá¸áážáŹ ports á ááŻááᯠáá°ááŽááąáŹ broadcast domain áĄáá˝ááşá¸ áááˇáşáá˝ááşá¸ááąá¸áááş ááźá
áşáááşá
configure
vlan 10
name USERS
!
interface Ethernet1
switchport mode access
switchport access vlan 10
!
interface Ethernet2
switchport mode access
switchport access vlan 10
!
interface Ethernet3
switchport mode access
switchport access vlan 10
!
end
á á áşááąá¸áĄáááşááźáŻááźááşá¸:
docker exec clab-edge-lab-sw1 Cli -p 15 -c "show vlan 10"
VLAN Name Status Ports
----- -------------------------------- --------- -------------------------------
10 USERS active Et1, Et2, Et3
â Ports ááŻáśá¸ááŻá ááŻáśá¸ VLAN 10 áá˝ááş ááŤáááşááąááŤá ááźáŽá¸ááźáąáŹááşááŤááźáŽá
ááŽá¸ááźáŹá¸ Switch áá áşáᯠáĄáááşááźáąáŹááˇáş ááŹá¸áážááááááşá¸
Host ááᯠrouter áá˝ááş áááŻááşáááŻááş áááŻá¸á ááŻááşáááŻááşááŤáááşá áááşáá˝áąáˇááąáŹááá˝ááş áááŻáááŻáˇ áááźáŻááŻááşááŤá áĄááźáąáŹááşá¸áážáŹ router port áá áşááŻáááşá¸á á áŹá¸áá˝á˛ááŻáśááąáŤááşá¸ á á ááᯠáááşáááąáŹááşáááŻááşááąáŹááźáąáŹááˇáşáážááˇáş â L2 access layer áážááˇáş L3 edge áĄááźáŹá¸ áááˇáşáážááşá¸ááąáŹ áááşááááááş áá˝á˛ááźáŹá¸ááŹá¸áááŻááąáŹááźáąáŹááˇáş ááźá áşáááşá
áááŻáˇááźááş VRRP áĄááŻááşááŻááşá
áąáááşáĄáá˝ááşáááşá¸ ááźá
áşáááş: Router áážá
áşááŻá
ááŻáśá¸áááş host áážááˇáş áá°ááŽááąáŹ broadcast domain áá
áşááŻáááşá¸áá˝ááş áážáááąáážáᏠvirtual gateway address ááᯠááťážááąáááŻááşáááş ááźá
áşáááşá sw1 á áááşá¸ááᯠááąáŹááşáá˝ááşááąá¸ááźááşá¸ ááźá
áşáááşá
áĄáááˇáş á ¡ Edge â Routing áážááˇáş Redundant Gateway áááşááąáŹááşááźááşá¸¶
Edge routers áážá áşááŻá ááŻáśá¸áááş VLAN 10 áá˝ááş SVI áá áşááŻá ᎠááážáááźááźáŽá¸ host á gateway áĄááźá áş áĄááŻáśá¸ááźáŻáááˇáş Virtual IP áá áşááŻááᯠáĄáá°ááá˝ ááťážááąáááŻááşáá˝ááşááźáááşá
configure
ip routing
service routing protocols model multi-agent
vlan 10
!
interface Loopback0
ip address 1.1.1.1/32
ip ospf area 0.0.0.0
!
interface Ethernet1
no switchport
ip address 10.0.12.1/24
ip ospf area 0.0.0.0
ip ospf network point-to-point
!
! Faces upstream provider A â deliberately NOT in OSPF
interface Ethernet2
no switchport
ip address 10.0.13.1/24
!
interface Ethernet3
switchport mode access
switchport access vlan 10
!
interface Vlan10
ip address 192.168.10.2/24
ip ospf area 0.0.0.0
vrrp 10 priority-level 110
vrrp 10 ipv4 192.168.10.1
!
router ospf 1
router-id 1.1.1.1
passive-interface Vlan10
!
end
configure
ip routing
service routing protocols model multi-agent
vlan 10
!
interface Loopback0
ip address 2.2.2.2/32
ip ospf area 0.0.0.0
!
interface Ethernet1
no switchport
ip address 10.0.12.2/24
ip ospf area 0.0.0.0
ip ospf network point-to-point
!
! Faces upstream provider B â deliberately NOT in OSPF
interface Ethernet2
no switchport
ip address 10.0.24.2/24
!
interface Ethernet3
switchport mode access
switchport access vlan 10
!
interface Vlan10
ip address 192.168.10.3/24
ip ospf area 0.0.0.0
vrrp 10 priority-level 100
vrrp 10 ipv4 192.168.10.1
!
router ospf 1
router-id 2.2.2.2
passive-interface Vlan10
!
end
áááááźáŻááááˇáş áĄááťááş á ááťááş -
vrrp 10 ipv4 192.168.10.1 â áááşáááˇáş router áááťáž .1 ááᯠáĄáááŻááşááá°ááŤá áááşá¸áááş áááşáážá master router á áĄááźáąááąá¸áááˇáş Virtual IP ááźá
áşááźáŽá¸ host á áááşá¸ááᯠáá˝ážááşááźááŹá¸áááşá Priority á master áááşáá°ááźá
áşáááşááᯠááŻáśá¸ááźááşáááş: 110 á default 100 ááᯠáĄáááŻááşááááşá
passive-interface Vlan10 â Subnet ááᯠOSPF áá˛áááŻáˇ ááźáąááŹááąá¸ááąáŹáşáááşá¸ áááşá¸ááąáŤáşáá˝ááş adjacency ááá˝á˛áˇááŤá r1 áážááˇáş r2 áááş direct link ááąáŤáşáá˝ááş adjacent ááźá
áşááźáŽá¸ááŹá¸ááźá
áşáááş; Access VLAN ááᯠááźááşáááşá¸á ááŻááá adjacency áá˝á˛áˇááźááşá¸áááş ááŹááž áĄááťááŻá¸ááážááᲠuser segment ááąáŤáşáááŻáˇ OSPF traffic ááťáŹá¸ááᯠááąáŹááşáážáá
áąáááşá
Ethernet2 áá˝ááş ip ospf area áááŤáážáááŤá áááşá¸áááş áĄááźáŹá¸ AS áááŻáˇ ááťááşáážáŹáá°ááŹá¸áááşá Provider links ááťáŹá¸áááş ááááá IGP áĄáá˝ááşá¸ áááşááąáŹáˇááž áááŤáááşáááˇáşááąá
á á áşááąá¸áĄáááşááźáŻááźááşá¸:
./run.sh 03
2.2.2.2 1 default 0 FULL 00:00:35 10.0.12.2 Ethernet1
VRRP: r1=Master r2=Backup
â
DONE
â
OSPF áááş FULL ááźá
áşááźáŽá¸ VRRP áá˝ááş ááááááťááť Master áá
áşááŻáážááˇáş Backup áá
áşáᯠááąáŤáşááąááŤá ááźáŽá¸ááźáąáŹááşááŤááźáŽá
docker exec clab-edge-lab-r1 Cli -p 15 -c "show vrrp"
State is Master
Virtual IPv4 address is 192.168.10.1
Priority is 110
Master Router is 192.168.10.2 (local), priority is 110
áĄáááˇáş á ¡ Upstream Providers áážá áşááŻááᯠááťáááşáááşááźááşá¸¶
ááŽá¸ááźáŹá¸áá˝ááşáááşááąáŹ áá˝ááşáááşáážá áşááŻááźá áşááźáŽá¸ áá áşááŻá áŽáá˝ááş áááŻááşáááŻááş AS number áážááˇáş áááŻááşáááŻááş customer áážáááźáááşá áááşá¸áááŻáˇáááş áĄááťááşá¸ááťááşá¸ peer áá˝á˛áˇááŹá¸ááźáááşá áááşá¸ááźáąáŹááˇáş destination áááŻááşá¸ááŽáááŻáˇ ááŻááááááşá¸ááźáąáŹááşá¸áá áşáᯠááźá áşááąáŤáşááŹááźááşá¸ ááźá áşáááşá
configure
ip routing
service routing protocols model multi-agent
!
interface Loopback0
ip address 3.3.3.3/32
!
interface Ethernet1
no switchport
ip address 10.0.13.3/24
!
! Peering link to the other provider
interface Ethernet2
no switchport
ip address 10.0.34.3/24
!
interface Ethernet3
no switchport
ip address 172.16.30.1/24
!
router bgp 65002
router-id 3.3.3.3
no bgp default ipv4-unicast
neighbor 10.0.13.1 remote-as 65001
neighbor 10.0.34.4 remote-as 65003
address-family ipv4
neighbor 10.0.13.1 activate
neighbor 10.0.34.4 activate
network 172.16.30.0/24
!
end
configure
ip routing
service routing protocols model multi-agent
!
interface Loopback0
ip address 4.4.4.4/32
!
interface Ethernet1
no switchport
ip address 10.0.24.4/24
!
! Peering link to the other provider
interface Ethernet2
no switchport
ip address 10.0.34.4/24
!
interface Ethernet3
no switchport
ip address 172.16.40.1/24
!
router bgp 65003
router-id 4.4.4.4
no bgp default ipv4-unicast
neighbor 10.0.24.2 remote-as 65001
neighbor 10.0.34.3 remote-as 65002
address-family ipv4
neighbor 10.0.24.2 activate
neighbor 10.0.34.3 activate
network 172.16.40.0/24
!
end
á á áşááąá¸áĄáááşááźáŻááźááşá¸:
./run.sh 04
provider A (r3): peering=1 host=0% packet loss
provider B (r4): peering=1 host=0% packet loss
â
DONE
â Providers áážá áşááŻá ááŻáśá¸ áĄááťááşá¸ááťááşá¸ peer áá˝á˛áˇááŹá¸ááźáŽá¸ áááá host ááŽáááŻáˇ ááąáŹááşáážááááŻááşááŤá ááźáŽá¸ááźáąáŹááşááŤááźáŽá
áĄáááˇáş á ¡ Multihomed BGP â Transit Network áááźá áşáĄáąáŹááş ááŹáá˝ááşááźááşá¸¶
Edge router áá áşááŻá áŽáááş ááááá áááşáááŻááşáᏠprovider áážááˇáş eBGP peer áá˝á˛áˇááźáŽá¸ áĄááťááşá¸ááťááşá¸ááźáŹá¸ iBGP peer áá˝á˛áˇáááşá
configure
! Advertise ONLY our own prefixes upstream. ^$ matches an empty AS path,
! i.e. locally originated routes. Without this, AS 65001 re-advertises one
! provider's routes to the other and becomes unpaid transit between them.
ip as-path access-list OWN-ROUTES permit ^$ any
!
route-map TO-UPSTREAM permit 10
match as-path OWN-ROUTES
!
router bgp 65001
router-id 1.1.1.1
no bgp default ipv4-unicast
neighbor 2.2.2.2 remote-as 65001
neighbor 2.2.2.2 update-source Loopback0
neighbor 10.0.13.3 remote-as 65002
address-family ipv4
neighbor 2.2.2.2 activate
neighbor 2.2.2.2 next-hop-self
neighbor 10.0.13.3 activate
neighbor 10.0.13.3 route-map TO-UPSTREAM out
network 192.168.10.0/24
!
end
configure
! Advertise ONLY our own prefixes upstream. ^$ matches an empty AS path,
! i.e. locally originated routes. Without this, AS 65001 re-advertises one
! provider's routes to the other and becomes unpaid transit between them.
ip as-path access-list OWN-ROUTES permit ^$ any
!
route-map TO-UPSTREAM permit 10
match as-path OWN-ROUTES
!
router bgp 65001
router-id 2.2.2.2
no bgp default ipv4-unicast
neighbor 1.1.1.1 remote-as 65001
neighbor 1.1.1.1 update-source Loopback0
neighbor 10.0.24.4 remote-as 65003
address-family ipv4
neighbor 1.1.1.1 activate
neighbor 1.1.1.1 next-hop-self
neighbor 10.0.24.4 activate
neighbor 10.0.24.4 route-map TO-UPSTREAM out
network 192.168.10.0/24
!
end
Outbound Filter áááş áá˝áąá¸ááťááşá áᏠáááŻááşááŤá áááźá áşáááą áááŻáĄááşáááş
ip as-path access-list OWN-ROUTES permit ^$ any
route-map TO-UPSTREAM permit 10
match as-path OWN-ROUTES
^$ áááş áĄáá˝ááşááźá
áşááąááąáŹ AS path áážááˇáş áááŻááşááŽáááş â áááşáááŻááşáááŻááş á
áááşááŻááşáá˝ážááˇáşááąáŹ routes ááťáŹá¸áááŻáᏠáááŻáááŻáááşá
ᤠfilter áááŤáážáááŤá AS 65001 áááş Provider A á routes ááťáŹá¸ááᯠProvider B ááś ááťáąáŹáşáá˝ážááşá á˝áŹ ááźááşáááşááźáąááŹááąá¸áááşááźá áşááźáŽá¸ áááˇáşááťááşáááşáááşá¸ áááŻáááşá¸áá° ááźá áşáá˝áŹá¸áááşá áááşáááş ááźáŽá¸ááŹá¸ááąáŹ network ááźáŽá¸áážá áşááŻááźáŹá¸áážá traffic ááťáŹá¸ááᯠáááşá ááąá¸áááşááąáŹ link ááąá¸ááťáŹá¸ááąáŤáşáážáá áşáááˇáş áĄááá˛áˇ áááşáá°áááŻáˇááąáŹááşááąá¸áááşáᯠááášááŹááźáŽá¸ááś ááźáąááŹáááŻááşááźááşá¸ ááźá áşáááşá áááşá circuits ááťáŹá¸ ááźááˇáşááťááşáá˝áŹá¸ááźáŽá¸ áá˝ááşáááşááźááşááąáŹááşáážáŻáááş áááááááŻááşáááŻááş áááşááŽá¸áááŻááşáááᯠááźá áşáá˝áŹá¸áááşá
áááşá¸áááş á áŹáá˝áąáˇáááşáááş áááŻááşááŤ: Outbound filter ááťááşáá˛áˇááźááşá¸ááźáąáŹááˇáş áááąáŹáşáá transit ááźá áşáá˝áŹá¸áážáŻáááş ááášááŹááŻáśá¸áááŻááşáᏠáĄááşááŹáááşááźááşááąáŹááşáážáŻááťáŹá¸á á˝áŹá áááşáááş ááźá áşáá˛áˇáááşá eBGP session áááŻááşá¸áá˝ááş Outbound policy áážáááááş ááźá áşááźáŽá¸ Multihomed customer áá áşáŚá¸áĄáá˝ááş ááᯠpolicy áážáŹ "áááááááŻááşáááŻááş prefixes ááťáŹá¸áááŻáᏠááąá¸áááŻáˇáááş" ááźá áşáááşá
á á áşááąá¸áĄáááşááźáŻááźááşá¸:
./run.sh 05
r1 2 BGP sessions
r2 2 BGP sessions
r1 -> 172.16.40.0/24 (behind provider B): Paths: 2
transit filter: provider A receives only our own prefix â
host1 -> provider A 0% packet loss
host1 -> provider B 0% packet loss
â
DONE
ááá°ááŽááąáŹ Upstreams ááťáŹá¸áážáá áşáááˇáş áá°ááŽááąáŹ Destination ááŽáááŻáˇ áááşá¸ááźáąáŹááşá¸áážá áşáᯠááąáŤáşááŹááźááşá¸:
docker exec clab-edge-lab-r1 Cli -p 15 -c "show ip bgp"
* > 172.16.30.0/24 10.0.13.3 100 0 65002 i
* > 172.16.40.0/24 2.2.2.2 100 0 65003 i
* 172.16.40.0/24 10.0.13.3 100 0 65002 65003 i
ááąáŹááşááŻáśá¸ á
áŹááźáąáŹááşá¸áážá
áşááŻááᯠáááşáážáŻááŤ: 172.16.40.0/24 ááŽáááŻáˇ ááąáŹááşáážááááş r1 áá˝ááş -
65003â r2 áážáá áşáááˇáş Provider B ááŽáááŻáˇ áááŻááşáááŻááşá AS hop á ááŻá áĄááąáŹááşá¸ááŻáśá¸ (Best)á65002 65003â ááááá Provider A áážáá áşáááˇáş Provider B ááŽáááŻáˇ transit ááźááşáá˝áŹá¸ááźááşá¸á AS hops á ááŻá
áĄáááŻááŻáśá¸ AS path á áĄáááŻááşááááş â Best-path áĄáááˇáş á ááźá áşáááşá Policy áá áşááŻááťáž áááşáážááşáááŹá¸áᲠmultihoming á áááşá¸ááźáąáŹááşá¸ááᯠáĄáááŻáĄááťáąáŹááş áá˝áąá¸ááťááşááąá¸ááźááşá¸ ááźá áşáááşá
Filter á áá áş ááąáŹááşá¸á á˝áŹ áĄááŻááşááŻááşááąááŻáś -
docker exec clab-edge-lab-r3 Cli -p 15 -c "show ip bgp neighbors 10.0.13.1 received-routes"
* > 192.168.10.0/24 10.0.13.1 65001 i
Provider A áááş áááááááŻáˇá áááŻááşáááŻááş prefix áááŻáᏠáááşááśááážááááş â Provider B á prefix ááᯠáááážáááŤá áááááááŻáˇáááş Customer ááŹááźá áşááźáŽá¸ Transit áááŻááşááŤá
áĄáááˇáş á ¡ Provider áá áşááŻááŻáśá¸ ááźááşááąáŹááşáá˝áŹá¸áááˇáş áĄááźáąáĄááąááᯠá ááşá¸áááşááźááşá¸¶
Cable ááźááşááąáŹááşáážáŻ áááŻááşá፠â Upstream áá áşááŻááŻáśá¸ ááźááşááąáŹááşáá˝áŹá¸ááźááşá¸ ááźá áşáááşá
docker exec -i clab-edge-lab-r2 Cli -p 15 <<'EOF'
configure
interface Ethernet2
shutdown
end
EOF
Provider B áááŻáˇ áááąáŹááşáážááááŻááşááąáŹáˇááŤá ááááşá r1 áá˝ááş 172.16.40.0/24 ááŽáááŻáˇ áááşá¸ááźáąáŹááşá¸áážá
áşááŻáážáááźáŽá¸ áááŻááşáááŻááşáááşá¸ááźáąáŹááşá¸ááᯠáá˝áąá¸ááťááşáá˛áˇáááşá áááŻáĄá፠-
docker exec clab-edge-lab-r1 Cli -p 15 -c "show ip bgp 172.16.40.0/24"
Paths: 1 available
65002 65003
Received 00:01:43 ago, valid, external, best
áááşá¸ááźáąáŹááşá¸áá
áşááŻáááşá¸áᏠááťááşáážáááąáŹáˇáááş â 65002 65003á Provider B á customer ááŽáááŻáˇ áá˝áŹá¸áááˇáş traffic áááş áááŻáĄá፠Provider A áážáá
áşáááˇáş áá˝ááşáá˝áŹááźáŽá¸ Peering link ááᯠááźááşáááşá¸áá˝áŹá¸ááŹááąáŹáˇáááş ááźá
áşáááşá
docker exec clab-edge-lab-host1 ping -c3 172.16.40.10
3 packets transmitted, 3 packets received, 0% packet loss
Transit Provider áá áşááŻááŻáśá¸ ááźááşááąáŹááşáá˝áŹá¸ááąáŹáşáááşá¸ Packet Loss ááŻá ááŹáááŻááşáážáŻááşá¸áᏠáážááááşá áááşá¸áááş Multihoming á áĄá á áşáĄáážááş áĄááťááŻá¸ááťáąá¸áá°á¸ááźá áşááźáŽá¸ Provider áá áşááŻáááşá¸áᎠlinks áážá áşáᯠááťáááşááźááşá¸áááş ááťáŹá¸á á˝áŹ áááŻáááŻáááŻááşááŹááąáŹ áĄáŹáááśááťááşááźá áşáááş â Provider áá áşááŻáááşá¸áᎠááťáááşáááşááźááşá¸áááş ááźááŻá¸áááŻááşá¸ááźááşááąáŹááşáážáŻáááŻáᏠááŹáá˝ááşáááŻááşááźáŽá¸ ááᯠprovider áááşááž outage ááźá áşááźááşá¸á maintenance ááŻááşááźááşá¸ áááŻáˇáááŻááş ááŻáášáááŽááąááŤááŽááśáááźááşá¸ááťáŹá¸ááᯠáááŹáá˝ááşáááŻááşááąá
ááźááşáááş áá˝ááˇáşááąá¸á፠-
docker exec -i clab-edge-lab-r2 Cli -p 15 <<'EOF'
configure
interface Ethernet2
no shutdown
end
EOF
áĄáááˇáş á ¡ Policy ááźááˇáş áááşá¸ááźáąáŹááşá¸ááᯠOverride ááźáŻááŻááşááźááşá¸¶
AS path áĄá 172.16.40.0/24 áĄáá˝ááş Provider B ááᯠáá˝áąá¸ááťááşáá˛áˇáááşá áĄáááşá Provider A áááş á
ááááşáááŻáááşááŹáááş áááŻáˇáááŻááş ááźááşáážáŻááşá¸áááŻááąáŹááşá¸áááş áááŻáˇáááŻááş B ááᯠmaintenance ááŻááşáááşáĄáá˝ááş traffic áááşááŻááşáááŻáááşáááŻááŤá
ááŻáˇ â ááᯠtraffic ááᯠA ááąáŤáşáááŻáˇ áááşáááŻáááş -
docker exec -i clab-edge-lab-r1 Cli -p 15 <<'EOF'
configure
route-map FROM-PROV-A permit 10
set local-preference 200
router bgp 65001
address-family ipv4
neighbor 10.0.13.3 route-map FROM-PROV-A in
end
EOF
áááźáąáŹááşá¸áá˛áᎠâ 1-hop path á áĄáááŻááşááááş:
65003
Origin IGP, metric 0, localpref 100, IGP metric 20, weight 0
Received 00:00:40 ago, valid, internal, best
65002 65003
Origin IGP, metric 0, localpref 100, IGP metric 0, weight 0
ááźáąáŹááşá¸áá˛ááźáŽá¸ááąáŹááş:
65002 65003
Origin IGP, metric 0, localpref 200, IGP metric 0, weight 0
Received 00:02:53 ago, valid, external, best
2-hop path áááş áááŻáĄá፠Best ááźá áşáá˝áŹá¸áááşá Local preference ááᯠáĄáááˇáş á áá˝ááş áážááŻááşá¸áážááşááźáŽá¸ AS path áááŻáá° áĄáááˇáş á ááąáŹááşááž áážááŻááşá¸áážááşááąáŹááźáąáŹááˇáş Policy á Topology ááᯠáĄáááŻááşááá˝áŹá¸ááźááşá¸ ááźá áşáááş â áĄáááˇáş á áĄáąáŹááşáážá áááşáááˇáşáĄááŹáááŻááťáž á á áşááąá¸áá˝ááşááťááşááźááşá¸áááş áááźáŻááąáŹáˇááąá
docker exec clab-edge-lab-host1 ping -c3 172.16.40.10
3 packets transmitted, 3 packets received, 0% packet loss
Traffic áááş áá˝áąá¸ááťááşáážáŻáĄáá áşáĄáááŻááşá¸ áááşáááşá áŽá¸áááşá¸ááąáᲠááźá áşáááşá
Local-pref áááş Outbound áááŻáᏠááááşá¸ááťáŻááşáááş
áááşáááş ááááááśááž traffic ááąá¸áááŻáˇáááˇáş provider áááŻáᏠááźáąáŹááşá¸áá˛áááŻááşááźááşá¸ ááźá áşáááşá ááźááşááĄááşááŹáááşá áááˇáşááśáááŻáˇ áááşáááŻáˇ ááŹááąáŹááşáááşáááŻáááşááᯠáááźáąáŹááşá¸áá˛áááŻááşá፠â áááşá¸áážáŹ áááşá providers ááťáŹá¸á áĄááźááşáááŻáˇ ááźáąááŹááąá¸áááˇáşáĄáááŻááşá¸ áááşáááşáá˝áŹá¸ááŹááąáᲠááźá áşáááşá
Inbound traffic ááᯠáá˝ážááşá¸áááŻá¸áááşáĄáá˝ááş AS-path prepending áááŻáˇáááŻááş Provider communities ááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻááááş ááźá áşááźáŽá¸ áážá áşááŻá ááŻáśá¸áááş ááąáŹááşá¸áááŻááťááşááťáŹá¸áᏠááźá áşááźáááşá Attributes ááťáŹá¸ áá˝ááş ááźááˇáşáážáŻááŤá
áĄáááˇáş á ¡ Gateway ááźááşááąáŹááşáážáŻááᯠá ááşá¸áááşááźááşá¸¶
Uplink á ááşá¸áááşáážáŻá BGP redundancy ááᯠáááşááąááźáá˛áˇáááşá áááŻáˇááąáŹáş Host áááş gateway IP áá áşááŻáááşá¸áááŻáᏠáá˝ážááşááźááąáá˛ááźá áşáááş â ááᯠIP ááᯠáááŻááşáá˝ááşááŹá¸ááąáŹ router ááťááşá áŽá¸áá˝áŹá¸ááŤá áááşáááŻáˇááźá áşáááşáááşá¸á
docker exec -i clab-edge-lab-r1 Cli -p 15 <<'EOF'
configure
interface Vlan10
shutdown
end
EOF
docker exec clab-edge-lab-r2 Cli -p 15 -c "show vrrp" | grep -E "State|Master Router"
State is Master
Master Router is 192.168.10.3 (local), priority is 100
r2 áááş áááááááŻááşááᯠMaster áĄááźá
áş ááŹáá°á¸áááŻá¸ááźážááˇáşáááŻááşáááşá áááŻáĄá፠áááşá¸á 192.168.10.1 áĄáá˝ááş ááŹáááşáá° áĄááźáąááąá¸ááąáŹáˇáááş ááźá
áşáááşá
docker exec clab-edge-lab-host1 ping -c3 172.16.30.10
3 packets transmitted, 3 packets received, 0% packet loss
Host á Configuration ááŹááž ááźáąáŹááşá¸áá˛á
áᏠááááŻáá˛áˇááŤá áááşá¸áááş 192.168.10.1 ááᯠáááşáááşáá˝ážááşááźááąáá˛ááźá
áşááźáŽá¸ â áĄááźáŹá¸ router áá
áşááŻá áááşá¸áĄáá˝ááş áááşááąáŹááşááŹáááşáá° ááźáąááźáŹá¸ááąá¸ááąááźááşá¸áᏠááźá
áşáááşá
ááźááşáááş áá˝ááˇáşááąá¸á፠-
docker exec -i clab-edge-lab-r1 Cli -p 15 <<'EOF'
configure
interface Vlan10
no shutdown
end
EOF
ááášáááŹá¸ áážá áşááŻá ááŻáśá¸ áĄáááşááźáąáŹááˇáş áááŻáĄááşááááşá¸
áááşá¸áááŻáˇáááş ááá°ááŽááąáŹ áĄááŹááťáŹá¸ááᯠááŹáá˝ááşááąá¸ááźáŽá¸ áá áşááŻá áĄááźáŹá¸áá áşááŻááᯠáĄá áŹá¸ááááŻá¸áááŻááşááŤá
VRRP áááŤáážáááŤá Upstream providers áážá áşááŻáážáááąááźááşá¸áááş host áĄáá˝ááş ááŻáśá¸áááŽá¸ááŤá¸ áĄááŻáśá¸ááááşááŤ: r1 ááťááşá áŽá¸áá˝áŹá¸ááŤá r2 á BGP áááşááťážáááş ááąáŹááşá¸áá˝ááşááąááŤá áą host áááş ááąááŻáśá¸ááąááąáŹ gateway áááŻáᏠáááşáááşáá˝ážááşááźááąááááááˇáşáááşá
Upstreams áážá áşáᯠáááŤáážáááŤá VRRP áááş provider ááźááşááąáŹááşááąááąáŹ áĄááźáŹá¸ router áá áşááŻááŽáááŻáˇáᏠfailover ááŻááşááąá¸áááŻááşááąááááˇáşáááşá
Redundancy áááş áĄá ááž áĄááŻáśá¸áĄáá áĄáááşáááźááş áážáááąááááşá ááŹáá˝ááşáážáŻááážáááąáŹ ááťáááşáááşáážáŻáá áşáᯠááŤáááşááąáááˇáş áá˝ááşá¸áááşáá áşááŻáááş áááŻáĄáŹá¸áááşá¸ááąáŹ áĄá áááşáĄáááŻááşá¸ááąáŹááşáᏠááśáááŻááşáááşáážááááş ááźá áşáááş â áááŻáˇááźáąáŹááˇáş "ááťá˝ááşááąáŹáşáááŻáˇáážáŹ routers áážá áşáᯠáážááááş" áá°ááąáŹ ááźáąáŹáááŻááťááşáááŻááşá¸áá˝ááş "áááşáááˇáş layer áá˝ááş redundant ááźá áşááááşá¸" áá°ááąáŹ ááąá¸áá˝ááşá¸ááᯠáááşáááşááąá¸ááźááşá¸áááˇáşááŤáááşá
ááźáżááŹááźáąáážááşá¸ááźááşá¸ áááşá¸áá˝ážááş (Troubleshooting)¶
| ááąáŹááŤááášááᏠ| ááźá áşáá˝áŹá¸ááááˇáş áĄááźáąáŹááşá¸áááşá¸ |
|---|---|
| Host áá˝ááş IP address ááážáááźááşá¸ | Config áááş exec áá˝ááş áááŻááşáᲠcmd áá˝ááş ááźá
áşááąáááźááˇáş container crash-loop ááźá
áşáá˝áŹá¸ááźááşá¸ |
| Host á gateway ááᯠping áááąáŹáşáááşá¸ áĄááąá¸áááŻáˇ áááąáŹááşááźááşá¸ | Specific route ááťááşáá˛áˇááźááşá¸; Host ááąáŤáşáážá ip route ááᯠá
á
áşááąá¸á፠|
| Routers áážá áşááŻá ááŻáśá¸ VRRP Master ááźá áşááąááźááşá¸ | áĄááťááşá¸ááťááşá¸ áááźááşáá˝áąáˇáááźááşá¸ â Switch VLAN ááᯠá á áşááąá¸á፠|
| VRRP ááąáŹááşá¸ááąáŹáşáááşá¸ ááťáááşáááşá ááááźááşá¸ | First-hop áááŻááşáᲠRouting ááźáżááŹááźá áşáááş; BGP ááᯠá á áşááąá¸á፠|
Provider áááşáá˝ááş Paths: 1 áᏠááźá
áşááąááźááşá¸ |
eBGP session áá áşáᯠdown ááąááźááşá¸ â Single-homed áᏠááźá áşááąáááş |
Traceroute á Hop 1 á * ááźá
áşááąááźááşá¸ |
ááŻáśáážááşááźá áşáááş; VRRP virtual address áááş ICMP errors ááźááşááááŻáˇá፠|
Route áááş Management0 áážáá
áşáááˇáş resolve ááźá
áşááąááźááşá¸ |
Next-hop áááąáŹááşáážááááŻááşááźááşá¸ â Lab 01 ááᯠááźááˇáşá፠|
áĄááşááŹááťá°á¸ ááąá¸áá˝ááşá¸ááťáŹá¸ (Interview questions)¶
Provider áá áşááŻáááşá¸ááŽáááŻáˇ Uplinks áážá áşáᯠááťáááşáááşááŹá¸ááźááşá¸áááş Multihoming áᯠááąáŤáşááŤáááŹá¸á
áááŻááşá፠â áááşá¸áááş Dual-attachment áᏠááźá áşáááşá áááşá¸áááş ááźááŻá¸áááŻááşá¸ áááŻáˇáááŻááş line card ááťááŻáˇáá˝ááşá¸áážáŻáááŻáᏠááŹáá˝ááşááąá¸áááŻááşááźáŽá¸ ááᯠprovider á outage ááźá áşááźááşá¸á maintenance ááŻááşááźááşá¸ áááŻáˇáááŻááş routing áĄáážáŹá¸ááťáŹá¸ááᯠáááŹáá˝ááşáááŻááşááŤá Multihoming áááŻáááşáážáŹ ááŽá¸ááźáŹá¸áá˝ááşáááşááąáŹ Upstream ASes áážá áşááŻáᎠááťáááşáááşááźááşá¸ ááźá áşáááşá áááŻáˇááźááş Dual uplinks áááş routing áááşá¸ááźáąáŹááşá¸áááŻáᏠááŹáá˝ááşááąá¸ááźáŽá¸ host ááťáŹá¸á router áá áşááŻáááşá¸ááąáŤáşáážá single gateway IP ááᯠáá˝ážááşááźááąááŤá ááᯠrouter ááťáá˝áŹá¸ááťážááş ááźááşááąáŹááşáá˝áŹá¸áááş ááźá áşáááşá áááŻáˇááźáąáŹááˇáş First-hop redundancy (VRRP, HSRP áááŻáˇáááŻááş Anycast gateway) áááŻá፠ááąáŤááşá¸á ááşáĄááŻáśá¸ááźáŻáááş áááŻáĄááşáááşá Redundancy áááş áĄá ááž áĄááŻáśá¸áĄáá á ááşáááşáááźááş áážáááąáááŤáááşá
VRRP áááş áĄáážááşááááş ááŹááᯠááŻááşááąáŹááşááąá¸ááááşá¸á
Router áážá áşáᯠáááŻáˇáááŻááş áážá áşááŻáááşáááŻááąáŹ á ááşááťáŹá¸áááş hosts ááťáŹá¸ gateway áĄááźá áş áĄááŻáśá¸ááźáŻáááˇáş Virtual IP áá áşááŻááᯠááťážááąáááŻááşáá˝ááşááźáááşá áá áşááŻá Master áĄááźá áş ááŹáááşáá° áĄááźáąááąá¸ááźáŽá¸ áĄááźáŹá¸áá áşááŻá áĄáááˇáşá áąáŹááˇáşáááŻááşá¸áᏠmaster ááťáá˝áŹá¸ááŤá ááŹáááşáá˝ážá˛ááźáąáŹááşá¸ááá°áááşá Priority á master ááᯠááŻáśá¸ááźááşáááşá Host á configuration ááŹááž áááźáąáŹááşá¸áá˛á፠â IP ááááşá áŹáážáŹ áĄáá°áá°áááşááźá áşááźáŽá¸ áĄááźáŹá¸ router áá áşááŻá áĄááźáąááąá¸ááźááşá¸áᏠááźá áşáááşá
Upstream Provider áá áşááŻááŻáśá¸ ááŻáśá¸á down áá˝áŹá¸ááŤá áááşáááŻáˇááźá áşáááşáááşá¸á
áááşá¸á routes ááťáŹá¸ ááťááşááźááşáá˝áŹá¸ááźáŽá¸ ááťááşáážáááąáŹ provider á áááşá¸ááźáąáŹááşá¸ááťáŹá¸á áĄá
áŹá¸áááŻá¸ ááŹáááşáá°áá˝áŹá¸áááş â ᤠlab áá˝ááş Provider B á customer ááŽáááŻáˇ best path áááş 65003 áážáááş peering link ááᯠááźááşáááşá¸áá˝áŹá¸ááąáŹ 65002 65003 áááŻáˇ ááźáąáŹááşá¸áá˛áá˝áŹá¸áááşá Edge routers ááťáŹá¸áĄááťááşá¸ááťááşá¸ iBGP áážáá
áşáááˇáş routes ááťáŹá¸ááᯠáĄáá˝ááşá¸áááŻááşá¸ ááážááşááŹá¸ááá˝áąáˇ packet loss ááŻá ááŹáááŻááşáážáŻááşá¸ááźááˇáş áááşáááşá
áŽá¸áááşá¸ááąáááş ááźá
áşáááşá
Multihomed customer áá áşáŚá¸áááş Outbound advertisements ááťáŹá¸ááᯠáĄáááşááźáąáŹááˇáş áááźá áşáááą filter ááŻááşááááşáááşá¸á
Filter áááŤáážáááŤá provider áá
áşááŻá routes ááťáŹá¸ááᯠáĄááźáŹá¸ provider áá
áşááŻááś ááźááşáááşááźáąááŹááąá¸ááááźáŽá¸ ááźáŽá¸ááŹá¸ááąáŹ network ááźáŽá¸áážá
áşááŻááźáŹá¸áá˝ááş ááááá ááąá¸áááşááąáŹ link ááąá¸ááťáŹá¸ááźááˇáş áĄááá˛áˇ transit áááşáá°áááŻáˇááąáŹááşááąá¸áááá˝áŹá¸áááş ááźá
áşáááşá á
áś filter áážáŹ locally originated routes ááťáŹá¸áááŻáᏠáá˝áąá¸ááťááşááąá¸ááąáŹ AS-path regex ^$ ááźá
áşáááşá Outbound filters áááŤáážáááźááşá¸áááş áĄááşááŹáááşááźááşááąáŹááşáážáŻááťáŹá¸á
á˝áŹá áĄááááĄááźáąáŹááşá¸áááşá¸ ááźá
áşáá˛áˇáááşá
áááá Provider á áááşá¸ááźáąáŹááşá¸á 2 AS hops ááźá áşááźáŽá¸ áĄááźáŹá¸áá áşááŻá 1 AS hop ááźá áşááąáááşá áááŻáážááşááąáŹ áááşá¸ááźáąáŹááşá¸ááᯠáááşáááŻáˇ áŚá¸á áŹá¸ááąá¸áá˝áąá¸ááťááşáááşáááşá¸á
áááááĄáááŻáážáááąáŹ provider ááśááž ááŹááąáŹ routes ááťáŹá¸ááąáŤáşáá˝ááş Inbound filter ááźááˇáş Local Preference ááᯠáááŻáááŻááźááˇáşááŹá¸á á˝áŹ áááşáážááşááąá¸ááŤá Local-pref áááş áĄáááˇáş á ááźá áşááźáŽá¸ AS-path length áááş áĄáááˇáş á ááźá áşááąáŹááźáąáŹááˇáş áĄááźááşáĄáááş áĄáááŻááşááááş â áĄáááˇáş á áĄáąáŹááşáážá áááşáááˇáşáĄááŹáááŻááťáž áááˇáşáá˝ááşá¸áá ááşá¸á áŹá¸ááąáŹáˇááąá áááşá¸áááş áááááá˝ááşáááşááž áá˝ááşáá˝áŹáááˇáş traffic áááŻáᏠááááşá¸ááťáŻááşáááŻááşáááşááᯠáááááźáŻááŤá
Access switch áááş IP address áááŤáᲠLayer 2 áááşáááş áĄáááşááźáąáŹááˇáş ááźá áşááąááááşá¸á
áááşá¸á ááŹáááşáážáŹ broadcast domain áááşááŽá¸ááąá¸áááşááŹááźá áşááźáŽá¸ routing ááŻááşáááş áááŻááşááŤá L2 áĄááźá áşáᏠááŹá¸áážáááźááşá¸ááźááˇáş áááˇáşáážááşá¸ááąáŹ áááşááááááşááᯠááááşá¸ááááşá¸áááŻááşááźáŽá¸ â Edge routers áážá áşááŻá ááŻáśá¸ááᯠhosts ááťáŹá¸áážááˇáş áá°ááŽááąáŹ segment áᲠááąáŹááşáážáá áąáᏠVRRP ááąáŹááşá¸áá˝ááşá á˝áŹ áĄááŻááşááŻááşáááŻááşá áąáááş ááźá áşáááşá
Provider áááşáááŻáˇ ááťááşáážáŹáá°ááŹá¸ááąáŹ Interface áááş OSPF áá˛áá˝ááş áĄáááşááźáąáŹááˇáş áááŤáážáááááşá¸á
áááşá¸áááş ááá°ááŽááąáŹ administrative domain áááŻáˇ ááťááşáážáŹáá°ááŹá¸áááşá áááşá¸ááᯠIGP áᲠáááˇáşáá˝ááşá¸áááŻááşááŤá ááááá internal topology áĄááťááşáĄáááşááťáŹá¸ provider áááşáááŻáˇ áááŻá áááˇáşáá˝áŹá¸áááşááźá áşááźáŽá¸ áááşá¸áááŻáˇá data ááťáŹá¸ ááááááś áááşááąáŹááşááŹáááŻááşáááşá IGP áážááˇáş eBGP áĄááźáŹá¸ áááşááááááşáááş áĄááźááşáĄáážááş ááŻáśááźááşá áááşááťááážáŻá áááşááááááş ááźá áşáááşá
Routers áážá áşááŻá ááŻáśá¸á VRRP Master áĄááźá áş ááźáááąáááşá áááşáááˇáşáĄáᏠáážáŹá¸áá˝ááşá¸ááąááááşá¸á
áĄááťááşá¸ááťááşá¸á advertisements ááťáŹá¸ááᯠáááźááşáá˝áąáˇáááąáŹááźáąáŹááˇáş áá áşááŻá áŽá áĄááźáŹá¸áá áşáᯠááážáááąáŹáˇáᯠáá°ááᏠVirtual IP ááᯠáážá áşáááşá ááŻáśá¸á ááááşá¸áááŻááşáááŻááşááźááşá¸ ááźá áşáááşá áĄááźá˛áá áąááŽá¸ááŤá¸ Layer-2 ááźáżááŹááźáąáŹááˇáş ááźá áşáááş â VLAN áážáŹá¸áá˝ááşá¸ááźááşá¸á trunk ááťááşá áŽá¸ááąááźááşá¸ áááŻáˇáááŻááş routers áážá áşáᯠáá°ááŽááąáŹ broadcast domain áá˛áá˝ááş áĄáážááşááááş ááážáááąááźááşá¸áááŻáˇ ááźá áşáááşá
đ§ Google Network Infra áááŻááŻá ááťážááąááźááşá¸¶
[!NOTE]
Production Deep Dive & Hyperscale Architecture¶
- Inbound áážááˇáş Outbound Traffic Engineering ááááşá¸ááťáŻááşáážáŻ áá˝áŹááźáŹá¸ááťááş:
- Outbound Traffic (Egress): BGP best-path algorithm á áĄáááˇáş á ááźá áşááąáŹ
LOCAL_PREFááźááˇáş áĄáá˝ááşá¸áááŻááşá¸ ááááşá¸ááťáŻááşáááşá ááźááˇáşááŹá¸ááąáŹLOCAL_PREFáááşAS_PATHlength ááᯠáĄáááŻááşááááşáInbound Traffic (Ingress): Secondary ISPs ááťáŹá¸ááś ááźáąááŹááąáŹ
AS_PATHááᯠááááş áĄááťáŹá¸áážááşá áąáááˇáş AS-Path Prepending áááŻáˇáááŻááş áá°ááŽááąáŹ upstreams ááťáŹá¸áĄááźáŹá¸ MED (Multi-Exit Discriminator) ááźááˇáş ááźááşáááž áá˝ážááşá¸áááŻá¸ááááşá¸ááťáŻááşáááşááááąáŹáşáá Transit Leaks ááźá áşááąáŤáşáážáŻ ááŹáá˝ááşááźááşá¸ (BGP Hijack Mitigation):
- Multihomed enterprise áážááˇáş edge nodes ááťáŹá¸áááş transit ISPs ááťáŹá¸áĄááźáŹá¸ route ááťáŹá¸ááᯠááźááşáááşáááźáąááŹááá áąáááş Outbound advertisements ááťáŹá¸ááᯠ(AS-path filter
^$áááŻáˇáááŻááşno-advertisecommunity ááŤáááşááąáŹroute-mapááźááˇáş) áááźá áşáááą filter ááŻááşááááşáFilter áááŻááşááŤá ááášááŹááŻáśá¸áááŻááşáᏠproviders ááťáŹá¸áĄááźáŹá¸ áĄááá˛áˇ transit AS áĄááźá áş áááąáŹáşáá ááąáŹááşáážááá˝áŹá¸ááąááááˇáşáááşá
áááşá ááş ááŻáśááźáŻáśááąá¸: RPKI áážááˇáş Bogon Filtering:
- Hyperscale edge routers ááťáŹá¸áááş ááážááşáááşááąáŹ ROA prefix ááźáąááŹááťááşááťáŹá¸ááᯠáááşááťááşáááş RPKI Route Origin Validation (ROV) ááᯠáĄááŻáśá¸ááźáŻááźáááşá
- Ingress filters ááťáŹá¸áááş public eBGP sessions ááťáŹá¸ááąáŤáşáá˝ááş bogon prefixes ááťáŹá¸ááᯠ(RFC 1918, RFC 6598 Carrier-Grade NAT, RFC 5735) drop áá áşááźáááşá
á ááşá¸áááşáááşá¸ áĄááźáŽá¸áááş ááááşá¸áááşá¸ááźááşá¸ (Clean up)¶
sudo containerlab destroy -t topology.clab.yml