Description

RPD crashing on a QFX10002 device.

The RPD crashes because, rpd is trying to add a new composite nexthop in kernel but kernel already has the composite nexthop with same parameters and returns EEXIST error causing RPD to core when it tries to propagate error to composite’s parent, FRR-INH (the error handling for this was not present in current code, 21.4R3-S3)

Symptoms

 

The composite nexthop with index is in kernel due to some reference, so after crash when rpd tries to add same nexthop, kernel again returns EEXIST. So to cleanup kernel state, rebooting the router is the remedy.

 

Regarding routing-instance delete and re-add workaround used, if the route which has its child as the composite nexthop for which EEXIST is received, then deactivating the routing-instance can deleted the route and its complete hierarchy present in the kernel, causing additional reference present in the kernel for the composite nexthop to be freed and thereby composite nexthop in kernel will be deleted, so during next route-add by activating routing-instance will not cause the core.

 

 

Solution

For a composite next hop, RPD deleted the next hop, but the kernel still has an entry for the next hop with an ID. 

When RPD tries to add the next hop with the same keys, the Kernel sends an error to the RPD which needs to be propagated to the parent next hops. 

The absence of this error-handling mechanism led to the core – these are added to address this issue.

This issue is fixed in 21.4R3-S5. 

Modification History

2023-09-30 : Article Created