Programming SDN Networks using FastMaple: A Tutorial - snlab/tutorial-sc16 GitHub Wiki
Introduction
The Software-Defined Networking has become a major trend in the network
management today. However, even with the most successful SDN controller -- the
OpenDaylight
project, writing SDN programs can still be very difficult:
-
The OpenFlow protocol enables the ability to achieve fine-grained control over the network traffic. However, constructing flow rules correctly, especially for multiple control programs, is not trivial.
-
SDN is designed to provide more flexible and dynamic control over the network. Most controllers use a pub-sub system and let developers handle the data changes themselves. Even though such an approach provides more flexibility, it usually makes the programs much more complex not to compromise consistency and efficiency.
In this tutorial, we introduce the fast-maple programming framework with a number of tools to develop SDN applications that are not only simple but also consistent and efficient.
Lab #0: Set up the environment
- Download docker images (web-ui, SFM)
- Star the controller
- Launch docker instances
- Start the controller
- Using the script we provide to start mininet and bro (?)
- Go to IDE and connect to the controller
Lab #1: Customise your application
- Change the file extension (?)
- Start the server
- Make queries to different file types (?)
- View the graph (?)
Understand the tricks under the hood
Maple
Maple is a high-level network programming framework. It allows programmers to write so-called algorithmic policies instead of constructing low-level flow rules. Maple can dynamically construct the flow rules and compute their priorities to make sure the behaviours on the data plane is consistent with the control plane policies (programs).
With the help of deep packet inspection (DPI), Maple can be extended to support application-layer algorithmic policies.
FAST
FAST is a programming framework which is aimed to help build consistent, efficient and robust SDN applications. It can automatically track the data dependencies of an application in a fine-grained way and then only subscribes to the necessary data change events. FAST can also restore the correct system state when an application fails or becomes inconsistent so that the application can start at a clean state.