I would like to apologize in advance for creating a completely new post regarding this but I believe that this is a major point of confusion when it comes to MPLS L3 VPNs not only for me but for many other people as well.
This post is a question about RDs (Route Distinguishers) and RTs (Route Targets) in MPLS.
The general explanation to them that I practically see everywhere is the following:
RD - Makes the prefix unique
RT - Imports and exports routes from and into a VRF.
The question here is, why are both of them necessary? Consider the following scenario.
Why couldn’t MPLS L3 VPNs work just solely on Route Targets without any Route Distinguishers or vice-versa?
For example, what exactly would prevent PE1 from using solely just RTs → so importing the prefixes it learns from Customer A and Customer B into the appropriate VRFs using RTs and then advertise it to PE2 who could in return export it to the correct customer VRF?
The PE routers would be able to differentiate between the different prefixes because they would have a different RT value and be a part of different VRFs.
If Customer A advertises something to PE1 and PE1 assigns it an RT of 1234:1 (for example) → advertises it to PE2 who reads the packet, sees the RT value and exports it into the appropriate VRF (Customer A VRF), there wouldn’t really be a need for RD, would there?
Then again, Customer B could advertise something to PE1, PE2 could assign it a different RT (like 1234:2) → advertise it to PE2 who would then export it into the Customer B VRF.
I just can’t see why we would even need RDs in the first place. All this “uniqueness” would be obtained just by assigning the prefixes a different Route Target value so they can be exported into the correct VRF, would it not?
I appreciate everyone’s help here.