我正在为RPL创建MRHOF的修改版本。但是,我对使用的ETX指标有一些疑问。我正在运行一个rpl-udp示例(.... / contiki-3.0 / examples / ipv6 / rpl-udp)。
根据我的理解,ETX的一般定义如下:
ETX = 1/(df * dr)
其中df
是数据包成功到达接收方的测量概率,dr
是ACK包成功接收的概率。
[neighbor_link_callback(rpl_parent_t *p, int status, int numtx)
(contiki / core / net / rpl / rpl-mrhof.c)]中定义了ETX,如下所示:
new_etx = ((uint32_t)recorded_etx * ETX_ALPHA +(uint32_t)packet_etx * (ETX_SCALE - ETX_ALPHA)) / ETX_SCALE
where
recorded_etx = nbr->link_metric packet_etx = MAX_LINK_METRIC * RPL_DAG_MC_ETX_DIVISOR nbr->link_metric = RPL_INIT_LINK_METRIC * RPL_DAG_MC_ETX_DIVISOR (rpl-dag.c) RPL_INIT_LINK_METRIC = 2 (rpl-conf.h) ETX_SCALE = 100 ETX_ALPHA = 90 RPL_DAG_MC_ETX_DIVISOR = 256 (rpl-private.h) MAX_LINK_METRIC = 10
每次链接层收到ACK或超时事件时,都会触发此文件中的函数(neighbor_link_callback)。
[我了解ETX的正式定义,但是当我尝试将标准ETX公式与contikiRPL的ETX公式进行映射时,在理解contikiRPL中ETX的实现时遇到了一些麻烦。
如何在ContikiRPL中实现数据包成功到达接收方(df
)的概率以及成功接收ACK包(dr
)的概率?
我正在为RPL创建MRHOF的修改版本。但是,我对所使用的ETX指标有些怀疑。我正在运行一个rpl-udp示例(.... / contiki-3.0 / examples / ipv6 / rpl-udp)。按照...
在代码中,df
和dr
分别未知。该算法在发送方设备上运行,它无法区分丢包的情况和ACK丢失的情况。它们看起来完全一样:缺少