10CSL77 NETWORK - Lab PDF
10CSL77 NETWORK - Lab PDF
10CSL77 NETWORK - Lab PDF
LAB MANUAL
PES School
Note: Student is required to solve one problem from PART-A and one problem from PART-
B. Both the parts have equal weightage.
The following experiments shall be conducted using either NS228/OPNET or any other
simulators.
1. Simulate a three nodes point-to-point network with duplex links between them. Set the
queue size vary the bandwidth and find the number of packets dropped.
2. Simulate a four node point-to-point network, and connect the links as follows: n0-n2, n1-
n2 and n2-n3. Apply TCP agent between n0-n3 and UDP n1-n3. Apply relevant
applications over TCP and UDP agents changing the parameter and determine the
number of packets sent by TCP/UDP.
3. Simulate the transmission of ping messages over a network topology consisting of 6 nodes
and find the number of packets dropped due to congestion.
4. Simulate an Ethernet LAN using N-nodes(6-10), change error rate and data rate and
compare the throughput.
5. Simulate an Ethernet LAN using N nodes and set multiple traffic nodes and plot
congestion window for different source/destination.
6. Simulate simple ESS and with transmitting nodes in wire-less LAN by simulation and
determine the performance with respect to transmission of packets.
PART B
PES - 1
INTRODUCTION
Simulation is only of use if the results are accurate, an inaccurate simulator is not
useful at all. Most network simulators use abstractions of network protocols, rather than the
real thing, making their results less convincing. S.Y. Wang reports that the simulator
OPNET uses a simplified finite state machine to model complex TCP protocol processing.
[19] NS-2 uses a model based on BSD TCP, it is implemented as a set of classes using
inheritance. Neither uses protocol code that is used in real world networking.
Wang states that Simulation results are not as convincing as those produced by real
hardware and software equipment. This statement is followed by an explanation of the fact
that most existing network simulators can only simulate real life network protocol
implementations with limited detail, which can lead to incorrect results. Another paper
includes a similar statement, running the actual TCP code is preferred to running an
abstract specification of the protocol. Brakmo and Peterson go on to discuss how the BSD
implementations of TCP are quite important with respect to timers. Simulators often use
more accurate round trip time measurements than those used in the BSD implementation,
making results differ.
Using real world network stacks in a simulator should make results more accurate, but it
is not clear how such stacks should be integrated with a simulator. The network simulator
NCTUns shows how it is possible to use the network stack of the simulators machine.
The Network Simulator offers a simplified and complete network simulation experience.
The following diagram depicts this functionality offered by the Network Simulator.
PE
The Network Simulator can design and simulate a network with SNMP, TL1, TFTF,
FTP, Telnet and IOS devices, in four simple steps:
1. Add devices to the Device tree: Add devices with the required configuration to the device
tree in the Network Designer. Preconfigured devices are also bundled with the toolkit.
2. Create the Network: Create and add bulk devices to the network, at one shot.
3. Configure the Network devices: Configure the devices in the network, if required.
4. Start the Network: Start the network or start individual agents in the network. The MIB
Browser and TL1 Craft Interface test tools, can be used as the manager tools for testing.
Network Emulation
Network emulation refers to actual network traffic passing through some software which
might do some analysis or perhaps modify the traffic in some way. The Emulation Network in the
WAND group is used for testing and evaluation of networking software and hardware. The scale is
limited; it is made up 24 emulation machines and one central controlling computer. Setup of such a
network is time consuming and expensive: in addition to the aforementioned 25 computers, a Cisco
2950 switch and a Cyclades 32 port terminal server are included in the network. Each emulation
machine also has a 4 port network interface controller. The controlling machine includes special
capture cards (known as DAG [6] cards) to allow easier capture and processing of network traffic.
This network has no easy way of adding latency and bandwidth bottlenecks, which means creating
adverse conditions on the network is difficult. It is possible to use Dummynet to
add latency, but this is a lot of work. There is a project to solve this issue; a non blocking
crossbar Ethernet switch is being created for the network, but the cost involved is large.
Other network emulation done in the WAND group include validating the WAND simulator.
This was done by setting up a physical network with FreeBSD machines using Dummynet to
add latency. Dummynet is one example of network emulation software, NIST Net is another,
it claims to allow controlled, reproducible experiments with network performance
sensitive/adaptive applications and control protocols in a simple laboratory setting.
NS-2 also provides some network emulation functionality, it is able to capture packets
from the live network and drop, delay, re-order, or duplicate them. Emulation, especially in
the case of a network simulator like NS-2, is interesting because it is using real world data
from real world network stacks. Emulation offers something simulation never can: it is
performed on a real network, using actual equipment and real software. However, it is very
limited compared to simulation in other areas; for example scale. The WAND Emulation
Network described earlier requires a lot of setup and is expensive, yet only contains 24
emulation machines. There is no theoretical limit to the number of nodes a simulator can
handle, and increasing the size of a simulation does not cost anything. The factors to consider
are RAM, disk space and the small amount of time taken to change a simulation script. In
general, changing the simulation is a simple step, though it would be complex in the case a
huge amount of nodes being required (a million, for example).
Also, network emulation must of course be run in real time, where simulation can
sometimes simulate large time periods in a small amount of time. In the case of a million
nodes, the simulation might run in greater than real time because the hardware it is run on
would limit performance.
Simulation results are not as convincing as those produced by real hardware and software
equipment. In order to constrain their complexity and development cost, most network simulators
These simulators are not extensible in the sense that they lack the standard UNIX POSIX
application programming interface (API). As such, existing or to-be-developed real-life
application programs cannot run normally to generate traffic for a simulated network.
Instead, they must be rewritten to use the internal API provided by the simulator (if there is
any) and be compiled with the simulator to form a single, big, and complex program.
MIT's NETSIM
NIST
CPSIM
INSANE
NEST
REAL
NS
OPNET
NCTUns
REAL
Use
NEST is intended for studying the dynamic behavior of flow and congestion control
schemes in packet-switched data networks (namely TCP/IP).
The package
The description of the network topology, protocols workload and control parameters
are transmitted to the server using a simple ASCII representation called NetLanguage where
the network is modeled as a graph. This latest release now includes a GUI written in Java.
The NEST code has been rewritten to make it less general, cleaner and faster. REAL is still
implemented as a client-server program. The code is freely available to anyone willing to modify
it. Node functions implement computation at each node in the network whereas queue
management and routing functions manage buffers in nodes and packet switching. Routing is
static and is based on Dijkstras's shortest path algorithm. A node could be a source, a router or a
sink. Source nodes implement TCP-like transport layer functionality. Routers implement the
scheduling disciplines, while the sinks are universal receivers that only acknowledge packets.
Since NEST didn't not allow for timers, REAL sends out a timer packet from a source
back to itself to return after some specified time, but timers cannot be reset using this method.
NCTUns
Introduction
NCTUns is open source, high quality, and supports many types of networks.The
NCTUns is a high-fidelity and extensible network simulator and emulator capable of
simulating various protocols used in both wired and wireless IP networks. Its core
technology is based on the novel kernel re-entering methodology invented by Prof. S.Y.
Wang [1, 2] when he was pursuing his Ph.D. degree at Harvard University. Due to this novel
methodology, NCTUns provides many unique advantages that cannot be easily achieved by
traditional network simulators such as ns-2 [3] and OPNET [4].
After obtaining his Ph.D. degree from Harvard University in September 1999, Prof.
S.Y. Wang returned to Taiwan and became an assistant professor in the Department of
Computer Science and Information Engineering, National Chiao Tung University (NCTU),
Taiwan, where he founded his Network and System Laboratory. Since that time, Prof. S.Y.
Wang has been leading and working with his students to design and implement NCTUns (the
NCTU Network Simulator) for more than five years.
The NCTUns network simulator and emulator has many useful features listed as follows:
It can be used as an emulator. An external host in the real world can exchange packets (e.g.,
set up a TCP connection) with nodes (e.g., host, router, or mobile station) in a network
simulated by NCTUns. Two external hosts in the real world can also exchange their packets
via a network simulated by NCTUns. This feature is very useful as the function and
performance of real-world devices can be tested under various
simulated network conditions.
It can use any real-life UNIX network configuration and monitoring tools. For
example, the UNIX route, ifconfig, netstat, tcpdump, traceroute commands can be
run on a simulated network to configure or monitor the simulated network.
In NCTUns, the setup and usage of a simulated network and application programs
are exactly the same as those used in real-world IP networks. For example, each
layer-3 interface has an IP address assigned to it and application programs directly
use these IP addresses to communicate with each other. For this reason, any person
who is familiar with real-world IP networks can easily learn and operate NCTUns in
a few minutes. For the same reason, NCTUns can be used as an educational tool to
teach students how to configure and operate a real-world network.
It can simulate fixed Internet, Wireless LANs, mobile ad hoc (sensor) networks, GPRS
networks, and optical networks. A wired network is composed of fixed nodes and point-
to-point links. Traditional circuit-switching optical networks and more advanced Optical
Burst Switching (OBS) networks are also supported. A wireless networks is composed of
IEEE 802.11 (b) mobile nodes and access points (both the ad-hoc mode and infra-
structure mode are supported). GPRS cellular networks are also supported.
It can simulate various networking devices. For example, Ethernet hubs, switches,
routers, hosts, IEEE 802.11 (b) wireless stations and access points, WAN (for
purposely delaying/dropping/reordering packets), Wall (wireless signal obstacle),
GPRS base station, GPRS phone, GPRS GGSN, GPRS SGSN, optical circuit switch,
optical burst switch, QoS DiffServ interior and boundary routers, etc.
It can simulate various protocols. For example, IEEE 802.3 CSMA/CD MAC, IEEE 802.11
(b) CSMA/CA MAC, learning bridge protocol, spanning tree protocol, IP, Mobile IP,
Diffserv (QoS), RIP, OSPF, UDP, TCP, RTP/RTCP/SDP, HTTP, FTP, Telnet, etc.
Its simulation speed is high. By combining the kernel re-entering methodology with
the discrete-event simulation methodology, a simulation job can be finished quickly.
Its simulation results are repeatable. If the chosen random number seed for a
simulation case is fixed, the simulation results of a case are the same across different
simulation runs even though there are some other activities (e.g., disk I/O) occurring
on the simulation machine.
It provides a highly integrated and professional GUI environment. This GUI can help a user
(1) draw network topologies, (2) configure the protocol modules used inside a node,
(3) specify the moving paths of mobile nodes, (4) plot network performance graphs,
(5) playing back the animation of a logged packet transfer trace, etc. All these
operations can be easily and intuitively done with the GUI.
Its simulation engine adopts an open-system architecture and is open source. By using
a set of module APIs provided by the simulation engine, a protocol module writer can
easily implement his (her) protocol and integrate it into the simulation engine.
NCTUns uses a simple but effective syntax to describe the settings and configurations
of a simulation job. These descriptions are generated by the GUI and stored in a suite
of files. Normally the GUI will automatically transfer these files to the simulation
engine for execution. However, if a researcher wants to try his (her) novel device or
network configurations that the current GUI does not support, he (she) can totally
bypass the GUI and generate the suite of description files by himself (herself) using
any text editor (or script program). The non-GUI-generated suite of files can then be
manually fed to the simulation engine for execution.
CS / IS 06CSL77 - 8
A user using the NCTUns in single machine mode, needs to do the following steps
before he/she starts the GUI program:
After the above steps are followed, the starting screen of NCTUns disappears and the user is
presented with the working window as shown below:
To draw a new network topology, a user can perform the following steps:
Choose Menu->File->Operating Mode-> and make sure that the Draw Topology mode is
checked. This is the default mode of NCTUns when it is launched. It is only in this mode that a
user can draw a new network topology or change an existing simulation topology. When a user
3. Left-Click anywhere in the blank working area to add a router to the current network
topology. In the same way we can add switch, hub, WLAN access point, WLAN mobile
node, wall (wireless signal obstacle) etc.
4. Left-Click the host icon on the toolbar. Like in step 4, add the required number of hosts to
the current topology.
5. To add links between the hosts and the router, left-click the link icon on the toolbar to select it.
6. Left-Click a host and hold the mouse button. Drag this link to the router and then release
the mouse left button on top of the router. Now a link between the selected host and the
router has been created.
7. Add the other, required number of links in the same way. This completes the creation of a
simple network topology.
1. A network node (device) may have many parameters to set. For example, we may have to
set the maximum bandwidth, maximum queue size etc to be used in a network interface.
For another example, we may want to specify that some application programs (traffic
generators) should be run on some hosts or routers to generate network traffic.
2. Before a user can start editing the properties of a node, he/she should switch the mode
from the Draw Topology to Edit Property mode. In this mode, topology changes can
no longer be made. That is, a user cannot add or delete nodes or links at this time.
3. The GUI automatically finds subnets in a network and generates and assigns IP and MAC
addresses to layer 3 network interfaces.
4. A user should be aware that if he/she switches the mode back to the Draw Topology mode
when he/she again switches the mode back to the Edit Topology mode, node's IP and MAC
addresses will be regenerated and assigned to layer 3 interfaces. Therefore the application
programs now may use wrong IP addresses to communicate with their partners.
When a user finishes editing the properties of network nodes and specifying application
programs to be executed during a simulation, he/she can start running the simulation.
2. In order to do so, the user must switch mode explicitly from Edit Property to Run
Simulation. Entering this mode indicates that no more changes can (should) be made to
the simulation case, which is reasonable. This simulation is about to be started at this
moment; of course, any of its settings should be fixed.
3. Whenever the mode is switched to the Run Simulation mode, the many simulation files
that collectively describe the simulation case will be exported. These simulation files will
be transferred to the (either remote or local) simulation server for it to execute the
simulation. These files are stored in the main File Name.sim directory, where main
Filename is the name of the simulation case chosen in the Draw Topology mode.
After the simulation is finished, the simulation server will send back the simulation result
files to the GUI program after receiving these files, the GUI program will store these files in
the results directory .It will then automatically switch to play back mode.
1. These files include a packet animation trace file and all performance log files that the user
specifies to generate. Outputting these performance log files can be specified by checking some
output options in some protocol modules in the node editor. In addition to this, application
programs can generate their own data files.
3. The packet animation trace file can be replayed later by the packet animation player.
The performance curve of these log files can be plotted by the performance monitor.
1. When the user wants to review the simulation results of a simulation case that has been
finished before, he /she can run up the GUI program again and then open the case's topology file
2. The user can switch the mode directly to the Play Back mode. The GUI program will then
automatically reload the results (including the packet animation trace file and performance log file.
3. After the loading process is finished, the user can use the control buttons located at the
bottom of the screen to view the animation.
Simulation Commands
Abort: Abort the currently running simulation. The difference between stop and abort is
that a stopped simulation job's partial results will be transferred back to GUI files.
Reconnect: The Reconnect command can be executed to reconnect to a simulation job that was
previously disconnected. All disconnected jobs that have not finished their simulations or have
finished their simulations but the results have not been retrieved back to be a GUI program by
the user will appear in a session table next to the Reconnect command. When executing the
reconnect command, a user can choose a disconnected job to reconnect from this session table.
Disconnect: Disconnect the GUI from the currently running simulation job. The GUI now
can be used to service another simulation job. A disconnected simulation will be given a
session name and stored in a session table.
0 - 12
Simulate a three-node point-to-point network with a duplex link between them. Set
the queue size and vary the bandwidth and find the number of packets dropped.
STEPS:
Step1: Select the hub icon on the toolbar and drag it onto the working window.
Step2: Select the host icon on the toolbar and drag it onto the working window. Repeat this
for another host icon.
Step3: Select the link icon on the toolbar and drag it on the screen from host (node 1) to the
hub and again from host(node 2) to the hub. Here the hub acts as node 3 in the point-to-point
network. This leads to the creation of the 3-node point-to-point network topology. Save this
topology as a .tpl file.
Step4:Double-click on host(node 1), a host dialog box will open up. Click on Node editor and
you can see the different layers- interface, ARP, FIFO, MAC, TCPDUMP, Physical layers.
Select MAC and then select full-duplex for switches and routers and half duplex for hubs,
and in log Statistics, select Number of Drop Packets, Number of Collisions, Throughput of
incoming packets and Throughput of outgoing packets. Select FIFO and set the queue size to
50 and press OK. Then click on Add. Another dialog box pops up. Click on the Command
box and type the Command according to the following syntax:
Step 5: Double-click on host (node 2), and follow the same step as above with only change in
command according to the following syntax:
rtg [-t] [-w log] [-p port number]
and click OK.
Step 6: Double click on the link between node 1 and the hub to set the bandwidth to some initial
value say, 10 Mbps. Repeat the same for the other node.
Step 7: Click on the E button (Edit Property) present on the toolbar in order to save the changes
made to the topology. Now click on the R button (RunSimulation). By doing so a user can
run/pause/continue/stop/abort/disconnect/reconnect/submit a simulation. No simulation
settings can be changed in this mode.
Step 9:To start the playback, the user can left-click the start icon( |>) of the time bar located
at the bottom. The animation player will then start playing the recorded packet animation.
Step 10: Change the bandwidth say, 9 Mbps, and run the simulation and compare the two
results.
Note: To get the syntax of any command, double click on the host icon. Host dialog boxes
appear and then choose App. Usage.
Simulate a four-node point-to-point network and connect the link as follows: Apply a
TCP agent between n0 to n3 and apply a UDP agent between n1 and n3. Apply relevant
applications over TCP and UDP agents changing the parameters and determine the number
of packets sent by two agents.
STEPS:
Step 1: Create the topology as specified in the question, in the draw mode of the simulator.
Step 3: Setup a TCP connection between node 1 and node 3 using the
following commands:
stcp [-p port] [-l writesize] hostIPaddr
rtcp [-p port] [-l readsize]
Step 4: Setup a UDP connection between node 2 and node 3 using the
following commands:
stg [-u payload size duration] [Host address]
rtg [-u] [-w log]
Step 5:Set the output throughput log to determine the number of packets
sent by TCP/UDP as described in experiment 1.
/ IS 06CSL77 - 19
STEPS:
Step 1: Click on the subnet icon on the toolbar and then click on the screen of the working
window.
Step 2: Select the required number of hosts and a suitable radius between the host and the
switch.
Step 3: In the edit mode, get the IP address of one of the hosts say, host 1 and then for the
other host say, host2 set the drop packet and no: of collisions statistics as described
in the earlier experiments.
Step 5: Now click on any one of the hosts and click on command console and ping
the destination node.
Note: The no: of drop packets are obtained only when the traffic is more in the network. For
checking the no of packets dropped press ctrl+C
Simulate an Ethernet LAN using N nodes (6-10), change error rate and data rate and
compare throughput.
STEPS:
Step 1: Connect one set of hosts with a hub and another set of hosts also through a hub and
connect these two hubs through a switch. This forms an Ethernet LAN.
Step 2: Setup a TCP connection between a host on one hub and host on another hub
using the following command:
Step 3: Setup the error rate, data rate in the physical layer, input and
output throughput in the mac layer as described above.
Step 4: Change error rate and data rate and compare the
06CSL77 - 23
- 24
STEPS:
Step 1: Connect one set of hosts with a hub and another set of hosts also through a hub and
connect these two hubs through a switch. This forms an Ethernet LAN.
Step 2: Setup multiple traffic connections between the hosts on one hub and hosts on
another hub using the following command:
Step 3: Setup the collision log at the destination hosts in the MAC layer as described in the
earlier experiments.
Simulate simple ESS and with transmitting nodes in wireless LAN by simulation and
determine the performance with respect to transmission of packets.
STEPS:
Step 2: Setup multiple mobile nodes around the two WLAN access points and set the path
for each mobile node.
Step 3: Setup a ttcp connection between the mobile nodes and host using the following command:
Mobile Host 1
ttcp t u s p 3000 IPAddrOf Receiver
Mobile Host 1
ttcp t u s p 4000 IPAddrOf Receiver
Host(Receiver)
ttcp r u s p 3000
ttcp r u s p 4000
Screenshot
06CSL77 - 28
Part B Programs
Experiment No 1
CRC
Problem Statement
Write a program for error detecting code using CRC-CCITT (16-bits).
Theory
It does error checking via polynomial division. In general, a bit string
b b b b b b
n-1 n-2 n-3 2 1 0
As
n-1 n-2 n-3 2 1
bn-1X + bn-2 X + bn-3 X + b2 X + b1 X + b0
Ex: -
10010101110
As
10 7 5 3 2 1
X +X +X +X +X +X
All computations are done in modulo 2
Algorithm:-
S s
1. Given a bit string, append 0 to the end of it (the number of 0 is the same as the degree
of the generator polynomial) let B(x) be the polynomial corresponding to B.
2. Divide B(x) by some agreed on polynomial G(x) (generator polynomial) and determine the
remainder R(x). This division is to be done using Modulo 2 Division.
3. Define T(x) = B(x) R(x)
Experiment No 2
Distance Vector Routing
Problem Statement
Write a program for distance vector algorithm to find suitable path for transmission.
Theory
Routing algorithm is a part of network layer software which is responsible for deciding which
output line an incoming packet should be transmitted on. If the subnet uses datagram internally, this
decision must be made anew for every arriving data packet since the best route may have changed
since last time. If the subnet uses virtual circuits internally, routing decisions are made only when a
new established route is being set up. The latter case is sometimes called session routing, because a
rout remains in force for an entire user session (e.g., login session at a terminal or a file).
Routing algorithms can be grouped into two major classes: adaptive and nonadaptive. Nonadaptive
algorithms do not base their routing decisions on measurement or estimates of current traffic and topology.
Instead, the choice of route to use to get from I to J (for all I and J) is compute in advance, offline, and
downloaded to the routers when the network ids booted. This procedure is sometime called static routing.
Adaptive algorithms, in contrast, change their routing decisions to reflect changes in the topology,
and usually the traffic as well. Adaptive algorithms differ in where they get information (e.g., locally,
from adjacent routers, or from all routers), when they change the routes (e.g., every T sec, when the
load changes, or when the topology changes), and what metric is used for optimization (e.g., distance,
number of hops, or estimated transit time).
Two algorithms in particular, distance vector routing and link state routing are the most popular.
Distance vector routing algorithms operate by having each router maintain a table (i.e., vector)
giving the best known distance to each destination and which line to get there. These tables are
updated by exchanging information with the neighbors.
The distance vector routing algorithm is sometimes called by other names, including the
distributed Bellman-Ford routing algorithm and the Ford-Fulkerson algorithm, after the researchers
who developed it (Bellman, 1957; and Ford and Fulkerson, 1962). It was the original ARPANET
routing algorithm and was also used in the Internet under the RIP and in early versions of DECnet
and Novells IPX. AppleTalk and Cisco routers use improved distance vector protocols.
In distance vector routing, each router maintains a routing table indexed by, and containing one entry
for, each router in subnet. This entry contains two parts: the preferred out going line to use for that
destination, and an estimate of the time or distance to that destination. The metric used might be number
of hops, time delay in milliseconds, total number of packets queued along the path, or something similar.
The router is assumed to know the distance to each of its neighbor. If the metric is hops, the
distance is just one hop. If the metric is queue length, the router simply examines each queue. If the
metric is delay, the router can measure it directly with special ECHO packets hat the receiver just
time stamps and sends back as fast as possible.
short delay to X, the router just switches over to using the line to A to send traffic to X. In one vector
exchange, the good news is processed.
To see how fast good news propagates, consider the five node (linear) subnet of following figure,
where the delay metric is the number of hops. Suppose A is down initially and all the other routers
know this. In other words, they have all recorded the delay to A as infinity.
A B C D E A B C D E
_____ _____ _____ _____ _____ _____ _____ _____
Initially 1 2 3 4 Initially
1 After 1 exchange 3 2 3 4 After 1 exchange
1 2 After 2 exchange 3 3 3 4 After 2 exchange
1 2 3 After 3 exchange 5 3 5 4 After 3 exchange
1 2 3 4 After 4 exchange 5 6 5 6 After 4 exchange
7 6 7 6 After 5 exchange
7 8 7 8 After 6 exchange
:
Many ad hoc solutions to the count to infinity problem have been proposed in the literature, each one more
complicated and less useful than the one before it. The split horizon algorithm works the same way as distance
vector routing, except that the distance to X is not reported on line that packets for X are sent on (actually, it is
reported as infinity). In the initial state of right figure, for example, C tells D the truth about distance to A but C
tells B that its distance to A is infinite. Similarly, D tells the truth to E but lies to C.
Experiment No 3
TCP Socket
Problem Statement
Using TCP/IP sockets, write a client-server program to make client sending the file name and the
server to send back the contents of the requested file if present.
Overview
Unix sockets is just like two way FIFO's. All data communication will take place
through the socket's interface, instead of through the file interface. Although unix socket's
are a special file in the file system(just like FIFO's), there's usage of socket(), bind(),
recv(),etc and not open(), read().
When programming with socket's, usually there's creation of server and client
programs. The server will sit listening for incoming connections from clients and handling.
This is similar to the situation that exists with internet sockets but with fine differences.
For instance, when describing which unix socket that has to be used (i.e the path to the
special file that is the socket). The structure struct sockaddr_un has the following fields:
struct sockaddr_un{
unsigned short sa_family; // Address family,AF_XXXX
char sa_data; // 14 bytes of protocol address
};
This is the structure you will be passing to the bind() function, which associates a socket
descriptor(a file descriptor) with a certain file(the name for which is in the sun_path field).
The structure struct sockaddr_in is used when we need IP address and Port number to
be binded to the Sockets. It has following fields:
struct sockaddr_in {
short int sin_family; // Address family
unsigned short int sin_port; // Port number
struct in_addr sin_addr; // Internet address
unsigned char sin_zero[8] // Same size as struct sockaddr
};
// Internet adress
struct in_addr
{
unsigned long s_addr; // 32 bits or 4 bytes long
};
Most interprocess communication uses the client server model. These terms refer to
the two processes which will be communication with each other. One of the two processes ,
the client , connects to the other process, the server, typiceally to make a request for
information. A good analogy is a person who makes a phone call to another person.
Notice that the client needs to know of the existence of and the address of the server,
but the server does not need to know the adresss of(or even the existence of) the client prior
to the connection being established. Notice also that once a connection is established, both
sides can send and receive information.
The system calls for establishing a connection are somewhat different for the client
and the server, but both involve the basic construct of a socket. A socket is one end of an
interprocess communication channel. The two processes each establish their own socket.
The steps involved in establishing a socket on the client side are as follows-
1. Create a socket with the socket() system call .
2. Connect the socket to the address of the server using the connect() system call.
3. Send and receive data.There are a number of ways to do this, but the simplest is to
use the read() and write() systen calls.
The stepped involved in establishing a socket on the server side are as follows-
1. Create a socket with the socket() system call.
2. Bind the socket to an address using the bind() system call. For a server socket
on the internet, an address consists of a port number on the host machine.
3. Listen for connections with the listen() system call.
4. Accept a connection with the accept() system call. This call typically blocks until a
client connects with the server.
5. Send and receive the data.
Socket Types:
When a socket is created, the program has to specify the address domain and the
socket type. Two processes can communicate with each other only if their sockets are of the
same type and in the same domain, in which two processes running on any two hosts on the
Internet communicate. Each of these has it's own adress format.
The address of a socket in the Unix domain is a character string which is basically an
entry in the file system.
The address of a socket in the Internet domain consists of the Internet address
of the host machine (every computer on the Internet has a unique 32 bit address, often
reffered to as it's IP address). In addition , each socket needs a port number on that host.
Port numbers are 16 bit unsigned integers. The lower numbers are reserved in Unix for
standard services. For eg, the port number for the FTP server is 21.
There are two widely used socket types, stream sockets , and datgram sockets. Stream
sockets treat communications as a continuous stream of characters, while datagram sockets have
to read entire messages at once. Each uses it's own communications protocol. Stream sockets use
L77 - 34
Experiment No 4
FIFO IPC
Problem Statement
Implement the above program using as message queues or FIFO as IPC channels.
Problem Statement
Write a program for simple RSA algorithm to encrypt and decrypt the data.
Theory
Cryptography has a long and colorful history. The message to be encrypted, known as the
plaintext, are transformed by a function that is parameterized by a key. The output of the encryption
process, known as the ciphertext, is then transmitted, often by messenger or radio. The enemy, or
intruder, hears and accurately copies down the complete ciphertext. However, unlike the intended
recipient, he does not know the decryption key and so cannot decrypt the ciphertext easily. The art of
breaking ciphers is called cryptanalysis the art of devising ciphers (cryptography) and breaking
them (cryptanalysis) is collectively known as cryptology.
There are several ways of classifying cryptographic algorithms. They are generally categorized
based on the number of keys that are employed for encryption and decryption, and further defined
by their application and use. The three types of algorithms are as follows:
1. Secret Key Cryptography (SKC): Uses a single key for both encryption and decryption. It is also
known as symmetric cryptography.
2. Public Key Cryptography (PKC): Uses one key for encryption and another for decryption. It is
also known as asymmetric cryptography.
3. Hash Functions: Uses a mathematical transformation to irreversibly "encrypt" information
Public-key cryptography has been said to be the most significant new development in
cryptography. Modern PKC was first described publicly by Stanford University professor Martin
Hellman and graduate student Whitfield Diffie in 1976. Their paper described a two-key crypto
system in which two parties could engage in a secure communication over a non-secure
communications channel without having to share a secret key.
Generic PKC employs two keys that are mathematically related although knowledge of one key
does not allow someone to easily determine the other key. One key is used to encrypt the plaintext
and the other key is used to decrypt the ciphertext. The important point here is that it does not
matter which key is applied first, but that both keys are required for the process to work. Because
pair of keys is required, this approach is also called asymmetric cryptography.
In PKC, one of the keys is designated the public key and may be advertised as widely as the owner
wants. The other key is designated the private key and is never revealed to another party. It is
straight forward to send messages under this scheme.
The RSA algorithm is named after Ron Rivest, Adi Shamir and Len Adleman, who invented it in
1977. The RSA algorithm can be used for both public key encryption and digital signatures. Its
security is based on the difficulty of factoring large integers.
Algorithm
1. Generate two large random primes, P and Q, of approximately equal size.
2. Compute N = P x Q
3. Compute Z = (P-1) x (Q-1).
4. Choose an integer E, 1 < E < Z, such that GCD (E, Z) = 1
5. Compute the secret exponent D, 1 < D < Z, such that E x D 1 (mod Z)
06CSL77 - 37
6. The public key is (N, E) and the private key is (N, D).
Note that we don't have to calculate the full value of 13 to the power 7 here. We can make use of the
fact that a = bc mod n = (b mod n).(c mod n) mod n so we can break down a potentially large number into
its components and combine the results of easier, smaller calculations to calculate the final value.
Problem Statement
Write a program for congestion control using Leaky bucket algorithm.
Theory
The congesting control algorithms are basically divided into two groups: open loop and closed loop.
Open loop solutions attempt to solve the problem by good design, in essence, to make sure it does not
occur in the first place. Once the system is up and running, midcourse corrections are not made. Open
loop algorithms are further divided into ones that act at source versus ones that act at the destination.
In contrast, closed loop solutions are based on the concept of a feedback loop if there is any
congestion. Closed loop algorithms are also divided into two sub categories: explicit feedback and
implicit feedback. In explicit feedback algorithms, packets are sent back from the point of congestion
to warn the source. In implicit algorithm, the source deduces the existence of congestion by making
local observation, such as the time needed for acknowledgment to come back.
The presence of congestion means that the load is (temporarily) greater than the resources (in part
of the system) can handle. For subnets that use virtual circuits internally, these methods can be used
at the network layer.
Another open loop method to help manage congestion is forcing the packet to be transmitted at a
more predictable rate. This approach to congestion management is widely used in ATM networks
and is called traffic shaping.
The other method is the leaky bucket algorithm. Each host is connected to the network by an
interface containing a leaky bucket, that is, a finite internal queue. If a packet arrives at the queue
when it is full, the packet is discarded. In other words, if one or more process are already queued, the
new packet is unceremoniously discarded. This arrangement can be built into the hardware interface
or simulate d by the host operating system. In fact it is nothing other than a single server queuing
system with constant service time.
The host is allowed to put one packet per clock tick onto the network. This mechanism turns an
uneven flow of packet from the user process inside the host into an even flow of packet onto the
network, smoothing out bursts and greatly reducing the chances of congestion.
Viva Questions
PES 06CSL77 - 43
1. Install any Linux with kernel 2.6.9 (PCQ Linux 2004 is exception)
Recommended RED HAT LINUX ENTERPRISE EDITION
2. After installation Boot into Linux as root.
3. Copy the .tgz installation file of NCTUns that you got from college to the folder /bin/local
Please don't change any folder name in this folder that is created after unzipping the above file.
Dont even change the Case of the folder that is created
4. Now unzip the .tgz file by opening the terminal and changing the directory to /bin/local by the
command :-
[root@localhost ~] cd /bin/local
5. Now disable the Secure Linux option by running the following command :-
[root@localhost local] vi /etc/selinux/config
PESIT-BSC BE VII Sem CSE 10CSL77
Computer Networks Lab
6. From the directory /bin/local change the current working directory to NCTUns by following
command :-
[root@localhost local] cd NCTUns
7. Now from here execute the installation shell script that will do the required compilations and
settings for you:-
[root@localhost local] ./install.sh
During this part it will ask for installation of tunnel files. Please type yes and Enter to continue
8. If the installation is successful, it will display the success message at the end. Now restart your
computer. You will find a new entry in GRUB Menu "NCTUns kernel login". Boot into Linux
using this entry.
9. Log in as root. Now you have to modify any .bash_profile file
[root@localhost ~] vi .bash_profile
# .bash_profile
if [ -t ~/.bashrc ]; then
. ~/.bashrc
fi
PATH=$PATH:$HOME/bin:/usr/local/nctuns/bin
export LD_LIBRARY_PATH=/usr/local/nctuns/lib
export NCTUNSHOME=/usr/local/nctuns
export PATH
export USERNAME
10. Now save this file and log off and then log on again.
11. Create another user account.
12. before using simulator, please execute the following command
[root@localhost ~] iptables -F
13. Run the simulator using three commands where each command should be executed in different
window.
[root@localhost ~] dispatcher
[root@localhost ~] coordinator
[root@localhost ~] nctunsclient
14. In the NCTUns window Settings Dispatcher. Provide the username and password of the user
account u created in step 11. Then Click OK.