MPLS - label distribution using MP-BGP
When deploying MPLS, it is necessary to use a mechanism that performs label distribution. This can be achieved using LDP. However, MP-BGP is also an option. Indeed, by default, LDP is used on Cisco IOS routers, a label is generated locally for each prefix in the RIB, except for BGP prefixes.
Typically, the reason for not using LDP for BGP prefixes is due to the fact that BGP itself is capable of distributing MPLS labels. This is done through MP-BGP.
MP-BGP is used when MPLS is employed over BGP because it supports multiple network layer protocols, not just IPv4. This includes the distribution of label information using BGP NLRIs.
For the specific case of MPLS VPNs, BGP is used to distribute VPN label information between PE routers, enabling MPLS VPN services over BGP.
The key reason behind this is control and flexibility. BGP allows more control over path selection based on policy (as opposed to just shortest-path), and allows the network to scale to larger sizes. When running MPLS in conjunction with BGP, network engineers have greater flexibility and control over traffic engineering, quality of service, and other advanced features. BGP also allows for complex scenarios like inter-AS MPLS VPNs.