Tujuan demo kali ini yaitu mengimplementasikan switching hub (1 Switch, 3 Host) sederhana sebagai contoh untuk menunjukan metode bagaimana cara penerapan penggunaan Ryu.

Switching hub memiliki fungsi yang beragam, berikut contoh fungsinya:

  • Mempelajari MAC Address dari host yang terkoneksi ke port dan menyimpannya di MAC Address Table.
  • Ketika menerima paket yang ditujukan ke suatu host yang dikenal (MAC Addressnya tersimpan), maka akan dikirim secara langsung.
  • Ketika menerima paket yang ditujukan ke host yang belum dikenal (MAC Addressnya belum tersimpan), maka secara otomatis melakukan flooding data.

Switching Hub by OpenFlow

Switch Openflow bisa menerima instruksi dari Controller openflow seperti Ryu contohnya.

  • Menuliskan lagi alamat paket yang diterima atau dikirim dari port tertentu.
  • Mentransfer paket yang diterima ke kontroler (Packet-In).
  • Mentransfer paket yang diteruskan oleh kontroler dari port tertentu (Packet-Out).

Switching Hub bisa mengkombinasikan beberapa fungsi di atas. Pertama-tama Packet-In function digunakan untuk mempelajari MAC Address nya, yang mana kontroler menggunakan Packet-In function untuk menerima paket dari switch. Switch lalu menganalisa paket yang diterima untuk mempelajari MAC address dari host dan informasi tentang port yang terhubung.

Setelah dipelajari, switch mentransfer paket yang diterima. Kemudian Switch menginvestigasi apakah destination MAC Address dari paket itu sesuai dengan host. Tergantung dari hasil investigasi switch, device akan melakukan hal ini:

  • Jika host sudah mempelajari host … Gunakan fungsi Packet-Out untuk mentransfer paket dari port yang terhubung.
  • Jika host tidak diketahui … Gunakan fungsi Packet-In untuk melakukan flooding

Berikut langkah-langkahnya dengan gambar:

1. Status Awal

Ini adalah status awal ketika flow table nya kosong. Kita asumsikan host A terkoneksi dengan port 1, host B ke port 4 dan host C ke port 3.

2. Host A -> Host B

Ketika paket terkirim dari host A ke host B, maka pesan Packet-In terkirim dan MAC Address dari host A telah dipelajari oleh port 1. Karena port untuk host B belum dikenali, maka paketnya ‘flooded’ yaitu diterima oleh host B dan host C.

Packet In:

in-port: 1
eth-dst: Host B
eth-src: Host A

Packet Out:

action: OUTPUT:Flooding

3. Host B -> Host A

Ketika paket balik lagi dari host B ke host A, maka entri tadi di tambahkan ke flow table dan juga paket-paket telah tertransfer ke port 1. Karena alasan itulah paket, tidak diterima oleh host C

Packet In:

in-port: 4
eth-dst: Host A
eth-src: Host B

Packet-Out:

action: OUTPUT:Port 1

4. Host A -> Host B

Untuk memastikan, ketika paket dikirim dari host A ke host B, entrinya sudah ditambahkan ke flow table dan juga paket langsung ditransfer ke port 4.

Packet-In:

in-port: 1
eth-dst: Host B
eth-src: Host A

Packet-Out:

action: OUTPUT:Port 4

Demo Time

Prerequisite

1. Install Docker

sudo apt install docker.io
sudo apt update

2. Pull Docker Image dari Ryu (OVS, Mininet, Ryu)

$ docker pull osrg/ryu-book

3. Enable root user untuk membuka aplikasi X11-Xterm di terminal mininet

$ sudo xhost +si:localuser:root

4. Install Curl

sudo apt install curl

5. Install Docker Compose

sudo curl -L “https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose 
sudo chmod +x /usr/local/bin/docker-compose

Memulai Simulasi Switching Hub Sederhana

1. Jalankan konfigurasi docker compose

wget https://github.com/osrg/ryu-book/raw/master/docker/docker-compose.yml 

2. Start a Ryu-Mininet-OVS Cluster 

docker-compose run –rm ryu-book

3. Start mininet dengan konfigurasi topologinya

mn –topo single,3 –mac –switch ovsk –controller remote -x

Maka akan langsung muncul masing-masing terminal untuk tiap device dari xterm. Berikut maksud command di atas:

  • Masuk Ke Xterm S1 untuk mengecek status dari OvS:
ovs-vsctl show
ovs-dpctl show

Switch 1 (Bridge) telah dibuat dan 3 port sudah ditambahkan.

  • Tentukan Openflow Versionnya (OpenFlow 13):
ovs-vsctl set Bridge s1 protocols=OpenFlow13
  • Mari Kita cek bahwa flow table-nya kosong:
ovs-ofctl -O OpenFlow13 dump-flows s1
  • Run Ryu Controller di C0

Masuk Ke Xterm C0 (Untuk mengeksekusi Switching Hub):

ryu-manager –verbose ryu.app.example_switch_13
  • Tunggu Beberapa saat, begini proses konektivitas-nya:
  • Lalu setelah muncul itu, cek di switch bahwa flow entri nya telah di tambahkan:
ovs-ofctl -O OpenFlow13 dump-flows s1

Cek Konektivitas

//Sekilas Info //

1. ARP request

Pada titik ini, host 1 tidak tahu MAC Address dari host 2, oleh karena itu, sebelum adanya ICMP echo request, ARP request harus di broadcast.

2. ARP reply

Respon terhadap ARP, host 2 mengembalikan ARP reply ke host 1

3. ICMP echo request

Sekarang host 1 tahu MAC Address dari host 2, lalu host 1 mengirimkan echo request ke host 2.

4. ICMP echo reply

Karena host 2 sudah tahu MAC Address dari host 1, host 2 mengembalikan echo reply ke host 1.

——

  • Sebelum melakukan ping, execute command tcpdump di setiap host untuk mengecek paket yang diterima secara real-time.
  • Setelah itu coba PING satu paket saja dari h1 ke h2:
  • Cek flow table di switch nya lagi:
  • Berikut log output di controller dari example_switch_13
  • Cek tcpdump (inspeksi terhadap lalu lintas jaringan) pada masing2 host 

Kesimpulan

Pada Practice kali ini, telah dipelajari bagaimana implementasi dari switching hub sederhana sebagai bahan dasar untuk menjelaskan basic procedures atas pengimplementasian dari Ryu Controller dan metode sederhana untuk mengontrol Openflow switch menggunakan Openflow.

Thanks For Ryu Documentation (Referensi utama) : https://book.ryu-sdn.org/en/Ryubook.pdf

Last modified: November 18, 2021

Author

Comments

Write a Reply or Comment

Your email address will not be published.