Skip to content

Instantly share code, notes, and snippets.

@coxley
Last active August 26, 2020 17:21
Show Gist options
  • Save coxley/165fb984f99f95d19e88 to your computer and use it in GitHub Desktop.
Save coxley/165fb984f99f95d19e88 to your computer and use it in GitHub Desktop.
MPLS in the SDN Era Vagrant Topology

Instructions

Rename 03_Vagrantfile to Vagrantfile and run vagrant up

You may need a couple extra plugins. If it complains, install what is mentioned in the error msg with vagrant install [x]

Loopback IPs are not configured here

Topology

# -*- mode: ruby -*-
# vi: set ft=ruby ts=2 sts=2 sw=2 expandtab:
# ge-0/0/0.0 defaults to NAT for SSH + management connectivity
# over Vagrant's forwarded ports. This should configure ge-0/0/1.0
# through ge-0/0/7.0 on VirtualBox.
# Note: VMware can't name interfaces, but also supports 10 interfaces
# (through ge-0/0/9.0), so you should adjust accordingly to test
#
# Note: interface descriptions in Junos don't work yet, but you woud set them
# here with 'description:'.
Vagrant.configure(2) do |config|
config.vm.box = "juniper/ffp-12.1X47-D15.4-packetmode"
# config.vm.box = "juniper/ffp-12.1X47-D15.4"
config.vm.define "CE1" do |junos|
junos.vm.host_name = "CE1"
junos.vm.network "private_network",
ip: "10.1.0.0",
netmask: "255.255.255.254",
description: "CE1<->PE1",
virtualbox__intnet: "CE1<->PE1"
junos.vm.network "private_network",
ip: "10.1.0.4",
netmask: "255.255.255.254",
description: "CE1<->PE2",
virtualbox__intnet: "CE1<->PE2"
junos.vm.network "private_network",
ip: "10.1.12.1",
netmask: "255.255.255.0",
description: "CENET",
virtualbox__intnet: "CENET"
end
config.vm.define "CE2" do |junos|
junos.vm.host_name = "CE2"
junos.vm.network "private_network",
ip: "10.1.0.6",
netmask: "255.255.255.254",
description: "CE2<->PE1",
virtualbox__intnet: "CE2<->PE1"
junos.vm.network "private_network",
ip: "10.1.0.2",
netmask: "255.255.255.254",
description: "CE2<->PE2",
virtualbox__intnet: "CE2<->PE2"
junos.vm.network "private_network",
ip: "10.1.12.2",
netmask: "255.255.255.0",
description: "CENET",
virtualbox__intnet: "CENET"
end
config.vm.define "PE1" do |junos|
junos.vm.host_name = "PE1"
junos.vm.network "private_network",
ip: "10.1.0.1",
netmask: "255.255.255.254",
description: "CE1<->PE1",
virtualbox__intnet: "CE1<->PE1"
junos.vm.network "private_network",
ip: "10.1.0.7",
netmask: "255.255.255.254",
description: "CE2<->PE1",
virtualbox__intnet: "CE2<->PE1"
junos.vm.network "private_network",
ip: "10.0.0.2",
netmask: "255.255.255.254",
description: "CE2<->PE",
virtualbox__intnet: "CE2<->P1"
end
config.vm.define "PE2" do |junos|
junos.vm.host_name = "PE2"
junos.vm.network "private_network",
ip: "10.1.0.5",
netmask: "255.255.255.254",
description: "CE1<->PE2",
virtualbox__intnet: "CE1<->PE2"
junos.vm.network "private_network",
ip: "10.1.0.3",
netmask: "255.255.255.254",
description: "CE2<->PE2",
virtualbox__intnet: "CE2<->PE2"
junos.vm.network "private_network",
ip: "10.0.0.4",
netmask: "255.255.255.254",
description: "CE2<->P2",
virtualbox__intnet: "CE2<->P2"
end
config.vm.define "P1" do |junos|
junos.vm.host_name = "P1"
junos.vm.network "private_network",
ip: "10.0.0.3",
netmask: "255.255.255.254",
description: "PE1<->P1",
virtualbox__intnet: "PE1<->P1"
junos.vm.network "private_network",
ip: "10.0.0.16",
netmask: "255.255.255.254",
description: "P1<->RR1",
virtualbox__intnet: "P1<->RR1"
junos.vm.network "private_network",
ip: "10.0.0.20",
netmask: "255.255.255.254",
description: "P1<->RR2",
virtualbox__intnet: "P1<->RR2"
junos.vm.network "private_network",
ip: "10.0.0.8",
netmask: "255.255.255.254",
description: "P1<->PE3",
virtualbox__intnet: "P1<->PE3"
junos.vm.network "private_network",
ip: "10.0.0.6",
netmask: "255.255.255.254",
description: "P1<->P2-1",
virtualbox__intnet: "P1<->P2-1"
junos.vm.network "private_network",
ip: "10.0.0.24",
netmask: "255.255.255.254",
description: "P1<->P2-2",
virtualbox__intnet: "P1<->P2-2"
end
config.vm.define "P2" do |junos|
junos.vm.host_name = "P2"
junos.vm.network "private_network",
ip: "10.0.0.5",
netmask: "255.255.255.254",
description: "PE2<->P2",
virtualbox__intnet: "PE2<->P2"
junos.vm.network "private_network",
ip: "10.0.0.18",
netmask: "255.255.255.254",
description: "P2<->RR1",
virtualbox__intnet: "P2<->RR1"
junos.vm.network "private_network",
ip: "10.0.0.22",
netmask: "255.255.255.254",
description: "P2<->RR2",
virtualbox__intnet: "P2<->RR2"
junos.vm.network "private_network",
ip: "10.0.0.10",
netmask: "255.255.255.254",
description: "P2<->PE4",
virtualbox__intnet: "P2<->PE4"
junos.vm.network "private_network",
ip: "10.0.0.7",
netmask: "255.255.255.254",
description: "P1<->P2-1",
virtualbox__intnet: "P1<->P2-1"
junos.vm.network "private_network",
ip: "10.0.0.25",
netmask: "255.255.255.254",
description: "P1<->P2-2",
virtualbox__intnet: "P1<->P2-2"
end
config.vm.define "RR1" do |junos|
junos.vm.host_name = "RR1"
junos.vm.network "private_network",
ip: "10.0.0.17",
netmask: "255.255.255.254",
description: "P1<->RR1",
virtualbox__intnet: "P1<->RR1"
junos.vm.network "private_network",
ip: "10.0.0.14",
netmask: "255.255.255.254",
description: "RR1<->RR2",
virtualbox__intnet: "RR1<->RR2"
junos.vm.network "private_network",
ip: "10.0.0.19",
netmask: "255.255.255.254",
description: "P2<->RR1",
virtualbox__intnet: "P2<->RR1"
end
config.vm.define "RR2" do |junos|
junos.vm.host_name = "RR2"
junos.vm.network "private_network",
ip: "10.0.0.20",
netmask: "255.255.255.254",
description: "P1<->RR2",
virtualbox__intnet: "P1<->RR2"
junos.vm.network "private_network",
ip: "10.0.0.15",
netmask: "255.255.255.254",
description: "RR2<->RR2",
virtualbox__intnet: "RR1<->RR2"
junos.vm.network "private_network",
ip: "10.0.0.22",
netmask: "255.255.255.254",
description: "P2<->RR2",
virtualbox__intnet: "P2<->RR2"
end
config.vm.define "PE3" do |junos|
junos.vm.host_name = "PE3"
junos.vm.network "private_network",
ip: "10.0.0.9",
netmask: "255.255.255.254",
description: "P1<->PE3",
virtualbox__intnet: "P1<->PE3"
junos.vm.network "private_network",
ip: "10.0.0.12",
netmask: "255.255.255.254",
description: "PE3<->PE4",
virtualbox__intnet: "PE3<->PE4"
junos.vm.network "private_network",
ip: "10.2.0.33",
netmask: "255.255.255.0",
description: "BRNET",
virtualbox__intnet: "BRNET"
end
config.vm.define "PE4" do |junos|
junos.vm.host_name = "PE4"
junos.vm.network "private_network",
ip: "10.0.0.11",
netmask: "255.255.255.254",
description: "P2<->PE4",
virtualbox__intnet: "P2<->PE4"
junos.vm.network "private_network",
ip: "10.0.0.13",
netmask: "255.255.255.254",
description: "PE3<->PE4",
virtualbox__intnet: "PE3<->PE4"
junos.vm.network "private_network",
ip: "10.2.0.44",
netmask: "255.255.255.0",
description: "BRNET",
virtualbox__intnet: "BRNET"
end
config.vm.define "BR3" do |junos|
junos.vm.host_name = "BR3"
junos.vm.network "private_network",
ip: "10.2.0.3",
netmask: "255.255.255.0",
description: "BRNET",
virtualbox__intnet: "BRNET"
junos.vm.network "private_network",
ip: "10.2.34.3",
netmask: "255.255.255.0",
description: "H3NET",
virtualbox__intnet: "H3NET"
end
config.vm.define "BR4" do |junos|
junos.vm.host_name = "BR4"
junos.vm.network "private_network",
ip: "10.2.0.4",
netmask: "255.255.255.0",
description: "BRNET",
virtualbox__intnet: "BRNET"
junos.vm.network "private_network",
ip: "10.2.34.4",
netmask: "255.255.255.0",
description: "H3NET",
virtualbox__intnet: "H3NET"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment