本次作业是一个C++计算机网络相关的C++代写assignment
This project is designed for you to:
• Learn to build a simple router.
• To be familiar with IPv4, ICMP and ARP.
In this project, you will be writing a simple router with a static routing table. Your router will receive raw
Ethernet frames and process them just like a real router: forward them to the correct outgoing interface,
create new frames, etc. The starter code will provide the framework to receive Ethernet frames; your job
is to create the forwarding logic.
You are allowed to use some high-level abstractions, including C++11 extensions, for parts that are not
directly related to networking, such as string parsing, multi-threading, etc.
In the following contents, you will see
• Detailed description of this porject in Section 2
• Guidelines to setup the environment in Section 3
• Overview of the starter code in Section 4
• Some helpful hints in Sections 5
• How to submit your code in Section 6
• Grading criteria in Section 7
2 PROJECT DESCRIPTION
There are four main parts in this assignment:
• Handle Ethernet frames
• Handle ARP packets
• Handle IPv4 packets
• Handle ICMP packets
This assignment runs on top of Mininet which was built at Stanford. Mininet allows you to emulate a
network topology on a single machine. It provides the needed isolation between the emulated nodes so
that your router node can process and forward real Ethernet frames between the hosts like a real router.
You dont have to know how Mininet works to complete this assignment, but if youre curious, you can
learn more information about Mininet on its official website (http://mininet.org/).
Your router will route real packets between emulated hosts in a single-router topology. The project envi
ronment and the starter code has the following default topology:
NOTE: Do not hardcode any IP addresses, network, or interface information. We will be testing your
code on other single-router topologies with different number of servers and clients, and different IP and
network addresses. So it is STRONGLY RECOMMENDED that you test your implementations under dif
ferent IP addresses and routing tables (by modifying the IP_CONFIG and RTABLE file respectively).
If your router is functioning correctly, all of the following operations should work:
• ping from the client to any of the routers interfaces:
mininet> cli ent ping 192.168.2.1
. . .
mininet> cli ent ping 172.64.3.1
. . .
mininet> cli ent ping 10.0.1.1
. . .
• ping from the client to any of the app servers:
mininet> cli ent ping server1 # or c li ent ping 192.168.2.2
. . .
mininet> cli ent ping server2 # or c li ent ping 172.64.3.10
. . .
• traceroute from the client to any of the routers interfaces:
mininet> cli ent traceroute 192.168.2.1
. . .
mininet> cli ent traceroute 172.64.3.1
. . .
mininet> cli ent traceroute 10.0.1.1
. . .
• Tracerouting from the client to any of the app servers:
mininet> cli ent traceroute server1
. . .
mininet> cli ent traceroute server2
. . .
• Downloading files from http-server by wget command
mininet> cli ent wget http ://192.168.2.2/ < filename>
. . .
mininet> cli ent wget http ://172.64.3.10/ < filename>
. . .