BGP is the protocol that holds the internet together — and every vendor implements it slightly differently. This lab builds eBGP peering across Cisco IOL, Juniper cRPD, and Arista cEOS so you can practice real multi-vendor BGP interoperability.
Lab Topology
AS 100 AS 200 AS 300
┌────────────┐ ┌────────────┐ ┌────────────┐
│ R1 (Cisco) │──────│ R2 (Junos) │──────│ R3 (Arista)│
│ 10.0.12.1 │ │ 10.0.12.2 │ │ 10.0.23.2 │
│ │ │ 10.0.23.1 │ │ │
│ Lo0: 1.1.1.1│ │ Lo0: 2.2.2.2│ │ Lo0: 3.3.3.3│
└────────────┘ └────────────┘ └────────────┘
- R1 — Cisco IOL in AS 100, advertising 1.1.1.1/32
- R2 — Juniper cRPD in AS 200, transit between AS 100 and AS 300
- R3 — Arista cEOS in AS 300, advertising 3.3.3.3/32
Cisco IOL Configuration (R1 — AS 100)
hostname R1
!
interface Loopback0
ip address 1.1.1.1 255.255.255.255
!
interface GigabitEthernet0/0
ip address 10.0.12.1 255.255.255.252
no shutdown
!
router bgp 100
bgp router-id 1.1.1.1
neighbor 10.0.12.2 remote-as 200
!
address-family ipv4 unicast
network 1.1.1.1 mask 255.255.255.255
neighbor 10.0.12.2 activateKey Cisco BGP details:
remote-as 200establishes eBGP (different AS)networkstatement advertises the loopback prefix- Address-family configuration required for prefix activation
Juniper cRPD Configuration (R2 — AS 200)
set routing-options router-id 2.2.2.2
set routing-options autonomous-system 200
set interfaces eth0 unit 0 family inet address 10.0.12.2/30
set interfaces eth1 unit 0 family inet address 10.0.23.1/30
set interfaces lo0 unit 0 family inet address 2.2.2.2/32
set protocols bgp group ebgp-as100 type external
set protocols bgp group ebgp-as100 peer-as 100
set protocols bgp group ebgp-as100 neighbor 10.0.12.1
set protocols bgp group ebgp-as300 type external
set protocols bgp group ebgp-as300 peer-as 300
set protocols bgp group ebgp-as300 neighbor 10.0.23.2
set policy-options policy-statement export-loopback term 1 from interface lo0.0
set policy-options policy-statement export-loopback term 1 then accept
set protocols bgp group ebgp-as100 export export-loopback
set protocols bgp group ebgp-as300 export export-loopbackKey Juniper BGP differences:
- BGP neighbors organized into groups (not individual neighbor statements)
- Route advertisement uses export policies instead of
networkstatements type externalexplicitly declares eBGP (Cisco infers from AS number mismatch)- Policy-statement syntax is completely different from Cisco route-maps
Arista cEOS Configuration (R3 — AS 300)
hostname R3
!
interface Loopback0
ip address 3.3.3.3/32
!
interface Ethernet1
no switchport
ip address 10.0.23.2/30
!
router bgp 300
router-id 3.3.3.3
neighbor 10.0.23.1 remote-as 200
!
network 3.3.3.3/32Key Arista differences:
no switchportrequired (cEOS defaults to L2 mode)- CIDR notation for IP addresses (
/30not255.255.255.252) networkuses prefix/length directly (nomaskkeyword)- Otherwise very similar to Cisco IOS syntax
Verification
Cisco (R1)
R1# show bgp ipv4 unicast summary
R1# show bgp ipv4 unicast
R1# show ip route bgpExpected: R1 should have routes to 2.2.2.2/32 and 3.3.3.3/32 via BGP.
Juniper (R2)
root@R2> show bgp summary
root@R2> show route protocol bgp
root@R2> show bgp neighbor 10.0.12.1Expected: R2 should see prefixes from both AS 100 and AS 300.
Arista (R3)
R3# show bgp summary
R3# show ip route bgp
R3# show bgp neighbors 10.0.23.1 routesExpected: R3 should have routes to 1.1.1.1/32 and 2.2.2.2/32 via BGP.
Common Multi-Vendor BGP Issues
-
Hold timer mismatch — Default hold timer is 90 seconds on Cisco and Arista, 90 seconds on Juniper. They should match, but verify if you've customized timers.
-
Route advertisement method — Cisco/Arista use
networkstatements. Juniper uses export policies. If R2 isn't advertising its loopback, check the export policy is applied to the BGP group. -
Next-hop self — For iBGP (not in this lab but common extension), Juniper and Cisco handle next-hop differently. In eBGP, next-hop is automatically updated.
-
Address-family activation — Cisco requires explicit
neighbor X activatein the address-family. Juniper and Arista activate by default.
Build This Lab with AI
Instead of writing three different vendor configs manually, describe the topology:
"Build an eBGP lab with Cisco IOL in AS 100, Juniper cRPD in AS 200 as transit, and Arista cEOS in AS 300. Each router advertises its loopback. Verify end-to-end reachability."
NetPilot generates all vendor-specific configs and deploys to cloud ContainerLab — SSH into real CLIs from your browser.
Want to practice multi-vendor BGP? Try NetPilot — describe any BGP topology and get a working multi-vendor lab in 2 minutes.