4003-541-70/4005-741-70
Data Communications and Networks II
Graduate Programming Project 3
Prof. Alan Kaminsky -- Spring Quarter 2006
Rochester Institute of Technology -- Department of Computer Science
Overview
Software Requirements
Report
Submission Requirements
Grading Criteria
Late Projects
Plagiarism
Overview
At the headquarters of the Latest Rage Corporation,
the CEO has decided to ditch their internal telephone system --
"It's soooo second millennium," she says --
and replace it with Voice Over IP (VoIP) technology.
Each employee will have a headset connected to their PC
and will use a PC application to make calls
to other employees.
During a call,
the PC will digitize the employee's voice signal,
store the digitized samples in UDP packets,
and send the packets through the data network
to the other employee's PC,
which will convert the packets back to audio;
the same thing will be happening simultaneously
in the reverse direction.
Of course,
the employees will continue to use their PCs
to access the corporate web server over the same data network
while talking on the "phone."
The data network is built out of nine-port routers
connected in a tree topology.
Each router has eight connections to child nodes
and one connection to a parent node.
Each connection is a 100 megabit per second
full duplex Ethernet link.
At the leaves of the tree are the employee's PCs.
At the root of the tree is the corporate web server.
As the company adds employees,
leaf nodes fill in the lowest level of the tree from left to right,
with additional routers added at higher levels as necessary.
Here is an example with N = 20 employees:
Each employee's PC generates web server request packets
that are exponentially distributed
with a mean arrival rate of λreq
requests per second.
Each web server request consists of
an Sreq-byte TCP payload,
20-byte TCP header,
20-byte IP header,
and 38-byte Ethernet overhead.
(The Ethernet overhead consists of a 12-byte inter-frame gap,
8-byte preamble, and 18-byte frame header.)
When a request packet arrives at the web server,
the web server sends back a reply packet
that consists of a Srpl TCP payload,
20-byte TCP header,
20-byte IP header,
and 38-byte Ethernet overhead.
If a request packet is dropped somewhere in the network,
the web server of course sends back no reply packet,
and the employee's PC does not retry the request.
(We will ignore packets sent to set up and tear down connections
as well as acknowledgment packets.)
Each employee uses the phone in the following pattern.
The employee waits for an idle time between calls.
The idle time is uniformly distributed
between Tidle1
and Tidle2 seconds.
The employee then places a call to a randomly chosen recipient.
If the recipient is busy in another call,
the call terminates immediately.
Otherwise, the call lasts for a certain amount of time.
The call time is uniformly distributed
between Tcall1
and Tcall2 seconds.
Then the call terminates,
and the two employees both begin their next idle periods.
When a call is in progress,
each employee sends voice packets to the other employee.
Each voice packet consists of a 400-byte UDP payload,
8-byte UDP header,
20-byte IP header,
and 38-byte Ethernet overhead.
The voice packets are generated at a constant rate
of 20 packets per second,
or exactly 50 milliseconds between the start of one packet
and the start of the next packet.
Each packet's payload contains 50 milliseconds' worth of voice samples
digitized at a rate of 64,000 bits per second.
(We will ignore packets sent to set up and tear down calls.)
The VoIP application must receive incoming voice packets
within strict timing constraints.
The application can tolerate at most a 100-millisecond delay
in delivering a voice packet.
If a voice packet is not received
within 100 milliseconds after it was sent,
the VoIP application inserts 50 milliseconds of silence
into the received audio in place of the voice packet;
it's better to hear a short "blip" in the audio
than to hear audio delayed more than 100 milliseconds.
Should the VoIP application receive a voice packet
more than 100 milliseconds after it was sent,
the VoIP application drops the voice packet.
In each router,
each outgoing queue has a B-byte buffer
for storing outgoing packets.
Note that the buffer size is specified in bytes, not packets.
If there are not enough free bytes in the buffer
to store an incoming packet in its entirety,
the router drops the incoming packet.
Only the IP header, TCP or UDP header, and payload of each packet
are stored in the buffer;
the Ethernet header is generated
by the Ethernet interface hardware.
(However, the Ethernet overhead must be taken into account
when deciding how long it will take to transmit a packet.)
Write a discrete event simulation program
to simulate the Latest Rage Corporation's network.
The program takes the following inputs from the command line:
-
N = Number of employees
-
λreq = Web server request arrival rate (requests per second) for each employee
-
Sreq = Web server request payload size (bytes)
-
Srpl = Web server reply payload size (bytes)
-
Tidle1 = Idle time lower bound (seconds) for each employee
-
Tidle2 = Idle time upper bound (seconds) for each employee
-
Tcall1 = Call time lower bound (seconds) for each call
-
Tcall2 = Call time upper bound (seconds) for each call
-
B = Buffer size (bytes) for each outgoing queue in each router
-
t = Total simulation time
-
seed = Pseudorandom number generator seed
The program simulates the network for t seconds of simulated time
and prints the following outputs:
-
Mean delay time for web server request packets
-
Standard error of delay time for web server request packets
-
Fraction of web server request packets dropped
-
Mean delay time for web server reply packets
-
Standard error of delay time for web server reply packets
-
Fraction of web server reply packets dropped
-
Mean delay time for voice packets
-
Standard error of delay time for voice packets
-
Fraction of voice packets dropped by a router
-
Fraction of voice packets dropped by a VoIP application
Software Requirements
I am not going to state specific software requirements for this project.
The program must simulate the Latest Rage Corporation's network
as described above.
Report
We are interested in how many employees
the Latest Rage Corporation's network can support
for simultaneous data and voice traffic.
Use the simulation program
to explore the network's operation
under a reasonable range of operating conditions (parameter settings).
For each group of parameter settings,
determine the network's performance
as the number of employees N scales up.
As a starting point,
try the following parameter settings:
-
λreq = 0.2 requests per second
-
Sreq = 80 bytes
-
Srpl = 1460 bytes
-
Tidle1 = 60 seconds
-
Tidle2 = 180 seconds
-
Tcall1 = 60 seconds
-
Tcall2 = 180 seconds
-
B = 1 megabyte
We are specifically interested
in how many employees the network can support
before call quality becomes unacceptable.
Unacceptable call quality is defined to be
when a fraction of 0.001 or more
of the voice packets are dropped,
either by the routers or by the VoIP applications.
For each group of parameter settings,
determine the number of employees the network can support
before call quality becomes unacceptable.
Write a report of your findings.
Include a concluding section
describing what you learned from this project.
Submit your report as a PDF file.
Submission Requirements
Your project submission will consist of a Java archive (JAR) file
containing all the Java source files for your project
as well as the PDF file with your report.
-
Each Java source file name must end in ".java".
-
Each class or interface
must include a Javadoc comment
describing the overall class or interface.
-
Each method within each class or interface
must include a Javadoc comment
describing the overall method,
the arguments if any,
the return value if any,
and the exceptions thrown if any.
See my Java source files which we studied in class
for the style of Javadoc comments I'm looking for.
Put all the source files and the PDF file into a JAR file
named "<username>.jar",
replacing <username> with the user name
from your Computer Science Department account.
The command is:
jar cvf <username>.jar *.java *.pdf
If your project used classes from the Computer Science Course Library
without modifications,
you do not need to include the source files
for these classes in your submission.
If your project used classes from the Computer Science Course Library
with modifications,
you do need to include the source files
for these classes in your submission.
Send your JAR file to me by email at
ark@cs.rit.edu.
Include your full name and your computer account name
in the email message,
and include the JAR file as an attachment.
When I get your email message,
I will extract the contents of your JAR file
into a directory.
I will set my Java class path
to include the following directories:
the directory where I extracted your files,
and the Computer Science Course Library directory.
I will compile all the Java source files in your submission
using the JDK 1.5.0 compiler.
I will then send you a reply message
acknowledging I received your project
and stating whether I was able to compile all the source files.
If you have not received a reply
within one business day (i.e., not counting weekends),
please contact me.
Your project is not successfully submitted
until I have sent you an acknowledgment
stating I was able to compile all the source files.
The submission deadline is Tuesday, May 16, 2006 at 11:59pm.
The date/time at which your email message arrives in my inbox
(not the time when I actually read the message,
which will be some time later than when it arrives in my inbox)
will determine whether your project meets the deadline.
If you submit your project before the deadline,
but I do not accept it
(e.g. I can't compile all the source files),
and you cannot or do not submit your project
again before the deadline,
the project will be late (see below).
I strongly advise you to submit the project
several days before the deadline,
so there will be time to deal with any problems
that may arise in the submission process.
Grading Criteria
50% of your project grade
will be based on the design of your project
as documented in the Javadoc
and as implemented in the source code.
Your project should:
- Be designed using object oriented design principles.
- Make use of reusable software components where appropriate.
- Be documented using proper Javadoc style as described above.
- Correctly implement the discrete event simulation.
50% of your project grade
will be based on the writeup of your findings.
Late Projects
See the Course Policies for my
policy on extensions.
I will not accept a late programming project
unless you arrange with me for an extension.
A late programming project will receive a grade of 0.
Plagiarism
See the Course Policies for my
policy on plagiarism.
You may use any resources you wish to do the programming project,
including resources discussed in class
and resources you find on your own.
You may discuss the programming project at a general level
with others in the class.
However, the programming project you turn in
must be entirely your own work.
You are not allowed to collaborate
with anyone else on the programming project.
You are not allowed to use
any current or past student's work
in any way when working on your programming project.
I will not tolerate plagiarism.
If in my judgment the programming project is not entirely your own work,
you will get a grade of 0 for the programming project.
I will also place a report of the plagiarism incident
in your permanent file
in the Computer Science Department office.
Repeated plagiarism incidents will result in disciplinary action
in accordance with Computer Science Department policy and RIT policy.
There are only two exceptions to the prohibition on plagiarism:
-
You may reuse without modification
a source file from the
Computer Science Course Library.
-
You may take a source file from the
Computer Science Course Library
and add your own modifications,
provided you state that you have done so
and give credit to the original author.
|
Ad Hoc Networks
|
|
•
|
|
4003-543-01/4005-742-01
|
|
•
|
|
Spring Quarter 2007
|
|
Course Page
|
|
Alan Kaminsky
|
|
•
|
|
Department of Computer Science
|
|
•
|
|
Rochester Institute of Technology
|
|
•
|
|
4486 +
2220 =
6706
|
|
Home Page
|
Copyright © 2006 Alan Kaminsky.
All rights reserved.
Last updated 30-Apr-2006.
Please send comments to ark@cs.rit.edu.
|