-
在NS2的2.29版本中已存在ping协议,我的NS2版本为2.35,这里将现存的ping协议改为meng协议。
-
原本的ping在文件夹apps下
- 自己新建协议时,应该建立新的目录meng
sudo mkdir meng
- 将apps中ping.cc和ping.h分别复制到meng目录中,此操作是在apps目录下进行的。
sudo cp ping.h ../meng
sudo cp ping.cc ../meng
更改名字
sudo mv ping.h meng.h
sudo mv ping.cc meng.cc
- 然后把meng.h和meng.cc中所有的ping,PING,Ping用meng,MENG,Meng替代
- 在 “~ns/common/packet.h” 文件中, 添加一个新的条目 "PT_MENG
注意:
这里的name前是tab键,并不是空格
8. 在文件 “~ns/tcl/lib/ns-default.tcl” 中,设置包的默认大小Agent/Meng set packetSize_ 64
9. 在文件 “~ns/tcl/lib/ns-packet.tcl” 中,在set protolist {}中加入Meng
注意:
这里的Meng前是tab键,并不是空格
- 在Makefile文件中,添加 meng.o到这个文件中
注意:
这里的meng/meng.o \前是tab键,并不是空格
- 执行make depend
出现以上的错误
解决方案:
sudo apt-get install libpcap-dev
再次执行make depend,就可以执行通过
最后执行 make
出现以下错误
解决方案:
sudo make clean
sudo make
13. 新建meng.tcl文件
touch meng.tcl
14. 仿照NS2中原本的ping.tcl写meng.tcl,原本的ping.tcl内容如下
#Create a simulator object
set ns [new Simulator]
#Open a trace file
set nf [open out.nam w]
$ns namtrace-all $nf
#Define a 'finish' procedure
proc finish {} {
global ns nf
$ns flush-trace
close $nf
exec nam out.nam &
exit 0
}
#Create three nodes
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
#Connect the nodes with two links
$ns duplex-link $n0 $n1 1Mb 10ms DropTail
$ns duplex-link $n1 $n2 1Mb 10ms DropTail
#Define a 'recv' function for the class 'Agent/Ping'
Agent/Ping instproc recv {from rtt} {
$self instvar node_
puts "node [$node_ id] received ping answer from \
$from with round-trip-time $rtt ms."
}
#Create two ping agents and attach them to the nodes n0 and n2
set p0 [new Agent/Ping]
$ns attach-agent $n0 $p0
set p1 [new Agent/Ping]
$ns attach-agent $n2 $p1
#Connect the two agents
$ns connect $p0 $p1
#Schedule events
$ns at 0.2 "$p0 send"
$ns at 0.4 "$p1 send"
$ns at 0.6 "$p0 send"
$ns at 0.6 "$p1 send"
$ns at 1.0 "finish"
#Run the simulation
$ns run
将所有的ping,PING,Ping用meng,MENG,Meng代替
20.执行ns meng.tcl
解决方案:
sudo make clean
sudo make
sudo make install
sudo ns meng.tcl