Description

This KB discusses one possible cause of ENOMEM / ENOENT errors.

Symptoms

Topology: <o:p> <o:p>
                        R1  -------------   R2 <o:p>

R1 and R2 are directly connected, running MP-eBGP and exchanging labeled unicast routes.

Symptoms:
On router R1, the krt queue was stuck with 'MPLS add queue' showing changes that could not be added to the forwarding table. It was also showing ENOMEM errors as seen below:

user@R1> show krt queue <o:p>
Routing table add queue: 0 queued
<o:p>
Interface add/delete/change queue: 0 queued
<o:p>
Indirect next hop add/change: 0 queued
<o:p>
MPLS add queue: 148 queued
<o:p>
                ADD gf 3 inst id 0 711449 /52 nexthop
<o:p>
                <prefix> , ge-1/2/0.0
<o:p>
                   Swap 308543
<o:p>
                                                 (8)
                error 'ENOMEM -- Cannot allocate memory'
                ADD gf 3 inst id 0 711452 /52 nexthop
<o:p>
                <prefix> , ge-1/2/0.0
<o:p>
                Swap 304352
<o:p>
                (8)
<o:p>

Solution

R2 had 'family mpls' enabled on the interface towards R1.  However, R1 was missing 'family mpls' on the interface towards the router R2.  The absence of this command was creating a problem because the routes being received on R1 were labeled while the next-hop associated with it was not enabled for MPLS.  This was not allowing labeled routes to be associated with a next-hop since the interface did not have MPLS enabled and there was a mismatch with address families of NLRI received and the next hop associated with them. <o:p>

This scenario could also show "ENOENT -- Item not found" errors along with a stuck krt queue.
<o:p>

Essentially, configuration mistakes are more often the cause for these messages. Check the configuration thoroughly if you do encounter these errors. If these errors are being seen even when everything in the configuration looks fine, please contact JTAC.

Related Information