AODV 中的序列号

网络工程 路由
2022-02-25 06:02:10

目的节点的序号如何变化?它是在其当前序列号中成为 RREQ 的 seq 的最大值,还是 dst 节点将序列号加一?请举个例子!!

1个回答

它在RFC 3561中有详细说明:

6.1。维护序列号

每个节点上的每个路由表条目必须包含有关维护路由表条目的目标节点的 IP 地址的序列号的最新可用信息。这个序号称为“目的序号”。每当节点从可能接收到的与该目的地相关的 RREQ、RREP 或 RERR 消息中接收到关于序列号的新(即,非陈旧的)信息时,它就会被更新。AODV 依赖于网络中的每个节点来拥有并维护其目的序列号,以保证通往该节点的所有路由的无环路。目标节点在两种情况下增加自己的序列号:

  • 在节点发起路由发现之前,它必须增加自己的序列号。这可以防止与先前建立的指向 RREQ 发起者的反向路由发生冲突。

  • 在目的节点为响应 RREQ 发起 RREP 之前,它必须将自己的序列号更新为当前序列号和 RREQ 包中的目标序列号中的最大值。

当目的地增加其序列号时,它必须通过将序列号值视为无符号数来这样做。为了完成序列号翻转,如果序列号已经被指定为可表示为 32 位无符号整数的最大可能数字(即 4294967295),那么当它增加时,它的值将为零 (0) . 另一方面,如果序列号当前的值为 2147483647,如果 2 的补码算法用于 32 位整数,这是可能的最大正整数,则下一个值将是 2147483648,这是可能的最大负整数相同的编号系统。负数的表示与 AODV 序列号的递增无关。

为了确定关于目的地的信息不是陈旧的,节点将其序列号的当前数值与从传入的 AODV 消息中获得的数值进行比较。这种比较必须使用带符号的 32 位算术来完成,这是完成序列号翻转所必需的。如果从传入序列号的值中减去当前存储的序列号的结果小于零,则必须丢弃 AODV 消息中与该目的地相关的信息,因为与节点当前存储的信息相比,该信息是陈旧的.

节点可以更改其路由表条目之一中的目标序列号的唯一其他情况是响应到指向该目标的下一跳的丢失或过期链接。节点通过查询其路由表来确定哪些目的地使用特定的下一跳。在这种情况下,对于使用下一跳的每个目的地,节点都会增加序列号并将路由标记为无效(另请参见第 6.11、6.12 节)。每当节点接收到任何足够新鲜(即,包含至少等于记录的序列号的序列号)的路由信息​​时,节点已将该路由表条目标记为无效,该节点应该更新其路由表信息更新中包含的信息。

  • 它本身就是目标节点,并为自己提供一条新路由,或者

  • 它接收到一个 AODV 消息,其中包含有关目标节点序列号的新信息,或者

  • 通往目标节点的路径到期或中断。