2008年11月19日星期三

NS相关学习资源(转)

[新手导航]NS相关学习资源(强烈推荐!!!)
(also see my blog at baidu.com)

(一). NS常用基本网站

1. Maillist个人觉得是寻求问题答案最好的地方。
http://mailman.isi.edu/pipermail/ns-users/

2. 柯老师的网站,包含很多非常实用资源:安装,trace文件分析,源代码分析,添加新协议的途径等
http://140.116.72.80/~smallko/ns2/ns2.htm

3. NS本身的一些bug等信息,如果你的问题怎么都解决不了,可以来这里看看,或许会使你豁然开朗:)
http://www.isi.edu/nsnam/ns/ns-problems.html

4. NS by example-入门必读,强烈推荐!!!
http://nile.wpi.edu/NS/

5. ns_tutorial-入门的经典资料
http://www.isi.edu/nsnam/ns/tutorial/

6. ns-FAQ(极其经典,强烈推荐!!!包括:trace分析,Threshold,多场景模拟等)

7. NS2的trace格式分析,包括各个字段的含义
http://www.k-lug.org/~griswold/NS2/ns2-trace-formats.html

8. NS@WPI FAQ一些常见问题
http://nile.wpi.edu/NS/FAQ.html

9. 这里有很多有用的资源,推荐!
http://web.syr.edu/~dchen02/resources.htm  

10.网络技术方面(有TCP 方面的研究,有拥塞控制,新的TCP协议开发)
http://www.icir.org/floyd/
http://www-nrg.ee.lbl.gov/floyd/floyd.html

11.组播方面   
http://www.cse.nd.edu/~striegel/research/REU/04-Fall-Leimkuhler/index.htm stealth multicast. 还有http://www.cse.nd.edu/research/GenMCast/index.html 是做GenMCast-- generic Mulitcast方面的!http://www.cisco.com/univercd/cc/td/doc/cisintwk/ito_doc/ipmulti.htm IP multicast 方面的介绍!  

12. 卸载NS
http://mailman.isi.edu/pipermail/ns-users/2004-December/046262.html


(二). 常用结果分析工具

1. Gnuplot使用介绍

1) Gnuplot导读:http://learn.tsinghua.edu.cn/homepage/2001214728/Manual/95006/index.htm

2) Gnuplot详细说明:http://gnuplot.sourceforge.net/docs_4.1/node1.html

3) GNUPlot介绍: http://yinjilong.blogbus.com/logs/2004/11/509772.html

4) Gnuplot FAQ: http://www.gnuplot.info/faq/faq.html

2.Gawk使用介绍
awk详解:http://linux.chinaunix.net/doc/program/2005-02-03/1085.shtml

3.gcc使用说明
gcc使用指南:http://www.61ic.com/embed/kfhj/qt/200505/1330.html

4.Xgraph使用说明
XGRAPH:http://www.atl.external.lmco.com/projects/csim/xgraph/xgraph.html#anch1


(三). 怎样添加新协议

1.Step by step教你怎样添加新协议,包括怎样修改trace格式,非常经典! http://ants.dif.um.es/masimum/nsrt-howto/html/nsrt-howto.html


(四). 已经实现但尚未添加到NS的协议

1. 这个网站拥有大量的资源,包括各层协议源码,可以直接下载安装。 http://www.isi.edu/nsnam/ns/ns-contributed.html

2. MAC 802.15.4 协议实现 http://ees2cy.engr.ccny.cuny.edu/zheng/pub/

3. 多播协议扩展 http://www.monarch.cs.cmu.edu/multicast_extensions.html

4. AODV-UU 协议下载 http://www.docs.uu.se/docs/research/projects/scanet/aodv/aodvuu.shtml

5.Leach协议
http://www.internetworkflow.com/downloads/ns2leach/mit.tar.gz

6.Cluster Based Routing Protocol
http://www.comp.nus.edu.sg/~tayyc/cbrp/

NS简介(转)

NS是一种针对网络技术的源代码公开的、免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块已经非常丰富,几乎涉及到了网络技术的所有方面。所以,NS成了目前学术界广泛使用的一种网络模拟软件。在每年国内外发表的有关网络技术的学术论文中,利用NS给出模拟结果的文章最多,通过这种方法得出的研究结果也是被学术界所普遍认可的,此外,NS也可作为一种辅助教学的工具,已被广泛应用在了网络技术的教学方面。因此,目前在学术界和教育界,有大量的人正在使用或试图使用NS。

