0% found this document useful (0 votes)
177 views19 pages

ns2 Basics Manual1

This document provides an overview of how to use the network simulator NS2 to define network topologies and simulate network traffic. It discusses initializing the simulator, creating nodes and links, defining agents like TCP and UDP, and applications like FTP that run over TCP. It also covers topics like creating output trace files, defining queue sizes, and how NS2 uses C++ and OTcl at the backend to efficiently simulate network protocols and events.

Uploaded by

THANGARAJT
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
177 views19 pages

ns2 Basics Manual1

This document provides an overview of how to use the network simulator NS2 to define network topologies and simulate network traffic. It discusses initializing the simulator, creating nodes and links, defining agents like TCP and UDP, and applications like FTP that run over TCP. It also covers topics like creating output trace files, defining queue sizes, and how NS2 uses C++ and OTcl at the backend to efficiently simulate network protocols and events.

Uploaded by

THANGARAJT
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 19

Objectives

 After completing this experiment you will be able to:

 Identify ambiguities, inconsistencies and incompleteness from a requirements specification

 Identify and state functional requirements


 Identify and state non-functional requirements

 Time Required
 Around 3.00 hours

 After completing this experiment, you can able to :

  Learn the basic idea about open source network simulator NS2 and how to download, install
and work with NS2 using TCL programming.

 Defining the different agents and their applications like TCP, FTP over TCP, UDP, CBR
and CBR over UDP etc.
 Identifying and solving the installation error of NS2.

 Introduction

 The network simulator is discrete event packet level simulator.The network simulator covers a
very large number of application of different kind of protocols of different network types
consisting of different network elements and traffic models.Network simulator is a package of
tools that simulates behavior of networks such as creating network topologies, log events that
happen under any load,analyze the events and understand the network. Well the main aim of our
first experiment is to learn how to use network simulator and to get acquainted with the
simulated objects and understand the operations of network simulation and we also need to
analyze the behavior of the simulation object using network simulation.

 Platform required to run network simulator 


 Unix and Unix like systems
 Linux (Use Fedora or Ubuntu versions)
 Free BSD
 SunOS/Solaris
 Windows 95/98/NT/2000/XP

 
Backend Environment of Network Simulator
 Network Simulator is mainly based on two languages.They are C++ and OTcl. OTcl is the
object oriented version of Tool Command language.The network simulator is a bank of of
different network and protocol objects. C++ helps in the following way:

  It helps to increase the efficiency of simulation.


 Its is used to provide details of the protocols and their operation.
 It is used to reduce packet and event processing time.

OTcl helps in the following way:


 With the help of OTcl we can describe different network topologies
 It helps us to specify the protocols and their applications
 It allows fast development
 Tcl is compatible with many platforms and it is flexible for integration
 Tcl is very easy to use and it is available in free

 Basics of Tcl Programming (w.r.t. ns2)


 Before we get into the program we should consider the following things:

 Initialization and termination aspects of network simulator.

1. Defining the network nodes,links,queues and topology as well.


2. Defining the agents and their applications
3. Network Animator(NAM)
4. Tracing

 Initialization

 To start a new simulator we write

 set ns [new Simulator]

From the above command we get that a variable ns is being initialized by using the set command.
Here the code [new Simulator] is a instantiation of the class Simulator which uses the reserved
word 'new'. So we can call all the methods present inside the class simulator by using the
variable ns.

 Creating the output files


1    #To create the trace files we write
2      
3     set tracefile1 [open out.tr w]
4     $ns trace-all $tracefile1
5    
6    #To create the nam files we write
7    
8     set namfile1 [open out.nam w]
9     $ns namtrace-all $namfile

 In the above we create a output trace file out.tr and a nam visualization file out.nam. But in the
Tcl script they are not called by their names declared,while they are called by the pointers
initialized for them such as tracefile1 and namfile1 respectively.The line which starts with '#' are
commented.The next line opens the file 'out.tr' which is used for writing is declared 'w'.The next
line uses a simulator method trace-all by which we will trace all the events in a particular format.

