Skip to content

ryuenma/tugas-akhir-ajt-2022

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 

Repository files navigation

TUGAS AKHIR AJT AULIA NABIH RIZQULLAH TKOM-A 2021-2022

Berikut merupakan dokumentasi Tugas Akhir AJT

A. Inisialisasi server untuk hosting Mininet

  1. Login ke AWS Student Portal, kemudian klik Start Lab pada module Learner Lab. Tunggu hingga indikator Lab berubah menjadi hijau.

image

  1. Tekan tombol AWS disebelah indikator hijau untuk memasuki portal AWS untuk melakukan setup instance. Tekan EC2 untuk memasuki menu untuk membuat instance EC2.

image

  1. Pada dasbor instance EC2, tekan tombol Launch Instance yang berwarna oren untuk membuat sebuah instance EC2.

image

  1. Pada menu pembuatan instance EC2, buat sebuah instance dengan kriteria berikut: Name and tags: Tugas Akhir OS Images: Ubuntu Server 22.04 LTS 64 bit Instance type: t2.medium Key pair: vockey Edit Network settings: allow SSH, allow HTTP, allow HTTPS, allow TCP port 8080, allow TCP port 8081 Configure storage: 30 GiB, gp3

image image image image image image image image

kemudian tekan Launch Instance untuk menyalakan instance EC2 yang telah kita setup.

image

  1. Kembali ke dasbor EC2, kemudian tekan refresh agar instance yang baru kita buat terlihat di instance list. Pastikan instance dalam kondisi Running dan tunggu beberapa saat agar instance selesai melakukan booting.

image

  1. Tekan instance-ID, kemudian tekan Connect. pada window ini, tekan SSH client, kemudian lakukan copy command yang kita perlukan untuk login ke dalam instance menggunakan SSH.

image image

  1. Buka SSH client yang kita pakai (dalam praktikum ini saya menggunakan Windows PowerShell bawaan dari Windows 10), kemudian paste command yang telah kita copy ke dalam PowerShell. tekan Enter untuk menghubungkan klien dengan server.

image

  1. Lakukan syntax berikut untuk memastikan kita sedang menggunakan OS image terbaru dan up-to-date
sudo apt-get update
sudo apt-get upgrade

image image

setelah upgrade selesai, lakukan sebuah server reboot. Setup instance EC2 selesai

B. Menginstal Mininet dan RYU

  1. Pastikan kita sudah terkoneksi dengan server melalui SSH

image

  1. Unduh file repositori mininet dari https://mininet.org/download dengan menggunakan command berikut,
git clone https://github.com/mininet/mininet

image

kemudian install dengan menggunakan command berikut,

mininet/util/install.sh -nfv

image

  1. Unduh file repositori RYU dan install
git clone https://github.com/osrg/ryu.git
cd ryu; pip install .
cd

image

image

  1. Unduh file repositori Flowmanager
git clone https://github.com/martimy/flowmanager
cd

image

  1. Setelah melakukan instalasi MiniNet dan RYU, lakukan sebuah reboot server menggunakan command sudo reboot

  2. Setelah melakukan reboot, maka kita bisa mulai tes satu-per-satu aplikasi yang telah kita instal, dimulai dari MiniNet. Untuk membuka MiniNet, kita menggunakan command sudo mn pada SSH.

image

MiniNet akan secara default membuat sebuah jaringan yang terdiri dari 2 host, 1 switch, dan 1 OpenFlow Reference Controller.

  1. Untuk menampilkan apa saja yang bisa kita lakukan dengan mininet, kita bisa menggunakan perintah help

image

  1. untuk menampilkan node yang ada, kita bisa menggunakan perintah node

image

  1. untuk menampilkan link antar node, kita bisa menggunakan perintah net

image

  1. untuk menampilkan informasi dari semua node, kita bisa menggunakan perintah dump

image

  1. Kemudian, kita akan mengetes konektivitas antar node pada jaringan default tersebut dengan menggunakan perintah pingall dan h1 ping -c 2 h2

image

image

C. Membuat Custom Topology

  1. Buat file script bernama tugas22sw2h.py menggunakan command vim tugas22sw2.py pada SSH

image

  1. isi dengan script berikut,

" Custom Topology "

from mininet.topo import Topo
from mininet.log import setLogLevel, info