然而,对初学者来说,NS是非常难于掌握的,一般人从学习NS到上手至少需要半年多时间。原因是多方面的:一方面,NS内容庞杂,随软件所提供的手册更新不够快,初学者阅读起来非常困难;另一方面,使用NS还要掌握其它很多必备的相关知识以及相关工具,这会使初学者感到无从入手;有的使用者可能还不了解网络模拟的过程或是对NS软件的机制缺乏理解,这也影响了对NS的掌握。另外,不论在国外还是国内,还没有一本书能集中回答和解决这些问题,这也是NS难于被掌握的一个重要原因。


1、NS2简介

NS2(Network Simulator, version 2)是一种面向对象的网络仿真器,本质上是一个离散事件模拟器。由UC Berkeley开发而成。它本身有一个虚拟时钟,所有的仿真都由离散事件驱动的。目前NS2可以用于仿真各种不同的IP网,已经实现的一些仿真有:网络传输协议,比如TCP和UDP;业务源流量产生器,比如FTP, Telnet, Web CBR和VBR;路由队列管理机制,比如Droptail , RED和CBQ;路由算法,比如Dijkstra等。NS2也为进行局域网的仿真而实现了多播以及一些MAC 子层协议。

NS2使用C++和Otcl作为开发语言。NS可以说是Otcl的脚本解释器,它包含仿真事件调度器、网络组件对象库以及网络构建模型库等。事件调度器计算仿真时间,并且激活事件队列中的当前事件,执行一些相关的事件,网络组件通过传递分组来相互通信,但这并不耗费仿真时间。所有需要花费仿真时间来处理分组的网络组件都必须要使用事件调度器。它先为这个分组发出一个事件,然后等待这个事件被调度回来之后,才能做下一步的处理工作。事件调度器的另一个用处就是计时。NS是用Otcl和C++编写的。由于效率的原因,NS将数据通道和控制通道的实现相分离。为了减少分组和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用C++写出并编译的,这些对象通过映射对Otcl解释器可见。

当仿真完成以后,NS将会产生一个或多个基于文本的跟踪文件。只要在Tcl脚本中加入一些简单的语句,这些文件中就会包含详细的跟踪信息。这些数据可以用于下一步的分析处理,也可以使用NAM将整个仿真过程展示出来。


2、使用NS进行网络仿真的方法和一般过程。

进行网络仿真前,首先分析仿真涉及哪个层次,NS仿真分两个层次:一个是基于OTcl编程的层次。利用NS已有的网络元素实现仿真,无需修改NS本身,只需编写OTcl脚本。另一个是基于C++和OTcl编程的层次。如果NS中没有所需的网络元素,则需要对NS进行扩展,添加所需网络元素,即添加新的C++和OTcl类,编写新的OTcl脚本。假设用户已经完成了对NS的扩展,或者NS所包含的构件已经满足了要求,那么进行一次仿真的步骤大致如下:

(1)开始编写OTcl脚本。首先配置模拟网络拓扑结构,此时可以确定链路的基本特性,如延迟、带宽和丢失策略等。

(2)建立协议代理,包括端设备的协议绑定和通信业务量模型的建立。

(3)配置业务量模型的参数,从而确定网络上的业务量分布。

(4)设置Trace对象。NS通过Trace文件来保存整个模拟过程。仿真完后,用户可以对Trace文件进行分析研究。

(5)编写其他的辅助过程,设定模拟结束时间,至此OTcl脚本编写完成。

(6)用NS解释执行刚才编写的OTcl脚本。

(7)对Trace文件进行分析,得出有用的数据。

(8)调整配置拓扑结构和业务量模型,重新进行上述模拟过程。

NS2采用两级体系结构,为了提高代码的执行效率,NS2 将数据操作与控制部分的实现相分离,事件调度器和大部分基本的网络组件对象后台使用C++实现和编译,称为编译层,主要功能是实现对数据包的处理;NS2的前端是一个OTcl 解释器,称为解释层,主要功能是对模拟环境的配置、建立。从用户角度看,NS2 是一个具有仿真事件驱动、网络构件对象库和网络配置模块库的OTcl脚本解释器。NS2中编译类对象通过OTcl连接建立了与之对应的解释类对象,这样用户间能够方便地对C++对象的函数进行修改与配置,充分体现了仿真器的一致性和灵活性。


3、NS2的功能模块NS2仿真器封装了许多功能模块,最基本的是节点、链路、代理、数据包格式等等,下面分别来介绍一下各个模块。

(1)事件调度器:目前NS2提供了四种具有不同数据结构的调度器,分别是链表、堆、日历表和实时调度器。

(2)节点(node):是由TclObject对象组成的复合组件,在NS2中可以表示端节点和路由器。

(3)链路(link):由多个组件复合而成,用来连接网络节点。所有的链路都是以队列的形式来管理分组的到达、离开和丢弃。

