Design Pengembangan aplikasi DiffServ dengan disiplin antrian hierarchy token bucket dan random early detection sebagai bandwidth limiting

HTB RED TC Client Generate tc statement untuk root qdisc. Generate tc statement untuk tambahedithapus client. BWGUI TC HTB RED Client BandwidthConsumtpion Generate tc statement sesuai dengan algoritma RED yang sudah ditetapkan. Generate tc statement untuk edit dan hapus RED qdisc. Eksekusi statement untuk TC. Parsing output untuk kecepatan aktual tiap-tiap class. Client Menangani GUI untuk aplikasi. Setting TC dengan tampilan grafis. Memberikan laporan penggunaan bandwidth tiap client dengan plot. Gambar 4.4 Class HTB Gambar 4.5 Class RED Gambar 4.6 Class TC Gambar 4.7 Class BWGUI Class BWGUI akan menggunakan class HTB, RED dan TC. Karena class BWGUI yang nantinya akan menangani input dan output dari pengguna. Karena Client BandwidthConsumption TC Client Menangani informasi tiap client, di antaranya: - IP address - Rate Parsing kecepatan aktual tiap kelas dari TC. Menyimpan kecepatan tiap class untuk ditampilkan pada plot. HTB RED TC Client BandwidthConsumption Gambar 4.8 Class Client Gambar 4.9 Class BandwidthConsumption Gambar 4.10 Desain Class BWGUI input berupa nilai bandwidth rate dan informasi client. Maka class BWGUI memerlukan class tersebut. Class HTB menggunakan class client untuk menampung informasi client berupa IP, bandwidth rate dan lainnya. Class TC hanya berkomunikasi dengan BWGUI dan BandwidthConsumption. Karena BandwidthConsumption memerlukan class TC untuk mengambil bandwidth rate dari tiap class dan melakukan parsing terhadap outputnya.

4.2.2 GUI design

Gambar 4.11 Layout BWTC tab Gateway Layout untuk GUI memiliki beberapa widget, di antaranya menu, plot, tab, dan beberapa textbox dan button. Untuk tampilan awal dari aplikasi, terlihat dari gambar 4.11 Terdapat tab gateway yang aktif, di dalamnya memiliki 2 group frame. Sebelah kiri adalah NAT settings yang berguna untuk mengeset PC sebagai gateway atau hanya melewatkan paket. Dan terdapat 2 textbox untuk setting network interface yang digunakan untuk terhubung ke internet dan jaringan local. Sebelah kanan adalah Max Upload Download Rate yang digunakan untuk mengatur kecepatan maksimum upload dan download yang dimiliki. Terdapat 2 Textbox, satu untuk mengatur upload dan untuk mengatur download. Satuan yang digunakan dalam textbox tersebut adalah kbps. Gambar 4.12 Layout BWTC tab Download Rate Pada tab selanjutnya atau tab Download Rate, terdapat beberapa tombol dan table. Tombol Add Client berfungsi menambah informasi klien dan mengatur kecepatan klien tersebut. Tombol Edit Client berfungsi mengubah informasi klien yang sudah masuk. Tombol Delete Client berfungsi menghapus klien dari table dan melepas pengaturan kecepatan. Fungsi dari table di bawahnya adalah untuk menampilkan klien yang telah ditambah. Informasi klien ditampilkan pada table tersebut. Dan ketika dipilih akan menampilkan log berupa plot di bagian atas. Gambar 4.12 Layout BWTC tab Upload Rate Pada Tab ini terdapat sebuah group frame Upload Settings yang berisi textbox untuk upload limit, probability dan latency. Tidak seperti download rate, pada tab upload rate tidak bergantung pada berapa klien karena menggunakan RED yang tidak memiliki fungsi classifier. Proses nantinya akan mengenerate RED ke dalam network interface yang sebelumnya disetting sebagai inet interface. Gambar 4.13 Layout BWTC dialogbox Client. Pada tab Download Rate, terdapat button Add Client dan Edit Client. Aksi dari kedua button tersebut akan memunculkan dialogbox seperti di atas. Dialogbox akan muncul untuk meminta informasi terkait klien yang ingin diatur kecepatan downloadnya. Gambar 4.14 Layout BWTC menu File. Menu file digunakan untuk membuat setting baru ataupun mengambil setting yang sudah ada dan menyimpannya ketika ada perubahan. Gambar 4.15 Layout BWTC menu Help Menu help hanya memberikan dialogbox about dan penggunaan dari aplikasi ini. Gambar 4.16 Layout BWTC plot log rate. Plot akan muncul ketika pengguna memilih salah satu klien yang ada dalam table. Ketika terpilih plot akan memunculkan diagram garis untuk menunjukkan penggunaan bandwidth dari klien tersebut. Plot akan terupdate tiap 1 detik dan memberikan log realtime kepada pengguna.

4.3. Coding

Setelah desain selesai, masuk ke tahap coding. Tahap ini tidak langsung membuat code dari tiap objek dari hasil desain sebelumnya. Pembuatan Unit Test untuk menguji tiap class didahulukan. Contoh Unit Test yang akan dibuat adalah sebagai berikut : import unittest from modules.RED import RED def test_qdiscself: red = RED self.assertEqualred.qdisc, root red def test_redself: red = RED self.assertEqualred.setRed128000,sbintc qdisc add dev eth0 root red limit 64000 min 4000 max 8000 burst 5 avpkt 1000 probability 0.02 bandwidth 128 if __name__ == __main__: unittest.main Terlihat pengujian terhadap class RED dilakukan untuk menguji attribute qdisc dan fungsi setRed. Penggunaan fungsi assert equal digunakan untuk membandingkan antara hasil output dan nilai seharusnya yang keluar. Pengujian dilakukan untuk semua class yang ada. Setelah beberapa unit test dibuat, implementasi dari desain bisa dilakukan. Tahap penulisan kode dimaksimalkan untuk lolos dari unit test. Hal ini berguna untuk mencegah dari adanya bug pada kode yang ditulis. Berikut contoh kode untuk RED : class RED: def __init__self, dev = eth0, bandwidth=384000: self.bandwidth = bandwidth bps self.maxupload = bandwidth 8 Byte self.limit = 0 self.min = 0