[[PageOutline]] = GENI-Based Classroom Exercises = This page lists exercises that help students develop a deeper understanding of networking concepts taught in the classroom by running experiments on GENI. Instructors may also want to look at the [wiki:GENIExperimenter/Tutorials tutorials] for experimenters as many of them can be easily adapted for use as student labs/exercises. == 1. Getting Started with GENI == || '''Exercise''' || '''Objective''' || '''Type''' || '''Duration''' || '''Resources''' || '''Link to Exercise''' || '''Contact''' || || Lab Zero: My first GENI Experiment || Verify accounts and environment are set up correctly; familiarize students with the process of running an experiment on GENI ''(highly recommended as a first lab that students do in the class with help of an instructor)'' || Tutorial (preferably Instructor-led) || 1 hour || 2 VMs (EG or IG) || [wiki:GENIExperimenter/Tutorials/GettingStarted_PartI/ForInstructors Link] || [mailto:tutorials@geni.net Experimenter support], GENI Project Office || || Lab One: Understanding the AM API and Omni || Understand how the GENI reservation process works, get familiar with the GENI Aggregate Manager API (GENI AM API), learn to use Omni. || Tutorial (preferably Instructor-led) || 1 hour || 4 VMs (IG) || [wiki:GENIExperimenter/Tutorials/GettingStarted_PartII_ccn/ForInstructors Link] || [mailto:tutorials@geni.net Experimenter support], GENI Project Office || || GENI Desktop Basics || Learn the basics of instrumenting a slice and viewing measurement data using the GENI Desktop. '''The GENI Desktop is used by some of the exercises listed below.'''|| Self-guided tutorial || 1 hour || 2 VMs (IG) || [http://www.cs.unc.edu/Research/geni/geniEdu/01-Instrumentation.html Link] || [mailto:aikat@cs.unc.edu Jay Aikat], University of North Carolina, Chapel Hill || == 2. Networking Basics == || '''Exercise''' || '''Objective''' || '''Type''' || '''Difficulty''' || '''Resources''' || '''Link to Exercise''' || '''Contact''' || || IPv4 Routing || Understand how IPv4 forwarding works and how to configure static routes || Assignment || Easy || 3 VMs (EG) || [wiki:GENIEducation/SampleAssignments/IPRouting/Procedure Link] || [mailto:mzink@cas.umass.edu Mike Zink], University of Massachusetts, Amherst || || TCP Congestion Control || Give students experience generating and analyzing TCP flows. Students will use iperf to create a flow and view the sawtooth behavior. A second flow will then be introduced to show how TCP flows share a link. || Assignment or 20-min in-class demo || !Easy/Moderate || 2 VMs (IG). Uses the GENI Desktop to visualize flows. || [http://www.cs.unc.edu/Research/geni/geniEdu/03-TcpTraffic.html Link] || [mailto:aikat@cs.unc.edu Jay Aikat], University of North Carolina, Chapel Hill || || Effect of RTT and Window Size on TCP Throughput || Experiment with how RTT and TCP window size affect TCP throughput. Learn how to adjust the RTT of a TCP connection by adding delay, as well as how to adjust the window size of an iperf TCP flow || Assignment or 20-min in-class demo || Moderate || 2 VMs (IG). Uses the GENI Desktop to visualize flows. || [http://www.cs.unc.edu/Research/geni/geniEdu/04-TcpDelayWinSize.html Link] || [mailto:aikat@cs.unc.edu Jay Aikat], University of North Carolina, Chapel Hill || || Exploring Queues || Explore the effects of queues on packet loss and delay using UDP traffic. Use iperf to send UDP traffic from a source to a destination through an intermediate bottleneck router which will develop a queue. || Assignment or 15-min in-class demo || Easy/moderate || 3 VMs (IG) || [http://www.cs.unc.edu/Research/geni/geniEdu/09-queues.html Link] || [mailto:aikat@cs.unc.edu Jay Aikat], University of North Carolina, Chapel Hill || || OSPF || Experiment with the OSPF routing protcol, observing how it updates it's neighbor table, and how it dynamically routes around downed links. || Assignment or in-class demo || Easy || 4 VMs (IG) || [http://www.cs.unc.edu/Research/geni/geniEdu/06-Ospf.html Link] || [mailto:aikat@cs.unc.edu Jay Aikat], University of North Carolina, Chapel Hill || || Traffic Analysis || Learn to use tcpdump to capture and analyze network traffic || Assignment || Moderate || 2 VMs (IG). Uses the GENI Desktop to visualize flows. || [http://www.cs.unc.edu/Research/geni/geniEdu/05-TrafficAnalysis.html Link] || [mailto:aikat@cs.unc.edu Jay Aikat], University of North Carolina, Chapel Hill || || Learning Switch || Implement the learning switch capability used by Ethernet switches. Develop a five-port learning switch using a software-based OpenFlow switch. Uses the !LabWiki tool. || Assignment || Moderate/advanced || 6 VMs || [mailto:mzink@cas.umass.edu Contact Mike Zink, U. of Mass] || [mailto:mzink@cas.umass.edu Mike Zink], University of Massachusetts, Amherst || == 3. Advanced Networking == || '''Exercise''' || '''Objective''' || '''Type''' || '''Difficulty''' || '''Resources''' || '''Link to Exercise''' || '''Contact''' || || Content Centric Networking (CCN) || Run an application over a CCN protocol stack and observe how content is fetched. Optional: Use GENI Desktop to view traffic flows in the CCN || Assignment || Easy/moderate || 4 VMs (IG) || [wiki:GENIExperimenter/Tutorials/jacks/GettingStarted_PartII_ccn/Procedure Link] || [mailto:tutorials@geni.net Experimenter support], GENI Project Office || || Network Function Virtualization: !OpenFlow based Firewall || Introduce NFV concepts by making an !OpenFlow controlled OVS switch function as a network firewall. Much of the code for the Ryu-based controller is provided. Uses the same topology as the !OpenFlow-based NAT exercise. || Assignment || Moderate/advanced || 4 VMs (IG) || [wiki:GENIExperimenter/Tutorials/OpenFlowNFVFirewall Link] || [mailto:tutorials@geni.net Experimenter support], GENI Project Office || || Network Function Virtualization: !OpenFlow based NAT || Introduce NFV concepts by making an !OpenFlow controlled OVS switch function as a network firewall. Much of the code for the Ryu-based controller is provided. Uses the same topology as the !OpenFlow-based Firewall exercise. || Assignment || Moderate/advanced || 4 VMs (IG) || [wiki:GENIExperimenter/Tutorials/OpenFlowNFVNAT Link] || [mailto:tutorials@geni.net Experimenter support], GENI Project Office || || Traffic Generation || Learn principles of traffic generation using Tmix, a tool for generating realistic network traffic || Assignment or 15-min in-class demo || !Easy/Moderate || 2 VMs (IG) || [http://www.cs.unc.edu/Research/geni/geniEdu/08-TrafficGen.html Link] || [mailto:aikat@cs.unc.edu Jay Aikat], University of North Carolina, Chapel Hill || || !OpenFlow based Load Balancing Router || Implement of a load balancer using !OpenFlow switches (OVS switches) and a controller capable of collecting flow stats. The exercise includes a template for a Treme-Based controller; only a few methods need to implemented to get the required functionality. Uses the !LabWiki tool. || Assignment || Moderate/advanced || 7 VMs (including a VM for the !OpenFlow controller) || [mailto:mzink@cas.umass.edu Contact Mike Zink, U. of Mass] || [mailto:mzink@cas.umass.edu Mike Zink], University of Massachusetts, Amherst || == 4. Distributed Systems == || '''Exercise''' || '''Objective''' || '''Type''' || '''Difficulty''' || '''Resources''' || '''Link to Exercise''' || '''Contact''' || || Web Server || Get hands-on experience installing and interacting with a web server. || Assignment || Easy || 2 VMs (IG) || [http://www.cs.unc.edu/Research/geni/geniEdu/02-WebServer.html Link] || [mailto:aikat@cs.unc.edu Jay Aikat], University of North Carolina, Chapel Hill || || VLC/Dynamic Adaptive Streaming over HTTP || Give students a better understanding of how Dynamic Adaptive Streaming over Http (DASH) works. It builds on the "Load Balancing Router" exercise and uses the same topology. VLC parameters such as VLC decision bit rate (actual measured bit rate), VLC empirical rate (instant measured throughput) are measured and displayed using GIMI tools.|| Assignment || Moderate/advanced || 7 VMs (including a VM for the !OpenFlow controller) || [mailto:mzink@cas.umass.edu Contact Mike Zink, U. of Mass] || [mailto:mzink@cas.umass.edu Mike Zink], University of Massachusetts, Amherst || == 5. Wireless Networking == NYU Poly has developed a set of wireless exercises that use GENI wireless resources. They have a fully hosted [http://witestlab.poly.edu/site/page/classroom Classroom-as-a-Service] for instructors to set up class specific web pages for students to log in and run experiments, for instructors to monitor how the class is doing, and to grade the exercises. Contacts: [mailto:nasoskor@gmail.com Thanasis Korakis] and [mailto:ffund01@students.poly.edu Fraida Fund]. == 6. Cloud Computing == Prasad Calyam of the University of Missouri has used GENI for his Cloud Computing classes and will be happy to share his ideas for labs on GENI. Information regarding the class exercises utilizing GENI can be found [http://people.cs.missouri.edu/~calyamp/publications/geni-cclabs-gree14.pdf here]. Please feel free to [mailto:CalyamP@missouri.edu email] him for further information. == 7. GENI-based MOOCs == NYU Poly has developed a set of course modules for teaching basic networking concepts for those with very little to no background in Computer Science or networking. These modules are in in Massive Open Online Course (MOOC) format. These modules include hands-on exercises that teach networking concepts without the need for programming. Topics covered include the Internet routing, adaptive video streaming, net neutrality and big data with Hadoop and MapReduce. Website: http://hyperion.poly.edu Contacts: [mailto:nasoskor@gmail.com Thanasis Korakis] and [mailto:ffund01@students.poly.edu Fraida Fund]. {{{ #!comment == New Course Modules == Recently developed course modules: [wiki:sol4/upcomingCourseModules ''New Course Modules''] = Network-understanding = == TCP Network Awareness == [wiki:GENIEducation/SampleAssignments/TcpAssignment Link to exercise][[BR]] '''Type:''' Assignment [[BR]] '''Purpose:''' Students explore the difference between different TCP flavors and TCP parameters. [[BR]] '''Resources:'''4 VMs (IG, PG)[[BR]] '''Difficulty:''' medium [[BR]][[BR]] == Create a Firewall with OpenFlow == [wiki:GENIEducation/SampleAssignments/OpenFlowFirewallAssignment Link to exercise][[BR]] '''Type:''' Assignment [[BR]] '''Purpose:''' Students will understand how network firewalls work and get to write their own OpenFlow controller.[[BR]] '''Difficulty:''' hard [[BR]] '''Resources:'''6 VMs - EG/6PCs-PG[[BR]] '''Extra tools:''' OpenFlow[[BR]] [[BR]] = New Routing Algorithms = == Load balancing router using OpenFlow == [wiki:GENIEducation/SampleAssignments/OpenFlowLoadBalancerAssignment Link to exercise][[BR]] '''Type:''' Assignment [[BR]] '''Purpose:''' Students will understand how load balancing works and get to write their own OpenFlow controller.[[BR]] '''Resources:'''4 VMs - EG/4PCs-PG[[BR]] '''Difficulty:''' hard [[BR]] '''Extra tools:''' OpenFlow[[BR]] [[BR]] = Distributed systems = [wiki:WebServerExample Link to exercise][[BR]] '''Type:''' Assignment[[BR]] '''Purpose:''' Students will learn about the client-server model through configuring and writing a webserver[[BR]] '''Resources:'''2 VMs [[BR]] '''Difficulty:''' medium [[BR]] [[BR]] == Example Class assignments == If you would like to use GENI in your classroom, these are some of sample assignments that you can use. If you have used GENI in your classroom, please feel free to add your assignments to this wiki page so that others can use them. || [wiki:UDTExampleExperiment Compare UDT and FTP] || [[Image(GENIExperimenter/Graphics:UDTExampleExperiment.png, 70%, nolink)]] || In this example experiment, you will compare the behavior of two different transport protocols, UDT and TCP, under varying network conditions.[[br]][[br]]You will use ProtoGENI hosts to build your network.[[br]][[br]]In order to try this example experiment, you should have GENI credentials and be familiar with using either the Flack GUI tool or the omni command line tool. Learn more about credentials at SignMeUp or by sending us mail [mailto:help@geni.net]. || || [http://groups.geni.net/geni/attachment/wiki/ScalableMonitoring/tcp-geni.pdf TCP Network Awareness] || [[Image(GENIExperimenter/Graphics:TCPAssignment.png, 50%, nolink)]] || The objective of this assignment is to familiarize you with the details of TCP congestion control, and the impact of network conditions on the TCP congestion control algorithms. [[br]][[br]] In order to try this example experiment, you should have GENI credentials and be familiar with using either the Flack GUI tool or the omni command line tool. Learn more about credentials at SignMeUp or by sending us mail [mailto:help@geni.net]. || || [http://groups.geni.net/geni/attachment/wiki/ScalableMonitoring/openflow-geni.pdf Flow Management with OpenFlow] || [[Image(GENIExperimenter/Graphics:FlowManagementAssignment.png, 65%, nolink)]] || The objective of this assignment is to familiarize you with the software-defined networking, as well !OpenFlow technology. A moderately deep understanding of the !OpenFlow controller model and API is required for this project. You will design and implement !OpenFlow controllers and associated experiment topologies to implement a basic firewall and a simple load balancer. [[br]][[br]] In order to try this example experiment, you should have GENI credentials and be familiar with using either the Flack GUI tool or the omni command line tool. Learn more about credentials at SignMeUp or by sending us mail [mailto:help@geni.net]. || || [wiki:WebServerExample Build a Web Server] || [[Image(GENIExperimenter/Graphics:WebServerExample.png, 70%, nolink)]] || In this assignment you will build a functional web server. This assignment will guide you through the basics of distributed programming, client/server structures, and issues in building high performance servers.[[br]][[br]]You will use ProtoGENI hosts to build your network.[[br]][[br]]In order to try this example experiment, you should have GENI credentials and be familiar with using either the Flack GUI tool or the omni command line tool. Learn more about credentials at SignMeUp or by sending us mail [mailto:help@geni.net]. || == New Course Modules being developed by GENI Sol. 4 Projects == Three teams are developing GENI-based course modules. These modules are at [wiki:sol4/upcomingCourseModules]. == Other Assignments == || [wiki:GENIEducation/SampleAssignments/CCNAssignment Content Network Assignment ] [[br]] ''This exercise is over a year old and portions of it may not work. [[br]] Please email tutorials@geni.net if you are considering using it in your class. [[br]] We are working with the original authors to update it.'' || [[Image(GENIEducation/SampleAssignments/CCNAssignment:CCNAssignment.png, 30%, nolink)]] || || || [wiki:GENIEducation/SampleAssignments/OpenFlowFirewallAssignment OpenFlow FireWall Exercise ] ||[[Image(GENIEducation/SampleAssignments/OpenFlowFirewallAssignment:OpenFlowAssignment1.png, 30%, nolink)]] || || || [wiki:GENIEducation/SampleAssignments/OpenFlowLoadBalancerAssignment OpenFlow Load Balancer Assignment] || [[Image(GENIEducation/SampleAssignments/OpenFlowLoadBalancerAssignment:OpenFlowAssignment2.png, 30%, nolink)]] || || || [wiki:GENIEducation/SampleAssignments/TcpAssignment TCP Assignment] || [[Image(GENIEducation/SampleAssignments/TcpAssignment:TCPAssignment.png, 30%, nolink)]] || || === FTP vs UDT === [wiki:UDTExampleExperiment Link to exercise][[BR]] '''Type:''' Assignment [[BR]] '''Purpose:''' Students will understand the difference between TCP and UDP by comparing the behavior of two different file transfer applications (FTP, UDT) under varying network conditions.[[BR]] '''Resources:'''3 PCs (PG)[[BR]] '''Difficulty:''' medium [[BR]][[BR]] == GENI Tutorials == This is a repository of tutorials that you can use if you want to teach GENI and/or GENI tools. If you need help with putting together a tutorial please contact us at [mailto:help@geni.net] || [http://www.protogeni.net/wiki/GeniTutorial Intro to Flack Tutorial] || [[Image(GENIExperimenter/Graphics:flack.png, 50%,nolink)]] || This is a tutorial for teaching users how to use Flack. Flack is a graphical tool that helps user reserve resources. || || [wiki:GEC15Agenda/IntroToOmni/Instructions Intro to Omni Tutorial] || [[Image(http://trac.gpolab.bbn.com/gcf/raw-attachment/wiki/Omni/omni-pic.png, nolink, 50%)]] || This is a tutorial for teaching users how to use Omni. Omni is a command line tool for reserving GENI resources, and thus can help users automate their experiments. The tutorial guides the attendees through a very simple layer 2 example while introducing all the omni commands || }}}