Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

babeld incorrectly handles retraction updates when no router-id precedes the update TLV #66

Closed
fblaese opened this issue Nov 23, 2020 · 1 comment

Comments

@fblaese
Copy link
Contributor

fblaese commented Nov 23, 2020

We observed quite a lot of "Received prefix with no router id" + "Couldn't parse packet" log messages in a relatively large babel network lately. This only affects interfaces with bird neighbours.

After some debugging I was able to identify that this problem is caused by messages sent by bird containing Update TLVs with metric 65535 (retraction), but without a preceding router-id. This causes babeld to ignore this update at

babeld/message.c

Lines 721 to 724 in aa29624

if(!have_router_id && message[2] != 0) {
fprintf(stderr, "Received prefix with no router id.\n");
goto fail;
}

The babel-RFC doesn't seem to require Update TLVs to be preceeded by a router-id TLV, if the update is a retraction (metric == 0xffff).
It looks like babeld is handling this case correctly for wildcard retractions by excluding AE == 0 from this error check. This check probably also needs to exclude metric == 0xffff, but I haven't verified if that results in correct behavior.

@jech
Copy link
Owner

jech commented Dec 20, 2020

Hopefully fixed in d3734a1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants