以ns建立專業的網路模擬環境 Mar. 2001 網路通訊 蔡昌憲、林盈達.

Slides:



Advertisements
Similar presentations
先介绍计算机网络基础知识,再分析网络视频监 控系统的架构、原理与维护。
Advertisements

第五章 網際網路 5-1 網際網路的歷史沿革 5-2 網際網路基本運作原理 5-3 連線媒介與連線上網 5-4 網際網路上的熱門應用
《网络基础与Internet应用》.
第 8 章 IP 基礎與定址.
电信网络的现状和发展趋势 以IP为主的数据业务量将超过目前主体的话音业务。 Voice Data Relative Capacity (%)
第一章 概 述.
第 4 章 网络层.
计算机网络教程(第 2 版) 第 7 章 网络互连 课件制作人:谢希仁.
第四章 网络层 网络层 网络层 网络层 网络层 网络层.
因特网 TCP/IP协议 IP路由技术 Internet接入技术 Internet服务.
第五章:連結層和區域網路 5.1 簡介與服務 5.2 錯誤偵測和更正技術 5.3 多重存取協定 5.4 連結層定址 5.5 乙太網路
NS-2.
Ns2 一個常用的網路模擬器 台灣科技大學資管系資料庫實驗室 洪振洲.
進階網路系統 作業 題目: 組別:第二組 組員: 蘇俊吉 盧柏崴 黃明煜 李德偉
第2章 计算机网络的协议与体系结构 2.1 计算机网络体系结构的形成 2.2 协议与划分层次 2.3 计算机网络的原理体系结构
计算机网络.
第三章 管理信息系统的技术基础 主要内容: 数据处理 数据组织 数据库技术 4. 计算机网络.
计算机网络 暨南大学计算机科学系 学年 第一学期.
第1章 概述.
Foundations of Computer Science Chapter 6 電腦網路
路由器繞送協定- 第三章 路由器動態繞送服務
网络技术之六: 路由技术 22:00.
實驗六 路由器操作設定實驗 教師: 助教:.
多播技术 郑州大学信息工程学院李向丽.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
4.3 计算机网络传输技术 1)点到点网络(Point-to-Point) 2)广播网络(broadcasting) 信阳师范学院计算机系
網路基本概念與設定方法 林文宗 資管系助理教授
TCP/IP基本原理 第五章 路由原理与协议
第5章 网络软件 开发技术 (一) 软件开发技术基础 计算机教学实验中心.
計算機網路實驗- 使用NS2模擬多媒體通訊與無線網路(實驗四)
網路概論.
网络仿真工具介绍
Chapter 4 Network Layer (網路層).
計中「多媒體與網路應用」短期訓練課程 FTP server 架設 (in Windows)
第7讲 多媒体网络 本讲概述: 本讲目标: 多媒体的网络应用 了解多媒体网络的应用要求 存储式音频/视频流 交互式的实时应用
Computer Network Lab 資碩一 黃麒瑋
通訊協定 OSI分層模式 與 TCP/IP協定
網路技術管理進階班---區域網路的技術發展
计算机网络原理 计算机与信息工程分院 周文峰.
網路技術管理進階班---網路連結 講師 : 陳鴻彬 國立東華大學 電子計算機中心.
TCP協定 (傳輸層).
第五章 網際網路 5-1 網際網路的歷史沿革 5-2 網際網路基本運作原理 5-3 連線媒介與連線上網 5-4 網際網路上的熱門應用
亂數函數(Random-Number Function)
32 bit destination IP address
Access Networks.
在NS-2上模擬多個FTP連線,觀察頻寬的變化
路由基础.
第 2 章 TCP / IP 簡介.
R教學 安裝RStudio 羅琪老師.
於開放軟體平台上整合資源預約協定與約束路由以實現訊務工程
第二十二章 電子商務網路架構.
本章要点: 计算机网络的基本概念 Internet基础 Internet服务
第五章 数据链路层和局域网 链路层和局域网.
第七讲 网际协议IP.
NS2 - Basic Ming-Feng Yang.
NS2 – TCP/IP Simulation How-Wei Wu.
校園網路架構介紹與資源利用 主講人:趙志宏 圖書資訊館網路通訊組.
第5讲 网络层 本讲目的: 概述: 理解网络层服务原理: 因特网的实现实例 网络层的服务 路由选择原理 分层的路由选择 IP协议
第十三章 TCP/IP 與 Internet 網路連結技術
Topic Introduction—RMI
3.1 通訊協定 3.2 開放系統參考模式(OSI) 3.3 公眾數據網路 3.4 TCP/IP通訊協定
3 電子商務技術.
NS2 (Network Simulator - version 2)
傳輸控制協議 /互聯網協議 TCP/IP.
Source: Journal of Network and Computer Applications, Vol. 125, No
指導教授:梁明章 A 許之青 國立高雄大學 2010/06/25
计算机通信网 Lecture 3: 数据链路层.
NS3 & NS2 (network simulator)
Develop and Build Drives by Visual C++ IDE
第 4 章 网络层.
Presentation transcript:

以ns建立專業的網路模擬環境 Mar. 2001 網路通訊 蔡昌憲、林盈達

由來 隨著網際網路的成長,發展出許多新的網路協定。 早期 – 新的演算法或協定設計完成時,研究人員多藉由兩種方法來驗證其效能或正確性 實驗:但現今網路環境複雜,建構新的實驗環境相當昂貴。 數學分析:常因複雜度過高而難以分析。 現今常用的方法是以模擬的方式來驗證。 當要架設一個新的網路環境時,必須事先評估網路的拓撲及頻寬是否足夠應付內部及外部的使用者,此時就需要一套支援模組豐富的網路模擬軟體。

常見的網路模擬軟體 Layer OPNET BONeS COMNET III ns Application Layer Database, E-mail, FTP, HTTP, MTA, Remote login, Print, Voice Application, Video Conferencing, X Window HTTP, FTP, Telnet, Constant-Bit-Rate, On/Off Source Transport Layer TCP,UDP,NCP TCP,UDP ATP,NCP,TCP, NetBIOS,UDP UDP, TCP,Fack and Asym TCP, RTP, SRM, RLM, PLM Session Routing, DV Routing Protocols OSPF, BGP, IGRP, RIP, EIGRP, PIM-SM RIP, Shortest Measured Delay, OSPF, Minimum Penalty, IGRP Routing, Centralized, dense mode, (bi-direction) shared tree mode Network Layer IP,IPX IP Data Link layer ATM, (Fast,Gigabit) Ethernet, Ether Channel, FDDI, FR, LANE, LAPB, STB, SNA, TR, X.25, 802.11 ATM, Ethernet, TR,FDDI CSMA/CD, ALOHA, TR, Token Bus, FDDI, X.25 CSMA/CD, CSMA/CA, Multihop, 802.11, TDMA Physical Layer ISDN, SONET, XDSL ISDN, SONET

為什麼使用ns? 由表可知OPNET的支援度相當廣泛,包含大多數的網路標準,但卻需要百萬以上。 相較之下ns在Application layer的支援度較少(HTTP, FTP, Telnet),不過ns在TCP提供了相當豐富的函式庫,幾乎所有的TCP實作版本都有,再加上開放原始碼,可任意增加修改自已想要的功能,所以許多研究機構皆已使用ns進行網路模擬。

ns的特色 Emulation ns可提供與真實網路互動的功能 Scenario Generation 依據不同流量型態、網路架構、錯誤狀況、產生不同的測試環境。 Visualization 不只提供效能上的數據,nam(Network Animation)提供動畫顯示整個運作的流程、協助研究人員方便除錯。 Extensibility 同時使用C++,Otcl兩種語言,C++用來實作核心部份,包括事件處理、封包傳送,擁有較佳效能,Otcl用來定義、配置、控制整個模擬過程,擁有較佳的彈性及互動性。

ns的歷史 NEST(1988) – Network Simulation Testbed REAL(1989) – Realistic and Large ns v1.0(Jul 31 1995) ns v2.0(Nov 6 1996) ns v2.1b6(Jan 18 2000) 最新更新查詢: http://www.isi.edu/nsnam/ns/CHANGES.html

Virtual InterNetwork Testbed 目前ns及內附的nam是VINT計畫的一部分,由DARPA贊助。 目的在提供完整、趨於真實的網路模擬環境。 ns支援的平台包括大部份的Unix(Free-BSD、Linux、SunOS、Solaris),也支援Windows。 ns已經是一個很成熟的網路模擬環境。

ns內建的模組資源 Layer Protocol Class name in ns Description Application HTTP Http/Server HTTP server Http/Client Http client Http/Cache Cache FTP Application/FTP Simulates bulk data transfer Telnet Application/Telnet Exponential or random interval CBR Application/Traffic/CBR Constant-bit-rate source On/Off source Application/Traffic/<type> <type>Exponential,Pareto Network Layer Unicast $ns rtproto<type> <type>:static, Manual, Session, DV Multicast $ns mrtproto<type> <type>:DM, CtrMcast, ST, BST

Layer Protocol Class name in ns Description Transport Layer UDP Agent/UDP UDP sender TCP(sender) Agent/TCP “Tahoe” TCP sender Agent/TCP/Reno “Reno” TCP sender Agent/TCP/Reno/RBP Reno TCP with Rate-based pacing Agent/TCP/Newreno Reno with a modification Agent/TCP/Sack1 TCP with selective repeat(RFC 2018) Agent/TCP/Vegas TCP Vegas Agent/TCP/Vegas/RBP TCP Vegas with Rate-based pacing Agent/TCP/Fack Reno TCP with “forward ack” Agent/TCP/Asym Asymmetric bandwidth TCP sender Agent/TCP/rfc793edu RFC793 TCP Agent/TCP/SackRH TCP Rate-Halving

Layer Protocol Class name in ns Description Transport Layer TCP(receiver) Agent/TCPSink TCP sink with one ACK per packet Agent/TCPSink/DelAck With configurable delay per packet Agent/TCPSink/Sack1 Selective ACK sink Agent/TCPSink/Sack1/DelAck Sack1 with DelAck Agent/TCPSink/Asym Asymmetric bandwidth TCP receiver TCP(2-way) Agent/TCP/FullTcp Experimental 2-way Reno TCP RTP Agent/RTP RTCP Agent/RTCP SRM Agent/SRM Scalable Reliable Multicast PLM Agent/PLM Fast Convergence for CUMULATIVE Layered Multicast Transmission

ns內建模組使用方式 建立物件 以設定的方式 Set tcp [new Agent/TCP] #建立Tahoe TCP Sender 以設定的方式 $ns nrtproto DM { } #使用Dense Mode Multicast routing protocol ns提供的TCP模組非常豐富,不過大多是單向的Sender,沒有建立及停止連線的動作(SYN/FIN),也無法同時雙向傳送資料,此為簡化的TCP,會有些失真,如果需要更接近真實情況,可考慮使用對應FullTcp版本。

安裝ns ns的原始程式及安裝說明 安裝方法 http://www.isi.edu/nsnam/ns/ns-build.html 分別安裝各個所需套件 All-in-one套件(建議初學使用)

安裝ns(以all-in-one為例) get http://www.isi.edu/nsnam/dist/ns-allinone-2.1b6a.tar.gz #抓回最新版的all-in-one套件。 tar zxvf ns-allinone-2.1b6a.tar.gz#解開套件。 cd ns-allinone-2.1b6/。 ./install #若安裝出現問題,可參考http://www.isi.edu/nsnam/ns/ns-problems.html 在PATH環境變數加上/home/ns/ns-allinone-2.1b6/bin。 在LD_LIBRARY_PATH環境變數加上/home/ns/ns-allinone-2.1b6/otcl-1.0a5。 cd ns-2.1b6./validate #檢驗是否安裝正常,時間需要半小時至一小時。

安裝ns(以all-in-one為例) 安裝完畢後,執行ns,打ns-version就可以看到目前ns的版本: ns@hades~/ns-allinone-2.1b6>ns %ns-version 2.1b7-snapshot-20000803 建議再抓回最新的ns daily snapshot進行更新,可在step 4前,將ns-2.1b6的內容替換成新的ns daily snapshot再進行安裝。

ns的目錄結構 ns-allinone tcl8.0.4 tk8.0.4 otcl-1.0 tclcl ns-2.1 nam-1.0 tcl …… ex test lib mcast …

ns的目錄結構 所有的程式碼皆在ns-allinone目錄下,C++程式碼在ns-2.1目錄,Otcl的部分在ns-2.1/tcl目錄,test目錄下是測試套件,ex目錄下是一些範例程式。

模擬的步驟 建立Network Model:描述整個網路的拓撲、頻寬等資訊。 建立Traffic Model:描述所有的網路流量或錯誤情況的時間、類型、或呈何種數學分佈。 追蹤分析結果:模擬完成後,可藉由nam觀察整個流程,或將nam file中想要的資訊抽取出來加以分析。

Network Model 一、建立網路拓撲 建立ns物件:set ns[new Simulator] 建立節點:set n0[$ns node] 建立連結:$ns duplex-link $n0 $n1 <bandwidth><delay><queue_type>其中<queue_type>可以是DropTail, RED, CBQ, FQ, SFQ, DRR 建立LAN:$ns make-lan <node_list> <bandwidth> <delay> LL Queue/DropTail MAC/802.3 Channel 若只想建立點對點的網路,則不用建立LAN這個步驟。

Network Model(cont.) 二、選擇路由方式 Unicast Multicast $ns rtproto<type>(<type>:Static,Session,DV) Multicast $ns multicast(right after[new Simulator]) $ns mrtproto<type>(<type>:CtrMcast,DM,ST,BST)

Traffic Model 一、建立連線 TCP Set tcp [new Agent/TCP] #建立Tahoe TCP sender Set tcpsink [new Agent/TCPSink] #建立receiver $ns attach-agent $n0 $tcp #把TCP sender接在n0節點上 $ns attach-agent $n1 $tcpsink #把receiver接在n1節點上 $ns connect $tcp $tcpsink #建立連線

Traffic Model(cont.) UDP Set udp [new Agent/UDP] #建立UDP sender Set null [new Agent/NULL] #建立receiver $ns attach-agent $n0 $udp #把UDP sender接在n0節點上 $ns attach-agent $n1 $null #把receiver接在n1節點上 $ns connect $udp $null #建立連線

Traffic Model(cont.) 二、產生流量 TCP FTP(or Telnet) Set ftp [new Application/FTP] #模擬FTP的application source $ftp attach-agent $tcp #ftp source連到tcp agent

Traffic Model(cont.) UDP CBR(or Exponential, Pareto) Set src [new Application/Traffic/CBR] $src attach-agent $udp #將source連到UDP agent

Traffic Model(cont.) 加入錯誤模組 Set loss_module [new ErrorModel] $loss_module set rate_0.01 #error rate為1% $loss_module unit pkt #以封包為單位 $loss_module ranvar [new Random Variable/Uniform] #隨機變數uniform分配 $loss_module drop-target [new Agent/Null] #封包丟棄點 $ns lossmodel $loss_module $n0 $n1 #在n0到n1節點之間設定error model

Traffic Model(cont.) 建立排程 $ns at<time><event>(其中<event>為任何合法的ns/tcl命令) $ns run #開始執行

Tracing $ns namtrace-all [open test.nam w] #以nam格式追蹤所有封包,展現模擬過程 網路拓撲(node、link、queues…) 封包資訊:<event-type>-t<time>-s <source>-d<dest>-p<pkt-type> -e <pkt-size> -c <flow-id> -I <unique-id> -a <pkt-attribute> -x <ns-traceinfo>

Otcl簡介 ns使用MIT發展的Otcl(Object Tcl)做描述、配置、執行模擬的語言。 Otcl和C++的差異 C++使用“//”做單行註解,Otcl使用“#” C++僅能單一的class宣告,而Otcl中使用多次的定義。 Otcl中的init instproc相當於C++中的constructor,而destory instproc相當於C++中的destructor。 Otcl中一定要透過object來呼叫,Otcl中的self就相當於C++中的this。

Otcl簡介(cont.) 使用ns進行網路模擬前,必須先學會這語言。 ns/otcl/doc目錄下有一份Otcl Tutorial是一份不錯的入門文件。

結語 ns的特色在使用兩種程式語言的架構 ns透過tclcl連繫兩種語言間的變數及物件,使得ns成為兼具高效能與高彈性的網路模擬軟體。 在做研究時需要設定不同的網路環境、動態改變協定參數,這些事情使用像Otcl的直譯式語言將有較佳的彈性。 ns透過tclcl連繫兩種語言間的變數及物件,使得ns成為兼具高效能與高彈性的網路模擬軟體。