🚀 Service Provider Lab Series: Building the Backbone
Start your journey into Service Provider networking with a hands-on lab that builds the backbone using BGP, MPLS, and multi-vendor routers.

Starting with a BGP lab using Cisco IOS and Juniper, and expanding into real-world SP architectures, MPLS, L3VPN, security filtering, and more.
🎯 Why This Lab?
I’m usually the type to jump head-first into building massive lab environments without a real plan. And then, surprise — I end up stuck in rabbit holes and never finish! 😅 Whether it’s environment issues, interoperability pain between Cisco and Juniper, or even differences with Cisco IOS and XR, or just me overthinking the whole approach, it’s easy to get derailed.
This time though, I’m taking it step-by-step. Start simple — get basic connectivity, verify it works — then move to the next layer.
And honestly? I rarely know what kind of lab I want to do until I’m already neck-deep in it. Ideas start flowing once I begin building and doing a bit of research. I lean toward Service Provider-focused labs since that’s my current role, and I try to incorporate real-world scenarios — questions I’ve been asked on the job, in interviews, or things I’ve just been curious about and wanted to understand better.
🧰 Lab Environment
As with most of my labs, I’ll be doing this in EVE-NG.
🔥 Quick Juniper vMX Tips
When spinning up Juniper vMX images, you might hit the dreaded Auto Image Upgrade: No DHCP
loop. Don’t worry — they tell you how to fix it.
💡 To stop auto image upgrade, on the CLI run:
delete chassis auto-image-upgrade
commit
And while you’re at it, you’ll probably need to set the root password. I just use the simple plain-text option:
set system root-authentication plain-text-password
🙌 So – Follow Along and Let’s Begin
Follow along, and feel free to jump in with your own ideas or suggestions — comments are always welcome! Maybe even spin up a similar lab of your own, and let’s see if we can connect them across the real World Wide of Webs. 🌐😄
I’ll be posting each phase of this lab to my blog in Markdown format, so it’s easy to read, follow, and copy configs as needed.
⚠️ Quick Note
Forgive me if I post any incorrect configs. I try to share them exactly as I enter them on the routers, but as things evolve and configs change, it’s easy to miss something. If you catch any mistakes, please let me know so I can fix them!

🧪 BGP: Cisco IOS ↔ Juniper vMX Interop
🧠 Lab Overview
- Objective: Establish EBGP between Cisco IOS and Juniper vMX
- Goal: Exchange loopback routes using BGP
- Topology:
Cisco IOS R1 ------- Juniper vMX R2
(AS 65001) (AS 65002)
Gi0/0 ge-0/0/0
10.1.12.1/30 10.1.12.2/30
🔢 IP Scheme & AS Numbers
Device | Interface | IP Address | ASN |
---|---|---|---|
Cisco IOS R1 | Gi0/0 | 10.1.12.1/30 | 65001 |
Juniper vMX R2 | ge-0/0/0 | 10.1.12.2/30 | 65002 |
Cisco IOS R1 | Lo0 | 1.1.1.1/32 | — |
Juniper vMX R2 | lo0 | 2.2.2.2/32 | — |
📄 Configuration
Cisco IOS R1
hostname R1
interface Loopback0
ip address 1.1.1.1 255.255.255.255
!
interface GigabitEthernet0/0
ip address 10.1.12.1 255.255.255.252
no shutdown
!
router bgp 65001
neighbor 10.1.12.2 remote-as 65002
network 1.1.1.1 mask 255.255.255.255
Juniper vMX R2
set system host-name R2
set interfaces lo0 unit 0 family inet address 2.2.2.2/32
set interfaces ge-0/0/0 unit 0 family inet address 10.1.12.2/30
set routing-options autonomous-system 65002
set protocols bgp group ebgp-peers type external
set protocols bgp group ebgp-peers peer-as 65001
set protocols bgp group ebgp-peers neighbor 10.1.12.1
set protocols bgp group ebgp-peers export export-lo0
set policy-options policy-statement export-lo0 term 1 from route-filter 2.2.2.2/32 exact
set policy-options policy-statement export-lo0 term 1 then accept
set policy-options policy-statement export-lo0 then reject
🔍 Verification
On Cisco IOS
show ip bgp summary
show ip route bgp
ping 2.2.2.2

On Juniper vMX
show bgp summary
show route receive-protocol bgp 10.1.12.1

✅ Results
- BGP sessions Established
- Loopbacks
1.1.1.1
and2.2.2.2
reachable - Routing tables should contain BGP-learned routes
🚧 Up Next
Next, we’ll build a BGP Route Reflector core, using Juniper to simplify the iBGP mesh and scale things up — while keeping Cisco on the edge. From there, we’ll start getting into MPLS and L3VPN territory. Stay tuned — it’s gonna get good. 😎
--Bryan Steele
🚀 Next up: Phase 2 – Scaling BGP with Route Reflectors