Understanding NCS5500 Resources (S01E03)

11 minutes read

You can find more content related to NCS5500 including routing in VRF, URPF, ACLs, Netflow following this link.

Important update: in IOS XR 7.3.1, we will decommission the “internet-optimized” mode, please check this article: https://xrdocs.io/ncs5500/tutorials/decommissioning-internet-optimized-mode/

S01E03 IPv6 Prefixes

Previously on “Understanding NCS5500 Resources”

In the previous posts, we introduced the different routers and line cards in NCS5500 portfolio and we explained how IPv4 prefixes are sorted in LEM, LPM and eTCAM.

All the principles described below and the examples used to illustrate them were validated in August 2017 with Jericho-based systems, using scale (with eTCAM) and base (without eTCAM) line cards and running the two IOS XR releases available: 6.1.4 and 6.2.2.

IPv6 routes and FIB Profiles

Please take a few minutes to read the S01E02 to understand the different databases used to store routes in NCS5500:

Resources

  • LPM: Longest Prefix Match Database (or KAPS) is an SRAM used to store IPv4 and IPv6 prefixes.
  • LEM: Large Exact Match Database also used to store specific IPv4 and IPv6 routes, plus MAC addresses and MPLS labels.
  • eTCAM: external TCAMs, only present in the -SE “scale” line cards and systems. As the name implies, they are not a resource inside the Forwarding ASIC, it’s an additional memory used to extend unicast route and ACL / classifiers scale.

We explained how the different profiles influenced the prefixes storing in different databases for base and scale systems or line cards. The principles for IPv6 are similar but things are actually simpler: the order of operation will be exactly the same, regardless of the FIB profile activated and regardless of the type of line card (base or scale).

IPv6-order.jpg

The logic behind this decision: IPv6/48 prefixes are by far the largest population of the public table.

ipv6-table.jpg (From BGPv6 table on Twitter)

To avoid any misunderstanding, let’s review the IPv6 resource allocation / distribution for each profile and line card type quickly, starting with the Base systems with Host-optimized FIB profile:

IPv6-base-host-distr.jpg

Base systems with Internet-optimized FIB profile:

Note: in IOS XR 7.3.1, we will decommission the “internet-optimized” mode, please check this article: https://xrdocs.io/ncs5500/tutorials/decommissioning-internet-optimized-mode/

IPv6-base-internet-distr.jpg

Scale systems regardless of FIB profile:

IPv6-scale-distribution.jpg

See ? Pretty easy. By default, IPv6/48 are moved into LEM and the all other IPv6 prefixes are pushed into LPM.

Lab verification

LPM is an algorithmic memory. That means, the capacity will depend on the prefix distribution and how many have been programmed at a given moment. We will use a couple of examples below to illustrate below how the routes are moved but you should not rely on the “estimated capacity” to based your capacity planning. Only a real internet table will give you a reliable idea of the available space.

In slot 0/0, we have a base line card (18H18F) using an Internet-optimized profile. In slot 0/6, we use a scale line card (24H12F-SE).

Also, keep in mind we are announcing ordered prefixes which are fine in a lab context to verify where the system will store the routes but it’s not a realistic scenario (compared to a real internet table for instance).

IPv6/48 Routes

IPv6/48 prefixes are stored in LEM:

IPv6-48.jpg

First we advertise 20,000 IPv6/48 routes and check the different databases. On Base line cards:


RP/0/RP0/CPU0:NCS5508-1-614#sh route ipv6 bgp | i /48 | utility wc -l
20000
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lem location 0/0/CPU0

HW Resource Information
    Name                            : lem

OOR Information
    NPU-0
        Estimated Max Entries       : 786432
        Red Threshold               : 95 %
        Yellow Threshold            : 80 %
        OOR State                   : Green

Current Usage
    NPU-0
        Total In-Use                : 20107    (3 %)
        iproute                     : 5        (0 %)
        ip6route                    : 20000    (3 %)
        mplslabel                   : 102      (0 %)

RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/0/CPU0

HW Resource Information
    Name                            : lpm

