BAB II LANDASAN TEORI 2.1 GATEWAY Gateway, bila dilihat pada kamus Inggris Indonesia diartikan sebagai pintu gerbang. Namun pada dunia komputer, gateway dapat berarti juga sebagai jembatan penghubung antar satu sistem dengan sistem lain yang berbeda, sehingga dapat terjadi suatu pertukaran data antara sistem tersebut (Romzy Imron Rozidi. Membuat Sendiri SMS Gateway Bebasis Protokol SMPP. Yogyakarta : Andi, 2004). Gateway digunakan untuk interkoneksi jaringan dimana masing-masing jaringan memiliki arsitektur yang sangat berbeda. Jaringan yang dihubungkannya mempunyai protokol yang berbeda mulai dari lapisan hubungan data sampai dengan lapisan aplikasi. Gateway juga merupakan bentuk khusus dari router yang digunakan untuk bertukar informasi dengan router lain yang berlainan dengan cara mengolah informasinya maupun cara pencarian rutenya. Jadi, bila suatu jaringan yang berisi sekumpulan router berjenis sama disebut autonomus system, hendak berhubungan dengan jaringan sistem router lain, diperlukan satu buah gateway untuk masingmasing jaringan. Kedua buah gateway ini saling bertukar informasi dengan protokol antar router yang berbeda sistem, yang disebut ERP (Exterior Router Protocol). Protokol yang dibuat untuk komunikasi gateway ini bekerja dalam bentuk permintaan dan tanggapan yang dikirim dalam datagram Internet Protocol (IP). Contoh permintaan adalah permintaan untuk menjadi router tetangga. Permintaan tersebut dapat menjadi dua jenis tanggapan yaitu diterima atau ditolak. 4 5 workstation application application application presentation presentation presentation session session session transport transport transport network network network data link data link data link physical physical physical gateway LAN WAN Gambar 2.1. Transaksi Gateway pada OSI Layer Pada Gambar 2.1. Tiga kegiatan gateway yang berkaitan dengan komunikasi antar sistem adalah : 1) Neighbour acquisition Terjadi ketika dua router bertetangga tetapi berbeda sistem otonomi saling menyetujui untuk saling bertukar informasi pencarian jalan. Prosedur resmi untuk persetujuan ini diperlukan mengingat kemungkinan tidak tersedianya salah satu router untuk berbagi informasi. Prosedur ini dimulai dengan salah satu router mengirimkan permintaan untuk bertetangga. Router lainnya dapat memberi tanggapan menerima atau menolak. Untuk mengakhiri ketanggapan, salah satu router dapat mengirimkan pesan untuk berhenti dan dijawab dengan persetujuan. 2) Neighbour reachability Prosedur ini dilakukan bila hubungan ketanggapan telah ditetapkan, dan digunakan untuk memelihara hubungan. Suatu gateway harus yakin bahwa tetangganya masih ada dan masih berstatus tetangga. Untuk melakukan ini, kedua gateway harus saling bertukar pesan “Hello” dan “I heard you” secara berkala. 3) Network reachability 6 Prosedur ini berkaitan dengan penukaran permintaan dan tanggapan secara berkala. Bila salah satu gateway mengirimkan permintaan poll, yaitu meminta informasi jaringan, maka tetangganya menanggapi dengan pesan update. Tanggapan ini berisi jaringan yang dapat dijangkau oleh gateway pengirim poll, termasuk jarak masing-masing jaringan tersebut. Dari informasi ini gateway peminta tadi dapat menyusun tabel pencarian jalan. 2.2 JARINGAN AD HOC Jaringan ad hoc adalah jaringan yang memiliki konfigurasi peer to peer dan tidak memerlukan access point. Peer to peer wireless LAN hanya mensyaratkan wireless NIC didalam setiap device yang terhubung ke jaringan. Dengan konfigurasi peer to peer ini, maka kita dapat membentuk sebuah jaringan untuk penggunaan sewaktu waktu (Budhi Irawan. Jaringan Komputer : Graha Ilmu, 2005). Jaringan ad hoc dilihat dari sisi topologi jaringan merupakan kumpulan dari beberapa node jaringan wireless multihop yang dinamis. Setiap node mempunyai interface wireless untuk berkomunikasi dengan node lainya. Jaringan ad hoc mempunyai infrastruktur node jaringan yang tidak permanen. Jaringan ini terdiri atas beberapa node yang bersifat mobile dengan satu atau lebih interface pada setiap nodenya. Setiap node pada jaringan ad hoc harus mampu menjaga performa trafik paket data dalam jaringan akibat jaringan mobilitas node dengan cara rekonfigurasi jaringan. Sebagai contoh, jika ada node yang bergeser yang mengakibatkan gangguan berupa putusnya jaringan, maka node yang mengalami gangguan tersebut dapat meminta pembentukan rute link baru untuk meneruskan pengiriman paket data. 2.2.1 Karakteristik Jaringan Ad Hoc Node-node pada jaringan ad hoc tidak hanya berperan sebagai pengirim dan penerima data, namun dapat berperan sebagai penunjang node yang lainya, misalnya 7 mempunyai kemampuan layaknya router, dengan demikian diperlukan adanya protokol routing dalam jaringan ad hoc untuk menunjang proses kirim terima antar node. Berikut karakteristik jaringan ad hoc: 1) Multiple Wireless Link Sifat node yang mempunyai sifat mobility dapat memiliki beberapa interface yang terhubung ke beberapa node lainya. 2) Dynamic Topology Dikarenakan sifat node yang mobile maka topologi jaringannya dapat berubah secara random atau acak. Sebagai akibat protokol routing mempunyai masalah yang lebih kompleks dibandingkan dengan jaringan kabel dengan node yang tetap. 3) Limited Resource Seperti jaringan wireless lainnya, jaringan ad hoc dibatasi oleh masalah daya dan kapasitas memori. 2.2.2 Protokol Routing pada Jaringan Ad Hoc Protokol adalah suatu protokol yang menjalankan tugasnya sebagai pencari rute atau link dari node pengirim ke node penerima yang berjalan pada layer tiga di OSI layer. Protokol routing tersebut bertugas mengirimkan paket dari node penerima ke node pengirim melalui node penghubung dimana protokol routing tersebut berfungsi mencari rute terbaik. Jaringan ad hoc memiliki dua model protokol routing diantaranya yaitu (Subir Sumar Sakar, T.G. Basavaraju and C. Puttamadappa. Ad hoc Mobile Wireless Network New York London : Auerbach Publications, 2007) : 1) Protokol routing yang bersifat reaktif yaitu protokol yang membentuk tabel routing apabila diperlukan. Diantaranya, Ad hoc On-demand Distance Vector (AODV), Dinamic Source Routing (DSR), Temporelly Ordered Routing Algorithm (TORA), Cluster-based Routing Protocol (CBRP), Location-Aded Routing (LAR), Ant Colony-Based Algorithm (ARA). 8 2) Protokol routing yang bersifat proaktif yaitu protokol yang membentuk dan mengupdate tabel routing setiap waktu. Diantaranya, Wireless Routing Protocol (WRP), Destenation-Squenced Distance Vector (DSDV), Optimized Link State Routing (OLSR), Fisheye State Routing (FSR). 3) Protokol routing hybrid adalah protokol yang menggabungkan antara proaktif dan reaktif. Diantaranya, Zone Routing Protocol (ZRP), Zone BasedHierarchical Link State (ZHLS). 2.2.3 Arsitektur Jaringan Ad Hoc pada OSI Layer Arsitektur jaringan ad hoc pada OSI layer adalah difokuskan pada lapisan bawah pada layer OSI yaitu : 1) Layer Network Fungsi utama dari layer network adalah pengalamatan dan routing. Pengalamatan pada layer network adalah pengalamatan secara logikal. 2) Layer Data Link Fungsi utama dari layer data link diantaranya arbitration yaitu pemilihan media fisik, addressing dan pengalamatan fisik, error detection yang menentukan apakah data telah terkirim sampai tujuan, identify data encapsulation yaitu menentukan pola header pada suatu data. 3) Layer Fisik Pada layer ini adalah perangkat hardware yang digunakan. 2.3 JARINGAN HYBRID Konsep jaringan hybrid adalah gabungan dari jaringan infrastruktur dan ad hoc yang dapat dilihat pada Gambar 2.2. Di satu sisi ada jaringan dengan infrastruktur dan disisi lain terdapat node yang dapat bergerak bebas (mobile node) dengan fasilitas routing. Hal ini memungkinkan rute multi-hop antara mobile node dengan 9 base station. Hal ini menyebabkan ruang lingkup area dari base station menjadi lebih luas, ide jaringan hybrid adalah untuk efesiensi dari jaringan infrastruktur yang ada, untuk memperluas dari area base station dan mengurangi konsumsi daya listrik. Gambar 2.2. Jaringan Hybrid 2.4 WIRELESS FIDELITY (WiFi) WiFi merupakan kependekan dari Wireless Fidelity, yang dapat diartikan sebagai sekumpulan standar yang digunakan untuk Jaringan Lokal Nirkabel (Wireless Area Network-WLAN) yang didasari pada IEEE 802.11. Standar dari spesifikasi dari wifi adalah 802.11 a, 802.11 b, 802.11 g, dan 802.11 n untuk jelsasnya terdapat pada Tabel 2.1. Awalnya WiFi ditunjukan untuk membangun jaringan nirkabel dan LAN (Local Area Network), namun sekarang banyak WiFi digunakan dalam mengakses internet. Hal ini memungkinkan apabila seseorang mempunyai PC atau Laptop yang dilengkapi kartu jaringan (wireless card) atau Personal Digital Asisten (PDA) untuk terhubung dengan internet dengan menggunakan access point terdekat. 10 Tabel 2.1. Tabel Spesifikasi WiFi Spesifikasi Kecepatan Frekuensi Band Cocok dengan 802.11b 11 Mbps ~ 2.4 Ghz b 802.11a 54 Mbps ~ 2.4 Ghz a 802.11g 54 Mbps ~ 2.4 Ghz b, g 802.11n 100 Mbps ~ 5 Ghz b, g, n Pada frekuensi WiFi, ada 11 channel yang diijinkan beroperasi, masing-masing 5 Mhz, yaitu : 1) Channel 1 : 14.2 Mhz 2) Channel 2 : 4.17 Mhz 3) Channel 3 : 4.22 Mhz 4) Channel 4 : 4.27 Mhz 5) Channel 5 : 4.32 Mhz 6) Channel 6 : 4.37 Mhz 7) Channel 7 : 4.42 Mhz 8) Channel 8 : 4.47 Mhz 9) Channel 9 : 4.52 Mhz 10) Channel 10 : 4.57 Mhz 11) Channel 11 : 4.62 Mhz 2.5 TRANSMISION CONTROL PROTOCOL/INTERNET PROTOCOL TCP/IP (Transmision Control Protocol/Internet Protocol) adalah standar komunikasi data yang digunakan oleh komunitas internet dalam proses tukar menukar data dari satu komputer ke komputer lainnya dalam jaringan internet. Protokol ini tidaklah dapat berdiri sendiri karena protokol ini merupakan kumpulan dari protokolprotokol. Protokol ini juga merupakan protokol yang paling banyak digunakan pada 11 saat ini. Data tersebut di implementasikan dalam bentuk perangkat lunak (software) pada sistem operasi. Protokol TCP/IP dikembangkan pada tahun 1970-an sampai 1980-an sebagai sebuah protokol standar untuk menghubungkan komputer-komputer dan jaringan untuk membentuk sebuah jaringan yang luas (WAN). TCP/IP merupakan sebuah standar jaringan terbuka yang bersifat independent terhadap mekanisme transport jaringan fisik yang digunakan, sehingga dapat digunakan dimana saja. Protokol ini menggunakan skema pengalamatan sederhana yang disebut alamat IP (Internet Protocol Address) yang mengijinkan hingga beberapa ratus juta komputer terhubung dalam jaringan internet. Protokol ini juga bersifat routable yang artinya dapat di implementasikan dengan berbeda sistem, seperti Sistem Operasi Windows dan Linux. 2.5.1 Arsitektur TCP/IP Arsitektur TCP/IP tidak berlandaskan pada tujuh lapisan OSI layer, tetapi menggunakan model refrensi DARPA (United State Defense Advanced Research Project Agency) atau badan riset di Amerika Serikat. TCP/IP mengimplementasikan arsitektur berlapis yang terdiri dari empat lapis. Empat lapis ini dapat dipetakan (meski tidak secara langsung) kedalam lapisan OSI. Empat lapis ini kadang-kadang disebut DARPA Model, Internet Model, atau DOD Model, mengingat yang pertama mengembangkan TCP/IP adalah Badan Riset Amerika Serikat. Pada Gambar 2.3. Setiap lapisan yang dimiliki oleh kumpulan protokol diasosiasikan dengan protokolnya masing-masing. Protokol utama dalam TCP/IP adalah sebagai berikut : 1) Protokol Lapisan Aplikasi bertanggungjawab menyediakan akses kepada aplikasi terhadap layanan jaringan TCP/IP. Protokol ini mencakup protokol DHCP, DNS, HTTP, FTP, SMTP, dan SNMP. 2) Protokol Lapisan Antar Host berguna untuk membangun komunikasi menggunakan sesi koneksi. Protokol dalam lapisan ini adalah TCP dan UDP. 12 3) Protokol Lapisan Internetwork (lapisan jaringan) bertanggung jawab melakukan pemetaan dan enkapsulasi paket-paket jaringan menjadi paketpaket IP. Protokol yang berjalan pada lapisan ini adalah IP, ARP, ICMP, dan IGMP. 4) Protokol Lapisan Antar Muka Jaringan bertanggung jawab dalam meletakkan frame-frame pada jaringan diatas media jaringan yang digunakan. TCP/IP dapat bekerja dengan banyak teknologi transport, mulai dari teknologi transport dalam LAN (Ethernet dan Token Ring) MAN dan WAN. Gambar 2.3. Arsitektur TCP/IP dibandingkan dengan Model Lapisan DARPA dan Model Lapisan OSI Layer 2.6 LINUX UBUNTU VERSI 9.10 Linux adalah nama yang diberikan kepada sistem operasi komputer bertipe unix. Linux merupakan salah satu contoh hasil pengembangan perangkat lunak bebas dan sumber terbuka utama. Seperti perangkat lunak bebas dan sumber terbuka lainnya 13 pada umumnya, kode sumber Linux dapat dimodifikasi, digunakan dan di distribusikan kembali secara bebas oleh siapa saja. Ubuntu merupakan salah satu distribusi linux yang berbasiskan debian proyek ubuntu resmi disponsori oleh Canonical Ltd yang merupakan perusahaan milik seorang kosmonot asal Afrika Selatan Mark Shuttleworth. Nama ubuntu diambil dari nama sebuah konsep ideologi di Afrika Selatan, “Ubuntu” berasal dari bahasa kuno Afrika, yang berarti “rasa perikemanusian terhadap sesama manusia”. Tujuan dari distribusi Linux Ubuntu adalah membawa semangat yang terkandung di dalam filosofi Ubuntu kedalam dunia perangkat lunak. Ubuntu adalah sistem operasi lengkap berbasis Linux, tersedia secara bebas dan mempunyai dukungan baik yang berasal dari komunitas maupun tenaga ahli profesional. Ubuntu mempunyai filosofi sebagai berikut : 1) bahwa perangkat lunak harus tersedia dengan bebas biaya, 2) bahwa aplikasi perangkat lunak tersebut harus dapat digunakan dalam bahasa lokal masing-masing dan untuk orang-orang yang mempunyai keterbatasan fisik, 3) bahwa pengguna harus mempunyai kebebasan untuk mengubah perangkat lunak sesuai dengan apa yang mereka butuhkan. Perihal kebebasan inilah yang membuat Ubuntu berbeda dari perangkat lunak berpemilik (proprietary) bukan hanya peralatan yang anda butuhkan tersedia secara bebas biaya, tetapi anda juga mempunyai hak untuk memodifikasi perangkat lunak anda sampai perangkat lunak tersebut bekerja sesuai dengan yang anda inginkan. 2.7 AD HOC ON-DEMAND DISTANCE VECTOR (AODV) AODV pertama kali dibuat pada tahun 1997, setelah DSR diusulkan terlebih dahulu. Protokol ini seperti DSDV tetapi tidak keseluruhan demikian. Karena konsep penunjukan jarak (distance vector) sangat lemah, maka AODV berubah dari tabel sendiri (table driven) yang sifatnya proaktif menjadi sesuai permintaan (on-demand) yang siafatnya reaktif. Bjorn Wiberg dan Erik Nordstrom dari Uppsala University 14 Swedia, mengembangkan routing protokol yang berbasis AODV yang diberi nama AODV-UU. Sampai laporan ini ditulis, versi AODV-UU telah mencapai versi 0.9.6. AODV protokol routing adalah suatu protokol routing yang digunakan dalam jaringan ad hoc (http://www.faqs.org/rfcs/rfc3561.html). Pada AODV setiap node diperuntukan sebagai router dan rute diperoleh jika diperlukan. Protokol tersebut bertujuan untuk menemukan rute terdekat dalam jaringan ad hoc. AODV menggunakan rute yang simetris. Dia akan mencari rute lain apabila ada rute yang rusak. Ketika AODV dijalankan pada node satu, maka AODV tersebut mengirimkan pesan Hello untuk mencari tetangganya. AODV menggunakan mekanisme penemuan rute. Mekanisme dari protokol routing AODV adalah sebagai berikut : 1) protokol ini akan membangun tabel rute apabila diperlukan, 2) untuk membedakan antara koneksi jaringan yang diluar AODV dan menentukan topologi, 3) menyebabkan informasi apabila ada perubahan jaringan dan jaringan rusak. 2.7.1 Format Rute pada Protocol Routing AODV Proses penemuan rute dimulai ketika AODV dijalankan pada node dan node tersebut ingin berkomunikasi kepada node yang lain. Format rute dalam protokol AODV ada dua yaitu : 1) Rute Penemuan (Route Discovery) Pada Gambar 2.4. Rute penemuan adalah sebuah mekanisme dimana sebuah node sumber ingin mengirimkan paket ke node tujuan, harapan dapat menemukan rute pada tujuan tersebut. Rute ini digunakan bila sebuah node ingin paket ke node tujuan dan tidak mengetahui alamat tujuan tersebut. Jenis rute penemuan yaitu, rute penemuan (RREQ) dan rute balasan (RREP). 15 Gambar 2.4. Contoh Rute Penemuan (Route Discovery) 2) Rute Pemeliharaan (Route Maintenance) Pada Gambar 2.5. Rute pemeliharaan adalah mekanisme sebuah node ingin mengirimkan paket ke node tujuan, rute ini dapat mendeteksi jaringan yang rusak atau jaringan yang tidak dapat di pakai dan rute ini akan menghentikan penggunaan rute tersebut. Jenis rute pemeliharaan yaitu rute update dan rute error (RRER). Gambar 2.5. Contoh Rute Pemeliharaan (Route Maintenance) AODV memerlukan setiap node untuk menjaga setiap table rute yang berisi sebagai berikut: 1) IP Address tujuan : Berisi IP Address tujuan yang diperlukan untuk menemukan rute. 2) Nomor urut tujuan : Berfungsi pula dalam membantu penemuan rute. 3) Hop selanjutnya : Loncotan atau hop berikutnya bisa berupa tujuan atau node yang di tengah, hop selanjutnya ini di rancang untuk meneruskan paket ke node tujuan. 4) Jumlah Hop : Jumlah hop dari alamat IP sumber ke alamat IP tujuan. 16 5) Lifetime : Waktu dalam milidetik yang digunakan untuk node penerima permintaan rute (RREQ). 6) Status sebuah rute : Sebuah rute memiliki status up (valid) dan down (tidak valid). 2.8 AD HOC ON-DEMAND DISTANCE VECTOR–UPPSALA UNVERSITY (AODV-UU) AODV-UU adalah implementasi protokol routing AODV pada Linux, yang dikembangkan oleh Universitas Uppsala, Swedia. AODV-UU ini berjalan sebagai user-space daemon dan memelihara kernel tabel routing. AODV-UU ditulis dengan bahasa pemrograman C dan telah diterbitkan dibawah GNU General Public License (GPL). AODV-UU mengimplementasikan hampir semua hal pada AODV. Salah satu tujuan dari AODV-UU adalah untuk memenuhi implementasi dari AODV yang sesuai dengan draft terakhir dan tujuan ini menopang pengembangan perangkat lunak yang berkelanjutan. Kebutuhan sistem dari AODV-UU lebih sederhana, dengan menggunakan distro linux versi kernel 2.4.x bersama dengan menggunakan kartu jaringan wireless (ini juga memungkinkan digunakan pada jaringan kawat). Sebagai tambahan, AODV-UU dapat di cross-compile untuk digunakan pada platform ARM, sehingga AODV-UU ini dapat digunakan pada PDA yang popular seperti COMPAQ iPAQ dan Sharp Zaurus. 2.8.1 Konfigurasi AODV-UU menyediakan banyak pilihan perintah untuk mengatur operasinya. Pilihan ini disediakan sebagai parameter pada command line untuk aodvd routing daemon. Perintah pilihan yang tersedia adalah sebagai berikut: 1) daemon mode (-d, --daemon): menjalankannya di backgound, 17 2) force gratuitous (-g, --force-gratuitous): memaksa gratuitous flag untuk diterapkan pada semua RREQ, 3) help (-h, --help): menampilkan informasi bantuan, 4) interface (-i, --interface): menspesifikasikan interface jaringan mana yang akan digunakan pada AODV-UU. Default-nya adalah interface awal jaringan wireless tersebut, 5) hELLO jittering (-j, --hello-jitter): menonaktifkan jitter dari pesan HELLO. 6) logging (-l, --log): mengaktifkan logging ke AODV-UU logfile, 7) routing table logging (-r N, --log-rt-table N): mencatat isi dari tabel routing ke tabel routing logfile setiap N detik, 8) N HELLOs (-n N, --n-hellos N): memerlukan pesan N HELLO untuk diterima dari sebuah node sebelum ditetapkan sebagai node tetangganya, 9) uni-directional hack (-u, --unidir-hack): memperbolehkan pendeteksian dan penghindaran dari link uni-directional. Ini masih fitur percobaan, 10) gateway mode (-w, --gateway-mode): memperbolehkan dukungan internet gateway. Ini juga masih fitur percobaan, 11) disabling of expanding ring search (-x, --no-expanding-ring): menonaktifkan perluasan daerah pencarian untuk RREQ, yang normalnya digunakan untuk membatasi penyebaran RREQ didalam jaringan, 12) no wait-on-reboot (-D, --no-worb); menonaktifkan penundaan selama 15 detik wait-on-reboot pada saat startup, 13) version information (-V, --version); menampilkan informasi versi dan copyright. 2.8.2 Interaksi Dengan Internet Protokol Mengingat AODV merupakan protokol yang reaktif, maka penentuan rute dilakukan berdasar pada permintaan. Hal ini membutuhkan implementasi protokol routing yang mampu meneruskan permintaan (request) ke tujuan saat rute tujuan tersebut tidak ada. Penghapusan rute pada tabel routing yang telah lewat batas 18 waktunya membutuhkan dukungan dari setiap host untuk pemantauan paketnya. Implementasi AODV sebelumnya seperti Multicast ad-hoc (Mad-hoc) AODV tidak dapat melakukan hal tersebut diatas. Hal ini menghambat pengoperasian pada protokol yang berorientasi koneksi seperti TCP, dimana awal paket sangat vital untuk setup koneksi. Sejak itu, penanganan paket pada linux telah mengalami perkembang yang sangat cepat. Khususnya software yang disebut Netfilter telah dikembangkan, yang dapat memberikan penanganan paket yang sangat fleksibel. AODV-UU menggunakan Netfilter untuk pemprosesan semua paket dan keperluan modifikasi. 2.9 NETWORK SIMULATOR Network Simulator NS-2 adalah suatu interpreter yang object-oriented, dan discrete event-driven yang dikembangkan oleh University of California Berkeley dan USC ISI sebagai bagian dari proyek Virtual Internet Testbed (VINT). NS menjadi salah satu alat yang sangat berguna untuk menunjukan simulasi jaringan yang melibatkan Local Area Network (LAN), Wide Area Network (WAN), akan tetapi fungsi dari alat ini telah berkembang selama beberapa tahun belakangan ini untuk memasukkan didalamnya jaringan nirkabel (wireless) dan juga jaringan ad hoc. Ada beberapa keuntungan menggunakan NS sebagai perangkat lunak pembantu analisis dalam penelitian, antara lain adalah : 1) NS dilengkapi dengan tool validasi yang digunakan untuk menguji kebenaran pemodelan yang ada pada NS. 2) Secara default, semua pemodelan NS akan dapat melewati proses validasi. 3) Pemodelan media, protokol, dan komponen jaringan yang lengkap dengan perilaku trafiknya sudah disediakan pada library NS. 4) NS juga bersifat open source dibawah Gnu Public License (GPL), sehingga NS dapat di-download dan digunakan secara gratis. 5) Sifat open source juga mengakibatkan pengembangan NS menjadi lebih dinamis. 19 2.9.1 Struktur Network Simulator NS dibangun menggunakan metoda object-oriented dengan bahasa C++ dan OTcl (variant object oriented dari Tcl). NS menginterpretasikan script simulasi yang ditulis dengan OTcl. Seorang user harus mengeset komponen-komponen pada lingkungan simulasi seperti : 1) Object penjadwalan event. 2) Library komponen jaringan. 3) Library modul setup. Gambar 2.6. Skema Network Simulator Pada Gambar 2.6. User menuliskan simulasinya dengan script OTcl, dan menggunakan komponen jaringan untuk melengkapi simulasinya. Jika user memerlukan komponen jaringan baru, maka user dengan bebas untuk menambahkan dan mengintegrasikan pada simulasinya atau pada NS-2. penjadwalan event (event scheduler) berfungsi sebagai komponen utama selain pencetus (trigger) event komponen jaringan simulasi (seperti mengirim paket, memulai dan menghentikan tracing). Pada Gambar 2.7. Sebagian dari NS-2 ditulis dalam Bahasa C++ untuk alasan efisiensi. Jalur data (data path), ditulis dalam Bahasa C++, dipisahkan dari jalur kontrol (control path), ditulis dalam Bahasa OTcl. Objek jalur data dikompilasi dan kemudian interpreter OTcl melalui OTcl linkage (tclcl) yang memetakan metode dan variabel pada C++ menjadi objek dan variabel pada OTcl. Objek C++ dikontrol 20 oleh objek OTcl. Hal ini memungkinkan untuk menambahkan metode dan variabel kepada C++ yang dihubungkan dengan objek OTcl. Hirarki linked class pada C++ memiliki korespondansi dengan OTcl. Hasil yang dikeluarkan oleh NS-2 berupa file trace, harus diproses dengan menggunakan tool lain, seperti Network Animator (NAM), perl, awk, atau gnuplot. Gambar 2.7. C++ dan OTcl : Duality 2.9.2 Fungsi Network Simulator Beberapa fungsi yang tersedia pada NS adalah untuk jaringan kabel atau tanpa kabel, tracing, dan visualisasi. Lebih jelasnya sebagai berikut: 1) Mendukung jaringan dengan kabel - Protokol routing Distance Vector : Link State. - Protokol Transport : TCP dan UDP. - Sumber trafik : Web, FTP, Telnet, Cbr, dan Real Audio. - Tipe antrian yang berbeda : Drop trail dan RED. - Quality of Service (QoS) : Intergrated Services dan Differentiated Sevices. - Emulation. 21 2) Mendukung jaringan tanpa kabel (wireless) protokol routing ad hoc - AODV, DSR DSDV, TORA, Jaringan Hybrid, Mobile IP, Satelit, dan SensoMAC. 3) Model Propagasi : two-ray ground, free space, dan shadowing. - Tracing - Visualisasi - Network Animator - TraceGraph 4) Kegunaan - Pembangkit pergerakan mobile : setdest –v (versi) –n (jumlah node) –p (waktu pause) –s (kecepatan) –t (waktu simulasi) –x (panjang area) –y (lebar area) > (file keluaran) - Pembangkit pola trafik (CBR / TCP traffic) : Ns cbrgen.tcl [-type cbr | tcp] [nn jumlah node] [-seed seed] [-mc koneksi] [-rate rata-rata] 2.9.3 Format File Trace Terdapat dua tipe format file trace, lama dan baru. Setiap trace dimulai dengan sebuah karakter atau singkatan yang menandakan tipe trace, selanjutnya diikuti dengan format trace yang tetap atau variabel. Format file trace dimulai dengan satu sampai empat kemudian diikuti dengan flag atau sepasang nilai yang sama dengan trace NAM. Huruf pertama dari flag dengan dua huruf menunjukkan tipe flag : N : Sifat Node I : Informasi tingkat paket IP H : Informasi “loncatan” berikutnya (Next Hop) M : Informasi tingkat paket MAC P : Informasi spesifik paket 22 Nilai untuk flag –Hd bisa –1 atau –2. Jika bernilai –1, maka artinya paket itu adalah paket broadcast, dan jika bernilai –2, maka artinya node tujuan belum ditentukan. Nilai –2 umumnya digunakan untuk paket yang melalui tingkatan agent (N1 AGT ) dan routing (-N1 RTR) dan untuk jelasnya pada Tabel 2.2. Tabel 2.2. Format File Trace Event Abbreviation Flag Type Value -t double Time (* For Global Setting) -Ni int Node ID -Nx double Node X Coordinate -Ny double Node Y Coordinate -Nz double Node Z Coordinate -Ne double Node Energy Level -Nl string Network trace Level (AGT, RTR, MAC, etc.) Wireless r: Receive Event d: Drop -Nw string Drop Reason -Hs int Hop source node ID f: Forward -Hd int Hop destination Node ID, -1, -2 -Ma hexadecimal Duration -Ms hexadecimal Source Ethernet Address -Md hexadecimal Destination Ethernet Address -Mt hexadecimal Ethernet Type -P string Packet Type (arp, dsr, imep, tora, etc.) -Pn string Packet Type (cbr, tcp) s: Send 23 2.10 PEMPROGRAMAN PERL Perl adalah bahasa pemrograman untuk segala keperluan, dikembangkan pertama kali oleh Larry Wall di mesin Unix. Perl dirilis pertama kali pada tanggal 18 Desember 1987 ditandai dengan keluarnya Perl 1. Pada versi-versi selanjutnya, Perl tersedia pula untuk berbagai sistem operasi varian Unix (SunOS, Linux, BSD, HPUX), juga tersedia untuk sistem operasi seperti DOS, Windows, PowerPC, BeOS, VMS, EBCDIC, dan PocketPC. Dukungan terhadap pemrograman berbasis obyek (object oriented programming/OOP) ditambahkan pada Perl 5, yang pertama kali dirilis pada tanggal 31 Juli 1993. Proyek pengembangan Perl 6 dimulai pada tahun 2000, dan masih berlangsung hingga kini tanpa tanggal yang jelas kapan mau dirilis. Ini dikatakan sendiri oleh Larry Wall dalam satu pidatonya yang dikenal dengan seri The State of the Onion. Dua di antara karakteristik utama Perl adalah penanganan teks dan berbagai jalan pintas untuk menyelesaiakn persoalan-persoalan umum. Tidak heran jika Perl sangat populer digunakan dalam program-program CGI (Common Gateway Interface) dan berbagai protokol Internet lainnya. Seperti diketahui, TCP/IP sebagai basis bagi semua protokol Internet yang dikenal sekarang ini menggunakan format teks dalam komunikasi data. Seperti juga bahasa populer lainnya, Perl menerima banyak kritikan. Meski banyak di antaranya hanya berupa mitos, atau berlebih-lebihan, tapi terdapat juga sejumlah kritikan yang valid. Salah satunya adalah, sintaksnya susah dibaca, karena banyak menggunakan simbol-simbol yang bukan huruf dan angka. Perl menyediakan berbagai fasilitas bagi penggunannya untuk menulis program dalam berbagai gaya dan bentuk sesuai dengan keperluannya. Dalam hal ini Perl memperkenalkan motto TMTOWDI, dalam bahasa Inggris ini adalah singkatan dari There's More Than One Way To Do It, atau terjemahan bebasnya, terdapat lebih dari satu cara untuk menyelesaikan suatu persoalan. Tanpa bisa dihindari, motto ini juga menjadi sumber kritikan. Artinya, Perl tidak memiliki standar penyelesaian masalah. Padahal tidak demikian. Hanya karena terdapat lima atau selusin cara untuk menyelesaikan masalah bukan berarti semua cara tersebut setara dalam berbagai 24 aspek kualitas. Dan, dokumentasi Perl penuh dengan berbagai contoh penggunaan yang direkomendasikan, dan juga contoh penggunaan yang tidak direkomendasikan dengan berbagai alasan. Seperti juga bahasa lainnya, Perl menyediakan fasilitas pemrograman standar seperti penggunaan variabel, fungsi (built-in function), kontrol logika (if-else), dan iterasi (while, for, foreach). Kontrol switch baru akan disediakan di Perl 6, namun di Perl 5 dapat diemulasikan dengan mudah. Perl membolehkan programer untuk membuat fungsi sendiri (subroutine), mengenalkan pembatasan cakupan variabel secara hirarkis, penggunaan komentar, serta pembuatan dokumentasi terstruktur bersandingan dengan kode program. Sejak Perl 5 dikeluarkan, Perl mendukung pemrograman berbasis obyek (OOP), disusul kemudian dengan thread programming, serta memperbaharui penggunaan namespace. Fasilitas yang paling digemari pengguna Perl, regular expression (atau regex), telah ada sejak Perl 2. Dari versi ke versi regex makin dikembangkan sehingga diakui sebagai implementasi regex paling lengkap. Tidak heran kemudian muncul implementasi regex yang dikenal sebagai PCRE, atau Perl-compatible regular expression. Perl menyediakan sejumlah fasilitas untuk memastikan bahwa programer dapat membuat program yang aman dari serangan cracker. Jika programer menginginkan, Perl menyediakan linkungan pemrogaman yang lebih ketat yang akan menangkap kesalahan atau potensi kesalahan sekecil apapun sebelum program bisa dijalankan. Fasilitas pemrograman berorientasi jaringan sudah terintegrasi, juga penanganan dan pemrosesan berkas (file handling) dan setara berkas (seperti diketahui, di sistem Unix dan variannya, segala sesuatu dianggap berkas dan bisa diperlakukan sebagai berkas). Sebelumn threading diperkenalkan, Perl sudah menyediakan fasilitas untuk menjalankan lebih dari satu proses secara paralel. Sebagai bahasa yang diciptakan dalam tradisi Unix, Perl sedari awal mendukung pembuatan program yang bisa berinteraksi dengan program lain yang ada di sistem, sehingga bisa dijalankan seperti diilustrasikan di bawah ini: 25 cat <berkas> | sort | program_perl | perl -p -e 's/ganti ini/dengan ini/g' | vim - | tar cf - Kode sumber Perl tidak perlu dikompilasi, melainkan bisa langsung dijalankan oleh sebuah program interpreter bernama perl. Misalnya, #!/usr/bin/perl print "Hello, world!\n"; Jika program di atas ditulis dalam sebuah berkas bernama hello.pl, lalu dijalankan dengan perintah (contoh di Linux): $ perl hello.pl Maka di layar akan tercetak: Hello, World! $ Bahkan, sebuah program yang mengerjakan proses rumit bisa ditulis dengan jumlah karakter yang lebih pendek daripada jumlah kolom layar standar, misalnya: perl -lane '$h{$_}++ for @F; END { print "$_: $h{$_} " for keys %h}' <nama_berkas> Program ini membaca sebuah berkas teks dan mencetak setiap kata unik dan jumlahnya di dalam berkas. Contoh hasil cetakan dengan sebuah berkas berisi kode SQL: password: 2 category: 2 DROP: 20 TABLE: 40 varchar(12): 9 Tentu saja, yang dimaksud dengan "kata" di sini adalah rentetan karakter tanpa spasi. Jika dituangkan dalam sebuah berkas, program di atas bisa menjadi lima hingga sepuluh baris, tergantung gaya pemrograman. Program semacam ini disebut juga oneliner, dan sering digunakan untuk keperluan sederhana dan cepat. Contoh lain penggunaan oneliner adalah mengubah nama berkas di suatu direktori menjadi huruf kecil semua, seperti: perl -e 'rename $_, lc for <*>' 26 2.11 PEMPROGRAMAN AWK Utilitas AWK adalah ekstraksi data dan alat pelaporan yang menggunakan datadriven bahasa scripting terdiri dari serangkaian tindakan yang akan diambil terhadap data tekstual (baik dalam file atau aliran data) dengan tujuan untuk memproduksi format laporan. Bahasa yang digunakan oleh awk secara ekstensif menggunakan tipe data string, array asosiatif (yaitu array diindeks oleh kunci string), dan ekspresi reguler. AWK merupakan salah satu alat awal yang muncul di Versi 7 Unix dan mendapatkan popularitas sebagai suatu cara untuk menambahkan fitur komputasi untuk jaringan Unix. Sebuah versi dari bahasa AWK merupakan fitur standar dari hampir setiap sistem Unix modern seperti operasi yang tersedia saat ini. AWK yang disebutkan dalam Single UNIX Specification sebagai salah satu dari utilitas wajib dari sistem operasi Unix. Selain Bourne shell, AWK adalah satu-satunya bahasa scripting lain yang ada di lingkungan standar Unix. Hal ini juga hadir di antara perintah yang diperlukan oleh spesifikasi Basis Linux Standar. Implementasi dari AWK yang ada seperti terpasang untuk hampir semua sistem operasi Unix. AWK dibuat di Bell Labs pada tahun 1970, dan namanya berasal dari nama keluarga penulisnya Alfred Aho, Peter Weinberger, dan Brian Kernighan. AWK, bila ditulis dalam huruf kecil, mengacu pada program Plan 9 dalam lingkungan Unix atau program yang menjalankan program-program lain yang ditulis dengan bahasa pemrograman AWK. Kekuatan dan keterbatasan dari pemprograman AWK menginspirasi Larry Wall untuk menulis yang didefinisikan Perl seperti AWK POSIX, dan gawk (GNU AWK). Meskipun AWK dan sed dirancang untuk mendukung program-program on-liner, bahkan pengguna awal Bell Labs dari AWK sering menulis well-structured program AWK. Meskipun terbatas penggunaan, AWK adalah Turing-complete. 2.11.1 Struktur Program AWK 27 AWK adalah bahasa untuk file pengolahan teks. Sebuah file diperlakukan sebagai urutan catatan, dan secara default setiap baris adalah catatan. Setiap baris ini dipecah menjadi urutan bidang, sehingga kita bisa memikirkan kata pertama dalam sebuah garis sebagai bidang pertama, kata kedua sebagai bidang kedua, dan sebagainya. Sebuah program AWK adalah urutan pattern-action pernyataan. AWK membaca input garis pada suatu waktu. Sebuah baris dipindai untuk setiap pola dalam program, dan untuk setiap pola yang cocok, tindakan yang terkait dijalankan. Sebuah program AWK adalah serangkaian pattern-action berpasangan, ditulis sebagai berikut: condition { action } dimana condition biasanya ekspresi dan action adalah serangkaian perintah. Input dibagi menjadi catatan, dimana dengan catatan default dipisahkan oleh karakter baris baru sehingga input dibagi menjadi baris. Program tes merekam setiap terhadap masing-masing kondisi pada gilirannya, dan mengeksekusi action untuk setiap ekspresi yang benar. Baik dalam condition atau action yang diabaikan. Condition default untuk pencocokan setiap catatan. Default action adalah untuk mencetak catatan. 2.11.2 Perintah AWK Perintah AWK adalah pernyataan yang menggantikan tindakan dalam contoh di atas. Perintah AWK dapat mencakup fungsi panggilan, variabel, kalkulasi, atau kombinasinya. AWK berisi built-in mendukung untuk banyak fungsi, banyak lagi yang diberikan oleh perintah AWK. Juga, beberapa perintah mendukung masuknya dynamically linked libraries, yang juga dapat memberikan fungsi yang lebih. Berikut perintah-perintah dalam AWK: 1) Print Command Perintah cetak digunakan untuk output teks. Teks keluaran selalu diakhiri dengan string yang telah ditetapkan disebut output record separator (ORS) yang nilai default adalah baris baru. Bentuk paling sederhana dari perintah ini adalah: 28 print Ini menampilkan isi dari catatan saat ini. Dalam AWK, catatan dipecah menjadi bidang, dan ini dapat ditampilkan secara terpisah: print $1 Menampilkan field pertama dari catatan saat ini print $1, $3 Menampilkan kolom pertama dan ketiga dari catatan saat ini, dipisahkan oleh string standar output yang disebut output field separator (OFS) yang nilai default adalah karakter single space. Meskipun bidang ($ X) mungkin mencantumkan kemiripan dengan variabel (simbol $ menunjukkan variabel di perl), sebenarnya mengacu pada bidang catatan saat ini. Suatu kasus khusus, $0 mengacu pada seluruh catatan. Bahkan, perintah "print" dan "print $0" adalah identik dalam fungsi. Perintah cetak juga dapat menampilkan hasil perhitungan and / or panggilan fungsi: print 3+2 print foobar(3) print foobar(variable) print sin(3-2) Output dapat dikirim ke file: print "expression" > "file name" atau melalui jaringan: print "expression" | "command" 2) Built-in Variabels Built-in awk adalah variabel termasuk variabel field: $1, $2, $3, dan seterusnya ($0 mewakili seluruh catatan). Mereka memegang teks atau nilai-nilai dalam textfields individu dalam rekaman. Variabel lain termasuk: NR : Menyimpan hitungan saat ini jumlah record input. NF : Menyimpan hitungan jumlah bidang dalam catatan masukan. Field terakhir dalam catatan input dapat ditunjuk oleh $NF. FILENAME: Berisi nama file arus masukan. 29 FS : Berisi "field separator" karakter digunakan untuk membagi bidang pada catatan masukan. Default, "white space", mencakup setiap ruang dan karakter tab. FS dapat dipindahkan ke karakter lain untuk mengubah pemisah field. RS : Menyimpan catatan "record separator" karakter saat ini. Karena, secara default, garis masukan adalah catatan masukan, catatan pemisah karakter default adalah "newline". OFS : Menyimpan "output field separator", yang memisahkan field saat AWK mencetaknya. Default adalah "space" karakter. ORS : Menyimpan "output record separator", yang memisahkan catatan output ketika AWK mencetaknya. Default adalah "newline" karakter. OFMT : Menyimpan format untuk output numerik. Format default adalah "% .6 g". 3) Variables and syntax Nama variabel dapat menggunakan salah satu karakter (A-Z, a-z, 0-9), dengan pengecualian kata kunci bahasa. Operator + - * / mewakili penambahan, pengurangan, perkalian, dan pembagian, masing-masing. Untuk penggabungan string, cukup tempatkan dua variabel (atau konstanta string) di samping satu sama lain. Ini adalah opsional untuk menggunakan ruang di antara jika konstanta string yang terlibat, tapi dua nama variabel tidak dapat ditempatkan berdekatan satu sama lain tanpa spasi di antaranya. Konstanta string dibatasi oleh tanda kutip ganda. Laporan tidak perlu diakhiri dengan titik koma. Akhirnya, komentar dapat ditambahkan untuk program dengan menggunakan # sebagai karakter pertama pada sebuah baris. 4) User-defined functions Dalam format yang mirip dengan bahasa C, definisi fungsi terdiri dari fungsi kata kunci, nama fungsi, argumen nama dan fungsi tubuh. Berikut adalah contoh dari sebuah fungsi: 30 function add_three (number) { return number + 3 } Pernyataan ini dapat dipanggil sebagai berikut: print add_three(36) # Outputs 39 Fungsi dapat memiliki variabel yang berada dalam lingkup lokal. Nama-nama ini ditambahkan ke akhir dari daftar argumen, meskipun nilai ini harus dihilangkan saat memanggil fungsi. Ini adalah konvensi untuk menambahkan beberapa whitespace dalam daftar argumen sebelum variabel lokal, dalam rangka untuk menunjukkan di mana ujung parameter dan variabel lokal dimulai.