The termination program is done by using a 'finish' procedure

 01    # Defining the 'finish' procedure'


02    
03    proc finish {} {
04         global ns tracefile1 namfile1
05         $ns flush-trace
06         close $tracefile
07         close $namfile
08         exec nam out.nam &
09         exit 0
10        }

 In the above the word 'proc' is used to declare a procedure called 'finish'.The word 'global' is
used to tell what variables are being used outside the procedure.

 'flush-trace' is a simulator method that dumps the traces on the respective files.the command
'close' is used to close the trace files and the command 'exec' is used to execute the nam
visualization.The command 'exit' closes the application and returns 0 as zero(0) is default for
clean exit.

 In ns we end the program by calling the 'finish' procedure

 1    #end the program


2    $ns at 125.0 "finish"
  

Thus the entire operation ends at 125 seconds.To begin the simulation we will use the command
 1    #start the the simulation process
2    $ns run
 Defining nodes,links,queues and topology

Way to create a node:


view source
print?
1 set n0 [ns node]

 In the above we created a node that is pointed by a variable n0.While referring the node in the
script we use $n0. Similarly we create another node n2.Now we will set a link between the two
nodes.

 1    $ns duplex-link $n0 $n2 10Mb 10ms DropTail

 So we are creating a bi-directional link between n0 and n2 with a capacity of 10Mb/sec and a
propagation delay of 10ms.

 In NS an output queue of a node is implemented as a part of a link whose input is that node to
handle the overflow at the queue.But if the buffer capacity of the output queue is exceeded then
the last packet arrived is dropped and here we will use a 'DropTail' option.Many other options
such as RED(Random Early Discard) mechanism, FQ(Fair Queuing), DRR(Deficit Round
Robin), SFQ(Stochastic Fair Queuing) are available.

 So now we will define the buffer capacity of the queue related to the above link

 1    #Set queue size of the link


2    $ns queue-limit $n0 $n2 20

 so, if we summarize the above three things we get

 01    #create nodes


02    
03    set n0 [$ns node]
04    set n1 [$ns node]
05    set n2 [$ns node]
06    set n3 [$ns node]
07    set n4 [$ns node]
08    set n5 [$ns node]
09    
10    #create links between the nodes
11    
12    $ns duplex-link $n0 $n2 10Mb 10ms DropTail
13    $ns duplex-link $n1 $n2 10Mb 10ms DropTail
14    $ns simplex-link $n2 $n3 0.3Mb 100ms DropTail
15    $ns simplex-link $n3 $n2 0.3Mb 100ms DropTail
16    $ns duplex-link $n0 $n2 0.5Mb 40ms DropTail
17    $ns duplex-link $n0 $n2 0.5Mb 40ms DropTail
18    
19    #set queue-size of the link (n2-n3) to 20
20    $ns queue-limit $n2 $n3 20

 Agents and applications


 TCP

 TCP is a dynamic reliable congestion protocol which is used to provide reliable transport of
packets from one host to another host by sending acknowledgements on proper transfer or loss of
packets.Thus TCP requires bi-directional links in order for acknowledgements to return to the
source.

 Now we will show how to set up tcp connection between two nodes

 1    #setting a tcp connection


2    
3    set tcp [new Agent/TCP]
4    $ns attach-agent $n0 $tcp
5    set sink [new Agent/TCPSink]
6    $ns attach-agent $n4 $sink
7    $ns connect $tcp $sink
8    $tcp set fid_1
9    $tcp set packetSize_552

 The command 'set tcp [new Agent/TCP]' gives a pointer called 'tcp' which indicates the tcp
agent which is a object of ns.Then the command '$ns attach-agent $n0 $tcp' defines the source
node of tcp connection. Next the command 'set sink [new Agent/TCPSink]' defines the
destination of tcp by a pointer called sink. The next command '$ns attach-agent $n4 $sink'
defines the destination node as n4.Next, the command '$ns connect $tcp $sink' makes the TCP
connection between the source and the destination.i.e n0 and n4.When we have several flows
such as TCP, UDP etc in a network. So, to identify these flows we mark these flows by using the
command '$tcp set fid_1'. In the last line we set the packet size of tcp as 552 while the default
packet size of tcp is 1000. 