(4)代理(agent):负责网络层分组的产生和接收,也可以用在各个层次的协议实现中。每个agent连接到一个网络节点上,由该节点给它分配一个端口号。

(5)包(packet):由头部和数据两部分组成。一般情况下,packet只有头部、没有数据部分。


4、NS2的软件构成

NS2包含Tcl/Tk, OTcl, NS,Tclcl。其中Tcl是一个开放脚本语言,用来对NS2进行编程;Tk是Tcl的图形界面开发工具,可帮助用户在图形环境下开发图形界面;OTcl是基于Tcl/Tk的面向对象扩展,有自己的类层次结构;NS2为本软件包的核心,是面向对象的仿真器,用C++编写,以OTcl解释器作为前端;Tclcl则提供NS2和OTcl的接口,使对象和变量出现在两种语言中。为了直观的观察和分析仿真结果,NS2 提供了可选的Xgraphy、可选件Nam。


5、NS现有的仿真元素

从网络拓扑仿真、协议仿真和通信量仿真等方面介绍NS的相应元素:

(1)网络拓扑主要包括节点、链路。NS的节点由一系列的分类器(Classifier,如地址分类器等)组成,而链路由一系列的连接器(Connector)组成。

(2)在节点上,配置不同的代理可以实现相应的协议或其它模型仿真。如NS的TCP代理,发送代理有:TCP,TCP/Reno,TCP/Vegas,TCP/Sack1,TCP/FACK,TCP/FULLTCP等,接收代理有:TCPSINK,TCPSINK/DELACK。TCPSINK/SACK1,TCPSINK/SACK1/DELACK等。此外,还提供有UDP代理及接收代理Null(负责通信量接收)、Loss Monitor(通信量接收并维护一些接收数据的统计)。

(3)网络的路由配置通过对节点附加路由协议而实现。NS中有三种单播路由策略:静态、会话、动态。

(4)在链路上,可以配置带宽、时延和丢弃模型。NS支持:Drop-tail(FIFO)队列、RED缓冲管、CBO(包括优先权和Round-robin 调度)。各种公平队列包括:FQ,SFQ,DRR等。

(5)通信量仿真方面,NS提供了许多通信应用,如FTP,它产生较大的峰值数据传输;Telnet则根据相应文件随机选取传输数据的大小。此外,NS提供了四种类型的通信量产生器:EXPOO,根据指数分布(On/Off)产生通信量,在On阶段分组以固定速率发送,Off阶段不发送分组,On/Off的分布符合指数分布,分组尺寸固定;POO,根据Pareto分布(On/Off)产生通信量,它能用来产生长范围相关的急剧通信量;CBR,以确定的速率产生通信量,分组尺寸固定,可在分组间隔之间产生随机抖动;Traffic Trace,根据追踪文件产生通信量。

2008年11月17日星期一

NS学习笔记(1)

《NS与网络模拟》学习笔记(1)
  • NS分裂对象模型:NS的构件由相互关联的两个类实现
1)C++类:实现构件的主要功能;
2)Otcl类:提供C++对象面向用户的借口
  • NS模拟分两个从层次:
1)基于Otcl编程层次--利用NS已有元素,无须修改
2)基于C++和Otcl编程层次——扩展、添加所需网络元素
  • NS初学建议
1)掌握原理(离散事件模拟机制、分裂对象模型)
2)牢记节点结构(一个节点由分类器、复用器、代理、链路等组成)
3)学会查手册但不依赖于手册
4)用户应该对主要的网络构件的功能都有所了解
5)常看源代码
6)ns Tutorial 和 ns by examples 比较适合初学者(笔者自加)

2008年11月12日星期三

10 Lessons of an MIT Education-by Gian-Carlo Rota

10 Lessons of an MIT Education
Gian-Carlo Rota
  1. You can and will work at a desk for seven hours straight, routinely.
  2. You learn what you don't know you are learning.
  3. By and large, "knowing how" matters more than "knowing what."
  4. In science and engineering, you can fool very little of the time.
  5. You don't have to be a genius to do creative work.
  6. You must measure up to a very high level of performance.
  7. The world and your career are unpredictable, so you are better off learning subjects of permanent value.
  8. You are never going to catch up, and neither is anyone else.
  9. The future belongs to the computer-literate-squared.
  10. Mathematics is still the queen of the sciences.

(From:http://www.math.tamu.edu/~cyan/Rota/mitless.html)

Research Interests

  • Cognitive Radio and Networks/DSA
  • Dynamic Spectrum Allocation and Power Control
  • Game Theory and Auction Mechanism
  • Wirelss Mesh Networks and Ad Hoc Routing

开博贴

建此博客的主要目的是分享自己的科研心得,记录科研历程,共享常用资源。