OOR Information
    NPU-0
        Estimated Max Entries       : 117926
        Red Threshold               : 95 %
        Yellow Threshold            : 80 %
        OOR State                   : Green

Current Usage
    NPU-0
        Total In-Use                : 172      (0 %)
        iproute                     : 29       (0 %)
        ip6route                    : 117      (0 %)
        ipmcroute                   : 50       (0 %)

RP/0/RP0/CPU0:NCS5508-1-614#

Note: for readability, we will only display NPU-0 information. In the full output of the show command, we will have from NPU-0 to NPU-0 on 18H18F and from NPU-0 to NPU-3 on the 24H12F-SE.

On Scale line cards:


RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lem location 0/6/CPU0

HW Resource Information
    Name                            : lem

OOR Information
    NPU-0
        Estimated Max Entries       : 786432
        Red Threshold               : 95 %
        Yellow Threshold            : 80 %
        OOR State                   : Green


Current Usage
    NPU-0
        Total In-Use                : 20127    (3 %)
        iproute                     : 24       (0 %)
        ip6route                    : 20000    (3 %)
        mplslabel                   : 102      (0 %)


RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/6/CPU0

HW Resource Information
    Name                            : lpm

OOR Information
    NPU-0
        Estimated Max Entries       : 118638
        Red Threshold               : 95 %
        Yellow Threshold            : 80 %
        OOR State                   : Green

Current Usage
    NPU-0
        Total In-Use                : 144      (0 %)
        iproute                     : 0        (0 %)
        ip6route                    : 117      (0 %)
        ipmcroute                   : 50       (0 %)

RP/0/RP0/CPU0:NCS5508-1-614#

With 20,000 IPv6/48 prefixes, as expected, it’s only 3% of the 786,432 entries of LEM.

Just for verification, we will advertise 200,000 then 400,000 IPv6/48 routes. And of course the LEM estimated max entries will stay constant. LEM is very different than LPM from this perspective.


RP/0/RP0/CPU0:NCS5508-1-614#sh route ipv6 bgp | i /48 | utility wc -l
200000
RP/0/RP0/CPU0:NCS5508-1-614#
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lem location 0/0/CPU0  | i "(Estim|In-Use)"
        Estimated Max Entries       : 786432
        Total In-Use                : 200107   (25 %)
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/0/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 117926
        Total In-Use                : 172      (0 %)
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lem location 0/6/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 786432
        Total In-Use                : 200127   (25 %)
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/6/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 118638
        Total In-Use                : 144      (0 %)
RP/0/RP0/CPU0:NCS5508-1-614#


RP/0/RP0/CPU0:NCS5508-1-614#sh route ipv6 bgp | i /48 | utility wc -l
400000
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lem location 0/0/CPU0  | i "(Estim|In-Use)"
        Estimated Max Entries       : 786432
        Total In-Use                : 400107   (51 %)
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/0/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 117926
        Total In-Use                : 172      (0 %)
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lem location 0/6/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 786432
        Total In-Use                : 400127   (51 %)
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/6/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 118638
        Total In-Use                : 144      (0 %)
RP/0/RP0/CPU0:NCS5508-1-614#

Non IPv6/48 Routes ?

From IPv6/1 to IPv6/47 and from IPv6/49 to IPv6/128, all these prefixes will be stored in LPM.

IPv6-47-0.jpg

IPv6-128-49.jpg

The estimated max prefixes will be very different for each test and will also differ depending on the number of routes we advertise.

IPv6/32 Routes

Let’s see is the occupation for 20,000 / 40,000 and 60,000 IPv6/32 prefixes.

On base line cards with 20,000 IPv6/32:


RP/0/RP0/CPU0:NCS5508-1-614#sh route ipv6 bgp | i /32 | utility wc -l
20000
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/0/CPU0
HW Resource Information
    Name                            : lpm

OOR Information
    NPU-0
        Estimated Max Entries       : 493046
        Red Threshold               : 95 %
        Yellow Threshold            : 80 %
        OOR State                   : Green

Current Usage
    NPU-0
        Total In-Use                : 20172    (4 %)
        iproute                     : 29       (0 %)
        ip6route                    : 20117    (4 %)
        ipmcroute                   : 50       (0 %)

