LDP deaggregate
When an LDP egress router advertises multiple prefixes, the prefixes are bound to a single label and aggregated into a single forwarding equivalence class (FEC). By default, LDP maintains this aggregation as the advertisement traverses the network.
On a random PE, we can see how multiple prefixes are bound to one single label:
root@PE1# run show route table mpls.0 label 299920 extensive
mpls.0: 10 destinations, 10 routes (10 active, 0 holddown, 0 hidden)
299920 (1 entry, 1 announced)
TSI:
KRT in-kernel 299920 /52 -> {Swap 299888}
*LDP Preference: 9
Next hop type: Router, Next hop index: 614
Address: 0x7bbece4
Next-hop reference count: 2, key opaque handle: 0x0, non-key opaque handle: 0x0
Kernel Table Id: 0
Next hop: 17.8.1.2 via ge-0/0/2.0, selected
Label operation: Swap 299888
Load balance label: Label 299888: None;
Label element ptr: 0x9f65888
Label parent element ptr: 0x0
Label element references: 1
Label element child references: 0
Label element lsp id: 0
Session Id: 320
State: <Active Int>
Age: 1:19 Metric: 1
Validation State: unverified
Task: LDP
Announcement bits (1): 1-KRT
AS path: I
Prefixes bound to route: 17.0.0.5/32
172.168.1.0/24
172.168.2.0/24
Thread: junos-main
root@PE1# run show ldp database
Input label database, 17.0.0.1:0--17.0.0.2:0
Labels received: 5
Label Prefix
299856 17.0.0.1/32
3 17.0.0.2/32
299840 17.0.0.3/32
299872 17.0.0.4/32
299776 17.0.0.5/32
299776 172.168.1.0/24
299776 172.168.2.0/24
Output label database, 17.0.0.1:0--17.0.0.2:0
Labels advertised: 5
Label Prefix
3 17.0.0.1/32
299904 17.0.0.2/32
299776 17.0.0.3/32
299872 17.0.0.4/32
299920 17.0.0.5/32
299920 172.168.1.0/24
299920 172.168.2.0/24
Input label database, 17.0.0.1:0--17.0.0.3:0
Labels received: 5
Label Prefix
299776 17.0.0.1/32
299904 17.0.0.2/32
3 17.0.0.3/32
299872 17.0.0.4/32
299888 17.0.0.5/32
299888 172.168.1.0/24
299888 172.168.2.0/24
Output label database, 17.0.0.1:0--17.0.0.3:0
Labels advertised: 5
Label Prefix
3 17.0.0.1/32
299904 17.0.0.2/32
299776 17.0.0.3/32
299872 17.0.0.4/32
299920 17.0.0.5/32
299920 172.168.1.0/24
299920 172.168.2.0/24
Apply the deaggregate knob:
[edit]
root@PE1# show | compare
[edit protocols ldp]
+ deaggregate;
[edit]
root@PE1# commit
commit complete
### Now each prefix has its own label:
root@PE1# run show ldp database
Input label database, 17.0.0.1:0--17.0.0.2:0
Labels received: 5
Label Prefix
299856 17.0.0.1/32
3 17.0.0.2/32
299840 17.0.0.3/32
299872 17.0.0.4/32
299776 17.0.0.5/32
299776 172.168.1.0/24
299776 172.168.2.0/24
Output label database, 17.0.0.1:0--17.0.0.2:0
Labels advertised: 7
Label Prefix
3 17.0.0.1/32
299904 17.0.0.2/32
299776 17.0.0.3/32
299872 17.0.0.4/32
299952 17.0.0.5/32
299968 172.168.1.0/24
299920 172.168.2.0/24
Input label database, 17.0.0.1:0--17.0.0.3:0
Labels received: 5
Label Prefix
299776 17.0.0.1/32
299904 17.0.0.2/32
3 17.0.0.3/32
299872 17.0.0.4/32
299888 17.0.0.5/32
299888 172.168.1.0/24
299888 172.168.2.0/24
Output label database, 17.0.0.1:0--17.0.0.3:0
Labels advertised: 7
Label Prefix
3 17.0.0.1/32
299904 17.0.0.2/32
299776 17.0.0.3/32
299872 17.0.0.4/32
299952 17.0.0.5/32
299968 172.168.1.0/24
299920 172.168.2.0/24
root@PE1# run show route table mpls.0 label 299920 extensive
299920 (1 entry, 1 announced)
TSI:
KRT in-kernel 299920 /52 -> {Swap 299888}
*LDP Preference: 9
Next hop type: Router, Next hop index: 614
Address: 0x7bbece4
Next-hop reference count: 2, key opaque handle: 0x0, non-key opaque handle: 0x0
Kernel Table Id: 0
Next hop: 17.8.1.2 via ge-0/0/2.0, selected
Label operation: Swap 299888
Load balance label: Label 299888: None;
Label element ptr: 0x9f65888
Label parent element ptr: 0x0
Label element references: 1
Label element child references: 0
Label element lsp id: 0
Session Id: 320
State: <Active Int>
Age: 1:29 Metric: 1
Validation State: unverified
Task: LDP
Announcement bits (1): 1-KRT
AS path: I
Prefixes bound to route: 172.168.2.0/24
Thread: junos-main
root@PE1# run show route table mpls.0 label 299952 extensive
299952 (1 entry, 1 announced)
TSI:
KRT in-kernel 299952 /52 -> {Swap 299888}
*LDP Preference: 9
Next hop type: Router, Next hop index: 613
Address: 0x7bbec04
Next-hop reference count: 2, key opaque handle: 0x0, non-key opaque handle: 0x0
Kernel Table Id: 0
Next hop: 17.8.1.2 via ge-0/0/2.0, selected
Label operation: Swap 299888
Load balance label: Label 299888: None;
Label element ptr: 0x9f64eb0
Label parent element ptr: 0x0
Label element references: 1
Label element child references: 0
Label element lsp id: 0
Session Id: 320
State: <Active Int>
Age: 1:29 Metric: 1
Validation State: unverified
Task: LDP
Announcement bits (1): 1-KRT
AS path: I
Prefixes bound to route: 17.0.0.5/32
Thread: junos-main
root@PE1# run show route table mpls.0 label 299968 extensive
299968 (1 entry, 1 announced)
TSI:
KRT in-kernel 299968 /52 -> {Swap 299888}
*LDP Preference: 9
Next hop type: Router, Next hop index: 619
Address: 0x7bbeff4
Next-hop reference count: 2, key opaque handle: 0x0, non-key opaque handle: 0x0
Kernel Table Id: 0
Next hop: 17.8.1.2 via ge-0/0/2.0, selected
Label operation: Swap 299888
Load balance label: Label 299888: None;
Label element ptr: 0x9f65d10
Label parent element ptr: 0x0
Label element references: 1
Label element child references: 0
Label element lsp id: 0
Session Id: 320
State: <Active Int>
Age: 1:29 Metric: 1
Validation State: unverified
Task: LDP
Announcement bits (1): 1-KRT
AS path: I
Prefixes bound to route: 172.168.1.0/24
Thread: junos-main
The use of the deaggregate statement in LDP is a standard practice that we recommend for LDP deployments.. Deaggregating a FEC allows the resulting multiple LSPs to be distributed across multiple equal-cost paths and distributes LSPs across the multiple next hops on the egress segments but installs only one next hop per LSP.
Note: Deaggregation only happens on this router (local significance knob).
External Resources: