NS2 – TCP/IP Simulation How-Wei Wu.

Slides:



Advertisements
Similar presentations
计算机网络与通信 03 信息安全 李 艇.
Advertisements

第五章 網際網路 5-1 網際網路的歷史沿革 5-2 網際網路基本運作原理 5-3 連線媒介與連線上網 5-4 網際網路上的熱門應用
第 8 章 IP 基礎與定址.
第 12 章 UDP 與 TCP.
Network Simulator.
Ns2 一個常用的網路模擬器 台灣科技大學資管系資料庫實驗室 洪振洲.
Chapter 12 UDP 與 TCP.
第2章 计算机网络的协议与体系结构 2.1 计算机网络体系结构的形成 2.2 协议与划分层次 2.3 计算机网络的原理体系结构
计算机网络.
计算机网络 暨南大学计算机科学系 学年 第一学期.
第1章 概述.
Foundations of Computer Science Chapter 6 電腦網路
第 7 章 运输层 基本内容 传输层的概念,TCP/IP体系中的传输层,端口的概念,用户数据报协议UDP,传输控制协议TCP,TCP报文格式、数据的编号与确认、流量控制、拥塞控制、重传机制、TCP的连接管理。 重点掌握 TCP/IP体系中的传输控制协议TCP:TCP报文格式、数据的编号与确认、流量控制、拥塞控制、重传机制、TCP的连接管理。
Windows系統 入侵偵測與防制工具 成大計網中心 楊峻榮 2003/10/23.
網路基本概念與設定方法 林文宗 資管系助理教授
第5章 网络软件 开发技术 (一) 软件开发技术基础 计算机教学实验中心.
Author: Shigeki Takeuchi,Hiroyuki Koga, Katsuyoshi Iida,
Lab312.
計算機網路實驗- 使用NS2模擬多媒體通訊與無線網路(實驗四)
網路概論.
传输层是整个协议层次的核心,其任务是在源机器和目标机器之间提供可靠的、性价比合理的数据传输功能,并与当前所使用的物理网络完全独立
第 12 章 UDP 與 TCP.
計中「多媒體與網路應用」短期訓練課程 FTP server 架設 (in Windows)
第 13 章 DNS 著作權所有 © 旗標出版股份有限公司.
基於OpenWSN之無線感測網路系統的實作
第五章 網際網路 5-1 網際網路的歷史沿革 5-2 網際網路基本運作原理 5-3 連線媒介與連線上網 5-4 網際網路上的熱門應用
亂數函數(Random-Number Function)
Internet Protocol (IP)
The Network Core 由互相連結成網狀的router所組成 資料在網路中傳送的方式 Circuit switching
P2P通信之 ——UDP穿越NAT方案的讨论
TCP/IP Protocol Suite TCP/IP協定 第二組 投影片製作by簡嘉宏 綦凱宏 林睿敏 滕孟哲.
讲议: PXE 介绍及实现 Jarvis
第 2 章 TCP / IP 簡介.
TCP/IP基本原理 第九章 文件传输.
在一定程度上 人类的思维产生于 简单个体之间的相互作用 ——Marvin Minsky.
什麼是網際網路? 面臨攻擊的網路 網路邊際 總結 網路核心
第十讲 TCP协议 协议概述 报文段格式 差错控制 流控和拥塞控制 TCP连接管理 TCP性能问题 TCP软件设计 2018/12/7
預官考試輔導 計算機概論提要 91年12月4日.
第4章 OSI傳輸層.
第4讲 传输层之二 本讲目的: 本讲概述: Internet传输层的实现和实例 面向连接的传输: TCP TCP拥塞控制 拥塞控制原则
计算机网络(第 5 版) 第 5 章 传输层.
计算机网络 第 7 章 运输层 课件制作人:谢希仁.
實驗目的 明瞭可靠傳輸層的基礎觀念 TCP協定下區段資料傳送的格式
第七讲 网际协议IP.
NS2 - Basic Ming-Feng Yang.
第5讲 网络层 本讲目的: 概述: 理解网络层服务原理: 因特网的实现实例 网络层的服务 路由选择原理 分层的路由选择 IP协议
第 12 章 UDP 與 TCP 著作權所有 © 旗標出版股份有限公司.
第十三章 TCP/IP 與 Internet 網路連結技術
2010電資院 「頂尖企業暑期實習」 經驗分享心得報告
第2讲 网络安全协议基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。
第7章 传输层协议——TCP与UDP 任课教师 卢豫开.
Westmont College 网络互连 Part 4 (传输协议, UDP and TCP, 协议端口)
Web Server 王宏瑾.
3.1 通訊協定 3.2 開放系統參考模式(OSI) 3.3 公眾數據網路 3.4 TCP/IP通訊協定
NS2 (Network Simulator - version 2)
實驗5 IP協定分析 明瞭IP(Internet Protocol;Internet協定)的基礎觀念
傳輸控制協議 /互聯網協議 TCP/IP.
Source: Journal of Network and Computer Applications, Vol. 125, No
Speaker : Chang Kai-Jia Date : 2010/04/26
講員:游文志 排程系統教育訓練 後台管理系統 講員:游文志
網路概論 第3章 協定與模型.
Chapter 11 使用者資料包通訊協定.
Toward realistic MPEG4 video transmission simulations
2019/5/3 JAVA Socket(UDP).
指導教授:梁明章 A 許之青 國立高雄大學 2010/06/25
助教:廖啟盛 JAVA Socket(UDP) 助教:廖啟盛
Internet课程设计 教师:陈 妍 朱海萍 西安交通大学计算机系
NS3 & NS2 (network simulator)
第7章 传输层协议——TCP与UDP 任课教师 卢豫开.
學生宿舍網路連線設定說明 問題檢測DIY 106/08/28 學校宿舍網路設定說明.
Presentation transcript:

NS2 – TCP/IP Simulation How-Wei Wu

網際網路所提供的傳輸服務 目前網際網路所提供的傳輸服務,就服務的性質而言可分成兩種 : (1) 連接導向的可靠性傳輸服務 (Connection oriented reliable service),這個服務主要由TCP (Transmission Control Protocol) 來提供。 (2) 非連接的不可靠性傳輸服務 (Connection-less, unreliable data transfer),這部份則是由UDP (User Datagram Protocol)來提供。

TCP提供的服務 1. 可靠的資料傳送(Reliable data transfer)服務:TCP藉由回應 (Acknowledge) 和重送的機制提供可靠性的服務。可靠的資料傳送意味著應用程式可依賴此服務,該服務可確保資料能依照順序地被傳送接收,不會有錯誤發生。 2. 流量控制(Flow control):確保連線的兩端不會因為太快傳送過量的封包而淹沒了另一端。 3. 擁塞控制(Congestion control):當路由器發生擁塞時,封包容易因為緩衝區溢滿而被丟棄,擁塞控制可以避免傳送端傳送太多資料到網路上造成網路擁塞。

UDP提供的服務 TCP與UDP都是透過IP封包來傳輸資料,在開始傳送資料之前,TCP的Client行程會與Server行程執行建立連線的動作,而UDP則不需進行此一動作。就如前面所述,目前網際網路提供給應用程式的服務只有連接導向的可靠性服務與非連接的不可靠性服務,而不管是TCP或UDP,基本上都沒有提供對與頻寛與時間延遲的最低保證。

網路協定和分層的概念 在瞭解了網路可能提供的服務後,接著我們就來看看目前網路所使用的分層方式,一般稱之為「網路通訊協定分層堆疊」(Internet protocol stack)。目前網際網路所使用的分層架構由上而下分別是:應用層、傳輸層、網路層、連結層以及實體層,每一層都有其各自使用的通訊協定。

Internet protocol stack

傳輸層的主要功能 對於應用層而言,傳輸層主要的功能就是在應用程式之間提供邏輯的連線。所謂的邏輯連線是指在應用程式的傳送端與接收端之間其實並沒有一條實際的連線,但是透過傳輸層所提供的功能,應用程式可以假設傳送端與接收端之間有一條連線存在,應用程式可以透過傳輸層協定將資料送出。

End-to-End的服務模型 目前傳輸層所使用的協定主要有兩種-TCP和UDP,應用程式的通訊過程可用下面簡單的圖例來表示:

