Georgia Tech Coursera SDN MOOC
Table of Contents
Recently I completed the Software Defined Networking (SDN) course presented by Dr. Nick Feamster of the Georgia Institute of Technology. The course was a massive open online course, otherwise known as a MOOC. (Some of the earliest MOOCs were put on by researchers associated with Athabasca University, an Alberta based post secondary institution specializing in distance learning.)
MOOCs
I have a Bachelor of Education which means I could have been a teacher in Alberta. However I went in another direction and have a career in information technology, but one that has been almost entirely spent either working at a university as support staff, or at organizations that support universities in one form or another. Therefore I’m aware–perhaps more than the average person–of MOOCs and how they are affecting, or not affecting, post secondary education. Interestingly, the University of Alberta has just began offering their first class using the Coursera platform: DINO 101.
SDN Course
But what I want to talk about here is the Dr. Feamster’s SDN course. One of the people helping to teach the course wrote this thank you note to the students, and mentioned that it’s a good idea to document the learning in some fashion, so that is what I’m attempting to do in this post.
I encourage you to document your learning, which is a more insightful way of providing evidence to your learning….I hope you all will try and apply your new knowledge in SDN at work or in your studies.
What I liked
In general, I like the idea of MOOCs. While getting a masters degree of some kind has always been in the back of my mind, I really feel like I am done with school, but being in technology I can never be done with learning. I don’t think I am an autodidact but learning on my own is something that I do all the time (mostly via articles or blog posts on the Internet), have to do in order to be employable, and enjoy doing, so MOOCs fit in with that style of learning well.
A couple other people at work also took the course at the same time, and we had some discussions about it. I think we all felt that overall the course was a good introduction to SDN, but that it wasn’t in-depth enough for our tastes. Having said that, I don’t see how the team behind the course could have done it differently, as there were so many different people taking the MOOC, from people with little or no networking experience or programming experience, to highly experience networking and programming professionals.
Here are a few things I liked about the class:
- Learning about new SDN tools
- Having a bit of structure around learning a new technology
- The professor’s positive attitude
- The MOOC being a good overview of SDN, where it came from and (maybe) where it’s going
I also enjoyed the interviews though didn’t quite have time to watch all of them. Perhaps at some point I can go back and watch them.
What I didn’t like
The most unusual thing, I felt, was the quiz system. Essentially you could take each quiz at least 3 times, most of them more, and you could review your answers, and mistakes, from the previous attempts, and retake the quiz. I’m not sure what the value of doing quizzes in this fashion is, unless you were to take an average of the first quiz and subsequent quizzes, because the easiest thing to do with the quiz is to take it once and even if you score poorly you can simply review your answers and pass the next attempt. Sometimes the question’s changed answers in each attempt, but mostly they did not. I don’t think the quizzes tested students knowledge very well.
Another thing was that the instructions for the assignments were occasionally incorrect, at least in terms of cutting and pasting commands. Because I’ve been using the command line for a long time it was no problem to adjust, but if I was a student with little command line experience, I would imagine cutting and pasting commands would have been frustrating…possibly as difficult as the programming assignments themselves.
If you did cut and paste exactly what was shown, you would still end up having to futz around because you would find yourself in the wrong working directory, and command examples would not execute. I think part of the reason for this was the the assignments would change as the course was ongoing, but the documentation couldn’t keep up.
Also I was never quite sure what mark was required to pass the tests. At least one had to be 100% to pass, I believe, but even now I’m not sure. I think it’s 70% on each quiz to pass. It may very well turn out that I didn’t pass the course. No idea.
Finally, unless I’m mistaken, it wasn’t possible to download the slides used in the video lectures. I would have been great to have access to the slides, and notes as well. Given this is the first MOOC I’ve taken I’m not sure if this is part of the general MOOC design or not. I didn’t enjoy the lectures themselves, mostly because I just don’t like the video-over-slides approach.
What I learned
The course covered 6 weeks and 8 modules. There were 10 quizzes and 4 programming assignments.
The modules were:
- Module 1: History and Evolution of Software Defined Networking
- Module 2: Control and Data Plane Separation
- Module 3: Virtual Networking
- Module 4: SDN Nuts and Bolts - Control Plane
- Module 5: SDN Nuts and Bolts - Data Plane
- Module 6: Programming SDNs
- Module 7: SDN in The Wild
- Module 8: The Future of SDN (and Wrap-Up)
Mostly I learned about some new and interesting SDN tools. I had used Mininet and Pox, and knew of Nox (related to Pox) and Floodlight, but everything else was new to me.
- Ryu seems very interesting, is written in Python (my favorite programming language) and is supported in OpenStack. The small OpenStack cloud I run is based on Essex, so there is no Quantum/Neutron networking, but someday we will upgrade and it will be interesting to try out some SDN capabilities. I suppose I should try some out in test, just toss up Devstack and see what I can find out.
- One of the people I work with is working on Open Daylight. Again, not part of the course, but something that I stumbled on while doing some extra reading.
- While Trema wasn’t used in the course, one of my co-workers came across it. It’s not in Python, so that is likely why it wasn’t in the course. Instead it’s written in Ruby and some C.
Don’t be surprised that Trema has an integrated OpenFlow network emulator and you do not need to prepare OpenFlow switches and end-hosts for testing controller applications!
The above is useful because most of the others work in combination with Mininet, which is an extra step.
- Click modular router project: I’m not clear on what this actually is.
- NetFGPA project I had come across this before–hardware data plane.
- Pyretic A SDN programming language, or more specifically a domain specific language, aka DSL.
- Resonance
- Interview with Jennifer Rexford I thought this was a great interview.
What now?
So, the question is: Now that I have had a good introduction to SDN, where do I go from here?
I don’t really know. It’s unlikely that I will be handed a real network to experiment with, other than perhaps one associated with a small OpenStack cluster, so this means I will have to work with virtualized networks, perhaps using Mininet. Trema is interesting to me because it (apparently) doesn’t require something like Mininet, and can create virtualized networks on its own.
One area I’m interested in doing some more research on is creating broken networks and seeing how that affects systems, especially distributed networking systems.