Logo Image  Distributed DNS
DDNS is a P2P software that aims to build a decentralized, distributed DNS.
Bulltet Homepage
Bulltet Download
Bulltet Project Page
Bulltet People
Bulltet Documents
 
-Project Overview
-Project Description
-MVM Specifications
-MVM Example
-Network Protocol Specifications
-Screen shots
-Announcement
Bulltet Forum
Bulltet FAQ
Bulltet Links
Sorry for my bad English, it is not my native language.


SourceForge.net Logo
 
What is DDNS?
The domain name service (DNS) is a worldwide distributed database, which still has centralized elements. This project elaborates the feasibility of a decentralized, distributed DNS (DDNS). For that purpose a peer to peer distributed hash table is used which is similar to the Kademlia protocol.

Download prototype preview ddns-0.94.zip now!
Installation: 1. unzip, 2. double-click ddns-0.94.jar or open a command prompt and enter "java -jar ddns-0.94.jar".
Requirements: Java Runtime Environment 1.4.x or greater required. See java.sun.com and download the latest version (J2SE).

Paper Image  News:

11. Jun. 2004 - Documentation in progress
While I'm busy with writing a paper about this project, I wasn't able to make any progress in implementing the missing features or to remove the pending bugs. But as soon as I'm finished with the paper, I'll try to work towards a first alpha release. The release will work, although not very efficient.

07 May. 2004 - Bootstrap node offline
The bootstrap node has been taken offline. It will be moved to another computer. The node should be back on monday. If you want to test DDNS, you'll have to test it locally.

03 May. 2004 - First public prototype preview available
Finally, the first preview (version 0.94) of DDNS is available for download. Please test it and send me feedback.


(Screenshot of the main screen)

This release is a prototype software that is available for public testing. But be aware, this is only a prototype that has known limitations. The system is not stable yet, do not rely on your stored names in the DDNS network, they might disappear. Any feedback, suggestions, etc. are welcome. Version 0.94 is more stable and needs less memory. The MVM has changes and there are now more opcodes (thanks to J. Kayatz). The RList is now more stable and a severe bug has been removed (sync problems). The DDNS system has been split into 3 packages: system, communication and packet. The other sub projects are now part of the DDNS system. They can be found in the package analyzer and statistics.

This is a prototype. It won't work as you might expect. The limitations are:
  • The timeout is set to 2 hours. This means that if you don't refresh your name every 2 hours your name is lost. This will change to a much higher value (weeks or month).
  • The packet signing is not enabled, so everyone can steal your name.
  • The MVM calculates a predictable result, so you might cheat.
  • Caching of frequent names is not enabled. A node with a popular name will probably denial the service because of too heavy traffic.
  • It is slow. All connections are serial. If one connection does not respond, it blocks everything else
  • It won't work if you are behind a firewall or a NAT.
All these issues have to be implemented / solved for an alpha release.

Here's the announcement: English, German. Announcement on freshmeat: http://freshmeat.net/releases/159578/. I've also added an announcement list. See Forum Page

10 Apr. 2004 - First screen shots!
The first screen shots are available! The source code for version 0.93 is not released yet because it has still a lot of bugs. The release is planned for 24. April 2004.

The screen shots show the analyzer and debugger, the main tool I'm working with. The analyzer can display around 100 Nodes. The limit is my memory. Since I've got only 512 MB RAM, I'm running with more than 100 nodes into an out of memory exception. I'll try to reduce to memory usage the next week.

31. Mar. 2004 - Added build files and separated RList from DDNS
This is still a very early alpha version of DDNS which doesn't work as you might expect.

The only changes are that build files have been added and RList has been separated from DDNS. The refactored files can be downloaded in the download section. RList has been extended and is now kept in a separate package.

26. Mar. 2004 - MVM bugfix and first alpha version of DDNS
The first alpha version is available. But don't expect anything to work. This is a very early alpha version and it is not a proper implementation!!

