1.本发明涉及无线通信技术领域,尤其是涉及一种基于虚拟骨干网的分簇最优链路状态路由方法。
背景技术:2.申请号为202210303763.8的中国发明专利申请文件中,提出了一种基于管理消息合并的分簇olsr路由方法 ,该路由方法实质是一种新的路由协议,其主要内容包括:在网络中建立分簇结构,节点通过最大连接度分簇算法在两跳范围内选举簇首,并由簇首建立两跳范围的分簇;设计分簇周期维护机制和分簇合并机制,通过簇首和成员节点周期性的信息交互,以及分簇合并机制,在动态网络中保持网络分簇结构的稳定性;设计olsr的路由消息管理机制,簇首节点收集成员节点的路由消息,成员的路由消息将被簇首合并后再进行洪泛,通过减少路由消息的头部冗余降低路由开销,并且簇首根据每个成员的路由消息监测其拓扑的变化情况,通过降低具有稳定拓扑的成员路由消息的洪泛频率来降低不必要的路由开销。
3.在该路由协议的基础上需要进一步开发新的路由机制,以优化消息洪泛时的转发次数降低olsr协议的路由开销。
技术实现要素:4.为克服上述现有技术的不足,本发明提供一种基于虚拟骨干网的分簇最优链路状态路由方法,采用虚拟骨干网代替mpr机制进行路由消息的洪泛,通过优化路由消息洪泛时的转发次数降低了olsr协议的路由开销。
5.为了实现上述目的,本发明是通过如下的技术方案来实现:一种基于虚拟骨干网的分簇最优链路状态路由方法,包括:在基于申请号为202210303763.8的中国发明专利申请文件中,提出的一种基于管理消息合并的分簇olsr路由方法所构造的分簇结构上,建立虚拟骨干网和维护虚拟骨干网;在虚拟骨干网的建立过程中,簇首节点首先计算能够支配簇内所有节点的mcds,每个簇首选择最少数量的网关节点加入到其分簇的mcds,然后建立构成可达所有邻簇的cds,网络中所有分簇的cds构成了网络的骨干网;此外,每个分簇还需要在邻簇中选择中继节点,通过中继节点转发来自本分簇的路由消息;基于虚拟骨干网的建立和中继节点的选择,设置路由消息洪泛的转发规则;在虚拟骨干网维护阶段,利用簇首周期地维护虚拟骨干网,并发送消息通知其成员节点更新自身的骨干网状态;网关节点周期性地向簇首递交其发现的邻簇节点,使簇首能够获取到最新的邻簇信息。
6.上述技术方案可以看出,本发明具有如下有益效果:1. 本发明提供了一种基于虚拟骨干网的分簇最优链路状态路由方法,采用虚拟骨干网代替mpr机制进行路由消息的洪泛,通过优化路由消息洪泛时的转发次数降低了
olsr协议的路由开销。
7.2. 本发明提供了一种基于虚拟骨干网的分簇最优链路状态路由方法,通过维护虚拟骨干网保证本发明所述一种基于虚拟骨干网的分簇最优链路状态路由方法在动态网络中的稳定性。
附图说明
8.图1为本发明所述的一种基于虚拟骨干网的分簇最优链路状态路由方法的网关支配点的计算算法流程图;图2为本发明所述的一种基于虚拟骨干网的分簇最优链路状态路由方法中影响路由消息全局洪泛的孤立节点示例图;图3为本发明所述的一种基于虚拟骨干网的分簇最优链路状态路由方法的骨干网以及路由消息洪泛机制示例图。
具体实施方式
9.下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
实施例
10.本实施例所述的一种基于虚拟骨干网的分簇最优链路状态路由方法内容为:在基于申请号为202210303763.8的中国发明专利申请文件中提出的一种基于管理消息合并的分簇olsr路由方法所构造的分簇结构上,建立虚拟骨干网和维护虚拟骨干网。主要分为两个部分:虚拟骨干网建立和虚拟骨干网维护。
11.虚拟骨干网的建立可以分为四个部分:簇内mcds的建立、簇内cds的建立、中继节点选择,以及孤立节点处理。
12.为描述骨干网中的节点,本实施例中,我们定义了三种不同的骨干网状态,包括mpr dominator(mpr支配点,用于标识簇内最小连通支配集中的节点)、gateway dominator(网关支配点,用于标识簇内连通支配集中的网关节点)、relay point(中继节点,用于标识网关支配点在邻簇内选择的中继节点),以及unset(未分配入骨干网)。所有节点的初始骨干网状态均为unset。需要说明的是,一个节点可以同时即是mpr支配点,又是网关支配点。
13.(1)簇内mcds的建立首先,我们介绍簇内mcds的建立过程。在分簇完成后,簇首节点利用其已知的信息计算能够覆盖簇内所有节点的mcds。簇首通过hello消息的交互能够获得所有成员节点的信息。因此,簇首仅需在两跳范围内的邻居拓扑信息中剥离出本分簇的拓扑视图,便能够通过mpr集合的选择算法计算出覆盖分簇内所有成员节点的mpr节点,称其为mpr支配点。所有mpr支配点和簇首构成了覆盖分簇中所有节点的mcds。其中,mpr集合的选择算法与olsr标准协议文件rfc.3626一致。完成mpr支配点的计算后,簇首将发送backbone消息,向所有成员节点通知其计算出的mpr支配点集合。我们给出建立簇内mcds的步骤如下:1)簇首根据hello消息交互的内容,获取到所有成员节点的地址及其拓扑信息,剥
离出自身分簇的拓扑视图。
14.2)根据分簇的拓扑,簇首利用mpr集合选择算法计算覆盖所有成员节点的mpr节点,并将其标记为mpr支配点。
15.3)簇首节点将自身地址和这些mpr支配点的地址记录在mpr支配点集合(mpr dominator set)中,并通过发送backbone消息将本分簇的mpr支配点的信息告知所有成员节点。
16.4)成员节点接收到其簇首发送的backbone消息后,将该消息包含的mpr节点地址以及簇首地址记录在mpr支配点集合中。若backbone消息中记录的mpr支配点集合包含该成员节点的地址,则该成员节点将自身的骨干网状态标记为mpr dominator。
17.在建立簇内mcds后,tc消息和ctc消息可以通过mpr支配点到达本簇的所有节点。然而,为了使洪泛的路由消息可以到达网络中的全部节点,我们需要将不同分簇的mcds连通。
18.(2)簇内cds的建立我们为每个分簇的mcds添加网关节点,使之可以连接所有邻簇。我们称这些新加入的网关节点为网关支配点,簇首选择网关支配点的过程如下:本簇的所有网关节点均向簇首发送gateway消息,其内容包括该网关节点自身的地址,以及其发现的所有相邻分簇的簇首地址;簇首根据所有网关节点汇总的邻簇信息,选择最少数量的网关节点作为网关支配点(gateway dominator),并将其加入到簇内mcds,构成覆盖所有邻簇的簇内cds。
19.簇内cds的建立过程如下:1)所有网关节点均向自己的簇首发送gateway消息,其内容包括自身地址以及其发现的所有邻簇的簇首地址。
20.2) 簇首收到gateway消息后,将其包含的邻簇簇首地址和网关节点地址记录在网关集合(gateway set)中,该集合的元素为邻簇的簇首地址及所有与该邻簇相邻的网关节点地址构成的向量。
21.3)簇首计算网关支配节点。首先,若簇首与邻簇节点相邻,则将其自身选择为网关支配点,并在网关集合中删除其发现的所有邻簇簇首地址的相关条目;若经过上述步骤后网关集合不为空,则簇首每轮从mpr支配点集合中,选择一个连接了最多邻簇的mpr支配点,将其选为网关支配点,并在网关集合中删除与其相邻的所有邻簇相关的条目,直到网关集合为空;若遍历所有mpr支配点后网关集合仍不为空,则簇首每轮从网关节点中选择一个连接了最多邻簇的网关节点,将其标记为网关支配点,并在网关集合中删除与其相邻的所有邻簇相关的条目,直到网关集合为空。该算法步骤如图1所示。
22.4)簇首在完成网关支配点计算后,将所有网关支配点记录在网关支配点集合中,并将网关支配点集合加入backbone消息后发送给所有成员节点。
23.5)所有成员节点在收到簇首发送的backbone消息后,记录网关支配点集合。若backbone消息中记录的网关支配点集合包含有该成员节点的地址,则该成员节点将自身的骨干网状态标记为gateway dominator。
24.完成网关支配点的选择后,我们将每个分簇的簇内mcds拓展为簇内cds。每个分簇的簇内cds均与所有邻簇建立了连接,所有分簇的簇内cds构成了网络的虚拟骨干网。
25.(3)中继节点选择
构造完虚拟骨干网后,为了确保每条用于洪泛的路由消息都可以在虚拟骨干网中传播并到达网络中所有节点,我们需要选择合适的中继节点使虚拟骨干网在不同分簇内的部分相互连通。
26.当节点获知自己是网关支配点后,它需要在其连接的每个邻簇中选择一个连接度最大的邻居节点来转发该网关支配点发送或转发的tc或ctc消息,被网关支配点选择的邻簇邻居节点称为该网关支配点的中继节点(relay point)。由于邻簇中的每个成员节点必为其簇内cds中的节点或与其簇内cds中的节点相邻,因此网关支配点产生或转发的路由消息,能够通过其选择的中继节点到达每个邻簇中的所有节点。网关支配点通过发送relay_points消息通知邻簇邻居成为其中继节点,中继节点将选择它的网关支配点称为中继点选择者(relay point selector)。
27.网关支配点可能与邻簇的簇内cds直接相连,但是由于其自身缺乏邻簇的cds信息,无法判断是否与邻簇的cds相连。在上述情况下,被网关支配点选中的中继节点无须转发来自该网关支配点的路由消息。因此,若中继节点发现其中继点选择者与本簇的cds相连,则中继节点不转发来自该网关支配点的路由洪泛消息。
28.(4)孤立节点处理网络中可能存在孤立节点,我们还需针对此类特殊情况进行分析和处理。
29.对于孤立点的处理,我们进行如下说明。由于孤立节点在hello消息中将其簇首地址字段设置为空,从而使其可以被邻居节点侦测。孤立节点可能被多个分簇所包围,若所有与孤立节点相邻的分簇,均为了与孤立节点连通而新增网关支配点,则会产生较大的冗余。对于每个孤立节点,其仅需要通过周期性发送tc-req消息,向具有最大连接度的邻居询问全局拓扑信息即可,而与其相邻的分簇无需向其转发路由消息。
30.然而,其他节点的路由消息在某些情况下则必须经过孤立节点的转发,否则可能导致该消息无法洪泛至全网。图2给出了上述情况的示例,其中白圈为成员节点,黑圈为簇首,格栅圈为孤立节点;三角形和正方形分别标注mpr支配点和网关支配点,菱形标注网关支配点的中继节点;tc/ctc消息的洪泛必须经过孤立节点j。
31.为解决上述问题,孤立节点在收到来自其他节点的tc或ctc消息后,都须将该消息转发给自己的所有邻居节点。
32.除此之外,数据分组的路由也可能必须经过孤立节点,如图2中两个分簇之间的路由。因此,孤立节点生成的tc消息需要洪泛到全网。为解决该问题,孤立节点需要在与其相邻的每个邻簇中分别选择一个中继节点来转发其生成的tc消息。
33.在建立虚拟骨干网之后,我们给出路由消息的洪泛转发规则:1)网关支配点在与其相邻的每一个邻簇中,均选择一个具有最大连接度的邻居节点作为其在该邻簇的中继节点。在选完所有邻簇的中继节点后,网关节点发送relay_points消息通知这些节点成为其中继节点。
34.2)当节点接收到来自邻簇的relay_points消息后,若该消息包含了自身地址,则将该消息的源节点记录为自己的中继点选择者。
35.3)当中继节点接受到其中继点选择者发送或转发的tc或ctc消息后,则在本簇的mpr支配点集合和网关支配点集合中查找是否有节点与中继点选择者相邻。若发现存在节点与该中继点选择者相邻,则中继节点不转发该tc或ctc消息,否则转发。
36.4)若节点在虚拟骨干网中,即其被簇首选为mpr支配点或网关支配点,则其无条件转发所有接收到的tc或ctc消息。
37.图3给出了本实施例所述的一种基于虚拟骨干网的分簇最优链路状态路由方法建立的虚拟骨干网以及路由消息洪泛规则的示例。其中白圈为成员节点,黑圈为簇首,格栅圈为孤立节点。三角形和正方形分别标注mpr支配点和网关支配点,菱形标注网关支配点的中继节点。加粗箭头代表节点n产生的tc消息的洪泛过程。
38.在虚拟骨干网维护阶段,我们给出了适用于动态网络的虚拟骨干网和路由消息洪泛规则的维护机制。
39.在本实施例所述的一种基于虚拟骨干网的分簇最优链路状态路由方法中,网关节点周期性向自己的簇首汇报邻簇信息,而簇首则周期性地计算mpr支配点和网关支配点,并广播backbone消息通知成员节点确认其骨干网状态。因此,成员节点可以周期地维护自己的骨干网状态和簇内cds的信息,从而在动态网络中维护虚拟骨干网和路由消息洪泛规则。我们将该周期记为骨干网周期(backbone peirod)。
40.在每个骨干网周期,网关节点均向簇首发送gateway消息,以此向簇首提交最新的邻簇信息。簇首为网关集合中的每个条目设置过期时间(e一种基于虚拟骨干网的分簇最优链路状态路由方法piration time),用以删除过期信息。网关集合的维护算法如下:网关集合中每个邻簇簇首地址对应多个网关节点,对于某个邻簇簇首地址的条目,每个网关节点均有各自的过期时间;当簇首收到网关节点的gateway消息后,对于gateway消息中每个邻簇簇首地址,均在网关集合中找到相应条目,并更新该网关节点在每个邻簇簇首条目中的过期时间;当网关集合的某个条目中,有网关节点的过期时间超时,则在条目中删除该网关节点,若某个条目失去了所有网关节点,则删除该条目。
41.通过上述过程,簇首可以获得最新的邻簇信息,因此可以在每个骨干网周期计算最新的簇内cds:在每个骨干网周期,簇首根据最新获得邻簇信息计算mpr支配点集合和网关支配点集合,并在完成计算后发送backbone消息通知所有成员节点;成员节点为自己的骨干网状态设置了过期时间,并在每个骨干网周期检查自己的骨干网状态是否超时,并通过接收backbone消息更新自己骨干网状态的过期时间;此外,每个网关支配点在确认其骨干网状态后需要重新计算中继节点,并发送relay_points消息通知中继节点。
42.需要注意的是,虚拟骨干网的建立和维护均依赖于网络的分簇结构,因此当簇首或成员节点的分簇状态过期时,其立即丧失骨干网状态和中继点状态。
43.簇首节点在虚拟骨干网维护阶段的行为可描述如下:1)在接收到gateway消息后,簇首若在网关集合中更新相关条目的信息,并更新条目的到期时间。在任意时刻,若网关集合中的某个条目过期,簇首则立即删除该条目。
44.2)在每个骨干网周期,簇首根据的网关集合中的邻簇信息重新计算mpr支配点集合和网关支配点集合,并分别发送backbone消息通知所有成员节点。
45.3)若簇首的分簇状态发生变化,则其立即丧失现有的骨干网状态,将骨干网状态重置为unset。
46.成员节点在虚拟骨干网维护阶段的行为可描述如下:1)在每个骨干网周期,作为网关节点的成员将向簇首发送包含最新邻簇信息的gateway消息。
47.2)成员节点在收到来自簇首的backbone消息后,更新自己的骨干网状态。若mpr支配点和网关支配点发现自己在本周期未被选为支配点,则放弃自己的mpr支配点或网关支配点状态,否则更新自己骨干网状态的到期时间。若节点的某种骨干网状态到期未更新,则其立即丧失对应的骨干网状态。
48.3)在每个骨干网周期,网关支配点在与其相邻的每个邻簇内分别选择一个中继节点,并发送relay_points消息通知自己的中继节点。
49.4)当节点收到网关支配点的relay_points消息后,成为该消息源节点的中继节点,并更新其中继节点状态的到期时间。若中继节点超时未收到中继点选择者的relay_points消息,则放弃作为该网关支配点的中继节点。
50.5)若成员节点的分簇状态发生变化,则其立即丧失现有的骨干网和中继点状态,将骨干网状态重置为unset。
51.以上结合具体实施例描述了本发明的技术原理,这些描述只是为了解释本发明的原理,而不能以任何方式解释为对本发明保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明的其它具体实施方式,这些方式都将落入本发明的保护范围之内。