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