Kategoriler
Anlatım Genel Software Defined Networking

How To Install Open vSwitch 2.3.0 to Ubuntu 14.04.1 LTS

Assalamu alaikum wa rahmatullahi wa barakatuh,
Peace be upon you dear visitor 🙂

In this tutorial, I’m going to show you how to install Open vSwitch 2.3.0 in your Ubuntu 14.04.1 LTS. I modified the installation code in Mininet to do that.

If you want to install Mininet and other things (e.g. cbench, wireshark, pox and etc.) from scratch, you should modify the installation script in Mininet, too. Before modifying the installation code, open install.sh in mininet/util directory. Then;

  • Change OVS_RELEASE=1.4.0 to OVS_RELEASE=2.3.0.
  • If you have previous version of Open vSwitch installed in your system, you should remove it. Thus, use remove_ovs function to do that. You can either run this code separately or add to the function all.
  • Comment out ovs line in the function all and add function ubuntuOvs in it.

function all {

echo “Installing all packages except for -eix (doxypy, ivs, nox-classic)…”
kernel
mn_deps
# Skip mn_dev (doxypy/texlive/fonts/etc.) because it’s huge
# mn_dev
of
install_wireshark
remove_ovs
ubuntuOVS
pox
oftest
cbench
echo “Enjoy Mininet!”
}

The script that I use to install Mininet, OpenFlow, OpenFlow v1.3, Wireshark, Floodlight and Open vSwitch 2.3.0 into SDN_RAD folder under home directory is here. Use it at your own risk!

Assalamu alaikum wa rahmatullahi wa barakatuh 🙂

Kategoriler
Genel Software Defined Networking

Floodlight Exact/Prefix IP Matching Tutorial

Assalamu alaikum (Peace be upon you) dear friend =)

In this tutorial, I’m going to show you how to make exact IP matching in the Floodlight controller using Mininet, OpenFlow (of course) and Open vSwitch.

Let’s begin with the topology. We have me (Sadican), my workmate (Workmate) and a server (Bilmuh). All of them are connected to an Open vSwitch. Overall network is something like that:

tut_network_topology

Here are the IP addresses and switch ports for each node:

Node Name IP Address Connected Physical SW Port
Sadican 10.0.0.11 1
Workmate 10.0.0.55 2
Bilmuh Server 10.0.0.99 3

Me and my workmate want connect to the Bilmuh server. Whenever we try to connect to the server, (if there is no corresponding rule in the switch) switch sends packet-in message to the Floodlight (FL) controller. FL takes this message and extracts IP addresses. Then, it generates exact IP matching rules. There are several important things to do that.

  • First of all, FL has to know connected ports of nodes, which are given.
  • Secondly, controller must create 4 flow-mod add rules. 2 Rules for ARP packets from one node to another (e.g. Sadican to Bilmuh server and reverse) and 2 rules for TCP connections.
  • FL must specify data layer type in matching. For TCP, it is 0x800 and for ARP, it is 0x806. Do not forget that!
  • FL must also set both of the network masks to 32 bits (full) for source and destination IP addresses.

For TCP Connections:
match.setWildcards(Wildcards.FULL.matchOn(Flag.IN_PORT)
.matchOn(Flag.DL_TYPE).matchOn(Flag.NW_SRC).matchOn(Flag.NW_DST).withNwSrcMask(32).withNwDstMask(32));
match.setDataLayerType(Ethernet.TYPE_IPv4);
match.setNetworkProtocol(IPv4.PROTOCOL_TCP);

For ARP Connections:
match.setWildcards(Wildcards.FULL.matchOn(Flag.IN_PORT).matchOn(Flag.DL_TYPE).matchOn(Flag.NW_SRC).matchOn(Flag.NW_DST).withNwSrcMask(32).withNwDstMask(32));
match.setDataLayerType(Ethernet.TYPE_ARP);
match.setNetworkProtocol(IPv4.PROTOCOL_TCP);

You can download the Mininet script from here.

You can download the Floodlight module from here. 

If you will test this scenario, you should disable Forwarding and LearningSwitch modules. To do so, open floodlightdefault.properties file and delete the modules. Then, add our module (a.tests.ExactIPMatchingTutorial) in it. Since, they also establish paths between nodes. Here is a screenshot from FL’s UI:

Remarks:
If network source and destination masks are less than 32, exact IP matching becomes prefix matching. Actually, you can try it by changing withNwSrcMask and withNwDstMask to something like 16 or whatever. You will see that there will be less than 8 rules in the switch. It is because some rules overlap and they are removed during addition operation as specified in the OpenFlow version 1.0. Besides, exact IP addresses become prefixed IP addresses. For example, 10.0.0.11 becomes 10.0.0.0.

tut_fl_ss_exact_ip_matching