Simulate extremely limited forms of IP and ICMP.
You will simulate 6 computers, 4 hosts and 2 routers, that are connected in an imaginary network with the topology as shown below. Each machine runs one process to simulate its IP/ICMP layer and one process per link layer attachment. In addition, each host runs an application process. Therefore, there will be a total of 20 processes, 3 per host and 4 per router, as indicated by the light blue boxes:
In order to mimic real networking software, your modules must be separate processes (in order not to share state) and can talk to each other ONLY via the layer to-layer interfaces; e.g., you are forbidden from having a APP process talk directly to a link process. At routers, the IP/ICMP process interfaces with each of the three link processes, but the link processes do not interface with each other.