发明内容
本发明的目的在于提供一种移动自组网中基于按需路由的因特网接
入方法。
本发明提出的Internet接入方法,可以使MANET结点通过网关及时
与Internet结点通信,该方法同时适用于采用IPv4(使用AODV路由)
或IPv6(使用AODV6路由)的网络。实现方法如下:
修改AODV中的RREQ(Route Request)作为网关信息请求消息
Gw_Sol;修改RREP(Route Reply)作为网关信息应答消息Gw_Adv和
路由生存期更新消息Gw_Upd。
修改后的RREQ消息格式:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type |J|R|G|D|U|I| Reserved | Hop Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RREQ ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination IP Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Originator IP Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Originator Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
新增位I用于标识该RREQ是否为网关信息请求消息,I为置1的RREQ
表示Gw_Sol。其它字段的意义与文献[2][3]中的定义一致。
修改后的RREP消息格式:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type |R|A|I|G| Reserved |Prefix Sz| Hop Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination IP address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Originator IP address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
新增位I用于标识该RREP是否为网关信息应答消息,I位置1的RREP
表示Gw_Adv;新增位G用于标识该RREP是否为源结点S(发送过
Gw_Sol)收到应答Gw_Adv后所发送的路由更新消息,G位置1的RREP
表示Gw_Upd。其它字段的意义与文献[2][3]中的定义一致。
本发明提出的工作方法如下:
网关的无线接口地址Global_ip_addr是静态配置的,并且还配置了多
播地址ALL_MANET_GW_MULTICAST。网关通过AODV的HELLO报
文将网关信息宣告消息Gw_Adv_Hlo广播给自己的邻居结点。
Gw_Adv_Hlo消息的格式与Gw_Adv消息格式相同。在Gw_Adv_Hlo中,
I位被置1、G位被置0、Destination IP address为网关的Global_ip_addr、
Prefix Sz的值为网关的Global_ip_addr的前缀长度、Lifetime为网关的服
务生存期、Destination Sequence Number为网关当前的序号,序号的维护
方法以及其它字段的取值与原AODV的定义一致。
收到Gw_Adv_Hlo消息的结点,首先置状态标识Gw_flag为“已有
网关信息”,然后将必要信息保存在网关信息缓存Gw_info_Cache中,这
些信息包括:网关的IP地址Gw_addr为Gw_Adv_Hlo中的Destination IP
address、网关信息的序号Gw_sn为Destination Sequence Number、网络
前缀长度Gw_plen为Prefix Sz、生存期Gw_ttl为Lifetime;并启动生存
期计时器,其初值为Lifetime,当计时器超时,该网关信息被从缓存中
删除,并且Gw_flag被置为“没有网关信息”状态。
MANET结点在接入Internet之前,通过地址自动配置方法配置可在
MANET内路由的IP/IPv6地址Local_ip_addr。当AODV路由模块收到
上层传下来的发往目的地为Internet_dest的数据包时,若路由表中没有
到Internet_dest的路由条目,就检查Gw_info_Cache中是否缓存了网关
信息,若没有就将该数据包保存在等待发送缓存W_send_Cache中,然
后启动网关发现方法。
网关发现过程如下:
源结点S广播Gw_Sol,Destination IP address为
ALL_MANET_GW_MULTICAST;收到Gw_Sol的结点N检查自己的
Gw_info_Cache,若有网关信息并且路由表中存在到网关的有效路由,就
向S发送Gw_Adv(并且丢弃该RREQ,即不再转发),该Gw_Adv中:
I位置1,G位置0,Prefix Sz为Gw_plen,Destination IP address为Gw_addr,
Life_time为Gw_ttl;若N的Gw_info_Cache中没有网关信息或没有到网
关的路由,就将Gw_Sol转发出去。需要特别注意的是,AODV中规定
收到G位置1的RREQ的中间结点要向目的结点发送一个RREP,在本
发明中,收到G位置1但I位也置1的RREQ的中间结点不必向目的结
点发送RREP。
收到Gw_Adv的结点,在Gw_info_Cache中添加或更新网关信息。
更新规则为:Gw_info_Cache中保存序号较大的信息;若序号相等,就
保存生存期较大的信息。然后在路由表中添加一条默认路由,其下一跳
为Gw_Adv的IP头中的源地址N_ip_addr(即发送该Gw_Adv的邻居结
点的IP/IPv6地址)。结点根据收到的Gw_Adv和自己的Local_ip_addr生
成Global_ip_addr。Global_ip_addr由Gw_info中Gw_addr的前
Gw_plen位和Local_ip_addr的后(128-Gw_plen)位首尾相接而成。结
点配置了Global_ip_addr后,将W_send_Cache中发往Internet的数据包
(目的IP地址为Internet_dest)发送出去。然后在路由表中添加一条到
Internet_dest的路由,其下一跳为N_ip_addr,以后发往该Internet结点的
数据包将沿这条路由发送出去。
源结点S收到Gw_Adv,在生成Global_ip_addr并将等待发送的数据
包发送出去后,向网关发送一个路由生存期更新消息Gw_Upd,其中I
位和G位都被置1。Gw_Upd用于更新网关到S的路由的生存时间,
Gw_Upd中的Lifetime为Internet_Route_Timeout,其值根据实际的网络
环境而定,一般为:Internet_Route_Timeout=5*ACTIVE_ROUTE
_TIMEOUT,ACTIVE_ROUTE_TIMEOUT与AODV中定义的值一致。
收到Gw_Upd的结点,建立或更新到S的路由。这样就建立了一条从网
关到S的生存期为Internet_Route_Timeout的路由,从Internet上返回的
数据包通过这条路由到达S。
在上述过程中,收到RREQ或RREP的结点都要建立或更新相应的
逆向路由(reverse route)或前向路由(forward route),其过程与原AODV
中的定义一致。
通过上面的网关信息宣告和网关发现过程,结点在自己和网关之间
建立了一条生存期合理的双向路由。需要访问Internet的结点S,通过这
条路由将Internet请求报文发到网关,然后由网关转发到Internet结点;
从Internet上返回的数据首先到达网关,然后通过网关到S的路由到达结
点S。MANET结点通过这种方法就能够接入Internet。
发明技术方案
基于AODV路由协议的Internet接入方法:其特征在于将增加标识
位I的RREQ作为网关信息请求报文Gw_Sol,将增加标识位I的RREP
作为网关信息应答报文Gw_Adv,将增加标识位G的RREP作为路由生
存期更新报文Gw_Upd;网关利用HELLO消息周期性地向其邻居宣告网
关信息,邻居结点将所获得的信息保存在网关信息缓存里;任何获知网
关信息的结点都将这些信息缓存起来,代替网关应答Gw_Sol;发送
Gw_Sol的结点S收到Gw_Adv后,发送Gw_Upd更新网关到S的路由
的生存期。
基于AODV路由协议的Internet接入方法,其步骤如下:
步骤S1:网关利用HELLO消息周期性地向其邻居结点广播网关信息
宣告Gw_Adv_Hlo;
步骤S2:收到Gw_Adv_Hlo消息的结点,将网关信息保存在网关信
息缓存Gw_info_Cache中;
步骤S3:结点S要向Internet发送数据时,首先判断自己是否具
有可在Internet内路由的地址Global_ip_addr,若有就将数据发送出去;
若没有就进入S4;
步骤S4:判断Gw_info_Cache的状态标识Gw_flag,若Gw_flag处
于“没有网关信息”状态,首先将待发送的数据保存到等待发送缓存
W_send_Cache,然后向MANET广播网关信息请求消息Gw_Sol,用于
寻找网关信息;若Gw_flag处于“已有网关信息”状态,就根据
Gw_info_Cache的信息生成Global_ip_addr,然后将数据发送出去;若
Gw_flag处于“正在寻找网关”状态,就等待网关信息应答消息Gw_Adv
的到来,而不做其它操作;
步骤S5:网络结点收到Gw_Sol,首先建立或更新到结点S的逆向
路由,然后判断自己的Gw_flag标识,若处于“已有网关信息”状态,
并且路由表中存在到网关的有效路由,就根据Gw_info_Cache的信息向
S发送Gw_Adv;否则将Gw_Sol转发出去;
步骤S6:网络结点收到Gw_Adv,首先建立或更新到网关的前向路
由;然后根据Gw_Adv携带的网关信息更新Gw_info_Cache,并置Gw_flag
为“已有网关信息”状态;接着查找W_send_Cache,若其中存在发往
Internet的数据,就生成Global_ip_addr并将这些数据发送出去;判断自
己是否为Gw_Adv的目的结点,若是就向网关发送路由生存期更新消息
Gw_Upd,否则就将Gw_Adv转发出去;
步骤S7:收到Gw_Upd的结点,根据其中的信息更新到S的路由的
生存期,然后将Gw_Upd向网关转发。
具体实施方式
图1的网关信息宣告及其处理流程图。其中各事件的处理步骤如下:
步骤S1.1:当路由系统启动时,网关利用AODV的HELLO消息向其邻
居广播网关信息宣告消息Gw_Adv_Hlo。
步骤S1.2:启动网关信息宣告周期计时器Timer,准备发送下一个
Gw_Adv_Hlo。
步骤S1.3:判断计时器Timer是否超时,若超时就转到S1.1,周
期性地宣告Gw_Adv_Hlo;否则进入S1.4。
步骤S1.4:等待计时器Timer超时。
步骤S2.1:网关的邻居结点收到HELLO消息,首先判断它是否为
网关信息宣告消息Gw_Adv_Hlo,若是就进入S2.2;否则转到S2.3。
步骤S2.2:根据Gw_Adv_Hlo的信息更新网关信息缓存
Gw_info_Cache,并置状态标识Gw_flag为“已有网关信息”。
步骤S2.3:按照AODV定义的方法,根据HELLO信息维护结点与网
关间的路由。
步骤S2.4:将收到的HELLO消息丢弃,因为HELLO消息不需要转发。
图2的网关信息获取与Internet接入流程图。其中各事件的处理步骤
如下:
步骤S1:当收到应用程序传来的发往Internet的数据包时,结点
首先判断自己是否具有一个可在Internet内路由的地址Global_ip_addr,若
有就将数据发送出去;否则进入S2。
步骤S2:判断网关信息缓存Gw_info_Cache的状态标识Gw_flag,
若Gw_flag处于“已有网关信息”状态,就根据Gw_info_Cache的信息
生成Global_ip_addr,然后将数据发送出去;否则进入S3。
步骤S3:将发往Internet的数据保存在等待发送缓存W_send_Cache中,
等待Global_ip_addr的生成。
步骤S4:判断Gw_flag的状态,若处于“正在寻找网关”状态,就进
入S5;否则转到S6。
步骤S5:由于网关信息正在获取过程之中,只需等待网关信息应
答Gw_Adv的到来,而不做其它操作。
步骤S6:初始化网关信息寻找计数器Counter,其初值为0。
步骤S7:广播网关信息请求消息Gw_Sol并置Gw_flag为“正在寻找
网关”状态。
步骤S8:启动等待计时器T,将Counter的值加1,等待Gw_Adv的
到来。
步骤S9:判断等待计时器T的状态,若超时就进入S10;若在T未
超时的过程中收到Gw_Adv就转到S19。
步骤S10:判断寻找网关信息的次数是否超过2,若Counter>2就
向所有等待发送数据的应用程序返回“Internet不可达”消息;否则广播
Gw_Sol重新请求网关信息。
步骤S11:当收到Internet接入控制报文Gw_Sol、Gw_Adv或Gw_Upd
时,判断该报文是否为网关信息请求消息Gw_Sol,若是就进入S12;否
则转到S16。
步骤S12:判断结点自己是否知道网关信息,即判断Gw_flag是否处
于“已有网关信息”状态,若是就进入S13;否则转到S15。
步骤S13:在路由表里查找是否存在到网关的有效路由,若存在就进
入S14;否则转到S15。
步骤S14:根据Gw_info_Cache的信息创建网关信息应答消息
Gw_Adv,并向请求结点发送出去。
步骤S15:将收到的Gw_Sol转发出去。
步骤S16:判断收到的Internet接入控制报文是否为网关信息应答消息
Gw_Adv,若是就转到S18;否则进入S17。
步骤S17:根据收到的路由生存期更新消息Gw_Upd更新网关到源
结点路径的生存期,然后将Gw_Upd转发出去,直到网关收到该消息。
步骤S18:根据收到的Gw_Adv消息更新网关信息缓存Gw_info_Cache
并置Gw_flag为“已有网关信息”状态。若W_send_Cache
中有数据等待发送,就进入S19和S20;若无等待发送的数
据,就直接进入S20。
步骤S19:根据Gw_info_Cache中的信息生成Global_ip_addr,并
将W_send_Cache中的发往Internet的数据发送出去。
步骤S20:判断自己是否为请求Gw_Adv的结点,若是就进入S21;
否则转到S22。
步骤S21:向网关发送路由生存期更新消息Gw_Upd,以更新从网关
到结点的路由的生存期。
步骤S22:将收到的Gw_Adv转发出去。比较一般的Internet接入方法
和本发明所提出的方法,可以看出本发明具有以下优点:
(1)将网关信息均衡负载在多个结点上,减轻了网关的处理负担。
网关通过HELLO消息周期性地向其邻居发布网关信息,邻居结点缓存
这些信息,并代替网关应答网关信息请求。另外,中间结点也缓存网关
信息,代替网关应答。这样网关就不必应答所有的请求,这既减轻了网
关的处理负担,又缩短了请求/应答时间。
(2)RREP中G位的使用,为从Internet上传回MANET的数据包建
立了生存期合理的路由。Internet上的结点D传到MANET内的结点S的
数据包的传输延迟包括从D到网关的时间T1和从网关到S的时间T2。
一般说来,由于在Internet上数据包会经过更多的结点(如路由器)和更
长的传输距离,所以T1比T2大得多。从网关到S的路由如果仍使用原
来较短的生存期,就容易导致返回的数据包到达网关时,网关到S的路
由已失效。网关就必须缓存所有返回的数据包,然后启动路由发现方法
建立一条到S的路由,这既增大了网关的存储负担,又延长了S收到数
据包的时间。使用本发明提出的更新生存期技术,可以在很大程度上解
决Internet延时带来的路由过期问题。
本发明属于移动自组织网络MANET技术领域,提出了MANET中
一种基于AODV路由的Internet接入方法。修改AODV的路由控制报文
RREQ和RREP,使它们能够承载网关信息请求与应答消息。充分利用已
有的控制报文能够减少新增报文所带来的复杂性。网关利用HELLO消
息周期性地向其邻居宣告网关信息,邻居结点和任何获知网关信息的结
点将这些信息缓存起来,代替网关应答请求报文。由于网关信息被均衡
负载到了多个结点上,所以网关的处理负担得到了很大程度地减轻;同
时由于中间结点直接应答网关信息请求,从而减少了源结点得到网关信
息的时间。在RREP中添加标识位G,使G位置1的RREP作为路由生
存期更新报文,在网关到源结点上建立一条生存期合理的路由,保证从
Internet返回MANET的报文能够立即使用这条路由,在很大程度上解决
了Internet延时带来的MANET路由过期问题。
本发明已经用在中科院计算所IPv6 MANET测试床系统的设计中。
(属内部实验,尚未公开。)