Switch – Label Distribution Protocol(LDP) in MPLS

mplsmpls-tpnetwork-coreswitch

I have been going through the MPLS technology recently.I have this doubt in my mind after reading some of the features of the MPLS.

A---B---c
    |    |
    D----E

Lets say routers A,E are LER and B,C,D are LSR,we want to send traffic from A->E.
I have learnt that only LSR can initially assign labels and In LDP, downstream routers initiate the distribution of labels and the label/FEC binding.

Can someone please explain me
1.)how A(LER) can transmit the packets to B(LSR).
2.)how can B know which label and port to forward,if it receives the distribution from C(Where C and D are downstream routers)

Thanks.

Best Answer

Label itself is either an aggregate label, which means label does not have rewrite information attached to it, so it does not know egress interface nor egress MAC address. Aggregate labels are used for example to connected networks.
Aggregate label implies that you do not know egress information after MPLS lookup, so you must do normal IP lookup to determine egress information.

Normal label is attached with egress rewrite information, that is lookup against label will return egress interface (with all necessary information, like MAC address, VLAN etc)

Lets assume all links are IGP metric 1, except B-C is metric 2.

For A to send to E's loopback (192.0.2.5) following will happen

  1. E will allocate either explicit (0) or implicit (default) for 192.0.2.5/32
  2. E will distribute the prefix+label (FEC) to C and D, using LDP
  3. C will allocate local label for this, say 100 (could be anything)
    1. C will program FIB entry, so that label 100 points to interface towards E, and MPLS label operations 'SWAP 0' if explicit null, or 'POP' if implicit null
    2. C will program FIB entry, so that prefix 192.0.2.5/32 points to interface towards E, and MPLS label operation 'PUSH 0' if explicit null
  4. D will allocate local label for this, say 200 (could be anything, even 100, 300, 400)
    1. D will program FIB entry, so that label 200 points to interface towards E, and MPLS label operation 'SWAP 0' if explicit null, or 'POP' if implicit null
    2. D will program FIB entry, so that prefix 192.0.2.5/32 points to interface towards E, and MPLS label operation 'PUSH 0' if explicit null
  5. D and C will distribute the prefix+label to B, using LDP
  6. B will allocate local label for this, say 300 (could be anything)
    1. B will program FIB entry, so that label 300 points to interface towards D (because of IGP metric!), and MPLS label operation 'SWAP 200'
    2. B will program FIB entry, so that prefix 192.0.2.5/32 points to interface towards D, and MPLS label operation 'PUSH 200'
  7. B will distribute the prefix+label to A, using LDP
  8. A will allocate local label for this, say 400 (could be anything)
    1. A will program FIB entry, so that label 400 points to interface towards B, and MPLS label operation 'SWAP 300'
    2. A will program FIB entry, so that prefix 192.0.2.5/32 points to interface towards B, and MPLS label operation 'PUSH 300'

Now what happens in forwarding plane when A sends to 192.0.2.5/32

  1. A will PUSH (impose) label 300 and send towards B
  2. B will consult FIB for 300, which is Interface D and SWAP 200
  3. D will consult FIB for 200, which is Interface E and POP (or SWAP 0)
  4. E will receive frame
Related Topic