基于ndnSIM实现一发多收

直接进入正题,想要实现一发多收,就是要在路由进行广播时转发的兴趣包与接收到数据包的数目相等,即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;
  }
  void
  afterRec_inter()
  {
   For_NUM++;
  }
  void
  afterRec_data()
  {
   Rec_NUM++;
  }

接下进行参数的初始化定义,在cpp中实现
在这里插入图片描述

二、转发策略修改

2.1 after Recevie Interest

进入forwarder.cpp所在文件夹

cd NFD/daemon/fw

修改onOutgoingInterest()函数
在这里插入图片描述

2.2 after Recevie data

在同一个目录下打开strategy.cpp文件,对sendData()函数进行修改
在这里插入图片描述

三、测试

运行一个具有多个生产者的路由拓扑,查看路由接收的数据包数量,即可确认是否实现一发多收。
在这里插入图片描述
有上图可以得出接收的是发送的两倍,实现一发多收。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