SDN

Firewall pada OpenFlow dengan POX dan Mininet

OpenFlow adalah sebuah protokol SDN (Software Defined Networking) yang memisahkan control plane dan data plane dari suatu perangkat. OpenFlow adalah salah satu protokol utama dalam SDN yang dibuat oleh Martin Casado saat melakukan riset S3.

OpenFlow Architecture

Pada dasarnya OpenFlow memisahkan control plane dari sebuah perangkat, perangkat-perangkat ini akan bertindak sebagai openflow agent dan tidak dapat menjalankan fungsi-fungsi exisiting seperti routing, switching, dan yang lain. Sehingga OpenFlow adalah sebuah low-level protocol yang langsung berinteraksi dengan interface perangkat (dalam hal ini berinteraksi dengan forwarding table, ASIC), menentukan bagaimana trafik yang masuk dari satu interface akan di forward dengan sebuah flow table dari controller.

Firewall pada OpenFlow bekerja dengan membaca trafik yang masuk dan menentukan apakah trafik tersebut di blok atau di izinkan dengan flow table. Untuk memahami firewall pada openflow lebih dalam, disarankan terlebih dahulu memahami bagaimana OpenFlow bekerja.

Syarat Software

  • Mininet, dapat dengan mudah di install didalam ubuntu, dengan perintah berikut didalam terminal
  • POX Controller,  dapat dengan mudah di clone dengan git dari repositorynya.

Implementasi

Topologi Mininet

Pembuatan topologi pada contoh implementasi firewall kali ini adalah dengan memodifikasi script python pada mininet sehingga dapat dibuat topologi yang sesuai keinginan.

topology

Buat script python dibawah, misalnya adalah startopo.py

Untuk memperdalam bagaimana cara membuat custom topology didalam mininet dapat membaca artikel Introduction to Mininet.

Custom Firewall

Untuk membuat custom firewall pada POX Controller, definisikan terlebih dahulu parameter apa yang harus digunakan untuk melakukan filter. Berikut adalah parameter-parameter paket yang ada didalam openflow 1.0 :

parameter openflow

Sebagai contoh untuk melakukan filter terhadap IP Address, dl_type harus didefinisikan terlebih dahulu. begitu juga jika ingin melakukan filter terhadap layer transport, definisikan terlebih dahulu nw_proto pada layer 3.

Kali ini mari kita coba definiskan firewall didalam layer 3. kita punya 1 rules :

  • Block komunikasi antara H1 dan H3

Buat script python untuk firewall didalam folder pox/pox/misc, contohnya : firewall_l3.py

Lalu jalankan controller POX :

dan jalankan topologi yang telah dibuat dengan perintah :

Lakukan test ping pada mininet dengan menggunakan perintah pingall

Pada controller terlihat bahwa POX sedang melakukan instalasi flow ke s1.

Berikut adalah flow table yang terinstall pada s1 yang telah kita buat dengan mininet :

Referensi :

  1. Network Programmability and Automation.
  2. Implementing a Layer-2 Firewall