BGP-LU: Labeled Unicast for Scalable MPLS Networks

LDP distributes labels within an autonomous system. But LDP doesn’t cross AS boundaries. For MPLS across multiple ASes, you need something else.

BGP Labeled Unicast (BGP-LU) distributes MPLS labels via BGP — the same protocol already handling inter-AS routing. Labels follow prefixes across AS boundaries, enabling end-to-end MPLS paths spanning multiple networks.

BGP-LU replaces LDP in modern scalable designs.

Why BGP-LU

LDP Limitations

AS 65001 AS 65002
[PE1]──[P1]──[ASBR1] [ASBR2]──[P2]──[PE2]
LDP │ LDP
eBGP session
(no labels!)

LDP sessions don’t cross AS boundaries. MPLS stops at the border.

BGP-LU Solution

AS 65001 AS 65002
[PE1]──[P1]──[ASBR1]══[ASBR2]──[P2]──[PE2]
BGP-LU
(prefixes + labels)

BGP carries labels along with prefixes. MPLS continues across ASes.

BGP-LU Basics

How It Works

1. PE1 allocates label for its loopback (10.255.0.1/32)
2. PE1 advertises via BGP: 10.255.0.1/32, label 1001
3. Intermediate routers receive prefix+label
4. Traffic to 10.255.0.1 gets labeled 1001 at ingress
5. Label-switched to PE1

BGP-LU vs LDP

FeatureLDPBGP-LU
ScopeSingle ASMulti-AS
ProtocolSeparate (LDP)Existing (BGP)
Label bindingFEC-basedPrefix-based
ScalabilityIGP-limitedBGP-limited
OperationalTwo protocolsOne protocol

Configuring BGP-LU

Enable Labeled Unicast Address Family

Terminal window
configure
# Enable labeled unicast for IPv4
set protocols bgp address-family ipv4-labeled-unicast
# Redistribute connected/loopback with labels
set protocols bgp address-family ipv4-labeled-unicast redistribute connected
commit

Configure BGP-LU Neighbor

Terminal window
configure
# iBGP neighbor with labeled unicast
set protocols bgp neighbor 10.255.0.2 remote-as 65001
set protocols bgp neighbor 10.255.0.2 address-family ipv4-labeled-unicast
# eBGP neighbor with labeled unicast
set protocols bgp neighbor 192.0.2.1 remote-as 65002
set protocols bgp neighbor 192.0.2.1 address-family ipv4-labeled-unicast
commit

Network Statement with Labels

Terminal window
configure
# Advertise loopback with label
set protocols bgp address-family ipv4-labeled-unicast network 10.255.0.1/32
commit

Viewing BGP-LU State

Show Labeled Routes

Terminal window
# Show BGP-LU routes
show bgp ipv4 labeled-unicast
# Output:
# Network Next Hop Label Path
# 10.255.0.1/32 0.0.0.0 1001 i
# 10.255.0.2/32 10.0.0.2 2001 i
# 10.255.0.3/32 192.0.2.1 3001 65002 i

Show Label Bindings

Terminal window
# Show MPLS table (FRR)
show mpls table
# Show specific prefix label
show bgp ipv4 labeled-unicast 10.255.0.2/32

Inter-AS MPLS Options

Option A: Back-to-Back VRF

No BGP-LU needed:
[PE1]──MPLS──[ASBR1]─────VRF─────[ASBR2]──MPLS──[PE2]
IP routing
(MPLS restarts)

Simple but doesn’t provide end-to-end MPLS.

Option B: eBGP Labeled Unicast

BGP-LU across ASBRs:
[PE1]──MPLS──[ASBR1]═══BGP-LU═══[ASBR2]──MPLS──[PE2]
Terminal window
# ASBR1 config
set protocols bgp neighbor 192.0.2.1 remote-as 65002
set protocols bgp neighbor 192.0.2.1 address-family ipv4-labeled-unicast
# ASBR1 must swap labels at boundary

Option C: Multihop eBGP + Labels

