BAGIAN 3 MININET - mybogi.files.wordpress.comBerikut adalah contoh dari beberapa command yang ada...

45
SOFTWARE DEFINED NETWORK Tim Teaching MKP SDN MININET BAGIAN 3 S1 Teknik Telekomunikasi Fakultas Teknik Elektro 2016

Transcript of BAGIAN 3 MININET - mybogi.files.wordpress.comBerikut adalah contoh dari beberapa command yang ada...

SOFTWARE DEFINED NETWORKTim Teaching MKP SDN

MININETBAGIAN 3

S1 Teknik TelekomunikasiFakultas Teknik Elektro

2016

Mininet adalah emulator berbasis CLI yang digunakan untuk membuatsebuah topologi jaringan pada Software Defined Network.

• Sebuah emulator jaringan yang menciptakan jaringan virtual yang realistis.

• Berjalan dengan kernel yang sama seperti aslinya, switch dan kode aplikasi pada mesin yang seperti aslinya.

• Menyediakan Command Line Interface (CLI) dan Application Programming Interface (API)

• Abstraction

• Host: mengemulatorkan pada level OS process

• Switch: mengemulatorkan berdasarkan fungsi dari software pada switch

• Contoh : Open vSwitch, SoftSwitch

Apa itu mininet ?

Tipe-tipe dari Testbeds pada Jaringan

Platform Advantages Disadvantages

Hardware testbed Lebih Cepat Akurat

Mahal Susah untuk di konfigurasi ulang Susah untuk di ubah Susah untuk di download

Simulator Tidak mahal, fleksibel Mudah untuk di download Kurang akurat

May require app changes Might not run OS code May not be “believable” May be slow/non-interactive

Emulator Tidak mahal, fleksibel Memiliki konfigurasi

seperti aslinya Cukup akurat Mudah di download Cepat

Lebih lambat dari hadwareaslinya

Kemungkinan akurasinya kurangketika terlalu banyak perangkatyang diemulatorkan

Instalasi MininetCara instalasi mininet di Ubuntu

• Menginstall : Mininet + Open vSwtich + wireshark + etc dengan perintah :

• Clone mininet dari github dengan perintah :

Instalasi Mininet lanjut• Melakukan pengecekan apakah mininet sudah terinstall dengan benar atau belum

dengan perintah mn –test pingall .

$ mn --topo single,4 --mac --switch ovsk --controller=remote

$ mn --topo tree,2 --mac --switch ovsk --controller=remote

•Terdapat beberapa topologi bawaan pada mininet :Contoh command untuk membuat topologi bawaan dari mininet:

Single, membuat topologi single switch dengan jumlah host 4 :

Mininet Topologi

Tree, membuat topologi tree yang memiliki level kedalaman 2 :

$ mn --topo linear,3 --mac --switch ovsk --controller=remote

Linear, membuat topologi linear dengan 3 switch dan 1 host tiap switchnya :

Mininet Topologi

Custom Topologi VND• Pada mininet kita juga dapat melakukana custom topologi. Kita dapat

menggunakan berbagai pilihan dalam membuat custom topologi.1. Menggambarkan topologi dengan virtuan network description (VND)

• Akses VND secara online pada situs http://www.ramonfontes.com/vnd/

Custom Topologi VND• Gambar topologi yang diinginkan

Custom Topologi VND• Lakukan konfigurasi pada controller dengan melakukan double click pada

icon controller

Setting mulai dari ip controller, apakah controllerbersifat remote atau tidak dan jenis controller yang digunakan. Setelah melakukan setting tinggal klik applysetting. Selain itu kita juga bisa membuat flow tablesesuai dengan yang kita inginkan dengan mengklikcreate flow table

Custom Topologi VND

• Klik File>Export>Export to mininet, kemudian ubah format file menjadi .py

• Copy file eksport yang telah di buat ke dalam folder mininet/examples

• Buat agar file vnd dapat dieksekusi oleh mininet dengan bantuan chmod +x

• Untuk melakukan pengecekan apakah topologi yang kita gunakan sudah berjalan

dengan bener atau tidak kita. Kita lakukan pengecekan dengan menjalankan

topologi yang telah di buat. tetapi sebelum menjalankan topologi yang telah di

buat kita jalankan controllernya terlebih dahulu. Pada percobaan ini controller

yang di gunakan adalah controller pox sebagai controller dengan fungsi

forwarding l2 learning

$ chmod +x <nama file vnd>

Custom Topologi VND

$ sudo ./pox.py forwarding.l2_learning

$ sudo ./<nama file vnd>

• Jalankan script topologi dengan menggunakan command

Custom Topologi VND

• Lalu lakukan pengecekan koneksi dengan perintah pingall pada mininet

Custom Topologi MiniEdit2. Menggunakan GUI untuk membentuk topologi dengan MiniEdit

