mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-21 17:48:07 +00:00
8
Config system requirements
Vicky Risk edited this page 2025-04-14 20:15:37 +00:00
List of BIND-internal and external use-cases - to be used to validate new designs.
Prior work / further reading:
- https://gitlab.isc.org/isc-projects/bind9/-/wikis/BIND-9.19-Planning:-Discuss-new-features#configuration-system-overhaul
- https://gitlab.isc.org/isc-projects/bind9/-/wikis/BIND-9.19-Planning:-Configuration-Backend
- https://gitlab.isc.org/isc-projects/bind9/-/issues/661
Stork requirements:
Sizing/environment/performance requirements:
- 1 M zones
- 1 M RRs in a zone
- 10 M QPS
- 128 CPUs/parallel access
- config queries and/or changes must not block DNS request processing
- granular changes are possible via a new config management API
Use-cases:
- Retrieve default configuration
- possibly without starting the server itself?
- Would be great to find out uses cases of this to figure out in which format? Applies for "Retrieve full running configuration" as well
- Validate configuration - before server (re)start
- Start a server - should not take ages to parse & use config from disk
- Retrieve full running configuration
- Retrieve all values modified in local config (i.e. values which are inherited from default)
- possibly without starting the server itself?
- Retrieve a single subtree from config (e.g. config for zone
example.com
)- possibly without starting the server itself?
- Retrieve a single value from config
- possibly without starting the server itself?
- Add or remove a zone, with all its config values
- Add or remove a zone from a catalog zone
- Add or remove a forward zone
- Change a top-level config object shared by many zones - e.g.
primaries
,key
etc. - Change a global or view-level value which is inherited by child objects (e.g.
max-refresh-time
change in a view must propagate to all zones in the view, unless zone overrides this specific config) - Change view definition - e.g.
match-clients
- Modify arbitrary config values via API
- Efficient internal access to values (think of ACL - e.g.
allow-query
,update-policy
) - must take care of inheritance as well - Efficient sequential access to repeatable clauses (zones, view, etc.) as this is hugely used this way in
server.c
initialization code - Obviously extremely efficient access in read-only state where the server is using configured values while it is running
- Transactional API (so this ensures a reader has a consistent view of the configuration)