NS2入門指導 ---SeaSon & crabhit From DB lab of HIT
---SeaSon & crabhit From DB lab of HIT
序
很多人都問我新手應該看些什麼資料,或者怎麼熟悉NS2這個工具。這是讓很多入門者非常頭痛的問題,包括我自己,當初也是困難重重,不過現在讓我說我也沒什麼印象了,因為我當時比較盲目看了很多兌現在一點兒用都沒有的資料。為了能讓寫的東西真的對新手有所幫助,剛才跟我師弟crabhit談了談,所以總結了一下,希望能起到拋磚引玉的作用。
當然,只是我們的粗略見解,如有不足,歡迎指正。
SeaSon’email:
Crabhit’email:
一. 安裝(Cygwin+ns2.2*)
這應該是讓很多人頭大的問題,因為NS2安裝比較另類,所以很多人已如果安裝的時候稍有閃失,便會出現很多莫名其妙的問題,這時候一般人會選擇重灌,但是如果你的問題如果是cygwin(一般NS2如果是從官方網站上下載的就不會有問題),無論重灌多少次都是沒用的。所以一定要確保你安裝的Cygwin是正確的,如果你在哈爾濱可以聯絡我我有一個完整版本的Cygwin,已經經過無數人測試沒有任何問題,不過大於2G,所以不能放到網上,只能找我來拷了。至於NS2你如果不是特別喜歡刺激的人就安裝ns-1llinone-2.2*,至於單個安裝的我也裝過,裝好了也會出現一些莫名其妙的問題。版本如果沒有特殊需求就安裝最新的ns-allinone-2.29。
具體安裝方法,柯老師已經寫的很完整了,已經包括Cygwin的下載,我就不羅嗦了,網址如下:
安裝成功之後,按照網頁中的提示,測試指令碼,如果沒什麼問題,應該就是成功
了。
二、初學者要看什麼資料
1.語言基礎
C/C++是使用ns2的基礎。除錯的過程中出現的錯誤大多數都是C/C++常見的錯誤,比如空指標等等。不要被ns環境嚇倒,ns2環境中出現的C/C++問題和在你熟悉的環境中出現的C/C++問題本質上是一樣的,解決的方法和思路也基本相同。
Tcl,Ns2中用到TCL其實很簡單,沒必要去找專門的書去看,你只需要能看懂tcl指令碼配置檔案就OK了,不用在這上面浪費時間。在寫你自己的配置檔案的時候要對結點的結構有清晰的認識,才能正確地配置你所需要的東西。
2.中文資料
《NS與網路模擬》
這本書的第4、5、7仔細看看並執行其中的例子,注意:example2.tcl有問題。其他章節如果你時間充足就看,否則略過,不用浪費時間。最後如果要分析資料看看第6章的例子就行了,具體也不用詳細看。如果你將上述四章看了,並且如果你對NS2有個大概的瞭解了,你就可以投入看跟你做的課題或者專案相關的程式碼了,不相關的如果沒有時間就不要浪費自己的時間了,完全可以不看,因為NS2是採用面相物件的思想實現的,模組之間獨立性是非常好的。如果要進一步深入熟悉和掌握NS2的使用,必須從程式碼中學習。
還有就是手冊的中文版,個人覺得到你用過一段時間遇到問題再看比較好,畢竟只是個手冊性質的東西,否則沒什麼效果。
3英文資料
如果你看了2中的資料覺得自己還是不怎麼明白,還有恐懼感,可以看看以下兩個資料:
1)NS by Example:
試著把裡面的例子做一遍。如果你覺得你還沒看夠,再把下面的看一下:
2)Ns tutorial:
還是主要看例子
如果你上面兩部分的資料都看了,差不多都搞懂了,那麼剩下的就看程式碼就行了。
Ns2的程式碼是最好的資料,也是剛開始使用ns2最大的障礙(心理上+現實中)。ns2的程式碼非常龐雜,各種組織各種風格的程式碼都有,一下子全部瞭解是不可能的。其實對於絕大多數人尤其是新手來說,並不需要涉及很多的程式碼。在
使用ns2的過程中碰到問題了,再去看相關的程式碼,要善於使用工具,windows環境下最適合看程式碼的應該是SourceInsight了。這樣使用時間長了之後自然就會對ns2的程式碼很熟悉了。
三、分析協議
如果你的任務是改進協議或者寫新協議,你首先要至少看懂一個跟你同層次的協議。熟悉相關的介面,主要也就是command()函式和recv()函式。分析協議要分為以下兩個步驟:
1. 熟悉協議的邏輯流程
看相關論文或者RFC.
2. 看程式碼,並與論文或RFC的邏輯流程對應起來。
看一個協議的NS2程式碼,一般情況下可以從recv()函式開始看,看看一個節點接受到一個包的時候怎麼處理,還有就是send開頭的函式,也就是本協議會發出什麼樣的資料包。
以Aodv為例,recv()函式包括接受到的所有包的處理方法,包括路由請求,路由應答,路由維護以及上層應用的資料包等的處理,所以你要改進Aodv必須從這個函式看起,然後再逐步跟據函式執行的流程分析。
還有要學習的就是跟蹤除錯,具體方法可以參考柯老師的網站上的連結:
還有就是我的講座的PPT中也有一些我覺得比較重要的資料,有時間的話可以從網上下載看一下:
下載地址1:
下載地址2:
附錄
寫給新手的話
--- by rong111 From : NS模擬軟體 論壇
昨天完成了畢業答辯.想想看自己從對ns一無所知到寫出一個千行以上的協議,雖然談不上什麼了不起的成就,但畢竟自己是曾經在一個星期之內每天睡3個小時寫程式的(當然,這也是因為作者臨陣抱佛腳的壞習慣所致),當程式執行透過的一剎那,當波型出來的時候,還是有一種想大叫的衝動.回憶自己曾經走過的路,想告訴初學者一些東西,也算是對自己的一點交代吧.
首先,我選定ns2作為畢業設計題目是很早的,當時是指導老師指定的題目,但因為時間不緊,也沒看太多.糗的是,指導老師突然出國了,雖然當時就有一種ft的感覺,但還沒有意識到ns2的噁心性,選新的指導老師時還是做的ns2,而新的老師自己並不懂ns,且下面曾經的一個做ns的師兄已經工作,只留下一篇論文.這樣,我赫然發覺我是專業裡唯一一個做ns的,問的人都沒有.
於是當然走了不少彎路.譬如為了掌握otcl,找到tcl語言的英文幾百頁的pdf,看了一半發覺不知所云,更噁心的是我那時還沒意識到tcl對ns其實基本沒用,浪費了許多時間.諸如此類.以下是一些經驗之談,給初學者.如果你是一個老油子,可以不用看了.
首先是教材的問題.第一本當然是,我認為學ns的中國人應該人手一本.倒不是說這本書有多好,它上面大部分東西都是直接翻譯自ns官方手冊. 而是,第一,這好象是唯一本能買到的中文ns書籍.如果我們不頂一下,以後就可能根本沒有ns的中文書可看了. 第二,即使你英文很好(我英文應該不差了,GT都考過),牽涉到對ns2概念的一些理解,全看英文難保沒有偏差,而且我們都知道,凡外國人寫的程式教材,尤其是那些被稱為經典的教材,c也好,c++也好,中國人看了總覺得有點怪,因為我們的思維方式好象是有些差異的.所以就象c的初學者要看譚浩強一樣,這本書還是看看吧. 第三,這本書有些地方還是很有幫助的,如mflood協議,很簡單的演算法,卻把新增協議的要素講得很清楚,對入門而言,比自己去看一個ns自帶協議要好.另外,這本書最有價值的可能是第六章對相關工具的介紹,非常有針對性,你基本上不用去找另外的介紹了.
但是,如果因為英語不好而只看中文.ns2是學不好的.也就只能按照示例執行幾個tcl指令碼.指令碼還可以複製貼上.如果這也稱得上"研究",那也太水了.要深入瞭解ns2,自己寫協議是應該的.而要寫對協議,就必須看ns官方手冊和源程式.基本上,你總能找到和你做的東西類似的源程式,有很大的參考價值.如果你找不到,如果你不是很牛,那建議你換個題目.因為ns2中很多的封裝類如果沒有相似的例子,你根本就不會知道怎麼用.至於手冊,由於中文書翻譯得不錯,所以更多時候是作為有問題時的查閱工具而不是教材可能會比較方便一些(當然這並不是說官方手冊可以不看,這個查閱工具是你絕對需要的).
資料除了以上提到的以外,還有一些,在論壇裡有.自己搜搜吧.有些還是很有用的.
對於初學者而言,ns2是一種很噁心的語言.原因是,ns2強大的原因在於它封裝了很多針對網路的類,而對於學習的人來說,這也是困難所在.很多的變數型別和函式根本就不知道從哪裡來,有什麼用.為此,再次強調,有針對性地看源程式是必須的.另外.如果有些你認為和演算法本身無關的東西,卻在許多程式裡面出現,那你最好照般下來.command函式的寫法是一個最好的例子.另外.recv()函式是出發點,這一點對理解協議很有幫助.
下面說說網上幫助的問題,第一,ns官方的mail我沒有用過,因為我做協議的時候時間已經比較緊,等不起,有誰用過不妨說一下效果好不好.第二,這個論壇好象是國內問題回覆率最高的論壇了(感謝大俠們),我也是在網上胡搜搜到的.但是對於提問者來說,在提問之前你最好確定兩件事: 一,你已經仔細翻過了ns手冊,在論壇中搜尋過你問題的關鍵字且沒有答案.二,你的問題不是很白痴(我見過有人用語法問題來問的,而我在剛來的時候也問了幾個令現在的我汗顏的問題),那樣很不禮貌,也沒人會理你. 另外,如果問題沒有回答,即使很急,也不用發貼再催,更不要罵娘.要知道,論壇上其實沒人有義務回答你的問題.好心人只是根據自己的經驗指出你問題解決可能的方向,不可能去除錯你的程式.如果沒有回答則意味著你的問題每人遇到過.這樣解決問題只能靠你自己.畢竟,學ns2自己不花時間是不行的.
最後,我是做路由協議的,因此給同樣做這個的人一些建議.看協議除了mflood之外,aodv一般就夠了.如果是感測器網路,diffusion中sink的描述也是不可少的.(diffusion3就算了,太長了),另外的協議比較繁,如果你不是從事這個協議的研究,沒必要深入瞭解.就這些了.
[@more@]
序
很多人都問我新手應該看些什麼資料,或者怎麼熟悉NS2這個工具。這是讓很多入門者非常頭痛的問題,包括我自己,當初也是困難重重,不過現在讓我說我也沒什麼印象了,因為我當時比較盲目看了很多兌現在一點兒用都沒有的資料。為了能讓寫的東西真的對新手有所幫助,剛才跟我師弟crabhit談了談,所以總結了一下,希望能起到拋磚引玉的作用。
當然,只是我們的粗略見解,如有不足,歡迎指正。
SeaSon’email:
Crabhit’email:
一. 安裝(Cygwin+ns2.2*)
這應該是讓很多人頭大的問題,因為NS2安裝比較另類,所以很多人已如果安裝的時候稍有閃失,便會出現很多莫名其妙的問題,這時候一般人會選擇重灌,但是如果你的問題如果是cygwin(一般NS2如果是從官方網站上下載的就不會有問題),無論重灌多少次都是沒用的。所以一定要確保你安裝的Cygwin是正確的,如果你在哈爾濱可以聯絡我我有一個完整版本的Cygwin,已經經過無數人測試沒有任何問題,不過大於2G,所以不能放到網上,只能找我來拷了。至於NS2你如果不是特別喜歡刺激的人就安裝ns-1llinone-2.2*,至於單個安裝的我也裝過,裝好了也會出現一些莫名其妙的問題。版本如果沒有特殊需求就安裝最新的ns-allinone-2.29。
具體安裝方法,柯老師已經寫的很完整了,已經包括Cygwin的下載,我就不羅嗦了,網址如下:
安裝成功之後,按照網頁中的提示,測試指令碼,如果沒什麼問題,應該就是成功
了。
二、初學者要看什麼資料
1.語言基礎
C/C++是使用ns2的基礎。除錯的過程中出現的錯誤大多數都是C/C++常見的錯誤,比如空指標等等。不要被ns環境嚇倒,ns2環境中出現的C/C++問題和在你熟悉的環境中出現的C/C++問題本質上是一樣的,解決的方法和思路也基本相同。
Tcl,Ns2中用到TCL其實很簡單,沒必要去找專門的書去看,你只需要能看懂tcl指令碼配置檔案就OK了,不用在這上面浪費時間。在寫你自己的配置檔案的時候要對結點的結構有清晰的認識,才能正確地配置你所需要的東西。
2.中文資料
《NS與網路模擬》
這本書的第4、5、7仔細看看並執行其中的例子,注意:example2.tcl有問題。其他章節如果你時間充足就看,否則略過,不用浪費時間。最後如果要分析資料看看第6章的例子就行了,具體也不用詳細看。如果你將上述四章看了,並且如果你對NS2有個大概的瞭解了,你就可以投入看跟你做的課題或者專案相關的程式碼了,不相關的如果沒有時間就不要浪費自己的時間了,完全可以不看,因為NS2是採用面相物件的思想實現的,模組之間獨立性是非常好的。如果要進一步深入熟悉和掌握NS2的使用,必須從程式碼中學習。
還有就是手冊的中文版,個人覺得到你用過一段時間遇到問題再看比較好,畢竟只是個手冊性質的東西,否則沒什麼效果。
3英文資料
如果你看了2中的資料覺得自己還是不怎麼明白,還有恐懼感,可以看看以下兩個資料:
1)NS by Example:
試著把裡面的例子做一遍。如果你覺得你還沒看夠,再把下面的看一下:
2)Ns tutorial:
還是主要看例子
如果你上面兩部分的資料都看了,差不多都搞懂了,那麼剩下的就看程式碼就行了。
Ns2的程式碼是最好的資料,也是剛開始使用ns2最大的障礙(心理上+現實中)。ns2的程式碼非常龐雜,各種組織各種風格的程式碼都有,一下子全部瞭解是不可能的。其實對於絕大多數人尤其是新手來說,並不需要涉及很多的程式碼。在
使用ns2的過程中碰到問題了,再去看相關的程式碼,要善於使用工具,windows環境下最適合看程式碼的應該是SourceInsight了。這樣使用時間長了之後自然就會對ns2的程式碼很熟悉了。
三、分析協議
如果你的任務是改進協議或者寫新協議,你首先要至少看懂一個跟你同層次的協議。熟悉相關的介面,主要也就是command()函式和recv()函式。分析協議要分為以下兩個步驟:
1. 熟悉協議的邏輯流程
看相關論文或者RFC.
2. 看程式碼,並與論文或RFC的邏輯流程對應起來。
看一個協議的NS2程式碼,一般情況下可以從recv()函式開始看,看看一個節點接受到一個包的時候怎麼處理,還有就是send開頭的函式,也就是本協議會發出什麼樣的資料包。
以Aodv為例,recv()函式包括接受到的所有包的處理方法,包括路由請求,路由應答,路由維護以及上層應用的資料包等的處理,所以你要改進Aodv必須從這個函式看起,然後再逐步跟據函式執行的流程分析。
還有要學習的就是跟蹤除錯,具體方法可以參考柯老師的網站上的連結:
還有就是我的講座的PPT中也有一些我覺得比較重要的資料,有時間的話可以從網上下載看一下:
下載地址1:
下載地址2:
附錄
寫給新手的話
--- by rong111 From : NS模擬軟體 論壇
昨天完成了畢業答辯.想想看自己從對ns一無所知到寫出一個千行以上的協議,雖然談不上什麼了不起的成就,但畢竟自己是曾經在一個星期之內每天睡3個小時寫程式的(當然,這也是因為作者臨陣抱佛腳的壞習慣所致),當程式執行透過的一剎那,當波型出來的時候,還是有一種想大叫的衝動.回憶自己曾經走過的路,想告訴初學者一些東西,也算是對自己的一點交代吧.
首先,我選定ns2作為畢業設計題目是很早的,當時是指導老師指定的題目,但因為時間不緊,也沒看太多.糗的是,指導老師突然出國了,雖然當時就有一種ft的感覺,但還沒有意識到ns2的噁心性,選新的指導老師時還是做的ns2,而新的老師自己並不懂ns,且下面曾經的一個做ns的師兄已經工作,只留下一篇論文.這樣,我赫然發覺我是專業裡唯一一個做ns的,問的人都沒有.
於是當然走了不少彎路.譬如為了掌握otcl,找到tcl語言的英文幾百頁的pdf,看了一半發覺不知所云,更噁心的是我那時還沒意識到tcl對ns其實基本沒用,浪費了許多時間.諸如此類.以下是一些經驗之談,給初學者.如果你是一個老油子,可以不用看了.
首先是教材的問題.第一本當然是
但是,如果因為英語不好而只看中文.ns2是學不好的.也就只能按照示例執行幾個tcl指令碼.指令碼還可以複製貼上.如果這也稱得上"研究",那也太水了.要深入瞭解ns2,自己寫協議是應該的.而要寫對協議,就必須看ns官方手冊和源程式.基本上,你總能找到和你做的東西類似的源程式,有很大的參考價值.如果你找不到,如果你不是很牛,那建議你換個題目.因為ns2中很多的封裝類如果沒有相似的例子,你根本就不會知道怎麼用.至於手冊,由於中文書翻譯得不錯,所以更多時候是作為有問題時的查閱工具而不是教材可能會比較方便一些(當然這並不是說官方手冊可以不看,這個查閱工具是你絕對需要的).
資料除了以上提到的以外,還有一些,在論壇裡有.自己搜搜吧.有些還是很有用的.
對於初學者而言,ns2是一種很噁心的語言.原因是,ns2強大的原因在於它封裝了很多針對網路的類,而對於學習的人來說,這也是困難所在.很多的變數型別和函式根本就不知道從哪裡來,有什麼用.為此,再次強調,有針對性地看源程式是必須的.另外.如果有些你認為和演算法本身無關的東西,卻在許多程式裡面出現,那你最好照般下來.command函式的寫法是一個最好的例子.另外.recv()函式是出發點,這一點對理解協議很有幫助.
下面說說網上幫助的問題,第一,ns官方的mail我沒有用過,因為我做協議的時候時間已經比較緊,等不起,有誰用過不妨說一下效果好不好.第二,這個論壇好象是國內問題回覆率最高的論壇了(感謝大俠們),我也是在網上胡搜搜到的.但是對於提問者來說,在提問之前你最好確定兩件事: 一,你已經仔細翻過了ns手冊,在論壇中搜尋過你問題的關鍵字且沒有答案.二,你的問題不是很白痴(我見過有人用語法問題來問的,而我在剛來的時候也問了幾個令現在的我汗顏的問題),那樣很不禮貌,也沒人會理你. 另外,如果問題沒有回答,即使很急,也不用發貼再催,更不要罵娘.要知道,論壇上其實沒人有義務回答你的問題.好心人只是根據自己的經驗指出你問題解決可能的方向,不可能去除錯你的程式.如果沒有回答則意味著你的問題每人遇到過.這樣解決問題只能靠你自己.畢竟,學ns2自己不花時間是不行的.
最後,我是做路由協議的,因此給同樣做這個的人一些建議.看協議除了mflood之外,aodv一般就夠了.如果是感測器網路,diffusion中sink的描述也是不可少的.(diffusion3就算了,太長了),另外的協議比較繁,如果你不是從事這個協議的研究,沒必要深入瞭解.就這些了.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9378682/viewspace-1017949/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- nginx 入門指導Nginx
- Python爬蟲入門指導Python爬蟲
- Web開發的入門指導Web
- Cocos2d官方入門指導
- [編譯] 10、kconfig 入門指導教程編譯
- IC驗證培訓——SV Interface 入門指導
- From an architect to a programmer...
- C#零基礎小白快速入門指導C#
- Cloudera Manager、CDH零基礎入門、線路指導Cloud
- db2 清空表導致表出現UnavailableDB2AI
- MATLAB入門教程Matlab
- 指標,c入門指標
- 超詳細的TCP、Sokcket和SuperSocket與TCP入門指導TCP
- 使用db2 load from時導致DB的tablespace置成backup pending狀態DB2
- db2 入門常用操作DB2
- db2入門學習DB2
- CSAPP-Lab04 Architecture Lab 深入解析APP
- python入門導學Python
- JavaScript物件導向入門JavaScript物件
- JupyterLab 3.0 最新入門教程
- 前端gitlab-ci.yml 入門前端Gitlab
- JDBCTM 指南:入門7 - CallableStatement (轉)JDBC
- Azure Cosmos DB (一) 入門介紹
- DB2 入門命令練習(二)DB2
- DB2 入門命令練習(一)DB2
- 常見指標型別入門指標型別
- UML類圖10分鐘快速入門 - From 聖傑
- 乾貨!這裡有一份神經網路入門指導,請收下!神經網路
- db_cache hitratio sql and v$db_cache_advice and create table with storageSQL
- GitLab-CI/CD入門實操Gitlab
- Oracle Maximum Availability Architecture(MAA)官方文件OracleAI
- 從入門到入獄------物件導向(二)物件
- 使用Cloud DB構建APP 快速入門 - iOS篇CloudAPPiOS
- GitHub/GitLab配置SSH Key,以及RSA入門GithubGitlab
- 實踐分享!GitLab CI/CD 快速入門Gitlab
- 【HITCON-Training】Lab 12 - SecretGardenAI
- Java入門教程八(物件導向)Java物件
- python-物件導向入門Python物件