The assignments can be done in groups, but each member individually returns the tasks for evaluation and lists all group members.
Your answers to all tasks are to be placed on one page on the Internet. The page may have links e.g. to files or pictures or source code (at e.g. YouSource) that are part of the answer. List possible group members on the page. An example of a page for returning your answers can be found here (in Finnish). It includes also screen captures to show what are required for the answers.
Each returned screen capture must show the students name and if done in groups then the names of all members.
Filtered packet capture means that all traffic that is not generated by the current task must be filtered out. Filtering can be done with a different program (e.g. Wireshark) if you cannot, don't remember or don't know how to filter with the program you used for capturing the traffic (e.g. RawCap).
In the programming part implementing the Multicast chat client you can choose the programming language freely
Things influencing the evaluation (not limited to these)Programming 40 points
RTP/RSTP 10 points
Analysing Multicast traffic 10 points
Multicast chat client 20 points
Implement your own client that is able to join and leave the multicast chat group and send and receive messages using the MulticastChat protocol discovered earlier
Evaluation is based on the following (return your code)
Routing 40 points
PSimulator2 15 points
Yourname*.xml
files, according to the instructions below.
java -jar psimulator2_frontend.jar
and create a network like in this topology.YournameTopology.xml
filejava -jar psimulator2_backend.jar YournameTopology.xml
(NOTE: seems Backend does not work in Java 8). Frontend: change to simulation and connect to the backend server.
Make a telnet
connection to the Cisco router and start up the interfaces and add static routes to the subnets you defined. Hint: enable -> configure terminal -> interface FastEthernet 0/x -> no shutdown -> (end/exit) -> ip route x.x.x.x (network) z.z.z.z (mask) y.y.y.y (next hop address)
. Note: enable IP forwarding on Linux routers # editor /proc/sys/net/ipv4/ip_forward
and change the 0 to 1.ping pc.pc.pc.pc
). Stop the capture and save events to file named YournameEvents1.xml
, return the file.telnet
connection to the Linux router that is on the opposite side of the Cisco router than the PC/Notebook you pinged earlier. From the Linux router try to ping (ping pc.pc.pc.pc -c 4
) the same PC/Notebook than before, and it should fail. Add a default route to the Linux router that routes packets to the Cisco router.YournameEvents2.xml
, return the file.ping pc.pc.pc.pc -c 1
). Capture all ping messages. Save the events to a file named YournameEvents3.xml
, return the file.NetKit 15 points
Cisco router 10 points
ns-3 network simulator 40 points
The goal of ns-3 assignments is to get familiar with a network simulator and to learn simulation of simple networks and protocols. As support for the ns-3 assignments the ns-3 tutorial is used. Note that the latest ns-3 version might give little different outputs for the scripts than the examples in the tutorial. Remember, you can find example screen captures of answers from here (in Finnish) that also guide you to what you should return.
ns-3 assignment 1 10 points
gcc, g++ and python
)
apt-get install gcc g++ python
Hello Simulator
and take a screen capture (Xubuntu: e.g. Applications -> Accessories -> Screenshot).
$ ./waf --run "scratch/myfirst
--ns3::PointToPointNetDevice::DataRate=5Mbps
--ns3::PointToPointChannel::Delay=24ms
--ns3::UdpEchoClient::MaxPackets=11"
but change some values. The Delay should be the day (DD) of your birth date, MaxPackets should be the month (MM) of your birth date. Above you see example values of the lecturer. Remember to comment out the lines for which you give parameters on command line. If necessary increase the duration of the simulation (or decrease packet interval) so that all MM packets are echoed during the simulation. Take a screen capture which shows as much as possible of the simulation output.tcpdump
program.node 0 node 1 node 2 +----------------+ +----------------+ +----------------+ | Echo client *2 | | Echo Server | | Echo Server | +----------------+ +----------------+ +----------------+ | IP address | | IP address * 2 | | IP address | +----------------+ +----------------+ +----------------+ | point-to-point | |point-to-point*2| | point-to-point | +----------------+ +----------------+ +----------------+ | | | | +--------------------+ +--------------------+ MM Mbps, DD ms MM Mbps, DD ms
Ipv4GlobalRoutingHelper::PopulateRoutingTables();
Add the line above before the line
Simulator::Run()
ns-3 assignment 2 10 points
second.cc
(i.e. no wireless network), so that there is an arbitrary number of nodes in the csma
bus, i.e. run the command
$ ./waf --run "scratch/mysecond --nCsma=100"
where the value 100 is placed by a number of your choosing. Also change the default IP addresses used by the script to something different of your choice. Return a screen capture where you have printed on screen the pcap file contents with tcpdump
similarly as in the tutorial (change 100 and 101 according to your number)
tcpdump -nn -tt -r second-100-0.pcap
tcpdump -nn -tt -r second-101-0.pcap
csma
bus to the topology (each having at least 5 nodes), one csma
bus is connected to node 0 and the other is connected to an arbitrary device on the original csma
bus. Move the UdpEchoClient
of the original topology to either of the new csma
bus and UdpEchoServer
to the other new bus. Run the script as previously and return a screen capture which shows printed on screen the promiscuous mode tcpdump
outputs of each bus.csma
bus on an arbitrary device a PacketSink
application (see PacketSinkHelper
) which is used to receive UDP packets. Start the PacketSink
application at simulation time 0. Set for the PacketSink
LOG_LEVEL_ALL
. Change the simulation so that EchoClient
sends packets to the PacketSink
(not the echo server). run the script. Return a screen capture of the script output printed on screen or the modified xxx.cc
file if your script has errors that you cannot fix.csma
bus (i.e. not the one that has the PacketSink
application) to an arbitrary node an OnOffApplication
(see OnOffHelper
), that sends UDP data packets to the PacketSink
application. Start the OnOffApplication
two seconds after start of simulation. If you wish, you can now remove EchoClient
and EchoServer
and also you can set PacketSink
not to print events on screen. Add PCAP tracer
to an arbitrary device on either of the new bus that captures packets in promiscuous
mode. Return the pcap file or the modified script xxx.cc
file if your script has errors that you cannot fix.ns-3 assignment 3 20 points
OnOffApplication
) starts transmitting at time 10 seconds and stops at time 15 seconds. Set the transmission rate to value 5 Mbps and packet size to value 1480 bytes (the values must be set before the application is installed to the node).PacketSink
) is placed in the same network (bus) with the UDP PacketSink
applicationOnOffApplication
.MyApp
class, that you can "borrow" from the tutorial fifth.cc
script. For the application you must create a TCP socket
Ptr<Socket> ns3TcpSocket = Socket::CreateSocket (xxx.Get(n), TcpSocketFactory::GetTypeId ());
where n
is the n
th device on the csma
bus xxx
, i.e. the device where you installed the TCP source.Ptr<MyApp> app = CreateObject<MyApp> ();
app->Setup (ns3TcpSocket, sinkAddress, 1440, 100000, DataRate ("10Mbps"));
sinkAddress
Is the address of the TCP destination (including the IP address and the port number)
Address sinkAddress (InetSocketAddress(yyy.GetAddress (m), sinkPort));
where m
is the m
th device on the csma
bus yyy
, i.e. the device where you installed the TCP destination.
xxx.Get(n)->AddApplication (app);
fifth.cc
script example by adding the line
ns3TcpSocket->TraceConnectWithoutContext ("CongestionWindow", MakeCallback (&CwndChange));
right after the line where the TCP socket is created and setting the output to a file > cwnd.dat 2>&1
.
Config::SetDefault ("ns3::TcpSocket::SegmentSize", UintegerValue(1440));
Config::SetDefault("ns3::TcpL4Protocol::SocketType",TypeIdValue(TypeId::LookupByName("ns3::TcpTahoe")));
LogComponentEnable
lines and PCAP traces (not mentioned in the instructions of this assignment).
cwnd.dat
file and remove the waf build related lines from the start of the file. If your script has errors and is not functioning (or you are unable to make the figures asked below, see examples here) then return the non-functioning .cc
script file, which is evaluated based on how much of the above tasks are implemented correctly. If your script runs okay then you only need to return the figures described below (and do the verbal evaluation).gnuplot
if needed and make a YourNameTahoe.png
file which shows the behaviour of the congestion window. Also set your name as the title of the figure. Return the picture.YourNameReno.png