[Opendnssec-user] OpenDNSSEC in ISP environment (lots of small zones)?

Jan-Piet Mens jpmens at gmail.com
Fri Jan 28 10:19:15 UTC 2011


Hello,

We are envisioning the deployment of OpenDNSSEC in an ISP environment in 
order to provide DNSSEC services to clients. As an ISP, the typical use 
is thus many thousand of small zones.

We've been looking at OpenDNSSEC for some time now, and have read and 
(hopefully) understood most of the documentation and the very useful 
hints and messages on the mailing-list. Initial tests with prior 
versions on a couple of zones were looked very promising, so we upgraded 
to OpenDNSSEC 1.2.0 and attempted to put a bit of load on the service. 
Wanting to avoid spending money on a HSM during testing, we are using 
SoftHSM, also version 1.2.0.

I realize what follows may sound like a rant, which it isn't supposed to 
be; it is more of a cry of help, coupled with the question on whether 
OpenDNSSEC is the right tool for our job. :)

We are basically using a default configuration as provided by the 
project. As mentioned, the first couple of zones work like a charm, and 
I was delighted to see that the round-trip-time of a dynamic update to 
BIND, the zone transfer to OpenDNSSEC, it signing the zone and providing 
it to an NSD server could be completed in just a couple of seconds! 
Lovely. ;-)

For testing, we added 10,000 synthetic zones, each with 610 RR all 
configured to use a single default policy. From that point onwards, it 
all becomes a bit blurry; the following observations are based on "look 
and feel".

For example, after about 2,000 key pairs were created, we notice 
concurrency seems to be a problem. While the enforcer is running , the 
KASP database has a lock on it so that I can't look at a key even, an 
operation which is surely read-only?

    ods-ksmutil key list -z c1767.aa
    SQLite database set to: 
/usr/local/stow/opendnssec-1.2.0/var/opendnssec/kasp.db
    /usr/local/stow/opendnssec-1.2.0/var/opendnssec/kasp.db.our_lock 
already locked, sleep
    ...

Our test system has 6GB of RAM on it. While enforcer and signer were 
running it locked up (swap), so we had to pull the plug on it. After 
restart, we notice that starting OpenDNSSEC with `ods-control start' 
doesn't start the enforcer (only the signerd is started). It appears 
that files left over in /var/run make
the enforcer think it is still running.

Just before the reboot, about 2,000 key pairs had been created. An 
`ods/ksmutil key list' then took an inordinate amount of time to complete:

	time ods-ksmutil  key list  > x.01
	SQLite database set to: 
/usr/local/stow/opendnssec-1.2.0/var/opendnssec/kasp.db

	real	5m28.749s
	user	4m44.685s
	sys	0m43.702s

The first 10,000 key pairs took over 4 hours to generate. During that 
time the signer was blocked (kasp.db.our_lock exists). After the four 
hours, there was no activity: no signing, no nothing. Two signer 
processes apparently hung. I killed off one of them, and the enforcer 
continued working.

    Jan 26 19:53:15 sign1 ods-signerd: zone fetcher transferred zone 
c1111.aa serial 1 successfully
    Jan 26 19:53:15 sign1 ods-signerd: daemon/cmdhandler.c:209: 
cmdhandler_handle_cmd_sign: assertion cmdc->engine->tasklist failed
    Jan 26 19:53:15 sign1 ods-signerd: zone fetcher transferred zone 
c1112.aa serial 1 successfully

Killing off the processes and restarting didn't help. An `ods-ksmutil 
update all' seems to have "fixed" the issue (I was able to launch 
ods-control), but the question remains as to what happened.

What we then did was to completely disable the auditor in the 
configuration and on the zone policy (all zones have the same policy), 
hoping to strongly decrease the load of the system. After an `update 
all` and a restart of the OpenDNSSEC daemons we experienced once again 
that the enforcer starts and the signers appear to wait on something 
(a01.aa is the first zone in zonelist.xml):

	1955 ?        Rs   193:45 
/usr/local/stow/opendnssec-1.2.0/sbin/ods-enforcerd
	1959 ?        Ss     0:00 
/usr/local/stow/opendnssec-1.2.0/sbin/ods-signerd -vvv
	1967 ?        S      0:00 sh -c 
/usr/local/stow/opendnssec-1.2.0/sbin/ods-signer sign a01.aa > /dev/null 
2>&1
	1968 ?        S      0:00 
/usr/local/stow/opendnssec-1.2.0/sbin/ods-signer sign a01.aa

(This has been so since a while now, again: note the times:
  -rw-r--r-- 1 opendnssec opendnssec 5223424 Jan 28 11:12 kasp.db
  -rw-r--r-- 1 opendnssec opendnssec       0 Jan 28 07:52 kasp.db.our_lock
)

I understand OpenDNSSEC is used mainly TLD environments, which have few 
but large zones. Is OpenDNSSEC theoretically suited to be used in 
production in a lots-of-small-zones environment?

Is what we are attempting to do, realistically feasable with OpenDNSSEC?

Thank you & regards,

	-JP




More information about the Opendnssec-user mailing list