WNDW: Jaringan Mesh dengan OLSR

From OnnoWiki
Jump to navigation Jump to search

Kebanyakan WiFi beroperasi di jaringan menggunakan modus infrastruktur - mereka terdiri dari akses point di suatu tempat (dengan radio yang beroperasi di mode master), yang tersambung ke kabel DSL atau jaringan kabel skala besar. Pada sebuah hotspot, akses point biasanya bertindak sebagai stasiun master yang mendistribusikan akses Internet kepada pelanggannya, yang beroperasi di modus Managed. Topologi ini mirip dengan layanan ponsel (GSM). Menghubungkan ponsel ke base station - tanpa kehadiran seperti base station mobiles tidak dapat berkomunikasi satu sama lain. Jika anda membuat panggilan ke teman yang duduk di seberang meja, telepon mengirim data ke base stasiun selular yang jauhnya ratusan kilometer kemudian mengirimkan data kembali ke telepon teman anda.

Card WiFi dalam modus managed tidak dapat berkomunikasi secara langsung satu sama lain. Klien - misalnya, dua laptop di meja yang sama - harus menggunakan akses point sebagai relay. Setiap trafik antara klien tersambung yang tersambung ke akses point akan dikirim dua kali. Jika klien A dan C berkomunikasi, klien A mengirimkan data ke akses point B, dan kemudian akses point B akan mengirim ulang data ke klien C. Dalam contoh kita, sebuah pengiriman data dapat mencapai kecepatan 600 kByte / detik (kecepatan maksimum yang dapat di capai oleh 802.11b). Dengan demikian, karena data harus dikirim ulang oleh akses point sebelum mencapai target, yang kecepatan effektif antara dua klien akan hanya 300 kByte / detik.

Dalam modus ad-hoc tidak ada hirarki hubungan master-klien. Node dapat berkomunikasi langsung selama mereka berada dalam jangkauan antarmuka nirkabel. Dengan demikian, dalam contoh kita kedua komputer dapat mencapai kecepatan penuh ketika operasi ad-hoc, dalam kondisi ideal.

Kerugian pada modus ad-hoc adalah bahwa klien tidak mengulangi trafik yang diperuntukkan untuk klien lainnya. Dalam contoh penggunaan akses point, jika dua klien A dan C tidak dapat saling “melihat” secara langsung, mereka masih dapat berkomunikasi selama AP masih dalam jangkauan wireless dari kedua klien.

Node Ad-hoc secara default tidak melakukan fungsi relay / pengulangan, tetapi mereka dapat melakukan fungsi relay yang efektif jika routing diterapkan. Jaringan Mesh didasarkan pada strategi mengaktifkan setiap node mesh sebagai relay untuk memperluas jangkauan jaringan nirkabel. Semakin banyak node, semakin baik cakupan radio dan jangkauan awan mesh.

Figure3.18a.jpg
Gambar 3.18: Akses Point B akan me-relay trafik antara klien A dan C. Dalam mode Ad-Hoc, secara default node B tidak akan me-relay trafik antara A dan C.

Ada satu kekurangan besar yang harus disebutkan di sini. Jika perangkat hanya menggunakan satu antarmuka radio, bandwidth yang tersedia adalah berkurang secara signifikan setiap trafik diulang oleh node perantara pada perjalanan dari A ke B.

Selain itu, akan terjadi interferensi pada saluran transmisi karena node menggunakan pada kanal yang sama. Dengan demikian, jaringan mesh ad-hoc yang murah dapat menyediakan cakupan radio yang baik sebagai last mile dari jaringan nirkabel komunitas dengan penalti pada kecepatan - terutama jika banyak node dan daya pancar yang tinggi.

Jika sebuah jaringan ad-hoc hanya terdiri dari beberapa node yang berjalan dalam waktu yang lama, yang tidak bergerak dan yang mempunyai sambungan radio yang stabil – daftar panjang “yang” - sangat mungkin untuk menulis masing-masing tabel routing untuk semua node menggunakan tangan.

