Friday 20 June 2014

Installasi ns-allinone-2.33 ke dalam Ubuntu 10.10

Walaupun Ubuntu telah memasuki versi yang lebih terbaru, Ubuntu 10.10 telah dipilih kerana saya mahukan ns dan Evalvid saya berada di dalam satu OS yang sama.  Evalvid telah diinstall seperti pada posting yang lepas.  Leceh kalau ns di OS lain, Evalvid di OS lain pulak.  Kenapa pulak ns-allinone2.33 dipilih untuk digunakan? sebab versi 2.33 ni adalah versi yang paling baru yang boleh compatible dengan EDCA patch (versi ns yang terbaru sewaktu blog ni ditulis adalah versi 2.35).

Masalah sekarang adalah Ubuntu 10.10 masih menggunakan compiler yang lama, manakala ns yang nak saya gunakan ni, iaitu ns-allinone-2.33 pula ditulis menggunakan compiler baru.  maka ada beberapa konfigurasi yang perlu dilakukan supaya ns-allinone-2.33 compatible dengan Ubuntu 10.10.   Langkah-langkahnya ditunjukkan di bawah.

LANGKAH 1:  Download/ install library yang diperlukan
Ubuntu 10.10 sudah tidak disokong lagi.  Maka untuk update library Ubuntu 10.10, sourcelist mesti dikonfigurasi.  Boleh rujuk posting yang lepas.
sudo apt-get install g++ autoconf automake make libtool patch xgraph libx11-dev libxmu-dev libxmu-headers libxt-dev build-essential
sudo apt-get install gcc-4.4 g++-4.4

LANGKAH 2:  Download ns-allinone-2.33

wget http://nchc.dl.sourceforge.net/sourceforge/nsnam/ns-allinone-2.33.tar.gz


LANGKAH 3:  Untar (Decompress) ns-allinone-2.33.tar.gz

Pastikan ns-allinone-2.33.tar.gz telah diletakkan ke dalam folder yang anda mahukan.  Dalam kes ini, saya letakkan dalam /home/najwan

tar xvf ns-allinone-2.33.tar.gz

LANGKAH 3:  Edit file configure
gedit /home/najwan/ns-allinone-2.33/otcl-1.13/configure
Cari:
Linux*)
SHLIB_CFLAGS="-fpic"
SHLIB_LD="ld -shared"
SHLIB_SUFFIX=".so"

Tukar kepada:

Linux*)
SHLIB_CFLAGS="-fpic"
SHLIB_LD="gcc -shared"
SHLIB_SUFFIX=".so" 

LANGKAH 3:  Edit file ranvar.cc
gedit /home/najwan/ns-allinone-2.33/ns-2.33/tools/ranvar.cc
Cari:
if (alpha_ < 1) {
   double u = rng_->uniform(1.0);
   return GammaRandomVariable::GammaRandomVariable(1.0 +      
alpha_, beta_).value() * pow (u, 1.0 / alpha_);  
}


Tukar kepada:
if (alpha_ < 1) {
   double u = rng_->uniform(1.0);
   return GammaRandomVariable(1.0 + alpha_, beta_).value() * pow (u, 1.0 / alpha_);
}

LANGKAH 4:  Edit file nakagami.cc
gedit /home/najwan/ns-allinone-2.33/ns-2.33/mobile/nakagami.cc
Cari:

if (int_m == m) {
resultPower = ErlangRandomVariable::ErlangRandomVariable(Pr/m, int_m).value();
} else {
resultPower = GammaRandomVariable::GammaRandomVariable(m, Pr/m).value();
}

Tukar kepada:

if (int_m == m) {
resultPower = ErlangRandomVariable(Pr/m, int_m).value();
} else {
resultPower = GammaRandomVariable(m, Pr/m).value();
}


LANGKAH 5:  Edit file tcl8.4.18/unix/Makefile.in

gedit /home/najwan/ns-allinone-2.33/tcl8.4.18/unix/Makefile.in

Cari:
CC = @CC@ 
Tukar kepada:
CC = @CC@-4.4

LANGKAH 6: Edit file ns-2.33/Makefile.in
gedit /home/najwan/ns-allinone-2.33/ns-2.33/Makefile.in

Cari:
CC = @CC@ 
CPP = @CXX@

Tukar kepada:
CC = @CC@-4.4
CPP = @CXX@-4.4


LANGKAH 7:  Install ns-allinone-2.33
cd ns-allinone-2.33
./install




Sekarang, sepatutnya ns-allinone-2.33 boleh diinstallasi dengan lancar.

Tuesday 17 June 2014

Installasi Evalvid ke dalam Ubuntu 10.10 Maverick Meerkat

Untuk mensimulasi video frame I, P dan B ke dalam environment NS-2, ada beberapa tools yang perlu kita install dahulu termasuklah encoder/ decoder untuk convert video kita kepada frame-frame tersebut.  Tool set ini dibangunkan oleh penyelidik di Eropah dan dinamakan sebagai Evalvid.

