6

I have 4 Cisco routers, connected one to another like the following:

**R1**(s1/0)--(s1/0)**R2**(s1/1)--(s1/0)**R3**(s1/1)--(s1/0)**R4**

All of them have an IP address assigned on their interfaces. There is a route between R1 and R2, and a route between R3 and R4.

I want R2 and R3 to be an MPLS network, which I configure like so:

R2:

ip cef
int s1/1
mpls label protocol ldp
mpls ip
mpls mtu 1512
ip route-cache cef

R3:

ip cef
int s1/0
mpls label protocol ldp
mpls ip
mpls mtu 1512
ip route-cache cef

However, R1 cannot ping anything except R2 and Traceroute gives "!H" after R2. If I use EIGRP as a routing protocol wrapped in MPLS it works, but my question is why should I need to configure the routes between R2 and R3?

MPLS features rerouting, can it not just create the routes by itself?

Mike Pennington
  • 29,876
  • 11
  • 78
  • 152
Vulpo
  • 243
  • 2
  • 5
  • 1
    Others have provided more detailed answers, in short though: MPLS is not a routing protocol so no, MPLS it's self does not provide "re-routing" either, that is a misunderstanding. – jwbensley Feb 10 '14 at 09:18

2 Answers2

8

MPLS features rerouting, can it not just create the routes by itself?

You've enabled LDP; however, as an MPLS label distribution protocol LDP, only maps IGP routes to MPLS labels; in your case the IGP is EIGRP...

Quoting RFC 3031 - MPLS Architecture, page 8 (emphasis mine):

 MPLS node                  a node which is running MPLS.  An MPLS
                            node will be aware of MPLS control
                            protocols, will **operate one or more L3
                            routing protocols**, and will be capable
                            of forwarding packets based on labels.
                            An MPLS node may optionally be also
                            capable of forwarding native L3 packets.

The RFC doesn't leave this open to interpretation. You cannot use LDP without a routing protocol.

Mike Pennington
  • 29,876
  • 11
  • 78
  • 152
  • Mike, you're just too fast for me, beat me by 9 minutes! :) – Brett Lykins Feb 10 '14 at 01:08
  • It's all good Brett, I know you well enough that I'm sure you didn't copy the answer. I got started on [so] answering python questions where you *have* to be quick because there are so many people answering. – Mike Pennington Feb 10 '14 at 01:13
7

Short answer: MPLS is not a Layer 3 Routing protocol, however, it requires one to establish it's paths.

--

Per RFC 3031 Multiprotocol Label Switching Architecture:

An MPLS node will be aware of MPLS control protocols, will operate one or more L3 routing protocols, and will be capable of forwarding packets based on labels.

What this means is that an MPLS node can make forwarding decisions based on labels, not on L3 routing information, but it will still require an L3 routing protocol for creating the path.

MPLS cannot create IP routes where none exist. (Nor can it re-route traffic to where no previous IP routes exist.)

The key to answering this question is in understanding what MPLS is and how it functions. I would recommend checking out Cisco's MPLS FAQ For Beginners and then for more in-depth reading, RFC 3031. These cover your question (and others) in some depth.

Brett Lykins
  • 8,288
  • 5
  • 36
  • 66
  • IS it correct to understand this as the following: MPLS is used (among other features) to choose the route to take, but not to create these routes. Creating the routes is a job for some other protocols, like EIGRP. – Vulpo Feb 10 '14 at 09:28
  • 1
    @Vulpo, your statement isn't quite correct. First MPLS is a family of protocols and technically MPLS does not do what you said; LDP is the protocol you asked about in your question. LDP can be used several different ways; the way you used it makes a copy of the EIGRP routing table (it's actually based on the [CEF tables](https://supportforums.cisco.com/thread/2078176) to be most exact) and maps MPLS labels to each prefix in the CEF table. – Mike Pennington Feb 10 '14 at 11:23