尽管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设计一些策略对消息队列的消息进行重新排列,这样发送消息就有了优先级,删除消息(当缓冲区满时)也有了优先级,截图论文的一张图如下:

MaxProp路由策略

图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)。

本文系Spark & Shine原创,转载需注明出处本文最近一次修改时间 2022-03-26 21:55

results matching ""

    No results matching ""