• Jalankan MiniEdit dengan menggunakan perintah

• Lalu akan muncul tampilan miniedit sebagai berikut

Custom Topologi MiniEdit• Bentuk topologi yang diinginkan

Custom Topologi MiniEdit• Setelah di bentuk topologi yang diinginkan, lakukan konfigurasi pada controller

Kita dapat mengatur nama, portcontroller dan juga ip yang digunakan oleh controller.

Custom Topologi MiniEdit• Lalu lakukan setting pada miniedit di edit>preference

Centang pada start CLI untukmemunculkan CLI mininet padaterminal. Lalu klik ok

• Sebelum menjalankan mininet dari miniedit terlebih dahulu kita jalankancontroller yang di gunakan, dalam hal ini saya menggunakan controller poxsebagai controller dengan fungsi forwarding l2 learning

Custom Topologi MiniEdit• Jalankan minieditnya dengan mengklik run pada pojok kiri bawah

Custom Topologi MiniEdit• Lalu buka kembali terminal yang di gunakan untuk mejalankan

miniedit tadi.

Mininet siap di gunakan, lakukan perintah pingall untuk mengetes koneksi antarhost. Untuk mengeluarkan miniedit exit terlebih dahulu pada mininet

Custom Topologi Format .py3. Dengan menuliskan script dalam format .py seperti contoh di bawah ini:

from mininet.topo import Topofrom mininet.link import TCLink,Link

class Topologi(Topo):def __init__(self):Topo.__init__(self)

h1 = self.addHost('h1', mac= '00:00:00:00:01:01', ip='10.0.0.1/24')h2 = self.addHost('h2', mac= '00:00:00:00:01:02', ip='10.0.0.2/24')h3 = self.addHost('h3', mac= '00:00:00:00:01:03', ip='10.0.0.3/24')h4 = self.addHost('h4', mac= '00:00:00:00:01:04', ip='10.0.0.4/24')

s1 = self.addSwitch('s1', mac='00:00:00:00:00:01')s2 = self.addSwitch('s2', mac='00:00:00:00:00:02')s3 = self.addSwitch('s3', mac='00:00:00:00:00:03')s4 = self.addSwitch('s4', mac='00:00:00:00:00:04')

Custom Topologi Format .pyself.addLink( s1 , h1 )self.addLink( s2 , h2 )self.addLink( s3 , h3 )self.addLink( s4 , h4 )

self.addLink(s1, s2, cls=TCLink, bw=70, delay='1ms')self.addLink(s1, s3, cls=TCLink, bw=100, delay='4ms')self.addLink(s2, s3, cls=TCLink, bw=90, delay='2ms')self.addLink(s3, s4, cls=TCLink, bw=90, delay='3ms')

topos = {'switch4' :(lambda:Topologi())}

self.addHost Membangun entitas host dengan menggunakan nama yang kita inginkan. Disini dapat pula di spesifikasikan mac address dan IP address yang diinginkan

self.addSwitch Membangun entitas switch, dapat pula di spesifikasikan mac address yang diinginkan

self.addLink Membangun link antar 2 node dan dapat mendefinisikan bandwidth dalammb dan delay dalam ms pada setiap link

Costum Topologi Format .py• Setelah script di buat, file di simpan dalam format .py dan di simpan pada

direktori mininet/custom

• Sebelum menjalankan mininet dari miniedit terlebih dahulu kita jalankancontroller yang di gunakan, dalam hal ini saya menggunakan controller poxsebagai controller dengan fungsi forwarding l2 learning

Costum Topologi Format .py• Lalu jalankan file topologi yang telah di simpan dengan perintah

# sudo mn --custom switch3h.py --topo switch3 --mac --switch ovsk --controller=remote

• Mininet siap di gunakan, lakukan perintah pingall untuk mengetes koneksiantar host.

Command Line Interface pada Mininet

mininet> nodes

• Melihat nodes yang ada di topologi

Setelah kita masuk kedalam mininet kita bisa melakukan interaksi antar host dan

switch. Berikut adalah contoh dari beberapa command yang ada pada mininet.

mininet> net

• Melihat interaksi links di topologi

Command Line Interface pada Mininet

mininet> dump

mininet> intfs

• Melihat informasi nodes di topologi

• Melihat seluruh interface pada masing-masing device di topologi

Command Line Interface pada Mininet

mininet> links

• Melihat status setiap link di topologi

mininet> h1 ping –c 3 h2

• Test koneksi antara host satu dengan host lainya

Melakukan perintah ping antar host 1 dengan host 2 sebanyak 3 kali.

Command Line Interface pada MininetMengirim packet icmp antar host 1 dengan host 2 secara terus menerus.

untuk menghentikan dengan menekan ctrl+c

mininet> h1 ping h2

mininet> pingall• Test koneksi antar semua host

Command Line Interface pada Mininet

mininet> link <device 1> <device 2> up/down

