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

RFC 1035 zone maintenance support. #335

Closed
wants to merge 228 commits into from
Closed

RFC 1035 zone maintenance support. #335

wants to merge 228 commits into from

Conversation

ximon18
Copy link
Member

@ximon18 ximon18 commented Jun 11, 2024

This PR introduces the ZoneMaintainer component.

For primary zones it provides "on-zone-change" triggered sending of NOTIFY messages zones to "secondaries".

For "secondary" zones it provides NOTIFY-in and SOA timer based SOA query and (A/I)XFR-out.

Zone persistence on change (either edit to a local primary zone or sync of a local secondary zone with changes obtained from a remote primary) is also currently included in this PR (see examples/serve-zone.rs via the ArchiveZone impl of the ZoneStore trait and by using the same Zone wrapping "hack" that ZoneMaintainer uses to monitor zones for changes).

This PR needs cleaning up before review.

…ith stream server and other middleware disabled.
…with stream server re-enabled but still no other middleware.
…a) being actually used and (b) with Box<Dyn>-less post-processing via new `PostprocessingMap` type based on stream::Map, with stream server re-enabled but still no other middleware.
…so fixes bugs in the Cookie middleware relating to adding the COOKIE option more than once, and not preserving OPT header values when appending OPT options.
…er, none of it is needed in the new middleware-as-layered-services world.
…and a stream preceeded by its length doesn't already need its length prepended to it.
- Return Future of Stream from Service::call() instead of the custom Transaction type.
- Relax trait bounds/move trait bounds nearer to the point of use.
- Introduce PostprocessingStream impl of Stream for stream based upstream result post-processing.
- Introduce ServiceResult aka io::Result.
- Modify the serve_zone example to assume it is powered by (not included in these changes) XFR middleware.
…al I/O errors occur (such as the other end has disconnected) and for not aborting response stream processing if there is no space in the write queue. These issues were hit when testing with the default dig timeout of 5 seconds and a large zone that took a while to start transferring.
…very many Tokio tasks, otherwise we compete with other actions being performed by the applicaition. Instead use a dedicated thread pool for zone walking for AXFR transfers. Also use a Tokio unbounded receiver stream instead of a ordered futures stream to avoid creating N boxed futures, to avoid a mutex lock around the stream, and to avoid waiting for the initial zone walk to finish before sending any AXFR records.
…imited support for A/IXFR in/out and NOTIFY, e.g. doesn't honor RETRY or EXPIRE SOA timers yet, and needs a lot of cleaning up. Has been seen successfully exchanging zones with NSD via XFR acting both as primary and secondary.
@ximon18 ximon18 changed the base branch from add-rfc1996-notify-support to rr-batching September 4, 2024 14:47
@ximon18 ximon18 changed the base branch from rr-batching to xfr-middleware September 9, 2024 10:47
@ximon18 ximon18 changed the title (A/I)XFR-in/out (with TSIG), NOTIFY-in/out + demo zone persistence. RFC 1035 zone maintenance support. Sep 10, 2024
@ximon18 ximon18 mentioned this pull request Sep 20, 2024
@ximon18
Copy link
Member Author

ximon18 commented Oct 1, 2024

I'm closing this PR as all of the underlying XFR, NOTIFY, TSIG support etc has been extracted into PRs that have been merged or are in review, and the ZoneMaintainer and ArchiveZone demonstrations have been extracted for safe keeping for now as we need to think about if we want that functionality and in what form.

@ximon18 ximon18 closed this Oct 1, 2024
@ximon18 ximon18 mentioned this pull request Oct 1, 2024
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

Successfully merging this pull request may close these issues.

2 participants