Ns-2的參數預設值 Ns-2的參數預設值存放在ns-default.tcl這個檔案中。這個檔案的存放位置是在ns-allinone-2.XX/ns-2.XX/tcl/lib/這個目錄下,欲知Ns-2的預設值設定,可以將這個檔案叫出來看看: $ cd ns-allinone-2.31/ns-2.31/tcl/lib/ $ cat ns-default.tcl | more

模擬參數設定 在Ns-2中,Node可以用來表示一個主機(Host)、路由器(Router)或交換器(Switch)。Node產生的方法如下($ns為Ns-2產生的模擬物件): set router [$ns node] Node產生後,接下來就可以開始產生網路的拓撲,有關Node之間的Link、Bandwidth、Propagation Delay以及Queue-Type設定方法,指令格式如下: $ns duplex-link <node1> <node2> <bandwidth> <delay> <queue-type> 網路的拓撲建好後,接下來就是指定要使用的Agent,並告訴這個Agent在產生Traffic的時候,要使用那一種Traffic generator,指令格式如下:: set Agent_name [new Agent/<Agent-type>]

簡單的例子 接下來我們用一個簡單的例子來介紹如何在Node與Node之間建一個TCP Connection (如Figure 3所示),以下的TCL Script是根據Figure 3的設定所撰寫的:

Example 1: set ns [new Simulator] ;#Create a simulator object set nf [open out.nam w] ;#Open the Nam trace file $ns namtrace-all $nf #Define a 'finish' procedure proc finish {} { global ns nf $ns flush-trace close $nf ;#Close the trace file exec nam out.nam & exit 0 }

Example 1: set node1 [$ns node] ;#Create two nodes, then create a duplex link between the nodes set node2 [$ns node] $ns duplex-link $node1 $node2 10Mb 2ms DropTail #Connect the TCP source with the TCP sink set tcp [$ns create-connection TCP $node1 TCPSink $node2 1] $tcp set window_ 128 ;# Configure the TCP agent set ftp [new Application/FTP] $ftp attach-agent $tcp $ns at 0.5 "$ftp start" ;# Schedule events for the FTP agent $ns at 4.5 "$ftp stop" $ns at 5.0 "finish" #Run the simulation $ns run

Example 2: 接著要模擬的環境包含了四個網路節點(n0,n1,n2,n3),網路節點n0到節點n2之間,和節點n1到節點n2之間的網路頻寬(bandwidth)是2Mbps,延遲時間(propagation delay)是10ms。 網路拓樸中的頻寬瓶頸是在節點n2到節點n3之間,頻寬為1.7Mbps,延遲的時間為20ms。每個網路節都是採用 DropTail queue的方式,且在節點n2到節點n3之間的最大佇列長度是10個封包的長度。

Example 2: 在節點n0到n3之間會有一條FTP的連線,FTP應用程式是架構在 TCP之上,所以在寫模擬環境的描述語言的時候,必需先建立一條TCP的連線,在來源端n0上使用TCP agent產生”tcp”來發送TCP的封包;在目的地端n3使用TCPsink agent產生”sink”來接受TCP的資料、並產生回覆封包(ACK)回傳送端、最後把接收的TCP封包釋放。最後要把這兩個agent連起來 (connect),連線才能建立。若是沒有額外的參數設定,TCP封包的長度為1Kbytes。

Example 2: 另外,在節點n1到n3之間有一條固定的傳輸速率的連線(Constant Bit Rate,CBR),CBR應用程式是架構在UDP之上,因此必需在n1使用UDP agent來產生”udp”用來發送UDP封包,在n3上使用Null agent來產生”sink”以接收由n1傳送過來的UDP封包,然後把接收的封包釋放。CBR的傳送速度為1Mbps,每一個封包大小為1Kbytes。CBR是在0.1秒開始傳送,在4.5秒結束傳輸;FTP是在1.0秒開始傳送,4.0秒結束傳輸。

Example 2:

[Tcl Script] # 產生一個模擬的物件 set ns [new Simulator]   #針對不同的資料流定義不同的顏色,這是要給NAM用的 $ns color 1 Blue $ns color 2 Red #開啟一個NAM trace file set nf [open out.nam w] $ns namtrace-all $nf #開啟一個trace file,用來記錄封包傳送的過程 set nd [open out.tr w] $ns trace-all $nd

