The ONE使用笔记:MaxProp路由

尽管MaxProp是针对基于车载DTN设计的,但MaxProp的一些设计策略还是很有借鉴价值。本文介绍MaxProp路由。(未完待续)

1. 路由策略

介绍MaxProp的论文如下:

BURGESS, John, GALLAGHER, Brian, JENSEN, David, et al. MaxProp: Routing for Vehicle-Based Disruption-Tolerant Networks. In : INFOCOM. 2006. p. 1-11. BibTex

The ONE自带的MaxPropRouter,在上述论文的基础上,增加了一个参数alpha(默认值为1),对于新建立的连接,其delivery likehood增加α并除以(α+1),论文如下:

KARVO, Jouni et OTT, Jörg. Time scales and delay-tolerant routing protocols. In : Proceedings of the third ACM workshop on Challenged networks. ACM, 2008. p. 33-40. BibTex

总结起来,MaxProp设计一些策略对消息队列的消息进行重新排列,这样发送消息就有了优先级,删除消息(当缓冲区满时)也有了优先级,截图论文的一张图如下:

image

图1 MaxProp路由策略

2. MaxProp

2.1 设置文件

# 设置文件
Group.router = MaxPropRouter
MaxPropRouter.alpha = 1.0            # 默认值为1.0
MaxPropRouter.probSetMaxSize = 50    # 默认值为50

//MaxPropRouter.java  默认值
public static final double DEFAULT_ALPHA = 1.0;
public static final int DEFAULT_PROB_SET_MAX_SIZE = 50; //the meeting probability set maximum size

避免消息重复转发

假设节点A已经收到消息m,当节点B尝试给A发送消息m,应予以拒绝。要实现这一点,首先要保存节点转发消息的情况,用HashMap存储。如对于节点A,其HashMap形如这样:(A->B, [M1, M2]), (A->C, [M3, M2]), (A->…, […])。相关源代码如下:

//MaxPropRouter.java
private Map<DTNHost, Set<String>> sentMessages; //Map of which messages have been sent to which hosts from this host

//构造函数
protected MaxPropRouter(MaxPropRouter r) {
    super(r);
    ...
    this.sentMessages = new HashMap<DTNHost, Set<String>>();
}

当成功转发消息时,会更新sentMessages,见函数transferDone(Connection con)

专题: DTN路由协议 (4/6)

发表评论

电子邮件地址不会被公开。 必填项已用*标注

6 thoughts on “The ONE使用笔记:MaxProp路由

  • 2016年12月02日 星期五 at 10:40上午
    Permalink

    MaxProp是类似Epidemic向若干个中继点转发,还是从相遇的中继点中只选择一个相遇点转发消息?

    Reply
    • 2016年12月05日 星期一 at 08:16上午
      Permalink

      MaxProp其实跟Epidemic类似,只是多增加了一些机制,给消息一个新的排列方式。

      Reply
  • 2016年12月02日 星期五 at 10:35上午
    Permalink

    sorted by delivery likelihood 中Delivery likelihood是最小的那个吗?

    Reply
  • 2015年09月17日 星期四 at 03:03下午
    Permalink

    请问楼主,MaxProp在进行消息转发时,是仅仅将消息发送给计算出的最短路径上的节点,还是无选择地尽量将消息发送给相遇节点呢?

    Reply
    • 2015年09月17日 星期四 at 11:09下午
      Permalink

      很抱歉,两者都不是。首先,基于DTN的特点,在发送数据之前没法知道S-D的最短路径;其次,MaxProp也不是像Epidemic无加选择地转发,而是在一定条件下转发,你好好看下论文`When two peers discover each other, MaxProp exchanges packets in a specific priority order.`这一部分。

      Reply
  • Pingback: The ONE使用笔记:目录 | Spark & Shine