CN104717238B - 移动自组网中基于蚁群算法的分布式服务组合方法 - Google Patents

移动自组网中基于蚁群算法的分布式服务组合方法 Download PDF

Info

Publication number
CN104717238B
CN104717238B CN201310680650.0A CN201310680650A CN104717238B CN 104717238 B CN104717238 B CN 104717238B CN 201310680650 A CN201310680650 A CN 201310680650A CN 104717238 B CN104717238 B CN 104717238B
Authority
CN
China
Prior art keywords
service
node
path
message
request message
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.)
Expired - Fee Related
Application number
CN201310680650.0A
Other languages
English (en)
Other versions
CN104717238A (zh
Inventor
韩松乔
张勇
郝晓玲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai university of finance and economics
Original Assignee
Shanghai university of finance and economics
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai university of finance and economics filed Critical Shanghai university of finance and economics
Priority to CN201310680650.0A priority Critical patent/CN104717238B/zh
Publication of CN104717238A publication Critical patent/CN104717238A/zh
Application granted granted Critical
Publication of CN104717238B publication Critical patent/CN104717238B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Mobile Radio Communication Systems (AREA)

Abstract

本发明涉及一种移动自组网中基于蚁群算法的分布式服务组合方法,该方法包括以下步骤:步骤一,服务组合消息产生;步骤二,服务请求消息处理;步骤三,服务应答消息的产生和传播;步骤四,最优组合服务的选择;步骤五,组合服务调用;发生服务路径断开,还包括采用局部路径修复方法或全局路径修复方法修复路径的步骤。与现有技术相比,本发明通过蚁群算法充分利用网络中历史服务路径信息,有限制地定向发送请求消息,以提高消息发现和组合服务的效率,同时降低网络中控制消息负载。

Description

移动自组网中基于蚁群算法的分布式服务组合方法
技术领域
本发明涉及移动自组织网络技术领域,尤其是涉及一种移动自组网中基于蚁群算法的分布式服务组合方法。
背景技术
移动自组网(Mobile Ad hoc Networks,MANETs)是普适计算、传感器网络和物联网的重要基础性网络,它是由多个移动无线终端组成的一个无中心控制的多跳、临时和自治性网络。由于该无线网络具有自组织能力、容错性、快速部署和适应性特点,它目前广泛应用于灾难救助、环境保护、数据采集、战场、物流、深海和太空探索等领域。移动自组网目前得到学术界和企业界的广泛关注,特别是近十年来对它进行了大量的研究和应用。
虽然通过诸多学者的不懈努力,在MANETs领域已取得了一系列重要成果,但这些研究大量集中在网络的物理层、链路层和网络层,对网络应用层的研究较少。目前MANETs主要用来传输数据,而不是提供服务。传输数据意味着收集分布于网络节点上的原始数据,在某一节点进行数据的集中处理,这种客户/服务器模式易导致网络拥堵、计算集中、容错能力差以及系统不易扩展等问题。我们认为,MANETs中的节点将原始数据在本地加工后的结果、或直接将本地资源作为一种服务提供给用户或其他节点,这更符合该网络的分布性、可扩展性和自组织特性。
在面向服务架构(SOA)的促进下,一些学者开始研究在MANETs网络环境中的服务发现问题,如服务发现结构框架、服务发现模型、服务描述方法以及服务发现协议。由于在MANETs中更多节点仅提供功能单一的服务,而用户需求却往往比较抽象和复杂,所以很多情况下发现的单个服务却无法满足用户比较复杂的需求。在实际应用中,服务组合在MANETs中会频繁发生,其作用更为重要。于是,最近5年在Ad hoc网络环境下的服务组合研究相继展开,如适合于服务组合的系统框架、用于服务发现和组合的网络协议、考虑服务质量(QoS)的服务组合、基于语法和语义描述的服务组合方法。尽管这些研究取得了一定的成果,但它们与实际应用还存在较大差距。造成这一问题的根本原因是这些研究将适用于网络固定、资源丰富和环境稳定网络条件下的Web服务组合思想和方法,直接移植到资源相对贫乏、不断动态变化的无线Ad hoc网络中。其主要问题具体体现在以下方面:
1)目前MANETs中的服务组合方法实际上都是分布式服务发现与集中式服务组合的结合,所谓考虑服务组合中的QoS实际上只考虑了各单个服务(子服务)的QoS,并未考虑连接这些子服务的网络链路的QoS,而网络链路的QoS在MANETs中占据重要地位,所以组合成的组合服务的QoS无法保证满足用户QoS需求。现有的分布式服务组合协议采用分布式发现服务后集中式组合服务的方式,未考虑网络链路的QoS,难以确保组合服务满足用户QoS需求。
2)在MANETs中进行服务组合的控制消息若没有进行有效控制,极易发生网络广播风暴(broadcast storm),严重浪费网络资源,甚至可能导致网络瘫痪。在上述研究中都未系统考虑节点和网络的资源节约问题。
上述所存在的问题,严重制约了服务组合在MANETs环境中的研究和应用。基于互联网的集中式服务组合方法无法直接应用于MANETs网络,必须建立适应MANETs环境的新型分布式服务组合方法。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种可提高消息发现的组合服务效率、降低网络中控制消息负载的移动自组网中基于蚁群算法的分布式服务组合方法。
本发明的目的可以通过以下技术方案来实现:
一种移动自组网中基于蚁群算法的分布式服务组合方法,该方法包括以下步骤:
步骤一,服务组合消息产生,客户节点根据用户需求产生基于语义的服务组合请求,并将该请求封装于服务请求消息中,形成依次发现和组合网络子服务的请求蚁,并向邻居节点传播;
步骤二,服务请求消息处理,某一邻居节点接收到服务请求消息,即请求蚁,解析该请求蚁,将该请求蚁的下一子服务信息与本节点服务注册中心的声明服务进行匹配,找到所有满足要求的子服务,并更新该请求蚁的状态信息,依据本节点的服务激素表选择下一个邻居节点转发或抛弃请求蚁;
步骤三,服务应答消息的产生和传播,当请求蚁发现最后一个子服务后,当前节点产生一个服务应答消息,该服务应答消息作为应答蚁以单播方式沿服务路径的反向路径返回源节点,形成一个服务组合方案,并更新其路径上各节点的服务激素表和服务路径表;
步骤四,最优组合服务的选择,当源节点接收到多个应答蚁后,从所有备选的服务组合方案中选择出最节约资源的组合服务作为最优服务组合方案;
步骤五,组合服务调用,源节点发送服务调用消息使用发现的组合服务。
所述的服务请求消息的头部结构表示为:
(fantID,sourceNode,preServiceNode,nextFunction,sumDelay,sumCost,maxDelay,functionGraph,passedServicePath,ttl)
其中,fantID表示服务请求消息的ID标识;sourceNode是产生该消息的源节点;preServiceNode表示当前消息所经由的最后一个服务节点;nextFunction表示需要发现的下一个子服务;sumDelay表示所经历的路径的时间延迟值;sumCost表示所经历的路径的费用值;maxDelay表示组合服务的最大允许时间延迟,maxDelay=Dreq;functionGraph表示功能图;passedServicePath表示该消息所经由的服务路径ptr;ttl为消息的生存时间值。
所述的服务激素表的行表示服务,列表示邻居节点,其中表项为某一节点找到某一服务的激素值,该激素值由时间延迟激素值和费用激素值共同表示。
所述的步骤二中,转发请求蚁时,从该节点到其邻居节点j链路的转发概率由下式计算得到:
其中,为从节点i到服务s的所有邻居节点的集合,γ是控制FANT传播行为的参数,α为延迟激素与费用激素间的权重关系,分别对应路径的延迟和费用的激素值。
所述的步骤二中,服务请求消息处理的具体过程为:
(201)当节点u接收到一个服务请求消息fant后,先判断本节点的服务表serviceList中是否存在能够完成所需功能nextFunction的服务,若是,则更新fant中的preServiceNode、nextFunction、sumDelay和sumCost项,若否,则更新fant中的sumDelay和sumCost项;
(202)将当前节点u加入到路径表passedPath中,并将fant中的ttl减1;
(203)如果节点u转发与fant相同的服务请求消息次数大于最大转发次数Ω、或fant的ttl小于或等于0、或fant的sumDelay大于maxDelay,由该fant被抛弃;
(204)节点u将接收到的fant与本节点的已途经请求消息表fantTable进行比较,判断fantTable中是否在与该fant相同的消息,若是,则执行步骤205),若否,则将该fan加入到节点的fantTablet中并转发给邻居节点;
(205)判断该fant经过的服务节点数是否多于在fantTable中任何一个与fant相同的消息经过的服务节点数,若是,则将该fan加入到节点的fantTablet中并转发给邻居节点,若否,则抛弃该fant;
(206)若fant经过的服务节点数多于fantTable中的某一相同消息,则用fant替换该消息。
所述的服务应答消息的头部结构为:
(bantID,fantID,sourceNode,sumDelay,sumCost,passedServicePath)
bantID为服务应答消息的ID标识;fantID为原服务请求消息的ID标识;sourceNode为原服务请求消息的源节点;sumDelay和sumCost分别为发现的服务路径的延迟时间和费用;passedServicePath为原服务请求消息发现的服务路径。
所述的步骤三中,更新服务激素表具体为:
当服务应答消息到达节点i,记录从节点i到服务s在被发现的服务路径上的时间延迟和费用则节点i的服务激素表中时间延迟激素值和费用激素值分别由下式计算得到:
式中,分别为服务激素表中的时间延迟更新值和费用更新值,其中,是从节点i到服务s的所有服务请求消息的时间延迟和费用的均值,η为权重;
更新服务路径表具体为:
服务路径对应的实际服务集合为中的每个服务sk,节点Ni首先查询服务路由表中是否存在与它相同的服务,若存在,那些相同的服务组成一个集合Ssk,依次判断sk对Ni的平均时间延迟和平均费用是否小于Ssk中每个服务对Ni的平均时间延迟和平均费用,若是,则sk替换服务路由表中该服务,若否,则服务路由表不做更新。
所述的步骤五中,服务调用消息的头部结构为:
(fantID,servicePath)
其中,fantID表示服务请求消息的ID标识,servicePath为该组合服务的服务路径。
该方法还包括:
根据服务调用消息使用组合服务时,若发生服务路径断开,则采用局部路径修复方法或全局路径修复方法修复路径。
所述的局部路径修复方法具体为:
(1)源节点发现了一个服务路径上划线表示了该节点为服务节点,其余节点为中转节点,源节点发出服务调用消息SI,沿服务路径依次调用各服务,当SI到达节点i时,发现从i到它的后继节点j的链路已断开,于是节点i将SI保存在一个本地服务调用缓存区中;
(2)从消息SI的servicePath中,节点i构造一个目标节点表objNodes,它包含从失败节点j到路径的下一个服务节点m的所有节点,即
(3)节点i生成一个服务路径维修请求消息,并将其广播给邻居节点;该服务路径维修请求消息的头部结构为:
(rrantID,repSource,function,objNodes,sumDelay,sumCost,passedPath)
其中,rrantID为该服务路径维修请求消息的标识符;repSource为服务路径维修请求消息的源节点;function为需要发现的功能,若失败节点为服务节点,function是该失败节点提供的功能,若失败节点为中转节点,则function=-1;objNodes为上述目标节点表;sumDelay和sumCost分别记录所经过路径的累积时间延迟和累积费用;passedPath为该消息所经历的服务路径;
(4)当节点A接到服务路径维修请求消息,判断该服务路径维修请求消息的function项是否为-1,若是,则执行步骤(5),若否,则执行步骤(6);
(5)判断是否成立,若是,则节点A更新服务路径维修请求消息中的sumDelay、sumCost和passedPath项,并将更新后的服务路径维修请求消息重新转发;若否,则节点A更新服务路径维修请求消息中的sumDelay、sumCost和passedPath项后,将其沿着原服务路径单播至下一个服务节点,执行步骤(9);
(6)每个接收到服务路径维修请求消息的节点首先查找该消息的passedPath中是否包含完成f的服务,f为失败节点提供服务的功能,若是,则执行步骤(5),若否,则依次查找该节点对应的服务表和服务路径表是否包含完成f的服务,若是,则执行步骤(7),若否,则执行步骤(8);
(7)若发现本地服务能够完成f,则执行步骤(5),若发现远端服务能够完成f,则将服务路径维修请求消息单播至远端服务,然后执行步骤(5);
(8)接收到服务路径维修请求消息的节点将该消息进行广播,直到找到能够完成f的服务为止,然后执行步骤(5);
(9)当节点m接收到多个服务路径维修请求消息后,从其中找出最小延迟时间的维修路径p;
(10)节点m产生一个服务路径维修应答消息,并将该消息沿着p的反方向单播至维修源节点i,该服务路径维修应答消息的头部结构为:
(rrbantID,repairSource,passedPath)
(11)节点i接收到多个服务路径维修应答消息后,从中挑选出满足设定QoS且消耗资源最少的路径作为最佳维修路径。
与现有技术相比,本发明具有以下有益效果:
1、本发明采用蚁群优化算法,将服务组合的请求消息在网络节点中传播依次发现满足子任务的节点服务,在所途经的每个节点上进行本地服务发现,同时在节点本地将发现的本地服务与已发现的部分复合服务进行组合,实现服务组合阶段的分布式处理;本发明通过蚁群算法充分利用网络中历史服务路径信息,有限制地定向发送请求消息,以提高消息发现和组合服务的效率,同时降低网络中控制消息负载。
2、本发明采用完全分布的服务组合方式,在理论上保证了所发现的组合服务QoS中既包含子服务的QoS又包含网络链路的QoS,这为满足用户的QoS需求提供保障。在降低网络控制消息负载方面,限制控制消息的无节制膨胀,并对服务组合中的控制消息进行定向有序中转,将有效控制这类消息数量从而节约网络带宽资源。
附图说明
图1为本发明分布式服务组合过程示意图;
图2为动态源路由DSR选项头;
图3为服务请求消息FANT消息头结构;
图4为服务应答消息BANT消息头结构;
图5为服务源路由消息SSR消息头结构;
图6为服务调用消息SI消息头结构;
图7为节点上路由层的服务组合的主要处理流程示意图;
图8为本发明局部路径修复的示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
如图1所示,一种移动自组网中基于蚁群算法的分布式服务组合方法,通过蚁群优化算法,将服务组合的请求消息在网络节点中传播依次发现满足子任务的节点服务,在所途经的每个节点上进行本地服务发现,同时在节点本地将发现的本地服务与已发现的部分复合服务进行组合,实现服务组合阶段的分布式处理。蚁群算法的目的是充分利用网络中历史服务路径信息,有限制地定向发送请求消息,以提高消息发现和组合服务的效率,同时降低网络中控制消息负载。
这种完全分布的服务组合方式,在理论上保证了所发现的复合服务QoS中既包含子服务的QoS又包含网络链路的QoS,这为满足用户的QoS需求提供保障。在降低网络控制消息负载方面,限制控制消息的无节制膨胀,并对服务组合中的控制消息进行定向有序中转,将有效控制这类消息数量从而节约网络带宽资源。
蚁群算法模拟一群蚂蚁觅食活动,起初蚂蚁漫无目的地在一定区域内运动来寻找食物,当经过一段时间后,蚂蚁利用路径上留下的激素量判断该路径是否为最佳的觅食路径。本发明借用这种群体智能(Swarm Intelligence)思想,将网络中的服务组合请求消息转化为请求蚂蚁,利用激素表在网络中有序有目的地进行传播,以分布式方式发现和组合网络节点上的服务。
如图1所示,本发明方法主要包括服务组合请求消息的产生、请求消息的传播和处理、应答消息的产生与传播、组合服务的建立与调用等,具体如下。
步骤一,服务组合消息产生
当用户需要一个能够完成功能图(即组合服务包含的所有子功能以及子功能之间的关系)和时间延迟需求Dreq(即组合服务所允许花费的最大时间)的组合服务时,客户节点根据用户需求产生基于语义的服务组合请求,描述所需的所有子服务、子服务间的控制结构和QoS参数,并将该请求封装于服务请求消息FANT(或称为请求蚁)中,形成依次发现和组合网络子服务的请求蚁,并向邻居节点传播。在服务请求消息中记录已遍历的网络路径、已完成组合的上一个子服务所在节点(即服务节点)、以及下一个所需的子服务,以表明请求消息在传播过程中的状态信息。FANT的头部结构表示为:
(fantID,sourceNode,preServiceNode,nextFunction,sumDelay,sumCost,maxDelay,functionGraph,passedServicePath,ttl)
其中,fantID表示FANT的ID标识,包括消息的源节点和序号;sourceNode是产生该消息的源节点;preServiceNode表示当前消息所经由的最后一个服务节点;nextFunction表示需要发现的下一个子服务;sumDelay表示所经历的路径的时间延迟值;sumCost表示所经历的路径的费用值(Cost);maxDelay表示组合服务的最大允许时间延迟,maxDelay=Dreq;functionGraph表示功能图;passedServicePath表示该消息所经由的服务路径ptr,如{<address_1,sID_1>,<address_2,sID_2>,...,<address_n,sID_n>};ttl为消息的生存时间值(Time To Live)。
步骤二,服务请求消息处理
某一邻居节点接收到服务请求消息,即请求蚁,解析该请求蚁,将该请求蚁的下一子服务信息与本节点服务注册中心的声明服务进行匹配,找到所有满足要求的子服务,并更新该请求蚁的状态信息,依据本节点的服务激素表选择下一个邻居节点转发或抛弃请求蚁。
请求蚁需要利用服务激素表确定下一跳节点,服务激素表的行表示服务,列表示邻居节点,其中表项为某一节点找到某一服务的激素值,该激素值由时间延迟激素值和费用激素值共同表示。节点i的服务激素表Ti的一个表项 表示,表征从节点i到邻居节点j找到服务s的好处,这里分别对应路径的延迟和费用的激素值。
以时间延迟(Delay)和费用(Cost)为例说明请求蚁的分类和转发。将请求蚁划分为三类:Delay请求蚁、Cost请求蚁和杂交请求蚁,分别用于寻找最短时间延迟、最小费用和综合考虑二者因素的三类服务组合方案。节点根据每种请求蚁对应的激素值,计算当前各种可选链路对请求蚁的转发概率,据此确定下一跳节点。杂交请求蚁应同时考虑多种激素的共同影响。
当节点i接受到一个FANT消息后,转发请求蚁时,从该节点到其邻居节点j链路的转发概率由下式计算得到:
其中,为从节点i到服务s的所有邻居节点的集合,γ是控制FANT传播行为的参数,α为延迟激素与费用激素间的权重关系,分别对应路径的延迟和费用的激素值。
为进一步减少请求蚁数量,提高服务组合效率,本发明采用以下三种请求蚁过滤机制:1)抛弃不满足路径QoS要求、消耗资源量过大、或标识相同且性能不佳的请求蚁;2)规定一个节点对同一标识请求蚁允许的最大转发次数。这一想法源于我们前期的一个实验发现:较早到达某节点的请求蚁比晚到达的同一个标识请求蚁具有更大潜力。3)设置请求蚁的生存时间TTL。请求蚁每发生一跳,其TTL减去1,若TTL=0,该请求蚁被抛弃。
当一节点接收到一个FANT消息时,它的基本处理过程是:首先检查其serviceList(本节点提供的服务列表)或serviceRouteTable(本节点所知的其他节点提供的服务列表)中是否存在所需要的服务,然后更新该FANT消息内容,并判断它是否值得转发,最后转发该消息或抛弃之。具体处理过程如下:
(201)当节点u接收到一个服务请求消息fant后,先判断本节点的服务表serviceList中是否存在能够完成所需功能nextFunction的服务,若是,则更新fant中的preServiceNode、nextFunction、sumDelay和sumCost项,若否,则更新fant中的sumDelay和sumCost项;
(202)将当前节点u加入到路径表passedPath中,并将fant中的ttl减1;
(203)如果节点u转发与fant相同的服务请求消息次数大于最大转发次数Ω、或fant的ttl小于或等于0、或fant的sumDelay大于maxDelay,由该fant被抛弃;
(204)节点u将接收到的fant与本节点的已途经请求消息表fantTable进行比较,判断fantTable中是否在与该fant相同的消息,若是,则执行步骤205),若否,则将该fan加入到节点的fantTablet中并转发给邻居节点;
(205)判断该fant经过的服务节点数是否多于在fantTable中任何一个与fant相同的消息经过的服务节点数,若是,则将该fan加入到节点的fantTablet中并转发给邻居节点,若否,则抛弃该fant;
(206)若fant经过的服务节点数多于fantTable中的某一相同消息,则用fant替换该消息;
(207)除了fant被抛弃的情况外,其他情均将fant转发给邻居节点。
步骤三,服务应答消息的产生和传播
当请求蚁发现最后一个子服务后,当前节点产生一个服务应答消息,该服务应答消息作为应答蚁以单播方式沿服务路径的反向路径返回源节点,形成一个服务组合方案,并更新其路径上各节点的服务激素表和服务路径表,激素表更新是通过原有激素值与新的激素值共同计算得出。
当FANT消息在某一节点上发现功能图中的最后一个子功能后,该节点根据FANT消息产生一个服务应答消息BANT(或称为应答蚁),该消息的头部结构为:
(bantID,fantID,sourceNode,sumDelay,sumCost,passedServicePath)
bantID为服务应答消息的ID标识;fantID为原FANT消息的ID标识;sourceNode为原FANT消息的源节点;sumDelay和sumCost分别为发现的服务路径的延迟时间和费用;passedServicePath为原FANT消息发现的服务路径。
更新服务激素表具体为:
当服务应答消息到达节点i,记录从节点i到服务s在被发现的服务路径上的时间延迟和费用则节点i的服务激素表中时间延迟激素值和费用激素值分别由下式计算得到:
式中,分别为服务激素表中的时间延迟更新值和费用更新值,其中,是从节点i到服务s的所有服务请求消息的时间延迟和费用的均值,η为权重;
更新服务路径表具体为:
当BANT消息产生后,它的源节点(即FANT的目的节点)以单播方式将其沿路径passedServicePath的反方向返回FANT源节点sourceNode。假设服务路径为{<N1,S1>,<N2,S2>,…,<Nn,Sn>}。当BANT到达节点Ni时,从Ni到Nn的逻辑服务集合为从Ni到Nn的实际服务集合为
中的每个服务sk,节点Ni首先查询服务路由表中是否存在与它相同的服务,若存在,那些相同的服务组成一个集合Ssk,比较sk与Ssk中每个服务对Ni的平均时间延迟和平均费用,依次判断sk对Ni的平均时间延迟和平均费用是否小于Ssk中每个服务对Ni的平均时间延迟和平均费用,若是,则sk比该服务更优,sk替换服务路由表中该服务,若否,则sk不如Ssk中该服务,服务路由表不做更新;其他情况,sk被加入到表中。
步骤四,最优组合服务的选择
当源节点接到第一个BANT消息后,它将等待一段时间以便接收到更多BANT消息,每个BANT中携带一个可用服务路径,即服务组合方案。当源节点接收到多个应答蚁后,从所有备选的服务组合方案中选择出最节约资源的组合服务作为最优服务组合方案。
步骤五,组合服务调用
源节点发送服务调用消息(Service Invocation,SI)使用发现的组合服务。服务调用消息的头部结构为:
(fantID,servicePath)
其中,fantTD表示服务请求消息的ID标识,servicePath为该组合服务的服务路径。
步骤六,复合服务失效修复
在MANETs网络中,由于节点移动、资源耗尽和无线网络的变化,一个正在运行的组合服务可能经常因服务路径的断开而失败。服务路径断开是指在服务路径中的一个节点不能与其后继节点进行正常通信,它的后继节点称为失败节点。根据服务调用消息使用组合服务时,若发生服务路径断开,则采用局部路径修复方法或全局路径修复方法修复路径。
局部路径修复是指在失败节点周围寻找可替代它的节点或服务,以修复路径的断开处。全局路径修复事实上就是一个在整个网络范围内重新发现服务路径的过程。由于全局路径修复比局部路径修复常产生更多控制消息和更长时间,所以只有当后者无法修复受损路径时,前者才会被使用。
其中,如图8所示,局部路径修复方法具体为:
(1)源节点发现了一个服务路径上划线表示了该节点为服务节点,其余节点为中转节点,源节点发出服务调用消息SI,沿服务路径依次调用各服务,当SI到达节点i时,发现从i到它的后继节点j的链路已断开,于是节点i将SI保存在一个本地服务调用缓存区中;
(2)从消息SI的servicePath中,节点i构造一个目标节点表objNodes,它包含从失败节点j到路径的下一个服务节点m的所有节点,即
(3)节点i生成一个服务路径维修请求消息(Repair Request ANT,RRANT),并将其广播给邻居节点;该服务路径维修请求消息的头部结构为:
(rrantID,repSource,function,objNodes,sumDelay,sumCost,passedPath)
其中,rrantID为该服务路径维修请求消息的标识符;repSource为服务路径维修请求消息的源节点;function为需要发现的功能,若失败节点为服务节点,function是该失败节点提供的功能,若失败节点为中转节点,则function=-1;objNodes为上述目标节点表;sumDelay和sumCost分别记录所经过路径的累积时间延迟和累积费用;passedPath为该消息所经历的服务路径;
(4)当节点A接到服务路径维修请求消息,判断该服务路径维修请求消息的function项是否为-1,若是,则执行步骤(5),若否,则执行步骤(6);
(5)判断是否成立,若是,则节点A更新服务路径维修请求消息中的sumDelay、sumCost和passedPath项,并将更新后的服务路径维修请求消息重新转发;若否,则节点A更新服务路径维修请求消息中的sumDelay、sumCost和passedPath项后,将其沿着原服务路径单播至下一个服务节点,如图8中所示,A为节点k,则服务路径维修请求消息将沿路径k→l→m最后抵达m,然后执行步骤(9);
RRANT发现的从源节点到失败节点的下一个服务节点的路径称为维修路径(repair path),记作pr,如图8所示的维修路径
(6)每个接收到服务路径维修请求消息的节点首先查找该消息的passedPath中是否包含完成f的服务,f为失败节点提供服务的功能,若是,则执行步骤(5),若否,则依次查找该节点对应的服务表和服务路径表是否包含完成f的服务,若是,则执行步骤(7),若否,则执行步骤(8);
(7)若发现本地服务能够完成f,则执行步骤(5),若发现远端服务能够完成f,则将服务路径维修请求消息单播至远端服务,然后执行步骤(5);
(8)接收到服务路径维修请求消息的节点将该消息进行广播,直到找到能够完成f的服务为止,然后执行步骤(5);
(9)当节点m接收到多个服务路径维修请求消息后,从其中找出最小延迟时间的维修路径p;
(10)节点m产生一个服务路径维修应答消息,并将该消息沿着p的反方向单播至维修源节点i,该服务路径维修应答消息(Repair Request Back ANT,RRBANT)的头部结构为:
(rrbantID,repairSource,passedPath)
消息中各项的含义与RRANT相同,且其数值直接取之于相应的RRANT消息
(11)节点i接收到多个服务路径维修应答消息后,从中挑选出满足QoS且消耗资源最少的路径作为最佳维修路径。
本发明在康奈尔大学开发的MANETs网络模拟器Jist/Swans上,利用Java语言实现。本发明方法是在动态源路由DSR协议的基础上,修改和增加的主要消息有:服务请求消息(FANT)、服务应答消息(BANT)、服务源路由消息(SSR)、服务调用消息(SI)、服务路径维修请求消息(RRANT)、服务路径维修应答消息(RRBANT)等。
本发明在每一个IP分组中均包含一个带有控制信息的特殊消息头DSR Optionsheader,它在分组中位于IP头之后,传统传输层(TCP或UDP)头之前。DSR Options header结构如图2所示,其中前4个8位字节为它的固定选项,后续字节为可变选项。
图2中,Next Header:8位选择器,表明紧跟在DSR选项头后的消息头类型;FlowState Header(F):标志位,必须设为0;Reserved:保留位,必须设为0;Payload Length:除去4个8位字节固定选项后,DSR选项头的长度。Options:可变长度区域,它包含一个或多个DSR选项。上述的每种消息均包含在不同类型的DSR选项中,下面分别介绍这些DSR选项。
(1)服务请求消息(FANT)
FANT是由源节点发出,依次寻找组合服务中各基本服务的请求消息,它对应DSR选项头中的Service Request Option,其编码结构如图3所示。
图3中,Option Type:FANT的Option(选项,OPT)类型,取值为4;Opt Data Len:8位无符合整数,除去Option Type和Opt Data Len后该Option的长度,单位为8位字节;FANTID:FANT消息标识符;Previous Service Address:在发现的路径中,上一个基本服务所在的节点地址;Number of Passed Services:该消息已经访问过的组件服务个数;SumDelay:该消息截至目前所发现路径的总延迟时间;Max SumDelay:组合服务所允许的最大延迟时间;Sum Cost:该消息截至目前所发现路径的总费用;TTL:消息生存时间;Reserved:保留字节;Total Count of Functions:组合服务所需要发现的基本功能个数;Function[1...m]:组合服务所需要发现的功能列表;Address[1...n]:目前消息所经历的节点地址列表,Address[1]为源节点地址;Fun[1...k]Index:消息已经发现的功能Function[1...k]在Address[1...n]中的索引;Service[1...k]:第[1...k]个功能所在节点上的服务标识。
(2)服务应答消息(BANT)
BANT是由组合服务中最后一个基本服务所在节点发往源节点,对应于FANT的应答消息。它对应DSR选项头中Service Reply Option,其编码结构如图4所示。
图4中,Option Type:BANT的Option类型,取值为5;Last Hop External(L):标志位;FANT ID:该BANT消息对应的FANT消息的ID;BANT ID:BANT消息的标识符;Number ofServices:由FANT发现的服务路径上的基本服务数;Addr Len:由FANT发现的服务路径上的节点(或地址)数;Address[1...n]:发现的服务路径上的节点地址列表,Address[1]为FANT的源节点地址。其他项同上。
(3)服务源路由消息(Service Source Route,SSR)
SSR对应DSR选项头中Service Source Route Option,其编码结构如图5所示。图5中,Option Type:SSR的Option类型,取值为6;First Hop External(F)和Last HopExternal(L)均为标志位,与DSR中源路由消息中对应的含义相同;Salvage:一个4位无符号整数,表示本分组被营救的次数;Segs Left(Segments Left):服务路径中还剩余的节点数;Fun Len:组合服务中基本功能数;其他项含义同上。
(4)服务调用消息(Service Invocation,SI)
SI是源节点用来依次调用各基本服务的消息,其编码结构如图6所示。图6中,Option Type:SI的Option类型,取值为7;FANT ID:发现该服务路径的FANT消息标识符;FunLen:基本功能的个数;Addr Len:服务路径上的节点数;Passed Addr Len:该消息沿服务路径已访问过的节点数;Service Invocation Information:用来调用各基本服务的接口、参数和类型等信息;其他项含义同上。
网络中每个节点的消息处理逻辑相同,其处理服务组合消息的主要流程如图7所示。
当一个节点得到用户的服务发现和组合请求时,它首先产生一个FANT,若在其activeServiceCache中没有可用路由,则调用DiscoverServicePath()发现新服务路径,使用SendFANT()将FANT广播出去。它的邻居节点获得该消息后,首先窥探(peek)该消息,检查是否为所需消息,若是,则接受(receive)该消息,否则抛弃之。函数Receive()主要是从网络层接收消息,去除DSR头消息后,再将其传递给传输层。
函数Peek()主要处理各种DSR消息。它首先检查该消息头中的DSR Option类型,然后再做相应处理。由于一个DSR消息可能带有多个DSR Option,故它可能被多次处理。10个与服务有关的消息Option(上述9种和一个路由错误Option),分别对应了10种处理过程。但它们的处理位置稍有不同:对于广播的DSR消息(如FANT和RRANT等)和单播但无需改变消息头部内容的DSR消息(如BANT和SourceRoute等),在方法ProcessOption()中处理。而对于DSR单播但需改变消息头内容的DSR消息(如SI),调用函数ForwardPacket()处理,该方法是Source Route消息的处理函数,故这种消息均带有Source Route类型的Option。
消息处理函数主要任务是:更新相应的消息表、完成基本功能、产生新的消息、最后将它们发送出去。例如,FANT处理函数HandleServiceRequest(),首先将接收到的FANT消息添加到服务请求消息表serviceReqTable;其次添加中转节点或服务节点到服务路径中,并计算其新的QoS和费用,过滤没有竞争力的FANT消息;再次,判断该节点是否为最后一个服务节点,若是,则调用sendServiceReply()产生服务应答消息,并使用Transimit()以单播方式将其发送到FANT源节点,否则,调用ForwardServiceRequest()将该FANT使用接口netEntity.send()广播。函数Transmit()使用确认(Acknowledgement)或被动确认(Passive Acknowledgement)方式判断消息是否成功传递给下一节点。如果发现链路断开,则该调用SendRouteError()发送路由错误信息、并调用SendRepairREQ()发送维修请求消息。
在模拟实验中,本发明开发了Jist/Swans的一个可视化界面的原型系统,该界面分为三个区域:右侧为模拟参数的输入界面;中部为某一时刻模拟实验中ad hoc网络拓扑结构,其中小黑点表示移动节点,虚线圆表示节点的通信范围,折线为发现的一个最佳服务路径;下部分为实验结果输出界面。该可视化程序以图形的方式直观展示实验结果,使得模拟实验分析方便、高效和快捷。

Claims (10)

1.一种移动自组网中基于蚁群算法的分布式服务组合方法,其特征在于,该方法包括以下步骤:
步骤一,服务组合消息产生,客户节点根据用户需求产生基于语义的服务组合请求,并将该请求封装于服务请求消息中,形成依次发现和组合网络子服务的请求蚁,并向邻居节点传播;
步骤二,服务请求消息处理,某一邻居节点接收到服务请求消息,即请求蚁,解析该请求蚁,将该请求蚁的下一子服务信息与本节点服务注册中心的声明服务进行匹配,找到所有满足要求的子服务,并更新该请求蚁的状态信息,依据本节点的服务激素表选择下一个邻居节点转发或抛弃请求蚁;
步骤三,服务应答消息的产生和传播,当请求蚁发现最后一个子服务后,当前节点产生一个服务应答消息,该服务应答消息作为应答蚁以单播方式沿服务路径的反向路径返回源节点,形成一个服务组合方案,并更新其路径上各节点的服务激素表和服务路径表;
步骤四,最优组合服务的选择,当源节点接收到多个应答蚁后,从所有备选的服务组合方案中选择出最节约资源的组合服务作为最优服务组合方案;
步骤五,组合服务调用,源节点发送服务调用消息使用发现的组合服务。
2.根据权利要求1所述的一种移动自组网中基于蚁群算法的分布式服务组合方法,其特征在于,所述的服务请求消息的头部结构表示为:
(fantID,sourceNode,preServiceNode,nextFunction,sumDelay,sumCost,maxDelay,functionGraph,passedServicePath,ttl)
其中,fantID表示服务请求消息的ID标识;sourceNode是产生该消息的源节点;preServiceNode表示当前消息所经由的最后一个服务节点;nextFunction表示需要发现的下一个子服务;sumDelay表示所经历的路径的时间延迟值;sumCost表示所经历的路径的费用值;maxDelay表示组合服务的最大允许时间延迟,maxDelay=Dreq,Dreq表示时间延迟需求;functionGraph表示功能图;passedServicePath表示该消息所经由的服务路径ptr;ttl为消息的生存时间值。
3.根据权利要求1所述的一种移动自组网中基于蚁群算法的分布式服务组合 方法,其特征在于,所述的服务激素表的行表示服务,列表示邻居节点,其中表项为某一节点找到某一服务的激素值,该激素值由时间延迟激素值和费用激素值共同表示。
4.根据权利要求1所述的一种移动自组网中基于蚁群算法的分布式服务组合方法,其特征在于,所述的步骤二中,转发请求蚁时,从该节点到其邻居节点j链路的转发概率由下式计算得到:
其中,为从节点i到服务s的所有邻居节点的集合,γ是控制fant传播行为的参数,fant表示服务请求消息,α为延迟激素与费用激素间的权重关系,分别对应路径的延迟和费用的激素值。
5.根据权利要求2所述的一种移动自组网中基于蚁群算法的分布式服务组合方法,其特征在于,所述的步骤二中,服务请求消息处理的具体过程为:
(201)当节点u接收到一个服务请求消息fant后,先判断本节点的服务表serviceList中是否存在能够完成所需功能nextFunction的服务,若是,则更新fant中的preServiceNode、nextFunction、sumDelay和sumCost项,若否,则更新fant中的sumDelay和sumCost项;
(202)将当前节点u加入到路径表passedPath中,并将fant中的ttl减1;
(203)如果节点u转发与fant相同的服务请求消息次数大于最大转发次数Ω、或fant的ttl小于或等于0、或fant的sumDelay大于maxDelay,则抛弃该fant;
(204)节点u将接收到的fant与本节点的已途经请求消息表fantTable进行比较,判断fantTable中是否在与该fant相同的消息,若是,则执行步骤(205),若否,则将该fan加入到节点的fantTablet中并转发给邻居节点;
(205)判断该fant经过的服务节点数是否多于在fantTable中任何一个与fant相同的消息经过的服务节点数,若是,则将该fan加入到节点的fantTablet中并转发给邻居节点,若否,则抛弃该fant;
(206)若fant经过的服务节点数多于fantTable中的某一相同消息,则用fant替换该消息。
6.根据权利要求1所述的一种移动自组网中基于蚁群算法的分布式服务组合方法,其特征在于,所述的服务应答消息的头部结构为:
(bantID,fantID,sourceNode,sumDelay,sumCost,passedServicePath)
bantID为服务应答消息的ID标识;fantID为原服务请求消息的ID标识;sourceNode为原服务请求消息的源节点;sumDelay和sumCost分别为发现的服务路径的延迟时间和费用;passedServicePath为原服务请求消息发现的服务路径。
7.根据权利要求1所述的一种移动自组网中基于蚁群算法的分布式服务组合方法,其特征在于,所述的步骤三中,更新服务激素表具体为:
当服务应答消息到达节点i,记录从节点i到服务s在被发现的服务路径上的时间延迟和费用则节点i的服务激素表中时间延迟激素值和费用激素值 分别由下式计算得到:
式中,分别为服务激素表中的时间延迟更新值和费用更新值,其中,是从节点i到服务s的所有服务请求消息的时间延迟和费用的均值,η为权重;
更新服务路径表具体为:
服务路径对应的实际服务集合为中的每个服务sk,节点Ni首先查询服务路由表中是否存在与它相同的服务,若存在,那些相同的服务组成一个集合Ssk,依次判断sk对Ni的平均时间延迟和平均费用是否小于Ssk中每个服务对Ni的平均时间延迟和平均费用,若是,则sk替换服务路由表中该服务,若否,则服务路由表不做更新。
8.根据权利要求1所述的一种移动自组网中基于蚁群算法的分布式服务组合方法,其特征在于,所述的步骤五中,服务调用消息的头部结构为:
(fantID,servicePath)
其中,fantID表示服务请求消息的ID标识,servicePath为该组合服务的服务路径。
9.根据权利要求8所述的一种移动自组网中基于蚁群算法的分布式服务组合方法,其特征在于,该方法还包括:
根据服务调用消息使用组合服务时,若发生服务路径断开,则采用局部路径修复方法或全局路径修复方法修复路径。
10.根据权利要求9所述的一种移动自组网中基于蚁群算法的分布式服务组合方法,其特征在于,所述的局部路径修复方法具体为:
(1)源节点发现了一个服务路径上划线表示了该节点为服务节点,其余节点为中转节点,源节点发出服务调用消息SI,沿服务路径依次调用各服务,当SI到达节点i时,发现从i到它的后继节点j的链路已断开,于是节点i将SI保存在一个本地服务调用缓存区中;
(2)从消息SI的servicePath中,节点i构造一个目标节点表objNodes,它包含从失败节点j到路径的下一个服务节点m的所有节点,即(3)节点i生成一个服务路径维修请求消息,并将其广播给邻居节点;该服务路径维修请求消息的头部结构为:
(rrantID,repSource,function,objNodes,sumDelay,sumCost,passedPath)
其中,rrantID为该服务路径维修请求消息的标识符;repSource为服务路径维修请求消息的源节点;function为需要发现的功能,若失败节点为服务节点,function是该失败节点提供的功能,若失败节点为中转节点,则function=-1;objNodes为上述目标节点表;sumDelay和sumCost分别记录所经过路径的累积时间延迟和累积费用;passedPath为该消息所经历的服务路径;
(4)当节点A接到服务路径维修请求消息,判断该服务路径维修请求消息的function项是否为-1,若是,则执行步骤(5),若否,则执行步骤(6);
(5)判断是否成立,若是,则节点A更新服务路径维修请求消息中的sumDelay、sumCost和passedPath项,并将更新后的服务路径维修请求消息重新转发;若否,则节点A更新服务路径维修请求消息中的sumDelay、sumCost和passedPath项后,将其沿着原服务路径单播至下一个服务节点,执行步骤(9);
(6)每个接收到服务路径维修请求消息的节点首先查找该消息的passedPath中是否包含完成f的服务,f为失败节点提供服务的功能,若是,则执行步骤(5),若否,则依次查找该节点对应的服务表和服务路径表是否包含完成f的服务,若是,则执行步骤(7),若否,则执行步骤(8);
(7)若发现本地服务能够完成f,则执行步骤(5),若发现远端服务能够完成f,则将服务路径维修请求消息单播至远端服务,然后执行步骤(5);
(8)接收到服务路径维修请求消息的节点将该消息进行广播,直到找到能够完成f的服务为止,然后执行步骤(5);
(9)当节点m接收到多个服务路径维修请求消息后,从其中找出最小延迟时间的维修路径p;
(10)节点m产生一个服务路径维修应答消息,并将该消息沿着p的反方向单播至维修源节点i,该服务路径维修应答消息的头部结构为:
(rrbantID,repairSource,passedPath);
(11)节点i接收到多个服务路径维修应答消息后,从中挑选出满足设定QoS且消耗资源最少的路径作为最佳维修路径。
CN201310680650.0A 2013-12-12 2013-12-12 移动自组网中基于蚁群算法的分布式服务组合方法 Expired - Fee Related CN104717238B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310680650.0A CN104717238B (zh) 2013-12-12 2013-12-12 移动自组网中基于蚁群算法的分布式服务组合方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310680650.0A CN104717238B (zh) 2013-12-12 2013-12-12 移动自组网中基于蚁群算法的分布式服务组合方法

