CN104836733A - 优化链路状态路由协议实现方法 - Google Patents
优化链路状态路由协议实现方法 Download PDFInfo
- Publication number
- CN104836733A CN104836733A CN201510174828.3A CN201510174828A CN104836733A CN 104836733 A CN104836733 A CN 104836733A CN 201510174828 A CN201510174828 A CN 201510174828A CN 104836733 A CN104836733 A CN 104836733A
- Authority
- CN
- China
- Prior art keywords
- routing
- algorithm
- submodule
- mpr
- maintenance
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种优化链路状态路由协议实现方法,采用模块化设计方案,整个方案由通用参数配置子模块、路由算法子模块以及路由维护子模块构成,在Linux操作系统中实现时,首先通用参数配置子模块进行协议的模块加载与参数配置,然后分支为路由算法进程与路由维护进程持续运行,其中路由算法进程中又存在三个并行的任务,包括报文接收部分、表驱机制部分以及MPR算法部分,路由维护进程中又存在邻节点维护、路由表动态更新两个并行的任务。发明提供的优化链路状态路由协议实现方法解决了表存储结构设计、事件调度、MPR选择算法的设计实现等关键问题。
Description
技术领域
本发明涉及一种优化链路状态路由协议实现方法。
背景技术
优化链路状态路由协议(OLSR,Optimal Link State Routing)是Ad Hoc网络的经典主动路由协议,它简单、实用且性能优越。OLSR协议通过选取多点中继(MPR)机制的方式有效地减少了洪范过程中广播消息的转发,克服了表驱式路由协议网络维护时开销大的缺点,并广泛应用于大而密集的网络应用环境中。因此,如何在实际的Ad Hoc网络中实现OLSR路由协议具有非常重要的现实意义。
发明内容
针对上述问题,本发明提供一种优化链路状态路由协议实现方法,为实现上述目的本发明的具体方案如下:
一种优化链路状态路由协议实现方法,包括以下步骤:
采用模块化设计方案,整个方案由通用参数配置子模块、路由算法子模块以及路由维护子模块构成,在Linux操作系统中实现时,首先通用参数配置子模块进行协议的模块加载与参数配置,然后分支为路由算法进程与路由维护进程持续运行,其中路由算法进程中又存在三个并行的任务,包括报文接收部分、表驱机制部分以及MPR算法部分,路由维护进程中又存在邻节点维护、路由表动态更新两个并行的任务。
优选的,所述通用参数配置子模块具有接收待实现路由协议特性参数并将上述参数传递给路由算法子模块和路由维护子模块的功能,其流程包括:
第一步:加载表驱机制;
第二步:加载路由算法子模块表广播的时间间隔、广播的最大跳数;
第三步:加载路由维护模块中路由表过期的时间间隔、邻居表的更新以及维持时间。
优选的,所述路由算法子模块分为发送部分、接收部分、表驱机制部分和MPR算法部分,其中接收部分、表驱机制部分和MPR算法部分三个并行任务单独在三个线程中进行实现,而发送部分则在表驱机制部分得到调用,路由算法子模块设计过程中涉及到的数据表格均采用hash表的数据结构进行存储与操作。
优选的,所述MPR选择算法包括以下步骤:
步骤一:定义中心节点i的MPR集S,且初始化S为M1(i),并将所有节点标记为未选定;
步骤二:对于M1(i)中所有的节点,分别获取它们在M2(i)中所能覆盖的节点个数;
步骤三:在将S中标记为未选定且覆盖数最小的节点退出S的情况下,测试此时在M2(i)中是否存在未被S中任何节点覆盖的二跳节点,如果存在则说明该节点不能退出S,并将该节点标记为已选定,否则将该节点退出S;
步骤四:S中是否存在未选定的节点,存在则继续进行第三步,否则算法结束。
优选的,所述路由维护子模块包括建立用户路由表、路由表动态维护、添加删除核心路由表以及邻节点维护机制四个基本部分,其中路由表动态维护部分动态地维护用户路由表的删除与更新,并通过Linux系统调用函数保证用户路由表与内核路由表的更新一致,邻节点维护部分是用来判断周边节点之间的连接是否存在。
本发明提供的优化链路状态路由协议实现方法解决了以下关键问题:
第一,表存储结构设计
OLSR协议在运行过程存在大量数据表和信息表需要维护,在维护过程中需要频繁地查找、定位数据内容。Hash表是一种特殊的数据结构,它采用函数映射的方法将记录的存储位置与关键字之间建立一个确定的关系,因此可以快速有效地对所需信息进行定位,所以本发明通过采用Hash表的方式对所需的数据表和信息表进行存储,用来解决OLSR协议表存储结构设计过程中需要快速定位查找数据的问题。
第二,事件调度
OLSR路由协议在运行过程中需要多个事件的协同作用才能正常有序地执行路由功能,而事件发生的时间及先后顺序,需要借助事件调度来统一规划和执行。Linux系统提供的SIGALRM信号函数能实现定时器功能;可以通过启动一个基本时间单位定时器,基本时间单位到期后再遍历整个时间管理单元中的自定义定时器,从而可以保证事件按时间顺序依次发生。
第三,MPR选择算法的设计实现
OLSR路由协议运行过程中,越少的MPR节点数量将带来越少的网络分组,而最小MPR集选取问题是一个NP完全问题,为了能快速高效地获取最小MPR集,引入了一种基于贪心算法改进的最小MPR集算法,该算法通过逐步优化MPR集的方法去除冗余,可以简单高效地得到最小MPR集。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的不当限定,在附图中:
图1为本发明实施例系统模块示意图;
图2为本发明实施例OLSR总体设计流程图;
图3为本发明实施例路由算法子模块示意图;
图4为本发明实施例发送部分与接收部分设计流程图;
图5为本发明实施例多定时器设计流程;
图6为本发明实施例路由维护子模块示意图。
具体实施方式
下面将结合附图以及具体实施例来详细说明本发明,在此本发明的示意性实施例以及说明用来解释本发明,但并不作为对本发明的限定。
OLSR协议的设计采用模块化设计方案实现,在Linux用户层依据模块化实现表驱式路由协议的方案进行设计,其设计方案如图1所示:OLSR协议采用表驱式路由协议模块化设计方案,整个方案包括通用参数配置接口子模块、路由算法子模块以及路由维护子模块构成。各子模块的设计方法均遵循表驱式路由协议的设计方法,其中路由算法子模块在方案中根据表驱式路由协议进行定制,又可分为表驱路由机制部分、发送模块、接收模块以及根据路由算法所构建的特性MPR模块。在路由协议功能实现过程中,路由算法模块通过算法寻找并建立到达目的节点的路由链路,由路由维护模块路由表的更新一致。各个模块分工合作,维护整个路由协议的有序运行。
图2是OLSR总体设计流程图,如图所示,在Linux操作系统中采用基于模块化设计方法实现OLSR路由协议的具体流程为:首先通用参数配置子模块进行协议的模块加载与参数配置,然后程序将分支为路由算法进程R与路由维护进程L持续运行。其中在进程R中又存在三个并行的任务,包括报文接收部分、表驱机制部分以及MPR算法部分;进程L中又存在邻节点维护、路由表动态更新两个并行的任务,在本设计方案中分别通过多线程的方式对多个并行任务进行设计。
通用参数配置子模块具有接收待实现路由协议特性参数并将上述参数传递给路由算法子模块和路由维护子模块的功能。在OLSR协议设计实现过程中其设计流程为:
第一步:加载表驱机制;
第二步:加载路由算法子模块表广播的时间间隔、广播的最大跳数等;
第三步:加载路由维护模块中路由表过期的时间间隔、邻居表的更新以及维持时间等。
如图3所示,OLSR协议路由算法子模块的设计分为发送部分、接收部分、表驱机制部分和MPR算法部分,在程序设计流程中又将接收部分、表驱机制部分和MPR算法部分三个并行任务单独在三个线程中进行实现,而发送部分则在表驱机制部分得到调用。路由算法子模块设计过程中还涉及到MPR节点表、一跳邻居表、二跳邻居表与路由表等多种数据表格的存储与操作,其存储结构设计均采用hash表的数据结构进行存储与操作。下面分别介绍发送部分、接收部分、表驱机制部分和MPR算法部分的设计流程。
发送部分与接收部分均采用Linux操作系统提供的API函数接口以UDP的方式进行数据报文的发送与接收,其中发送部分采用UDP广播的形式进行发送,接收部分则接收广播端口所有报文,其设计流程如图4所示。
表驱机制部分通过定时器的方式定时广播发送数据表,因此主要是多个定时器的设计,在Linux操作系统中可采用Settimer()函数来启动一个基本时间单位定时器,基本时间单位到期后再遍历整个时间管理单元中的自定义定时器是否到达定时时间,其设计流程如图5所示。
MPR选择算法部分主要是选取MPR节点并根据接收的MPR节点信息更新拓扑表和路由表,网络中每个节点独立地计算自己的MPR集,MPR集的选定应满足下列条件:首先,节点i的MPR集元素取自于i的一跳节点集;其次选定的一跳节点能覆盖i的全部二跳节点。因此可将最小MPR集选择问题转变为如下数学模型的表达形式:定义节点i的MPR集为集合S,其一跳邻居节点的集合为M1(i),二跳邻居节点的集合为M2(i),据MPR集的选定的必要条件:
及
因此整个问题就转变为在符合上述条件的基础上尽可能使MPR集成员的个数最小,即最小化|S|.
在网络中如果节点i的一跳邻居节点为j,则定义节点i覆盖节点j;定义节点i在某个集合中的一跳邻居节点数为节点i在某个集合中的覆盖数。因此MPR选择算法具体可描述如下:
步骤一:定义中心节点i的MPR集S,且初始化S为M1(i),并将所有节点标记为未选定;
步骤二:对于M1(i)中所有的节点,分别获取它们在M2(i)中所能覆盖的节点个数;
步骤三:在将S中标记为未选定且覆盖数最小的节点退出S的情况下,测试此时在M2(i)中是否存在未被S中任何节点覆盖的二跳节点,如果存在则说明该节点不能退出S,并将该节点标记为已选定,否则将该节点退出S。
步骤四:S中是否存在未选定的节点,存在则继续进行第三步,否则算法结束。
MPR算法子模块通过MPR选择算法选取MPR节点,网路中的MPR节点周期性的转发TC分组维护网络拓扑信息,而TC分组仅仅包含将本节点选为MPR节点的邻居节点,因此可以有效地减少洪泛。节点通过广播TC消息获得整个网络的拓扑结构,再根据邻居表、两跳邻居表和拓扑表,独立地按照Dijkstra算法计算出路由表。
路由维护模块的设计目的是维护路由算法子模块形成的路由表,本文设计的路由维护子模块具有建立用户路由表、路由表动态维护、添加删除核心路由表以及邻节点维护机制四个基本部分。
如图6所示,在路由维护子模块中,路由表动态维护部分动态地维护用户路由表的删除与更新,并通过Linux系统调用函数保证用户路由表与内核路由表的更新一致。邻节点维护部分是用来判断周边节点之间的连接是否存在,本文设计的路由协议采用Hello消息机制的方式来维护邻节点之间的连接,Hello消息实际上是跳数为1的更新广播包,当邻居节点断开连接时,通知路由表动态维护部分对相应表项进行更新。
以上对本发明实施例所提供的技术方案进行了详细介绍,本文中应用了具体个例对本发明实施例的原理以及实施方式进行了阐述,以上实施例的说明只适用于帮助理解本发明实施例的原理;同时,对于本领域的一般技术人员,依据本发明实施例,在具体实施方式以及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (5)
1.一种优化链路状态路由协议实现方法,其特征在于包括以下步骤:
采用模块化设计方案,整个方案由通用参数配置子模块、路由算法子模块以及路由维护子模块构成,在Linux操作系统中实现时,首先通用参数配置子模块进行协议的模块加载与参数配置,然后分支为路由算法进程与路由维护进程持续运行,其中路由算法进程中又存在三个并行的任务,包括报文接收部分、表驱机制部分以及MPR算法部分,路由维护进程中又存在邻节点维护、路由表动态更新两个并行的任务。
2.如权利要求1所述的优化链路状态路由协议实现方法,其特征在于:
所述通用参数配置子模块具有接收待实现路由协议特性参数并将上述参数传递给路由算法子模块和路由维护子模块的功能,其流程包括:
第一步:加载表驱机制;
第二步:加载路由算法子模块表广播的时间间隔、广播的最大跳数;
第三步:加载路由维护模块中路由表过期的时间间隔、邻居表的更新以及维持时间。
3.如权利要求1所述的优化链路状态路由协议实现方法,其特征在于:
所述路由算法子模块分为发送部分、接收部分、表驱机制部分和MPR算法部分,其中接收部分、表驱机制部分和MPR算法部分三个并行任务单独在三个线程中进行实现,而发送部分则在表驱机制部分得到调用,路由算法子模块设计过程中涉及到的数据表格均采用hash表的数据结构进行存储与操作。
4.如权利要求3所述的优化链路状态路由协议实现方法,其特征在于:
所述MPR选择算法包括以下步骤:
步骤一:定义中心节点i的MPR集S,且初始化S为M1(i),并将所有节点标记为未选定;
步骤二:对于M1(i)中所有的节点,分别获取它们在M2(i)中所能覆盖的节点个数;
步骤三:在将S中标记为未选定且覆盖数最小的节点退出S的情况下,测试此时在M2(i)中是否存在未被S中任何节点覆盖的二跳节点,如果存在则说明该节点不能退出S,并将该节点标记为已选定,否则将该节点退出S;
步骤四:S中是否存在未选定的节点,存在则继续进行第三步,否则算法结束。
5.如权利要求1所述的优化链路状态路由协议实现方法,其特征在于:
所述路由维护子模块包括建立用户路由表、路由表动态维护、添加删除核心路由表以及邻节点维护机制四个基本部分,其中路由表动态维护部分动态地维护用户路由表的删除与更新,并通过Linux系统调用函数保证用户路由表与内核路由表的更新一致,邻节点维护部分是用来判断周边节点之间的连接是否存在。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510174828.3A CN104836733A (zh) | 2015-04-14 | 2015-04-14 | 优化链路状态路由协议实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510174828.3A CN104836733A (zh) | 2015-04-14 | 2015-04-14 | 优化链路状态路由协议实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104836733A true CN104836733A (zh) | 2015-08-12 |
Family
ID=53814378
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510174828.3A Pending CN104836733A (zh) | 2015-04-14 | 2015-04-14 | 优化链路状态路由协议实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104836733A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108337166A (zh) * | 2018-02-06 | 2018-07-27 | 吕娜 | 一种面向航空集群网络的低时延高可靠路由协议 |
CN108737276A (zh) * | 2018-06-19 | 2018-11-02 | 中国科学技术大学 | 一种构建路由表数据结构并实现路由转发的方法 |
CN111404818A (zh) * | 2020-03-12 | 2020-07-10 | 深圳市风云实业有限公司 | 一种面向通用多核网络处理器的路由协议优化方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120269088A1 (en) * | 2006-07-04 | 2012-10-25 | Hitachi, Ltd. | Method for building ad hoc network |
CN103929789A (zh) * | 2014-04-11 | 2014-07-16 | 北京理工大学 | 基于主动路由算法的manet网络主控节点的自动选择方法 |
CN104125618A (zh) * | 2014-07-14 | 2014-10-29 | 中国人民解放军国防科学技术大学 | 基于模块化设计的Ad Hoc网络路由协议实现方法 |
-
2015
- 2015-04-14 CN CN201510174828.3A patent/CN104836733A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120269088A1 (en) * | 2006-07-04 | 2012-10-25 | Hitachi, Ltd. | Method for building ad hoc network |
CN103929789A (zh) * | 2014-04-11 | 2014-07-16 | 北京理工大学 | 基于主动路由算法的manet网络主控节点的自动选择方法 |
CN104125618A (zh) * | 2014-07-14 | 2014-10-29 | 中国人民解放军国防科学技术大学 | 基于模块化设计的Ad Hoc网络路由协议实现方法 |
Non-Patent Citations (1)
Title |
---|
刘杰等: ""基于OLSR协议的最小MPR集选择算法"", 《计算机应用》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108337166A (zh) * | 2018-02-06 | 2018-07-27 | 吕娜 | 一种面向航空集群网络的低时延高可靠路由协议 |
CN108337166B (zh) * | 2018-02-06 | 2020-11-03 | 吕娜 | 一种面向航空集群网络的低时延高可靠路由方法 |
CN108737276A (zh) * | 2018-06-19 | 2018-11-02 | 中国科学技术大学 | 一种构建路由表数据结构并实现路由转发的方法 |
CN108737276B (zh) * | 2018-06-19 | 2020-08-25 | 中国科学技术大学 | 一种构建路由表数据结构并实现路由转发的方法 |
CN111404818A (zh) * | 2020-03-12 | 2020-07-10 | 深圳市风云实业有限公司 | 一种面向通用多核网络处理器的路由协议优化方法 |
CN111404818B (zh) * | 2020-03-12 | 2022-04-15 | 深圳市风云实业有限公司 | 一种面向通用多核网络处理器的路由协议优化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5430481B2 (ja) | ゲートウエイおよび端末 | |
Florens et al. | Lower bounds on data collection time in sensory networks | |
CA2134018C (en) | Highly dynamic destination-sequenced destination vector routing for mobile computers | |
CN105794284B (zh) | 使节点同步至数据宿的方法以及用于形成无线网络的节点 | |
US9246794B2 (en) | Label distribution and route installation in a loop-free routing topology using routing arcs | |
CN102624621A (zh) | 异构网络自适应数据通信方法及传感器网络多协议网关 | |
CN103210617A (zh) | 减少网络中的消息和计算开销 | |
Mohanty et al. | Distributed construction of minimum connected dominating set in wireless sensor network using two-hop information | |
Förster et al. | Froms: A failure tolerant and mobility enabled multicast routing paradigm with reinforcement learning for WSNs | |
CN101483610B (zh) | 链路状态路由协议的路由更新方法 | |
KR20090030320A (ko) | 고장 방지 능력을 위해 다중 경로를 실행하기 위한 방법 및모바일 에드-호크 네트워크 | |
Wu et al. | Energy‐conserving data gathering by mobile mules in a spatially separated wireless sensor network | |
CN104301912A (zh) | 一种路径通断的检测方法和装置 | |
CN104836733A (zh) | 优化链路状态路由协议实现方法 | |
Takahashi et al. | Energy-efficient data preservation in intermittently connected sensor networks | |
Saranya et al. | Routing techniques in sensor network–a survey | |
CN101662374B (zh) | 一种移动自组网的广播方法 | |
CN109120536B (zh) | 一种面向确定链路状态变化的空间网络路由与转发方法 | |
Alnajjar et al. | Performance analysis of routing protocols in delay/disruption tolerant mobile ad hoc networks | |
JP5679768B2 (ja) | 経路制御方法、通信システム、無線端末およびゲートウェイ端末 | |
Lu et al. | D2F: a routing protocol for distributed data fusion in wireless sensor networks | |
CN110971524B (zh) | 一种无线传感器网络集中式路由方法 | |
CN104104605A (zh) | 下行路由获取及维护方法和装置 | |
Acharya et al. | Energy-aware virtual backbone tree for efficient routing in wireless sensor networks | |
Liu et al. | A framework for dynamic updating of service pack in the internet of things |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150812 |
|
RJ01 | Rejection of invention patent application after publication |