1、ARP:Address Resolution Protocol,地址解析协议
ARPTable
2、选择事件调度器
set ns [new Simulator]
$ns use-scheduler Heap
3、Simulator object member functions that interface with scheduler member functions:
Simulator instproc now | # return scheduler's notion of current time | |
Simulator instproc at args | # schedule execution of code at specified time | |
Simulator instproc at-now args | # schedule execution of code at now | |
Simulator instproc after n args | # schedule execution of code after n secs | |
Simulator instproc run args | # start scheduler | |
Simulator instproc halt | # stop (pause) scheduler |
4、类的分层
NsObject类是所有处理数据包的基本网络组件对象的超类。只有一个输出数据路径的基本网络对象位于Connector类之下,而具有多个输出数据路径的交换对象位于Classifier类之下。具有可能多个输出数据路径的切换对象位于Classifier类之下。
5、节点是由节点条目对象和分类器组成的复合对象
5、数据包由包头域和数据域组成
数据包报头格式在创建一个模拟对象时初始化,同时注册了一堆报头,常用的IP报头,TCP报头,RTP报头(UDP使用RTP报头)和跟踪头,每个头的偏移堆栈也同时被记录。通常,包只有头堆栈(和一个空的数据空间指针)。虽然包可以通过分配数据空间来携带实际的数据(来自应用程序),但是很少有应用程序和代理实现支持这一点。这是因为在非实时仿真中携带数据是没有意义的。
6、ns2文件
ns-lib——tcl:模拟器类及其大部分成员函数定义(LAN、Web和组播相关定义除外)都位于这里。如果您想知道模拟器对象类的哪些成员函数可用,以及它们是如何工作的,可以在这里查看。
ns-default——tcl:各种网络组件的可配置参数的默认值位于这里。由于大多数网络组件都是用c++实现的,所以可配置的参数实际上是通过OTcl链接函数bind(c++ _variable_name, OTcl_variable_name)提供给OTcl的c++变量。下一节将描述如何从c++代码生成OTcl链接。
ns-packet——tcl:包头格式初始化实现位于这里。当您创建一个新的包头时,您应该在这个文件中注册这个头,使包头初始化过程将您的头包含到头堆栈格式中,并在堆栈中给您头的偏移量。在“添加新应用程序和代理”小节中显示了一个新的头创建示例。
其他OTcl文件:此目录中的其他OTcl文件,包含复合网络对象的OTcl实现,或c++中网络对象的前端(控制部分)。FTP应用程序完全在OTcl中实现,源代码位于“ns-source.tcl”中。
7、God——全局信息观察者,上帝视角
God (General Operations Director)是用来存储全局信息的对象,这些信息是关于一个无所不知的观察者可能拥有的环境、网络或节点的状态,但是不应该让模拟中的任何参与者知道。目前,God对象存储了从一个节点到另一个节点所需的mobilenode的总数和最短跳数表。
在模拟开始之前,下一跳信息通常从移动模式文件加载到god对象中,因为在模拟运行期间动态计算该信息可能非常耗时。然而,为了使这个例子简单,我们避免使用移动模式文件,因此不向上帝提供下一跳信息。过程create-god在~ns/tcl/mobility/com.tcl 中定义。它只允许在模拟期间创建God对象的一个全局实例。在mobilenodes中,除了计算功能外,MAC对象在内部调用God对象。因此,即使我们可能不会利用上帝来做评价,(在这个例子中)我们仍然需要创造God。