FTP over TCP

 File Transfer Protocol(FTP) is a standard mechanism provided by the Internet for transferring
files from one host to another. Well this is the most common task expected from a networking or
a inter networking . FTP differs from other client server applications in that it establishes
between the client and the server. One connection is used for data transfer and other one is used
for providing control information. FTP uses the services of the TCP. It needs two connections.
The well Known port 21 is used for control connections and the other port 20 is used for data
transfer.

 Well here we will learn in how to run a FTP connection over a TCP

 1    #Initiating FTP over TCP


2    
3    set ftp [new Application/FTP]
4    $ftp attach-agent $tcp

 In above,the command 'set ftp [new Application/FTP]' gives a pointer called 'ftp' which
indicates the FTP application.Next, we attach the ftp application with tcp agent as FTP uses the
services of TCP.

 UDP

 The User datagram Protocol is one of the main protocols of the Internet protocol suite.UDP
helps the host to send send messages in the form of datagrams to another host which is present in
a Internet protocol network without any kind of requirement for channel transmission setup.
UDP provides a unreliable service and the datagrams may arrive out of order,appear duplicated,
or go missing without notice. UDP assumes that error checking and correction is either not
necessary or performed in the application, avoiding the overhead of such processing at the
network interface level. Time-sensitive applications often use UDP because dropping packets is
preferable to waiting for delayed packets, which may not be an option in a real-time system.

 Now we will learn how to create a UDP connection in network simulator.

1    # setup a UDP connection


2    set udp [new Agent/UDP]
3    $ns attach-agent $n1 $udp
4    $set null [new Agent/Null]
5    $ns attach-agent $n5 $null
6    $ns connect $udp $null
7    $udp set fid_2

 Similarly,the command 'set udp [new Agent/UDP]' gives a pointer called 'udp' which indicates
the udp agent which is a object of ns.Then the command '$ns attach-agent $n1 $udp' defines the
source node of udp connection. Next the command 'set null [new Agent/Null]' defines the
destination of udp by a pointer called null. The next command '$ns attach-agent $n5 $null'
defines the destination node as n5.Next, the command '$ns connect $udp $null' makes the UDP
connection between the source and the destination.i.e n1 and n5.When we have several flows
such as TCP,UDP etc in a network. So, to identify these flows we mark these flows by using the
command '$udp set fid_2

 Constant Bit Rate(CBR)


 Constant Bit Rate (CBR) is a term used in telecommunications, relating to the quality of
service.When referring to codecs, constant bit rate encoding means that the rate at which a
codec's output data should be consumed is constant. CBR is useful for streaming multimedia
content on limited capacity channels since it is the maximum bit rate that matters, not the
average, so CBR would be used to take advantage of all of the capacity. CBR would not be the
optimal choice for storage as it would not allocate enough data for complex sections (resulting in
degraded quality) while wasting data on simple sections.

 CBR over UDP Connection

 1    #setup cbr over udp


2     
3    set cbr [new Application/Traffic/CBR]
4    $cbr attach-agent $udp
5    $cbr set packetSize_1000
6    $cbr set rate_0.01Mb
7    $cbr set random _false

 In the above we define a CBR connection over a UDP one. Well we have already defined the
UDP source and UDP agent as same as TCP. Instead of defining the rate we define the time
interval between the transmission of packets in the command '$cbr set rate_0.01Mb'. Next, with
the help of the command '$cbr set random _false' we can set random noise in cbr traffic.we can
keep the noise by setting it to 'false' or we can set the noise on by the command '$cbr set random
_1'. We can set by packet size by using the command '$cbr set packetSize_(packetsize).We can
set the packet size up to sum value in bytes.

 Scheduling Events

 In ns the tcl script defines how to schedule the events or in other words at what time which event
