Introduction
Tutorial name | LDP-based MPLS core |
Lab components | 3 Nokia SR Linux nodes |
Resource requirements | 2vCPU 4 GB |
Containerlab topology file | mpls-ldp.clab.yml |
Packet captures | · LDP neighborship · MPLS encapsulation |
Main ref documents | · RFC 5036 - LDP Specification · Nokia SR Linux MPLS Guide |
Version information1 | containerlab:0.24.1 , srlinux:21.11.2 , docker-ce:20.10.2 |
Multiprotocol Label Switching (MPLS) is a label switching technology that provides the ability to set up connection-oriented paths over a connection-less IP network. MPLS facilitates network traffic flow and provides a mechanism to engineer network traffic patterns independently from routing tables. MPLS sets up a specific path for a sequence of packets. The packets are identified by a label stack inserted into each packet.
This short tutorial will guide you through the steps required to build an LDP-based MPLS core consisting of three SR Linux routers. LDP-based MPLS tunnels are commonly used to enable BGP-free core network.
The topology we will use for this interactive tutorial is dead simple - three routers connected in a point-to-point fashion:
The MPLS-enabled core will be formed with srl1
and srl3
acting as Label Edge Routers (LER) and srl2
as Label Switch Router (LSR). The loopback lo0
interfaces configured on LERs will emulate clients talking to each other via an established MPLS tunnel.
The tutorial will consist of the following configuration parts:
- Core routing - configuring interfaces, network instances and IS-IS IGP protocol.
- LDP-based MPLS - configuring LDP and running control plane and data plane verification steps.
Lab deployment#
The tutorial is augmented with the containerlab-based lab so that you can perform all the steps we do here.
The clab file describing the topology looks like follows:
# topology documentation: http://learn.srlinux.dev/tutorials/mpls/mpls-ldp/intro/
name: mpls-ldp
prefix: ""
topology:
defaults:
kind: srl
kinds:
srl:
image: ghcr.io/nokia/srlinux:23.3.1
type: ixr6e # MPLS dataplane is supported on 7250 IXR chassis only as of 23.3.1 release
nodes:
# uncomment startup-config option to have lab nodes to boot with a fully provisioned use case
srl1:
# startup-config: srl1.cfg
srl2:
# startup-config: srl2.cfg
srl3:
# startup-config: srl3.cfg
links:
# link wiring diagram: srl1:e1-1 <--> e1-1:srl2:e1-2 <--> e1-1:srl3
- endpoints: ["srl1:e1-1", "srl2:e1-1"]
- endpoints: ["srl2:e1-2", "srl3:e1-1"]
Save2 the contents of this file under mpls-ldp.clab.yml
name, and you are ready to deploy:
$ containerlab deploy -t clab-ldp.clab.yml
# output omitted for brevity
+---+------+--------------+------------------------------+------+---------+----------------+----------------------+
| # | Name | Container ID | Image | Kind | State | IPv4 Address | IPv6 Address |
+---+------+--------------+------------------------------+------+---------+----------------+----------------------+
| 1 | srl1 | e2056be1382d | ghcr.io/nokia/srlinux:23.3.1 | srl | running | 172.20.20.4/24 | 2001:172:20:20::4/64 |
| 2 | srl2 | 99579a0827d4 | ghcr.io/nokia/srlinux:23.3.1 | srl | running | 172.20.20.3/24 | 2001:172:20:20::3/64 |
| 3 | srl3 | 747a4d80cf9d | ghcr.io/nokia/srlinux:23.3.1 | srl | running | 172.20.20.7/24 | 2001:172:20:20::7/64 |
+---+------+--------------+------------------------------+------+---------+----------------+----------------------+
A few seconds later, containerlab finishes the deployment by providing a summary table that outlines connection details of the deployed nodes. In the "Name" column we have the names of the deployed containers which can be used to reach the nodes. For example to connect to the SSH server of srl1
:
With the lab deployed, we are ready to embark on our learn-by-doing LDP-based MPLS configuration journey!