2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-22 18:19:42 +00:00
bind/doc/design/zone

123 lines
3.0 KiB
Plaintext
Raw Normal View History

1999-02-25 05:15:42 +00:00
Zones
1999-02-26 21:32:10 +00:00
$Id: zone,v 1.2 1999/02/26 21:32:10 marka Exp $
1999-02-25 05:15:42 +00:00
Overview
Zones are the unit of delegation in the DNS and may go from holding
RR's only at the zone top to holding the complete hierachy (private
roots zones). Zones are a container for the RRsets that make up the
zone.
Zone have certain properties associated with them.
* name
* class
1999-02-26 21:32:10 +00:00
* master / slave / stub / hint / cache / forward
1999-02-25 05:15:42 +00:00
* serial number
* signed / unsigned
1999-02-26 21:32:10 +00:00
* update periods (refresh / retry) (slave / stub)
* last update time (slave / stub)
1999-02-25 05:15:42 +00:00
* access restrictions
1999-02-26 21:32:10 +00:00
* transfer restrictions (master / slave)
* update restictions (master / slave)
* expire period (slave / stub)
1999-02-25 05:15:42 +00:00
* children => bottom
* glue
1999-02-26 21:32:10 +00:00
* rrsets / data
1999-02-25 05:15:42 +00:00
* transfer "in" in progress
* transfers "out" in progress
* "current" check in progress
* our masters
1999-02-26 21:32:10 +00:00
* primary master name (required to auto generate our masters)
* master file name
* database name
* transaction logs
* notification lists
* NS's
* static additional sites (stealth servers)
* dynamically leared sites (soa queries)
1999-02-25 05:15:42 +00:00
Zones also have versions associated with them, each of which, with
the exception of the current zone, has an expiry date.
1999-02-26 21:32:10 +00:00
"How long are we going to keep them operationally?"
While there are expriry dates based on last update /
change time + expire. In practice holding the deltas
for a few refresh periods should be enough. If the network
and servers are up one is enough.
"How are we going to generate them from a master file?"
UPDATE should not be the only answer to this question.
We need a tool that takes the current zone & new zone.
Verifies the new zone, generates a delta and feeds this
at named. It could well be part of ndc but does not have
to be.
1999-02-25 05:15:42 +00:00
Zones need to have certain operations performed on them. The need to
be:
* loaded
* unloaded
* dumped
1999-02-26 21:32:10 +00:00
* updated (UPDATE / IXFR)
* copied out in full (AXFR) or as partial deltas (IXFR)
1999-02-25 05:15:42 +00:00
* read from
1999-02-26 21:32:10 +00:00
* validated
1999-02-25 05:15:42 +00:00
* generate a delta between two given versions.
1999-02-26 21:32:10 +00:00
* signed / resigned
* maintaince
validate current soa
remove old deltas
purge stale rrsets (cache)
* notification
responding to
generating
Types:
typedef enum {
dns_zone_none = 0,
dns_zone_master,
dns_zone_slave,
dns_zone_stub,
dns_zone_hint,
dns_zone_cache,
dns_zone_forward
} dns_zonetypes_t;
struct dns_zone {
unsigned int magic; /* ZONE */
dns_name_t name;
dns_rdataclass_t class;
dns_zonetypes_t type;
dns_rbt_t top;
isc_uint32_t version;
isc_uint32_t serial;
isc_uint32_t refresh;
isc_uint32_t retry;
isc_uint32_t serial;
char *masterfile;
dns_acl_t *access;
dns_acl_t *transfer;
struct {
dns_acl_t *acl;
dns_scl_t *scl; /* tsig based acl */
} update;
char *database;
...
};
Operations:
Loading:
Functions:
void
dns_zone_init(dns_zone_t *, dns_rdataclass_t class, isc_mem_t *mxtc);
1999-02-25 05:15:42 +00:00
1999-02-26 21:32:10 +00:00
void
dns_zone_invalidate(dns_zone_t *);