[[PageOutline]] This page contains a list of tutorials and assignments that you might consider using in your class. If you would like to include a hands-on tutorial in a GENI event, then you should look for the exercises that are meant to be given during a class. = GENI-Related tutorials and assignments = The purpose of these tutorials are to familiriaze students with GENI and GENI concepts. == 1. Introduction to GENI == === Lab Zero: My first GENI Experiment === [wiki:GENIExperimenter/Tutorials/GettingStarted_PartI/ForInstructors Link to exercise] ('''highly recommended''' as a first lab that the students do in the class with help of an instructor) [[BR]] '''Type:''' Tutorial (Instructor-led mode preferred) [[BR]] '''Purpose:''' Setup students accounts correctly through a simple GENI experiment and familiarize students with the process of setting up an experiment. [[BR]] '''Resources:''' 2VMs (EG, IG)[[BR]] '''Duration:''' 1h [[BR]] '''POC:''' [mailto:tutorials@geni.net Experimenter support], GENI Project Office === Lab One: Understanding the AM API and Omni === [wiki:GENIExperimenter/Tutorials/GettingStarted_PartII_ccn/ForInstructors Link to exercise] [[BR]] '''Type:'''Tutorial (Instructor-led mode preferred) [[BR]] '''Purpose:''' Students understand how GENI reservation process work and get familiar with the GENI common Aggregate Manager API (GENI AM API), the students also learn how to use Omni [[BR]] '''Resources:'''4 VMs (IG) [[BR]] '''Duration:''' 1h [[BR]] '''POC:''' [mailto:tutorials@geni.net Experimenter support], GENI Project Office === GENI Desktop Basics === [http://www.cs.unc.edu/Research/geni/geniEdu/01-Instrumentation.html Link to exercise] [[br]] '''Type:''' Self-guided tutorial [[br]] '''Purpose:''' Teach the basics of instrumenting a slice and viewing measurement data using the GENI Destop [[br]] '''Resources:''' 2 VMs (IG) [[BR]] '''Duration:''' 1h [[BR]] '''POC:''' [mailto:aikat@cs.unc.edu Jay Aikat], University of North Carolina, Chapel Hill == 2. Networking Basics == === IPv4 Routing === [wiki:GENIEducation/SampleAssignments/IPRouting/Procedure Link to exercise][[BR]] '''Type:''' Assignment [[BR]] '''Purpose:''' Students will understand how IPv4 forwarding works and how to configure static routes. [[BR]] '''Resources:''' 3 VMs (EG). [[BR]] '''Difficulty:''' Easy [[br]] '''POC:''' [mailto:mzink@cas.umass.edu Mike Zink], University of Massachusetts, Amherst === TCP Congestion Control === [http://www.cs.unc.edu/Research/geni/geniEdu/03-TcpTraffic.html Link to exercise] [[BR]] '''Type:''' Assignment or in-class demo [[BR]] '''Purpose:''' 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. [[br]] '''Resources:''' 2 VMs (IG). Uses the GENI Desktop to visualize flows. [[BR]] '''Duration:''' 20 minutes for in-class demo [[br]] '''Difficulty:''' !Easy/Moderate [[br]] '''POC:''' [mailto:aikat@cs.unc.edu Jay Aikat], University of North Carolina, Chapel Hill === Effect of RTT and Window Size on TCP Throughput === [http://www.cs.unc.edu/Research/geni/geniEdu/04-TcpDelayWinSize.html Link to exercise] [[BR]] '''Type:''' Assignment or in-class demo [[BR]] '''Purpose:''' 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 [[br]] '''Resources:''' 2 VMs (IG). Uses the GENI Desktop to visualize flows. [[BR]] '''Duration:''' 20 minutes for in-class demo [[br]] '''Difficulty:'''Moderate [[br]] '''POC:''' [mailto:aikat@cs.unc.edu Jay Aikat], University of North Carolina, Chapel Hill === Traffic analysis === [http://www.cs.unc.edu/Research/geni/geniEdu/05-TrafficAnalysis.htmlLink to exercise] [[BR]] '''Type:''' Assignment [[BR]] '''Purpose:''' Learn to use tcpdump to capture and analyze network traffic [[br]] '''Resources:''' 2 VMs (IG). Uses the GENI Desktop to visualize flows. [[BR]] '''Duration:''' 1 hour [[br]] '''Difficulty:'''Moderate [[br]] '''POC:''' [mailto:aikat@cs.unc.edu Jay Aikat], University of North Carolina, Chapel Hill === Learning Switch === [mailto:mzink@cas.umass.edu Contact Mike Zink, U. of Mass] [[br]] '''Type:''' Assignment [[BR]] '''Purpose:''' Implementation of the learning switch capability that is used by Ethernet switches. Develop a five-port learning switch using a software-based OpenFlow switch. This exercise uses the LabWiki tool. [[br]] '''Difficulty:''' Moderate/advanced [[br]] '''POC:''' [mailto:mzink@cas.umass.edu Mike Zink], University of Massachusetts, Amherst == 3. Advanced Networking == === OpenFlow based Load Balancing Router === [mailto:mzink@cas.umass.edu Contact Mike Zink, U. of Mass] [[br]] '''Type:''' Assignment [[BR]] '''Purpose:''' 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 Trema-based controller. Only a few methods need to implemented to get the required functionality. '''Resources:''' 6 VMs. '''Difficulty:''' Moderate/advanced [[br]] '''POC:''' [mailto:mzink@cas.umass.edu Mike Zink], University of Massachusetts, Amherst === OpenFlow based Load Balancing Router === [mailto:mzink@cas.umass.edu Contact Mike Zink, U. of Mass] [[br]] '''Type:''' Assignment [[BR]] '''Purpose:''' 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. [[br]] '''Resources:''' 7 VMs (including a VM for the !OpenFlow controller) [[br]] '''Difficulty:''' Moderate/advanced [[br]] '''POC:''' [mailto:mzink@cas.umass.edu Mike Zink], University of Massachusetts, Amherst === VLC/Dynamic Adaptive Streaming over HTTP === [mailto:mzink@cas.umass.edu Contact Mike Zink, U. of Mass] [[br]] '''Type:''' Assignment [[BR]] '''Purpose:''' 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. [[br]] '''Resources:''' 7 VMs (including a VM for the !OpenFlow controller) [[br]] '''Difficulty:''' Moderate/advanced [[br]] '''POC:''' [mailto:mzink@cas.umass.edu Mike Zink], University of Massachusetts, Amherst === Content Centric Networking === [wiki:GENIExperimenter/Tutorials/jacks/GettingStarted_PartII_ccn/Procedure Link to exercise] [[br]] '''Type:''' Assignment [[BR]] '''Purpose:''' Students learn about Content Centric networking and get to experiment with a non-IP routing protocol. [[BR]] '''Resources:''' 4 VMs [[br]] '''Tools:''' The GENI Portal. Option to use the GENI Desktop to visualize information caching and retreival in a content centric network. [[br]] '''Difficulty:''' moderate [[br]] '''POC:''' [mailto:tutorials@geni.net Experimenter support], GENI Project Office === Network Function Virtualization: !OpenFlow based Firewall === [wiki:GENIExperimenter/Tutorials/OpenFlowNFVFirewall Link to exercise] [[br]] '''Type:''' Assignment [[BR]] '''Purpose:''' 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. [[br]] '''Resources:''' 4 VMs [[br]] '''Difficulty:''' Moderate/advanced [[br]] '''POC:''' [mailto:tutorials@geni.net Experimenter support], GENI Project Office === Network Function Virtualization: !OpenFlow based NAT === [wiki:GENIExperimenter/Tutorials/OpenFlowNFVNAT Link to exercise] [[br]] '''Type:''' Assignment [[BR]] '''Purpose:''' 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. [[br]] '''Resources:''' 4 VMs [[br]] '''Difficulty:''' Moderate/advanced [[br]] '''POC:''' [mailto:tutorials@geni.net Experimenter support], GENI Project Office == Distributed Systems == == New Course Modules == Recently developed course modules: [wiki:sol4/upcomingCourseModules ''New Course Modules''] {{{ #!comment = 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 || }}}