[Tcl Script] #定義一個結束的程序 proc finish {} { global ns nf nd         $ns flush-trace         close $nf         close $nd         #以背景執行的方式去執行NAM         exec nam out.nam &         exit 0 }   #產生四個網路節點 set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node]

[Tcl Script] #把節點連接起來 $ns duplex-link $n0 $n2 2Mb 10ms DropTail   #設定ns2到n3之間的Queue Size為10個封包大小 $ns queue-limit $n2 $n3 10 #設定節點的位置,這是要給NAM用的 $ns duplex-link-op $n0 $n2 orient right-down $ns duplex-link-op $n1 $n2 orient right-up $ns duplex-link-op $n2 $n3 orient right

[Tcl Script] #觀測n2到n3之間queue的變化,這是要給NAM用的 $ns duplex-link-op $n2 $n3 queuePos 0.5   #建立一條TCP的連線 set tcp [new Agent/TCP] $tcp set class_ 2 $ns attach-agent $n0 $tcp set sink [new Agent/TCPSink] $ns attach-agent $n3 $sink $ns connect $tcp $sink #在NAM中,TCP的連線會以藍色表示 $tcp set fid_ 1 #在TCP連線之上建立FTP應用程式 set ftp [new Application/FTP] $ftp attach-agent $tcp $ftp set type_ FTP

[Tcl Script] #建立一條UDP的連線 set udp [new Agent/UDP] $ns attach-agent $n1 $udp set null [new Agent/Null] $ns attach-agent $n3 $null $ns connect $udp $null #在NAM中,UDP的連線會以紅色表示 $udp set fid_ 2   #在UDP連線之上建立CBR應用程式 set cbr [new Application/Traffic/CBR] $cbr attach-agent $udp $cbr set type_ CBR $cbr set packet_size_ 1000 $cbr set rate_ 1mb $cbr set random_ false

[Tcl Script] #設定FTP和CBR資料傳送開始和結束時間 $ns at 0.1 "$cbr start" $ns at 1.0 "$ftp start" $ns at 4.0 "$ftp stop" $ns at 4.5 "$cbr stop"   #結束TCP的連線(不一定需要寫下面的程式碼來實際結束連線) $ns at 4.5 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink" #在模擬環境中,5秒後去呼叫finish來結束模擬(這樣要注意模擬環境中 #的5秒並不一定等於實際模擬的時間 $ns at 5.0 "finish" #執行模擬 $ns run

Example 2模擬結果

Example 2模擬結果 模擬結束後,會產生兩個檔案,一個是out.nam, 這是給NAM用的,用來把模擬的過程用視覺化的方式呈現出來,這可以讓使用者用”看”的方式去瞭解封包傳送是如何從來源端送到接收端。另一個檔案是 out.tr,這個檔案記錄了模擬過程中封包傳送中所有的事件,例如第一筆記錄是一個CBR的封包,長度為1000bytes,在時間0.1秒的時候,從 n1傳送到n2。這個檔案對我們做效能分析很重要,所以要先對這個檔案的格式做仔細的介紹。

out.tr

out.tr 每一筆記錄的開始都是封包事件發生的原因,若是r則表示封包被某個節點所接收,若是+則表示進入了佇列,若是-則表示離開佇列,若是d則表示封包被佇列所丟棄。接著的第二個欄位表示的是事件發生的時間;欄位三和欄位四表示事件發生的地點(從from node到to node);欄位五表示封包的型態;欄位六是封包的大小,欄位七是封包的旗標標註;欄位八表示封包是屬於那一個資料流;欄位九和欄位十是表示封包的來源端和目的端,這兩個欄位的格式是a.b,a代表節點編號,b表示埠號(port number);欄位十一表示封包的序號;最後欄位十二表示封包的id。以前面trace file的第一筆為例,意思就是說有一個封包pakcet id為0,資料流id為2,序號為0,長度為1000 bytes,型態為CBR,它是從來源端1.0要到目的地3.1,在時間0.1秒的時候,從節點1進入了節點2的佇列中。

一些常用的網站 http://140.116.72.80/~smallko/ns2/ns2.htm http://nsda.ee.ncku.edu.tw/chengrs/ns/index.htm 以上兩個都整理的相當詳細