Internet Applications Module Documentation

The goal of this module is to hold all the Internet-specific applications, and most notably some very specific applications (e.g., ping) or daemons (e.g., radvd). Other non-Internet-specific applications such as packet generators are contained in other modules.

The source code for the new module lives in the directory src/internet-apps.

Each application has its own goals, limitations and scope, which are briefly explained in the following.

All the applications are extensively used in the top-level examples directories. The users are encouraged to check the scripts therein to have a clear overview of the various options and usage tricks.


This app mimics a “ping” (ICMP Echo) using IPv4. The application allows the following attributes to be set:

  • Remote address
  • Verbose mode
  • Packet size (default 56 bytes)
  • Packet interval (default 1 second)

Moreover, the user can access the measured RTT value (as a Traced Source).


This app mimics a “ping” (ICMP Echo) using IPv6. The application allows the following attributes to be set:

  • Remote address
  • Local address (sender address)
  • Packet size (default 56 bytes)
  • Packet interval (default 1 second)
  • Max number of packets to send


This app mimics a “RADVD” daemon. I.e., the daemon responsible for IPv6 routers advertisements. All the IPv6 routers should have a RADVD daemon installed.

The configuration of the Radvd application mimics the one of the radvd Linux program.


The ns-3 implementation of Dynamic Host Configuration Protocol (DHCP) follows the specifications of RFC 2131 and RFC 2132.

The source code for DHCP is located in src/internet-apps/model and consists of the following 6 files:

  • dhcp-server.h,
  • dhcp-client.h,
  • dhcp-header.h and


The following two files have been added to src/internet-apps/helper for DHCP:

  • dhcp-helper.h and


The tests for DHCP can be found at src/internet-apps/test/


The examples for DHCP can be found at src/internet-apps/examples/

Scope and Limitations

The server should be provided with a network address, mask and a range of address for the pool. One client application can be installed on only one netdevice in a node, and can configure address for only that netdevice.

The following five basic DHCP messages are supported:


Also, the following eight options of BootP are supported:

  • 1 (Mask)
  • 50 (Requested Address)
  • 51 (Address Lease Time)
  • 53 (DHCP message type)
  • 54 (DHCP server identifier)
  • 58 (Address renew time)
  • 59 (Address rebind time)
  • 255 (end)

The client identifier option (61) can be implemented in near future.

In the current implementation, a DHCP client can obtain IPv4 address dynamically from the DHCP server, and can renew it within a lease time period.

Multiple DHCP servers can be configured, but the implementation does not support the use of a DHCP Relay yet.