本文主要是介绍基于ndnSIM实现一发多收,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
个人博客链接:http://wordpress.zlfblog.top/
直接进入正题,想要实现一发多收,就是要在路由进行广播时转发的兴趣包与接收到数据包的数目相等,即For_num==Rec_num;但正常情况下,路由在第一次接收到数据包时就会把pit条目删除,所以接下来的目的是在接收到数据包对删除pit的命令进行修改。
一、pit条目修改
先进入到ndnSIM源目录下
然后进入pit-entry.cpp/.hpp所在目录,对这两个文件进行修改。
cd NFD/daemon/table/
先对hpp进行修改,添加For_NUM和Rec_NUM两个变量
然后添加获取参数的函数与对变量操作的函数
int get_RecNUM(){return Rec_NUM;}int get_ForNUM(){return For_NUM;}voidafterRec_inter(){For_NUM++;}voidafterRec_data(){Rec_NUM++;}
接下进行参数的初始化定义,在cpp中实现
二、转发策略修改
2.1 after Recevie Interest
进入forwarder.cpp所在文件夹
cd NFD/daemon/fw
修改onOutgoingInterest()函数
2.2 after Recevie data
在同一个目录下打开strategy.cpp文件,对sendData()函数进行修改
三、测试
运行一个具有多个生产者的路由拓扑,查看路由接收的数据包数量,即可确认是否实现一发多收。
有上图可以得出接收的是发送的两倍,实现一发多收。
这篇关于基于ndnSIM实现一发多收的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!