Sayangnya, kondisi tersebut jarang sekali ditemukan di dunia nyata. Node dapat gagal, peralatan WiFi cenderung untuk bergerak, dan interferensi akan dapat membuat sambungan radio tidak dapat digunakan. Dan tidak ada yang ingin meng-update tabel routing dengan tangan jika ada satu node ditambahkan ke jaringan. Dengan menggunakan routing protokol yang secara otomatis menjaga masing-masing tabel routing di semua node yang terlibat, kita dapat menghindari masalah ini. Routing protokol yang populer dari dunia kabel (seperti OSPF) tidak bekerja dengan baik dalam lingkungan semacam ini karena mereka tidak dirancang untuk menangani sambungan yang sangat tidak stabil atau topologi yang berubah dengan cepat.



Mesh routing dengan olsrd

Optimized Link State Routing Daemon - olsrd - dari olsr.org adalah sebuah aplikasi routing yang dikembangkan untuk routing di jaringan nirkabel. Kami akan berkonsentrasi pada perangkat lunak routing ini untuk beberapa alasan. Ini merupakan proyek Open Source yang mendukung sistem operasi Mac OS X, Windows 98, 2000, XP, Linux, FreeBSD, OpenBSD dan NetBSD. Olsrd tersedia untuk akses point yang menjalankan Linux seperti Linksys WRT54G, Asus Wl500g, AccessCube atau Pocket PC menjalankan Linux, dan merupakan standar pada Metrix kit yang menjalankan Pyramid. Olsrd dapat menangani beberapa antarmuka dan dapat kembangkan dengan plug-in. Ia mendukung IPv6 dan sangat aktif dikembangkan dan digunakan oleh komunitas jaringan di seluruh dunia.

Perlu di catat bahwa adalah beberapa implementasi dari Optimized Link State Routing (OLSR), yang dimulai sebagai konsep untuk IETF yang ditulis di INRIA Prancis. Pelaksanaan awal dari olsr.org adalah tesis master Andreas Toennesen di Universitas UniK. Berdasarkan pengalaman praktis dari komunitas free networking, routing daemon dimodifikasi. Olsrd sekarang berbeda secara signifikan dari konsep asli karena memasukan mekanisme Link Quality Extension yang mengukur paket loss antara node dan menghitung rute menurut informasi ini. Ekstensi ini merusak kompatibilitas dengan routing daemon yang mengikuti konsep INRIA. Olsrd yang tersedia dari olsr.org dapat dikonfigurasi untuk berperilaku sesuai dengan konsep IETF yang tidak memiliki fitur ini - tetapi tidak ada alasan untuk menonaktifkan Link Quality Extensions kecuali jika dibutuhkan untuk mengikuti implementasi yang lainnya.


Teori

Setelah olsrd berjalan untuk sementara waktu, sebuah node mengetahui keberadaan setiap node lain dalam awan mesh dan mengetahui node mana yang dapat digunakan untuk rute trafik. Setiap node mempunyai tabel routing yang meliputi seluruh awan mesh. Pendekatan ini untuk mesh routing disebut proaktif routing. Sebaliknya, algoritma reaktif routing mencari rute hanya bila diperlukan untuk mengirim data ke node tertentu.

Ada kelebihan dan kekurangan untuk proaktif routing, dan ada banyak ide tentang cara lain untuk mesh routing yang mungkin layak disebut. Keuntungan terbesar dari routing proaktif adalah kita akan tahu siapa yang ada di keluar sana dan anda tidak perlu menunggu sampai rute ditemukan. Tinggi-nya overhead trafik protokol dan beban CPU yang besar adalah diantara kerugiannya. Di Berlin, komunitas Freifunk mengoperasikan awan mesh olsrd yang menyambungkan lebih dari 100 antarmuka. Rata-rata beban CPU yang disebabkan oleh olsrd pada Linksys WRT54G berjalan di 200 MHz adalah sekitar 30% di Berlin mesh. Ada batas yang jelas akan sejauh mana sebuah protokol proactive dapat di kembangkan - tergantung seberapa banyak antarmuka yang terlibat dan seberapa sering tabel routing diperbarui. Memelihara rute dalam awan mesh dengan node statis membutuhkan upaya lebih sedikit di bandingkan mesh dengan node yang terus bergerak, karena tabel routing lebih jarang diperbarui.


Mekanisme

