Kategoriler
Anlatım Software Defined Networking

IP Prefix Matching and Flow Insertion using Static Flow Pusher API of Floodlight

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

In this tutorial, I created a simple topology in Mininet (MN). Topology consists of one switch and two hosts. One of hosts is client and another is server. The topology is illustrated as below.

fl_ip_prefix_match_topo

I disabled Forwarding and LearningSwitch modules of Floodlight (FL) by deleting them from /floodlight/src/main/resources/floodlightdefault.properties. Thus, I was able to see that my code works perfectly. If you disable these two modules and run your MN topology code, you see that client and server can not communicate with each other. Because, there will be no flow entry in the switch to forward packets.

In order to provide connection between these two nodes, at first we must insert ARP flow entry to the switch so that client can find server’s MAC address. I used Static Flow Pusher API of Floodlight to insert flows. In the Static Flow Pusher API page, there is a python script that allows developers to insert flow entries to switches. The following two flow codes do the job.

arp_client_server = {
 'switch':"00:00:00:00:00:00:00:01", # DPID of SW
 'name':"arp_client_server", # unique name of flow entry
 'cookie':"1", # opaque identifier
 'priority':"32767", # highest flow priority
 'ingress-port':"1", # packet that comes in from port ### of sw
 'ether-type':"0x806", # hex of ethernet type of ARP
 'active':"true", # activate flow entry
 'actions':"output=2" # forward matched packet from port ### of sw
 }

arp_server_client = {
 'switch':"00:00:00:00:00:00:00:01",
 'name':"arp_server_client", 
 'cookie':"2",
 'priority':"32767",
 'ingress-port':"2",
 'ether-type':"0x806",
 'active':"true",
 'actions':"output=1"
 }

arp_client_server provides ARP packet forwarding from client to server. arp_server_client does the reverse.

As a next step, tcp flow entries must be inserted to the sw. To do so, I wrote the following codes.

ip_host_server = {
 'switch':"00:00:00:00:00:00:00:01",
 'name':"ip_host_server",
 'cookie':"3",
 'priority':"32767", 
 'ether-type':"0x800", # for TCP
 'src-ip':"10.0.0.0/8", # source IP prefix matching
 'active':"true",
 'ingress-port':"1",
 'actions':"output=2"
 }

ip_server_host = {
 'switch':"00:00:00:00:00:00:00:01",
 'name':"ip_server_host",
 'cookie':"4",
 'priority':"32767", 
 'ether-type':"0x800",
 'src-ip':"10.0.0.0/8", 
 'active':"true",
 'ingress-port':"2",
 'actions':"output=1"
 }

Notice that, I used IP prefix matching in src-ip tag. That means, all packets sending from hosts with 10.0.0.0/8 match with this entry. If you do the same, you will have such a switch as shown in the figure below.

fl_ip_prefix_match_sw

After insertion of required flow entries, I ping server from host. The result is as follows:

fl_ip_prefix_match_mn

If you examine the ping result shown above, you will realize that ping time is a lot less when you use Forwarding or LearningSwitch module. That is because, switch already has required flow entries to forward packets.

Assalamu alaikum wa rahmatullahi wa barakatuh 🙂

Kategoriler
Anlatım Software Defined Networking

Floodlight Unknown Host Discovery

Assalamu alaikum wa rahmatulllahi wa barakatuh.
(Peace be upon you dear visitor.)

In my tests, I saw that Floodlight discovers an unknown host per switch as in the figure below.

fl_unknown_host_discovery

I have Floodlight (FL), Mininet (MN) and Open VSwitch (OVS) installed in the same machine where Ubuntu 14.04 LTS x64 is running. As far as I know, OVS 2.0.1 supports kernel from 2.6.32 to 3.10. Since my Ubuntu kernel is 3.13, this may be the source of problem. Update of OVS or downgrade of Ubuntu kernel may solve the problem but I have another simple, not that good, solution.

With the help and advise of Hung-Wei Chiu from Floodlight-Developers group, I noticed that there are many IPv6 packets in the FL logs as he had told. This unknown IPv6 addresses were the same as MAC addresses of switches or hosts. As a solution to this problem, I disabled IPv6 in my computer.

In order to disable IPv6, you must append the three lines of code as in below to the file located in /etc/sysctl.conf . Note that you need root privileges.

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

After modification, you can either reboot your computer or execute sudo sysctl -p command in terminal.

However, this method may not work as expected. (Well, it did not work for me) Alternatively, there is another way of disabling IPv6 in Linux. Using your favorite text editor, open /etc/default/grub file. Then, add ipv6.disable=1 to the GRUB_CMDLINE_LINUX line. In my computer (Ubuntu 14.04 LTS x64), it was like:

GRUB_CMDLINE_LINUX=""

After change:

GRUB_CMDLINE_LINUX="ipv6.disable=1"

After this modification, you must update grub with executing the command sudo update-grub . Finally, reboot your computer and problem solved!

