贪婪转发
1.局部最优选择
在贪婪周边无状态路由协议GPSR中,源节点在发起数据包发送的时候,在数据包上标识了目的节点的位置。在节点需要转发数据包,而需要选择下一跳节点的时候,作出局部最优的贪婪选择。具体而言,因为节点保存了所有一跳邻节点的位置,则在路由表中选择距离目的节点最近的邻节点作为局部最优选择,此邻节点成为转发数据包的下一跳节点。遵循寻找局部最优选择的这一方法,一直到数据包送抵目的位置。
如图一所示,图中节点x需要转发目的节点为D的数据包,节点X为圆心的虚线圆圈则代表节点x的通讯范围。因为节点y到节点D的距离,是在节点X的所有一跳邻节点中离节点D的距离最小的,所以在节点X向目的节点D转发数据包的贪婪转发过程中,节点Y成为下一跳路由的局部最优选择。节点y会作为节点x向目的节点D转发数据包的下一跳节点。这个过程随着数据包不断被转发下去会被一直持续,直到数据包到达节点D。
贪婪转发的最大优势是,只需要保存节点的一跳邻居的信息。网络状态(繁忙程度、到达率等等)由网络中的节点密度决定,而不是网络规模
这与按需(后置式)路由协议不一样。通常,在一个使用多跳路由的网络,一个节点的无线范围内的邻居的数目基本上远远低于在网络中的节点的总数。
2. 贪婪转发的困境
只使用一跳邻节点位置的贪婪转发,会带来一个天生的问题。如图二所示:节点x离目的节点D的距离,比节点w和节点y距离目的节点D的距离都要更近。从路由节点X转发数据包到目的节点D,存在两条路径:X→y→z→D和X→w→v→D。可是由于贪婪转发的策略,节点x比所有其它一跳邻节点都接近目的节点D,x是转发数据包的局部最优节点。在贪婪转发里,节点x不会转发数据包给节点y或节点w。
这就是贪婪转发所面临的困境:存在一种网络拓扑结构,向目的节点数据包的过程中,需要选择距离目的节点非最近的节点作为下一跳路由。这种情况称作为路由空洞现象。
遇到路由空洞的时候,将由周边转发模式来处理这种情况。