News
2008-08-12: Small update this time: New DEB packages (0.7.1-2) have been released.
2008-06-22: I'm proud to announce immediate release of 0.7.1 version. Instead of re-releasing outdated 0.7.0 I've decided to go ahead with new features and release 0.7.1. Among new features are leasequery and experimental authentication. It is also worth mentioning that Microsoft Vista is now supported. As usual, numerous bug fixes and small improvements were made and documentation was updated. Download and enjoy.2008-03-24: Although no news have been added and no new releases become available recently, development is progressing in a quite fast pace. Megapatch by Michal Kowalczuk has been finally merged. So dibbler now supports authentication and authorization. Yay! Several new features have been added for relay scenarios. Relays may now be configured to add remote-id and/or echo-request options. Server now supports both options. This and results from Philly meeting strongly suggest that going ahead with 0.7.0, would in fact mean releasing outdated code. I'm thinking rather to skip 0.7.0 and release auth+0.8.0-RC1 instead. To be precise, 0.7.0 was released in the source code form, but I don't expect to prepare any binary packages.
2007-12-31: After a few months, new version is being prepared. First release candidate for 0.7.0 has been released. The biggest change is support for leasequery. Also numerous bugfixes found during second DHCPv6 bakeoff meetings have been fixed.
2007-12-03: Things seem to be quiet lately. I'm on a 2 month business trip (which has been extended slightly), so the time I can devote to Dibbler is limited. What's worse, I have access to my laptop only, so even executing simple client-server scenario is somewhat problematic. Neverthless, I'm coding support for recently published RFC5007: leasequery. It is almost functional, but there are still a few bugs to troubleshoot. It will be ready very soon.
2007-09-27: A few small things to announce: I have updated sourgeforge.net files, new WIN32 binary for 0.6.1 version added. Also, I\'m starting over 2 months long business trip. I won\'t be able to spend as much time on the Dibbler project as before. Also, I will have my laptop only available. Those two factors may cause this project to be stalled for a while. But rest assured. It will not die. Ok, now the great news: I'm gonna see California. Yay! Ok, ok. That was a great news for me only. :)
2007-09-11: Good news, everyone! The next stable version, 0.6.1, has been released. Most changes are related to security flaws, so upgrade is strongly recommended. Sources and Linux binaries are ready, but more tagests/platforms wiil be prepared sortly. Enjoy.
2007-07-05: Security fix: Two issues has been reported, both present in the 0.6.0 version. All dibbler components (client, server and relay) are not able to handle properly maliciously formed messages. This could lead to remote denial of service (resulting in dibbler crash). Dibbler also created world writable files in /var/lib/dibbler in the Linux environment. Latest snapshot (dated 2007-07-05) fixes both of this issues. Thanks to Mu Security Team and Tero Pelander for reporting those problems.
2007-06-22: New packages for Debian with 0.6.0 version have been prepared. They were uploaded to unstable some time ago. Besides several Debian related fixes, there are also new debconf translations: French and Portuguese.
2007-05-08: After 7 months of hard work, several release candidates, 2 day test session and countless number of coding hours, Dibbler 0.6.0 has been released. List of changes and new features is rather impressive: Support for prefix delegation, vendor-specific information, all DUID types and anonymous INF-REQUESTS has been added. Client is now able to properly support not ready (e.g. not yet associated WiFi interfaces). Server now properly supports more than one relay connected in cascade. Relay operation has also been improved. And we has common announcements: lots of bugfixes and improved documentation. This time Dibbler User's Guide is 60+ pages long and contains pictures and diagrams. Ok, download and enjoy!
2007-03-31: There are two major things to announce. First, I was invited to participate in the DHCPv6 interop test session held in RIPE, Amsterdam. There were 7 vendors and open source implementation available. It was great experience to test so many different solutions. 15 issues related to the spec itself has been found. They has been discussed during IETF meeting in Prague. Also, I was able to locate over 10 problems in the dibbler code itself. Luckily, only one of them was critical (i.e. resulted in server crash). Since that event took place on March 15th-16th, I had enough time to fix most of those bugs. And that is second news to be announced: 0.6.0 Release Candidate 4 has been released. Besides numerous bugfixes, new client features has been added. It is now possible to generate DUID-EN type. Client is able to support downed/not associated interfaces. It is also possible to switch client to a insist-mode. It means that, in case of not receiving requested option, client will insist to get it anyway, from other servers for example. Also, last note: My ISP has changed links, so klub's IPv4 address has changed, so right now there is a domain delegation taking place. It may take some time before all changes are propagated to remote DNS servers. However, since you are reading this, you already have updated domain info.
2007-03-10: Another snapshot has been prepared. This time there is a new feature in dibbler-relay. When relay receives data from clients, it encapsulates, adds interface-id option and forwards the data to server. Server should respond with message containing the same interface-id option. This information will be used by relay to properly choose appropriate interface. However, there are faulty server implementations (luckily, dibbler is not one of them), which does not send interface-id option, thus confusing relay. To overcome this problem, relay has to "guess" the original interface the request has been sent on. This is achieved using guess-mode. By the way: In the following week I'll be on a short vacation and interop test session, so I'll probably won't answer any emails.
2007-03-04: Although there were no announcements lately, things are not exactly dead. I have fixed several issues today. Client now behaves properly when server stops responding and REBIND procedure fails. Large (as in 4 bilions) timeouts does not confuse client anymore. Also server does not crash when FQDN is enabled, but there are no DNS servers defined. A small new feature also has been added: in a stateless mode, it is now possible to send INF-REQUEST messages without client-id. If you are interested, snapshot with all those fixes is available. And finally, small announcement: for some mysterious reason 0.6.0 will be built on March 14th. So if you want to test dibbler, now is a very good time.
2007-02-07: Binary versions for Windows XP/2003 and NT/2000 have been prepared. Clickable installators are available as well. I have also uploaded new version to sourceforge.
2007-02-04: First Release Candidate for 0.6.0 has been released. I believe it is very stable and lots of bug fixes has been included, so it's recommended to upgrade. Also if you are interested in prefix delegation, vendor-specific information options, per-client configuration, that's the release for you. If you have experienced interoperability issues related to elapsed option, you should upgrade. User's Guide has also been updated - besides much improved "Features HOWTO" section, several figures has been added. In the upcoming days, I'll generate packages for various distributions and installation wizards for Windows. Final 0.6.0 version will be released after additional testing. So if you experience ANY problems, be sure to report it. If that version will work for you, also let me know.
2007-02-02: I have just finished last feature scheduled for the next release. In the upcoming weekend I'll do some testing and first release candidate for 0.6.0 will be released.
2007-01-30: Michal "Sammael" Kowalczuk has provided dibbler packages for OpenWRT. Dibbler 0.5.0 packages are available in the download section. Scripts for generating ipk packages has been added to the CVS repository. Thanks. I know that there is at least one person in Thailand, who will be very happy about that :) Also things are progressing quite smoothly. Several development snapshots has been created and preparation for releasing 0.6.0 version will start soon.
2007-01-04: Although there were no announcements lately, dibbler development is progressing well. Support for prefix delegation has been implemented and is more or less functional, i.e. client can request for, and server will provide prefixes (this also includes support for multiple prefixes for the same client). Client will configure those prefixes on the interface and will also generate radvd.conf file. (Sorry Windows users, this works in Linux only.). Vendor-specific information option support has been improved. Now several values for different vendors may be defined. Also it is now possible to define per-client configuration on the server size (so called exceptions). So as you see, dibbler development in not stagnant :) That would be all for today. Happy new year!
Feature List
- Server discovery and address assignment (SOLICIT, ADVERTISE, REQUEST and REPLY messages) - This is a most common case: client discovers servers available in the local network, then asks for an address (and possibly additional options like DNS configuration), which is granted by a server.
- Best server selection - when client detects more than one server available (by receiving more than one ADVERTISE message), it chooses the best one and remembers remaining ones as a backup.
- Multiple servers support - Client is capable of discovering and maintaning communication with several servers. For example, client would like to have 5 addresses configured. Prefered server can only grant 3, so client send request for remaining 2 addresses to one of the remaining servers.
- Relay support - In a larger network, which contains several Ethernet segments and/or wireless areas, sometimes centrally located DHCPv6 server might not be directly reachable. In such cace, additional proxies, so called relays, might be deployed to relay communication between clients and a remote server. Dibbler server supports indirect communication with clients via relays. Standalone, lightweight relay implementation is also available. Clients are capable of talking to the server directly or via relays.
- Leasequery - From the sysadmin's perspective, it is often beneficial to check which address has been assigned to a specific client or who got a specific address. To do so, it is possible to query server for such information. There is a special type of DHCPv6 entity called requestor that performs such queries and parses server's answers.
- Address renewal - After receiving address from a server, client might be instructed to renew its address at regular intervals. Client periodically sends RENEW messege to a server, which granted its address. In case of communication failure, client is also able to attempt emergency address renewal (i.e. it sends REBIND message to any server).
- Unicast communication - if specific conditions are met, client could send messages directly to a server's unicast address, so additional servers does not need to process those messages. It also improves effciency, as all nodes present in LAN segment receive multicast packets.
- Duplicate address detection - Client is able to detect and properly handle faulty situation, when server grants an address which is illegaly used by some other host. It will inform server of such circumstances (using DECLINE message), and request another address. Server will mark this address as used by unknown host, and will assign another address to a client.
- Power failure/crash support - After client recovers from a crash or a power failure, it still can have valid addresses assigned. In such circumstances, client uses CONFIRM message, to config if those addresses are still valid.
- Normal and temporary addresses - Depending on its purpose, client can be configured to ask for normal (IA NA option) or temporary (IA TA option). Although use of temporary addresses is rather uncommon, both dibbler server and client support it.
- Hint system - Client can be configured to send various parameters and addresses in the REQUEST message. It will be treated as a hint by the server. If such hint is valid, it will be granted for this client.
- Server caching - Server can cache granted addresses, so the same client will receive the same address each time it asks. Size of this cache can be configured.
- Stateless mode - Client can be configured to not ask for any addresses, but the configuration options only. In such case, when no addresses are granted, such configuration is called stateless (INFORMATION-REQUEST message is used instead of normal REQUEST).
- Rapid Commit - Sometimes it is desirable to quicken configuration process. If both client and server are configured to use rapid commit, address assignment procedure can be shortened to 2 messages, instead of usual 4. Major advantage is lesser network usage and quicker client startup time.
Also following extensions are supported:
- DNS Servers - During normal operation, almost all hosts require constant use of the DNS servers. It is necessary for event basic operations, like web surfing. DHCPv6 client can ask for information about DNS servers and DHCPv6 server will provide necessary information.
- Domain Name - Client might be interested in obtaining information about its domain. Properly configured domain allow reference to a different hosts in the same domain using hostname only, not the full domain name, e.g. alice.example.com with properly configured domain can refer to another host in the same domain by using 'bob' only, instead of full name bob.example.com.
- NTP Servers - To prevent clock misconfiguration and drift, NTP protocol can be used to synchronize clocks. However, to successful use it, location of near NTP servers must be known. Dibbler is able to configure this information.
- Time Zone - To avoid time-related ambiguation, each host should have timezone set properly. Dibbler is able to pass this parameter to all clients, who request it.
- SIP Servers - Session Initiation Protocol (SIP) is commonly used in VoIP solutions. One of the necessary information is SIP server addresses. This information can be passed to the clients.
- SIP Domain Name - SIP domain name is another important parameter of the VoIP capable nodes. This parameter can be passed to all clients, who ask for it.
- NIS, NIS+ Server - Network Information Service is a protocol for sharing authentication parameters between multiple Unix or Linux nodes. Both NIS and NIS+ server adresses can be passed to the clients.
- NIS, NIS+ Domain Name - NIS or NIS+ domain name is another necessary parameter for NIS or NIS+. It can be obtained from the DHCPv6 server to all clients, who require it.
- Option Renewal Mechanism (Lifetime option) - All of the options mentioned on this list can be refreshed periodically. This might be handy if one of those parameters change.
- Dynamic DNS Updates - Server can assign a fully qualified domain name for a client. To make such name useful, DNS servers must be informed that such name is bound to a specific IPv6 address. This procedure is called DNS Update. There are two kinds of the DNS Updates: forward and reverse. First is used to translate domain name to an address. The second one is used to obtain full domain name of a known address.
- Prefix Delegation - Server can delegate a prefix to a client. That feature is intended to be used mainly by routers, which obtain prefixes from an upper level router. Client after receiving prefix, will generate smaller prefixes for each available interface.
Download: stable
Here's newest stable version. If you need, for some reason, older releases, you can find them in the dibbler directory.
System | Version | Comments |
Source code | 0.7.1 | Sources written in C/C++. You can compile them yourself, if you like |
Linux binary | 0.7.1 | Linux binary version. Just extract and use. But before you use this, check if there is no package for your Linux distro. |
Windows XP/2003/Vista | 0.7.1 | Windows XP/2003/Vista version. |
Windows NT/2000 | 0.6.0 | Windows NT/2000 version. It is considered experimental. |
Documentation | 0.7.1 | Documentation for Dibbler: User's Guide, Developer's Guide and some extra docs. |
Following links are static (i.e. updated rarely or never in a manual manner)
System | Version | Date | Comments |
sourceforge.net | - | 2007-02-07 | All newest files are available there. Use sourceforge if download from klub.com.pl is too slow. |
Linux Distro packages | 0.4.1[rpm] 0.7.1[deb] 0.4.1[gentoo] |
2008-01-08 | Stable version for Linux. Includes server, client, relay and User's Guide. See CHANGELOG for details. |
Linux non-x86 | AMD64 RPM Sparc RPM Alpha RPM PowerPC RPM |
2005-01-25 | Dibbler 0.4.0 is available in the PLD Linux Distribution, which supports various non-x86 architectures. |
Wireless router LinkSys WRT54G | 0.7.1 | 2008-06-22 | Dibbler 0.7.1 has been ported to embedded devices, e.g. wireless router Linksys WRT54G. Currently there is an ongoing work to update OpenWRT's repositories with updated 0.7.1 version. |
Article #1 about Dibbler | [pdf] [presentation ppt] |
2005-07-11 |
This is an article about Dibbler. It was published on the Contel'05 conference, held in Zagreb, Croatia. My presentation is also included. |
Article #2 about Dibbler | [pdf] [presentation ppt] |
2005-07-11 |
Another article about Dibbler. This one describes DNS Update issues and some authentication related topics. It was published on the it'2008 conference, held in Gdansk, Poland. My presentation is also included. |
BSD | none | unknown | I'll start working on this as time permits, but it's a low priority. I suppose Dibbler will be ported to FreeBSD after I finish implementing relays, authentication, CONFIRM message support. So it's a long time. |
Download: unstable
System | Version | Date | Comments |
- | latest+CVS (snapshots) |
various | When I finish some functionality or fix some bugs, I prepare a snapshot. If that particular issue affects you, go ahead and download this. Otherwise, it is better to stick to a stable versions. |
Sources can also be downloaded from CVS. Be aware that CVS version might be unstable. Here are quick magic words:
cvs -d:pserver:anonymous@klub.com.pl:/var/cvs login password: (just hit enter for password) cvs -d:pserver:anonymous@klub.com.pl:/var/cvs co dibbler make
Short-term goals (aka TODO)
Bugzilla is a bug tracking system. It allows to report, assign and deal with bugs in a convinient manner. It can also be used to request new features. It is called enhancement. Take a look at bugs with severity ("Sev" column) set to "enh". You can define what are you looking for by hand, or use one of the links on the side panel.
Long-term goals (aka Roadmap)
There's list of features, which I would like to include someday. In some far, distant, not so sure future. I'm really busy person, sorry. In parenthesis there are estimated versions, where this feature will be implemented.
- (0.4.0) RELAY AGENT support [done]
- (0.5.0-RC1) temporary addresses support (IA_TA option) [done]
- (0.5.0-RC1) DNS updates (FQDN option) [done]
- (0.6.0-RC1) Prefix Delegation [done]
- (0.7.0) Leasequery (RFC5007)
- (0.7.0) Authentication [done]
- (0.7.1-CVS)crash/power outage recovery (CONFIRM message)[done]
- (0.8.0) RECONFIGURE support
- (0.8.0) FreeBSD port
- (0.8.0 or later) Mac OS X port - don't have hardware yet :(
- (under consideration) DOCSIS 3.0 options
- (under consideration) Minimal client for embedded devices
- (under consideration) allow DB storage in a real database (PostgreSQL probably)
- (under consideration) failover - full redundancy. Load balancing perhaps.
If you are thinking about joining or contributing to the dibbler project, you may want to see this Developer's TODO list.
Looking for sponsor
During Dibbler development, I have encountered several problems with equipment availability. This project has no budget and I develop everything in my home. I have several computers, so I can build basic configuration. However, I don't have any fancy hardware, so I can't verify any of the more advanced setups.
Another issue that I have encountered is a lack of access to non-x86 architectures. I would like to develop Dibbler versions for other architectures, eg. 64-bit or Mac. So, if you are a well prospering company and you find Dibbler useful, consider supporting open source development and donating some of your equipment.
In further Dibbler development, access to the following equipment would be useful:
- An Intel 64-bit box
- An AMD64 box
- A MAC capable of running Mac OS X
- Sun Sparc with Sun OS supporting IPv6
- A Cisco router capable of running DHCPv6 relay
- a LinkSys Wireless router WRT54G (which already supports Dibbler)
- A PDA with a network interface
- Any other uncommon hardware which would be able to run Dibbler
Mailing lists
USERS: Mailing list was created to support Dibbler users. Feel free to discuss any topic related to Dibbler or DHCPv6 in general. You can also ask for help here. If you want to subscribe, please send mail with subject "subscribe" to dibbler-request(at)klub.com.pl. You will receive confirmation request shortly. You can also subscribe to mailing list using www browser. There are list archives available.
DEVELOPERS: Second list is dedicated to free exchange of thoughts between people engaged in the Dibbler development. Sadly, this list will be even more desolated then the previous one. If you want to subscribe, please send mail with subject "subscribe" to dibbler-devel-request(at)klub.com.pl. You will receive confirmation request shortly. You can also subscribe to mailing list using www browser. There are list archives .
Requirements
This implementation is developed using tools listed below. It may, of course, work with newer/older versions. Even with other compilers. Marek Senderski developed WinXP version using microsoft Visual C++ 2002 edition (compiler) and Parser Generator (flex/bison substitute). However, ParserGenerator is no longer used due to portablility problems and unclear legal situation. Now flex/bison++ is used in every port. Bison++ has been merged into CVS, so there should be no more problems with obtaining bison++. Note that bison++ is available in Debian GNU/Linux distribution. In parenthesis is version which has been used to develop Dibbler. It will work for sure, but there's pretty good chance that other versions will work, too. Here's the list:
- gcc (2.95, 3.0, 3.2, 3.3, 3.4, 4.0 and 4.1)
- g++ (2.95, 3.0, 3.2, 3.3, 3.4, 4.0 and 4.1)
- flex (2.5.33, Windows version included in CVS)
- bison++ (1.21.9 Windows binary and Linux sources included in CVS)
- libxml2 (with pkg-config in Linux)
To generate Windows installer, fantastic Inno Setup tool was used. Code documentation was generated using Doxygen program. Developer's and User's Guide were written in LaTeX.
Older versions
All versions are stored in the /dhcpv6/dibbler/ directory. Take note that they are kept for archeological/sentimental purposes only. Please use latest version only.