class MyTopo( Topo ):

    def addSwitch(self, name, **opts ):
        kwargs = {'protocols' : 'OpenFlow13'}
        kwargs.update( opts )
        return super(MyTopo, self).addSwitch( name, **kwargs )
        
    def __init__(self):
        # Inisialisasi Topology
        Topo.__init__( self )
        
        # Tambahkan node, switch, dan host
        info('*** Add switches\n')
        s1 = self.addSwitch('s1')
        s2 = self.addSwitch('s2')
        # ....
        info('*** Add hosts\n')
        h1 = self.addHost('h1', ip='10.1.0.1/24')
        h2 = self.addHost('h2', ip='10.1.0.2/24')
        # ....
        self.addLink(s1, h1, port1=1, port2=1)
        self.addLink(s1, s2, port1=2, port2=1)
        self.addLink(s2, h2, port1=2, port2=1)
        # ....
    topos = {'mytopo': ( lambda: MyTopo() ) }

image

  1. Ketika sudah selesai membuat script, maka kita akan menjalankan command berikut sudo mn --controller=none --custom tugas22sw2h.py --topo mytopo --mac --arp

image

  1. Setelah MiniNet berjalan, jalankan command berikut,
sh ovs-ofctl add-flow s1 -O OpenFlow13 "in_port=2,action=output:1"
sh ovs-ofctl add-flow s2 -O OpenFlow13 "in_port=1,action=output:2"
sh ovs-ofctl add-flow s2 -O OpenFlow13 "in_port=2,action=output:1"

image

  1. Lakukan uji koneksi dengan menggunakan command h1 ping -c2 h2

image

  1. Topology 2 Switch 2 Host selesai. Maka kita kaan berlanjut ke topologi selanjutnya, yakni 3 switch dengan 6 host menggunakan STP, berikut scriptnya;

class MyTopo( Topo ):
    "Simple topology example."

    def build( self ):
        "Create custom topo."

        # Add hosts and switches
        H1 = self.addHost( 'h1', ip = '10.1.0.1/24' )
        H2 = self.addHost( 'h2', ip = '10.1.0.2/24' )
        H3 = self.addHost( 'h3', ip = '10.1.0.3/24' )
        H4 = self.addHost( 'h4', ip = '10.1.0.4/24' )
        H5 = self.addHost( 'h5', ip = '10.1.0.5/24' )
        H6 = self.addHost( 'h6', ip = '10.1.0.6/24' )
        S1 = self.addSwitch( 's1' )
        S2 = self.addSwitch( 's2' )
        S3 = self.addSwitch( 's3' )

        # Add links
        self.addLink(S1, S2, port1=4, port2=2)
        self.addLink(S1, S3, port1=1, port2=3) 
        self.addLink(S2, S3, port1=1, port2=4)
        self.addLink(H1, S1, port1=1, port2=2)
        self.addLink(H2, S1, port1=1, port2=3)
        self.addLink(H3, S2, port1=1, port2=3)
        self.addLink(H4, S2, port1=1, port2=4)
        self.addLink(H5, S3, port1=1, port2=2)

topos = { 'mytopo': ( lambda: MyTopo() ) }

image

  1. Save scriptnya, kemudian jalankan command sudo mn --controller=none --custom tugas23sw6h.py --topo mytopo --mac --arp

image

  1. lakukan test pingall

image

D. Membuat aplikasi Ryu Load Balancer

  1. Pertama, git clone dahulu repository learn_sdn dengan menggunakan command git clone https://github.com/abazh/learn_sdn.git

image

  1. Copy file topo_lb.py ke direktori home anda

image

  1. Jalankan mininet dengan command sudo python3 topo_lb.py

image

  1. Buka sebuah SSH session di window lain, kemudian jalankan command ryu-manager rr_lb.py

image

NOTE: Ada sebuah bug dalam Eventlet pada Python3.10 sehingga praktikum tidak bisa dilanjut. See #687

E. Membuat aplikasi Ryu Shortest Path Routing

  1. Jalankan command sudo python3 topo-spf_lab.py

image

  1. Buka sebuah SSH session di window lain, kemudian jalankan command ryu-manager dijkstra_Ryu_controller.py

image

NOTE: Ada sebuah bug dalam Eventlet pada Python3.10 sehingga praktikum tidak bisa dilanjut. See #687

About

Tugas Akhir Kelas AJT TKOM-A 2021-2022

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published