10
HASIL DAN PEMBAHASAN Analisis Kebutuhan 1) Kebutuhan Fungsional Secara umum fungsi-fungsi dari perangkat lunak yang akan dibuat digambarkan dalam bentuk Diagram use-case pada Gambar 15. Sinaru Mengatur tabel rute melalui RIP
‹‹include››
Menerima dan mengirim paket UDP
‹‹extend››
Melakukan NAT
‹‹include››
Mem-forward paket IP
‹‹include››
Menerima dan mengirim paket IP
Host lain ‹‹include››
1. Menerima dan mengirim frame ethernet Sistem memiliki use-case menerima dan mengirim frame ethernet yang digunakan aktor host lain dan host lain yang satu network untuk berkomunikasi dengan sistem. Use-case ini di-include oleh semua use-case yang berinteraksi dengan aktor host lain dan host lain yang satu network. 2. Mengatur tabel ARP
‹‹include›› ‹‹include››
Menerima dan mengirim paket ICMP
Pada Gambar 15 juga terlihat bahwa diagram use-case memiliki 14 use-case. Penjelasan dari masing-masing use-case adalah sebagai berikut:
Menyaring paket IP
Use-case mengatur tabel ARP digunakan oleh aktor host lain yang satu network untuk mendapatkan alamat fisik dari antarmuka jaringan router. Selain itu host lain yang satu network juga memberikan alamat fisiknya kepada sistem. 3. Menyaring paket IP
Mengatur tabel ARP Host lain yang satu network
‹‹include››
Menerima dan mengirim frame ethernet
Mengatur tabel NAT Mengatur antarmuka jaringan Mengatur tabel rute Memulai dan menghentikan router
Pengatur Mengatur saringan IP
Gambar 15 Diagram use-case Pada Gambar 15 terlihat sebuah sistem bernama Sinaru (Simple IPv4 NAT Router). Sinaru berinteraksi dengan tiga aktor, yaitu host lain, host lain yang satu network dan pengatur. Penjelasan dari masing-masing aktor adalah sebagai berikut: 1. Host lain, yaitu representasi dari host-host lain yang terhubung dengan sistem. Aktor ini berkomunikasi dengan sistem menggunakan IP versi 4. 2. Host lain yang satu network, yaitu representasi dari host-host yang terhubung secara langsung dengan sistem. Aktor ini adalah spesialisasi dari aktor host lain. 3. Pengatur, yaitu representasi dari manusia yang memiliki akses fisik ke sistem. Pengatur mengatur konfigurasi dan mengaktifkan router.
Use-case ini menawarkan fungsi penyaringan paket IP, yaitu menentukan paket mana saja yang boleh diterima atau dikirim dan paket mana saja yang boleh di-forward. 4. Menerima dan mengirim paket IP Use-case ini menawarkan fungsi-fungsi Internet protocol, seperti menerima paketpaket IP yang datang, membuat dan mengirim paket IP, serta melakukan pencarian rute. 5. Menerima dan mengirim paket ICMP Use-case ini menawarkan fungsi-fungsi pada protokol ICMP, seperti menerima paketpaket ICMP yang datang, dan membuat dan mengirim paket ICMP. 6. Mem-forward paket IP Use-case ini menawarkan fungsi memforward paket IP, yaitu mengirim kembali paket yang diterima sistem berdasarkan tabel rute yang dimiliki sistem. Sistem juga mengurangi nilai pada field TTL dan mengoreksi checksum pada header paket IP yang di-forward. 7. Melakukan NAT Use-case ini menawarkan fungsi melakukan penerjemahan alamat IP pada pada paket IP yang di-forward. Selain itu use-case ini juga melakukan penggantian alamat IP pada data ICMP Error-reporting message dan alamat IP pada payload FTP. Use-case ini adalah ekstensi dari use-case Mem-forward paket IP.
11
8. Menerima dan mengirim paket UDP
2) Kebutuhan Nonfungsional
Use-case ini menawarkan fungsi-fungsi pada protokol UDP, seperti menerima paketpaket UDP yang datang, dan membuat dan mengirim paket UDP.
Kebutuhan nonfungsional dijabarkan pada Tabel 4.
Use-case ini menawarkan fungsi-fungsi pada protokol RIP versi 2, seperti menerima paket-paket RIP versi 2 yang datang, memperbarui tabel rute sistem, membuat dan mengirim paket RIP versi 2 yang menginformasikan tabel rute sistem ke host lain. Use-case ini memungkinkan aktor pengatur melakukan pengaturan tabel NAT sistem yang menentukan paket-paket IP mana saja yang akan diterjemahkan alamat IP-nya. 11. Mengatur antarmuka jaringan Use-case ini memungkinkan aktor pengatur melakukan pengaturan perangkat keras antarmuka jaringan mana saja yang akan digunakan oleh sistem, menentukan alamat IP dari antarmuka jaringan tersebut dan berbagai parameter lainnya. 12. Mengatur tabel rute Use-case ini memungkinkan aktor pengatur melakukan pengaturan tabel rute statis yang dimiliki sistem dan juga mengatur parameter-parameter protokol RIP. 13. Mengatur saringan IP Use-case ini memungkinkan aktor pengatur melakukan pengaturan tabel saringan IP, yaitu sebuah tabel yang berisi kriteriakriteria untuk menentukan paket-paket IP mana saja yang boleh diterima atau diforward oleh sistem. 14. Memulai dan menghentikan router Use-case ini memungkinkan aktor Pengatur untuk menjalankan router dan menghentikan router. Pada saat router berjalan, aktor host lain dapat berkomunikasi dan memanfaatkan layanan pada sistem. Pada saat router berhenti, aktor host lain sama sekali tidak dapat berkomunikasi dengan sistem. Di lain pihak, aktor Pengatur dapat melakukan sebagian besar pengaturan, baik saat router berhenti maupun saat router berjalan.
Sinaru
Tabel 4 Kebutuhan nonfungsional Sinaru
9. Mengatur tabel rute melalui RIP
10. Mengatur tabel NAT
dari
Parameter
Kebutuhan
Availability
24 jam sehari, 7 hari seminggu Tidak menghilangkan paket kecuali paket tidak valid, ditolak oleh saringan IP atau queue penuh. Lebih kecil dari satu ms Tidak memungkinkan eksekusi kode dari paket apa pun yang masuk Bahasa Inggris
Reliability Response Time Security Komunikasi
3) Kebutuhan Antarmuka Eksternal 1. Antarmuka pengguna Antarmuka pengguna perangkat lunak ini menggunakan modus grafik. Perangkat lunak ini menerima masukan dalam bentuk klik pada tetikus (mouse) dan ketikan pada papan ketik (keyboard). Keluaran dari perangkat lunak ini dapat dilihat melalui monitor. 2. Antarmuka perangkat keras Kebutuhan minimum perangkat lunak ini adalah:
PC Keyboard Mouse Monitor VGA Satu atau lebih Network Interface Card (Ethernet atau Wireless Lan)
3. Antarmuka perangkat lunak Perangkat lunak ini membutuhkan antarmuka pemrograman Windows API untuk mengimplementasikan antarmuka pengguna dan pemrosesan paralel. Untuk dapat mengirim dan menerima frame ethernet secara langsung pada Microsoft Windows dibutuhkan WinPcap versi 4.0.2. Desain 1) Desain Sistem Dari kebutuhan fungsional yang telah dibuat sebelumnya, perangkat lunak ini dibagi menjadi dua subsistem, yaitu:
Subsistem antarmuka pengguna. Subsistem ini berinteraksi dengan aktor pengatur dalam rangka melakukan konfigurasi.
12
Subsistem router. Subsistem ini berinteraksi dengan host lain pada jaringan dan berfungsi sebagai router IP.
Seluruh subsistem berjalan pada process yang sama. Subsistem antarmuka pengguna memiliki satu thread, sementara subsistem router memiliki beberapa thread. Seluruh thread berjalan secara paralel. Pada saat awal perangkat lunak dijalankan, hanya ada satu thread yang berjalan, yaitu thread antarmuka pengguna. Saat router dimulai, thread-thread pada subsistem router akan dibuat dan dijalankan. Pada saat router dihentikan, thread-thread pada subsistem router akan dihentikan dan dihancurkan.
memiliki kelas-kelas lain, yaitu Tabel NAT, Tabel Filter, Network Interface, Tabel Rute, dan RIP. Gambar 17 memperlihatkan diagram kelas Router dan kelas-kelas lain yang dimilikinya. Tabel NAT 1
Entri NAT 1 *
Tabel Filter 1
Filter 1 *
1 1
Router
Network Interface 1 *
1
1 Rute
Tabel Rute 1 *
1 RIP 1
Gambar 17 Diagram kelas Router
2) Desain Antarmuka Pengguna Antarmuka pengguna perangkat lunak ini terdiri atas sebuah jendela utama. Perangkat lunak juga membuat sebuah icon pada system tray. Jendela utama tidak dapat diubah ukurannya tetapi jendela utama dapat diminimize dan disembunyikan. Untuk memunculkan jendela yang disembunyikan pengguna dapat mengklik icon pada system tray. Perancangan jendela utama dapat dilihat pada Gambar 16.
Kelas Network Interface memiliki 3 buah queue untuk menampung 3 jenis paket yang berbeda. Untuk melakukan itu dibuat sebuah kelas template yang memiliki parameter jenis paket yang akan ditangani. Paket yang ditangani adalah turunan dari kelas yang bernama QueueData. Kelas Network Interface juga memiliki sebuah kelas Tabel ARP untuk menangani ARP. Untuk lebih jelasnya dapat dilihat pada Gambar 18.
Gambar 16 Perancangan jendela utama
Gambar 18 Diagram kelas Network Interface, Queue, QueueData, Tabel ARP dan Entri ARP
Jendela utama berisi menu di sebelah kiri dan halaman konfigurasi di sebelah kanan. Di bagian bawah terdapat checkbox untuk membuat jendela utama menjadi paling atas di antara jendela-jendela lain. Di bagian bawah juga terdapat tombol untuk menyembunyikan jendela utama dan tombol untuk mengakhiri perangkat lunak. Menu tersusun secara hierarki. Bila teks pada menu diklik maka halaman akan berganti. Hasil dari desain antarmuka berupa gambar-gambar tangkapan layar dari Sinaru dapat dilihat pada Lampiran 1.
Pembuatan kode 1) Penggunaan WinPcap Untuk dapat mengambil frame ethernet dan menerima frame ethernet, digunakan WinPcap. Fungsi-fungsi WinPcap yang digunakan antara lain:
3) Desain Kelas
Pada subsistem router, dibuat beberapa kelas. Kelas Router berfungsi untuk merepresentasikan sebuah router. Kelas ini
pcap_open, untuk memulai penangkapan dan pengiriman paket. pcap_next_ex, untuk mengambil paket hasil tangkapan pada buffer driver NPF. pcap_sendpacket, untuk mengirim sebuah paket. pcap_sendqueue_transmit, untuk mengirim banyak paket sekaligus.
13
Selain dari menggunakan fungsi-fungsi dari WinPcap API, perangkat lunak ini juga memakai fungsi dari packet.dll yaitu PacketRequest. Fungsi ini berguna untuk mendapatkan atau mengubah variabel dari driver network interface. Pada perangkat lunak ini, PacketRequest antara lain digunakan untuk:
Mendapatkan alamat MAC saat ini. Mengubah hardware filter pada antarmuka jaringan agar menerima paket dengan alamat tujuan multicast RIP versi 2 (yaitu 01-00-5E-00-00-09). Mendapatkan status ketersambungan media. Mendapatkan ukuran frame maksimum. Mendapatkan link speed.
CreateEvent, untuk membuat objek event, yaitu objek yang memiliki dua state. Dengan fungsi SetEvent, objek event berada pada state signaled. Dengan fungsi ResetEvent, objek event akan berada pada state nonsignaled. Jika ada thread yang menunggu sebuah objek event yang dalam keadaan signaled (dengan menggunakan fungsi WaitForSingleObject) maka thread tersebut akan berhenti (menunggu). Sebaliknya jika objek event tersebut dalam keadaan nonsignaled maka thread akan terus berjalan.
CreateMutex, untuk membuat objek mutex, yaitu objek yang hanya dapat dimiliki oleh satu thread pada satu waktu. WaitForSingleObject dapat digunakan untuk menunggu kepemilikan mutex. Thread yang memanggil WaitForSingleObject akan menunggu sampai thread lain melepas mutex dengan memanggil ReleaseMutex.
InterlockedIncrement, untuk menaikkan nilai suatu variabel dengan nilai satu dan memberikan hasilnya serta memastikan hanya ada satu thread yang melakukan itu pada saat yang sama.
2) Paralelisme Untuk dapat membuat perangkat lunak yang berjalan secara paralel, digunakan beberapa fungsi Windows API. Fungsi-fungsi tersebut antara lain:
CreateThread, untuk membuat thread baru yang berjalan bersamaan dengan thread sebelumnya.
ThreadProc, adalah fungsi pada aplikasi yang akan dipanggil secara paralel ketika memanggil CreateThread. Thread akan selesai jika fungsi ini return.
SetThreadPriority, prioritas thread.
PostThreadMessage, untuk mengirim pesan kepada thread lain. Fungsi ini langsung kembali tanpa menunggu thread lain memproses pesan yang dikirim.
untuk
mengganti
Untuk melindungi data-data yang digunakan bersama oleh beberapa thread dan juga mengatur jalannya thread digunakan fungsi-fungsi sinkronisasi dari Windows API. Fungsi-fungsi tersebut antara lain:
InitializeCriticalSection, yaitu untuk membuat critical section. Untuk memasuki critical section digunakan fungsi EnterCriticalSection, untuk keluar critical section digunakan fungsi LeaveCriticalSection.
WaitForSingleObject, untuk membuat thread berhenti untuk menunggu objek sinkronisasi tertentu. Fungsi WaitForMultipleObject digunakan untuk menunggu beberapa objek.
3) Penyaringan IP Penyaringan paket IP dilakukan untuk setiap paket yang masuk dan keluar antarmuka jaringan Sinaru. Proses ini harus dilakukan secepat mungkin karena waktu yang dihabiskan paket IP pada proses penyaringan dapat mempengaruhi forwarding delay. Penyaringan paket IP pada Sinaru dilakukan dalam dua tahap, yaitu tahap persiapan dan tahap penyaringan. Tahap persiapan cukup dilakukan sekali, sementara tahap penyaringan dilakukan selama router berjalan dan dilakukan untuk setiap paket IP, baik paket yang masuk maupun yang keluar. Tahap persiapan diawali dengan memasukkan kriteria yang ditetapkan pengguna ke dalam sebuah objek dari kelas yang bernama clsAccessListEntry. Sebelum dimasukkan ke dalam atribut dari objek clsAccessListEntry, kriteria yang berupa deretan huruf di-parse dengan bantuan clsParser menjadi deretan kode yang dirancang penulis. Setelah itu objek clsAccessListEntry yang telah berisi kriteria akan dimasukkan ke dalam sebuah objek dari kelas yang bernama
14
clsAccessList. Objek clsAccessList akan meng-compile kriteria-kriteria berdasarkan atribut-atribut pada objek-objek clsAccessListEntry yang dimilikinya menjadi kode mesin (machine code). Gambar 19 memperlihatkan diagram kelas clsAccessList dan clsAccessListEntry. clsAccessListEntry -SourceAddressCode : char * -DestAddressCode : char * -ProtoTypeCode : char * -SrcPortCode : char * -DstPortCode : char *
clsAccessList -Name : TCHAR -DefAction : ActType -ACL_Code : LPVOID -ACL_CodeLen : size_t +CompileRules() +FilterIPHeader(in iphdr : IP_HEADER) : ActType
1
*
+compile() -compileAddressRecursive() -compilePortRecursive() -compileProto() -compileProtoTCP_UDP() -compilePayloadInit() -compilePort() -compileProtoRecursive() -compileICMPRecursive()
Gambar 19 Diagram kelas clsAccessList dan clsAccessListEntry. Objek clsAccessList meng-compile dengan menggunakan operasi CompileRules yang pada akhirnya memanggil operasi compile pada clsAccessListEntry. Kode mesin hasil kompilasi disimpan pada memori yang dialokasikan oleh fungsi API Windows HeapAlloc. Atribut bernama ACL_Code dari objek clsAccessList menyimpan pointer ke kode mesin hasil kompilasi. Tahap penyaringan dilakukan dengan menggunakan operasi FilterIPHeader dari objek clsAccessList terhadap paket IP yang hendak disaring. Operasi FilterIPHeader lalu mengeksekusi kode mesin yang dihasilkan pada tahap persiapan. Keluaran dari FilterIPHeader berupa ActType, yaitu sebuah nilai integer yang merepresentasikan aksi yang harus dilakukan terhadap paket IP yang telah disaring. Beberapa sifat dari kode mesin yang dihasilkan Sinaru adalah sebagai berikut:
Hanya menggunakan tiga register yaitu eax, ecx, dan edx. Tidak menggunakan stack. Dipanggil menggunakan instruksi call. Mengubah flag AF CF OF PF SF ZF. Membutuhkan parameter berupa pointer ke header IP yang akan disaring pada register ecx. Header IP yang dimasukkan harus sudah valid. Keluaran berada pada register eax.
Saringan IP yang telah dibuat kode mesinnya akan dieksekusi dengan cara memanggil operasi FilterIPHeader dari objek clsAccessList. Operasi FilterIPHeader akan memanggil kode mesin dengan instruksi call. Gambar 20 menunjukkan source code dari operasi FilterIPHeader.
ActType clsAccessList::FilterIPHeader (const IP_HEADER * iphdr) { ActType result = clsAccessListEntry::Block; if (this->lockReader()) { __asm { mov ecx, this mov eax, [ecx].ACL_Code cmp eax, 0 je gagal mov ecx, iphdr xor edx, edx call eax mov result, eax gagal: } this->unlockReader(); } return result; }
Gambar 20 Source code dari operasi FilterIPHeader Sebagai contoh, akan dibuat sebuah saringan IP yang menolak paket TCP dengan port tujuan 80 dari alamat IP 192.168.4.1, 192.168.4.55 sampai 192.168.5.200, 192.168.7.0/24, dan 192.168.3.56. Selain itu saringan IP juga dibuat agar menolak paket ICMP dengan tipe echo request dan timestamp request yang berasal dari alamat IP 192.168.0.0/16. Saringan IP ini dapat dinyatakan dalam format konfigurasi Sinaru yang diperlihatkan pada Gambar 21. access-list "contoh" allow deny ip src "192.168.4.1, 192.168.4.55 - 192.168.5.200, 192.168.7.0/24, 192.168.3.56" dest any proto tcp sport any dport "80" deny ip src "192.168.0.0/16" dest any proto icmp "8,13" end
Gambar 21 Contoh saringan IP Saringan IP di atas akan diubah menjadi kode mesin oleh Sinaru. Pembuatan kode mesin dilakukan dengan cara merakit potongan-potongan kecil kode mesin dan memasukkan parameter-parameter yang diperlukan seperti alamat IP dan alamat port serta menghitung alamat untuk instruksi lompatan seperti je, jbe , ja. Beberapa contoh potongan kode mesin yang dirakit Sinaru adalah sebagai berikut: 1. 8B 41 0C 0F C8, yaitu kode mesin dari instruksi mov eax, dword ptr[ecx+0Ch] dan bswap eax secara berurutan. Kode mesin ini berfungsi untuk mengambil alamat IP sumber dari header paket IP yang ditunjukkan oleh register ecx ke dalam register eax. 2. 3D 00 00 00 00, yaitu kode mesin dari instruksi cmp eax, alamatIP. Kode mesin ini berguna untuk mencocokkan alamat IP pada register eax. Sinaru akan mengganti empat bytes terakhir dengan alamat IP yang akan dicocokkan. Sebagai contoh, untuk mencocokkan apakah alamat IP
15
pada register eax adalah 192.168.4.1 maka kode mesin yang harus dihasilkan Sinaru adalah 3D 01 04 A8 C0. 3. 8A 41 09 3C 00, yaitu kode mesin dari instruksi mov al, byte ptr ecx+9 dan cmp al, kode_proto secara berurutan. Kode mesin ini berguna untuk mencocokkan jenis protokol pada header paket IP. Sinaru mengganti satu byte terakhir dengan kode jenis protokol. Sebagai contoh, untuk mencocokkan apakah isi paket IP adalah sebuah segment TCP maka Sinaru harus menghasilkan kode mesin 8A 41 09 3C 06. Kode mesin yang dirakit Sinaru untuk saringan IP pada Gambar 21 terdiri atas deretan bytes sebanyak 170 bytes. Kode mesin tersebut dapat dilihat pada Lampiran 2. Pengujian Pengujian dilakukan dalam dua tahapan, masing-masing tahap dilakukan pada topologi jaringan yang berbeda. Hal ini karena protokol yang diuji memang berbeda fungsi dan cara kerjanya. Misalnya, untuk menguji protokol ARP hanya dibutuh satu jaringan saja, sedangkan untuk menguji RIP dibutuhkan banyak jaringan. Semua router yang menjalankan Sinaru pada kedua tahapan pengujian dinonaktifkan TCP/IP stack-nya. Dengan demikian pada router tersebut hanya TCP/IP stack milik sinaru yang bekerja. 1) Pengujian pada Jaringan Sederhana Pengujian pada jaringan sederhana terdiri atas 17 skenario pengujian yang dibuat untuk menguji protokol ARP, ICMP dan IP. Hasil dari skenario-skenario pengujian ini dapat dilihat pada Lampiran 3. Skenario 1 menguji kemampuan router dalam membalas ARP request dan mengirim ARP reply. Skenario 2 menguji kemampuan router dalam mengirim ARP Reply. Skenario 3 memperlihatkan bahwa router dapat membalas paket ICMP echo request dengan mengirim paket ICMP echo reply. Skenario 4 memperlihatkan bahwa router dapat membalas paket ICMP echo request yang ditujukan ke alamat IP milik antarmuka jaringan yang berbeda dengan antarmuka jaringan yang menerima paket. Skenario 5 memperlihatkan bahwa router dapat mengirim paket ICMP echo request.
Skenario 6 menguji kemampuan router dalam membalas paket ICMP timestamp dengan mengirim paket ICMP timestamp reply. Skenario 7 memperlihatkan bahwa router dapat membalas paket ICMP address mask request dengan mengirim paket ICMP address mask reply, baik ke alamat IP router maupun ke alamat broadcast. Skenario 8 memperlihatkan bahwa router dapat mengirim paket ICMP destination unreachable dengan kode protocol unreachable ketika mendapat paket TCP. Router melakukan ini karena protokol TCP tidak diimplementasikan pada router. Skenario 9 memperlihatkan bahwa router dapat mengirim paket ICMP destination unreachable dengan kode port unreachable ketika mendapat paket UDP dengan port tujuan yang tidak terbuka. Skenario 10 memperlihatkan bahwa router dapat mengirim paket ICMP destination unreachable dengan kode net unreachable ketika router gagal menemukan rute untuk sebuah paket IP. Skenario 11 memperlihatkan bahwa router dapat mengirim ICMP time exceeded dengan kode TTL exceeded in transit ketika akan mem-forward paket IP yang field TTL pada header-nya bernilai satu. Skenario 12 memperlihatkan bahwa router dapat mengirim ICMP destination unreachable dengan kode fragmentation needed and DF set ketika router harus melakukan fragmentasi terhadap paket IP yang hendak di-forward tetapi bit DF pada header IP paket itu bernilai satu. Skenario 13 memperlihatkan bahwa router dapat mem-forward paket IP. Dalam proses ini tidak lupa router juga mengurangi TTL pada paket IP dan memperbarui header checksum-nya. Skenario 14 memperlihatkan bahwa router dapat mem-forward sekaligus melakukan fragmentasi jika Maximum Transmission Unit (MTU) dari antarmuka jaringan tujuan lebih kecil daripada panjang paket yang hendak di-forward. Skenario 15 memperlihatkan bahwa router dapat memproses IP options record route dengan mengisi alamat IP router pada record yang tersedia pada header paket IP yang hendak di-forward. Skenario 16 memperlihatkan bahwa router dapat memproses IP options internet timestamp dengan flags bernilai satu. Router mengisi alamat IP router dan timestamp pada record
16
yang tersedia di header paket IP yang hendak di-forward. Skenario 17 memperlihatkan bahwa lapisan internet pada router dapat bekerja dengan benar sehingga menyebabkan lapisan aplikasi pada dua host yang berbeda jaringan dapat berkomunikasi. 2) Pengujian pada Jaringan Kompleks Proses pengujian pada jaringan kompleks diawali dengan membuat topologi jaringan pengujian. Jaringan pengujian yang dibuat dapat dilihat pada Gambar 22. Router-router pada jaringan pengujian dikonfigurasikan seperti yang terlihat pada Lampiran 4. Hosthost pada jaringan pengujian dikonfigurasikan seperti yang terlihat pada Lampiran 5.
Jaringan-jaringan pada pengujian ini terbagi menjadi dua ruang alamat NAT, yaitu lokal atau dalam (inside) dan global (outside) atau luar. Pada tulisan ini akan digunakan istilah dalam dan luar. Yang termasuk jaringan dalam adalah 10.0.1.0/24, 10.0.2.0/24, 10.0.3.0/24, 10.0.4.0/24, dan 10.0.5.0/24. Jaringan selain itu dianggap jaringan luar. Jumlah host pada jaringan dalam sangat minimal, hal ini dikarenakan keterbatasan perangkat keras. Meskipun demikian hal tersebut tidak akan berpengaruh terhadap hasil pengujian. Sebuah router (Router4) pada jaringan dalam bukanlah perangkat lunak yang diuji, tujuannya adalah untuk memperlihatkan bahwa router perangkat lunak dapat bekerja sama dengan router lainnya.
FTP Server 172.17.0.10 172.17.1.147
Switch Cyber
Web server 172.17.0.19
172.17.36.184/24
10.0.3.1/24 10.0.5.1/24 10.0.3.3/24
Client5 10.0.5.50/24
10.0.2.1/24
Router PC (Router1)
SMC 7904BRA DWL-G700AP (Router4)
Client1 10.0.2.20/24
10.0.3.2/24
HUB
10.0.4.1/24 10.0.2.2/24
LAPTOP (Router3)
Client2 10.0.2.21/24 10.0.1.1/24
Router PC (Router2)
Client4 10.0.4.40/24
Client3 10.0.1.10/24
Gambar 22 Topologi jaringan pengujian kompleks
17
Setelah jaringan dibuat, dirancang 29 skenario pengujian yang dibuat untuk menguji protokol RIP, IP dan NAT pada router. Hasil dari masing-masing skenario pengujian ini dapat dilihat pada Lampiran 6. Skenario 1 memperlihatkan aksi protokol RIP versi 2 dari router-router yang diuji. Router dapat mengirim RIP request dan dapat memproses RIP request yang menanyakan seluruh rute dari router lain dengan mengirim RIP response yang berisi seluruh isi tabel rute. Router juga mengirim RIP response (triggered update) ketika tabel rute miliknya berubah. Rute yang dikirim adalah hanya yang berubah saja. Setiap kurang lebih tiga puluh detik router juga mengirim RIP response (regular update). Skenario dua sampai 29 menguji implementasi IP forwarding dan NAT dari router. Skenario-skenario pengujian NAT dapat dibagi menjadi tiga ketegori berdasarkan letak host-host yang akan berkomunikasi, yaitu:
Dalam-Dalam. Pada skenario-skenario ini semua host yang berkomunikasi berada pada jaringan dalam. Meskipun demikian host-host ini menggunakan alamat IP luar sebagai alamat IP tujuan pada header paket IP yang mereka kirim.
Dalam-Luar. Pada skenario-skenario ini host yang memulai komunikasi berada pada jaringan dalam, sedangkan host tujuan berada pada jaringan luar. Dalam hal komunikasi klien-server, klien berada pada jaringan dalam, sedangkan server berada pada jaringan luar.
Luar-Dalam. Kategori pengujian ini adalah kebalikan dari Dalam-Luar yang sudah dijelaskan sebelumnya. Host yang memulai komunikasi berada pada jaringan luar sedangkan host tujuan berada pada jaringan dalam. Dalam hal komunikasi klien-server, klien berada pada jaringan luar, sedangkan server berada pada jaringan dalam.
Skenario-skenario pengujian ini menggunakan program ping dan tracert. Lebih jauh, pengujian juga melibatkan protokol yang berada pada layer di atas layer 3, yaitu HTTP dan FTP. Tabel 5 memperlihatkan rangkuman jenis-jenis pengujian dan protokol atau program yang digunakan. Skenario 2, 3, dan 4 memperlihatkan kemampuan router-router dalam mem-
forward paket-paket dan mencari rute yang benar. Skenario 5 memperlihatkan bahwa router juga dapat mem-forward ke interface yang sama dengan paket diterima. Skenario 6 memperlihatkan bahwa router dapat mengirim ICMP Redirect. Tabel 5 Skenario pengujian Skenario
Protokol atau Program
IP Forwarding
ping
NAT DalamDalam
DalamLuar
LuarDalam
2
9, 12
17, 19
23, 26
tracert
3, 4, 5, 6
10, 11, 12, 13
18
24, 25
HTTP
7
14, 16
20
27, 28
FTP
8
15
21, 22
29
Skenario 7 dan 8 menunjukkan bahwa lapisan internet pada router-router dapat bekerja dengan benar sehingga menyebabkan lapisan aplikasi pada dua host yang berbeda jaringan dapat berkomunikasi. Pada skenario 7 lapisan aplikasinya adalah HTTP sedangkan pada skenario 8 lapisan aplikasinya adalah FTP. Paket-paket melalui dua router untuk sampai ke tujuannya. Skenario 9 sampai 16 memperlihatkan kemampuan unik router dalam menangani paket-paket yang harus mengalami proses penggantian alamat IP (NAT). Yang tidak biasa dari implementasi NAT ini adalah arah paketnya yang Dalam-Dalam, yaitu paket dari jaringan dalam yang bertujuan ke alamat IP luar yang ternyata juga berada di jaringan dalam. Paket ini tidak di-forward ke jaringan luar terlebih dahulu, tetapi langsung diforward ke jaringan dalam. Paket IP yang arahnya dari jaringan dalam ke jaringan dalam mengalami perubahan alamat IP sumber dan alamat IP tujuan. Skenario 9 memperlihatkan proses dalamdalam secara sederhana dengan menggunakan paket ICMP echo request untuk memperlihatkan proses penggantian alamat IP pada header paket IP yang dilakukan oleh Router1. Dalam proses ini Router1 mengganti alamat IP sumber dan juga alamat IP tujuan. Setelah itu langsung mengeluarkan paket ke interface yang terhubung ke jaringan dalam yang sesuai. Skenario 10 memperlihatkan pemakaian program tracert dalam jaringan pengujian untuk melihat router-router antara dua host. Karena Router2 dan Router3 tidak memiliki alamat IP luar, maka ICMP time exceeded yang dikirim oleh mereka diabaikan oleh
18
Router1, sehingga program tracert tidak mendapat paket tersebut. Skenario 11 adalah pengembangan dari skenario 10 dengan memberikan alamat IP luar kepada Router2 dan Router3. Hal ini menyebabkan paket ICMP time exceeded yang mereka kirim diproses oleh Router1. Paket ICMP time exceeded termasuk ICMP error-reporting messages yang datanya berisi header IP dari paket yang error. Proses NAT pada Router1 juga mengubah alamat IP sumber dan alamat IP tujuan pada header IP ini. Skenario 12 merupakan pengembangan dari skenario 10 dan 11. Pada skenario ini Client3 melakukan ping dan tracert ke alamat IP luar Client3. paket-paket diganti alamat IP sumber dan IP tujuannya oleh Router1. Program ping berhasil berjalan tanpa kendala, sementara pada program tracert, hop ke-3 time out karena Router2 tidak memiliki alamat IP luar. Pada skenario 13, Router2 diberi alamat IP luar sehingga program tracert berhasil berjalan tanpa ada time out. Paket ICMP time exceeded yang dikirim oleh Router2 memiliki payload berupa header IP yang diubah alamat IP sumber dan alamat IP tujuannya oleh Router1. Skenario 14 memperlihatkan bahwa proses dalam-dalam yang dilakukan oleh Router1 berlangsung secara benar dan transparan sehingga lapisan aplikasi HTTP Client1 dan Client4 dapat saling berkomunikasi menggunakan alamat IP luar masing-masing tanpa menyadari bahwa alamat IP pada header IP yang mereka terima telah diganti. Skenario 15 memperlihatkan permasalahan yang terjadi antara NAT dengan protokol yang terjadi pada layer di atas layer 3, dalam hal ini FTP. Di dalam payload-nya FTP memasukkan alamat IP dan port yang akan digunakan untuk melakukan transfer data. Alamat IP yang dimasukkan pada payload, dalam kasus tertentu dapat menjadi tidak valid karena adanya NAT. Solusinya adalah router NAT harus memperbarui alamat IP pada payload FTP. Solusi lainnya adalah mengatur klien atau server FTP agar langsung memberikan alamat IP luar mereka dalam koneksi kontrol FTP. Inti permasalahan FTP dengan NAT adalah pada perintah FTP (FTP command) PORT dan balasan FTP (FTP reply) 227. Balasan 227 merupakan balasan dari perintah PASV. Perintah PORT memberikan alamat IP
dan port klien agar server membuat koneksi ke alamat IP tersebut. Balasan 227 memberikan alamat IP dan port server agar klien membuat koneksi ke alamat IP tersebut. Keduanya pada dasarnya bertujuan untuk membangun proses transfer data dan dapat saling menggantikan. Meskipun demikian posisi klien dan posisi server berpengaruh terhadap bermasalah atau tidaknya perintah PORT atau balasan 227. Jika posisi klien dan server tidak menimbulkan masalah pada parintah PORT atau balasan 227, maka router tidak akan mengubah payload FTP. Tabel 6 menunjukkan hubungan posisi klien dan server dengan perlu atau tidaknya perintah PORT dan balasan 227 diubah. Tabel 6 Posisi klien - server dan perlu tidaknya mengubah payload FTP Posisi Klien dan Server
Perintah PORT
Balasan 227
Klien di dalam, Perlu diubah Perlu diubah Server di dalam Klien di dalam, Perlu diubah Tidak perlu diubah Server di luar Klien di luar, Tidak perlu diubah Perlu diubah Server di dalam
Pada skenario 15 baik klien maupun server berada pada jaringan dalam. Pada kasus ini baik perintah PORT maupun balasan 227 harus diperbaiki oleh NAT. Klien FTP pada Client4 dikonfigurasikan agar memakai perintah PORT dan PASV. Pada perintah PORT, Router1 gagal membetulkan alamat IP pada perintah tersebut karena keterbatasan pada Router1, meskipun demikian server FTP pada Client2 berhasil tersambung dengan klien FTP pada Client4 dengan menggunakan alamat IP dalam masing-masing. Sementara itu balasan 227 dapat diperbaiki oleh router1, sehingga proses transfer data menggunakan IP luar masing-masing berhasil dilakukan. Gambar 23 menunjukkan balasan 227 sebelum dan sesudah diperbaiki. Sebelum: 227 Entering Passive Mode (10,0,2,21,4,19)
Sesudah: 227 Entering Passive M (172,17,36,21,4,19)
Gambar 23 Penggantian payload FTP pada skenario 15 Skenario 16 memperlihatkan kondisi yang tidak mungkin dilakukan tanpa NAT. Pada skenario ini klien HTTP dapat berhubungan dengan server HTTP pada host yang sama tanpa melalui loopback interface. Baik klien
19
dan server sama sekali tidak menyadari hal ini dan menganggap bahwa mereka terkoneksi dengan host 172.17.36.20. Tanpa adanya NAT, koneksi ini akan melalui loopback interface sehingga tidak akan keluar ke jaringan di luar host tersebut. Skenario 17 sampai 29 memperlihatkan kemampuan router dalam menangani paketpaket yang harus di-forward dari interface yang terhubung dengan jaringan dalam ke interface yang terhubung dengan jaringan luar atau sebaliknya. Paket yang di-forward dari jaringan dalam ke jaringan luar akan diubah alamat IP sumbernya, sedangkan paket yang di-forward dari jaringan luar ke jaringan dalam akan diubah alamat IP tujuannya. Skenario 17 memperlihatkan proses NAT Dalam-Luar dengan mengunakan program ping untuk mengirim ICMP echo request ke host yang terletak di jaringan luar. Skenario 18 menggunakan program tracert untuk melihat rute-rute ke host tujuan yang terletak di jaringan luar. Pada skenario 18 router memiliki tugas tambahan yaitu membetulkan alamat IP sumber pada payload ICMP time exceeded yang berasal dari router-router yang berada di jaringan luar. Kalau tidak dibetulkan maka program tracert tidak akan mengetahui bahwa paket ICMP time exceeded tersebut adalah balasan dari echo request yang sebelumnya ia kirim. Skenario 19 memperlihatkan bahwa host di jaringan dalam yang tidak memiliki alamat IP luar tidak diperbolehkan mengirim paket ke jaringan luar. Paket itu akan diabaikan tanpa pemberitahuan oleh router. Skenario 20 memperlihatkan koneksi HTTP yang kliennya terletak pada jaringan dalam dan servernya terletak pada jaringan luar. Pengubahan alamat IP yang dilakukan oleh router sama sekali tidak mengganggu koneksi HTTP, sehingga koneksi dapat berlangsung secara normal. Skenario 21 dan 22 memperlihatkan klien FTP yang terletak pada jaringan dalam berhubungan dengan server FTP yang terletak pada jaringan luar. Berbeda dengan kondisi Dalam-Dalam, pada kondisi Dalam-Luar permasalahannya hanya pada perintah PORT. Balasan 227 tidak bermasalah karena balasan 227 memberitahukan alamat IP server yang terletak di jaringan luar sehingga tidak perlu diubah oleh router. Pada skenario 21, router membetulkan perintah PORT
gagal karena
keterbatasan pada implementasi router. Perintah yang gagal dibetulkan itu akan dibiarkan apa adanya dan dilewatkan oleh router sehingga menyebabkan koneksi data FTP gagal terbentuk. Gambar 24 menunjukkan perintah PORT yang gagal dibetulkan dan bagaimana seharusnya perintah PORT yang benar. Perintah yang gagal: PORT 10,0,4,40,4,89
Perintah yang seharusnya: PORT 172,17,36,3,4,89
Gambar 24 Penggantian payload FTP pada skenario 21 Skenario 22 menunjukkan bahwa untuk kasus tertentu router dapat membetulkan perintah PORT. Yaitu jika panjang alamat IP dalam bentuk susunan karakter ASCII sama dengan atau lebih panjang dari alamat IP luar. Oleh karena itu pada skenario 22 alamat IP klien diganti menjadi lebih panjang. Untuk lebih jelasnya, Gambar 25 menunjukkan perintah PORT sebelum dan sesudah dibetulkan. Sebelum: PORT 10,100,140,40,4,36
Sesudah: PORT
172,17,36,23,4,36
Gambar 25 Penggantian payload FTP pada skenario 22 Skenario 23 memperlihatkan proses NAT Luar-Dalam. Pada skenario ini host pada jaringan luar menggunakan program ping untuk mengirim paket ICMP echo request ke host yang terletak pada jaringan dalam. Skenario 24 memperlihatkan penggunaan program tracert untuk melihat rute-rute yang dilalui untuk mencapai tujuan. Program tracert berjalan normal, tetapi ketika router yang terletak di jaringan dalam mengirim paket ICMP time exceeded, router NAT tidak membolehkan paket itu ke jaringan luar karena router yang berada di jaringan dalam tidak memiliki alamat IP luar. Skenario 25 adalah perbaikan dari skenario 24. Pada skenario 25 router yang hendak mengirim time exceeded diberi alamat IP luar. Program tracert berjalan normal, ICMP time exceeded dari router di dalam pun diperbolehkan keluar, hanya saja router NAT memiliki tugas tambahan yaitu membetulkan alamat IP tujuan dari payload ICMP time exceeded. Dengan demikian program tracert mendapatkan jawaban yang normal seolaholah tidak ada proses NAT sama sekali.
20
Skenario 26 memperlihatkan apa yang terjadi jika ada paket dari jaringan luar yang ditujukan langsung kepada host di jaringan dalam. Pada skenario ini tabel rute routerrouter di jaringan luar (jaringan IPB) dibuat sedemikian sehingga paket dengan tujuan alamat IP dalam (10.0.4.0/24 dan 10.0.5.0/24) dapat diarahkan sampai ke interface jaringan luar Router1. Paket yang sampai akan diperbolehkan masuk dan dapat mencapai tujuannya. Ketika host di dalam akan membalas paket tersebut, akan ada dua kemungkinan yaitu: Jika host di dalam memiliki alamat IP luar maka paket tersebut akan melalui proses NAT sehingga alamat IP sumbernya berubah. Jika host di dalam tidak memiliki alamat IP luar maka paket balasan tersebut tidak akan di-forward keluar oleh router (paket dibuang). Skenario 27 memperlihatkan koneksi HTTP yang kliennya terletak pada jaringan luar dan servernya terletak pada jaringan dalam. Karena protokol HTTP benar-benar tidak peduli dengan lapisan protokol di bawahnya maka semua berjalan normal. Proses NAT pada router tidak melakukan pekerjaan tambahan kecuali mengganti alamat IP sumber atau alamat IP tujuan saja. Skenario 28 mirip dengan skenario 26 yang memperlihatkan host di jaringan luar ingin membuat koneksi HTTP dengan host yang terletak di jaringan dalam tetapi tidak menggunakan alamat IP luar melainkan langsung menggunakan alamat IP dalam. Paket SYN dari host luar dapat sampai ke tujuan, tetapi apakah balasannya (SYN+ACK) sampai atau tidak tergantung dari apakah host di dalam memiliki alamat IP luar atau tidak. Meskipun balasannya dapat mencapai host di luar tetapi koneksi HTTP tidak dapat terbentuk karena paket SYN+ACK diubah alamat IP sumbernya oleh router sehingga host di jaringan luar tidak mengenalinya. Skenario 29 memperlihatkan klien FTP yang terletak pada jaringan luar berhubungan dengan server FTP yang terletak pada jaringan dalam. Berbeda dengan kasus Dalam-Dalam maupun Dalam-Luar, pada kasus Luar-Dalam permasalahan terletak hanya pada balasan 227. Perintah PORT tidak bermasalah karena perintah PORT memberitahukan alamat IP klien yang terletak di luar sehingga tidak perlu diubah oleh router. Pada skenario ini router berhasil membetulkan alamat IP pada balasan 227 yang dikeluarkan oleh server FTP yang berada di jaringan dalam. Gambar 26
menunjukkan balasan 227 sesudah diganti oleh router.
sebelum dan
Sebelum: 227 Entering Passive Mode (10,0,2,21,4,52)
Sesudah: 227 Entering Passive M (172,17,36,21,4,52)
Gambar 26 Penggantian payload FTP pada skenario 29 Analisis Kinerja Router Analisis kinerja router dilakukan berdasarkan pada lima parameter, yaitu forwarding delay, jitter, throughput, utilisasi CPU dan pemakaian memori. Hasil pengukuran kelima parameter ini disajikan dalam bentuk grafik. Tiga parameter pertama dibandingkan dengan router Windows XP. 1) Forwarding Delay Gambar 27 memperlihatkan plot forwarding delay 300 paket ICMP echo request Sinaru dan router Windows XP. Garis berwarna merah merepresentasikan forwarding delay dari Sinaru dan garis berwarna hijau merepresentasikan forwarding delay dari router Windows XP. Nilai rata-rata forwarding delay dari Sinaru adalah 0,190557 ms, sementara nilai rata-rata forwarding delay dari router Windows XP adalah 0,093290 ms, dengan demikian forwarding delay rata-rata Sinaru sekitar dua kali lipat forwarding delay rata-rata router Windows XP. Gambar 27 juga menunjukkan bahwa forwarding delay dari router Windows XP lebih kecil dari forwarding delay dari Sinaru.
Gambar 27 Perbandingan forwarding delay Sinaru dan router Windows XP Pada Gambar 27 terlihat ada tiga lonjakan yang cukup besar pada forwarding delay Sinaru. Ketiga lonjakan ini terlihat berada pada jarak waktu yang hampir sama dan nilai forwarding delay yang hampir sama. Berdasarkan data penangkapan paket, lonjakan ini berada pada paket ICMP echo request ke-40, 160 dan 280. Tabel 7 dibuat
21
untuk memperlihatkan sent time, waktu relatif dan forwarding delay pada saat terjadi lonjakan berdasarkan data penangkapan paket. Tabel 7 Sent time, waktu relatif, dan forwarding delay saat lonjakan. Sent time relatif Waktu relatif Forwarding terhadap sequence terhadap lonjakan delay Sequence pertama sebelumnya (detik) (ms) (detik) 40
58,183625
-
0, 391
160
238,187097
180,003472
0, 389
280
418,190558
180,003461
0, 388
Berdasarkan Tabel 7, jarak waktu antara dua lonjakan forwarding delay yang berurutan hampir sama, yaitu sekitar 180 detik. Sementara itu forwarding delay ketiga lonjakan itu juga hampir sama, dengan nilai rata-rata 0,38933 ms. Dengan demikian, diduga lonjakan itu dikarenakan entri ARP yang berisi alamat fisik dari alamat IP 192.168.5.2 pada Sinaru mengalami time out. Waktu time out ARP pada Sinaru saat pengukuran delay adalah 180 detik. Akibat time out, untuk mem-forward paket ICMP echo request ke-40, 160 dan 280 Sinaru harus mengirim ARP request dan menunggu ARP reply. Hal inilah yang menyebabkan terjadinya lonjakan forwarding delay pada paket ICMP echo request ke-40, 160, dan 280. Di lain pihak, router Windows XP memiliki nilai time out ARP 600 detik. Jarak waktu sent time paket ICMP echo request pertama dengan paket ke-300 adalah 448 detik. Dengan demikian selama pengujian ARP router Windows XP tidak mengalami time out, sehingga tidak terlihat lonjakan yang sama pada plot forwarding delay dari router Windows XP.
Gambar 28 Jitter Sinaru
Gambar 29 Jitter router Windows XP 3) Throughput Perbandingan throughput selama 60 detik antara Sinaru dan router Windows XP diperlihatkan oleh Gambar 30. Penguji1 menjalankan iperf sebagai klien. Gambar 31 memperlihatkan perbandingan throughput pada saat Penguji2 berperan sebagai klien. Tabel 8 menunjukkan throughput rata-rata.
2) Jitter Dengan menggunakan data yang sama dengan plot forwarding delay, jitter dihitung dan diplot. Gambar 28 memperlihatkan hasil plot jitter 300 paket ICMP echo request Sinaru. Gambar 29 memperlihatkan hasil plot jitter 300 paket ICMP echo request router Windows XP. Nilai rata-rata jitter dari Sinaru adalah 12,127 μs, sementara nilai rata-rata jitter dari router Windows XP adalah 15,381 μs. Dari Gambar 28 dan Gambar 29 terlihat bahwa jitter dari Sinaru terlihat lebih baik daripada jitter router Windows XP. Pada plot jitter Sinaru juga terlihat adanya lonjakan yang sama seperti pada plot forwarding delay.
Gambar 30 Perbandingan throughput TCP, Penguji1 sebagai klien iperf
Gambar 31 Perbandingan throughput TCP, Penguji2 sebagai klien iperf
22
Tabel 8 Throughput rata-rata Router
Klien iperf Penguji1
Penguji2
Throughput (kb/s) Windows XP Sinaru
94.228 81.908
90.170 80.137
Berdasarkan Tabel 8, ketika Penguji2 berperan sebagai klien, throughput kedua router lebih rendah. Hal ini disebabkan perbedaan perangkat keras antara Penguji1 dan Penguji2. Throughput Sinaru selalu lebih rendah dibandingkan throughput router windows XP baik pada saat Penguji1 sebagai klien maupun saat Penguji2 sebagai klien.
Gambar 32 Utilisasi CPU, Penguji1 sebagai klien
4) Utilisasi CPU Pengukuran utilisasi CPU dilakukan pada saat router diuji throughput-nya. Program pencatat utilisasi CPU dijalankan satu kali dan akan terus mencatat utilisasi CPU setiap satu detik sampai program diberhentikan. Utilisasi CPU yang dicatat oleh program bukanlah utilisasi CPU sistem keseluruhan, melainkan hanya utilisasi CPU yang digunakan oleh process Sinaru. Plot utilisasi CPU Sinaru ketika Penguji1 mencatat throughput seperti pada Gambar 30 ditunjukkan oleh Gambar 32. Plot utilisasi CPU Sinaru ketika Penguji2 mencatat throughput seperti pada Gambar 31 ditunjukkan oleh Gambar 33. Pengujian throughput dimulai pada detik ke-0 dan berakhir pada detik ke-60. Gambar 32 dan Gambar 33 juga menyertakan utilisasi CPU sepuluh detik sebelum dan sepuluh detik sesudah pengukuran throughput. Rata-rata utilisasi CPU saat Penguji1 sebagai klien adalah 39,64%, sedangkan ratarata utilisasi CPU pada saat Penguji2 sebagai klien adalah 37,84%. Kedua nilai rata-rata ini tidak termasuk data sepuluh detik sebelum dan sepuluh detik sesudah pengukuran throughput. Utilisasi CPU pada saat Penguji2 sebagai klien lebih rendah karena throughputnya (Tabel 8) memang lebih rendah. Dari Gambar 32 dan Gambar 33 terlihat bahwa utilisasi CPU tidak seratus persen, artinya bukan utilisasi CPU Sinaru yang membatasi throughput seperti yang terlihat pada Tabel 8. Dari gambar juga terlihat bahwa ketika router tidak mem-forward paket (sepuluh detik sebelum dan sesudah pengukuran throughput) utilisasi CPU Sinaru bernilai nol persen.
Gambar 33 Utilisasi CPU, Penguji2 sebagai klien Meskipun dapat diambil kesimpulan bahwa bukan utilisasi CPU dari process Sinaru yang membatasi throughput akan tetapi Sinaru menggunakan WinPcap untuk menangkap paket. WinPcap memiliki bagian yang berjalan pada user level dan bagian yang berjalan pada kernel level. Kode WinPcap pada user level (wpcap.dll dan packet.dll) dihitung pada utilisasi CPU process Sinaru, sedangkan kode WinPcap pada kernel level tidak ikut dihitung. 5) Memori Pengukuran pemakaian memori dilakukan bersamaan dengan pengukuran utilisasi CPU dan menggunakan perangkat lunak yang sama. Pemakaian memori yang dicatat bukan pemakaian memori keseluruhan, melainkan hanya pemakaian memori process Sinaru. Plot pemakaian memori Sinaru ketika Penguji1 mencatat throughput seperti pada Gambar 30 ditunjukkan oleh Gambar 34. Plot pemakaian memori Sinaru ketika Penguji2 mencatat throughput seperti pada Gambar 31 ditunjukkan oleh Gambar 35. Pengujian throughput dimulai pada detik ke-0 dan berakhir pada detik ke-60. Gambar 34 dan Gambar 35 juga menyertakan pemakaian memori sepuluh detik sebelum dan sepuluh detik sesudah pengukuran throughput.
23
sehingga protokol FTP dapat bekerja dengan baik saat router melakukan NAT, meskipun demikian kemampuan ini terbatas sehingga pada kasus tertentu router gagal mengganti payload FTP.
Gambar 34 Pemakaian memori, Penguji1 sebagai klien
Pada parameter kinerja forwarding delay dan throughput Sinaru berada di bawah router windows XP, sedangkan pada parameter kinerja jitter Sinaru lebih baik dari router Windows XP. Dari hasil pengamatan terhadap utilisasi CPU terlihat bahwa Sinaru menggunakan 0 % CPU saat tidak melakukan apa-apa dan 39,64% saat router mem-forward dengan throughput 81,9 Mb/s. Dari hasil pengamatan terhadap pemakaian memori menunjukkan bahwa Sinaru tidak memakai banyak memori dan pemakaian memori yang stabil pada saat pengujian throughput. Saran
Gambar 35 Pemakaian memori, Penguji2 sebagai klien Rata-rata pemakaian memori saat Penguji1 sebagai klien adalah 1693864 bytes, sedangkan rata-rata pemakaian memori pada saat Penguji2 sebagai klien adalah 1692588 bytes. Kedua nilai rata-rata ini tidak termasuk data sepuluh detik sebelum dan sepuluh detik sesudah pengukuran throughput. Perbedaan rata-rata pemakaian memori ini sangat kecil dan tidak signifikan. Pada kedua plot memori di gambar Gambar 34 dan Gambar 35 terlihat bahwa sepuluh detik sebelum pengujian throughput, pemakaian memori konstan. Ketika terjadi pengukuran throughput pemakaian memori tampak turun naik, namun pemakaian memori tidak naik terus atau turun terus. Pada sepuluh detik setelah pengujian throughput pemakaian memori tampak kembali konstan. Ini memperlihatkan bahwa penggunaan memori Sinaru tidak besar dan stabil saat memforward banyak paket.
KESIMPULAN DAN SARAN Kesimpulan Sinaru (Simple IPv4 NAT Router) adalah router perangkat lunak yang memiliki fasilitas static NAT, RIP, dan penyaringan paket IP. Router juga mampu mengganti payload FTP
Perangkat lunak yang dibuat masih memiliki beberapa kekurangan dan masih dapat dikembangkan lebih lanjut. Pengembangan tersebut antara lain: 1. Membuat modul penangkapan dan pengiriman paket tersendiri, sehingga Sinaru tidak lagi membutuhkan WinPcap. Diharapkan kinerja Sinaru akan lebih baik. 2. Menyempurnakan penggantian payload FTP pada proses NAT sehingga router selalu berhasil melakukannya. Untuk itu proses NAT harus melakukan inspeksi ketat pada aliran kontrol FTP. 3. Menambahkan dukungan pada datalink selain Ethernet, misalnya PPPoE. 4. Menyempurnakan dan mengoptimalkan beberapa struktur data internal Sinaru, seperti tabel rute, tabel NAT dan tabel ARP. Saat ini tabel-tabel tersebut menggunakan struktur data doubly-linked list. Penggantian struktur data dengan yang lebih baik diharapkan dapat meningkatkan performa router. 5. Melakukan analisis kinerja yang lebih mendalam seperti yang dipaparkan di RFC 2544.
DAFTAR PUSTAKA Avravmov D. 2005. How to get CPU usage by performance counters (without PDH). http://www.codeproject.com/KB/system/c puusageByDudiAvramov.aspx [16 Februari 2008]