Publications (2)

Publication Number Publication Date
CN104717238A CN104717238A (zh) 2015-06-17
CN104717238B true CN104717238B (zh) 2018-01-23

Family

ID=53416198

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310680650.0A Expired - Fee Related CN104717238B (zh) 2013-12-12 2013-12-12 移动自组网中基于蚁群算法的分布式服务组合方法

Country Status (1)

Country Link
CN (1) CN104717238B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10853370B2 (en) * 2015-06-26 2020-12-01 Intel Corporation Devices and/or methods to provide a query response based on ephemeral data
US20170093698A1 (en) 2015-09-30 2017-03-30 Huawei Technologies Co., Ltd. Method and apparatus for supporting service function chaining in a communication network
CN105704027A (zh) * 2016-03-25 2016-06-22 青岛东软载波科技股份有限公司 一种基于路径优先选择策略的路由方法
CN106131002B (zh) * 2016-06-30 2019-06-14 广东工业大学 一种无线传感器网络中分布式服务组合寻优方法
CN106803810B (zh) * 2017-02-08 2020-06-16 苏州浪潮智能科技有限公司 一种降低监听开销的cc-numa系统及方法
CN107147725A (zh) * 2017-05-23 2017-09-08 山东浪潮商用系统有限公司 一个基于推荐网络和蚁群算法的服务发现方法
CN108418712B (zh) * 2018-02-23 2021-02-26 西安邮电大学 基于服务网络的核心服务发现方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103024856A (zh) * 2012-12-31 2013-04-03 上海交通大学 位置启发因子在无线自组网蚁群节能路由建立的应用方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7760718B2 (en) * 2007-08-20 2010-07-20 Cisco Technology, Inc. Taxonomy based multiple ant colony optimization approach for routing in mobile ad hoc networks

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103024856A (zh) * 2012-12-31 2013-04-03 上海交通大学 位置启发因子在无线自组网蚁群节能路由建立的应用方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Design and Implementation of Service Composition Protocol Based on DSR;Songqiao Han etc;《Parallel and Distributed Computing,Applications and Technologies(PDCAT),2010 International Conference on》;20110128;323-328 *