Evalvid boleh diinstall ke dalam Ubuntu 10.10.  Saya cuba mencari kaedah untuk install Evalvid ke dalam Distro Linux yang lain atau Ubuntu versi yang lebih terkini tetapi gagal.  Adalah sukar sebenarnya untuk menggunakan Ubuntu 10.10 kerana ianya sudah tidak lagi disokong.  Malahan, untuk install Evalvid dan NS-2, kita mesti modify beberapa konfigurasi Ubuntu 10.10 tersebut supaya boleh download, update dan install library yang diperlukan.

Bagaimanapun, setelah mencari di merata-rata web, forum, mailist, dibawah merupakan langkah-langkah installasi Evalvid ke dalam Ubuntu 10.10 yang telah saya kumpulkan dan susun mengikut turutan.  Dalam proses ini, beberapa masalah telah dijumpai tetapi penyelesaiannya juga telah ditulis di bahagian bawah page ini.

LANGKAH 1:  Modify sourcelist Ubuntu 10.10.
Ini adalah supaya Ubuntu boleh mencari server yang sepatutnya untuk download library yang diperlukan.

sudo vi /etc/apt/sources.list

Dalam vi:
:%s/archive/old-releases/g:%s/cl\.//g:wq

* jika ada error, gunakan us berbanding cl

$ sudo apt-get update
$ sudo apt-get upgrade




LANGKAH 2:  Download/ Install pre-requisites
sudo apt-get install ffmpeg 
sudo apt-get install zlib1g-dev xulrunner-1.9.2-dev libfreetype6- dev libjpeg62-dev libpng12-dev libopenjpeg-dev libmad0-dev libfaad-dev libogg-dev libvorbis-dev libtheora-dev liba52-0.7.4- dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libxv-dev x11proto-video-dev libgl1-mesa-dev x11proto-gl-dev linux-sound-base libxvidcore-dev libwxbase2.8-dev libwxgtk2.8- dev wx2.8-headers libssl-dev libjack-dev libasound2-dev libpulse-dev libsdl1.2-dev dvb-apps


LANGKAN 3:  Download/ Install pre-requisites
sudo apt-get install libssl0.9.8
sudo apt-get install zlib
*Mungkin jumpa error:


Error:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package zlib

Penyelesaian:
wget http://www.zlib.net/zlib-1.2.3.tar.gz
tar -zxf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure
make
sudo make install
------------------------------------------------



LANGKAH 4:  Download Gpac
wget http://nchc.dl.sourceforge.net/project/gpac/GPAC/ GPAC%200.4.5/gpac-0.4.5.tar.gz 

wget http://nchc.dl.sourceforge.net/project/gpac/GPAC%20ex tra%20libs/GPAC%20extra%20libs%200.4.5/gpac_extra_libs-0.4.5.tar.gz


LANGKAH 5:  Configure Gpac
tar -zxf gpac-0.4.5.tar.gz
tar -zxf gpac_extra_libs-0.4.5.tar.gz
cd gpac_extra_libs/
cp -r * ../gpac/extra_lib
cd ../gpac


LANGKAH 6:  Install Gpac
chmod +x configure
./configure
make lib
sudo make apps
make install lib
make install

*Untuk test sama ada MP4Box dah di install, taip:
which MP4Box.  
Output sepatutnya: /usr/bin/MP4Box

sudo apt-get install --reinstall libgpac-dev


LANGKAH 7:  Download Evalvid
Pilih salah satu versi yang ingin digunakan

wget http://www2.tkn.tu-berlin.de/research/evalvid/EvalVid/evalvid- 2.7.tar.bz2
wget http://www2.tkn.tu-berlin.de/research/evalvid/EvalVid/evalvid- 2.6.tar.bz2
wget http://www2.tkn.tu-berlin.de/research/evalvid/EvalVid/evalvid- 2.5.tar.bz2
wget http://www2.tkn.tu-berlin.de/research/evalvid/EvalVid/evalvid- 2.4.tar.bz2


LANGKAH 8:  Install Evalvid
sudo ./configure

* Mungkin jumpa error

Error:
bash: ./configure: No such file or directory

Penyelesaian:
Boleh skip langkah ni. Tak penting.
----------------------------------------------------------------------------------------------------------------------------------

sudo make

* Mungkin jumpa error

Error
In file included from read.c:6:
def.h:6: error: #elif with no expression
make: *** [read.o] Error 1

Penyelesaian
gedit def.h
replace #elif with #else
save


----------------------------------------------------------------------------------------------------------------------------------
sudo make install

EVALVID TELAH PUN DI INSTALL.  Command seperti MP4Box, psnr dan lain-lain sudahpun boleh digunakan.

Monday 3 October 2011

Konsep Asas Subnetting

Dalam posting yang lepas, kita telah membincangkan tentang Pengalamatan IP untuk Host, Rangkaian dan juga Broadcast. Untuk refresh semula... 

