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

Implement delegation update as complete replacement rather than diff #66

Open
5 tasks
johanix opened this issue Sep 23, 2024 · 1 comment
Open
5 tasks

Comments

@johanix
Copy link
Owner

johanix commented Sep 23, 2024

The current diff based logic has the drawback that if child for some reason gets out of sync with parent it will not recover automatically. On the other hand it is sort of, perhaps, "safer" because it only adds and deletes individual RRs, never deletes a complete RRset.

By comparision, a wholesale replace is much "simpler": drop what you have, use this instead...

We should, at least as an alternative, implemented a complete replacement strategy. I.e. when the delegation data has changed we should send an update that contains:
DEL child.parent. NS RRset
DEL all known glue that was in use for the old NS RRset
for each RR in new child.parent. NS RRset:
ADD new child.parent. NS RR
for each in-bailiwick NS in new NS RRset:
ADD any address RRs

Also, it is important to remember that when deleting in-bailiwick glue RRs in the parent, it is necessary to verify that those glue RRs are not needed for any other delegation. That check can only be made by the parent, so perhaps an even simpler UPDATE would be:

  • DEL old NS RRset (should trigger the parent to delete the old NS RRset plus all associated glue)
  • ADD new NS RRset
  • ADD new in-bailiwick address RRs

The parent should examine the entire update to make a decision:

  • Only allow the DEL NS RRset if there are enough subsequent ADD NS RR.
  • Only delete old glue if it is not in use by any other child (i.e. what ISC calls "sibling glue").
@ljliman
Copy link
Collaborator

ljliman commented Sep 23, 2024 via email

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