J. Kayatz found a bug in the pop* and push* opcodes in the MVM package. Version 0.91 fixes this bug. He also made an example of how to use the MVM assembler and wrote a program that calculates the n-th prim number. Take a look at the MVM Example in the document section.

The document section has been updated and finally the network specification is now available.

The next thing I'll do is to implement a debug and measurement application to be able to tell whether DDNS will work or not. At the moment it is very hard to tell, because the debug output in the console is too complex.

6. Mar. 2004 - Nothing new...
I'm still busy with the prototype. The FAQ section has been updated.

17. Feb. 2004 - MVM prototype finished
I finished the MVM prototype (alpha version). You can download and test the prototype in the download section. But be warned: This piece of software has been built for a 'proof-of-concept'. The virtual machine is not optimized and is quite slow, but it works so far.

This MVM is intended to be a scarce resource in the distributed DNS. You pay with your CPU power for a name in the network. This way an "insertion DoS" can be prevented. An IP limitation (Limited names for a particular IP) would only work in an IPv4 network. There are almost infinite IPs in an IPv6 network!

I've also added more documentation about the project and the MVM specification.

27. Jan. 2004 - Support for sub-domains
There will be support for sub-domains. The solution is that every name must have a point. It does not matter where the point is. If the point is at the beginning or at the end, the point is not shown. A name without a point is a regular name.

So you can have 0 or 1 point in the name. Leading and ending points are always removed from the name to make the name unique ".foo" == "foo." -> "foo" == "foo". The second point specifies the sub-domain. This means, that if you want to address a sub-domain, you always have to write the first point in the name. The sub-domain bar might look like this "bar.foo." == "bar..foo". The bar sub-domain in "bar.foo" is not valid; in "bar.fo.o" it is valid!

19. Jan. 2004 - Added project description
Today I registered this project on http://sourceforge.net and added a project description. Sourceforge.net should review this project within 2-3 days and accept or reject it. F. Roth pointed out a compatibility issue: Having a sub-domain and a domain separated by a star (*) would make only the domain compatible to DNS. The sub-domain contains an illegal character and is incompatible to DNS.

Still, this question remains: Hierarchy (separated by dots) or flat names?

16. Jan. 2004 - Finished page layout
There is another issue with the hierarchy: Not having any hierarchy is not a good solution. There is no need for a TLD hierarchy (.com, .org, ...), but sub-domains should still be possible (www.icu.unizh.ch). So, we need a separator to support sub-domains.
  • "." A dot is not a good separator, because we need this as a character to remain compatible with DNS.
  • ":" A colon is not good either; we define the port number with this separator.
  • "@" This is not a good separator, because we need this separator for email.
  • "*" Let's take for example the star as a separator.
A sub-domain would look like this www.icu*unizh.ch, where unizh.ch is the name and www.icu is the sub name.

The name and sub name can be a UTF-8 String, but without these character: "@" ":" "*"

Another possibility is to use the separator ".". But then it is very hard to be compatible with DNS. A name in DDNS has to have a "." somewhere in the name. (water.ocean, unizh.ch, aname., .aname, a.name)

The third possibility is that the DDNS structure will be totally flat. No support for sub-domains at all.

10. Jan. 2004 - There is no hierarchy!
After having a discussing with R. Riedl and F. Roth, we concluded that an enforced hierarchy is not a good solution. Having a UTF-8 name, a hierarchy is still possible, but enforcing it does not have many advantages. One advantage is that a name can exists several times (e.g. "univserity.ab", "university.ac", ...). But without a hierarchy you can also have these names and the name "university" is also possible.

8. Jan. 2004 - Project Page started
Today I started a project page for my master thesis "Feasbility, Pros and Cons for Distributed DNS". The Project started on 24th November.


If you have questions, feel free to ask! draft-at-icu-dot-unizh-dot-ch
Copyright notice: Unless otherwise specified, documents and software on this page are freely distributable under the terms of the GNU Lesser General Public License