|
|
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).
|
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 |