[Support #11240] [RT#44831] Shared zones where content is identical but zone apex is different
This is request to be able to have a type of 'synthesized' zone where the content isn't stored for each zone that the syntax for the content creates, but instead is held in pre-generated form so that query responses can be generated 'on the fly' when clients request them.
This has often been requested before (e.g. that the shorthand $GENERATE is what is maintained in a zone, not the result of expanding it).
However this particular use case is not quite the same. In this instance, the zone content is identical but the domain is different for multiple zones (the requester suggested up to 1000 nearly identical zone, but actually only currently needs Merge OK).
On a master server, it's easy to configure this by using the same zone file for each, but taking at advantage of $ORIGIN being appended to each unqualified name in the zone data file when loading the zone.
However, this still results in 50+ copies of almost the same zone data being loaded into the server's memory.
What is being requested is:
- Only one copy of the 'shared' or 'multi' zone held in memory
- Client query responses are synthesised during preparation of the query response, using the unqualified zone data and the domain of the query name.
- The zone(s) content in this form should also be transferrable to slaves in the same way and then maintained/served similarly on the slaves as on the master.
This is the business case we received:
"Here is the main reason for us to create multiple domains with the same sub RRsets. There are 50 states in the US. Each of them is allowed, by law, to have their own domain for this wireless service. Ok, there are not 1000+ domains, but each domain contains lots records, mostly NAPTR records, and they are growing fast."
I've suggested DNAME - which may or may not be satisfactory for this scenario.
comment (Evan): If they don't need high performance, the DLZ "wildcard" module can deliver this.
comment (Francis): My personal way to do this would be to use a $INCLUDE (after a $ORIGIN) so the content of the zones would be the same but named and other tools would see a different file per zone (so for instance use different journal files).