Sebuah node olsrd yang sedang beroperasi akan secara periodik mem-broadcast 'Hello' sehingga tetangga dapat mendeteksi keberadaan node tersebut. Setiap node menghitung berapa 'Hello' yang hilang atau diterima dari setiap tetangga sehingga mendapatkan informasi tentang topologi dan kualitas sambungan node di lingkungan. Informasi topologi yang diperoleh di broadcast sebagai pesan Topology Control (pesan TC) dan diteruskan oleh tetangga yang dipilih olsrd sebagai multipoint relay.

Konsep multipoint relay merupakan ide baru di proaktif routing yang datang dengan konsep OLSR. Jika setiap node membrodcast ulang informasi topologi yang telah diterima, overhead yang tidak perlu akan terjadi di jaringan. Transmisi tersebut adalah berlebihan jika sebuah node memiliki banyak tetangga. Dengan demikian, sebuah node olsrd akan memutuskan tetangga yang baik sebagai multipoint relay yang harus mem-forward dengan pesan topologi kontrol. Catatan untuk multipoint relay hanya dipilih untuk tujuan penerusan pesan TC. Muatan di kirimkan ke semua node yang tersedia.

Dua jenis pesan lain yang ada di OLSR yang mengumumkan informasi: apakah sebuah node menawarkan gateway ke jaringan lain (pesan HNA) atau mempunyai beberapa interface (pesan MID). Tidak terlalu banyak yang dapat dikatakan tentang apa yang dilakukan pesan tersebut, kecuali fakta bahwa mereka ada. Pesan HNA membuat olsrd sangat nyaman saat menghubungkan perangkat mobile ke Internet. Ketika sebuah node menjelajah dia akan mendeteksi gerbang ke jaringan lain dan selalu memilih gateway yang memiliki rute terbaik. Namun, olsrd bukannya anti peluru. Jika node memberitakan bahwa dia adalah sebuah gateway Internet – padahal tidak karena memang bukan atau karena mati pada untuk sementara - node yang lain tetap percaya informasi tersebut. Gateway palsu adalah lubang hitam (black hole). Untuk mengatasi masalah ini, sebuah plugin gateway dinamis ditulis.

Plugin secara otomatis akan mendeteksi di gateway apakah dia benar-benar terhubung dan apakah link sambungan masih beroperasi. Jika tidak, olsrd berhenti untuk mengirim pesan HNA palsu. Sangat dianjurkan untuk membangun dan menggunakan plugin ini, bukan mengaktifan pesan statis HNA.


Praktek

Olsrd menerapkan routing berbasis IP di aplikasi pengguna - instalasi cukup mudah. Instalasi paket-paket yang tersedia untuk OpenWRT, AccessCube, Mac OS X, Debian GNU / Linux dan Windows. OLSR merupakan bagian dari standar Metrix Pyramid. Jika Anda harus kompilasi dari source code, silakan membaca dokumentasi yang disertakan dengan paket source code. Jika semuanya sudah

Pertama-tama, harus dipastikan bahwa setiap node memiliki alamat IP statis yang unik untuk setiap antarmuka yang digunakan untuk mesh. Tidak direkomendasikan untuk menggunakan DHCP di jaringan mesh berbasis IP. Sebuah permintaan DHCP tidak akan dijawab oleh DHCP server jika node meminta DHCP memerlukan sambungan multihop untuk tersambung, dan menerapkan dhcp relay yang menghubungkan seluruh mesh sepertinya tak berguna. Masalah ini dapat diselesaikan dengan menggunakan IPv6, karena ada banyak ruang yang tersedia untuk menghasilkan IP yang unik dari masing-masing alamat MAC card yang terlibat (seperti yang diusulkan dalam "IPv6 Stateless Address Autoconfiguration in large mobile ad hoc networks" by K. Weniger and M. Zitterbart, 2002).

Sebuah wiki-halaman dimana setiap orang yang tertarik dapat memilih alamat IPv4 individu untuk setiap antarmuka dimana olsr daemon dijalankan dapat melayani tujuan cukup baik. Tidak ada cara yang mudah untuk mengotomatisasikan proses jika IPv4 digunakan.

Alamat broadcast harus 255.255.255.255 pada antarmuka mesh sebagai kesepakatan umum. Tidak ada alasan untuk memasukkan alamat broadcast secara eksplisit, karena olsrd dapat dikonfigurasi untuk mengabaikan broadcast dengan alamat default ini. Kita hanya harus memastikan bahwa konfigurasi sama di semua node. Olsrd dapat melakukannya sendiri. Ketika sebuah file konfigurasi default olsrd dikeluarkan, fitur ini harus diaktifkan untuk menghindari kebingungan kedua, yakni "mengapa node lain tidak dapat melihat mesin saya?"

