NS-3中的OnOffApplicaion作为协议仿真的CBR源

来源:互联网 发布:台湾留学生在大陆知乎 编辑:程序博客网 时间:2024/05/21 05:06

参考:http://blog.sina.com.cn/s/articlelist_2126687030_1_1.html
作为抽象类Application的属性:

 - StartTime(0ns) - StopTime(0ns);

NS-3中的应用层协议,常用Application的子类有:
1、UdpEcho
2、OnOffApplication
3、PacketSink

在示例代码first.cc中,点对点通信,应用层协议使用了UdpEcho来发送应用层Udp包。2个节点分别为UdpEchoClient和UdpEchoServer,
UdpEchoClient的属性:
- MaxPackets(初值=100):应用层发送包的最大个数
- interval(1s):包与包之间的间隔时间
- RemotePort(0):包的目的端口
- PacketSize(100):包的大小
UdpEchoServer的属性:
Port(9):侦听包的端口
echoClient.SetAttribute ("MaxPackets", UintegerValue (1)); //指定最大的发包数、发包间隔、大小
echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));
echoClient.SetAttribute ("PacketSize", UintegerValue (1024));

最后用ApplicationContainer来分别定义StartTime和StopTime;

  ApplicationContainer serverApps = echoServer.Install (nodes.Get (1));  //使用Install方法将Application安装在#1的Node上  serverApps.Start (Seconds (1.0));  serverApps.Stop (Seconds (10.0));  //Application在第1秒开始运行,在第10秒停止   ApplicationContainer clientApps = echoClient.Install (nodes.Get (0));   //使用Install方法在节点0创建echoClient  clientApps.Start (Seconds (2.0));  //第2秒开始,第10秒结束  clientApps.Stop (Seconds (10.0));

接着分析,常用OnOffApplication:
简单说就是,按照OnOff模式,向一个节点发送流量;详细的解释,在脚本中调用Application::StartApplication之后,“On”和“Off”各自定义的随机值,交替切换。也即是,在“Off”模式时。没有流量产生,在“On”状态下,产生cbr流量(恒定比特率 Constants Bit Rate)即固定码率
这就是仿真使用的cbr流量源,cbr流量源被“data rate”和“packet size”定义,定义节点以data rate的恒定速率发送大小为packet size的IP包。
网络协议仿真中,研究MAC协议性能,应用层的时间要不要考虑?还是只考虑包从队列发出,到接收 这段时间的延迟情况,我个人认为是后者。
当应用程序开始运行后,第一个包将会在一个delay=packet/size之后发送;(这一段时间,我没搞懂,也认为对仿真MAC协议不重要,故省去,详细看官网API)
OnOffApplication属性:
- DataRate(500000bps):在On状态的data rate;
- PacketSize(512):在On状态的发包大小;
- Remote:目的地址
- OnTime(Constant=1.0):在On状态的随机值
- OffTime(Constant=1.0):在Off状态的随机值;
- MaxBytes(0):总共要发送的字节总数目,一旦这些字节被发送完,即使 在On状态,也不会有包被发送,初值为0意味着没有限制;
- Protocol(ns3::UdpSocketFactory):使用的协议
- 通过OnOffHelper来设置属性值
原本以为PacketSink也是很重要的应用,仔细看了API才知道,该应用,接收且开始产生流量到一个固定的IP地址和端口。属性值有Local(绑定rx socket的地址)以及Protocol(用于rx socket使用的协议,UDP),MAC协议仿真中主要使用OnOffApplication发产生CBR源,这是最重要的发现。
此外,负载的概念就是应用层的datarate,通过实验,观察,在负载>2Mbps时候,,物理层速率为11Mbps,接收到的包有丢失,所以2Mbps负载,可以当做是指标点了。

1 0
原创粉丝点击