Dibbler - a portable DHCPv6  1.0.2RC1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
4 General information

This section covers several loosely related topics.

4.1 Release cycle

Dibbler is being released as a one product, i.e. client, server and relay are always released together. Each version is being designated with three numbers, separated by periods, e.g. 0.4.2. Every time a new significant functionality is added, the middle number is being increased. When new release contains only fixes and small improvements, only the minor number is changed. Leftmost number is currently set to 0 as not all features mentioned in base DHCPv6 document (RFC3315) are implemented. When Dibbler implementation will be complete, release number will reach 1.0.0. Since DHCPv6 specification is extensive, don't expect this to happen anytime soon.

The above paragraph was written in Feb. 2010, when author was still working for Intel, a company which sadly was not interested in supporting DHCPv6 development. Fortunately, after changing employer to a more DHCP friendly one, the author was able to dedicate more effort to Dibbler and 1.0.0RC1 was published on 2013-07-30, on 10th DHCPv6 standard publication anniversary.

Stable releases are often preceded by Release Candidate versions. For example 0.8.1RC1 is a Release Candidate 1 for 0.8.1 release.

4.2 GIT repository

Dibbler currently uses GIT repository available at github.com https://github.com/tomaszmrugalski/dibbler. Please download latest sources from there. Dibbler previously used SVN repository. Please DO NOT use it. It is kept around only for students, who started their theses using SVN, so they can generate diffs easier. Sources in SVN are old, obsolete, buggy and will eat your hard drive if if you try to use it.

4.3 Documentation

There are two parts of the documentation: User's Guide and Developer's Guide. User's Guide is written in LaTeX (*.tex files). To generate PDF files, you need to have LaTeX installed. To generate Developer's Guide documentation, a tool called Doxygen is required. All documentation is of course available at Dibbler's homepage.

To generate all documentation, type (in Dibbler source directory):

make user devel

Note that versions 0.7.3 and earlier had Developer's Guide and Code documentation separated. Those two documents are merged and are Doxygen based.

4.4 Memory/CPU usage

This section is very dated. Memory usage is not currently measured. The binary size is monitored on a daily basis on the following page: http://klub.com.pl/dhcpv6/stats/.

This section provides basic insight about memory and CPU requirements for the dibbler components. Folowing paragraphs describe memory and CPU usage measurements. They were taken on a AMD Athlon 2800+ (actual clock speed: 2083MHz), running under Linux 2.6.17.3. Dibbler was compiled with gcc 4.1.2 (exact version number printed by gcc –version command:

gcc (GCC) 4.1.2 20060715 (prerelease) (Debian 4.1.1-9)

Every Dibbler component (client, server or relay) is event driven. It means that it does nothing unless some data was received or a specific timeout has been reached. Each component most of the time spends in a select() system call. This means that (unless lots of traffic is being received) actual CPU usage is 0. During tests, author was unable to observe any CPU consumption above 0,0%.

In the 0.5.0 release, a compilation options called Modular features was added (see Section 2.16 Modular features). One of the possible way of compiling Dibbler is to disable poslib - a library used to perform DNS Updates. Dibbler binaries compiled without poslib are designated as -wo-poslib. It is possible to compile Dibbler with various compilation options. In particular (enabled by default) -g option includes debugging information in the binary file (this greatly affects binary file size, but does not affect memory usage), -O0 (disably any kind of optimisation) or -Os (produce smallest possible code). Debugging informations can be removed using strip command (designated below as -stripped). Linux command line tool called top was used to measure memory usage. VIRT is a virtual memory size, RES denotes size of actual physical memory used and SHR is a size of a shared memory. See top manual page for details.

VIRTRES SHR CPU MEMOptim.filesizeCOMMAND
341615641416 0.0 0.2 -O0 7123510 dibbler-server
341615601416 0.0 0.2 -O0 751948 dibbler-server-stripped
332815441400 0.0 0.2 -O0 6533375 dibbler-server-wo-poslib
332815481400 0.0 0.2 -O0 663592 dibbler-server-wo-poslib-stripped
322014361292 0.0 0.2 -Os 4596760 dibbler-server run
314014241276 0.0 0.2 -Os 468776 dibbler-server-wo-poslib
338816361496 0.0 0.2 -O0 9771605 dibbler-client
339216441496 0.0 0.2 -O0 725352 dibbler-client-stripped
329616081472 0.0 0.2 -O0 9183726 dibbler-client-wo-poslib
330016121472 0.0 0.2 -O0 639240 dibbler-client-wo-poslib-stripped
321214721336 0.0 0.2 -Os 5901734 dibbler-client-wo-poslib
312014561320 0.0 0.2 -Os 458984 dibbler-client-wo-poslib

Dibbler stores data internally in lists. This means that server's memory and CPU usage is a linearly proportional to a number of clients it currently supports.

Todo:
: Long/performance tests are required.