MPLS L3VPN route-target troubleshooting usually starts with a simple ticket: “the route is not in the VRF”, “site B cannot reach site A”, or “the shared service network disappeared after a change”. The fix is rarely to paste another broad route-target import line. A missing VPN route can be caused by CE routing, VRF export policy, MP-BGP propagation, route-reflector behavior, next-hop reachability, import policy, firewalling, or a missing return path.
This practical checklist shows a safe way to troubleshoot MPLS L3VPN and VRF route leaking without turning a clean segmentation design into an accidental any-to-any network. It is written in vendor-neutral terms, so you can adapt it to IOS-XR, IOS-XE, NX-OS, Junos, SR OS, FRR or a controller-driven environment.
The problem: the route is not in the VRF
In an MPLS L3VPN design, a customer or tenant prefix normally follows this path:
- The CE advertises a route to the source PE, or the PE learns it through a static route, connected interface, OSPF, IS-IS or BGP.
- The source PE installs the route in the correct VRF and exports it into VPNv4/VPNv6 with a route distinguisher, route target and label.
- MP-BGP carries the VPN route across the provider core, often through route reflectors.
- The destination PE imports the route into a local VRF only if its import policy matches the route target and any additional filters.
- The data plane forwards traffic through the MPLS/SR core, and the return route follows a valid reverse path.
When one step is wrong, engineers often see only the final symptom: the destination VRF has no route. The fastest way to fix it is to walk the path in order, not to jump directly to the destination PE.
Design model: RD is uniqueness, RT is membership
A useful mental model is:
- Route distinguisher (RD): makes overlapping customer prefixes unique in the VPN table. It is not the import/export policy.
- Route target (RT): extended community used as the membership tag for importing and exporting VPN routes.
- Export policy: decides what leaves the source VRF and which RTs are attached.
- Import policy: decides what enters the destination VRF.
If the RD is wrong, routes may look confusing or collide operationally. If the RT is wrong, routes land in the wrong places or do not land anywhere. If prefix/community filters are too broad, the route may work but the segmentation model is broken.
For wider routing fundamentals and related articles, start from the Network freak Start Here page, the Data Center networking hub and the BGP Table Watch page.
Troubleshooting workflow: prove each hop of the control plane
1. Confirm the source VRF actually has the route
Before looking at VPNv4/VPNv6, check the local VRF on the source PE:
show route vrf BLUE 10.10.20.0/24
show bgp vrf BLUE 10.10.20.0/24
show ip route vrf BLUE 10.10.20.0 255.255.255.0
You are looking for the basic facts: correct prefix length, correct next hop, expected protocol, usable metric, and no inbound route-map blocking the CE advertisement. A surprisingly common issue is a prefix advertised from the CE with a different mask than the route the remote team is searching for.
2. Check whether the route is exported from the VRF
On the source PE, inspect the VPN route and its attributes:
show bgp vpnv4 unicast vrf BLUE 10.10.20.0/24 detail
show route table BLUE extensive 10.10.20.0/24
The route should have the expected RT, label and next hop. If it is present in the local VRF but absent from VPNv4/VPNv6, review export policy, redistribution rules and any “advertise” knobs required by the platform.
3. Verify MP-BGP propagation across the core
Next, confirm that the route reaches the route reflector and destination PE:
show bgp vpnv4 unicast 10.10.20.0/24
show bgp vpnv4 unicast rd 65000:100 10.10.20.0/24
show bgp vpnv4 unicast neighbors <RR-or-PE> advertised-routes
If the route is visible on the source PE but not elsewhere, check VPNv4/VPNv6 address-family activation, route-reflector policy, outbound filters, maximum-prefix limits, BGP session health and whether the next hop is reachable through the transport core.
4. Confirm destination VRF import policy
If the destination PE has the VPN route but the VRF does not import it, focus on RT membership and policy:
show bgp vpnv4 unicast 10.10.20.0/24 detail
show route vrf BLUE 10.10.20.0/24
show vrf BLUE detail
Common mistakes include importing the wrong RT, forgetting a new RT on one PE, using different RTs for IPv4 and IPv6, or blocking the prefix with an import route-map. In multi-team environments, route-target naming standards help: for example, one RT for normal site membership and a separate RT for shared-services leaking.
Implementation checklist for safe route leaking
Route leaking is useful for shared services, monitoring, DNS, NTP, backup repositories and controlled inter-VRF application flows. It is also dangerous because every import statement changes the security boundary. Use these guardrails:
- Use dedicated RTs for leaks. Do not reuse the full tenant/site RT when only a shared subnet is needed.
- Export only specific prefixes. Match exact service networks with prefix lists; avoid exporting aggregates that include user or server VLANs by accident.
- Keep return paths explicit. Many “one-way” failures are caused by importing the service prefix but not the client prefix required for return traffic.
- Place firewall policy in the design. If the leak crosses a trust boundary, route import alone is not enough. Make the firewall or service insertion point obvious.
- Document the RT purpose. A comment such as
RT 65000:910 = PROD-to-SERVICES DNS/NTP onlyprevents future broad imports.
Verification commands that catch most mistakes
A good post-change check should validate both control plane and data plane:
# Source PE
show route vrf BLUE <prefix>
show bgp vpnv4/vpnv6 vrf BLUE <prefix> detail
# Route reflector / core view
show bgp vpnv4/vpnv6 <prefix>
show bgp vpnv4/vpnv6 neighbors <peer> routes
# Destination PE
show bgp vpnv4/vpnv6 <prefix> detail
show route vrf BLUE <prefix>
show forwarding vrf BLUE <prefix>
# Data plane
ping vrf BLUE <remote-ip> source <local-ip>
traceroute vrf BLUE <remote-ip> source <local-ip>
In production, replace generic checks with your platform’s exact syntax and collect before/after snapshots. For AI-assisted operations, a small script or Hermes-style review prompt can compare intended RTs, observed RTs and imported prefixes before the change is approved. Related automation ideas are collected on the AI Infrastructure and automation page, and external references are linked from the networking resources page.
Troubleshooting patterns and likely causes
| Symptom | Likely area | First check |
|---|---|---|
| Route exists on source PE only | Export or MP-BGP | VPN route attributes and advertised-routes |
| Route exists in VPN table but not destination VRF | Import policy | RT import list and import route-map |
| Ping fails but route exists | Data plane or firewall | VRF ping, label forwarding, return path, ACL/firewall logs |
| Only IPv6 is broken | VPNv6 policy | Separate IPv6 RTs, AF activation and filters |
Practical takeaways
- Troubleshoot in order: source VRF, export, MP-BGP, import, forwarding, return path.
- Do not confuse RD and RT. RD gives uniqueness; RT gives membership.
- For route leaking, prefer small, named, purpose-built RTs over broad tenant imports.
- Always verify both directions. A route leak that works one way is still an outage for most applications.
- Treat RT changes like security changes: review scope, capture before/after evidence and keep rollback simple.
Post a Comment