will occur and stop. This can be done using the command

$ns at  .

So here in our program we will schedule the ftp and cbr.

1    # scheduling the events

 2    

 3    $ns at 0.1 "cbr start"

 4    $ns at 1.0 "ftp start"

 5    $ns at 124.0 "ftp stop"

 6    $ns at 124.5 "cbr stop"


 Network Animator(NAM)

 When we will run the above program in ns then we can can visualize the network in the NAM.
But instead of giving random positions to the nodes, we can give suitable initial positions to the
nodes and can form a suitable topology. So, in our program we can give positions to the nodes in
NAM in the following way

 1    #Give position to the nodes in NAM


2    
3    $ns duplex-link-op $n0 $n2 orient-right-down
4    $ns duplex-link-op $n1 $n2 orient-right-up
5    $ns simplex-link-op $n2 $n3 orient-right
6    $ns simplex-link-op $n3 $n2 orient-left
7    $ns duplex-link-op $n3 $n4 orient-right-up
8    $ns duplex-link-op $n3 $n5 orient-right-down

 We can also define the color of cbr and tcp packets for identification in NAM.For this we use
the following command

 1    #Marking the flows


2    $ns color1 Blue
3    $ns color2 Red

 To view the network animator we need to type the command: nam

 Tracing

 Tracing Objects

 NS simulation can produce visualization trace as well as ASCII file corresponding to the events
that are registered at the network. While tracing ns inserts four objects: EnqT,DeqT,RecvT &
DrpT. EnqT registers information regarding the arrival of packet and is queued at the input queue
of the link. When overflow of a packet occurs, then the information of thye dropped packet is
registered in DrpT.DeqT holds the information abut the packet that is dequeued instantly.RecvT
hold the information about the packet that has been received instantly.

Structure of Trace files


1. The first field is event.It gives you four possible symbols '+' '-' 'r' 'd'.These four symbols
correspond respectively to enqueued, dequeued, received and dropped.
2. The second field gives the time at which the event occurs
3. The third field gives you the input node of the link at which the event occurs
4. The fourth field gives you the the output node at which the event occurs
5. The fifth field shows the information about the packet type.i.e whether the packet is UDP
or TCP
6. The sixth field gives the packet size
7. The seventh field give information about some flags
8. The eight field is the flow id(fid) for IPv6 that a user can set for each flow in a tcl script.It
is also used for specifying the color of flow in NAM display
9. The ninth field is the source address
10. The tenth field is the destination address
11. The eleventh field is the network layer protocol's packet sequence number
12. The last field shows the unique id of packet

 Following are trace of two events:

 r 1.84471 2 1 cbr 210 ------- 1 3.0 1.0 195 600


r 1.84566 2 0 ack 40 ------- 2 3.2 0.1 82 602

 The trace file can be viewed with the cat command:

 cat out.tr
Steps for conducting the experiment
 

General Instructions

Follow are the steps to be followed in general to perform the experiments in Advanced Network
Technologies Virtual Lab.

1. Read the theory about the experiment


2. View the simulation provided for a chosen, related problem

3. Take the self evaluation to judge your understanding (optional, but recommended)

4. Solve the given list of exercises

Experiment Specific Instructions


 

In the theory part we have learned how to work with NS2. In this section we now learn how to
make your system ready so that you can work with Network Simulator 2.NS2 is a open source
software. It can be downloaded from Internet and installed.

Basic Requirements:
 

 A computer which is having access to the Internet


 Minimum 512Mb RAM

 Operating system: Linux(Ubuntu 10.04)

 ns-2.34 package

 gcc-4.4.3

 make tools

The following instructions for downloading and installing ns2 are for a system with:

 Operating System: Linux (Ubuntu 10.04)


 ns2: 2.34

 gcc: 4.4.3

Some of the known problems that have been faced during installation as well as their solutions
have been discussed in one of the sections below.

The steps for installation should ideally be applicable for other version and/or configuration of
Linux also. Any other problem that might arise would require further troubleshooting.

Downloading ns-2.34
 

