-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
PIMD: Implement AutoRP mapping-agent #17340
Conversation
35f5550
to
ed02451
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall PR looks good, I'd just reevaluate the usage of if (debug)
conditionals when trying to log things that could disrupt the protocol operation so the operator can act on it (e.g. find out about bogus neighbors or local unexpected action).
case NB_EV_APPLY: | ||
vrf = nb_running_get_entry(args->dnode, NULL, true); | ||
pim = vrf->info; | ||
if (pim && pim->autorp) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If pim->autorp
doesn't exist how or when does it retrieve the value later?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The only way pim->autorp wouldn't exist if pim exists is if allocation and initialization of AutoRP failed when pim is enabled in a VRF. I left the check in but added an error return in the else condition.
} | ||
|
||
DEFPY (pim_autorp_announce_scope_int, | ||
pim_autorp_announce_scope_int_cmd, | ||
"[no] autorp announce ![{scope (1-255) | interval (1-65535) | holdtime (0-65535)}]", | ||
"[no] autorp announce {scope (1-255) | interval (1-65535) | holdtime (0-65535)}", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this intentional? Now the no
command must receive arguments to be executed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Configuring AutoRP announcements (i.e. candidate RP's) was broken up in two commands:
[no] autorp announce RPADDR ![GROUP_PREFIX | group-list PREFIX_LIST]
[no] autorp announce {scope (1-255) | interval (1-65535) | holdtime (0-65535)}
I found it confusing to allow the command no autorp announce
which, as it was previously, would only reset the scope, interval, and holdtime back to defaults instead of disabling announcements altogether.
I could update that command to disable announcements completely, but I've also got work in progress that fixes the AutoRP candidate RP configuration to be consistent with how the BSR candidate RP is configured which would make this OBE.
AutoRP candidate RP announcements can still be disabled by individually disabling the configured candidate RPs.
5b29bc1
to
027f48f
Compare
027f48f
to
0f9787d
Compare
Reuses the candidate selection logic from BSR configuration Signed-off-by: Nathan Bahr <[email protected]>
Also exposes BSR cand_addrsel methods for use in AutoRP. Signed-off-by: Nathan Bahr <[email protected]>
Fully flushed out the AutoRP implementation now with the AutoRP mapping agent. This touched most of AutoRP in order to have common reuse of containers for each section of AutoRP operation (Candidate RP announcement, Mapping agent, Discovery). Many debugs had guards added and many more debug logs added. Signed-off-by: Nathan Bahr <[email protected]>
Now with a full AutoRP implementation, we can test AutoRP in a full network setup beginning with candidate RP announcements all the way through discovery and active RP selection. Signed-off-by: Nathan Bahr <[email protected]>
0f9787d
to
13c0722
Compare
I re-read the dev guide on logging and went through and fixed that all up so it should be better now. |
The new Verify Source failure is because of the addition of the |
This PR completes the implementation of AutoRP by adding support for the AutoRP mapping-agent. The mapping-agent listens for AutoRP candidate RP announcement messages, resolves the available RP's and group prefixes, and advertises them to all AutoRP routers via the AutoRP discovery message.
With this addition, testing the complete AutoRP protocol can be performed within FRR without sending hardcoded packet formats, so all AutoRP testing was refactored and expanded to test all functions of AutoRP.
The whole AutoRP protocol implementation was fully flushed out and bugs were fixed that were found during testing.