http://shagin45.blogspot.com/2008/02/ns2-nistmobility.html
http://chenyicheng.spaces.live.com/blog/cns!E734B7072C927719!525.entry
今天在安裝NIST所release支援mobility的ns-2.29版本http://www.antd.nist.gov/seamlessandsecure/download.html,在編譯時遇到以下幾個問題:
問題1:
./sctp/sctp.h:705: error: extra qualification 'SctpAgent::' on member 'DumpSendBuffer'
make: *** [trace/trace.o] Error 1
解決方法:
將sctp.h裡面第705行DumpSendBuffer function前面的'SctpAgent::'去掉.
問題2:
./mobile/god.h:88: error:extra qualification ‘vector::’ on member ‘operator=’
./mobile/god.h:93: error:extra qualification ‘vector::’ on member ‘operator+=’
./mobile/god.h:98: error:extra qualification ‘vector::’ on member ‘operator==’
./mobile/god.h:101: error:extra qualification ‘vector::’ on member ‘operator!=’
解決方法:
分別將mobile/god.h內相對應的‘vector::’刪去.
問題3:
./mac/mac-802_11.h:620: error: extra qualification 'Mac802_11::' on member 'calFreq'
make: *** [mac/mac-802_11.o] Error 1
解決方法:
將mac/mac-802_11.h內相對應的'Mac802_11::'刪去.
會有以上三種類似的問題是因為gcc版本的關係!!
問題4:
dsr/dsragent.cc: In member function ‘void DSRAgent::handleFlowForwarding(SRPacket&, int)’:
dsr/dsragent.cc:828: error: ‘XmitFlowFailureCallback’ was not declared in this scope
dsr/dsragent.cc: In member function ‘void DSRAgent::sendOutPacketWithRoute(SRPacket&, bool, Time)’:
dsr/dsragent.cc:1385: error: ‘XmitFailureCallback’ was not declared in this scope
dsr/dsragent.cc:1386: error: ‘XmitFlowFailureCallback’ was not declared in this scope
dsr/dsragent.cc:1403: error: ‘XmitFailureCallback’ was not declared in this scope
make: *** [dsr/dsragent.o] Error 1
解決方法:
voidXmitFlowFailureCallback(Packet *pkt, void *data){ DSRAgent *agent = (DSRAgent *)data; agent->xmitFlowFailed(pkt);}
這兩個function移到218行左右,或是在218行加上
void XmitFlowFailureCallback(Packet *pkt, void *data);
void XmitFailureCallback(Packet *pkt, void *data);
問題5:
diffusion/diffusion.cc: In member function 'void DiffusionAgent::MACprepare(Packet*, nsaddr_t, int, bool)':
diffusion/diffusion.cc:429: error: 'XmitFailedCallback' was not declared in this scope
make: *** [diffusion/diffusion.o] Error 1
解決方法:
參考問題4.
問題6:
diffusion/omni_mcast.cc: In member function 'void OmniMcastAgent::MACprepare(Packet*, nsaddr_t, unsigned int, bool)':
diffusion/omni_mcast.cc:388: error: 'OmniMcastXmitFailedCallback'was not de clared in this scope
make: *** [diffusion/omni_mcast.o] Error 1
解決方法:
參考問題4.
問題7:
tcp/tcp-sack-rh.cc:68: error: extra qualification 'SackRHTcpAgent::' on member 'newack'
make: *** [tcp/tcp-sack-rh.o] Error 1
解決方法:
將tcp/tcp-sack-rh.cc內相對應位置的SackRHTcpAgent::刪去.
問題8:
pgm/pgm-agent.cc:307: error: extra qualification 'PgmAgent::'on member 'trace_event'
make: *** [pgm/pgm-agent.o] Error 1
解決方法:
將pgm/pgm-agent.cc內相對應位置的PgmAgent::刪去.
問題9:
pgm/pgm-sender.cc:189: error: extra qualification 'PgmSender::' on member 'trace_event'
make: *** [pgm/pgm-sender.o] Error 1
解決方法:
將pgm/pgm-sender.cc內相對應位置的PgmSender::刪去.
問題10:
pgm/pgm-receiver.cc:186: error: extra qualification 'PgmReceiver::' on member 'trace_event'
make: *** [pgm/pgm-receiver.o] Error 1
解決方法:
將pgm/pgm-receiver.cc內相對應位置的PgmReceiver::刪去.
問題11:
bluetooth/lmp-link.h:296: error: extra qualification 'LMPLink::' on member 'LMPLink'
bluetooth/bt-node.h:100: error: extra qualification 'BTNode::' on member 'setup'
make: *** [bluetooth/baseband.o] Error 1
解決方法:
將bluetooth/lmp-link.h與bluetooth/bt-node.h內相對應位置的LMPLink::和BTNode::刪去.
另外,我在compile的時候下列的檔案也出現類似問題,稍微照上面的方式改就可以了^^
另外有:
bluetooth/tora-bt.h:12: error: extra qualification ‘TORA_BT::’ on member ‘recvReply’
make: *** [bluetooth/tora-bt.o] Error 1
bluetooth/dsr-bt.h:12: error: extra qualification ‘DSR_BT::’ on member ‘recvReply’
make: *** [bluetooth/dsr-bt.o] Error 1
umts/rlc.h:55: error: extra qualification ‘RLC::’ on member ‘RLC’
umts/rlc.h:62: error: extra qualification ‘RLC_HS::’ on member ‘RLC_HS’
make: *** [umts/am.o] Error 1
wimax/scheduling/ssscheduler.h:184: error: extra qualification ‘SSscheduler::’ on member ‘link_connect’
make: *** [wimax/scheduling/ssscheduler.o] Error 1
可以讓大家做一個對照^^
另外,在
Error free NIST mobility NS2.29 installation
某位熱心的人士已經寫好patch了^^
只要多下一個指令,前面的需要手動修改的事情"應該"就統統解決^^(我倒是還沒有試過=,=|||)
補注+後記:
有關wimax-wimax handover的TCL範例檔還是沒有辦法成功handover過去,
縱使我成功的make過了....
之前也有先使用NIST的wimax 802.16e module並且使用2.31來compile,
雖然也是很成功的compile過,但是也在卡在handover不過去--
所謂的問題就是在於mobile station一直嘗試著收/送封包到某個base station,
雖然早已經脫離那個BS的訊號範圍,並且已經進入了另一個BS的訊號範圍
我po上我在PTT的Network_Sim板上的部分文章 :D #1BaVu80-
NIST中的WiMAX module中的example:
l2handover.tcl
我沒有辦法用他的tcl呈現出handover的現象
也就是說MS一直試圖連接到其中一個BS並傳送CBR traffic(在MS是傳送端的時候)
而wired node一直試圖傳送CBR traffic到其中一個BS,無論那個BS是否可以連到MS
(在wired node是CBR傳送端的時候)
我最後得到結論:
1.只會試圖連到BS_1,若是可以連到的話,BS_1和MS都會發現有CBR traffic:
有關NIST 802.16 Module的問題:
#set wl_node [$ns node 1.0.1]
#$wl_node base-station [AddrParams addr2id [$bstation node-addr]] ;
#PS: it means that it attaches mn to basestation
#[$bstation set mac_(0)] set-channel 1
#[$bstation2 set mac_(0)] set-channel 0
#[$wl_node set mac_(0)] set-channel 1
2.只會試圖連到BS_2,若是可以連到的話,BS_2和MS都會發現有CBR traffic:
#set wl_node [$ns node 2.0.1]
#$wl_node base-station [AddrParams addr2id [$bstation2 node-addr]] ;
#PS: it means that it attaches mn to basestation
#[$bstation set mac_(0)] set-channel 0
#[$bstation2 set mac_(0)] set-channel 1
#[$wl_node set mac_(0)] set-channel 1
最後....只有這樣的一個半成品以及一個小結論.....
我最後只好將我的topology
從Homogeneous Networks Handover改成Heterogeneous Networks Handover
還好這時候就發生問題 ;D
留言列表