Specialization Software-defined Networking (Winter 2015/2016): Difference between revisions

No edit summary
 
(94 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{Announcement|Note: Since 25th March is Easter Friday, the course and final presentations that are scheduled for 25th March will be shifted to a date in the last two weeks of April. We can decide on the exact day on the 21st March, on the first day of the course. }}
{{Announcement|Note: We will have the final presentations on April 21: 8-12pm (in Room 2.101) and 16-18 (in Room 1.101) slot is additionally reserved }}


{{Announcement|Note:  
{{Announcement|Note:  
Line 28: Line 28:


==Schedule==
==Schedule==
{{Announcement|Note: We will have the final presentations on April 21: 8-12pm and 16-18 slot is additionally reserved }}


{| {{Prettytable|width=}}
{| {{Prettytable|width=}}
Line 58: Line 59:
| align="right" | 23.03.2016
| align="right" | 23.03.2016
| Lecture III: Enhancing Data Plane - II
| Lecture III: Enhancing Data Plane - II
| Exercise V: Kinetic Firewall
| Exercise V: Kinetic Firewalls
| Group Discussion III
| Group Discussion III
| Exercise VI: Kinetic-pox loadbalancer
| Exercise VI: pyretic debugging
|-
|-
| align="right" | 24.03.2016
| align="right" | 24.03.2016
| Exercise VII: kinetic, pyretic debugging
| Lecture IV: ONOS
| Exercise VIII: Service Chaining I
| Exercise VIII: ONOS tutorials
| Group Discussion IV
| Group Discussion IV
| Exercise IX: Service Chaining II
| Exercise IX: ONOS Applications
|-
| align="right" | xx.xx.2016 (Since 25th March is Easter Friday, see note above)
| "Preparation for final presentation"
| "Preparation for final presentation"
| Final presentations I
| Final presentation II
|-
|-
|}
|}
== April 21: Schedule ==
{{Announcement|Note: Lets start at 8:30 instead of 8:00}}
* 8:30-9:00: group presentation
* 9:00-9:30: group presentation
* 9:30-10:00: group presentation
* 10:00-10:30: group presentation
* 10:30-11:00: group presentation/Exercises/Q&A
* 11:00-11:30: group presentation/Exercises/Q&A
* 11:30-12:00: group presentation/Exercises/Q&A
* 16:00-17:00: Exercises/Q&A
* 17:00-17:30: Group presentation (Pouya & Mehdi)
* 17:30-18:00: Exercises/Q&A


==Requirements==
==Requirements==
Line 84: Line 95:
** Short report on the group discussion papers
** Short report on the group discussion papers
** Report on the paper presented by team-X for the final presentation  
** Report on the paper presented by team-X for the final presentation  
== Lectures ==
* Lecture I: Enhancing Data Plane I [https://dl.dropboxusercontent.com/u/1652374/SDN_course_WS2015-2016/Lectures/1.0-Middleboxes_basic.pdf slides-I][https://dl.dropboxusercontent.com/u/1652374/SDN_course_WS2015-2016/Lectures/1.1-Designing%20Middleboxes.pdf slides-II]
* Special Lecture: How to Read (research) Papers [https://dl.dropboxusercontent.com/u/1652374/SDN_course_WS2015-2016/Lectures/0.1-Group_Discussions.pdf slides-I][https://dl.dropboxusercontent.com/u/1652374/SDN_course_WS2015-2016/Lectures/howtoread.pdf Link_to_original_paper]
* Lecture II: Northbound API [https://dl.dropboxusercontent.com/u/1652374/SDN_course_WS2015-2016/Lectures/2.0-Northbound%20API%20Motivation.pdf slides-I] [https://dl.dropboxusercontent.com/u/1652374/SDN_course_WS2015-2016/Lectures/2.1-Northbound%20API%20Pyretic.pdf slides-II]
* Lecture III: Enhancing Data Plane II [https://dl.dropboxusercontent.com/u/1652374/SDN_course_WS2015-2016/Lectures/1.2-Managing%20Middleboxes%20FlowTags.pdf Managing Middleboxes: Flowtags][https://dl.dropboxusercontent.com/u/1652374/SDN_course_WS2015-2016/Lectures/1.3-Managing%20Middleboxes%20Simplefying%20Steering%20FCSC.pdf Steering,Simplefying]
* Lecture IV: ONOS: [https://dl.dropboxusercontent.com/u/1652374/SDN_course_WS2015-2016/Lectures/ONOS.pdf ONOS]
== Group Discussion ==
=== GD I ===
* Special Lecture: How to Read (research) Papers [https://dl.dropboxusercontent.com/u/1652374/SDN_course_WS2015-2016/Lectures/0.1-Group_Discussions.pdf slides-I][https://dl.dropboxusercontent.com/u/1652374/SDN_course_WS2015-2016/Lectures/howtoread.pdf Link_to_original_paper]
* [https://dl.dropboxusercontent.com/u/1652374/SDN_course_WS2015-2016/GD/0.GD-I-Debugging/SDN-traceroute.pdf SDN traceroute]
=== GD II ===
* [https://dl.dropboxusercontent.com/u/1652374/SDN_course_WS2015-2016/GD/GD-II/a10-jyothi.pdf Towards a flexible data center fabric with source routing]
* [https://dl.dropboxusercontent.com/u/1652374/SDN_course_WS2015-2016/GD/GD-II/pathlet.pdf pathlet]
=== GD III ===
* [https://www.usenix.org/system/files/conference/nsdi16/nsdi16-paper-eisenbud.pdf Maglev (NSDI 2016)]
* [http://conferences.sigcomm.org/sigcomm/2015/pdf/papers/p465.pdf Presto]
=== GD IV ===
* [https://dl.dropboxusercontent.com/u/1652374/SDN_course_WS2015-2016/GD/GD-IV/splitmerge.pdf SplitMerge]
* [https://dl.dropboxusercontent.com/u/1652374/SDN_course_WS2015-2016/GD/GD-IV/p163-gember-jacobson.pdf OpenNF]
* [https://dl.dropboxusercontent.com/u/1652374/SDN_course_WS2015-2016/GD/GD-IV/shadowmac-hotsdn-2014-final.pdf ShadowMac]
== Papers for Final Presentations ==
* Presentations will be from 8-12 on April 21.
* Each group gets 20 minutes of presentation time and 10 minutes for Q&A. Georgios gets 10 minutes of presentation time and 5 minutes of Q&A.
* [https://dl.dropboxusercontent.com/u/1652374/SDN_course_WS2015-2016/presentation/papers.zip All the papers can be downloaded here as a zip file]
* NFV & security (Vijay, Mohsen)
** [http://conferences.sigcomm.org/sigcomm/2015/pdf/papers/p199.pdf McTLS]
** [http://conferences.sigcomm.org/sigcomm/2015/pdf/papers/p227.pdf Rollback Recovery of Middlebox]
* Miscellaneous Papers - I (AHM, Luis)
** [http://conferences.sigcomm.org/sosr/2016/papers/sosr_paper69.pdf CacheFlow]
** [http://conferences.sigcomm.org/sosr/2016/papers/sosr_paper62.pdf Safe and Flexible Controller upgrades in SDN]
* Miscellaneous Papers - II (Mahmoud, Amine)
** [http://conferences.sigcomm.org/sosr/2016/papers/sosr_paper42.pdf Improving SDN with InSPired Swithes]
** [http://conferences.sigcomm.org/sosr/2016/papers/sosr_paper70.pdf RAVEL]
* Middlebox Optimization/Load balancers - I (Mehdi, Pouya)
** [https://www.usenix.org/system/files/conference/nsdi16/nsdi16-paper-heorhiadi.pdf Simplifying SDN optimization using SOL]
** [https://dl.dropboxusercontent.com/u/1652374/SDN_course_WS2015-2016/GD/Full_papers/CoMB-nsdi12.pdf CoMB: Design and Implementation of consolidated Middlebox architecture]
* Middlebox Optimization/Load balancers - II (Osamah, Fazely)
** [https://www.usenix.org/system/files/conference/nsdi16/nsdi16-paper-khalid.pdf Paving the way for NFV: Simplifying middlebox modifications Using StateAlyzr]
** [http://dl.acm.org/citation.cfm?id=2396566 XoMB: Extensible Open Middleboxes with comodity servers]
* SDN and Fault Tolerance: (Dieter, Ferdinand)
** [http://conferences.sigcomm.org/sosr/2016/papers/sosr_paper57.pdf LegoSDN: Isolating and tolerating SDN application failures with LegoSDN]
** [http://conferences.sigcomm.org/sosr/2016/papers/sosr_paper67.pdf Hula: scalable load balancing using programmable data planes. (NSDI 2016)]
* Open vSwitch (Georgios)
** [https://dl.dropboxusercontent.com/u/1652374/SDN_course_WS2015-2016/presentation/papers/nsdi15-Open-vSwitch.pdf The Design and Implementation of Open vSwitch]


== Exercises ==
== Exercises ==
* [https://openflow.stanford.edu/display/ONL/POX+Wiki Pox/Openflow Tutorial]  
* [https://openflow.stanford.edu/display/ONL/POX+Wiki Pox/Openflow Tutorial]  
* What to Submit: source code along with screenshots for those who are not exempted
* What to Submit: source code along with screenshots for those who are not exempted
=== General Hints ===
* Use the following option to get more debug info while using pox
** $ ./pox/pox.py log.level --DEBUG misc.of_tutorial
** NOTE: There are two "-" (i.e. --) used for options in mininet/pox. In the wiki, sometimes the two lines
join up and show as one line.
** Best not to use the command prompt within the VM, but to use terminals created by ssh (e.g. via Putty)
*** e.g. xterm h1 doesn't work
*** there were also issues while starting pyretic


=== 21 March ===
=== 21 March ===
* Exercise I: Data Centers [https://dl.dropboxusercontent.com/u/1652374/SDN_Course/1.Data_centers.zip] (exempt: all)
* Get the Image from Mayutan/Sameer/peers
* Exercise II: Fattree and Generic [https://dl.dropboxusercontent.com/u/1652374/SDN_Course/2.Datacenter_fattree_and_loadbalancing.zip] (exempt: Guryash, Sameer)
 
==== Exercise I: Data Centers ====
[https://wiki.net.informatik.uni-goettingen.de/w/index.php?title=exercises_dc Exercise_DC]
 
==== Exercise II: Load balancers ====
[https://wiki.net.informatik.uni-goettingen.de/w/index.php?title=exercises_lb Exercise_LB]


=== 22 March ===
=== 22 March ===
* Exercise III: Load balancers (contd. exercise II) [https://dl.dropboxusercontent.com/u/1652374/SDN_Course/2.Datacenter_fattree_and_loadbalancing.zip] (Exempt: All except Thomas)
==== Exercise III: Firewall ====
* Exercise IV: Firewall [https://dl.dropboxusercontent.com/u/1652374/SDN_Course/3.Firewall.zip] (Exempt: All except Thomas, Gurjinder)
[https://wiki.net.informatik.uni-goettingen.de/w/index.php?title=exercises_firewall Exercise_Firewall]
 
==== Exercise IV: Pyretic Firewall ====
[https://wiki.net.informatik.uni-goettingen.de/w/index.php?title=exercises_pyretic_firewall Exercise_Pyretic_Firewall]


=== 23 March ===
=== 23 March ===
* Exercise V: Firewall (contd. ) [https://dl.dropboxusercontent.com/u/1652374/SDN_Course/3.Firewall.zip] (Exempt: ALL)
==== Exercise V: Kinetic firewall ====
* Exercise VI: Pyretic firewall [https://dl.dropboxusercontent.com/u/1652374/SDN_Course/4.pyretic_firewall.zip] (Exempt: Khawar, Omar, Martin, Thomas, Sameer, Eeran)
* Note that -l in the instructions (e.g. infected -1) is not a numeric "1", but the small version of "L"
* Kinetic Firewall [https://dl.dropboxusercontent.com/u/1652374/SDN_Course/Exercises/kinetic.pdf Instructions], [https://dl.dropboxusercontent.com/u/1652374/SDN_Course/Exercises/kinetic_gardenwall.py Starting_Code]
 
==== Exercise VI (Part A): Pyretic Debugging ====
[https://wiki.net.informatik.uni-goettingen.de/w/index.php?title=exercises_pyretic_debugging Exercise_Pyretic_Debugging]
 
==== Exercise VI (Part B): Kinetic like firewall using pox ====
[https://wiki.net.informatik.uni-goettingen.de/w/index.php?title=exercises_kinetic_pox_firewall Exercise_Kinetic_Pox_Firewall]


=== 24 March ===
=== 24 March ===
* Exercise VII: Kinetic Firewall [https://dl.dropboxusercontent.com/u/1652374/SDN_Course/Exercises/kinetic.pdf Instructions], [https://dl.dropboxusercontent.com/u/1652374/SDN_Course/Exercises/kinetic_gardenwall.py Starting_Code]
==== Exercise VII: Basic ONOS ====
(Exempt: Khawar, Omar, Martin, Thomas, Sameer, Eeran)
* [https://wiki.net.informatik.uni-goettingen.de/w/index.php?title=basic_onos Basic ONOS]
* [https://wiki.net.informatik.uni-goettingen.de/w/index.php?title=sdn_ip_onos ONOS SDN IP]
 
==== Exercise VIII: ONOS Application ====
* Try to create your own simple ONOS application (e.g. firewall, SFC, load balancer) looking at the tutorials given
** Disclaimer: I am also working on this
* You can also use this time to finish with the other exercises and do the above at home
 
* I have posted some hints to help you creating your ONOS application. [http://olbarakat.info/o/?page_id=104 Go to here]
 
== Requirement and Due Date for Final Report (E-Mail to Mayutan)==
{{Announcement|Note: The final report is due on April 30th.}}
 
* Submit your final report (in .pdf format) as well as code (in .py format) as one zipped file with your name.
 
subject line of email: Submission of work for Specialization in SDN
Name of attachment: name.zip, e.g., if when I submit the final work, the file will be named: Mayutan.zip
 
'''NOTE:''' You also have the opportunity to show me the code on April 21, 16-18pm.
 
'''NOTE:''' Your final report ([ftp://ftp.springer.de/pub/tex/latex/llncs/latex2e/llncs2e.zip LaTeX Template]) should include:
* Title sheet showing your name and matriculation number
 
* 6 pages of paper review using the [http://user.informatik.uni-goettingen.de/~dkoll/files/sdn/review.docx review form].
 
  For this, you can review the papers that your group presented (3 pages for each review)
 
* Additionally, you can have one of the two:
** 1) Programming part: Program a simple new application (e.g. like the gardenwall example or load balancing or SFC) in ONOS. It can be done in groups.
** 2) 9 pages of reviews using the [http://user.informatik.uni-goettingen.de/~dkoll/files/sdn/review.docx review form]. These reviews should be of full papers that others have presented.
 
* One review form (3 pages each) for each of the paper your group was assigned during the course for the final presentation (Use this [http://user.informatik.uni-goettingen.de/~dkoll/files/sdn/review.docx review form]). 
Those who need to write an additional review of a paper presented during the final presentations: ().
These extra pages will be for those who don't ask questions or participate in discussions during
others' presentations. 
Therefore, highly recommended that all of you make a first and second pass of the papers belonging
to other groups.
 
 
Make sure that you write your own review. Copy/Paste reviews from other participants of the course
will not be accepted. The reviews are individual work.
 
* screenshots to prove that the code is working for those who didn't show it to me during the lecture. Please refer to the Exercise Section above.
* The slides (if any) you used for presenting your papers in class.
No need to improve the slides after presenting.
 


* Exercise VIII: Kinetic like firewall using pox [https://dl.dropboxusercontent.com/u/1652374/SDN_Course/Exercises/pox_gardenwall.pdf instructions] [https://dl.dropboxusercontent.com/u/1652374/SDN_Course/Exercises/pox_gardenwall.py Starting_Code][https://openflow.stanford.edu/display/ONL/POX+Wiki#POXWiki-ofp_flow_mod-Flowtablemodification Tutorial]
==Grading==
(Exempt: Khawar, Omar, Martin, Thomas, Sameer, Eeran)
* Each participant is required to actively attend the course (80%+ attendance) and earn 50% of the points of the exercises.
* Students will be required to do a presentation after the end of the course (April 21 2016).
* Grading will be based on a written report to be submitted by each student, which includes:
** Slides used for presentation in the seminar (25%)
** Mandatory review of SDN research papers (50%)
** ONOS application/paper-review (25%)
* No exam


=== 25 March ===
* Exercise IX: Pyretic Debugging (Exempt: Omar, Martin, Thomas, Sameer, Eeran)
'''HINT:''' You might have to use the "$ dpctl dump-flows tcp:127.0.0.1:6634" or "mininet> dpctl dump-flows" command frequently. 
** In this debugging exercise, we take solutions available in the Internet for the gardenwall problem and try to fix bugs in it.
** We have done kinetic firewall in exercise VII and imitated the same firewall using pox in exercise VIII. Now, we will imitate the same firewall using pyretic.
** The basic solution is taken from the Internet [https://dl.dropboxusercontent.com/u/1652374/SDN_Course/Exercises/pyretic_gardenwall_internetsolution1.py], test if it is able to block h1 when "infected". Note that we will only use the "infected == True" for this exercise.
*** Copy the above code into /home/mininet/pyretic/pyretic/examples as gardenwall_internetsolution.py
*** start controller (in /home/mininet/pyretic folder): pyretic.py pyretic.examples.gardenwall_internetsolution
*** start mininet: sudo mn --controller=remote --topo=single,3 --mac --arp
*** check h1 ping h2
*** Now infect h1 (in /home/mininet/pyretic/pyretic/kinetic folder): python json_sender.py -n infected -l True --flow="{srcmac=00:00:00:00:00:01}" -a 127.0.0.1 -p 50001
*** check h1 ping h2. We should be able to observe that this traffic is blocked.
*** Now, we move on to the debugging part
**** check h2 ping h3, what happens?
**** Now, modify the given code to allow h2 traffic to pass through to h3, when h1 is "infected".
** Now, check if the "exempt" case is working fine too
** if time permits, check and improve code to allow h1 to ping h2
** If time permits, try fixing [https://dl.dropboxusercontent.com/u/1652374/SDN_Course/Exercises/pyretic_gardenwall_internetsolution.py this] code for the "infected" case.






[[Category:Courses]]
[[Category:Courses]]