freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于網(wǎng)絡測量的tcp協(xié)議設計-資料下載頁

2025-05-27 18:06本頁面
  

【正文】 k(toolkit)協(xié)作,可生成GUI應用程序,可在PC、Unix和Macintosh上運行。Tcl 還可用來完成與網(wǎng)頁相關的任務,或是為應用程序提供強有力的命令語言。(2)、Tk:與Tcl協(xié)調工作的圖形工具包。(3)、OTcl:MIT Object Tcl的簡稱,是Tcl/Tk 面向對象編程的擴展。(4)、Tclcl:此目錄下含tcl/C++的接口,vic、vat、ns、rtp_play、和nam都會用到。(5)、ns:NS的主體代碼,內含一個節(jié)點移動產生器、兩個傳輸事件產生器。(6)、TclDebug:Tcl調試工具包。(7)、Nam:即UCB/LBNL Network AniMator,它與NS協(xié)同工作,將NS仿真過程動態(tài)表現(xiàn)出來。(8)、Xgraph:Xgraph是一XWindows應用程序,包含:n 交互式測量和繪制;n 動畫效果(9)、Gtitm:GT Internetwork Topology Models的簡稱,產生模擬internt網(wǎng)絡結構的拓撲圖,還提供了一些例子。(10)、SGB:Standford GraphBase的簡稱,圖形產生器。(11)、Cweb:與網(wǎng)頁相關的工具。(12)、zlib:通用數(shù)據(jù)數(shù)據(jù)壓縮庫(data pression library)。 在下圖中,粗框里為NS的模塊,方框外的script為我們寫的腳本文件。NS解釋腳本,將輸出寫到輸出文件中,然后調用Nam或Xgraph顯示輸出文件。2.使用介紹可以將整個NS2看成一個解釋器。有兩種方法可以對網(wǎng)絡事件進行仿真:a) 命令行方式,即敲入一個命令,返回一個結果。如:輸入命令: nsversion返回版本號: b) 腳本方式,指定一個腳本文件(*.tcl文件),讓NS執(zhí)行。如:ns 因為腳本文件可以對網(wǎng)絡結構、事件的作細致的描述,所以通常我們使用b)。腳本用Otcl語言編寫。基本流程如下:調用Nam或Xgraph顯示輸出文件并關閉輸出文件運行:打開輸出文件按照定義的事件和拓撲圖運行,同時將過程數(shù)據(jù)寫入輸出文件,調用退出過程運行:打開輸出文件,按照定義的事件、拓撲圖運行,同時將過程數(shù)據(jù)寫入輸出文件,調用退出過程定義:網(wǎng)絡結構 輸出文件 退出過程 網(wǎng)絡事件配置硬件參數(shù)確定拓撲圖傳輸事件文件節(jié)點移動文件調用Nam或Xgraph顯示輸出文件,并關閉輸出文件 腳本編寫過程示意圖NS2允許我們在腳本中定義一個輸出文件(又叫跟蹤文件),記錄仿真過程,文件名為“*.out”或“*.tr”,分別采用以下兩種圖形方式顯示:a) nam方式:NS工具包中有一個nam模塊,編譯后,產生nam文件。語句%nam 顯示仿真的整個過程,比如說,數(shù)據(jù)包的傳輸,鏈路斷開,節(jié)點的移動,丟包等等。b) Xgraph方式:與nam相似,NS工具包中還有一個Xgraph模塊,產生Xgraph,語句如下:%xgraph “” 不過,“*.tr”文件一般記錄的是,仿真過程中的內部狀態(tài),比如,傳輸數(shù)率、各種峰值等等。當然以上的語句可以顯式給出,但一般可以寫入腳本的退出過程中。這樣在仿真任務結束之后,可以得到比較直觀的結果。4.2 NS2擴展模塊設計4.2.1 類結構層次圖本文討論的算法所修改的對象是TCP協(xié)議的擁塞控制協(xié)議。在NS2中該協(xié)議的實現(xiàn)是通過類TcpAgent來實現(xiàn)模擬和仿真的,該類包含了數(shù)目眾多的接口函數(shù)和屬性聲明,并且在實現(xiàn)文件中對相關參數(shù)進行了初始化。隨之而來的TCP Reno版本則是使用C++的派生機制,以TcpAgent作為父類,繼承了一定數(shù)量的接口和屬性,同時增添了達到擁塞控制需要的屬性和接口。本算法所編寫的MultiPhase類是從RenoTCPAgent繼承來的。其類結構圖如下:TcpAgentrecv()。派生dupack_action()RenoTcpAgent派生timeout()timeout()MultiPhaseTcpAgentopencwnd()slowdown()newack() 類繼承及內部結構圖4.2.2 類屬性聲明與接口定義/* TCP MultiPhase */class MultiPhaseTcpAgent : public virtual RenoTcpAgent { public: /*接口說明*/ MultiPhaseTcpAgent()。 /*構造函數(shù)*/ virtual void recv(Packet *pkt, Handler*)。 /*接收處理函數(shù)*/ virtual void dupack_action()。 /*重復性ACK事件處理函數(shù)*/ virtual void timeout (int tno)。 /*超時事件處理函數(shù)*/ /*在TcpAgent類 (文件: ) 可以找到以下函數(shù)原始定義 */ virtual void opencwnd()。 /*擁塞窗口調節(jié)函數(shù)*/ virtual void slowdown(int how)。 /*擁塞避免階段處理函數(shù)*/ virtual void newack(Packet* pkt)。 /*快速恢復階段處理函數(shù)*/ virtual int delay_bind_dispatch(const char *varName, const char *localName, TclObject *tracer)。 /*類變量綁定函數(shù)*/ protected: /*屬性說明*/ double lastackno_。 /*最近的ACK序號 */ double lastackrx_。 /*最近的ACK的接收時間 */ double fr_alpha_。 /*指數(shù)型平衡系數(shù)*/ int filter_type_。 /*指數(shù)型過濾器類型*/ double tau_。 /*第三種過濾器所使用的時間變量*/ double fr_multi。 /*增長因子*/ int fr_phase。 /*調節(jié)因子*/ /* 在TcpAgent類 (文件:) 包含以下變量的原始定義*/int mss_。 /*最大發(fā)送報文段 */ double current_bwe_。 /*本次帶寬估計值*/double last_bwe_sample_。 /*用于帶寬估計的最近樣本值*/int unaccounted_。 /*已接收未計數(shù)的ACK */double fr_a_。 /*帶寬衰減因子 */double min_rtt_estimate。 /*最小RTT估計值*/TracedInt myseqno_。 /*本算法使用的序列號輸出變量*/}。4.3 模塊TCL接口實現(xiàn)4.3.1 構造函數(shù)MultiPhaseTcpAgent( ) 該函數(shù)對相關網(wǎng)絡參數(shù)進行初始化,同時將C++類的變量與Otcl中的變量進行綁定,這樣就可以在用戶編寫的TCL腳本中構造Otcl變量來調用這些C++變量。MultiPhaseTcpAgent::MultiPhaseTcpAgent() : RenoTcpAgent(), current_bwe_(0), last_bwe_sample_(0), unaccounted_(0), fr_a_(0), min_rtt_estimate(), myseqno_(1),fr_phase(1),fr_multi(), lastackrx_(), fr_alpha_(), filter_type_(1), tau_(){ // bind(current_bwe_, amp。current_bwe_)。 bind(last_bwe_sample_, amp。last_bwe_sample_)。bind(unaccounted_, amp。unaccounted_)。bind(fr_a_, amp。fr_a_)。bind(min_rtt_estimate, amp。min_rtt_estimate)。 bind(fr_phase,amp。fr_phase)。 bind(fr_multi,amp。fr_multi)。 bind(fr_alpha_, amp。fr_alpha_)。 bind(filter_type_, amp。filter_type_)。 bind(tau_, amp。tau_)。}4.3.2 類變量綁定函數(shù)delay_bind_dispatch( ) 該函數(shù)將C++變量與TCL的命令解析器進行匹配,若用戶的腳本文件中準確地調用了相應的變量,就返回TCL_OK。Int MultiPhaseTcpAgent::delay_bind_dispatch(const char *varName, const char *localName, TclObject *tracer){ if (delay_bind(varName, localName, lastackno_, amp。lastackno_, tracer)) return TCL_OK。 if (delay_bind(varName, localName, lastackrx_, amp。lastackrx_, tracer)) return TCL_OK。 if (delay_bind(varName, localName, fr_alpha_, amp。fr_alpha_, tracer)) return TCL_OK。 if (delay_bind(varName, localName, filter_type_, amp。filter_type_, tracer)) return TCL_OK。 if (delay_bind(varName, localName, tau_, amp。tau_, tracer)) return TCL_OK。 if (delay_bind(varName, localName, mss_, amp。mss_, tracer)) return TCL_OK。 if (delay_bind(varName, localName, current_bwe_, amp。current_bwe_, tracer)) return TCL_OK。 if (delay_bind(varName, localName, last_bwe_sample_, amp。last_bwe_sample_, tracer)) return TCL_OK。 if (delay_bind(varName, localName, unaccounted_, amp。unaccounted_, tracer)) return TCL_OK。if (delay_bind(varName, localName, fr_a_, amp。fr_a_, tracer)) return TCL_OK。if (delay_bind(varName, localName, min_rtt_estimate, amp。min_rtt_estimate, tracer)) return TCL_OK。 if (delay_bind(varName, localName, myseqno_, amp。myseqno_, tracer)) return TCL_OK。 if (delay_bind(varName, localName, fr_phase, amp。fr_phase, tracer)) return TCL_OK。 if (delay_bind(varName, localName, fr_multi, amp。fr_multi, tracer)) return TCL_OK。 return RenoTcpAgent::delay_bind_dispatch(varName, localName, tracer)。}4.4模塊關鍵算法流程4.4.1 接收處理函數(shù)recv 接收一個模擬報文段,抽取TCP包頭信息,初始化參數(shù)比較已發(fā)送但未計數(shù)包與已接收包的大小,修改各自的數(shù)目比較RTT估計值與最小RTT值的大小,調整相互的數(shù)值初始化ACK包數(shù)目、ACK間隔時間;根據(jù)選項,按過濾器類型計算帶寬記錄本次帶寬值;編譯預處理;更新cwnd的值;進行報文段的發(fā)送調用過程結束模擬過程實體執(zhí)行接收處理調用 接收處理函數(shù)recv流程圖4.4.2 擁塞控制窗口調節(jié)函數(shù)opencwnd將cwnd按增長因子進行擴大若cwnd小于ssthresh/2將cwnd按分段逼近式進行擴大若cwnd大于ssthresh/2,小于ssthresh且ssthresh-cwnd小于調節(jié)因子進入擁塞避免階段,按窗口選項進入不同的cwnd控制,其中包含標準、實驗、二項式、高速等方案檢查cwnd是否越界,進行糾正處理YYNN調用過程結束模擬過程實體執(zhí)行調節(jié)處理調用 擁塞控制窗口調節(jié)函數(shù)opencwnd流程圖4.4.3 重復性ACK處理函數(shù)dupack_action 帶寬衰減因子擴大,進行越界檢查cwndssthresh帶寬衰減因子設置為定值計算ssthresh值,進行越界處理將cwnd與ssthresh進行
點擊復制文檔內容
規(guī)章制度相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1