To download ns2 go to http://www.isi.edu/nsnam/ns/ns-build.html. Here you can download the


ns all-in-one package or you can download the packages separately.

Well, lets learn how to download the packages separately.

 
1. First go to http://www.isi.edu/nsnam/ns/ns-build.html.
2. Then download Tcl and Tk from http://www.tcl.tk/software/tcltk/downloadnow84.tml [note:
the versions of Tcl and Tk must be same.]

3. Download OTcl from: http://sourceforge.net/projects/otcl-tclcl/files/OTcl/1.13/

4. Download Tclcl from : http://sourceforge.net/projects/otcl-tclcl/files/TclCL/1.19/

5. Download ns-2 from :http://sourceforge.net/projects/nsnam/files/ns-2/2.34/

6. Download nam from :http://sourceforge.net/projects/nsnam/files/nam-1/1.14/ [note :


download only nam-1.14.tar.gz not ns-allinone package.]

7. Download xgraph from: http://sourceforge.net/projects/nsnam/files/xgraph/xgraph-12.1/

Note: there are some other few things to be downloaded but that depends upon your
requirement.For example, if some error occurs for absence of any package,then you need to
detect the error and download the required package.

Installation
 Here we will install the the packages separately

 All the files will be zip format.So at first you need to unzip all the files. the command to unzip
the files:

tar -xzvf <file_name>

for e.g if we want to unzip the Tcl package the type: tar -xzvf tcl8.4.19

To unzip all the files together use the following command:

for ifile in ` ls *.tar.gz`


do
ar -xzvf $ifile
done

1. Next, we will install Tcl.The command required is:

cd tcl8.4.19
ls
cd unix
./configure
make
sudo make install

2. Install Tk:

cd tk8.4.19
ls
cd unix
./configure
make
sudo make install

3. Install OTcl:

cd otcl-1.13
/configure --with-tcl=../tcl8.4.19 #note-while configuring we need to specify the path of
tcl
make
sudo make install

4. Install Tclcl-1.19:

cd tclcl-1.19
./configure --with-tcl=../tcl8.4.19 #note-while configuring we need to specify the path of
tcl
make
sudo make install 

5. Install ns-2.34:

cd ns-2.34
/configure --with-tcl=../tcl8.4.19
make
sudo make install

6. Install NAM:

cd nam-1.14
./configure --with-tcl=../tcl8.4.19
make
sudo make install  

7. Install xgraph: 

cd xgraph-12.1
./configure
make
sudo make install

 Probable problems that could appear while installing the packages and their solution

 1. Tk was installed properly but it failed to run somehow.

 How to identify this:

 After installing tk8.4.19 try to run the script tk8.4.19/unix/wish from the terminal.A small
window will open,close it. If no error messages appears in the terminal then Tk installation is
successful and Tk is working properly. This can also be verified after installing nam and then
trying to run nam. The error message would be something like:

 nam:
[code omitted because of length]
: no event type or button # or keysym
while executing
"bind Listbox <MouseWheel> {
%W yview scroll [expr {- (%D / 120) * 4}] units
}"
invoked from within
"if {[tk windowingsystem] eq "classic" || [tk windowingsystem] eq "aqua"} {
bind Listbox <MouseWheel> {
%W yview scroll [expr {- (%D)}] units
}
bind Li..."

 Solution:

 If you get error messages then download the patch files tk-8.4.18-tkBind.patch and tk-8.4-
lastevent.patch from http://bugs.gentoo.org/show_bug.cgi?id=225999.

 then copy those files into Tk directory.Now apply the patches by using the following command:

 patch -p1 < tk-8.4.18-tkBind.patch

1. patch -p1 < tk-8.4-lastevent.patch

 If fail to apply the patches then open the patch, check the name of the file to be patched, and
make the relevant modifications to that file accordingly.

 Note: the contents of the original file are shown with a minus(-) sign at the beginning.The
modified contents do begin with a plus(+) sign. The contents of the two patch files are shown
below for easy reference:
 --- tk8.4.18-orig/generic/tkBind.c 2006-07-21 08:26:54.000000000 +0200
