OpenFlow, SDN

Testing Ryu Multipath Routing with Load Balancing on Mininet

Continuing my previous article on Multipath Routing with Loading Balancing using Ryu OpenFlow Controller, which discusses the basic theory involving this source code in Github, I will demonstrate how to test out the multipath routing capabilities in a virtualized network using Mininet. As you may know, Mininet is a network emulator that allows us create virtual networks to quickly prototype network topologies and scenarios, especially for OpenFlow and SDNs, in commodity systems, such as our dirt cheap (and trashy) laptops.

You can follow through this article to read as just as a proof of concept, or it can even be used as a tutorial, either way works.

Software used in this article, some knowledge of it might be useful:

  • Mininet, the OpenFlow network emulator.
  • Ryu, the OpenFlow controller.

Continue reading

Advertisements
OpenFlow, SDN

Multipath Routing with Load Balancing using RYU OpenFlow Controller

This is a write up article of the program of my undergraduate thesis with the title “Multipath Routing with Load Balancing with OpenFlow Software-Defined Networking”, using this source code in Github.

Background

Multipath routing is a routing method which finds multiple routes to a destination in a network topology. By providing multiple routes to a destination, it is possible for network traffic to be distributed fairly through multiple paths in the network, or a mechanism known as load-balancing, thus increasing the efficiency of network utility.

Basically what we want is this:

output

Source: Dario Banfi

Why?

  • Network Utility: means a more balanced network.
  • Bandwidth: possibly an increased bandwidth through parallel transport.
  • Security: harder to sniff packets.

This specific topic has been researched for quite awhile, a simple Wikipedia search results in the earliest research being in 2001.

With the rise of Software-Defined Networks recently through the OpenFlow protocol, Multipath Routing has been made simpler, with a more programmable approach to computer networks. Since version 1.1, the OpenFlow protocol supported Group Tables, which basically allows us to define or apply multiple actions to a specific flow. Atlassian, for the Floodlight controller, has a comprehensive explanation of this specific feature, but basically there are 4 types of Group Tables, and the OpenFlow Specification has quite a lazy but effective explanation of these:

– All – used for multicast and flooding
Select – used for multipath
– Indirect – simple indirection
– Fast Failover – use first live port

Oh, yeah..

Implementation

So here I implemented using that specific feature of OpenFlow to create a simple Multipath Routing app/module with the Ryu OpenFlow controller. To put it simply, what I needed to achieve this was identify:

  1. A multiple path finding algorithm: DFS.
  2. Path cost calculation.
  3. How to use the OpenFlow Protocol.

Continue reading

Android, Internet Of Things, MQTT

MQTT Android Client Tutorial

MQTT is one of the popular data communication or messaging protocols that are becoming widely used for machine-to-machine (M2M) communication, or the computer network trend that is popularly coined as “Internet of Things”. MQTT (Message Queue Transport Telemetry) is a messaging protocol with a publish-subscribe pattern, one of the messaging protocol regarded as “light-weight”, which is important for the Internet of Things architecture, because it heavily involves low-powered devices, such as sensor nodes, microcontrollers, and the like.

One of the many uses of the MQTT protocol is to send sensor data from embedded devices. Sometimes we want those data to be sent to our smartphones which could help us monitor some important things from afar, and that’s what I’ll be showing you here in this tutorial, specifically using the Android OS.

If you’re too busy or too lazy to be reading this tutorial, you can get the full code in my Github page.

Software used in this tutorial, be sure to have them installed:
-Android Studio
-Python 2.7

Outline what I will be covering:
1. Sorting out MQTT dependencies in Android Studio
2. Setting up a cloud MQTT broker in CloudMQTT
3. Setting up a basic MQTT client and service in Android
4. Setting up a mock data publisher with Python
5. Visualizing data with MPAndroidCharts library

Continue reading