无线传感网络的MAC协议的串音避免和消息传递
发布时间:2008/11/26 0:00:00 访问次数:966
冲突避免是mac协议的一个基本任务,s-mac采用基于竞争的机制。节点传输的任何一个包都被它的邻居接 收,即使这些邻居节点中只有一个是真正的接收者。在能量上,相互串音使基于竞争的协议没有tdma协议有 效。
1.串音避免
在ieee 802.11中,为了执行有效虚拟载波侦听,每个节点一直侦听它的所有邻居的传输。结果每个节点串音很多不是传给自己的包,这造成了大大的能量浪费,尤其在节点密度高和 业务负载重时。s-mac试图通过让干扰节点在听到rts和cts包后进人休眠来避免串音。由于数据包通常远远 长于控制包,该方法区分邻居节点串音长的数据包和跟随ack。问题的关键是当有主动传输时,哪些节点应该 休眠。
在图1中,节点a、b、c、d、e和f形成一个多跳网络,在这里每个节点仅仅能够听到它的直接邻居节点的传 输。假设节点a正在向节点b传送一个数据包,那么在该传输过程中,剩下的节点哪个应该进人休眠?(注: 冲突发生在接收者)
图1 当节点a向节点b传输时,哪些节点应该休眠
很明显,节点d应该休眠,困为它的传输干扰了节点b的接收,节点e和节点f不会产生干扰,因此它们不用休 眠。节点c到节点b有两跳,并且它的传输不会干扰节点b的接收,因此,它可以像节点e一样向它的邻居节点 自由传输。然而,节点c不能从节点e收到任何回复,比如cts和数据包,因为节点e的传输和节点a的传输在节 点c处发生碰撞,所以节点c的传输是能量的浪费。此外,节点a在向节点b发送包后,它可能等待节点b的ack ,并且节点c的传输可能破坏ack包。总之,发送者和接收者的所有直接邻居在听到rts和cts包后应该休眠, 直到现有传输结束,如图3.4所示。每个节点都保持nav以显示它的邻居节点的活动,当一个节点收到发送到 其他节点的数据包时,它就用该包中的持续时间域更新自己的nav。
非零nav值表明在该节点的邻居节点中有活动传输。当nav计数器开始计数时,nav值逐渐减少。因此,如果 一个节点的nav不是零,它就应该休眠来避免串音,在nav变为零的时候它就唤醒。我们同样注意到在某些情 况下也需要出现串音。某些算法可能依赖串音来搜集邻居信息,用来网络检测、可靠路由或分布式查询。如 果被要求到,s-mac能够进行配置,允许特殊应用串音发生。然而,不需要串者的算法可能会更适合资源有 限的网络,比如,s-mac使用明显数据应答而不是隐含数据应答。
2.消息传递
消息是有实际控制意义的、相关数据单元的集合。直到能够执行网络中数据处理和聚合之前,接收者通常需 要获得所有数据单元。把一个长消息当作一个单独包传输的缺点是,如果只有少数比特位在第一次传输中被 破坏,重传长的分组花销很高。但是,如果我们把这个长消息分成若干个相互独立的小信息包,那么我们必须付出较大控制开销和更长延迟的代价。这是因为每个独立的包在竞争中都使用rts和cts包。s-mac仅用一个rts和cts来维持介质,将长消息分成许多小段并为一次性传输。每次发送者传输一个数据分段,它就等待接收者的ack,如果它没有收到ack,它将延长预定传输时间,并立即重发当前分段。如前所述,所有包都有持续时间域,这时是传输剩余数据分段和ack包的所需时间。如果一个邻居节点收到了rts或者cts包,它将进人休眠,休眠的时间是传输所有分段所需时间。每个数据分段或ack同样具有持续时间域,这样,如果在传输的过程中一个节点唤醒或一个新节点加人,它将进人休眠,不管它是发送者或接收者的邻居。如果发送者由于分段丢失或错误而延长传输时间,休眠的邻居将不会立即意识到该延长。但是,当它们唤醒时,它们将从延长传输时间分段或acks中了解到。
在数据分段传输后使用ack的目的是,防止在传输中有邻居节点唤醒或新节点加人时的隐藏终端问题。如果节点仅是接收者的邻居而不是发送者的邻居,那么它不会听到发送者发出的数据分段。如果接收者没有频繁地发出acks,那么一个新的节点有可能错误地推断介质是空闲的,如果新节点开始传输,那么现有传输将会在接收者处被破坏。
值得注意的是ieee 802.11也支持分段。在ieee 802.11中,rts和cts仅为第一个数据分段和第一个ack保留介质,然后第一个分段和ack然后为第二个分段和ack保留介质,以此类推。对每个邻居节点,它收到一个分段或ack后,它就知道有其他分段在发送。所以它必须保持侦听直到所有分段传输完。此外,对限制能量的节点来说,被所有邻居串音会浪费大量能量。
ieee 802.11协议是为提升公平性而设计的。如果发送者没有接收到任何分段的ack,它就要放弃传输,重新竞争介质,以便其他节点获得机会进行传输。如果接收者确实需要整个消息才开始处理,那么该方法可能造成长的延迟。相反,消息传递延长传输时间,并且重传现有分段,这样就会减小对介质的争用和延迟。在接收端突然停
冲突避免是mac协议的一个基本任务,s-mac采用基于竞争的机制。节点传输的任何一个包都被它的邻居接 收,即使这些邻居节点中只有一个是真正的接收者。在能量上,相互串音使基于竞争的协议没有tdma协议有 效。
1.串音避免
在ieee 802.11中,为了执行有效虚拟载波侦听,每个节点一直侦听它的所有邻居的传输。结果每个节点串音很多不是传给自己的包,这造成了大大的能量浪费,尤其在节点密度高和 业务负载重时。s-mac试图通过让干扰节点在听到rts和cts包后进人休眠来避免串音。由于数据包通常远远 长于控制包,该方法区分邻居节点串音长的数据包和跟随ack。问题的关键是当有主动传输时,哪些节点应该 休眠。
在图1中,节点a、b、c、d、e和f形成一个多跳网络,在这里每个节点仅仅能够听到它的直接邻居节点的传 输。假设节点a正在向节点b传送一个数据包,那么在该传输过程中,剩下的节点哪个应该进人休眠?(注: 冲突发生在接收者)
图1 当节点a向节点b传输时,哪些节点应该休眠
很明显,节点d应该休眠,困为它的传输干扰了节点b的接收,节点e和节点f不会产生干扰,因此它们不用休 眠。节点c到节点b有两跳,并且它的传输不会干扰节点b的接收,因此,它可以像节点e一样向它的邻居节点 自由传输。然而,节点c不能从节点e收到任何回复,比如cts和数据包,因为节点e的传输和节点a的传输在节 点c处发生碰撞,所以节点c的传输是能量的浪费。此外,节点a在向节点b发送包后,它可能等待节点b的ack ,并且节点c的传输可能破坏ack包。总之,发送者和接收者的所有直接邻居在听到rts和cts包后应该休眠, 直到现有传输结束,如图3.4所示。每个节点都保持nav以显示它的邻居节点的活动,当一个节点收到发送到 其他节点的数据包时,它就用该包中的持续时间域更新自己的nav。
非零nav值表明在该节点的邻居节点中有活动传输。当nav计数器开始计数时,nav值逐渐减少。因此,如果 一个节点的nav不是零,它就应该休眠来避免串音,在nav变为零的时候它就唤醒。我们同样注意到在某些情 况下也需要出现串音。某些算法可能依赖串音来搜集邻居信息,用来网络检测、可靠路由或分布式查询。如 果被要求到,s-mac能够进行配置,允许特殊应用串音发生。然而,不需要串者的算法可能会更适合资源有 限的网络,比如,s-mac使用明显数据应答而不是隐含数据应答。
2.消息传递
消息是有实际控制意义的、相关数据单元的集合。直到能够执行网络中数据处理和聚合之前,接收者通常需 要获得所有数据单元。把一个长消息当作一个单独包传输的缺点是,如果只有少数比特位在第一次传输中被 破坏,重传长的分组花销很高。但是,如果我们把这个长消息分成若干个相互独立的小信息包,那么我们必须付出较大控制开销和更长延迟的代价。这是因为每个独立的包在竞争中都使用rts和cts包。s-mac仅用一个rts和cts来维持介质,将长消息分成许多小段并为一次性传输。每次发送者传输一个数据分段,它就等待接收者的ack,如果它没有收到ack,它将延长预定传输时间,并立即重发当前分段。如前所述,所有包都有持续时间域,这时是传输剩余数据分段和ack包的所需时间。如果一个邻居节点收到了rts或者cts包,它将进人休眠,休眠的时间是传输所有分段所需时间。每个数据分段或ack同样具有持续时间域,这样,如果在传输的过程中一个节点唤醒或一个新节点加人,它将进人休眠,不管它是发送者或接收者的邻居。如果发送者由于分段丢失或错误而延长传输时间,休眠的邻居将不会立即意识到该延长。但是,当它们唤醒时,它们将从延长传输时间分段或acks中了解到。
在数据分段传输后使用ack的目的是,防止在传输中有邻居节点唤醒或新节点加人时的隐藏终端问题。如果节点仅是接收者的邻居而不是发送者的邻居,那么它不会听到发送者发出的数据分段。如果接收者没有频繁地发出acks,那么一个新的节点有可能错误地推断介质是空闲的,如果新节点开始传输,那么现有传输将会在接收者处被破坏。
值得注意的是ieee 802.11也支持分段。在ieee 802.11中,rts和cts仅为第一个数据分段和第一个ack保留介质,然后第一个分段和ack然后为第二个分段和ack保留介质,以此类推。对每个邻居节点,它收到一个分段或ack后,它就知道有其他分段在发送。所以它必须保持侦听直到所有分段传输完。此外,对限制能量的节点来说,被所有邻居串音会浪费大量能量。
ieee 802.11协议是为提升公平性而设计的。如果发送者没有接收到任何分段的ack,它就要放弃传输,重新竞争介质,以便其他节点获得机会进行传输。如果接收者确实需要整个消息才开始处理,那么该方法可能造成长的延迟。相反,消息传递延长传输时间,并且重传现有分段,这样就会减小对介质的争用和延迟。在接收端突然停
上一篇:IEEE介质访问控制技术