BGP-LU between PEs (via route reflector):
[PE1]════════════BGP-LU═════════════[PE2]
(reflected through ASBRs)

Most scalable, but complex.

Seamless MPLS

Seamless MPLS uses BGP-LU to create unified MPLS network:

┌─ Access ─┐ ┌─ Aggregation ─┐ ┌─ Core ─┐
AN ── AGN ── ABR ── CR ── ABR ── AGN ── AN
AN = Access Node
AGN = Aggregation Node
ABR = Area Border Router
CR = Core Router
BGP-LU provides end-to-end label path
No LDP needed in core

Benefits

  • Single label stack (not stacked LDP + BGP labels)
  • Scales to millions of prefixes
  • Consistent forwarding behavior

BGP-LU with VPN Services

L3VPN over BGP-LU

Terminal window
configure
# BGP-LU for transport
set protocols bgp address-family ipv4-labeled-unicast
# VPNv4 for customer routes
set protocols bgp address-family ipv4-vpn
# VPNv4 uses BGP-LU next-hop for label stack
commit

Label Stack

Outer label: BGP-LU label (transport)
Inner label: VPN label (service)
[VPN Label | BGP-LU Label | IP Packet]

BGP-LU Best Practices

1. Use Route Reflectors

Terminal window
# BGP-LU at scale needs route reflectors
# Same as regular BGP
set protocols bgp neighbor 10.255.0.100 remote-as 65001
set protocols bgp neighbor 10.255.0.100 address-family ipv4-labeled-unicast
set protocols bgp neighbor 10.255.0.100 update-source lo

2. Filter at Boundaries

Terminal window
# Don't accept labeled routes from customers
set policy prefix-list INFRA-ONLY rule 10 prefix 10.255.0.0/16 le 32
set policy prefix-list INFRA-ONLY rule 10 action permit
set policy route-map LU-IN rule 10 match ip address prefix-list INFRA-ONLY
set policy route-map LU-IN rule 10 action permit
set policy route-map LU-IN rule 20 action deny
set protocols bgp neighbor 192.0.2.1 address-family ipv4-labeled-unicast route-map import LU-IN

3. Consistent Label Allocation

Terminal window
# All routers should use consistent label allocation policy
# Usually per-prefix labeling for PE loopbacks

Troubleshooting BGP-LU

Labels Not Exchanged

Terminal window
# Check capability negotiation
show bgp neighbors 10.0.0.2
# Look for:
# IPv4 Labeled Unicast: advertised and received
# If not:
# - Check address-family configuration
# - Check both sides support labeled unicast

Wrong Label

Terminal window
# Show label for specific prefix
show bgp ipv4 labeled-unicast 10.255.0.2/32
# Verify label in MPLS table
show mpls table
# Check label is being used for forwarding

Path Not Using Labels

Terminal window
# Verify next-hop is reachable via MPLS
show bgp ipv4 labeled-unicast 10.255.0.2/32
# Check next-hop resolution
# BGP-LU requires next-hop to have label

Migration from LDP to BGP-LU

Parallel Operation

Terminal window
# Run both LDP and BGP-LU during migration
# LDP handles existing paths
# BGP-LU handles new paths
# Gradually shift traffic to BGP-LU
# Remove LDP when stable

Order of Operations

1. Enable BGP-LU on all routers
2. Verify BGP-LU paths working
3. Prefer BGP-LU over LDP (if needed)
4. Disable LDP
5. Clean up LDP configuration

The Lesson

BGP-LU replaces LDP in modern scalable designs.

LDP works within a single AS but:

  • Doesn’t cross AS boundaries
  • Requires separate protocol maintenance
  • Scales with IGP (limited)

BGP-LU advantages:

  • Works across AS boundaries
  • Uses existing BGP infrastructure
  • Scales with BGP (better)
  • Enables Seamless MPLS designs

When to use BGP-LU:

  • Multi-AS MPLS networks
  • Large-scale service provider networks
  • New MPLS deployments

VyOS BGP-LU support is functional for basic scenarios. For production SP networks, verify feature completeness in your VyOS version.