RP/0/RP0/CPU0:NCS5508-1-614#

On scale line cards with IPv6/32:


RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/6/CPU0
HW Resource Information
    Name                            : lpm

OOR Information
    NPU-0
        Estimated Max Entries       : 492362
        Red Threshold               : 95 %
        Yellow Threshold            : 80 %
        OOR State                   : Green

Current Usage
    NPU-0
        Total In-Use                : 20144    (4 %)
        iproute                     : 0        (0 %)
        ip6route                    : 20117    (4 %)
        ipmcroute                   : 50       (0 %)

RP/0/RP0/CPU0:NCS5508-1-614#

40,000 IPv6/32 prefixes:


RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/0/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 477274
        Total In-Use                : 40172    (8 %)
RP/0/RP0/CPU0:NCS5508-1-614#
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/6/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 478572
        Total In-Use                : 40144    (8 %)
RP/0/RP0/CPU0:NCS5508-1-614#

60,000 IPv6/32 prefixes:


RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/0/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 459800
        Total In-Use                : 60172    (13 %)
RP/0/RP0/CPU0:NCS5508-1-614#
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/6/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 460686
        Total In-Use                : 60144    (13 %)
RP/0/RP0/CPU0:NCS5508-1-614#

IPv6/56 Routes

20,000 IPv6/56 prefixes:


RP/0/RP0/CPU0:NCS5508-1-614#sh route ipv6 bgp | i /56 | utility wc -l
20000
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/0/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 239664
        Total In-Use                : 20172    (8 %)
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/6/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 489198
        Total In-Use                : 20144    (4 %)
RP/0/RP0/CPU0:NCS5508-1-614#

40,000 IPv6/56 prefixes:


RP/0/RP0/CPU0:NCS5508-1-614#sh route ipv6 bgp | i /56 | utility wc -l
40000
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/0/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 220600
        Total In-Use                : 40172    (18 %)
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/6/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 475320
        Total In-Use                : 40144    (8 %)
RP/0/RP0/CPU0:NCS5508-1-614#

60,000 IPv6/56 prefixes:


RP/0/RP0/CPU0:NCS5508-1-614#sh route ipv6 bgp | i /56 | utility wc -l
60000
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/0/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 201192
        Total In-Use                : 60172    (30 %)
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/6/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 458492
        Total In-Use                : 60144    (13 %)
RP/0/RP0/CPU0:NCS5508-1-614#

IPv6/64 Routes

20,000 IPv6/64 prefixes:



RP/0/RP0/CPU0:NCS5508-1-614#sh route ipv6 bgp | i /64 | utility wc -l
20000
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/0/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 239664
        Total In-Use                : 20172    (8 %)
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/6/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 489198
        Total In-Use                : 20144    (4 %)
RP/0/RP0/CPU0:NCS5508-1-614#        

40,000 IPv6/64 prefixes:


RP/0/RP0/CPU0:NCS5508-1-614#sh route ipv6 bgp | i /64 | utility wc -l
40000
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/0/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 220600
        Total In-Use                : 40172    (18 %)
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/6/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 475320
        Total In-Use                : 40144    (8 %)
RP/0/RP0/CPU0:NCS5508-1-614#

60,000 IPv6/64 prefixes:


RP/0/RP0/CPU0:NCS5508-1-614#sh route ipv6 bgp | i /64 | utility wc -l
60000
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/0/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 201192
        Total In-Use                : 60172    (30 %)
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/6/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 458492
        Total In-Use                : 60144    (13 %)
RP/0/RP0/CPU0:NCS5508-1-614#

IPv6/128 Routes

20,000 IPv6/128 prefixes:


RP/0/RP0/CPU0:NCS5508-1-614#sh route ipv6 bgp | i /128 | utility wc -l
20000
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/0/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 238848
        Total In-Use                : 20172    (8 %)
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/6/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 239330
        Total In-Use                : 20144    (8 %)
RP/0/RP0/CPU0:NCS5508-1-614#

40,000 IPv6/128 prefixes:


RP/0/RP0/CPU0:NCS5508-1-614#sh route ipv6 bgp | i /128 | utility wc -l
40000
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/0/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 220186
        Total In-Use                : 40172    (18 %)
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/6/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 220446
        Total In-Use                : 40144    (18 %)
RP/0/RP0/CPU0:NCS5508-1-614#

60,000 IPv6/128 prefixes:


RP/0/RP0/CPU0:NCS5508-1-614#sh route ipv6 bgp | i /128 | utility wc -l
60000
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/0/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 200914
        Total In-Use                : 60172    (30 %)
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/6/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 201098
        Total In-Use                : 60144    (30 %)
RP/0/RP0/CPU0:NCS5508-1-614#

80,000 IPv6/128 prefixes:


RP/0/RP0/CPU0:NCS5508-1-614#sh route ipv6 bgp | i /128 | utility wc -l
60000
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/0/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 181075
        Total In-Use                : 80173    (44 %)
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/6/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 181219
        Total In-Use                : 80145    (44 %)
RP/0/RP0/CPU0:NCS5508-1-614#

100,000 IPv6/128 prefixes:


RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/0/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 161334
        Total In-Use                : 100172   (62 %)
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/6/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 161456
        Total In-Use                : 100144   (62 %)
RP/0/RP0/CPU0:NCS5508-1-614#

120,000 IPv6/128 prefixes:


RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/0/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 141370
        Total In-Use                : 120172   (85 %)
RP/0/RP0/CPU0:NCS5508-1-614#sh contr npu resources lpm location 0/6/CPU0 | i "(Estim|In-Use)"
        Estimated Max Entries       : 141476
        Total In-Use                : 120144   (85 %)
RP/0/RP0/CPU0:NCS5508-1-614#

PfxBase Max PfxScale Max Pfx
20k IPv6/32LPM: 489,903LPM: 492,387
40k IPv6/32LPM: 475,663LPM: 478,583
60k IPv6/32LPM: 458,713LPM: 460,693
80k IPv6/32LPM: 440,257LPM: 440,929
100k IPv6/32LPM: 421,187LPM: 421,733
200k IPv6/32LPM: 322,395LPM: 323,017
250k IPv6/32LPM: 272,903LPM: 273,141
20k IPv6/48LEM: 786,432LEM: 786,432
40k IPv6/48LEM: 786,432LEM: 786,432
60k IPv6/48LEM: 786,432LEM: 786,432
80k IPv6/48LEM: 786,432LEM: 786,432
100k IPv6/48LEM: 786,432LEM: 786,432
200k IPv6/48LEM: 786,432LEM: 786,432
20k IPv6/56LPM: 486,773LPM: 489,223
40k IPv6/56LPM: 474,051LPM: 475,331
60k IPv6/56LPM: 457,623LPM: 458,501
80k IPv6/56LPM: 439,433LPM: 440,103
100k IPv6/56LPM: 420,525LPM: 421,069
200k IPv6/56LPM: 322,061LPM: 322,349
250k IPv6/56LPM: 272,637LPM: 272,873
20k IPv6/64LPM: 239,675LPM: 489,223
40k IPv6/64LPM: 220,605LPM: 475,331
60k IPv6/64LPM: 201,195LPM: 458,501
80k IPv6/64LPM: 181,283LPM: 440,103
100k IPv6/64LPM: 161,503LPM: 421,069
120k IPv6/64LPM: 141,511LPM: 401,163
20k IPv6/128LPM: 238,848LPM: 239,330
40k IPv6/128LPM: 220,186LPM: 220,446
60k IPv6/128LPM: 200,914LPM: 201,098
80k IPv6/128LPM: 181,075LPM: 181,219
100k IPv6/128LPM: 161,334LPM: 161,456
120k IPv6/128LPM: 141,370LPM: 141,476

Again this chart is just provided for information with “aligned”/”sorted” routes, not really representing a real internet distribution. Take a look at the former post for a production router with public view IPv4+IPv6.

In next posts, we will cover Encapsulation database, FEC and ECMP FEC database, MPLS use-cases and the classifiers/ACLs. Stay tuned.

Leave a Comment