SOFTWARE DEFINED NETWORK
Tim Teaching MKP SDN
MININET
BAGIAN 3
S1 Teknik Telekomunikasi
Fakultas Teknik Elektro
Mininet adalah emulator berbasis CLI yang digunakan untuk membuat
sebuah 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
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 hadware aslinya
Kemungkinan akurasinya kurang ketika terlalu banyak perangkat yang diemulatorkan
Instalasi Mininet
Cara instalasi mininet di Ubuntu
• Menginstall : Mininet + Open vSwtich + wireshark + etc 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
$ mn --topo linear,3 --mac --switch ovsk --controller=remote
Linear, membuat topologi linear dengan 3 switch dan 1 host tiap switchnya :
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)
Custom Topologi VND
• Gambar topologi yang diinginkanCustom Topologi VND
• Lakukan konfigurasi pada controller dengan melakukan double click pada icon controller
Setting mulai dari ip controller, apakah controller bersifat remote atau tidak dan jenis controller yang di gunakan. Setelah melakukan setting tinggal klik apply setting. Selain itu kita juga bisa membuat flow table sesuai dengan yang kita inginkan dengan mengklik create 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
Custom Topologi VND
$ sudo ./pox.py forwarding.l2_learning
$ sudo ./<nama file vnd>
Custom Topologi VND
Custom Topologi MiniEdit
2. Menggunakan GUI untuk membentuk topologi dengan MiniEdit
• Jalankan MiniEdit dengan menggunakan perintah
Custom Topologi MiniEdit
• Bentuk topologi yang diinginkanCustom Topologi MiniEdit
• Setelah di bentuk topologi yang diinginkan, lakukan konfigurasi pada controller Kita dapat mengatur nama, port
controller dan juga ip yang di gunakan oleh controller.
Custom Topologi MiniEdit
• Lalu lakukan setting pada miniedit di edit>preference
Centang pada start CLI untuk memunculkan CLI mininet pada terminal. Lalu klik ok
• Sebelum menjalankan mininet dari miniedit terlebih dahulu kita jalankan controller yang di gunakan, dalam hal ini saya menggunakan controller pox sebagai controller dengan fungsi forwarding l2 learning
Custom Topologi MiniEdit
Custom Topologi MiniEdit
• Lalu buka kembali terminal yang di gunakan untuk mejalankan miniedit tadi.
Mininet siap di gunakan, lakukan perintah pingall untuk mengetes koneksi antar host. Untuk mengeluarkan miniedit exit terlebih dahulu pada mininet
Custom Topologi Format .py
3. Dengan menuliskan script dalam format .py seperti contoh di bawah ini:
from mininet.topo import Topo
from 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 .py
self.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 dalam mb 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 jalankan controller yang di gunakan, dalam hal ini saya menggunakan controller pox sebagai 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 koneksi antar 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
Command Line Interface pada Mininet
mininet> dumpmininet> intfs
• Melihat informasi nodes 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
Command Line Interface pada Mininet
Mengirim packet icmp antar host 1 dengan host 2 secara terus menerus.
untuk menghentikan dengan menekan ctrl+c
mininet> h1 ping h2
mininet> pingall
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
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
Command Line Interface pada Mininet
mininet> xterm <nama device>
Menghidupkan switch s3
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
Command Line Interface pada Mininet
Untuk menghapus flow table pada spesifik switch kit bisa menggunakan xterm dengan cara sebagai berikut :
• Buka xterm s1 pada mininet
• Cek flow table pada s1 dengan perintah sebagai berikut
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
Command Line Interface pada Mininet
Lalu 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
Command Line Interface pada Mininet
• Lalu lakukan pengecekan ping pada mininet dengan pingallTetapi kenapa belum bisa melakukan ping pada packet yang melewati s1 ? karena pada penambahan flow table yang kita buat kita hanya menambahkan rules flow table yang berasal dari port 1 lalu melakukan action dengan meneruskan ke port 2. sedangkan ketika paket masuk dari port 2 kita tidak mengatur rules pada flow table 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
Command Line Interface pada Mininet
Flow 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 bisa terhubung dengan semua host yang lain
Memberikan background traffic
Untuk membuat sebuah background traffic kita menggunakan iperf dengan host tujuan sebagai server dan host pengirim sebagai client.
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>
Memberikan background traffic
# iperf -c <ip server> -u -t <waktu> -i <waktu print traffic> -b <bandwith>
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 background traffic melebihi dari kapasitas link.