Jika kita mempunyai alamat IP 172.16.0.5, kita mengetahui bahawa:
  1. Alamat IP tersebut adalah dalam Class B: Oktet 1 mempunyai nilai 172, iaitu terletak di dalam julat Alamat IP Class B
  2. 172.16.0.5 adalah Host: Oktet 4 tidak bernilai 0 atau 255
  3. Alamat rangkaian/ ID Rangkaian adalah 172.16.0.0: Ambil kira oktet yang diperuntukkan untuk Rangkaian sahaja. Sifarkan oktet yang diperuntukkan untuk bahagian Host. (Alamat IP Host 172.16.0.5 adalah milik kepada rangkaian ini)
  4. Alamat Broadcast adalah 172.16.0.255: Untuk alamat IP Broadcast, Oktet 4 sentiasa bernilai 255
Baiklah, jika kita mempunyai satu alamat IP, 172.16.0.0, ia menyokong pengalamatan IP sebanyak 65 534 Host. bayangkan jika kesemua Host ini berada di dalam satu rangkaian yang sama, ia akan menjadi satu rangkaian yang amat besar seperti di bawah.

Rangkaian Class B

Apa yang akan terjadi adalah ia akan menjadi satu rangkaian yang tidak efisien, sesak dan tidak selamat. ini kerana kesemua Host di dalam rangkaian tersebut berkongsi Domain Perlanggaran (Collision Domain) dan Domain Broadcast (Broadcasting Domain) yang sama. Sebagai contoh, jika satu daripada 65 534 Host tersebut membuat Broadcast dengan cara perkongsian fail (File Sharing), kesemua Host di dalam rangkaian tersebut akan berupaya melihat file yang telah dikongsikan itu. Ini kerana, paket Broadcast tersebut sampai kepada setiap Host di dalam rangkaian tersebut. Bagaimana jika ada 100, 1000 atau 10 000 Host yang berkongsi fail? Sudah tentunya Rangkaian akan menjadi terlampau sesak.

Untuk mengelakkan kesesakan Rangkaian, Domain Perlanggaran dan Domain Broadcast ini harus dipecahkan menjadi lebih kecil supaya ia lebih mudah diurus. 

Proses memecahkan rangkaian yang besar menjadi rangkaian yang lebih kecil dinamakan Subnetting.  

Ia boleh dilakukan dengan membuat sempadan diantara rangkaian-rangkaian kecil tersebut dengan menggunakan Penghala (Router) seperti di bawah.

Memecahkan Rangkaian menjadi lebih kecil

Daripada gambar di atas, rangkaian 172.16.0.0 telah dipecahkan menjadi rangkaian-rangkaian kecil bermula daripada 172.16.1.0, 172.16.2.0 hinggalah ke 172.16.255.0.

Setelah rangkaian yang besar tadi telah dipecahkan menjadi kecil, nampak seperti masalah kita telah diselesaikan. Malangnya, ia tidak begitu. Penghala akan membaca alamat IP kedua-dua rangkaian, 172.16.1.0 dan 172.16.2.0 dan mentafsirkan bahawa ia adalah di dalam Class B.

Dalam Class B, Oktet 1 dan Oktet 2 diperuntukkan untuk Rangkaian. Oktet 3 dan Oktet 4 pula adalah untuk Host. Oleh itu, untuk mencari ID Rangkaian, Penghala akan mensifarkan Oktet 3 dan Oktet 4 kerana ia adalah untuk Host. Hanya Oktet 1 dan Oktet 2 yang diambil kira. Lihat bagaimana Penghala mentafsir rangkaian seperti di bawah:

Rangkaian A: 172.16.1.0
  • ID rangkaian: 172.16.0.0
Rangkaian B: 172.16.2.0
  • ID Rangkaian: 172.16.0.0
Oleh itu, dari segi pentafsiran Penghala, kedua-dua rangkaian kecil ini masih berada di dalam rangkaian yang sama! Di dalam Jadual Penghalaan (Routing Table), kedua-dua rangkaian kecil tersebut masih di dalam rangkaian yang sama, seperti di tunjukkan di dalam kotak merah dalam gambar di bawah.

Rangkaian 172.16.1.0 dan 172.16.2.0 masih berada di dalam Rangkaian yang sama

Maka, untuk menyelesaikan masalah ini, disinilah datangnya penggunaan Subnetmask (Topeng lalai).

Dalam posting seterusnya, kita akan membincangkan bagaimana Subnetmask dapat mengasingkan rangkaian tersebut menjadi rangkaian yang lebih kecil.

Semoga anda faham konsep asas Subnetting pada posting ini.  Jika anda tidak begitu faham, baca berulang-ulang kali atau tinggalkan komen


Jika anda membaca posting ini melalui Facebook, mungkin beberapa item di dalam posting tidak dapat dipaparkan.  Untuk melihat paparan penuh, anda boleh ke http://najwankhambari.blogspot.com/.