Ad hoc网络路由协议概述7——地理定位辅助路由协议(2)GPSR协议 (Greedy perimeter stateless routing)

目录

参考资料

1 背景

2 GPSR过程

2.1 周期性广播信标(Beacon)

2.2 贪婪转发策略(Greedy)

2.3 周边转发策略(Perimeter)

2.3.1 路由空洞

2.3.2 周边转发恢复策略

3 缺点


参考资料

文献:

GPSR: Greedy Perimeter Stateless Routing for Wireless Networks》 Brad Karp,H. T. Kung

参考网址:

简书:

GPSR协议详解(1)——简介 - 简书

GPSR协议详解(2)——贪婪转发 - 简书

GPSR协议详解(3)——周边转发 - 简书​​​​​​​

1 背景

GPSR协议是由哈佛大学的Brad和Kung提出的,一种适合移动自组网MANET的路由协议。GPSR协议中转发数据包主要包括两种方法:贪婪转发和周边转发。贪婪转发是算法的核心,简单来说就是寻找最接近目的节点的一跳邻节点,然后向此节点转发数据包;周边转发方法是对贪婪转发模式的补充,解决在执行贪婪转发失败的区域进行数据分组转发的困境。

在MANET中,随着网络节点数量的增多和节点移动性,网络拓扑变换频繁,传统的路由协议的开销也急剧增大,主动式路由协议需要不停更新维护全网络链路的状态,被动式路由则需要在数据传输前进行路由发现过程,造成数据传输的端到端时延较大。

而GPSR的优势在于,只需要保存一跳邻节点的状态信息,路由开销小;并且随着网络节点数的增加,比基于拓扑的路由协议有更强的扩展性。即使网络内节点移动频繁,GPSR协议都可以基于一跳邻节点的信息,迅速找到替代路由,即是一种无状态(Stateless)协议。而传统的AODV,DSR,DSDV,OLSR协议在网络拓扑变化后都需要重新进行路由发现(更新),待新的路由建立后才能进行数据包的传输。

2 GPSR过程

2.1 周期性广播信标(Beacon)

GPSR协议中,每个节点都配备有如GPS模块这样的地理位置获取模块,来获得当前节点自身的实时位置。

GPSR协议中,所有节点在收到数据包后,根据邻居的位置信息进行路由转发决策,即需要邻居的位置,则每个节点会周期性向邻居(一跳节点)广播自己的位置信息,包含位置信息的消息为GPSR的信标(Beacon),其包含字段如下:

信标字段格式
字段含义
时间戳发送信标的时刻
自身IP地址告诉邻居信标的来源
位置信息自身位置

每个节点在收到来自邻居的信标后,会增加/更新本地邻居表中,对应邻居的时间戳和位置信息,

若在一个周期内没收到来自某个邻居的更新信标,则默认该邻居此时已移除可通信范围,将其从邻居表中删除。

2.2 贪婪转发策略(Greedy)

在GPSR协议中,源节点在传输数据包的时候,在数据包的头部携带了目的节点的位置信息,再转发给中间节点。当节点收到数据包后,需要根据本地的邻居表选择下一跳节点,此时采用局部最优的贪婪选择策略。

具体而言,可分为如下步骤:

步骤1:因为节点保存了所有一跳邻居的位置,则会计算每个邻居到目的节点的距离;

步骤2:如果存在邻居节点,其到目的节点距离小于当前节点到目的节点距离,则选择其中距离目的节点最近的邻节点作为下一跳节点,进行数据包转发。如果不存在这样的邻居节点,则转到步骤3;

步骤3:贪婪转发失败,陷入路由空洞,无邻居可选的困境,失败节点进入“周边转发”模式,见2.3节。

所有节点都遵循寻找局部最优选择的这一方法,一直到数据包送抵目的位置。

举个例子,图1中,节点x需要将数据包转发到目的节点D。以节点x为圆心,虚线圆圈则代表节点x的通信范围。

(1)存在到节点D的距离小于节点x到节点D距离的邻居,因此该节点可以继续进行贪婪选择。

(2)因为节点y到节点D的距离,是在节点x的所有一跳邻节点中离节点D的距离最小的,所以节点y作为局部最优选择,成为下一跳节点。

这个过程随着数据包不断被转发下去会被一直持续,直到数据包到达节点D。

图1 贪婪转发过程

贪婪转发最大的优势是,只需要保存邻居的信息。与按需路由协议不一样,不需要在发送数据包前进行路由发现,而是收到数据包就选择下一跳节点。

2.3 周边转发策略(Perimeter)

2.3.1 路由空洞

只使用邻居位置的贪婪转发,存在路由困境。如图2所示:转发节点x自身离目的节点D的距离,比所有邻居到目的节点D的距离都要更近。

按照贪婪转发的策略,节点xx是转发数据包的局部最优节点。节点x不会转发数据包给节点y或节点w。