mininet> ports

• Melihat port yang aktif pada setiap node di topologi

• Mematikan link antar dua node

Mematikan link antara s2 dengan s3

mininet> link s2 s3 down

Command Line Interface pada Mininet

mininet> switch <nama node> start/stop

Menghidupkan link antara s2 dengan s3

• Mematikan dan menyalakan salah satu node di topologi

Mematikan switch s3

mininet> link s2 s3 up

Command Line Interface pada Mininet

mininet> xterm <nama device>

Menghidupkan switch s3

• Membuka command line interface pada perangkat

Command Line Interface pada Mininet

mininet> dpctl <kondisi 1> - <kondisi 2>

• Melihat isi, menghapus, dan menambahkan flow tabel pada switch openflow

Melihat isi dari flow table pada switch

Menghapus flow table pada semua switch

Command Line Interface pada MininetUntuk menghapus flow table pada spesifik switch kit bisa menggunakan xtermdengan cara sebagai berikut :• Buka xterm s1 pada mininet

• Cek flow table pada s1 dengan perintah sebagai berikut

# ovs-ofctl dump-flows s1

Command Line Interface pada Mininet• Lalu hapus flow table pada s1 dengan perintah sebagai berikut

# ovs-ofctl del-flows s1

•Lalu cek flow table pada switch 1 dengan perintah berikut

Flow table telah hilang dari switch 1

# ovs-ofctl dump-flows s1

Command Line Interface pada MininetLalu gimana cara menambahkan flow table secara manual? Ini dia caranya :• Pertama buka kembali xterm pada node yang kita ingin tambah flow table

sendiri, dalam kasus ini switch 1 yang telah kita hapus flow tabelnya tadi.

Command Line Interface pada Mininet• Untuk menambahkan rules pada flow table kita menggunakan perintah.

• Lalu kita lihat rules untuk flow table pada switch 1 dengan perintah

# ovs-ofctl add-flows s1 in_port=1, action=output:2

# ovs-ofctl dump-flows s1

Command Line Interface pada Mininet• Lalu lakukan pengecekan ping pada mininet dengan pingall

Tetapi kenapa belum bisa melakukan ping pada packet yang melewati s1 ? karenapada penambahan flow table yang kita buat kita hanya menambahkan rules flowtable yang berasal dari port 1 lalu melakukan action dengan meneruskan ke port2. sedangkan ketika paket masuk dari port 2 kita tidak mengatur rules pada flowtable sehingga switch akan melakukan drop pada packet yang masuk.

Command Line Interface pada Mininet• Sekarang kita menabahkan rules untuk port in 2 lalu melakukan action dengan

mengeluarkannya melalui port 1.

# ovs-ofctl add-flows s1 in_port=2, action=output:1

• Lakukan pengecekan flow table

# ovs-ofctl dump-flows s1

Command Line Interface pada MininetFlow table yang ada pada switch 1 sekarang adalah ketika paket masuk melalui

port 1 switch akan meneruskan packet ke port 2 sesuai dengan flow table yang

di buat. Begitu juga sebalikanya ketika ada packet masuk dari port 2 switch 1

akan meneruskan packet melalui port 1.

• Lalukan test pingall pada mininet, untuk melihat apakah host 1 sudah bisaterhubung dengan semua host yang lain

Memberikan background trafficUntuk membuat sebuah background traffic kita menggunakan iperf dengan hosttujuan sebagai server dan host pengirim sebagai client.• Jalankan mininet yang telah terhubung semua hostnya

Memberikan background traffic• Setelah itu buka xterm host yang ingin menjadi server dan client, dalam hal ini

menggunakan h1 sebagai pengirim dan h3 sebagai penerima.

Memberikan background traffic• Lakukan ping h1 dengan h3 untuk melihat waktu yang di butuhkan untuk

melakukan ping antar host 1 dengan host 3 sebelum adanya background traffic.

Memberikan background traffic

# iperf -s -u -i <waktu print traffic>

• Buka xterm h3 sebagai penerima packet traffic (server) dan jalankan command

Memberikan background traffic

# iperf -c <ip server> -u -t <waktu> -i <waktu print traffic> -b <bandwith>

• Buka xterm h1 sebagai pengirim packet traffic (client) dan jalankan command

Memberikan background traffic• Lalu lakukan ping antara h1 dan h3 pada mininet untuk melihat perubahan

waktu yang di dapat ketika melakukan ping.

Disini didapat waktu ping yang lebih lama ketika jaringan diberikan backgroundtraffic melebihi dari kapasitas link.

Referensi

• http://www.brianlinkletter.com/using-pox-components-to-create-a-software-defined-networking-application/

• http://www.ramonfontes.com/vnd/

• http://mininet.org/walkthrough/#link-updown

• http://dpnm.postech.ac.kr/cs702/2015/lecture/Mininet-Tutorial.pptx