1. NS的整体的实现
固定网络的仿真是通过下面三层合作来实现的。

Application这个层是实现数据流的层次。Agent这个层是实现所有各层协议的的层次。Node这个部分由多个分类器(Classifier)实现了所有接收数据包进行判断是否进行转发或接收到Agent的部分。Link实现了队列、时延、Agent、记录Trace等一系列的仿真问题。
2.
|
TclObject |
|
Handler |
|
ParentNode |
|
Process |
|
NsObject |
|
Node |
|
Application |
|
Connector |
|
Classifier |
|
Delay |
|
Queue |
|
Agent |
|
Trace |
|
AddressClassifier |
|
图表 2 NS内部类的继承关系图 |

此图为NS内部类的继承关系,可以看出一些类是由那些类继承来的,这样相同的属性调用的函数就可以很方便的找到出处。
3. NS中函数调用的分层
在用gdb跟踪NS发送一个cbr数据包的过程可以看到一下顺序:
CBR_Traffic::start
TrafficGenerator::timeout
Application::send
UdpAgent::sendmsg
Classifier::recv
Connect::recv
Connect::send
Trace::recv 写一条数据包加入队列的记录
NS代码分层解析与数据包发送流程

本文详细分析了NS(Network Simulator)代码的实现,从整体结构到内部类的继承关系,再到数据包从生成到发送出去的整个过程。通过CBR数据源的start和timeout函数,阐述了数据包的产生和发送间隔。此外,还介绍了Classifier如何查找目的节点,Connector、Queue和LinkDelay在数据包传递中的角色和功能。整个过程中,数据包依次经过应用层、Agent层、Classifier、Connector、Queue和LinkDelay,并通过Scheduler调度发送。
最低0.47元/天 解锁文章
4622

被折叠的 条评论
为什么被折叠?



