在ns2下添加新协议:

http://blog.csdn.net/fhtingtian/article/details/5362653

在NS2想要添加一个协议,至少要实现如下8个步骤。下面以ns2中的ping为例子说明,在版本2.29中已存在ping,这里改为bing。

1.因为ping在文件夹apps下,这里就在该目录下(自己新建协议时,应该建立新的文件夹bing)新建文件bing.h bing.cc。

2.在bing.h中定义为packet头定义一个struct数据类型, 例如 "struct hdr_bing"; ( 仿照 "~ns/apps/ping.h" 文件中的hdr_ping)和一个类BingAgent(仿照PingAgent)

3.在bing.cc中定义BingHeaderClass和BingClass(仿照ping.cc中的类)。

前面三步可以省略,直接在文件夹apps下cp ping.h bing.h和cp ping.cc bing.cc,然后把bing.h和bing.cc中所有的ping,PING,Ping用bing,BING,Bing替代。以下几步是必要的修改:

4. 在 "~ns/common/packet.h" 文件中,为 enum packet_t 添加一个新的条目 "PT_BING" ,并在p_into类的构造函数中添加一个新的数组元素 name[PT_BING] = "bing",要注意此处的位置必须对应。

5. 在文件 "~ns/tcl/lib/ns-packet.tcl" 中,在"foreach prot" 中添加"BING" 。

6. 在文件 "~ns/tcl/lib/ns-default.tcl" 中,设置包的默认大小Agent/Bing set packetSize_ 64

7.在文件~ns/makefile中,apps/ping.o后添加apps/bing.o.(apps表示bing.h和bing.cc所在的文件夹,所以如果自己新建了文件夹bing,此处应添加bing/bing.o)

8.保存以上文件后,需要先‘make depend‘一下,生成依赖关系,然后再‘make‘。成功后,可以仿照ping.tcl建立一个bing.tcl(在文件中用bing,Bing替换ping,Ping)。接下来就可以运行ns bing.tcl查看结果。

以上各个步骤,步骤2是为了定义新的包头格式;步骤3是为了能够将该数据包与Otcl联系起来;步骤4是为了在trace中能够使用该数据包,注意name[PT_TCP]="tcp",其中的 "tcp" 即是出现在trace文件中的第五列,pkt type;步骤5是为了NS在启动的时候能够载入我们定义的包头。

最后需要注意:如果新建的协议是无线路由协议,则还需要在 "~ns/tcl/lib/ns-lib.tcl" 文件中Simulator的create-wireless-node方法中添加相应的处理。

小结:.h文件中主要定义头结构体hdr_[name],[name]agent:public agent。结构体中访问方法部分基本相同,类中要有默认构造函数和命令函数。所有.cc文件中的[name]headerclass和[name]class内容基本相同,主要是类agent中成员函数的实例化。

时间: 2024-12-29 11:38:43

在ns2下添加新协议:的相关文章

CentOS下添加新硬盘并分区格式化

CentOS下添加新硬盘并分区格式化 1.先用fdisk -l 来查看当前状态下磁盘情况 上面红色标识行可以看出,我添加了一块新硬盘/dev/sdb,大小为350G,未分区格式化状态. 2.用Fdisk /dev/sdb来进行分区操作. 输入N表示新建一个分区 p 表示建立一个原始分区 1 表示此分区编号为1. 1表示使用默认起始柱面号.如果要分多个区的话,先盘算好要多大,再输入数字 输入: 回车表示使用默认结束柱面号.即此分区使用整个硬盘空间 w //保存分区  3.再次查看当前分区状态: 可

Linux系统下添加新硬盘

Linux系统下添加新硬盘.分区及挂载,通过虚拟机环境实现(VMware12pro+C6.8 2.6.32-642.el6.x86_64 ) 1.将硬盘插入后,通过fdisk -l 查看当前系统磁盘信息 [[email protected] ~]# fdisk -l Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 51

linux下添加新用户,切换用户登录

如何在linux下添加用户?以及成功退出用户登录?以及切换用户登录? 步骤如下: 命令行输入 adduser 用户名(如:lanp) 回车,(注意:此处linux不会显示任何信息出来); 接着输入 passwd 用户名 回车: 提示你输入新的密码,以及密码输入后的确认密码:(注意,在你输入密码时,linux是不会显示的) 出现身份验证令牌已经成功更新,表示用户以及创建成功: 退出用户登录,直接 logout 回车即可; root切换到普通用户,用命令su 用户名(su即switch user切换

foxmail代理的情况下添加新账户

最近遇上了一个小问题,foxmail在使用代理上网的情况,不能添加新账户,很是麻烦. 开始在账户里面,我选择使用代理,但总是提示网络连接不上,实在让人奇怪. 后来: 将账户设置下的代理选择改为不使用代理,然后在工具系统里面,点网络,选择使用IE浏览器设置,即可. 这样就可以了.

linux学习(一) 在unbuntu下添加新用户

最近装了一个双系统,开始要折腾unbuntu了,Linux系统是一个多用户的操作系统,很多操作需要管理员权限才能完成,所有管理员权限是很重要的,对于初学者来说,我们最好用一个一般用户的权限就行了,相对于初学者的我们,对于很多东西还不懂,如果用了一个管理员权限,很可能造成很多不可逆的影响.遂捣鼓了一番,添加一个标准用户来供我们学习的一般需求. 第一步,我们打开系统设置:找到里面的用户账户选项: 第二步:对当前的用户进行解锁: 第三步:解锁之后我们就可以添加新用户了: 第四步:我们就可以创建新用户啦

Ubuntu16.04下添加新用户

某些情况下,ubuntu 使用useradd 新用户名,在home 文件夹下面看不到新创建的用户文件夹,例如: [email protected]:/home/kuku# useradd spark [email protected]:/home/kuku# passwd spark Enter new UNIX password:  Retype new UNIX password:  passwd: password updated successfully [email protected

CentOS下添加新硬盘

1.查看新硬盘     #fdisk –l      新添加的硬盘的编号为/dev/sdb 2.硬盘分区     1)进入fdisk模式 #/sbin/fdisk  /dev/sdb 2)输入n进行分区      3)选择分区类型      这里有两个选项: ?   p: 主分区 linux上主分区最多能有4个 ?   e: 扩展分区 linux上扩展分区只能有1个,扩展分区创建后不能直接使用,还要在扩展分区上创建逻辑分区. 这里我选择的p.     4)选择分区个数  可以选择4个分区,这里我

Ubuntu 16.04下添加新用户

某些情况下,Ubuntu 使用useradd 新用户名,在home 文件夹下面看不到新创建的用户文件夹,例如:[email protected]:/home/kuku# useradd spark [email protected]:/home/kuku# passwd spark Enter new UNIX password:  Retype new UNIX password:  passwd: password updated successfully [email protected]

Linux下添加新硬盘,分区及挂载

挂载好新硬盘后输入fdisk -l命令看当前磁盘信息 可以看到除了当前的第一块硬盘外还有一块sdb的第二块硬盘,然后用fdisk /dev/sdb 进行分区 进入fdisk命令,输入h可以看到该命令的帮助,按n进行分区 这里输入e即分为逻辑分区,按p即分为主分区,我们要将这块盘分为主分区即输入p 到这里输入该主分区为第几个主分区,由于是新盘我们输入1来分第一个主分区 First Cylinder是选择该分区的起始磁盘数,这里可自定义也可不做选择,默认是1,如无特殊需求强烈建议选择默认,也就是1来