Sekarang mengkonfigurasi antarmuka wireless. Berikut ini merupakan contoh bagaimana perintah untuk mengkonfigurasi kartu WiFi dengan nama wlan0 menggunakan Linux:

iwconfig wlan0 essid olsr.org mode ad-hoc channel 10 rts 250 frag 256 

Verifikasi bahwa bagian nirkabel dari card WiFi telah dikonfigurasi sehingga memiliki sambungan ad-hoc ke node mesh lainnya dalam jangkauan langsung (satu hop). Pastikan antarmuka bergabung dengan kanal nirkabel yang sama, menggunakan jaringan nirkabel ESSID (Extended Service set identifier) yang sama dan memiliki sel-ID sama seperti semua lain WiFi-Card yang membangun jaringan mesh. Banyak WiFi atau kartu masing-masing driver sepenuhnya mengikuti standar 802,11 untuk jaringan ad-hoc dan gagal total untuk dapat tersambung ke sel. Mereka mungkin tidak dapat menyambung ke perangkat lain di meja yang sama, bahkan jika mereka menggunakan kanal dan nama jaringan wireless yang benar. Mereka mungkin bahkan membingungkan card lain yang berperilaku sesuai dengan standar dengan membuat sel-ID mereka sendiri pada kanal yang sama dengan nama jaringan wireless yang sama. Card WiFi yang dibuat oleh Intel yang dikirimkan dengan Centrino Notebook yang terkenal jahat dan suka melakukan hal ini.

Anda dapat memeriksa ini dengan perintah iwconfig ketika menggunakan GNU-Linux. Berikut adalah output pada mesin saya:

wlan0 IEEE 802.11b ESSID:"olsr.org" 
  Mode:Ad-Hoc Frequency:2.457 GHz Cell: 02:00:81:1E:48:10 
  Bit Rate:2 Mb/s      Sensitivity=1/3 
  Retry min limit:8       RTS thr=250 B     Fragment thr=256 B 
  Encryption key:off 
  Power Management:off 
  Link Quality=1/70 Signal level=-92 dBm Noise level=-100 dBm 
  Rx invalid nwid:0 Rx invalid crypt:28 Rx invalid frag:0 
  Tx excessive retries:98024 Invalid misc:117503 Missed beacon:0 

Penting untuk mengatur nilai ambang batas 'Request To Send' untuk operasi mesh. Tabrakan kadang kala akan terjadi pada kanal radio saat terjadi proses pengiriman data dari node pada kanal yang sama, dan RTS akan mengurangi kemungkinan tabrakan. RTS / CTS menambahkan sebuah proses negosiasi / handshake sebelum pengiriman setiap paket untuk memastikan bahwa kanal tersebut kosong. Hal ini menambahkan overhead, tetapi meningkatkan kinerja dalam kasus node yang tersembunyi - dan node disembunyikan adalah biasa dalam sebuah mesh! Parameter ini menentukan ukuran paket terkecil (dalam satuan byte) yang akan menyebabkan node mengirimkan RTS.

Nilai ambang batas RTS harus lebih kecil dari ukuran paket IP dan nilai 'Fragmentation threshold' - disini di set ke 256 – jika tidak RTS akan dinonaktifkan. TCP sangat sensitif terhadap tabrakan, sehingga sangat penting untuk mengaktifkan RTS. Fragmentasi memungkinkan untuk membagi sebuah paket IP dalam potongan / fragmen kecil yang dikirim pada media. Hal ini menambahkan overhead, tetapi dalam lingkungan yang padat, hal ini mengurangi error dan memungkinkan paket untuk melalui gangguan interferensi.

Mesh jaringan sangat bising / padat karena semua node menggunakan kanal yang sama dan oleh karena itu saluran transmisi akan saling mengganggu satu sama lain. Parameter ini menentukan ukuran maksimum paket data sebelum dibagi dan dikirim - nilai yang sama dengan ukuran maksimum paket IP akan menonaktifkan mekanisme, sehingga nilai parameter ini harus lebih kecil dari ukuran paket IP. Menetapkan ambang batas fragmentasi sangat disarankan. Setelah alamat IP dan netmask yang valid diberikan dan antarmuka wireless telah beroperasi, file konfigurasi olsrd harus diubah agar olsrd menemukan dan menggunakan antarmuka yang dimaksudkan untuk bekerja.

