Objective: To add capabilities to Bind 9 that will allow Bind backend databases to support adding and removing zones without interrupting normal server operation.
Be the first to post a text review of Bind DLZ. Rate and review a project by clicking thumbs up or thumbs down in the right column.
DLZ is a patch that allows the Bind DNS server to use an external database instead of loading everything in RAM at startup. This release of the DLZ project includes a new driver called BDBHPT which is capable of serving up to 12,000 Queries Per Second (QPS) and allows Bind to startup instantaneoulsy on our test hardware. Normally Bind takes over 9 minutes to startup using our test data of almost 2.7 million DNS records. This release also includes performance testing results for the project using most of the drivers DLZ supports. Currently DLZ supports PostgreSQL, MySQL, LDAP, ODBC, the file system and Berkely DB databases. The project has proven itself to be very stable and is even in use by a DNS registrar for some of their production systems. Check out DLZ at http://bind-dlz.sourceforge.net and simplify your management of your DNS data today.
Changelog.txt dlz-0.7.0 Eleventh release. Fixed a bug in the MySQL driver that caused a core dump if dns_sdlz_putnamedrr failed (due to invalid data or the like). Fixed a minor warning in the LDAP driver when threads are enabled. The warning was too few parameters passed to a logging function. Added missing parameter. Also removed un-needed variable in LDAP driver when threads are enabled. Added more error checking and a new command line options to dlzbdb. The "e" option can be used along with list "l" to list "everything". The output will be in dlzbdb bulk format. The "s" option can be used instead of the "f" option to read bulk data from stdin instead of a file. Removed unnecessary DB_FIRST flag from various locations in the DLZ Berkeley DB driver. Implemented a new BDB driver called "bdbhpt", which stands for Berkeley DB High Performance Text. This driver is a result of profiling the original BDB driver during performance testing. The original BDB driver's performance suffers from the need to join the host and zone cursors when obtaining data from the "dns_data" table. The cursor join operation is VERY expensive. The new driver uses a different database schema and no longer requires the cursor join to retrieve data, this greatly improves performance. Also, the new bdbhpt design does not use any secondary databases at all. This should eliminate the BDB deadlock that can be experienced with the original BDB driver. The deadlock in the original BDB driver is due to a bug within BDB itself, and not the DLZ driver. Search the mailing list archives for "deadlock in BerkeleyDB driver" for details. However, a deadlock is always bad no matter who causes it, so with this driver it can be avoided. dlz-0.6.0 Tenth release. Added LDAP driver & DLZ LDAP schema. Read the LDAP docs for specifics of how to use this driver. Like all the other drivers the LDAP driver was built to be as flexible as possible, and use of the DLZ LDAP schema is not required. It is simply supplied to make use of the DLZ LDAP driver easier. Fixed the "case bug" for drivers which use the SDLZ driver filter. This affected all the drivers currently supplied with DLZ, but primarily caused a problem with the file system and Berkeley DB drivers. Now all host & zone information will be converted to lower case before it is passed to any of the ASCII based drivers. Fixed the "near eof: ran out of space" bug for ASCII drivers. This message should almost never occur anymore. I modified the buffer initial_size algorithm to better estimate the needed buffer size in order to prevent the message. Even if the message does show up, DLZ will handle things properly internally by doubling the buffer size and trying again - as it always has. Updated configure to perform better searching for Berkeley DB's headers / libraries when the path is supplied. This should make building DLZ with the Berkeley DB driver easier on FreeBSD and other BSD based distributions. Converted most of the docs to webpages. Originally all of DLZ's docs were text based. Once the new website went up the required all the docs to be maintained in two formats. This is more work, and may cause an inconsistency in the docs. For that reason all DLZ driver docs are now only available as HTML. In the future the remaining documentation will probably be converted to HTML and the text versions eliminated. dlz-0.5.0 Ninth release. Added ODBC driver. Read the ODBC docs for specifics of how to use this driver. Removed an un-needed write to the logs from the Postgres driver. dlz-0.4.3 Eigth release. Updated patch for new version of Bind. Previous patches were for Bind 9.2.1. This patch is for Bind 9.2.2. Fixed a small error in the DLZ core affecting Bind (named) startup. If the DLZ driver failed to initialize, named would log the error but continue to startup anyway. The DLZ driver would just not be used. This has been changed so that if the DLZ driver does not initialize successfully, named will NOT startup. This should make it easier to "know" that everthing worked at startup. Fixed a small problem with the build scripts. The problem could cause the Berkeley DB driver build to fail if a special set of conditions were met. The "search order" was changed so now the headers and libs for the Berkeley DB driver are in the search path before the other drivers. On some systems this will cause multiple warning messages like the ones below to appear. This is ok. cc1: warning: changing search order for system directory "/usr/include" cc1: warning: as it has already been specified as a non-system directory The PostgreSQL driver had dbcount declared as an unsigned int, but then did an evaluation that could potentially return a signed int. The declaration of unsigned int has been changed to int. This only effected compilation on some systems. dlz-0.4.2 Seventh release. In the process of migrating from bind-9.2.1 to bind-9.2.2 the fixes that were supposed to be in this release didn't get migrated. This release was pulled from the website. dlz-0.4.1 Sixth release. Fixed a small error in the configure and make scripts. If you attempted to build DLZ without Berkeley DB the make would fail in /bin/dlzbdb because the code was ifdef'd out, creating an empty *.o file. The link process would not be able to find a main(argc, argv) in the *.o and the build would fail. This has been fixed. dlz-0.4.0 Fifth release. A memory leak was discovered and fixed. The DLZ core lost 2 bytes each time Bind responded to a DNS query. This bug was in the DLZ core, so it affected any system using DLZ no matter what driver you were using. The memory leak was VERY slow requiring many thousands of queries before even a small change in memory was detected. The DLZ core now seems to be rock solid and not leak any memory even after many thousands of queries. Added Berkeley DB driver. Read the Berkeley DB docs for specifics of how to use this driver. Added DLZ Berkeley DB database utility. This utility allows for basic operations on the Berkeley DB used by DLZ while Bind-dlz is running. Read the Berkeley DB docs for specifics of how to use this utility. dlz-0.3.0 Fourth release. DLZ was too aggressive in "cleaning up" when a driver failed to start properly. This resulted in named crashing instead of stopping gracefully when named was shutdown via "rndc stop". This bug had no adverse effects while named was running. This bug has been fixed. The SDLZ interface now searches for a "wild card" hostname if it has failed to find an exact hostname match. I originally thought Bind would do this automatically with any database (as it does for it's internal DB). I was mistaken. All DLZ drivers built using the SDLZ interface now support "wild card", "*" hostname searches. Added MySQL driver. Read the MySQL driver docs for specifics of how to use this driver and its limitations. Added File System driver. Read the file system driver docs for specifics of how to use this driver. dlz-0.2.1 Third release. Updated patch for new version of Bind. Previous patches were for Bind 9.2.0. This patch is for Bind 9.2.1. No new functionality in this release. Only 1 minor code change in query.c was required to allow bind-dlz to operate properly. This change was required because of code added to Bind 9.2.1. dlz-0.2.0 Second release. Expanded the core code for DLZ and SDLZ APIs. Added capabilities to support zone transfers. AXFR and IXFR queries are supported, but the response is always a full AXFR response. Minor bug fixes and enhancements were made in various parts of the DLZ and SDLZ code. Added extremely basic support for zone transfer to the dlz_stub driver. Major new feature is a complete PostgreSQL driver for the SDLZ API. This driver allows for a great amount of flexibility in the way DNS data is stored in the database. All capabilities (including zone transfer) of the (S)DLZ API are used and made available by this driver. dlz-0.1.0 First release. Includes core code for DLZ API and SDLZ API. This release of the API's support standard domain name resolution queries. Dynamic DNS update, and zone transfer queries are not supported. Also includes a very basic driver called dlz_stub. The dlz_stub driver is useful for testing the DLZ and SDLZ code and demonstrating how to write a very simple SDLZ driver.
Copyright © 2009 Geeknet, Inc. All rights reserved. Terms of Use
Thanks for your rating!
Would you also like to write a review?