Also Published As

Publication number Publication date
CN104717238A (zh) 2015-06-17

Similar Documents

Publication Publication Date Title
CN104717238B (zh) 移动自组网中基于蚁群算法的分布式服务组合方法
Liu et al. Information-centric mobile ad hoc networks and content routing: a survey
Krishnaraj et al. A multihoming ACO-MDV routing for maximum power efficiency in an IoT environment
Abdolmaleki et al. Fuzzy topology discovery protocol for SDN-based wireless sensor networks
Ali et al. Critical analysis of swarm intelligence based routing protocols in adhoc and sensor wireless networks
Teranishi et al. Scalable and locality-aware distributed topic-based pub/sub messaging for IoT
Wang et al. Anycast-based content-centric MANET
Aboud et al. Geographic interest forwarding in NDN-based wireless sensor networks
Fareena et al. RETRACTED ARTICLE: A distributed fuzzy multicast routing protocol (DFMCRP) for maximizing the network lifetime in mobile ad-hoc networks
Cuong et al. MAR-AODV: innovative routing algorithm in MANET based on mobile agent
Al-Hawri et al. Design of network coding based reliable sensor networks
Li et al. Mf-iot: A mobilityfirst-based internet of things architecture with global reach-ability and communication diversity
Askar et al. Forwarding strategies for named data networking based IOT: requirements, taxonomy, and open research challenges
Ren et al. BLLC: A batch-level update mechanism with low cost for SDN-IoT networks
Dholey et al. ACOLBR: ACO based load balancing routing in MANET
Tewari et al. Optimized hybrid ant colony and greedy algorithm technique based load balancing for energy conservation in WSN
de Santis et al. QoS‐Based Web Service Discovery in Mobile Ad Hoc Networks Using Swarm Strategies
Palaniappan et al. Proposed energy efficient multi attribute time slot scheduling algorithm for quality of service in wireless sensor network
CN101163106B (zh) 一种在无线自组织网络中组合服务的执行方法
Han et al. Design and implementation of service composition protocol based on DSR
Quy et al. An adaptive on-demand routing protocol with QoS support for urban-MANETs
Yaqoob et al. A Study of Developments in the Routing Protocols in the Wireless Ad Hoc Networks (WANET)
Han et al. An Intelligent Service Collaboration Algorithm for Wireless Sensor Networks
Arenella et al. Beeadhocservicediscovery: A MANET service discovery algorithm based on bee colonies
Elgohary et al. An efficient and dependable protocol for critical MANETs

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180123

CF01 Termination of patent right due to non-payment of annual fee