Untuk Mac OS-X dan Windows ada GUI yang baik untuk mengkonfigurasi dan memonitoring keberadaan daemon. Sayangnya hal ini akan mendorong pengguna yang mempunyai pengetahuan terbatas untuk melakukan hal yang bodoh – seperti mengumumkan 'black hole'. Di BSD dan Linux, filr konfigurasi /etc/olsrd.conf harus di edit menggunakan editor text.


Sebuah olsrd.conf sederhana

Tidak praktis untuk menyediakan sebuah file konfigurasi lengkap di sini. Berikut adalah beberapa

UseHysteresis               no 
TcRedundancy                2 
MprCoverage                 3 
LinkQualityLevel            2 
LinkQualityWinSize          20 
LoadPlugin "olsrd_dyn_gw.so.0.3" 
{ 
       PlParam      "Interval"      "60" 
       PlParam      "Ping"          "151.1.1.1" 
       PlParam      "Ping"          "194.25.2.129" 
} 
Interface "ath0" "wlan0" { 
  Ip4Broadcast 255.255.255.255 
} 


Ada banyak pilihan yang tersedia di olsrd.conf, tapi pilihan dasar di atas cukup untuk anda memulai. Setelah langkah-langkah tersebut dilakukan, olsrd dapat dimulai dengan perintah sederhana di terminal:

olsrd -d 2 

Saya rekomendasikan untuk menjalankannya dengan opsi debug -d 2 bila digunakan pada sebuah workstation, terutama untuk pertama kalinya. Anda dapat melihat apa yang dilakukan olsrd dan memantau seberapa baik sambungan ke tetangga anda. Pada perangkat embedded tingkat debug harus 0 (off), karena debug menciptakan banyak beban CPU. Outputnya harus terlihat seperti ini:


--- 19:27:45.51 --------------------------------------------- DIJKSTRA 
192.168.120.1:1.00 (one-hop) 
192.168.120.3:1.00 (one-hop) 
--- 19:27:45.51 ------------------------------------------------ LINKS 
IP address          hyst    LQ      lost    total  NLQ     ETX 
192.168.120.1       0.000   1.000   0       20     1.000   1.00 
192.168.120.3       0.000   1.000   0       20     1.000   1.00 
--- 19:27:45.51 -------------------------------------------- NEIGHBORS 
IP address          LQ      NLQ     SYM    MPR   MPRS  will 
192.168.120.1       1.000   1.000   YES    NO    YES   3 
192.168.120.3       1.000   1.000   YES    NO    YES   6 
--- 19:27:45.51 --------------------------------------------- TOPOLOGY 
Source IP addr      Dest IP addr        LQ     ILQ    ETX 
192.168.120.1       192.168.120.17      1.000  1.000  1.00 
192.168.120.3       192.168.120.17      1.000  1.000  1.00 


Menggunakan OLSR pada Ethernet dan banyak interface

Untuk menggunakan olsrd kita tidak perlu memiliki antarmuka wireless - meskipun olsrd dirancang untuk antarmuka wireless. OLSRD dapat digunakan pada sembarang NIC. Antarmuka WiFi tidak harus selalu beroperasi pada modus ad-hoc untuk membentuk mesh jika node mesh memiliki lebih dari satu antarmuka. Untuk sambungan khusus / dedicated mungkin pilihan yang lebih baik jika di operasikan pada mode infrastruktur. Banyak WiFi card dan driver yang bermasalah / buggy dalam modus ad-hoc, tetapi modus infrastruktur berfungsi dengan baik - karena semua orang berharap setidaknya fitur ini untuk bekerja. Modus ad-hoc tidak memiliki banyak pengguna hingga saat ini, sehingga implementasi dari modus ad-hoc lebih lambat dilakukan oleh banyak produsen. Dengan meningkatnya popularitas jaringan mesh, kondisi driver lebih membaik saat ini.

