1) The student had to make several modifications to their program to get it functioning properly, including changing IP addresses and adding static routes.
2) The original program did not forward packets between hosts because the IP addressing and network topology did not allow communication between hosts.
3) The line 'r3.cmd('sysctl -w net.ipv4.ip_forward=1')' is required to enable packet forwarding on the router for communication between network interfaces.
1) The student had to make several modifications to their program to get it functioning properly, including changing IP addresses and adding static routes.
2) The original program did not forward packets between hosts because the IP addressing and network topology did not allow communication between hosts.
3) The line 'r3.cmd('sysctl -w net.ipv4.ip_forward=1')' is required to enable packet forwarding on the router for communication between network interfaces.
1) The student had to make several modifications to their program to get it functioning properly, including changing IP addresses and adding static routes.
2) The original program did not forward packets between hosts because the IP addressing and network topology did not allow communication between hosts.
3) The line 'r3.cmd('sysctl -w net.ipv4.ip_forward=1')' is required to enable packet forwarding on the router for communication between network interfaces.
#3: Successful pingall at the mininet> prompt #4: A list of lines that were changed and why 1. Moved the two lines instantiating switches s1 and s2 in front of the legacy router instantiations to get rid of initial build errors for myNetwork() 2. Changed the IP address for r5 to r5 = net.addHost('r5', cls=Node, ip='10.0.12.1/24') to get pings and IP scheme to work correctly 3. Changed the IP address for r4 to r4 =net.addHost('r4', cls=Node, ip='192.168.1.2/30') to get pings and IP scheme to work correctly 4. Changed the IP address for r3 to r3 = net.addHost('r3', cls=Node, ip='10.0.10.1/24')) to get pings and IP scheme to work correctly 5. IP address was changed for h1 to 10.0.10.100 in order to align with assignment rules 6. IP address was changed for h2 to 10.0.10.200 in order to align with assignment rules 7. IP address was changed for h3 to 10.0.12.100 in order to align with assignment rules 8. IP address was changed for h4 to 10.0.12.200 in order to align with assignment rules 9. Modified PA4_chat_client_thread.py to get the client to stay open to receive messages 10. Changed the default routes for h1-h4 because a defaultRoute of None leds to an error in pingall. H1 and h2 got the ip for r3 and h3 and h4 got the ip for h5 11. For the add link on r3, r4, and r5 routers - we added intfNames and ip params in order to get the network connectivity correct 12. We added static routes for r3. r4, and r5. This was an addition because there needs to be six routers so that all the hosts can ping each other.
#5: Answers to questions
a. What were any interesting findings and lessons learned? This project had a lot of great challenges and lessons learned. We learned a lot about network topology and TSL. It was challenging to get the chat client program working, but the challenge helped us to grow our skills. We learned that we had to work on things in a very specific order. Adding things in early caused unexpected errors to pop up in the program. It was good practice for us to see how to implement static routes. We tried to implement it at first by adding r0, r1, r2. That was not the correct way to approach the code, even though we were getting around 73% dropped. What we did instead was adding them like 3.cmd('ip route add 10.0.12.0/24 via 192.168.1.2 dev r3-eth9'), etc. We learned a lot about the web chat server and how to get it implemented. Programming during this project to run a TLS-enabled simple web server helped us challenge ourselves. b. Why didn’t the original program forward packets between the hosts? The original program was not fully functional, so we had to make a handful of modifications. The response/output was not being received. There were build errors that were stopping the program from forwarding packets. We needed to change the IP addressing to allow forwarding to occur. The IP addresses and hosts had no way to communicate with each other. c. Is the line ‘ r3.cmd('sysctl -w net.ipv4.ip_forward=1') ’ required? This particular line is required for this programming project. This is needed in order for the packets to communicate and be forwarded correctly on the router. It allows the network interfaces to communicate freely as well. d. Intentionally break your working program, e.g.: change a subnet length, IP address, or default route for a host. Explain why your change caused the network to break. For this step, we changed our working program by changing an IP address. We had 0% dropped and all packets received before. Changing one of the IP addresses caused our program to have great issues with pingall. The IP address for r4 was changed to r4 = net.addHost('r4', cls=Node, ip='192.168.1.29/30') from r4 = net.addHost('r4', cls=Node, ip='192.168.1.2/30'). This causes 15/42 and 64% to be dropped. This is because the IP addresses are not in the same network as the other IP addresses. It is not communicating, and so we experience great packet loss. H1 can ping h2 and h4 can ping h3. Howvereb, communication has been lost so now h4 can not ping h1, for example. The host networks are no longer visible to each other.
#6: Screen capture of a successful chat session between the two
chat clients (15 points) and a screen capture of a Wireshark trace of the communication between a chat client and the chat server
#7: Screen capture of the successful wget (or curl) of the web server index file
#8: Screenshot of both decrypted server (web and chat)