图2 路由空洞

​​​​​​​

这就是贪婪转发所面临的困境:存在一种网络拓扑结构,向目的节点发送数据包的过程中,需要选择距离目的节点非最近的节点作为下一跳路由。这种情况称为路由空洞现象

遇到路由空洞的时候,将由周边转发模式来处理这种情况。

2.3.2 周边转发恢复策略

如图3所示,阴影区域是半径为xD的圆和节点x的圆形信号辐射范围的重叠面。在这个范围内找不到x的邻节点。即所有邻节点,都要比节点x离目的节点距离更远。这个区域被称为节点x的空洞区域(void)。X节点需要尝试寻求其他的转发路径,绕过空洞区域。

图3 路由空洞区域

在Brad和Kung的论文中,周边转发模式有两个关键工具:右手定则和构造平面拓扑图。

(1)右手定则

右手定则如图4所示:当数据包从节点y到达节点x的时候,采用以节点x为轴心,将(x,y)按照顺时针旋转,到达的第一条边则是下一次转发所要经过的路径。

如图4所示,转发顺序应该是y→x→z→y。而为了绕过图一中出现的空洞区域,釆用x→w→v→D→z→y→x的顺序转发数据分组。这种由右手定则构成的路径,称为周边(perimeter)。

图4 右手定则

当转发数据包遇到路由空洞的时候,记录当时的状态(位置),使用右手定则来走出路由空洞,即使用右手定则在互相相交的图中,找到一个包含路由空洞的周边(perimeter)。

这种方法总体上改善了可达性结果,但仍然存在一个严重的问题:当路由存在时,算法并不总是能找到它们。右手定则方法盲目地删除它遇到的第二条边。然而,它移除的边缘可能会分割网络,造成网络分区,算法将找不到跨越此分区的路由。因此,引入构造平面图

(2)构造平面拓扑图

平面图,指的是没有任何两条边相交的图。假设节点的通信范围为半径为r,节点m在节点n的通信范围内,即距离d(n,m)≤ r,则称节点n和m之间存在边(n,m)。(注意:此方法只适用于二维平面,即节点间不存在高度差)。

要构造平面图,需要达到以下要求:

条件1:删除不属于平面图的边,构造一个没有交叉边的网络拓扑图

条件2:平面图算法必须能够以分布式运行在每个节点上,而且只需要用到与节点有关的本地拓扑信息作为算法的输入

条件3:将图中多余的边删除,到平面图构造完成的过程中,不能使图断开,导致网络拓扑分割。

相对邻域图RNG(Relative Neighborhood Graph)和加布里埃尔图GG (Gabriel Graph)是常见的、满足以上条件的平面图。从图中删除不属于RNG或GG的边的算法将产生没有交叉连接的网络。

(以下仅从论文中做翻译,简介RNG和GG图,涉及图论,具体内容小伙伴可以去仔细研读论文和图论相关的文章)

1)RNG平面图

A. 定义

若顶点u,v和任意其它顶点w之间的距离,全都大于或等于顶点u和v之间的距离d(u,v),则在顶点u和v之间存在RNG边(u,v)。用方程式表示如下:

RNG平面图的定义如图5所示。以节点u和节点v各自形成一个半径为d(u,v)的圆形,阴影区域则是这两个圆的重叠部分。若(u,v)是RNG中的边,则在节点u和v之间的阴影半月形区域内,不能包含有任何证明节点w。

图5 RNG平面图的定义

B. 算法

对于每个节点u,有完整的邻节点列表N,用以下伪代码去除非RNG连接:

2)GG平面图

A. 定义

如果节点u和节点v之间,直径为uv的圆内,不存在其它顶点w,则节点u和节点v存在GG边(u,v)。用方程式表示如下:

RNG平面图的定义如图6所示,节点u和节点v之间形成一个直径为d(u,v)的圆形,节点u和节点v都在圆上,即是圆形阴影区域。若(u,v)是GG中的边,则在节点U和V之间的圆形阴影区域,不能包含有任何证明节点w。

图6 GG平面图的定义

B. 算法

从两者的定义可以看出,RNG是GG的子集,差别在GG只是在节点间较小的圆形阴影区域内搜寻证明节点。

3 缺点

GPSR在路由选择时完全基于节点的地理位置,这样有可能导致数据包转发节点陷入路由空洞,而为了跳出路由空洞,需要进行周边转发,这会导致数据包传输所经历的跳数增多,对应端到端时延增大。

同时,在MANET中,由于节点的移动性,每个节点所维护的邻居位置信息和实际邻居位置可能存在误差,在进行路由决策时会出现链路故障,影响协议的投递率性能。

在使用GPSR协议时,最好考虑进节点的移动性,参考一些位置预测模型,减少移动性对通信性能的影响。

  • 16
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值