Banyak orang menggunakan olsrd pada kabel dan antarmuka nirkabel - mereka tidak berpikir tentang arsitektur jaringan. Mereka hanya menyambungkan antena ke card WiFi mereka, menyambungkan kabel ke card Ethernet mereka, mengaktifkan olsrd untuk berjalan di semua komputer dan semua antarmuka dan menjalankannya. Hal ini sebenarnya penyalahgunaan dari sebuah protokol yang dirancang untuk membangun nirkabel pada sambungan yang sangat rentan - tetapi - mengapa tidak?

Mereka berharap olsrd untuk memecahkan setiap masalah jaringan. Jelas tidak diperlukan untuk mengirim pesan 'Hello' pada antarmuka kabel setiap dua detik - tetapi hal ini berhasil. Hal ini jangan dijadikan sebagai rekomendasi - hanya menakjubkan apa yang dilakukan orang terhadap protokol dan bahkan mereka sukses. ide untuk memiliki protokol yang dapat melakukan semua hal bagi pemula yang ingin memiliki jaringan LAN berukuran kecil yang dapat di routing menjadi sangat menarik.

Plugins

Gambar 3.19: Sebuah topologi jaringan OLSR yang dihasilkan secara otomatis.

Ada sejumlah plugin yang tersedia untuk olsrd. Simak situs olsr.org untuk memperoleh daftar lengkapnya. Berikut sedikit HOWTO untuk visualisasi topologi jaringan menggunakan plugin olsrd_dot_draw.

Seringkali sangat baik untuk pengertian tentang jaringan mesh jika kita dapat menampilkan topologi jaringan secara grafis. olsrd_dot_draw mengeluarkan topologi dalam file berformat dot pada port TCP 2004. Graphviz dapat kemudian digunakan untuk gambar grafiknya.

Instalasi Plugin dot_draw

Compile olsr plugins secara terpisah dan instal. Untuk me-load plugin menambahkanbaris berikut ke /etc/olsrd.conf. Parameter "accept" menetapkan komputer mana yang akan diterima untuk melihat Informasi Topologi (saat ini hanya satu) dan mesin tersebut adalah "localhost" secara default. Parameter "port" menentukan port TCP.

LoadPlugin "olsrd_dot_draw.so.0.3" 
{ 
         PlParam "accept" "192.168.0.5" 
         PlParam "port" "2004" 
} 


Kemudian restart olsr dan periksa apakah anda mendapatkan output pada TCP Port 2004

telnet localhost 2004

Setelah beberapa saat anda harus mendapatkan beberapa teks output.

Sekarang Anda dapat menyimpan penjelasan output grafik dan menjalankan software atau dot atau neato form dari paket graphviz untuk mendapatkan gambar.

Bruno Randolf telah menulis sebuah skrip perl kecil yang terus-menerus mengambil informasi dari topologi olsrd dan menampilkan dengan menggunakan paket graphviz dan Imagemagick.

Pertama, instal paket berikut pada workstation anda:

graphviz, http://www.graphviz.org/
Imagemagick, http://www.imagemagick.org/

Download script dari: http://meshcube.org/nylon/utils/olsr-topology-view.pl Sekarang Anda dapat menjalankan skrip sengan . /olsr-topologi-view.pl dan melihat topologi di-update secara realtime.


Mengatasi masalah

Selama card WiFi dapat 'melihat' satu sama lain secara langsung, maka harusnya anda dapat melakukan ping dengan atau tanpa olsrd. Hal ini berlaku karena netmask yang besar secara efektif membuat setiap node menjadi lokal, sehingga masalah routing yang pertama dapat di singkirkan. Hal ini harus di periksa pertama kali jika semua tampaknya seperti beroperasi seperti sebagaimana yang di harapkan. Sebagian besar pusing kepala karena harus berhadapan dengan modus WiFi Ad-Hoc disebabkan oleh kenyataan bahwa implementasi modus ad-hoc di driver dan card banyak yang tidak baik. Jika gagal dalam melakukan ping ke node terdekat secara langsung maka kemungkinan besar adalah isu card / driver, atau konfigurasi jaringan anda yang salah.

Jika mesin dapat ping satu sama lain, tetapi tidak menemukan rute olsrd, maka alamat IP, netmask dan alamat broadcast perlu diperiksa. Terakhir, apakah anda menjalankan firewall? Pastikan firewall tidak memblokir UDP port 698.



Pranala Menarik