Opnet 一个简单的网络实现Dijkstra最短路径算法,路径代价为跳数加排队延时

一个简单的网络实现Dijkstra最短路径算法,路径代价为跳数加排队延时

代码下载地址:http://download.csdn.net/detail/yanhc519/6774991

1、关键是排队延时

由于链路使用了包交换的链路,所以propdel = 0,txdel=1s,剩下的关键就是排队延时了。

排队延时就是输出链路缓冲区的队列中的等待时间,首先得找到缓冲区的位置所在。

在NS中链路上直接关联queue,Opnet中不太一样,链路上似乎没有queue,虽然有个channel,但是在节点内部好像无法读取链路的状态。目前是在transmitter中找到了一个queue,而且,通过statistics wire可以获取这个queue的size和delay等属性。

实际读取transmitter的delay的时候遇到一个问题,当delay很小的时候(可以通过link的统计量获得),transmitter的delay并不能读取。不知道为什么???不过,实际网络中应该是读取queue size,然后自己计算queue delay,或者直接根据queue size,路由做出其它选择。

2、另一个关键是网络拓扑的建模

采用了邻接表实现,然后利用Dijkstra最短路径算法计算路径。

3、目前,很不太完善

为了简单,目前没有生成路由表,有包发送了就计算一次路径,有点像被动路由。这样也许会增加计算开销,需要确定一下opnet下Dijkstra计算开销大不大???how???正常应该是定时更新路由表,每次发送就查找路由表就可以了,后续会实现这个。

4、全局变量存储网络拓扑

目前通过hello包获取网络拓扑和邻居链路的stream number,为了贪图简单,没有涉及链路状态信息的分发,直接使用了一个全局变量存储网络拓扑。这个应该实现链路状态信息的分发,无链路状态分发全局存储网络拓扑的情况应该设置为Dijkstra最优的方法,用作其它benchmarking。


网络层与泛洪的差不多,下面是节点层,加了statistics wire


下面是进程层,加了一个收集统计量的状态,其它都与泛洪差不多。

Opnet 一个简单的网络实现Dijkstra最短路径算法,路径代价为跳数加排队延时_第1张图片

HB部分

Opnet 一个简单的网络实现Dijkstra最短路径算法,路径代价为跳数加排队延时_第2张图片

FB部分

Opnet 一个简单的网络实现Dijkstra最短路径算法,路径代价为跳数加排队延时_第3张图片

Opnet 一个简单的网络实现Dijkstra最短路径算法,路径代价为跳数加排队延时_第4张图片

Opnet 一个简单的网络实现Dijkstra最短路径算法,路径代价为跳数加排队延时_第5张图片

Opnet 一个简单的网络实现Dijkstra最短路径算法,路径代价为跳数加排队延时_第6张图片


你可能感兴趣的:(Opnet 一个简单的网络实现Dijkstra最短路径算法,路径代价为跳数加排队延时)