+++ tk8.4.18/generic/tkBind.c 2008-07-05 12:17:10.000000000 +0200
@@ -586,6 +586,9 @@
/* ColormapNotify */                                 COLORMAP,
/* ClientMessage */                                  0,
/* MappingNotify */                                    0,
+#ifdef GenericEvent
+ /* GenericEvent */                                 0,
+#endif
/* VirtualEvent */                                        VIRTUAL,
/* Activate */                                               ACTIVATE,
/* Deactivate */                                          ACTIVATE,

 And

--- generic/tk.h.orig                     2008-02-06 16:31:40.000000000 +0100


+++ generic/tk.h                          2008-07-24 08:21:46.000000000 +0200
@@ -635,17 +635,15 @@
*
*---------------------------------------------------------------------------
*/
-#define VirtualEvent                (LASTEvent)
-#define ActivateNotify              (LASTEvent + 1)
-#define DeactivateNotify         (LASTEvent + 2)
-#define MouseWheelEvent    (LASTEvent + 3)
-#define TK_LASTEVENT       (LASTEvent + 4)
+#define VirtualEvent               (MappingNotify + 1)
+#define ActivateNotify             (MappingNotify + 2)
+#define DeactivateNotify       (MappingNotify + 3)
+#define MouseWheelEvent   (MappingNotify + 4)
+#define TK_LASTEVENT       (MappingNotify + 5)

#define MouseWheelMask       (1L << 28)


-
#define ActivateMask                  (1L << 29)
#define VirtualEventMask          (1L << 30)
-#define TK_LASTEVENT        (LASTEvent + 4)

