2008年3月31日 星期一

實驗三 Network Scenario Generator(NSG)

NSG介紹:
* NSG是一款專為NS2所設計的劇本產生器,目前版本NSG2支援無線與有線兩種,比nsBench強了些
但目前還未支援無線及有線混和的劇本
* NSG2以java開發,所以可以在任何支援JAVA的平台上執行,也由於它是以 Java Jar檔案形式發布,
所以也不需要安裝,下載NSG2後透過Java來啟動即可.
實驗:
這個實驗有兩個部分
  • 兩條CBR連線都會通過n2-n3這條鏈路,當n2-n3流量開始擁擠,n2的queue塞滿了就會開始造成封包遺失
  • 簡單建置一個典型multi-hop Ad-Hoc無線網路環境,使用AODV作為Routing protocol,預期隨著n4的移動,封包傳送路徑也會跟著改變
PART I

STEP1.
進入NSG路徑下,開啟NSG2

STEP2.
nsg2的介面

STEP3.
拉好6個nodes, 其中n8為移動node,n9為接收端,n0~n3距離200m,n8~n0與n3~n9距離也為200m

STEP4
set n8 waypoint parameters
在20秒時從起始位置(201,302)以 5m/sec速度移動到(800,302)
在150秒時再從(800,302)以 5m/sec速度移動到(201,302)

STEP5.
現在建立Agent
滑鼠移到n9上,n9會顯示呈紅色

點n9選定後會變綠色滑鼠移到要放置Agent的地方選好位置後,點擊左鍵這樣就設定好了,如上步驟,n8也要建立一個udp Agent,在兩者之間建立一條連線

STEP6.
setup wireless parameters
routing protocol :AODV

STEP7.
按下TCL按紐,即可產生劇本檔當然,產生的劇本檔是很基本的,之後就要從這裡頭做些不一樣的改變

STEP8.
存檔後,執行tcl檔



PART II


STEP1.
建置基本架構
Link-type : duplex-link
Queue type:DropTail
Capacity :2 Mbps
Propagation delay :10 ms
Queue size :10

Agent mode 下,設定如下圖

建立Agent之間的連線

STEP2.

切換到Application mode下,進行 n0 應用程式設定 :
Application type :CBR
Start time : 1 sec
Stop time : 4 sec
Packet size :1500 bytes
Rate :1

n1則設定為
Application type :CBR
Start time : 2 sec
Stop time : 43sec
Packet size :1500 bytes
Rate :1


STEP3.
設定完畢後,按下TCL按鈕,就會產生劇本檔,當我們在xwindow下執行 ns sim3_1.tcl時,預設會自動載入out3_1.nam

STEP4.
乍看之下好像沒問題,但當它跑完全程,怎麼連一個封包都沒有遺失?
檢查TCL看看哪裡出問題



發現 中間通道n2-n3這條鏈路頻寬夠大足以讓兩條鏈線通過,所以把它修改成1 mb 如下圖
STEP5.
成功囉~ 當n2的queue滿了,就會產生封包遺失的狀況了~

2008年3月30日 星期日

實驗二 nsBench

這個實驗有兩個部分
  1. 介紹nsBench,來自動產生TCL程式碼,進行有線網路模擬
  2. Multicast路由協定練習
要留意的是nsBench沒有支援無線網路,

因為nsBench.jar 是放在 ~/ns-allinone-2.29/ns-2.29/book2/lab下,所以我們進入這個目錄下 ,執行nsBench
讓我們看看nsBench長什麼樣子 接下來真正進入實驗了

STEP1.
首先 如下圖,依照順序[Insert]->[Nodes]->[Node] 先建立四個nodeSTEP2.
分別為他們做link動作 (拉link的方法是滑鼠移到node上呈十字型狀時,按住左鍵拖曳到要連結的node上)
STEP3.
建置模擬環境
  • 上路應用層是FTP走TCP,n3上建立一個TCPsink agent來接收資料並產生回覆封包ACK回 傳送端,最後把TCP封包釋放
  • 下路則為CBR走UDP,n3上使用NULL agent來接收資料,並釋放
  • 設置參數 (在要設定參數的物件上點兩下)
node0->node2(link): 頻寬=2Mbps
node2->node3(link): 頻寬=1.7Mbps
cbr0 : packet size = 1000 ; rate=1Mb ; random =0
STEP4.
很快的圖就拉好了
STEP5.
編輯腳本(scenario)
  • cbr0從0.1秒開始 4秒時結束
  • ftp0從1秒開始4.5秒結束
  • 總模擬時間5秒

STEP6.
儲存專案 mytest11.nsb 在cygwin/home/clarkboy
按generate 會在同一目錄下產生sim.tcl

STEP7.
開始執行ns進行模擬囉~
STEP8.
看樣子OK了,用nam模擬動態一下


實驗二的第一個部分完成
接下來進行第二個部分Multicast路由協定的練習

STEP1.
很快的拉好所需要的物件
STEP2.
要模擬Multicast路由協定,要先到[Configuration]->[Routing]把這個功能打開

STEP3.
udp0設定其傳送資料的目的位址為multicastSTEP4.


  • 注意 只有node才能join & leave群播渠組
STEP5.
save project file and generate TCL file (named sim2_1.tcl)
STEP6.
nam.exe out2_2.nam

over!!

2008年3月27日 星期四

Dr.eye 7.0 或Dr.eye 6.0 和Office 2007相容性修正(for Windows XP,暫不適用其他平台)

Dr.eye 7.0 或Dr.eye 6.0 和Office 2007同時安裝在作業系統時,同時啟用會造成資源衝突,可安裝此程式修正該問題。
下載 修正程式

檔案大小:1831k

修正步驟:
1. 關閉Dr.eye 7.0 及Office 2007。
2. 執行 All70a02.exe ,依步驟執行修正程式。

其他版本 參考DR.eye官網



2008年3月18日 星期二

回頭複習 php

簡單php
1. 變數命名 可使用 英文, 數字, 底線 ,唯一限制就是不能用數字做開頭
2. 宣告靜態變數 (static) ,靜待變數不會因為函數的結束而消失,而會將值保留在記憶體中,直到整個程式結束,所以靜態變數通常會被應用再迴圈
3.

字串:
如果字串中有變數時,選擇用' ' or " "所得到結果不同!!
以" "括號起來的字串,會對其中的變數做處理
ex: "this is $num" -->顯示: this is 3

以' ' 括號起來的字串,會保留現狀
ex: 'this is $num' -->顯示: this is $num

字串運算子 .
可以連結字串
所以比較下面:
ex: "this is '$num' " -->顯示: this is '3'
ex: "this is ".$num." " -->顯示: this is 3 用.連結三字串

4. 若要顯示特殊符號 如"$" ,只要在前面加上反斜線 "\" 即可顯示
5. 使用boolean 時 只有"true" "false" 兩種值,不同文字的true false 所以社變數時不能加"" or ' '
ex : $a = true ;
6.資源型態變數 是負責與外部資源做聯繫動作, 例如: MySQL資料庫就是外部資源,資源形態的變數要藉特定函數才能發揮作用
ex: $link = mysql_connect("localhost","root","123")
連線成功時,$link的值為true
7.變數形態轉換 變數=(資料形態)變數or運算式

session_register 問題

當使用此 session_register() 來註冊一個外部變數時
<?php session_register("user","pw");?>

瀏覽器顯示:
Warning: session_register() [function.session-register]: Cannot send session cache limiter - headers already sent (output started at C:\Inetpub\wwwroot\gm

解決方法:
用&_SESSION['user']="XXX" ; 來取代即可

2008年3月17日 星期一

session start() 問題

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Inetpub\........

當初現此警告時,是說 "在SESSION開始前就有資料送出到使用者端"
所以
解決的辦法就是 把session_start()移到最前面 就OK了

多前面呢?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ~~
的前面!!

2008年3月4日 星期二

Cygwin 安裝 + NS2

首先 到官網
下載Cygwin 的安裝導向文件 setup.exe ,透過他才能夠正確下載及安裝最新版本的Cygwin


官網右上角有個圖示,點擊此下載



下載完成 點開setup.exe 看看,這個版本為 2.573.2.2
接下來用圖片看步驟...就是選預設囉~





選第一個試試:


沒辦法連上,試看看下一個囉~


成功連上了,不錯~


接下來選擇要安裝的package,目前已知要安裝的有:

gcc
gcc-g++
gnuplot
make
patch
perl
tar
X-startup-scripts
xorg-x11-base
xorg-x11-bin
xorg-x11-devel
xorg-x11-bin-dlls
xorg-x11-bin-lndir
xorg-x11-etc
xorg-x11-fenc
xorg-x11-fnts
xorg-x11-libs-data
xorg-x11-xwin


點擊右上方的view 切換到以名稱為排序~會比較好選擇






放著等他載完了~
待續~~~~載完OK了~~


來做一些測試


看起來沒什麼問題



有了仿LINUX環境就能安裝NS2了


NS2安裝


依據計算機網路實驗課本所附的光碟,把ns-allinone-2.29.rar copy 到c:\cygwin\home\


點擊 cygwin 進入ns-allinone-2.29/ns-2.29 下執行 ./configure ; make clean ;make depend ; make 進行編譯動作 :

接下來繼續照著課本動作
copy .bashrc 到 :\cygwin\home\嫩嫩 取代原來檔案
copy cygwin1.dll 到 :\cygwin\bin 取代原來檔案

ok~來測試看囉~

chmod.exe 無法找到輸入點 無法找到程序輸入點__isnand (在動態連結程式庫cygwin1.dll)
tr.exe 無法找到輸入點 無法找到程序輸入點__isnand (在動態連結程式庫cygwin1.dll)
sed.exe 無法找到輸入點 無法找到程序輸入點getline (在動態連結程式庫cygwin1.dll)
find.exe 無法找到輸入點 無法找到程序輸入點getline (在動態連結程式庫cygwin1.dll)
sort.exe 無法找到輸入點 無法找到程序輸入點__isnand (在動態連結程式庫cygwin1.dll)
uname.exe 無法找到輸入點 無法找到程序輸入點__isnand (在動態連結程式庫cygwin1.dll)

全部點完,如下圖..


Cygwin消失了一些東西.. "嫩嫩@clarkboy"消失了..

哭了~ 原始的 .bashre 還有cygwin1.dll 直接被取代,沒做備份動作,失策了!
猜測: 書上本來就說使用者名稱不能使用中文..安裝CYGWIN時沒什麼問題,就順勢繼續安裝ns2

把CYGWIN移除,重裝一次 ,為了降低錯誤率,這一次先把使用者名稱"嫩嫩"->"clark"
part II

安裝CYGWIN步驟同第一次,直接跳到測試CYGWIN部分 :



看樣子也沒什麼問題

進行編譯動作



編譯完成
這一次學乖了,先把原始的 .bashre 還有cygwin1.dll 備份起來
果然 cygwin1.dll一取代原始的,就會造成前次的結果,使用原始版本沒問題
接下來就開起XWINDOW:




XWINDOW起來後,開個寫好的範例來看看 :





呼~看樣子是沒問題了,寫了這篇..寫了很久,預覽的時候不小心點了小圖後,寫好的網頁都消失了...
收工~