Data Communications

Data Communications - Assignment 2

Note: This assignment is still subject to change.

This assignment has two parts - you are required to complete both.

Part 1 of this assignment is worth 14% of your final mark for this subject, whilst part 2 is worth 6% of your final mark.

Part 1

For this part you are required to implement the receiver for a simple data link layer protocol known as Micronet. Your receiver will receive frames from the sender via standard input - each line of input constitutes a single frame. Each frame you send should be provided as a single line on standard output.

The frame format for Micronet is as follows:

Micronet Frame Format
Destination
Destination address (4 bytes)
Source
Source address (4 bytes)
Flag (F)
Flags - 0 = Data, 1 = ACK, 2 = NAK (1 byte)
Sequence Number (SN)
Sequence number of current frame (1 byte)
Type
Type of encapsulated network layer traffic (2 bytes) - the values used follow the DIXv2 standard, hence 0x0800
Data
Frame payload (variable length - 18 to 500 bytes)
CRC
A CRC-CCITT 16 bit checksum of the preceding frame (2 bytes)

Your receiver needs to process arriving frames as follows:

  1. Only process the frame if the destination address is either your address or the broadcast address. For the purposes of this assignment, your address is your 8 digit student number treated as a 4 byte hexidecimal value - ie. 11223344 is treated as 0x11223344. The broadcast address is the address where all bits are 1's (ie. 0xffffffff).
  2. If you are to process the frame, you first need to recalculate and validate the checksum. If the checksum is invalid then you need to respond with an appropriate NAK frame.
  3. If the checksum is valid then you need to check the value of the flag field in order to determine an appropriate response. Since you are only implementing a receiver, you should only respond to data frames.
  4. When you have received a valid data frame you need to respond with an appropriate acknowledgment frame.

You may use any programming language you choose, providing that your code can be run on a Linux/Unix system. Probably the most challenging part of this exercise will be implementing the CRC-CCITT 16-bit checksum algorithm and you might want to consider this when selecting your tools. The polynomial for this checksum is 0x1021 (or X^16 + X^12 + X^5 + 1) and the initial value of the CRC should be 0xffff. Some useful references might be found here and here. A Google search should turn up others!

The input and output format will be space separated hexidecimal byte values, for example (line wrapped for readability):

11 22 33 44 00 03 02 05 00 01 08 00 de ad be ef
00 11 22 33 44 55 66 77 88 99 aa bb cc dd 12 f8

This would be a data frame with sequence number 0x01, destined to 0x11223344 from 0x00030205.

Part 2

Construct a map of the La Trobe network, along the lines of the first diagram in lecture 21. This map should show the connections between the major campuses (Bendigo, Wodonga, Bundoora, etc.) and the connection to the "outside world". You should show "all" IP addresses - on "both sides of the router" - where you can discover them. Your map must not show every subnet. If you find just one computer and one subnet on each campus, that will be sufficient.

Use Unix tools like traceroute, ping -R and possibly netstat -r, as well as hints from domain names to label your map (have a look at the Unix manual pages to find out what these commands do and how you fly them. For example, try typing man traceroute at a Unix terminal.

Other possibly useful sources of information are:

  • This map, published in 2002, most likely to be highly outdated and inaccurate.
  • The primary La Trobe website, which identifies the University's campuses.
  • Check out http://netflow.latrobe.edu.au (only accessible from within the university network). The Faculty Summaries page gives away much more information about the network structure than it should. This should allow you to find a subnet (or two) at each remote campus. Then have a look at the Monthly Web Statistics. This should allow you to identify individual host computers.
  • Telstra provide a traceroute facility accessible through the web. You will find it rather handy to trace paths coming into the university. It's located at http://www.telstra.net.au/cgi-bin/trace

There's no need to look "further out" than the Victorian Regional Network (VRN) or AARNet. We're not interested in the internal details of the campuses, except where it forms part of the connection to other campuses. The apparent internal structure, if Bendigo is anything to go by, won't be interesting at all: just one router and a lot of radiating subnets (because of the use of VLANs).

Administrivia

Your submission should consist of a printed copy of your source code, along with your network map. An electronic copy of your source code must also be made available, either on disk or via the student web server (redgum).

Your submission must adhere to the requirements of the La Trobe University, Assignment Guide. Specifically, you must use a folder/binder and ensure that you include a printed and personally signed Statement of Authorship. You should also review the submission requirements as detailed in the subject outline.

Also, a reminder regarding La Trobe University's policy on Academic Misconduct and Plagarism. The work submitted must be your own.

Late submissions will not be accepted, unless a prior arrangement has been made or exceptional circumstances apply. In the case of exceptional circumstances, individual extensions may be granted after application using a Special Consideration form. If the necessity for an extension is based on medical grounds then a medical certificate is required. If the basis is personal circumstances, then the appropriate section of the Special Consideration form should be filled out.

Due Date: 5pm, Wednesday 28th October 2008

Date: 23/09/2008

Lecturer: Joel Sing