/*After doing all these stuffs, do install Tk from beginning again and also verify whether 'wish'
runs properly(as indicated above).

 2. Problem while running 'make' for OTcl

 otcl.o: In function `OTclDispatch':


/home/barun/Desktop/ns2/otcl-1.13/otcl.c:495: undefined reference to `__stack_chk_fail_local'
otcl.o: In function `Otcl_Init':
/home/barun/Desktop/ns2/otcl-1.13/otcl.c:2284: undefined reference to `__stack_chk_fail_local'
ld: libotcl.so: hidden symbol `__stack_chk_fail_local' isn't defined
ld: final link failed: Nonrepresentable section on output
make: *** [libotcl.so] Error 1

 Solution:

 goto the 'configure' file

1. In line no. 5516

 SHLIB_LD="ld -shared"

change the above to

SHLIB_LD="gcc -shared"

for further information you can gob to http://nsnam.isi.edu/nsnam/index.php/User_Information

 3. Problem wile running ' sudo make install' for ns-2.34

 ns: error while loading shared libraries: libotcl.so: cannot open shared object file: No such file or
directory

 Solution:

 We need to set the following environment variables, and store them in the ~/.bashrc file. 

 1    OTCL_LIB=/your/path/ns-2.34/otcl-1.13
2    NS2_LIB=/your/path/ns-2.34/lib
3    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OTCL_LIB:$NS2_LIB

Now open a new terminal, and type ns. This should now work without any error.

 4. Problem while running 'make' for nam

 rm -f tkcompat.o; gcc -o tkcompat.o -c -Wall -Wno-write-strings -DTCL_TK -DNO_VOID


-DNDEBUG -DUSE_SHM -DHAVE_LIBTCLCL -DHAVE_TCLCL_H
-DHAVE_LIBOTCL1_13 -DHAVE_OTCL_H -DHAVE_LIBTK8_4 -DHAVE_TK_H
-DHAVE_LIBTCL8_4 -DHAVE_TCLINT_H -DHAVE_TCL_H -I.
-I/home/bibudhendu/Desktop/ns2/tclcl-1.19 -I/home/bibudhendu/Desktop/ns2/otcl-1.13
-I/usr/local/include -I/home/bibudhendu/Desktop/ns2/tcl8.4.19/generic
-I/home/bibudhendu/Desktop/ns2/tcl8.4.19/generic tkcompat.c

 rm -f tkUnixInit.o; gcc -o tkUnixInit.o -c -Wall -Wno-write-strings -DTCL_TK -DNO_VOID


-DNDEBUG -DUSE_SHM -DHAVE_LIBTCLCL -DHAVE_TCLCL_H
-DHAVE_LIBOTCL1_13 -DHAVE_OTCL_H -DHAVE_LIBTK8_4 -DHAVE_TK_H
-DHAVE_LIBTCL8_4 -DHAVE_TCLINT_H -DHAVE_TCL_H -I.
-I/home/bibudhendu/Desktop/ns2/tclcl-1.19 -I/home/bibudhendu/Desktop/ns2/otcl-1.13
-I/usr/local/include -I/home/bibudhendu/Desktop/ns2/tcl8.4.19/generic
-I/home/bibudhendu/Desktop/ns2/tcl8.4.19/generic tkUnixInit.c

 rm -f xwd.o; gcc -o xwd.o -c -Wall -Wno-write-strings -DTCL_TK -DNO_VOID -DNDEBUG


-DUSE_SHM -DHAVE_LIBTCLCL -DHAVE_TCLCL_H -DHAVE_LIBOTCL1_13
-DHAVE_OTCL_H -DHAVE_LIBTK8_4 -DHAVE_TK_H -DHAVE_LIBTCL8_4
-DHAVE_TCLINT_H -DHAVE_TCL_H -I. -I/home/bibudhendu/Desktop/ns2/tclcl-1.19
-I/home/bibudhendu/Desktop/ns2/otcl-1.13 -I/usr/local/include
-I/home/bibudhendu/Desktop/ns2/tcl8.4.19/generic
-I/home/bibudhendu/Desktop/ns2/tcl8.4.19/generic xwd.c

 xwd.c:87:29: error: X11/Xmu/WinUtil.h: No such file or directory make: *** [xwd.o] Error 1

 Solution:

Install the package libxmu-dev. Then run

 ./configure
make clean
make
sudo make install

 5. Problem while running 'make' for xgraph

 /usr/include/stdio.h:651: note: expected ‘size_t * __restrict__’ but argument is of type ‘char *’


dialog.c:780: error: too few arguments to function ‘getline’
dialog.c: In function ‘getline’:
dialog.c:899: error: argument ‘lptr’ doesn’t match prototype
/usr/include/stdio.h:651: error: prototype declaration
dialog.c:899: error: number of arguments doesn’t match prototype
/usr/include/stdio.h:651: error: prototype declaration
make: *** [dialog.o] Error 1

 Solution:

 Download the patch below-

 http://archive.ubuntu.com/ubuntu/pool/universe/x/xgraph/xgraph_12.1-12.diff.gz

 Note: copy and unzip the above patch file into xgraph-12.1
view source
print?
1 patch < xgraph_12.1-12.diff
After applying the patch if you see in get any problem with the configure.in file like

 configure.in:3: version mismatch. This is Automake 1.11,


configure.in:3: but the definition used by this AM_INIT_AUTOMAKE
configure.in:3: comes from Automake 1.11.1. You should recreate
configure.in:3: aclocal.m4 with aclocal and run automake again.

then goto configure.in file and add 'AC_LOCAL' in the first line.

QUESTIONS

1. What information do you get from the sixth field of a tracefile


o Packet type

o Packet size

o Packet id

2. What is the code to view the simulation of the network in NAM ?


o nam <namfilename>

o $ns nam <namfilename>

o $ns nam

3. What is the function of trace-all ?


o  Traces some specific events

o Traces all the events in a specific format

o Traces some specific events in some specific format

4. At what point of program the 'finish' procedure should be called ?


o  At the end of the program

o At the top of the program

o It can be called at anypoint in the program

5. Sink can
o only recieve packets

o send packets

o send acknowledgement and recieve packets


6. What is the default packet size of tcp in NS2 ?
o 1000

o 552

o 785

You might also like