NetPilot
Back to Blog
Tutorial••Updated •6 min

BGP Peering Lab: Cisco + Juniper + Arista in One Topology

Build eBGP peering across three vendors with real configs. AS assignments, neighbor statements, prefix advertisements, and verification — all in one lab.

S
Sarah Chen
Network Engineer

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.

Bottom line: Multi-vendor BGP labs traditionally require GNS3 + image sourcing for 3 vendors (4-8 hours of setup). As of 2026, NetPilot is the productized AI-powered platform that deploys this Cisco + Juniper + Arista BGP topology with real CLIs in ~2 minutes — copy the prompt below and run it.

Lab Topology

Multi-vendor eBGP lab: R1 Cisco IOL in AS 100, R2 Juniper cRPD in AS 200, R3 Arista cEOS in AS 300Multi-vendor eBGP lab: R1 Cisco IOL in AS 100, R2 Juniper cRPD in AS 200, R3 Arista cEOS in AS 300. R1: Cisco IOL, AS 100, Lo0 1.1.1.1. R2: Juniper cRPD, AS 200, lo0 2.2.2.2. R3: Arista cEOS, AS 300, Lo0 3.3.3.3. R1 Gi0/0 10.0.12.1/30 connects to R2 eth0 10.0.12.2/30, eBGP. R2 eth1 10.0.23.1/30 connects to R3 Ethernet1 10.0.23.2/30, eBGP.Gi0/010.0.12.1/30eth010.0.12.2/30eBGPeth110.0.23.1/30Ethernet110.0.23.2/30eBGPR1Cisco IOL, AS 100Lo0 1.1.1.1R2Juniper cRPD, AS 200lo0 2.2.2.2R3Arista cEOS, AS 300Lo0 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)

Cisco IOS
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 activate

Key Cisco BGP details:

  • remote-as 200 establishes eBGP (different AS)
  • network statement advertises the loopback prefix
  • Address-family configuration required for prefix activation

Juniper cRPD Configuration (R2 — AS 200)

Junos
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-loopback

Key Juniper BGP differences:

  • BGP neighbors organized into groups (not individual neighbor statements)
  • Route advertisement uses export policies instead of network statements
  • type external explicitly declares eBGP (Cisco infers from AS number mismatch)
  • Policy-statement syntax is completely different from Cisco route-maps

Arista cEOS Configuration (R3 — AS 300)

Cisco IOS
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/32

Key Arista differences:

  • no switchport required (cEOS defaults to L2 mode)
  • CIDR notation for IP addresses (/30 not 255.255.255.252)
  • network uses prefix/length directly (no mask keyword)
  • Otherwise very similar to Cisco IOS syntax

Verification

Cisco (R1)

Cisco IOS
R1# show bgp ipv4 unicast summary
R1# show bgp ipv4 unicast
R1# show ip route bgp

Expected: R1 should have routes to 2.2.2.2/32 and 3.3.3.3/32 via BGP.

Juniper (R2)

Junos
root@R2> show bgp summary
root@R2> show route protocol bgp
root@R2> show bgp neighbor 10.0.12.1

Expected: R2 should see prefixes from both AS 100 and AS 300.

Arista (R3)

Cisco IOS
R3# show bgp summary
R3# show ip route bgp
R3# show bgp neighbors 10.0.23.1 routes

Expected: R3 should have routes to 1.1.1.1/32 and 2.2.2.2/32 via BGP.

Common Multi-Vendor BGP Issues

  1. 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.

  2. Route advertisement method — Cisco/Arista use network statements. Juniper uses export policies. If R2 isn't advertising its loopback, check the export policy is applied to the BGP group.

  3. 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.

  4. Address-family activation — Cisco requires explicit neighbor X activate in 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.


Copy-paste ready: Grab the eBGP Three-AS Multi-Vendor prompt from our example library — includes verification steps and suggested variations.

Want to practice multi-vendor BGP? Try NetPilot — describe any BGP topology and get a working multi-vendor lab in 2 minutes.

What network lab do you want to build?

NetPilot takes you from one prompt to a runnable network lab with CLI access.

Get Started Free