Formalities
This assignment must be completed individually. The submission must be approved prior to submission of the Home Exam 1. To pass the submission must meet the requirements that are documented here, and you must be able to explain every aspect of your solution.
Prerequisites
Having completed an introductory course on operating systems and networks, including basic C programming, such as IN2140 (or equivalent), is a mandatory prerequisite to taking this course. Should you be lacking such experience for whatever reason, it is your own responsibility to catch up to the competence level we expect our students to have. Make good use of the group and plenary sessions, we will review some relevant concepts there.
Task
The main focus of the task is to build and test a very simple network stack. We will use a protocol called MIP, which stands for “Minimal Interconnection Protocol”. MIP is a minimal network layer protocol, created for IN3230, that has only the bare necessities in the header and avoids overhead, making it quick to process and minimizing latency.
The programs you write will run on a virtual network managed by mininet inside a virtual machine. You will have to write three programs: a MIP daemon, a ping server and a ping client. These are described in more details below.
Finally, it is important to document your work, so you will be writing a brief design document. You will also need to analyze some design choices we have made.
MIP daemon
The MIP daemon implements the network layer in our stack. A single instance of the daemon is permanently active on every host participating in the network.
MIP daemon components
The MIP daemon is comprised of several components that implement different aspects required to provide the MIP network layer's services:
- The interface with the layer above. Conventionally this would be the transport layer, but for the time being we will connect applications directly above the MIP layer. This component is responsible for encapsulating the payload from the upper layer as a Service Data Unit (SDU) in a MIP datagram and populating the MIP header fields. The entirety of the MIP datagram, that is the headers combined with the SDU, is referred to as the MIP Protocol Data Unit (PDU).
- The interface with the layer below, in this case the link layer. We will only concern ourselves with interfacing with an Ethernet link layer. This component must take care of framing the MIP PDU as an Ethernet frame.
- A MIP to physical address mapping service, the MIP Address Resolution Protocol (MIP-ARP). Conceptually this is a protocol which resides both directly above the network layer (being an application of sorts) as well as on the interface between MIP and the link layer (because it needs access to Ethernet address). Because of this somewhat odd layering placement and as it is so tightly integrated with the network layer we will implement it directly in the MIP daemon.
Combined, these three components will enable the MIP daemon to provide a basic point-to-point networking service. In other wo