AODV总结 1 信源和信宿的定义 在AODV协议[1]中,序列号的分析。 图1:RREQ的消息格式 在图1中,信源序列号(Originator Sequence Number)由信源节点维护,表示到信源的反向路由的新旧;也就是当中间节点收到信源发来的RREQ后,其路由表中到信源的路由表项的新旧程度。 信宿序列号(DestinationSequence Number)表示信源可接受的到信宿的前向路由的新旧,等于过去接收到的有关信宿的最大序列号,信源应维护到每个信宿的最大序列号。 2 序列号的维护 每个节点中的每个路由表项都必须维护目的节点有关序列号的最新信息,该序列号称为“目的序列号”。当节点收到RREQ、RREP、RERR信息后,如果能从中得到关于目的节点序列号的新信息后,就会更新路由表。AODV通过节点维护目的序列号来保证到某个节点的所有路由不会出现环路。目的节点增加其序列号主要包括下列两种方式: (1)在节点发起一次路由请求之前,需增加源序列号,这就避免了和以前建立的到RREQ的发送节点的反向路由相冲突。 (2)当节点为了响应RREQ而发起RREP之前,需增加序列号,必须将起序列号更新为其源序列号和RREQ中目的序列号的最大值。 当该节点增加其源序列号时,必须将该序列号作为一个无符号数,为了实现序列号的翻滚,当序列号已经设置为32比特无符号数的最大值时,也就是4294967295。如果增加序列号,就变成0。另一方面,如果当前序列值为2147483647,是32比特整数补码符号数的最大值,则下一个值为2147483648,是32比特补码的最小值。负值的表示和AODV序列号的增加并不关联。 为了确保关于一个信宿的信息是最新的,节点应该对序列号的当前值和到达的AODV信息的序列号进行比较,这种比较采用了有符号32bit算法,有必要完成序列号的翻转。如果到达分组的序列号减去当前序列号的值小于零,则和AODV信宿相关的信息必须删除,因为该信息相对于节点当前保存信息是过期的。 另外,若节点对目的节点的下一跳链路过期或者丢失,则节点可改变其目的序列号。 例如在3个比特的补码中,分别为: ![]() ,所以-4比3大。 ![]() ,所以0比-1大。 通过上述例子,似乎可以说明AODV中进行序列号进行比较的具体方法。 [1] rfc3561,"AdHoc On-Demand Distance Vector (AODV) Routing".
|