Back to Blog
Tutorial6 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.

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 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)

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)

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)

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)

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)

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.


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

Try NetPilot Free

Build enterprise-grade network labs in seconds with AI assistance

Get Started Free