To simulate real networks Emulab offers a choice of injecting delays and dropping packets. This is done by inserting intercepting nodes, running dummynet, that delay packets and induce some artificial losses. DETER inherited this feature from emulab, however, real network's behaviour is far different from static loss and delays. This new delay node tries to emulate real delays that fits into some well-know probability distribution. Also, it allows the user to configure a more sophisticated loss model. This new delay node is similar to dummynet by the mean of intercepting connections. These nodes runs Click modular routers, with some new modules developed in DETER. Below is the description of the command that sets up networks and configure nodes with the new features. The new command syntax is similar to the old make-lan to make an easy transition. However, it doesn't require the user to memorise the position of the parameters.
The new delay node supports variable delays based on various probability distributions such as: Poisson, Normal and Exponential. Moreover, it enhances some of the functions for a more realistic link emulation. "make-new-lan" command create a LAN that uses this new delay node to control bandwidth, add probabilistic delays and induces sophisticated loss pattern. make-new-lan parameters are the nodelist, bandwidth, delay properties, and loss pattern description. To create a LAN, connecting three nodes, with a static delay of 30ms, 1Gb bandwidth and a static loss of threshold 0.1 and a rate of 1.
set ns [ new Simulator] source tb_compat.tcl set nodeA [$ns node] set nodeB [$ns node] set nodeC [$ns node] set lan1 [$ns make-new-lan "$nodeA $nodeB $nodeC" bw 1Gb delay static 30ms loss 0.1 static 1] $ns rtproto Static $ns run
make-new-lan receives the arguments in any order e.g you could provide delay parameters before loss one, however, nodelist should be the first. Note that bandwidth parameters have to be preceded by "bw", delay with "delay", and loss with "loss". The user only have to provide the nodelist, others are optional, but once she provide any it has to be provided in the correct format.The command is described by:
make-new-lan <nodelist> [bw bandwidth ] [delay type mean [standard variation] ] [loss threshold dropmode rate]
Examples:
#Example 1 make-new-lan "$nodeA $nodeB " bw 1Gb delay static 100ms loss 0.01 static 1 #Example 2 make-new-lan "$nodeA $nodeB " bw 1Gb delay normal 100ms 5 loss 0.01 poisson 5
Delay types are : static, normal , poisson and exponential. Note that normal requires standard variation, which is set to zero if not provided. loss dropmodes are static and poisson. Also notice that the default bandwidth is 1Gb.
By choosing a static delay with 100ms, the LAN would delay each packet by 100ms. Normal delays packets based on a normal distribution fashion, with a mean and a standard variation. Plotting the travel time of the packet you would get a bell-curved graph. Poisson delays packet based on a discrete poisson distribution with Lambda=mean, and so does the exponential. The loss model is more sophisticated.It adds the ability to drop packets based on different parameters. The user can adjust the parameters to achieve any desirable pattern. Dropping packet is based on a threshold x; x ≥ 0.000001 and x ≤ 1 which is given by the user. For each received packet, if not in the dropping state, the element generates a uniform random number r ∈ [0.000001, 1] if r ≤ x then it enters the dropping mode. It has to drop σ packets to leave the dropping state. σ is either a static value given by the user or a random number belongs to a Poisson distribution. To set up a dropping mode with static dropping rate the dropmode should be set to "static".
This is a placeholder