一個在ns3平臺基於UDP協議實現的擁塞控制仿真框架

 本來ns3中實現的TCP協議棧就實現了各種的擁塞控制算法,我自己基於UDP協議也實現了一些擁塞控制算法。爲什麼這麼幹,當時覺得基於TCP協議仿真不靈活,比如怎麼拿到數據包的單向傳輸時延,怎麼統計丟包率。當時覺的這些都沒法做,於是就模仿quic協議自己實現了一個簡單的傳輸協議。最近發現,這些在ns3中的TCP協議棧中都是可以實現的。這樣就顯得我自己的實現很多此一舉。通過抄寫別人的代碼,編程能力有所提升。
 然後就有一些同學,詢問我的代碼,代碼本身是開源的。但是,一般向我問詢的人都是是剛入門ns3。看到我的一坨代碼,就不知道如何安裝了。我又是十分熱心的人,知道現在做畢設,做研究的不易,願意幫助他們減少一些學習的困難。因爲我感覺在網絡研究領域,認真的人漸少。單純的寫手越來越多,點線圖僞造的一個比一個高。但是一遍遍告訴別人怎麼安裝,每次查不到都要花費半天,時間浪費的令我心痛。子在川上曰:逝者如斯夫,不捨晝夜。我是一個惜時的人,有時周邊人聚會什麼的,我都不樂意參加,讓人感覺不易相處。My time is not measured by the tick of a clock, but by the length of life.
 遂有此篇,怎麼ns3中安裝這坨代碼[1],並獲取數據。

Step1 修改編譯器標誌

 ns3中的有個編譯標誌需要修改,不然,定義的函數,沒有被調用,編譯當做錯誤處理。參考[2]中的1.3節(Change some warning flags)。

Step2 文件放置

 把[1]中的整個dqc文件夾放進ns3的src文件夾下。
在這裏插入圖片描述

配置環境變量

 sudo gedit /etc/profile

export DQC=/home/zsy/C_Test/ns-allinone-3.26/ns-3.26/src/dqc/model/thirdparty  
export CPLUS_INCLUDE_PATH=CPLUS_INCLUDE_PATH:$DQC/include/:$DQC/congestion/:$DQC/logging/  

 這裏的DQC是我電腦中的路徑,替換你的路徑!
 找不路徑,可以在shell中進入dqc/model/thirdparty,鍵入$PWD命令,
把輸出的絕對路徑賦值給DQC。

建立一個 traces文件夾收集數據

在這裏插入圖片描述

編譯

 每次編譯或者運行,需要生效環境變量。

sudo su
source /etc/profile

 編譯./build.py。

測試

 把github中scratch下文件,複製到ns3的scratch文件夾下。
在這裏插入圖片描述
 曾經有同學,把我github中scratch文件夾放進了ns3中的scratch下(scratch/scratch/dqc-test),肯定是出錯的。
 運行:

sudo su  
source /etc/profile  
./waf --run "scratch/dqc-test --it=1 --cc=bbr"  

 數據就在traces文件夾下。比如後綴爲owd的文件,收集的就是單向時延信息。

//https://github.com/SoonyangZhang/DrainQueueCongestion/blob/master/dqc/model/dqc_trace.cc
void DqcTrace::OpenTraceOwdFile(std::string name){
	char buf[FILENAME_MAX];
	memset(buf,0,FILENAME_MAX);
	std::string path = std::string (getcwd(buf, FILENAME_MAX)) + "/traces/"
			+name+"_owd.txt";
	m_owd.open(path.c_str(), std::fstream::out);    
}
void DqcTrace::OnOwd(uint32_t seq,uint32_t owd,uint32_t size){
	if(m_owd.is_open()){
		float now=Simulator::Now().GetSeconds();
		m_owd<<now<<"\t"<<seq<<"\t"<<owd<<"\t"<<size<<std::endl;
		m_owd.flush();
	}    
}

 m_owd<<now<<"\t"<<seq<<"\t"<<owd<<"\t"<<size<<std::endl;這行就透漏每行數據的含義。
[1] evluation congestion control algorithm
[2] ns3安裝教程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章