NS3之路---NS3Tutorial解读---Introduction & Resource

NS3网络模拟器

学习NS3最好的途径肯定是阅读官方给定的文档啦。目前NS3官网上给出了Tutorial、Mannual、Module三个pdf,对于新手的我而言,tutorial显然是比较好的入门教材,于是便开始阅读tutorial,同时进行部分的翻译,并夹杂一些个人想法。

ns-3.2-入门基础篇

  1. 介绍

NS3是一个离散事件驱动的网络模拟器,旨在为学术研究和教育提供帮助。 ns3是一个开源项目,起源于2006年。

对于ns3的新用户而言,从详细的英文技术细节手册上收集信息并将其转化为仿真环境中有帮助的信息有时候是一件麻烦而且冗长的事情,因此本文翻译ns3-tutorial,指导意义在于为ns3的中文新用户提供一个方便的学习接口。在下面的内容中,我们将会逐步搭建ns3提供的一些examples,并解释其中的相关概念和特点。

在开始之前,我们需要先了解以下几点:

l  ns3开源,旨在维护一个开放的网络模拟环境以供研究学者们分享和学习。

l  ns3是一个新的模拟器,它并不向后兼容ns2。虽然二者都是c++编写,但是ns3却并不支持ns2中的API。另外ns2中的一些模块已经转移到了ns3中,该项目在搭建ns3的同时也会继续维护ns2,在二者之间研究过渡和集成机制。

1.1 关于ns3

Ns3开发出来是为了提供一个开放的、可扩展的网络模拟平台供研究以及教育所用。简单来说,ns3为用户进行网络实验提供了基础的包发送模型以及一个仿真平台。之所以选择使用ns3,是因为很多时候用户无法在真实的网络系统中验证自己的想法,而ns3刚好提供了这样一个非常近似于真实网络性能的高度控制、可重用的网络模拟平台。某些用户可能注意到了目前ns3中的有效模块主要在于因特网中的协议以及网络工作过程,但是这里必须说明的是ns3并不仅仅局限于模拟因特网环境,一些用户也用它模拟非因特网系统。

如今,开源社区已经有很多的网络模拟工具,ns3和他们的主要区别如下:

l  ns3由一系列的功能库文件构成,可以根据需要将其组合使用,同时也可以与外部库文件组合使用。而某些其它网络仿真器则直接提供一个单一、集成的图形化接口给用户使用。所以相对来说ns3更加灵活以及模块化。虽然ns3鼓励用户在命令行中进行工作,这并不意味着ns3没有对应的图形仿真工具。

l  ns3主要运行于linux操作系统下(也支持FreeBSD和Cygwin(windows平台下使用)),另外,windows下面的VS支持目前在开发中。

l  ns3并非由公司资助,而来自于ns3使用者的尽力支持。

1.2 对于ns2用户

对于熟悉ns2的用户而言,从ns2过渡到ns3最大的转变可能在于对脚本语言的选择。在ns2上运行纯粹的c++语言是不可能的,因为ns2中的组件既有c++编写也有OTcl编写的。而ns3全部由c++编写,因此脚本语言支持c++和python。同时ns3也能产生pcap包追踪文件,该文件用于对包进行分析。

ns2用户一个比较常见的问题是:我应该继续使用ns2还是转移到ns3?本文的回答是,如果你不是对ns2特别情有独钟的话,在ns3下面更具有创造力:

l  ns3由一群积极主动的人维护和发展,而ns2的主要代码几乎在10年内没变过。

l  ns3提供了ns2中没有的特点,如用户自定义源码执行环境。

l  ns3提供了更低的抽象,这样便于理解真实系统中各部分是如何组建在一起的。

Ns2历史较长,因此它拥有的模块数远多于ns3。但ns3在某些模块中的细节比ns2更完善。并且对代码实现的支持是ns2所不能比拟的优势。假设ns2中需要c++实现的模块,那就必须迁移到ns3中进行实现。

1.3 资助

TODO

1.4 组织结构

l  下载并编译ns3;

l  运行一些基本例子;

l  查看输出,对其进行分析、调整。

2. NS3资源

2.1 网络资源

NS3用户必须要知道的网络资源:

主网站:http://www.nsnam.org (可以获取到ns3系统的基本信息)

文档网站:http://www.nsnam.org/documentation (系统架构、类等文档)

Wiki百科:http://www.nsnam.org/wiki

ns3源码:http://code.nsnam.org

2.2 Mercurial

管理和组织系统底层的代码以及文档是非常重要的一件事,类似这样的工具中Concurrent Version System(CVS)应该是比较出名的。ns3提供了类似的源码管理器mercurial,同时mercurial也可以用于下载ns3源码。关于mercurial的信息也可以在ns3的主页上找到。

Mercurial主页:http://www.selenic.com/mercurial

2.3 Waf

一旦源码下载完成,就需要对其进行编译生成可用工程。在linux众多编译工具里面,广为人知的应该是make,但是make适用于小型系统。于是ns3工程选额使用waf编译系统。

Waf相关链接:http://code.google.com/p/waf

2.4 开发环境

Ns3脚本语言为c++和python,因此ns3用户最好在linux环境下进行开发。当然,对于windows下的用户,我们也提供了一个linux-like的环境Cygwin(在一定程度上模拟linux环境)+MinGW(编译器,但目前貌似并不支持)。

Cygwin网址:http://www.cygwin.com

2.5 套接字编程

在本文的一些例子中会用到相关套接字API,如果你对套接字比较陌生,建议先熟悉socket(TCP/IP Sockets in C, Donahoo and Calvert)。

时间: 2024-10-10 15:29:40

NS3之路---NS3Tutorial解读---Introduction & Resource的相关文章

NS3之路---Tutorial解读---Beginning&&Concept

鉴于前面已经有写过了ns3安装的部分,因此也就不重新介绍beginning部分了. 第四章介绍了几个网络中非常重要的概念.对于网络比较熟悉的基本上一看就能懂,理解这几个概念对于理解ns3十分重要.下面就是tutorial第四章的相关翻译工作. 相关概念介绍 首先,在进行ns3程序开发之前,我们有必要对相关概念进行介绍.它们是网络中最基本的对象,因此必须理解. 节点-Node 在因特网术语中,连接到网络的计算设备被称为主机或者终端.但是由于ns3是网络模拟器,而非因特网模拟器,因此我们更习惯使用图

NS3之路---在NS3中添加openflow模块

如何在NS3中安装openflow模块 Note:目前NS3中虽然支持openflow(貌似仅为V0.89),但是并不支持外部控制器,仅使用内部封装的一个控制器(ofi::Controller). 模型描述 该模型依赖于建立一个外部的openflow switch库(Openflow software implementation distribution, OFSID),然后编译ns3封装器来调用该openflow库函数.ns3的封装源码位于“src/openflow/model”路径下. 设

NS3之路---代码编辑器VIM

在进行NS3开发之前,我们首先需要的就是编辑器,除了最初的vi之外,vim作为vi的增强版,是首选,其次可以考虑gedit.本文选择了vim. 在较高版本的ubuntu中,vim一般都已经被安装了.那么针对vim的使用介绍如下: vi/vim模式介绍 在linux vi/vim 文本编辑器里有三种模式:命令模式,输入模式和末行模式.这三者模式的区别是什么呢? 命令模式是vi/vim 编辑器进入后的默认模式,从命令模式可以切换到输入模式和末行模式,如果当你进入另外的两种模式后,可以使用“ESC”键

ASP.NET MVC 開發心得分享 (21):Routing 觀念與技巧

ASP.NET MVC 預設在 Global.asax 所定義的 RegisterRoutes 方法中可以輕易的定義你希望擁有的網址格式,嚴格上來講這並非 ASP.NET MVC 的專利,而是從 ASP.NET 3.5 SP1 就加入的新特性,所以就算是傳統的 ASP.NET Web Form 一樣可以利用 Routing 所帶來的好處,今天我就來講一些 Routing 的觀念與技巧. 快速上手 我先解釋在 ASP.NET MVC 專案中 Global.asax 所定義的 Routing 程式碼

k8s声明式API介绍

声明式API 所谓“声明式”,指的就是我只需要提交一个定义好的 API 对象来“声明”,我所期望的状态是什么样子 “声明式 API”允许有多个 API 写端,以 PATCH 的方式对 API 对象进行修改,而无需关心本地原始 YAML 文件的内容 Kubernetes 项目才可以基于对 API 对象的增.删.改.查,在完全无需外界干预的情况下,完成对“实际状态”和“期望状态”的调谐(Reconcile)过程 声明式 API,才是 Kubernetes 项目编排能力“赖以生存”的核心所在 Admi

克最通月值得白真员工存段况外引dsym

家卫生健康委员会卫生应急办公室组织编制了公民卫生应急素养条目,并在"4·15全民国家安全教育日"发布.条目共12条,涉及突发公共卫生事件应对,突发事件紧急医学救援.中毒及核和辐射应急处置等基本知识和要求.期望通过发布公民卫生应急素养条目,进一步提高民众卫生应急素养,推进卫生应急社会参与工作,切实维护公民生命安全和身体健康. http://weibo.com/p2018_04_18.Pp/230927981149922743777879派褐麓记杂XWO琶追斡晾 http://weibo.

# Apache Hadoop Yarn: Yet Another Resource Negotiator论文解读

纯属云平台管理学习菜鸟的笔记,参照许多大牛的博客,如有侵权,请联系,立刻删除. Abstract 1) tight coupling of a specific programming model with the re- source management infrastructure, forcing developers to abuse the MapReduce programming model, and 2) centralized handling of jobs' contro

深度解读LinkedIn收购Lyndacom之敢问路在何方

编者注:最近同行们应该对LinkedIn收购了做在线教育的Lynda.com这个新闻并不陌生,但纵观国内整个网络,对这个新闻的描述也仅仅是将之当成新闻来看待而已.那么这个收购案究竟存在着什么更深层的意义呢?这个问题应该是身处在线教育的人最有发言权.所谓他山之石可以攻玉,我们看看国外的在线教育总监Kirsten Bailey究竟是如何在她的文章中对这个收购案做出深入的解读的- 上周四我一大早起床的时候,我一如既往的开始查阅我所订阅的新闻资讯,突然发现有篇新闻说到LinkedIn已经耗资15亿美元买

一个成功测试人解读测试这条路(转)

我说一下我的看法吧.因为大家都是搞测试的,这里我也只谈测试. 首先,我们可以有两条路发展,技术和管理.管理就是做team lead, manager, director这么走.因为我没有走这条路,所以,我这里也只谈技术.而且,即使走管理,也是应该具备很强的技术能力才行,所以技术是我们的发展之本.我个人不喜欢技术不精通的领导,也不喜欢被这种人管理. 技术的发展是分阶段的,基本上你要是能发展到最后的阶段,工作,钱,房子,车子,老婆都不用发愁了.当然要一步一步走,不可能一步**,而且一路走过来也不是很