Assalamu alaikum wa rahmatulllahi wa barakatuh.

Kategoriler
Genel

Bir Müslüman Kardeş’in Hicreti

Allah ‘ın selamı, rahmeti, bereketi, ihsanı, ikramı, affı, mağfireti ve rızası üzerine olsun.

Bir gün Güzelyalı’da otobüs durağında beklerken birden gözümün önünde bir kağıt belirdi. Bir el ısrarla kağıdın üzerindeki yazıyı gösteriyordu. Çok da güzel olmayan bir yazıyla yazılmış bir adres vardı. Ben kağıdı bana uzatan kişiye bakmadan adresi okudum. Belli ki çok yaklaşmış ama bir türlü bulamamış. Sonra başımı çevirdim ve buralardan olmayan birinin adres aradığını anladım.

Hiç bir şey söylemeden kağıttaki adresi gösteriyordu. Acaba ingilizce bile bilmiyor mu diye düşündüm. Sonra belki konuşamıyordur ama en azından anlar herhalde diyerek “Ben de buraları iyi bilmiyorum. Ama çok yaklaşmışsın. Bir iki kişiye soracağım. Beni takip et.” dedim. Birden yabancının yüzünde bir sevinç ifadesi belirdi. Güldü ve “Aaa sen İngilizce konuşabiliyor musun?” dedi. Ben de “Evet.” dedim ve konuşarak yürümeye devam ettik. Tam adresi öğrendikten sonra yolu tarif ettim. Kısa bir vedalaşmadan sonra ben geri durağa döndüm. O da tarif ettiğim şekilde yürümeye başladı.

Sonra durup düşündüm. Bulunduğum yerde İngilizce konuşabilecek çok az kişi vardı. Bir şekilde hata yaparsa doğru adresi bulması bütün gününü alabilirdi belki. Ben de hemen arkasından koştum. Birlikte adresi aramaya başladık. (Hala adresin ne adresi olduğunu bilmiyordum.)

Yazılan adresteki yere geldik (çok yakındı). Adres bir inşaat firmasına aitmiş. Fakat firma yerinde yoktu. Tevafuğa bakın ki ben bu firmayı, sahiplerini uzaktan da olsa tanıyorum. Adresin yanlış olduğunu anladıktan sonra firmayı aradık. Firmaya gitmek üzere yola koyulduk ve tabii ki yolda konuşmaya başladık.

Kendisi Müslüman Kardeşler’denmiş. “Mısır’dan buraya niye geldin?” diye sordum. “Pek çok sebebi var. Ama temel sebep Mısır’daki gösterilere katılmış olmam.” dedi. Kendisini gösterilerde tutuklayıp içeri almışlar.  “Polisler rastgele, önlerine kim gelirse tutup içeri alabiliyorlar.” manasında şeyler söyledi. İçeride bir gün kalmış. Sorgulama ve fişlemeden sonra serbest bırakmışlar. “İçeri girip çıktıktan sonra artık oralarda duramazdım. Mısır dışındaki herhangi bir yerde yaşayabilirim. Fakat Mısır’da daha fazla kalamazdım.” dedi. (Düşünebiliyor musunuz? Öz vatanınızda yaşayamamak…) “Neden?” diye sordum. “Artık benim herşeyimi biliyorlar. Fişlediler. İstedikleri zaman beni içeri alabilirler. Hatta bana zarar bile verebilirler.” dedi. Sanırım burada idamı kastediyordu. Belki o kadar önemli birisi değildir ama bilmiyoruz. Kimse durup dururken ciddi problem olmasa vatanını bırakıp gitmez, orada yaşayamam demezdi herhalde. Sormak istediğim yüzlerce soru vardı ama canını sıkmak istemedim. Nitekim yaşananlar hoş şeyler değil. “Peki ailen ne durumda?” diye sordum. “Bazı akrabalarım hala orada. Fakat ablam ailesiyle birlikte buraya geldi. Ben de şimdilik yanlarında kalıyorum.” dedi. Daha önce başka bir ülkedeymiş. Oradan Türkiye’ye gelmiş. Burada iş aramaya başlamış. O gün de iş başvurusuna gidiyormuş.

Yakın zamanda tekrar konuştuk. Vizesi bitmek üzere. İş başvurusundan olumlu bir yanıt gelmemiş olacak ki şimdi geldiği ülkeye geri dönmeye çalışıyor. Elden bir şey gelmiyor olması çok üzücü. Zaten oradan buraya gelmiş. Herhalde orada da işler iyi gitmemişti. Neyse… Biz dua edelim de orada (bir inşaat firmasında) iş bulabilsin.

Allah o kardeşimizin yaşadıklarını bize yaşatmasın (Âmin). Rabbimiz’e verdiği sonsuz nimetlerden ötürü O’nun büyüklüğünce şükürler olsun.

Selam, dua ve muhabbetle,
Allah ‘a emanet olunuz.