CoDoNS consists of globally distributed nodes that self organize to form a peer-to-peer network. We envisage that each institution would contribute one or more servers to CoDoNS, forming a large-scale, cooperative, globally shared DNS cache. CoDoNS provides query resolution services to clients using the same wire format and protocol as legacy DNS, and thus requires no changes to client resolvers.
CoDoNS decouples namespace management from query resolution of the legacy DNS. Nameowners need only to purchase certificates for names from namespace operators and introduce them into CoDoNS; they do not need to provide dedicated hosts for serving those names. CoDoNS places no restrictions on the hierarchical structure of the namespace and is agnostic about the administrative policies of the nameowners. To the nameowners, CoDoNS provides an interface consisting of insert, delete and update.
CoDoNS associates the node whose identifier is closest to the consistent hash  of the domain name as the home node for that domain name. The home node stores a permanent copy of the resource records owned by that domain name and manages their replication. If the home node fails, the next closest node in the identifier space automatically becomes the new home node. CoDoNS replicates all records on several nodes adjacent to the home node in the identifier space in order to avoid data loss due to node failures.
Replacing the DNS entirely with CoDoNS is an ambitious plan, and we do not expect nameowners to immediately use CoDoNS for propagating their information. In order to allow CoDoNS to gradually grow into a globally recognized system, we have incorporated compatibility to the legacy DNS. CoDoNS uses the legacy DNS to resolve queries for records not explicity inserted by nameowners. The home node retrieves resource records from the legacy DNS upon the first query for those records. The additional redirection latency only affects the first query issued in the entire system for a domain name. CoDoNS decreases the impact of query redirection on lookup performance, by bootstrapping the system with records obtained from legacy DNS nameservers through zone transfers or file transfers.
Overall, query resolution in CoDoNS takes place as follows. Client sends a query in the wire format of the legacy DNS to the local CoDoNS server in the same administrative domain. The local CoDoNS server replies immediately if it has a cached copy of the requested records. Otherwise, it routes the query internally in the CoDoNS network using the under-lying DHT. The routing terminates either at an intermediate CoDoNS node that has a cached copy of the records or at the home node of the domain name. The home node retrieves the records from the legacy DNS, if it does not already have it, and sends a response to the first contacted CoDoNS server, which replies to the client. In the background, CoDoNS nodes proactively replicate the records in based on the measured popularity. Figure 4 shows a typical deployment of CoDoNS and illustrates the process of query resolution.
Clients generate a large number of queries for names in their local administrative domain. Since the home node of a name may be located in a different domain, local queries can incur extra latency and impose load on wide-area network links. CoDoNS supports efficient resolution of local names through direct caching. Nameowners can directly insert, update, and delete their records at CoDoNS servers in their administrative domain, and configure the local CoDoNS servers to use the direct cache for replying to local queries.