BAB III PERANCANGAN SISTEM Sistem yang dibangun untuk Tugas Akhir ini merupakan satu sistem jaringan komputer yang bertujuan untuk melakukan proses standar jaringan komputer, yaitu pengiriman data, penerimaan data, serta pengaturan aliran paket data (routing). Yang membedakan sistem ini dengan sistem yang telah diterapkan dalam jaringan komputer pada umumnya adalah pada metode kendali kongesti yang digunakan pada saat proses routing. Sementara pada umumnya metode atau algoritma kendali kongesti yang digunakan adalah RED [4], Tugas Akhir ini mengimplementasikan algoritma WHITE yang merupakan algoritma kendali kongesti baru. Agar kualitas dari algoritma WHITE ini dapat diukur, digunakan algoritma kendali kongesti GREEN yang memiliki tipe algoritma yang sama dengan WHITE, yaitu tipe rate-base [3] sebagai pembanding. Kedua buah algoritma yang akan diimplementasikan pada Tugas Akhir ini, membutuhkan satu sistem jaringan komputer yang customized, terutama pada metode komunikasi yang akan diterapkan. 3.1 Spesifikasi Sistem Sistem yang dibangun untuk Tugas Akhir ini secara umum harus dapat menjalankan fungsi standar jaringan komputer yaitu pelaksanaan proses komunikasi antar host dengan router sebagai penghubung. 3.1.1 Spesifikasi Fungsional Spesifikasi fungsional merupakan pra-syarat layanan-layanan yang akan disediakan oleh sistem ini. Spesifikasi tersebut antara lain : 1. protokol komunikasi yang dapat disesuaikan, 2. host pengirim mampu melakukan fungsi segmentasi data yang akan dikirm, 3. host pengirim mampu membentuk header paket yang telah dimodifikasi dan menyambungnya dengan segmen data, 19 20 BAB III PERANCANGAN SISTEM 4. host penerima mampu membaca paket data yang masuk, terutama header paket dan tentunya, data yang dikirimkan bersama packet tersebut, 5. host penerima mampu untuk memberikan umpan balik kepada Host Penerima, 6. router mampu membaca, memilah, dan mengirimkan paket ke host tujuan. 3.1.2 Spesifikasi Teknis Berdasarkan spesifikasi fungsional yang telah dijabarkan di atas, spesifikasi teknis dari sistem adalah sebagai berikut. 1. Hubungan antar host menggunakan topologi jaringan komputer yang umum digunakan. 2. Menggunakan library WinPcap untuk modifikasi paket dan protokol komunikasi. 3. Software pada masing-masing host dan router yang dapat melakukan fungsi modifikasi dari protokol komunikasi yang akan diterapkan. 3.2 Desain Arsitektur Sistem Seperti telah disebutkan pada bagian sebelumnya, secara fisik sistem yang dibuat pada Tugas Akhir ini merupakan jaringan komputer yang umum digunakan, yakni terdiri dari pengirim (Source host), penerima (destination host), serta router. Untuk topologi jaringan, digunakan tipe bintang dengan masing-masing host ditetapkan berada dalam network address yang berbeda dengan router sebagai penghubung antar network. Gambar 3.1 Topologi Sistem BAB III PERANCANGAN SISTEM 21 Topologi seperti pada gambar dipilih berdasarkan pertimbangan kemudahan dalam menyusun topologi serta sederhana tetapi telah mencakup seluruh aspek dalam jaringan komputer yaitu adanya host yang akan berkomunikasi serta router yang akan menghubungkan kedua buah host yang berada pada network yang berbeda. Kedua buah host perlu diletakkan pada network yang berbeda agar proses komunikasi antar host tidak semata mengandalkan keberadaan switch, tetapi juga melibatkan router yang tersedia. Switch memiliki fungsi routing sederhana yang memungkinkannya untuk meneruskan paket data ke host tujuan. Hal ini tidak diinginkan karena sistem yang akan dibuat perlu untuk mengimplementasikan algoritma kendali kongesti pada router, yang tidak bisa dilakukan pada switch. Router sebagai pengatur proses komunikasi ditempatkan sebagai gateway bagi masing-masing network yang terpisah. Dengan begitu router akan selalu terhubung oleh Network A maupun Network B, tetapi masing-masing network tidak dapat berhubungan langsung ke network lawannya tanpa melalui router. 3.3 Alur Kerja Sistem Sistem yang dibangun secara khusus pada Tugas Akhir ini adalah sebuah software pada masing-masing node pada jaringan komputer yang dapat menangani raw packet data dengan penanganan yang berbeda sesuai dengan tujuan dari penggunaan software tersebut. Berdasarkan hal ini, software yang dibangun terdiri dari tiga buah software yaitu: • Software Pengirim Data (Tx), diimplementasikan pada Network B sebagai host pengirim; • Software Penerima Data (Rx), diimplementasikan pada Network A sebagai host penerima; serta • Software Router (Router Software), diimplementasikan pada node Router Keseluruhan software ini bekerja bersama-sama untuk membentuk satu sistem komunikasi yang dapat menjalankan fungsi transfer data antar host. Secara umum, kesatuan sistem ini bekerja dengan alur seperti terlihat pada diagram berikut. BAB III PERANCANGAN SISTEM 22 Gambar 3.2 Alur Kerja Umum Sistem Tx bekerja dengan megubah data yang akan dikirimkan ke Rx ke dalam satuan Packet Data. Packet Data akan singgah di Router yang perannya adalah memeriksa isi header dari Packet Data untuk menentukan alamat tujuan dari Packet Data. Setelah memastikan alamat tujuan dan data lain dari header tersebut, Router akan meneruskan Packet Data tersebut ke alamat tujuan. Setibanya di alamat tujuan, Rx akan menerjemahkan Packet Data untuk kemudian menentukan penanganan yang sesuai dengan Packet Data. Begitu proses ini selesai, Rx mengirimkan sinyal ACK kepada Tx agar mengirimkan Packet Data selanjutnya. Tx selalu menunggu sinyal ACK dari Rx sebelum mengirimkan Packet Data berikutnya. 3.4 Desain Software Untuk memudahkan dalam pembuatan software yang digunakan pada Tugas Akhir ini, terlebih dahulu ditetapkan desain masing-masing. Pembuatan desain ini mencakup spesifikasi sistem serta alur kerja sistem yang telah dijelaskan pada bagian sebelumnya. Keseluruhan software ini menggunakan bahasa pemrograman C/C++, yang dipilih terutama karena adanya pemanfaatan WinPcap sebagai pembentuk raw-packet yang menggunakan bahasa C/C++. 3.4.1 Tx Software Merupakan software yang digunakan pada sisi penerima yang memiliki fungsi untuk mengirimkan data ke host tujuan. Berkaitan dengan fungsinya tersebut, software ini memiliki spesifikasi sebagai berikut. • Mampu mengenali perangkat jaringan (network interface) yang akan digunakan, dalam hal ini berupa Ethernet Card atau Wireless Adapter • Mampu memilih dan menentukan validitas data yang akan dikirim • Mampu membangun paket data dari data yang telah dipilih 23 BAB III PERANCANGAN SISTEM • Mampu melakukan fragmentasi data apabila ukuran data yang akan dikirimkan lebih besar daripada ukuran paket yang telah ditentukan • Mampu menentukan isi dan besar dari header paket secara mandiri, tanpa menggunakan fasilitas socket dari Operating System yang digunakan • Mampu mengirimkan paket data yang telah dibuat ke perangkat jaringan yang akan digunakan • Serta, mampu untuk mengolah data-data yang diterima sebagai bagian dari proses komunikasi data Berdasarkan spesifikasi tersebut, Tx Software dapat dibagi ke dalam beberapa fungsi, yang dijelaskan pada sub bab berikut. 3.4.1.1 Fungsi Pengenalan Perangkat Jaringan listDev() dan openDev() Kedua buah fungsi ini menjalankan beberapa perintah yang berkaitan dengan persiapan penggunaan perangkat jaringan. Perintah yang dijalankan di fungsi ini diambil dari library yang tersedia dari WinPcap, yaitu: int pcap_findalldevs (pcap_if_t **alldevsp, char *errbuf ) Yang bertujuan untuk mencari perangkat jaringan yang terpasang pada mesin. Perintah ini memberikan nilai 1 apabila ada perangkat yang terdeteksi, 0 apabila tidak ada perangkat yang terpasang, dan -1 apabila proses pencarian mengalami kegagalan. pcap_t *pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *ebuf) Fungsi ini akan membuka perangkat yang dideskripsikan oleh char *device sehingga siap untuk digunakan. Seperti pada perintah sebelumnya, perintah ini juga memberikan keluaran berupa memberikan nilai 1 apabila ada perangkat yang terdeteksi, 0 apabila tidak ada perangkat yang terpasang, dan -1 apabila proses pencarian mengalami kegagalan. BAB III PERANCANGAN SISTEM 24 3.4.1.2 Fungsi Mempersiapkan File prepHeader() Fungsi ini mencakup pemeriksaan validitas data, mendapatkan informasi tentang data, serta menghitung jumlah paket data yang akan dibentuk dari data. Perintah-perintah yang digunakan pada fungsi ini adalah semua perintah yang berhubungan dengan manipulasi file, yaitu FILE * fopen ( const char * filename, const char * mode ); Fungsi ini adalah untuk membuka file yang dideskripsikan oleh const char * filename untuk kemudian diperlakukan berdasarkan mode yang dipilih melalui const char * mode. int fseek ( FILE * stream, long int offset, int origin ); long int ftell ( FILE * stream ); Kedua buah fungsi ini digunakan untuk menentukan besar file yang digunakan. Fungsi fseek() digunakan untuk menandai bagian awal dan akhir file yang dideskripsikan oleh variabel long int offset dan int origin, kemudian fungsi ftell() menentukan besar file dari tanda yang dibuat oleh fseek() tersebut. Dari besar file yang telah ditentukan, dapat ditentukan banyaknya paket yang akan dibentuk yaitu dengan membagi besar file ke dalam besaran paket, dalam hal ini ditentukan sebesar 1024 byte. Setelah itu, file akan diproses oleh fungsi untuk membangun paket data. 3.4.1.3 Fungsi Membangun Paket Data buildPack() Fungsi yang bertugas untuk membangun paket data dari file yang telah dipersiapkan pada fungsi prepHeader sebelumnya. Yang termasuk dalam fungsi ini adalah perintah untuk membagi file ke dalam segmen-segmen dengan ukuran tertentu, kemudian menambahkan packet header kepada segmen data tersebut. Masuknya data ke dalam segmen adalah dengan memasukkan data satu per satu dalam array of char. Begitupun halnya dengan pembentukan header packet data, informasi-informasi header packet data diisikan pada satu atau beberapa alamat pada array of char . Ukuran segmen data pada packet data ditetapkan sebesar 1024 byte. 25 BAB III PERANCANGAN SISTEM Protokol komunikasi TCP/IP memiliki suatu standar dalam pembentukan paket data yang secara default dibentuk oleh socket sebelum data dikomunikasikan. Struktur paket data untuk layer OSI ke-4 atau Transport Layer yang dimaksud adalah sebagai berikut. Gambar 3.3 Standar TCP Header Sedangkan struktur paket data pada layer 3 OSI (Network Layer) seperti pada gambar berikut. Gambar 3.4 Standar IP Header Namun, seperti telah disebutkan pada bagian 3.1.1, Tugas Akhir ini tidak menggunakan protokol komunikasi yang umum digunakan, sehingga tidak menggunakan socket dalam pembentukan paket data. Oleh karena itu, header paket perlu dibentuk sendiri dari software yang dibuat dengan menyesuaikan dari struktur header paket standar. Penyesuaian yang dimaksud adalah menentukan informasi mana saja dari struktur paket standar yang akan digunakan pada Tugas Akhir ini, karena tidak semua informasi diperlukan pada saat ini. Dengan pertimbangan-pertimbangan di atas, maka struktur paket data beserta header adalah seperti yang terlihat pada gambar berikut. BAB III PERANCANGAN SISTEM 26 Gambar 3.5 Format Header Paket untuk Sistem • Source IP Address Berisi informasi tentang alamat IP (IP address) dari paket, dalam hal ini IP address dari perangkat yang digunakan oleh software Tx. • Destination IP Address Berisi informasi tentang alamat IP tujuan paket. Format Source dan Destination Address ini adalah array dari 4 buah char yang masing-masing char berisi satu oktet dari alamat IP. • Port Number Informasi yang diisikan di field ini adalah nomor port yang digunakan oleh software. Dalam satu alamat IP, software yang berjalan mungkin tidak hanya satu. Informasi ini untuk memilah paket data yang terbaca agar hanya dapat dimanfaatkan oleh software yang dimaksud. • Congestion Window Field yang berkaitan erat dengan congestion control. Field ini berisi informasi besarnya congestion window yang dimiliki oleh router. • Receiver Window Berisi informasi mengenai besarnya kapasitas penerimaan paket dalam satu satuan waktu yang dimiliki oleh host penerima. Bersama dengan congestion window, receiver window ini berperan dalam Flow Control dan Congestion Control. • Packet Number 27 BAB III PERANCANGAN SISTEM Informasi urutan nomor paket. Informasi ini dibutuhkan oleh host penerima agar paket-paket yang diterima dapat diurutkan dan disusun kembali berdasarkan nomor paket tersebut. • Data Disinilah potongan data dari file akan dimuat. Besarnya field ini ditentukan sebesar 1024 byte. 3.4.1.4 Fungsi Pengiriman Paket Data sendPack() Setelah header dan segmen data paket dibentuk, langkah berikutnya adalah mengirimkan paket tersebut. Fungsi ini berkaitan dengan pemilihan perangkat jaringan pada bagian 3.6.1.1 dan seperti pada bagian 3.6.1.1 fungsi ini merupakan fungsi yang terdapat pada WinPcap, yaitu int pcap_sendpacket (pcap_t *p, u_char *buf, int size) Fungsi ini akan mengirimkan raw paket ke dalam jaringan melalui perangkat jaringan yang dideskripsikan oleh pcap_t *p. u_char *buf menunjukkan paket data yang akan dikirimkan, sedangkan variable int size mendeskripsikan besarnya paket yang dikirim. Fungsi ini akan bernilai 0 (nol) apabila pengiriman paket sukses, sedangkan nilai -1 (minus satu) akan dikeluarkan apabila pengiriman paket gagal dilaksanakan. 3.4.1.5 Fungsi Mendengarkan Paket Data readPack() Sebagaimana lazimnya proses komunikasi dua arah, tiap host perlu untuk mendengarkan paket data yang masuk dari host lain, yang berupa informasi atau konfirmasi dari pihak penerima bahwa paket data yang dikirimkan telah diterima. Proses mendengarkan paket data ini diimplementasikan melalui fungsi WinPcap: int pcap_next_ex ( pcap_t * p, 28 BAB III PERANCANGAN SISTEM struct pcap_pkthdr ** u_char ** pkt_header, pkt_data ) Variabel pcap_t* p seperti pada bagian 3.6.1.4 merupakan perangkat jaringan yang digunakan yang sebelumnya telah dipilih pada bagian 3.6.1.2, sedangkan struct pcap_pkthdr ** pkt_header dan u_char** pkt_data masing-masing adalah header dan paket data yang diterima oleh perangkat. Fungsi ini memberikan beberapa nilai keluaran berdasarkan hasil pembacaan paket yang dilakukan. • 1, apabila paket berhasil dibaca tanpa ada masalah • 0, apabila Time Out dari pcap_open telah lewat, yang berarti variabel pkt_header dan pkt_data tidak mengacu pada paket data yang valid • -1, apabila terjadi masalah dalam pembacaan paket • 2, apabila pembacaan paket mencapai End Of File (EOF) pada mode pembacaan offline pada file. 3.4.1.6 Algoritma Tx Keseluruhan fungsi yang telah disebutkan di atas dibentuk dan digabungkan dalam satu buah software Tx yang fungsi utamanya adalah membentuk paket data dari file kemudian mengirimkannya ke host tujuan. Algoritma software Tx secara keseluruhan dalam dilihat pada diagram alir berikut ini. 29 BAB III PERANCANGAN SISTEM Put Destination IP Address File Processing, including segmenting, etc Start Input File Name File Size Information Yes Put Port Number Input Port Number File Exist on Path? Put Total Packet Put Source IP Address Input Destination IP Address Search File Put Packet Number File Name File Name Length Packet Number = 0? List and Use Device No Time Constant Start Building Process Listen to Incoming Packet No End Send Packet Compare Destination Address No Yes Packet Number = Total Packet? Compare Port Address Same? Yes Same? Attach Data Segment Yes Put AIMD/AQM Price on Packet Start AIMD/AQM Algorithm Put Packet Number No Gambar 3.6 Algoritma Software Tx Dari diagram, terlihat bahwa fungsi readPack() dipanggil pada saat fungsi buildPack() dijalankan. Hal ini berkaitan dengan prinsip komunikasi dua arah yaitu paket tidak akan dikirimkan apabila tidak ada konfirmasi dari penerima bahwa paket yang dikirimkan sebelumnya telah diterima dengan baik. Selain untuk konfirmasi, terdapat informasi lain yang dibutuhkan oleh Tx sebelum paket dibuat. Informasi tersebut adalah AIMD/AQM Price yang merupakan hasil proses dari Router yang dititipkan pada Rx. Mengenai AIMD/AQM Price ini akan dijelaskan pada bagian lain. BAB III PERANCANGAN SISTEM 30 3.4.2 Rx Software Setelah perancangan Tx Software selesai, langkah selanjutnya adalah membangun software untuk menerima dan memproses paket data yang dikirimkan oleh Tx, yaitu Rx software yang bekerja pada host penerima. Secara umum, software ini tidak jauh berbeda dengan Tx Software hanya saja yang menjadi titik berat pada software ini adalah kemampuannya untuk membaca paket dan menyatukan paket-paket yang diterima tersebut menjadi sebuah file yang utuh. Spesifikasi yang harus dimiliki oleh Rx Software sebagai berikut. • Mampu mengenali dan menggunakan perangkat jaringan yang diinginkan • Mampu membaca paket beserta header yang diterima oleh perangkat jaringan yang telah dipilih • Mampu menyusun paket yang diterima menjadi sebuah file yang utuh seperti sebelum dikirimkan • Mampu memberikan respon kepada pengirim tentang keadaan paket yang diterima Seluruh spesifikasi tersebut diimplementasikan dengan fungsi-fungsi yang terkandung dalam software, yaitu dengan fungsi-fungsi yang akan dijelaskan pada sub bab berikut ini. 3.4.2.1 Fungsi Pengenalan Perangkat Jaringan listDev() dan openDev() Fungsi ini sama persis dengan yang terdapat pada Tx Software, karena memiliki kesamaan tujuan untuk pengenalan perangkat dan inisiasi pemanfaatan perangkat yang telah dipilih. 3.4.2.2 Fungsi Mendengarkan Paket readPack() Seperti halnya pada Tx Software, fungsi ini juga bertujuan untuk mendengarkan dan membaca paket data yang masuk melalui perangkat jaringan yang telah dipilih. Yang membedakannya dengan Tx Software adalah fungsi ini berlanjut dengan pembacaan paket bagian per bagian termasuk segmen data yang terkandung didalamnya untuk kemudian disusun menjadi satu file yang utuh. BAB III PERANCANGAN SISTEM 31 Agar tidak terjadi kesalahan dalam penyusunan paket menjadi file, struktur dan informasi header paket perlu dibaca secara keseluruhan untuk mengambil informasi yang terdapat di dalamnya kemudian mencocokkan dengan kondisi penerimaan saat itu. Kondisi-kondisi yang dimaksud adalah: 1. alamat tujuan paket Ini adalah informasi yang paling pertama harus dilihat pada paket. Paket yang dikirimkan tentunya tidak diinginkan untuk dibaca dan diterima oleh selain alamat yang dituju. Selain tidak berguna bagi penerima lain, pembacaan header dan segmen data oleh penerima yang bukan tujuan paket akan membuang waktu, sehingga paket dengan alamat tujuan yang salah tidak akan dibaca lebih lanjut dan akan ditinggalkan. Informasi alamat tujuan paket ini dicocokkan dengan alamat dari perangkat yang kita gunakan. 2. alamat asal paket Bila terdapat dua atau lebih paket dengan alamat tujuan yang sama, informasi alamat asal paket akan sangat berguna dan menentukan dalam memilah paket yang masuk, karena dalam satu perangkat, paket yang masuk tidak selalu berasal dari sumber yang sama. Selain itu, informasi ini didapatkan agar pihak penerima dapat mengirimkan konfirmasi keadaan paket ke pihak pengirim. Tanpa adanya informasi ini, konfirmasi keadaan paket tidak mungkin dapat dikirimkan. 3. nomor port Informasi berikutnya yang dibaca oleh fungsi adalah nomor port yang digunakan oleh masing-masing software. Misalkan dalam satu mesin menjalankan dua buah Tx Software secara bersamaan, sehingga paket-paket yang dibentuk oleh kedua buah Tx Software ini tentunya akan memiliki alamat tujuan dan alamat asal yang sama. Untuk itu digunakan satu buah identifikasi yang membedakan antara paket yang dibentuk oleh software yang satu dengan yang lainnya, yaitu berupa nomor port yang digunakan. 4. nomor paket Nomor paket digunakan dalam proses penyusunan paket menjadi file. Adalah hal yang tidak diinginkan apabila paket-paket yang diterima tidak dapat disusun menurut urutan semula yang dapat menyebabkan file yang terbentuk tidak sama hasilnya dengan file sebelum dikirim. 32 BAB III PERANCANGAN SISTEM 3.4.2.3 Fungsi Untuk Menulis Paket Ke Dalam File capturePack() Setelah seluruh header dibaca dan dicocokkan dengan kondisi host penerima, langkah selanjutnya adalah membaca segmen data yang ada pada tiap paket untuk kemudian dituliskan pada file. Proses ini melalui dua tahap, yang pertama kali dilakukan adalah membuat file dengan nama yang sama dengan nama file yang dikirimkan. Informasi nama file didapatkan dari paket pertama yang dikirimkan oleh Tx Software atau initial packet. Untuk membuat file ini digunakan fungsi FILE * fopen ( const char * filename, const char * mode ); Fungsi ini sesungguhnya merupakan fungsi untuk membuka file, namun dengan pilihan tertentu yang dipilih pada const char *mode , fungsi ini dapat digunakan untuk membuat file baru. Untuk membuat file baru mode yang dipilih adalah “wb” yaitu untuk menulis file dalam format binary. Mode yang lainnya sebagai berikut. • r • w : membuat file baru. Apabila sebelumnya sudah ada file dengan nama yang : membuka file untuk dibaca. File harus sudah ada. sama, maka isi file tersebut akan dihapus dan diganti oleh file ini. • a • r+ : membuka file untuk dibaca dan tulis. File harus sudah ada. • w+ : membuat file baru untuk ditulis dan dibaca. • a+ : membuka file untuk dibaca dan ditambahkan pada ujung file. : menambahkan pada ujung file. Setelah file dibuat dan paket mulai diterima, maka segmen data pada paket dapat dituliskan pada file tersebut melalui fungsi: size_t fwrite ( const size_t size_t FILE * void * ptr, size, count, stream ); Dengan const void *ptr adalah pointer pada segmen data yang akan ditulis. Pada proses inilah informasi nomor paket sangat diperlukan, karena tidak diinginkan segmen data dituliskan pada file dalam urutan yang tidak sesuai. BAB III PERANCANGAN SISTEM 33 Proses penulisan ini berhenti apabila nomor paket yang diterima telah sama dengan informasi total paket yang didapatkan dari initial packet. 3.4.2.4 Fungsi Pengiriman Konfirmasi sendPack() Fungsi ini berjalan tiap kali paket yang valid diterima oleh penerima. Fungsi ini sama seperti yang terdapat pada Tx Software dengan perbedaan pada informasi yang terkandung didalamnya, yaitu 1. alamat tujuan 2. alamat asal paket 3. nomor port 4. nomor paket 5. identifikasi konfirmasi Identifikasi konfirmasi merupakan informasi yang menyatakan bahwa paket tersebut merupakan paket konfirmasi. Informasi ini diperlukan agar penerima dapat langsung memproses paket setelah membaca adanya identifikasi konfirmasi dari paket yang masuk melalui perangkat jaringannya. 3.4.2.5 Algoritma Rx Seluruh fungsi yang telah dibuat, digunakan bersama-sama untuk membangun Rx Software dengan algoritma sebagai berikut. 34 BAB III PERANCANGAN SISTEM Start Input Port Number List and Use Device Write to File Only Write the data Start Read Packet No Read and compare Destination Address No Begin Write Same? Send ACK Packet Yes Read and Compare Port Number Header format: Dest IP, Src IP, Port, congestion price Same? Yes Send ACK Build Packet to send Congestion Price Read Packet Number Initial Packet Create and Open FIle Read the rest of field: total packet, file length, file name length, file name Yes Zero? No Equal To Total Packet? No Start Interpret AQM Price Yes Neglect Packet Header Gambar 3.7 Algoritma Software Rx Write Data to File End 35 BAB III PERANCANGAN SISTEM AQM Price yang terlihat pada diagram alir di atas merupakan informasi yang diberikan oleh router untuk dikirimkan ke pengirim. Penjelasan lebih lanjut tentang AQM Price akan diberikan pada bagian lain. 3.4.3 Router Software Router software adalah program yang mengatur lalu lintas paket data yang melalui router. Pada kenyataannya, Windows XP yang digunakan sebagai Operating System pada Tugas Akhir ini dapat dijadikan sebagai router tanpa menggunakan software lain, yaitu dengen mengubah nilai pada registry pada entry HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters \IPEnableRouter menjadi 1. Tetapi, apabila cara ini dilakukan router tidak dapat melakukan fungsi seperti yang kita inginkan kecuali fungsi dasar dari router. Oleh karena itu, dibangun satu software khusus untuk menggantikan fungsi router. Router software yang dibangun harus memiliki spesifikasi sistem berikut. • Mampu mengenali dan menggunakan perangkat jaringan yang diinginkan • Mampu menerima paket dan mengirimkannya kepada alamat tujuan Spesifikasi yang harus dimiliki Router tidak banyak seperti pada Tx atau Rx software karena fungsi Router ini hanya meneruskan paket ke alamat tujuan. Fungsi-fungsi yang dijalankan oleh Router merupakan perpaduan antara Tx Software dan Rx Software yaitu dalam hal pembacaan dan pengiriman paket. 3.4.3.1 Fungsi Pengenalan Perangkat Jaringan listDev() dan openDev() Fungsi yang sama seperti pada yang terdapat pada Tx dan Rx Software. Hanya saja, yang membedakan adalah pada Router, perangkat yang digunakan berjumlah lebih dari satu karena masing-masing perangkat terhubung pada alamat jaringan yang berbeda sehingga fungsi ini dimodifikasi agar dapat membuka perangkat lebih dari satu. 36 BAB III PERANCANGAN SISTEM 3.4.3.2 Fungsi Pembacaan dan Penerusan Paket readPack() Seperti halnya pada dua buah software sebelumnya, fungsi pembacaan dan penerusan / pengiriman paket menggunakan dua buah perintah yang ada pada WinPcap, yaitu int pcap_next_ex ( pcap_t * p, struct pcap_pkthdr ** u_char ** pkt_header, pkt_data ) dan int pcap_sendpacket (pcap_t *p, u_char *buf, int size) Namun, bila pada Tx maupun Rx perintah penerimaan dan pengiriman paket ini diletakkan dalam fungsi yang berbeda, pada Router kedua buah perintah ini dijalankan pada fungsi yang sama dengan pertimbangan bahwa proses yang dilakukan Router pada paket tidak banyak dan tidak spesifik sehingga perintah pun dapat disederhanakan. Adapun proses yang dilakukan oleh Router dalam hal penanganan paket hanyalah membaca alamat tujuan dan alamat asal dari paket kemudian mengirimkan kembali paket tersebut sesuai dengan alamat tujuan. 3.4.3.3 Algoritma Router Algoritma Router dapat dilihat pada diagram alir berikut ini. BAB III PERANCANGAN SISTEM 37 Gambar 3.7 Algoritma Software Router Berbeda dengan Tx dan Rx, algoritma Router jauh lebih sederhana, karena proses yang terjadi pada Router hanyalah membaca sedikit dari header paket, yaitu membaca alamat tujuan dan meneruskan paket ke alamat tujuan. Selain dua proses tersebut, terdapat proses lain yang terjadi pada Router, yaitu menghitung Link Capacity dan Arrival Rate. Link Capacity adalah banyaknya paket maksimal yang dapat ditampung oleh buffer router. Besar Link Capacity dihitung berdasarkan waktu yang dibutuhkan oleh Router untuk memproses satu paket mulai dari menerima paket dari perangkat jaringan, sampai siap untuk dikirimkan kembali. Arrival Rate adalah banyaknya paket yang terbaca oleh perangkat jaringan dalam satu waktu tertentu. Berbeda dengan Link Capacity yang mendapatkan nilainya dengan cara statistik, nilai Arrival Rate diperoleh dengan menghitung banyaknya paket yang terbaca selama 1 detik. Penggunaan pendekatan statistik dengan waktu tiba per paket tidak dimungkinan untuk ini, karena waktu tiba per paket sangatlah cepat, kurang dari 1 ms, yang apabila digunakan dapat menghasilkan Arrival Rate sebesar 1000 paket per detik, suatu hal yang tidak mungkin mengingat keterbatasan buffer pada router. 38 BAB III PERANCANGAN SISTEM Nilai Link Capacity dan Arrival Rate ini akan digunakan terutama oleh Router dan Tx untuk mendapatkan Congestion Price atau Sender Rate yang diperoleh berdasarkan algoritma AQM yang digunakan. 3.5 Perancangan Algoritma AQM Seperti yang telah dijelaskan pada bagian awal Bab ini, algoritma AQM yang digunakan ada 2 (dua), yaitu GREEN dan WHITE. WHITE, seperti yang juga telah dijelaskan pada bagian awal Bab ini, merupakan saran baru dari dosen pembimbing dari penulis. Algoritma inilah yang sesungguhnya akan dilihat performanya. Sedangkan GREEN digunakan sebagai pembanding bagi WHITE karena seperti WHITE, merupakan rate-based AQM. 3.5.1 Perancangan AQM GREEN Berdasarkan Sub-Bab 2.5.1, keluaran dari AQM GREEN berupa probablitas terjadinya kongesti yang lazim disebut Congestion Price. Congestion Price ini dihitung berdasarkan kondisi Router yang dijelaskan oleh persamaan 2.2. Persamaan 2.2 menyebutkan bahwa Congestion Price merupakan perbandingan selisih antara Link Capacity dengan Arrival Rate. Semakin kecil selisih Link Capacity dengan Arrival Rate, maka Congestion Price akan semakin besar. Congestion Price berkisar antara 0 (nol) sampai dengan 1 (satu). Nilai Link Capacity dan Arrival Rate yang telah didapatkan pada sub-bab 3.4.3.3 oleh Router akan dimasukkan ke dalam persamaan 2.2 dengan nilai α dan u adalah konstanta yang telah ditetapkan sebelumnya, yaitu α sebesar 0.01 dan u sebesar 0.9. Setelah itu akan didapatkan Congestion Price untuk kemudian nilai tersebut dimasukkan ke dalam paket yang diterimanya tersebut agar dapat diproses oleh Tx melalui perantara Rx. Untuk memastikan bahwa kongesti tidak terjadi, pada sisi pengirim ditentukan suatu nilai maksimal Congestion Price yang menandakan akan terjadi kongesti. Nilai ini berfungsi agar window pengirim akan berkurang ketika Congestion Price mencapai nilai tersebut. Nilai maksimal tersebut ditetapkan sebesar 0.7. 39 BAB III PERANCANGAN SISTEM Algoritma GREEN dipadukan dengan metode AIMD yang diimplementasikan di sisi pengirim. 3.5.2 Perancangan AQM WHITE Dari penjelasan pada sub-bab 2.5.2 algoritma WHITE dapat diimplementasikan ke dalam persamaan matematis yang memungkinkan untuk diterapkan dalam bahasa pemrograman. Rumus 2.3 dan 2.5 yang masih dalam domain s (Laplace) terlebih dahulu harus diubah ke dalam domain z yaitu dengan mengganti s z −1 [11] sehingga persamaan 2.3 menjadi seperti dijabarkan berikut. T dengan G aqm ( s ) = k2 s G( z) = Ù k2T z −1 y ( z ) k2T = u( z) z − 1 Ù ( z − 1) y ( z ) = k2Tu ( z ) Ù zy ( z ) − y ( z ) = k2Tu ( z ) Setelah diubah dalam bentuk diferensial, persamaan akan berbentuk seperti berikut ini. y k +1 = y k + k 2 Tu k Dengan ......................................(3.1) y k +1 : output saat ini yk : output sebelumnya uk : input saat ini k2 : konstanta Control Gain router T : waktu sampling, ditetapkan sebesar 1 detik Dengan persamaan 3.1 maka persamaan 2.3 dapat diimplementasikan pada sistem, yaitu dengan menetapkan u k sebesar idle capacity yang ada saat itu dan k 2 sebesar 0.005. Persamaan 2.5 juga harus diubah ke dalam domain waktu agar dapat dimanfaatkan. Dengan cara yang sama, persamaan 2.5 diubah menjadi persamaan 3.2 berikut ini. 40 BAB III PERANCANGAN SISTEM y k +1 = (1 − KT ) y k + k1Tu k Dengan ...............................(3.2) K : Konstanta k1 : Konstanta Control Gain pengirim Nilai T juga ditetapkan sebesar 1 detik. sedangkan konstanta K ditetapkan sebesar 0.8.