(3) NS3仿真–点对点有线网络:first脚本
介绍:
链路层使用点对点协议ppp.
仿真过程
1.将要执行的first脚本放在 scratch目录中,first脚本原本是在examples/tutorial/first.cc文件中的,采用以下命令 复制文件
注意:以下命令必须是在ns-3.31目录中执行
cp examples/tutorial/first.cc scratch/myfirst.cc
查看scratch目录中是否有myfist.cc文件
ls
2.使用waf来执行脚本
注意:执行脚本也是在ns-3.31的目录下进行的
sudo ./waf
3.运行该脚本
注意:执行脚本也是在ns-3.31的目录下进行的
sudo ./waf --run scratch/myfirst
分析:
可以看到,在2秒时,客户端发送1024bytes的数据,但是服务器收到数据却是在2.00369秒,这是因为数据传输的过程中发生了延迟,延迟时间为0.00369s
总延迟=传播延迟+传输延迟
注意:传输延迟:分组从节点发至信道的时间,传播延迟:分组在信道中使用的时间
因为first脚本的属性配置,ppp信道的传播延迟是0.002s,所以传输延迟为0.00169s,那么这个时间是怎么算的呢?
首先传输延迟的公式如下:
传输延迟=分组大小(bit)/传输速率(s)
因为发送的数据大小为1024B,数据在发送出去的时候,要经过数据链路层,网络层,传输层,封装过程如下:
数据:1024B
PPP:2B
IPV4:20B
UDP:8B
所以总共是1054B
传输延迟=分组大小(bit)/传输速率(s)
1字节=8bit
以上的仿真使用的是c++语言的脚本,在NS3中,也可以使用python语言编写NS3脚本,NS3的python脚本可以调用C++中的API
执行以下语句,运行Python脚本
./waf --pyrun examples/tutorial/first.py
使用python脚本的时候,必须指明指定模块的路径,格式为“ns.<模块名>.<C++函数名>”
仿真结果