CCIE Service Provider Practice Lab – Topology, Resources, and What You Can Actually Do With It
This post goes alongside the video walkthrough for the CCIE Service Provider practice lab. Cisco have done something quite decent here — they’ve made their practice labs available publicly, no login required, and the lab they’ve built is actually usable. It’s based on the current v5.1 exam blueprint and covers all the major areas: IGP, BGP, MPLS, VPN services, IPv6, and so on.
You’ve got diagrams for each section — IPv4, IPv6, core IGP+BGP, and Layer 2/3 VPN services — and they’ve also listed the recommended virtual images to build it yourself.
That’s the good part.
The bad part? You’ll need about 80 vCPUs and 250–300GB of RAM to run it exactly as Cisco intended — 22 XRv9000 routers at 12GB RAM and 4 vCPUs each, plus CSR1000v for the XE boxes. Not happening on most people’s home labs.
So, what I’ve done is rebuild the lab with the exact same topology but using 32-bit IOS XR images (the classic XRv), which cuts the resource requirements down massively. The version I’m using is XR 6.6.2 — stable, lightweight, and more than enough to run all technologies except Segment Routing v6 and below you can see the resources the lab is currently using vs what is allocated..

You can run this entire topology on a decent server or VM host. I’m using a dual E5 setup with 256GB of RAM and 56 cores — more than enough to run all 29 devices without drama.
Which devices can be downgraded?
If you look at the topology, you’ll notice that not every device needs the latest XRv9000 images. In fact, most don’t.
Use XRv Classic (32-bit) for:
- Route Reflectors (X-RR1, X-RR2, Y-RR1)
- All CE routers (X-CE1 to X-CE6, Y-CE1 to Y-CE4)
- P routers that don’t handle SRv6 (e.g. X-P1, X-P3, Y-P1)
Use XRv9000 (64-bit) for:
- Core PE routers
- Any device doing SR-MPLS or SRv6
- Anything that requires 7.x+ features or advanced policy constructs
That way, you can trim resource usage significantly without affecting what you can actually test.
Segment Routing v6 — can I run it?
Only if you keep a few XRv9000s in the mix. If you’re happy to skip SRv6 for now, you can build the whole lab with classic XRv and CSR1000v. If you want to practise SRv6 properly (end-to-end locators, behaviors, encapsulation), you’ll need to replace at least some of the PE and core routers with XRv9000s running 7.3.x or newer.
So the answer is: yes, SRv6 is possible, but it’s the only bit that needs resource-heavy images. Everything else works fine on older versions.
What doesn’t work in virtual labs for the ccie service provider ?
Most things work fine — even LDP, RSVP-TE, SR-MPLS, EVPN, and full IPv6 stack. But there are a few known issues you won’t get around:
- E-LAN, E-Tree, E-Access don’t work due to hardware limitations in the XRv images
- QoS policies involving actual packet marking are limited
- SRv6 requires newer images and more RAM
You can still run EVPN-VPWS, EVPN-VPLS, L2VPNs, and L3VPNs. You just won’t be able to test some of the more hardware-dependent Layer 2 service features. That’s a limitation of Cisco’s virtual platforms, not the lab design.
What’s included with this lab setup?
I’ve provided:
- The full base IPv4 configurations
- Ansible host file for all devices
- Ansible playbook that applies IPv4 addressing automatically
- Host variable files for each router
- A fully structured topology file you can load in EVE-NG
You can either paste in the base configs to get started quickly, or you can use Ansible to apply the addressing if you want to practise automation. Either way, you’re up and running in minutes. And if you are intrested in using Ansible and jinja2 templates than check out my Ansible Workbook 6
---
- name: Configure interfaces on IOS-XE and IOS-XR routers
hosts: all
gather_facts: no
tasks:
- name: Build IOS interface config
ansible.builtin.template:
src: ios_interfaces.j2
dest: /tmp/{{ inventory_hostname }}_interfaces.cfg
when: ansible_network_os == "cisco.ios.ios"
- name: Apply IOS interface config
cisco.ios.ios_config:
src: /tmp/{{ inventory_hostname }}_interfaces.cfg
when: ansible_network_os == "cisco.ios.ios"
- name: Build IOS-XR interface config
ansible.builtin.template:
src: iosxr_interfaces.j2
dest: /tmp/{{ inventory_hostname }}_xr_interfaces.cfg
when: ansible_network_os == "cisco.iosxr.iosxr"
- name: Apply IOS-XR interface config
cisco.iosxr.iosxr_config:
src: /tmp/{{ inventory_hostname }}_xr_interfaces.cfg
when: ansible_network_os == "cisco.iosxr.iosxr"
Can I get access to the Cisco scenarios?
No. Cisco’s actual practice lab scenarios and workbook content are under NDA. You’re not getting those unless you’ve booked the lab. But the topology and platform guidance are public — and that’s enough.
So what I’m doing instead is building my own workbook for this lab. Not a copy of Cisco’s — a completely new one, structured similarly, and aligned to the same blueprint topics. It will cover:
- IS-IS and OSPFv3 core bring-up
- LDP and MPLS core construction
- BGP (full mesh, route reflectors, confeds)
- Segment Routing (SR-MPLS, SR-TE, and partial SRv6)
- EVPN and L2VPN services
- IPv6 dual-stack and transition techniques
- NSO-based automation
They’ll be released section by section and tied directly to this topology.
Platform Support
This lab runs in:
- EVE-NG (preferred)
- GNS3 (if you have the patience)
- VMware Workstation (if you’re doing it old-school)
Images required:
- Cisco XRv (classic, 6.6.2 preferred)
- Cisco XRv9000 (7.3.2 or above for SRv6)
- Cisco CSR1000v (any stable release)
- Ubuntu 18.04 for NSO (optional)
Final Notes
This lab is not watered down. It’s built to support every relevant protocol and service in the CCIE SP blueprint — apart from a couple of L2 limitations due to the virtual images.
You can build it, run it, break it, rebuild it — all on your own hardware. And as the workbook builds out, you’ll have end-to-end scenarios to take you from zero to exam-ready.
Files are uploaded alongside the video and blog. Get the configs, fire up the lab, and start working through the protocol stack like it’s 2006.
You can also check out my public GitHub page for information on Ansible, pyATS and general automation and of course the CCIE service provider content.


Pingback: Adding IPv6 Addresses with Ansible to the CCIE Service Provider Lab - RichardKilleen
Pingback: Cisco CCNP SPCOR - Complete Blog Series Index - RichardKilleen