如何通过备用父节点通过备用路径转发数据分组? [英] How to forward data packets through an alternative path via an alternative parent?
本文介绍了如何通过备用父节点通过备用路径转发数据分组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
例如,我们有一个RPL树和几个数据发送器将数据分组传输到接收器。一段时间后,其中一个发送者停止向父节点发送或转发数据,因为我们假设该父节点可疑。它不是通过可疑节点发送或转发数据分组,而是通过从父节点列表中选择的备用父节点通过备用路径转发数据分组。在Contiki中实施此方案的有效且简单的方法是什么?
推荐答案
您要做的是将特定父级(或多个父级)列入黑名单。为此,您可以将新字段uint8_t is_suspicious
添加到struct rpl_parent
。
我假设您已经具备了设置此标志的逻辑。然后,当在RPL中进行父项选择时(rpl-dag.c
中的best_parent
函数),您可以查看标志并排除设置了它的父项。
到现有代码中的if
条件:
/* Exclude parents from other DAGs or announcing an infinite rank */
if(p->dag != dag || p->rank == INFINITE_RANK || p->rank < ROOT_RANK(dag->instance)) {
if(p->rank < ROOT_RANK(dag->instance)) {
PRINTF("RPL: Parent has invalid rank
");
}
continue;
}
您将添加另一个检查:... || p->is_suspicious)
。
最后,每次父对象的is_suspicious
状态改变时,都需要重新触发父对象选择算法。一种方法是调用函数rpl_process_parent_event
。
这篇关于如何通过备用父节点通过备用路径转发数据分组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文