CN100561987C - 一种实现soap消息分级路由的方法 - Google Patents
一种实现soap消息分级路由的方法 Download PDFInfo
- Publication number
- CN100561987C CN100561987C CNB2005100872523A CN200510087252A CN100561987C CN 100561987 C CN100561987 C CN 100561987C CN B2005100872523 A CNB2005100872523 A CN B2005100872523A CN 200510087252 A CN200510087252 A CN 200510087252A CN 100561987 C CN100561987 C CN 100561987C
- Authority
- CN
- China
- Prior art keywords
- routing
- node
- address
- section
- soap 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
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种实现SOAP消息分级路由的方法,它包括以下步骤:A、对网络中的每一个节点地址进行定义;B、给每个节点分配定义好的节点地址;C、给每个节点配置路由表,该路由表由本节点、上行节点和下行节点地址构成;D、部署路由模块:将路由表放置在路由模块的默认地址,并加载路由算法;E、由引擎模块调用路由模块,由路由模块根据SOAP报文中的路由上下文信息、路由表以及路由算法计算出路由路径,并按照计算出来的路由路径分发SOAP消息。由于本发明采用分级路由技术,所以可以通过节点的标识符自动进行分级路由,不需要SOAP消息的发送者指出消息传输的中间节点及其路径,只需要标明目的地址标识符即可。路由的时间复杂度为O(logn)。
Description
技术领域
本发明涉及一种在因特网内分发SOAP信息的方法,具体地说,本发明涉及一种在因特网内实现SOAP消息分级路由的方法。
背景技术
在分布式信息交换网络中,可能会有许多信息交换节点,因此消息路由成为信息交换的关键问题。消息路由技术主要解决信息交换网络中到达某个节点的SOAP消息如何被转发到最优的输出路径上,以及如何提高网络中消息分发的效率。SOAP协议和WSDL规范只是提供了异构环境间基本的通讯功能,但是并没有定义标准的SOAP消息路由协议。
Web服务路由规范(WS-Routing)是解决SOAP消息路由问题的一个规范,它定义了路由SOAP消息的机制。通常,WS-Routing被称作SOAP路由协议,是一个无状态协议,它扩展了SOAP协议。
WS-Routing通过定义预先设计好的路由或传输路径,使SOAP消息按照这个预先设计好的路由或传输路径进行分发。为了使SOAP消息能够按照这个预先设计好的路由或传输路径进行分发,在SOAP消息的报文头中必须写出SOAP消息源地址、途径的所有路径节点的地址、最后到达的消息最终接收者地址,非常繁琐。WS-Routing定义了一个称做path(路径)的元素来指定URI地址。尽管这种方法提供了消息内路由功能,但它也带来一些严重的安全问题。为了保证分发的SOAP消息安全,路由器必须修改SOAP消息头,使消息签名复杂化。因为路由器需要在再次发送消息之前读取、修改SOAP消息头,然后重新加密消息和消息头,为了使传递继续,中间节点将需要得到读取、签名和重新加密消息所必需的安全令牌;这样,就使得分发SOAP消息的整个过程变得更为复杂、繁琐。
作为WS-Routing的改进,Web服务寻址规范(WS-Addressing)为Web服务寻址提供了与底层传输协议无关的传输中立的机制。WS-Addressing是WS-Routing的简化形式。WS-Addressing正式放弃了与消息路径相关的WS-Routing元素(如<r:path>、<r:fwd>和<r:rev>),并且假定用户将依靠“下一跳”方式来解决路由问题,所以,根据WS-Addressing规范,SOAP消息的报文头中只定义SOAP消息源地址和下一节点地址,由下一节点地址决定SOAP消息路由的方向。
目前国内外的各种基于SOAP的路由技术和方法普遍采用上述两种方法,但是,这两种方法都不能在广域网络中实现SOAP消息分级路由,路由效率比较低。而,随着因特网的飞速发展,它就需要在因特网范围内部署和进行数据交换,需要一种新的路由技术解决SOAP消息在因特网范围内的分发问题。
发明内容
鉴于上述原因,本发明的目的是提供一种在因特网范围内能够有效地实现SOAP消息分级路由的方法。
为实现上述目的,本发明采用以下技术方案:一种实现SOAP消息分级路由的方法,它包括以下步骤:
A、对网络中的每一个节点地址进行定义;
具体定义方法:
1)、将节点地址分为四段:第1段为根节点中心编码,第2段为根节点下的一级单位编码,第3段为根节点下的二级单位编码,第4段为根节点下的三级单位编码;
2)、第1段编码为“1”;第2段、第3段、第4段的编码范围是001~999;其中,根节点的编码为“1.000.000.000″;
B、给每个节点分配定义好的节点地址;
C、给每个节点配置路由表,该路由表由本节点地址、上行节点地址和下行节点地址构成;
D、部署路由模块:将路由表放置在路由模块的默认地址,并加载路由算法;
E、由引擎模块调用路由模块,由路由模块根据SOAP报文中的路由上下文信息(即目的节点地址)、路由表以及路由算法计算出路由路径,并按照计算出来的路由路径分发SOAP消息。
由于本发明采用分级路由技术,可以通过节点的标识符自动进行分级路由。与传统的WS-Addressing和WS-Rouging方法相比在提高路由效率的同时,不需要SOAP消息的发送者指出消息传输的中间节点及其路径,只需要标明目的地址标识符即可实现SOAP消息的路由。路由的时间复杂度为O(1ogn)。更重要的是,本发明提供的SOAP消息分级路由的方法与传统的WS-Addressing和WS-Rouging方法相比能够实现在广域网络范围内部署和进行数据的交换。
附图说明
图1为ACTIIP平台的逻辑结构示意图
图2为本发明节点地址编码结构图
图3为本发明SOAP消息分级路由的流程图
具体实施方式
本发明提出的SOAP消息分级路由的方法是由图1所示的电子政务信息交换平台(简称ACTIIP平台)中的路由模块实现的。ACTIIP平台是一个基于SOAP消息中间件的信息交换中间件平台。
如图1所示,它主要由报文模块、引擎模块、路由模块和适配器模块构成。报文模块负责解析通过传输接口接收到的SOAP报文,并将解析的结果传递给引擎模块;引擎模块负责调用路由模块对报文解析结果中的路由信息进行处理;路由模块根据引擎模块传递的路由信息进行路由决策,并将决策的结果返回给引擎模块;如果SOAP报文的目的地址是本地地址,引擎模块则将报文通过适配器模块传递给上层的应用系统,如果SOAP报文的目的地址不是本地地址,引擎模块则修改SOAP报文路由信息中的下一跳地址,调用报文模块构造新的SOAP报文,调用传输接口发送SOAP报文。
为了实现SOAP消息的分级路由,需要对ACTIIP平台中的每一个节点进行地址编码。由于ACTIIP平台是一个有着严格隶属关系的电子政务信息交换平台,所以,本发明按照ACTIIP平台中的每一个节点的隶属关系,对ACTIIP平台中的每一个节点进行地址编码。如图2所示,本发明将每一个节点的地址分为四段:A段为根节点中心编码,B段为根节点下的一级单位编码,C段为根节点下的二级单位编码,D段为根节点下的三级单位编码。
节点地址编码规则为:
1)、每个节点的地址长度为10位;
由于ACTIIP平台系统内部规定,节点的地址编码用10位阿拉伯数字表示,所以,本发明定义的由四段编码构成的节点地址长度为10位,由10位阿拉伯数字表示。
2)、A段编码为“1”;
3)、一、二、三级单位相应的码段即B段、C段、D段编码由上级中心分配,每一级单位的编码范围是001~~999;
4)、后续码段全“0”是中心保留地址,例如根节点的编码是1.000.000.000;
5)、广播地址是全零:0.000.000.000。
下面举例说明,如何对某省电子政务系统平台内的、省政府下属的各个政府职能部门节点进行编码。
a)按照上述编码原则,代表省中心的节点地址应该是1.000.000.000,省中心分配其下属的市中心的地址码段。
b)市中心由省中心分配的B段地址应该是001~999范围内,假设是032,那么,省内的某个市的节点地址就是:1.032.000.000,并且,这个市中心拥有对其下属的地区单位分配地址码段的权利,其范围应该是:1.032.001~~1.032.999
c)假如该市中心对其下属的市民政局分配C段地址是1.032.017,则该市民政局的节点地址是:1.032.017.000。
d)同时,该市民政局拥有对其下属的单位分配地址码段的权利,其地址码段范围是:1.032.017.001~~1.032.017.999。
按照上述规则,对网络中的每一节点地址进行编码后,在编写SOAP报文时,就可以直接在SOAP报文内加上该SOAP报文最后到达的消息最终接收者节点地址。当ACTIIP平台内的报文模块(如图1所示)解析SOAP报文、提取SOAP报文中的路由信息后,路由模块按照本发明提供的SOAP消息分级路由的方法对路由信息进行处理、按照SOAP报文内包含的SOAP报文最后到达的消息最终接收者节点地址,将SOAP报文逐级分发到最终接收者处。
如图3所示,本发明提供的SOAP消息分级路由的方法,具体包括如下步骤:
1、对网络中的每一个节点地址进行定义
具体定义方法:
1)、将节点地址分为四段:第1段为根节点中心编码,第2段为根节点下的一级单位编码,第3段为根节点下的二级单位编码,第4段为根节点下的三级单位编码;
2)、第1段编码为“1”;第2段、第3段、第4段的编码范围是001~999;
其中,根节点的编码为“1.000.000.000”;
3)、第2段、第3段、第4段的编码即一、二、三级单位相应的编码由其上级中心分配。
2、给每个节点分配定义好的节点地址
3、给每个节点配置路由表,该路由表由本节点地址、上行节点地址和下行节点地址构成;
4、部署路由模块:将路由表放置在路由模块的默认地址,并加载路由算法;
5、由引擎模块调用路由模块,由路由模块根据SOAP报文中的路由上下文信息(目的节点地址)、路由表以及路由算法计算出路由路径,并按照计算出来的路由路径分发SOAP消息。
所述路由算法是指根据SOAP报文中的路由上下文信息计算路由路径的方法,它主要包括以下步骤:
1、路由模块获取SOAP报文中的路由上下文信息;
2、查路由表获得本地节点地址
3、判断是否是本地节点地址,是则返回true,否则继续下一步;
4、计算下一跳地址,并返回计算结果,具体方法:
1)、检查路由上下文信息中是否具有地址编码,如果没有,返回异常信息;如果具有地址编码,则执行下一步;
2)、比较该地址编码和本地地址,判断上行,还是下行;
(1)、如果是上行,从路由表中直接获得上行节点地址;
(2)、如果是下行,计算下行地址编码;
3)、返回下一跳节点地址。
判断是否上行的具体方法,包括以下步骤:
1、取出本地地址的A,B,C,D段编码;
2、取出SOAP报文中路由信息编码中的A,B,C,D段编码;
3、按照从左至右的顺序比较各段编码
4、相同则进入下一级的比较
5、相异则判断:
a)本地全零则下行,返回false
b)编码全零则上行,返回true
c)均非全零则上行,返回true。
获得下行节点地址编码的方法:
1、获得本地地址编码的分段字符串数组;
2、获得本地地址编码全零字段的起始位置j;
3、将本地地址编码的j+1段开始置为全零,获得下行地址编码;
4、返回下行地址编码。
例如:大庆市民政局办公室由的地址是1.032.017.021;大庆市中心的地址是1.032.000.000;当大庆市中心接收到地址1.032.017.021,由于其全零字段的起始位置是j=3,因此将接收到的地址1.032.017.021的第j+1=4段开始置位全零得到下行地址编码1.032.017.000。
本发明的优点是:
1、采用了分级消息路由之后,交换节点划分成不同的层级和区域,每个路由模块不需要了解其他层级和区域的拓扑结构就可以将消息路由到区域内的目标地址。并且这种分级结构可以在不影响自治区域路由的情况下实现不同区域的灵活互联。
2、算法效率高,实现简单,在不增加交换级数的情况下,增加交换中心或者应用系统时,只需要简单的增加和它相连的交换中心上的配置文件,不用路由表的同步更新,即当网络中的某个节点的路由表变化了,其它节点的路由表不需要改变。
3、在SOAP标头部分携带该信息更加独立、可重用以及安全。这会使SOAP基础结构有可能适应范围更广的传输手段,同时简化编程模型。
4、这种分段编址的方法可以通过地址结构映射数据交换网络结构,从而易于计算网络路由;
5、地址分配策略可以保持数据交换平台的松耦合以及可扩展性,具有地址编码的系统可以自主扩展本地的信息交换系统,不需要与其它节点交换路由信息。
6、路由决策系统不需要大量查表操作,只需要进行分段判断就可以进行路由决策,算法时间复杂度是O(1)。
7、具有省级之间的扩展性,A段地址的设计考虑了省级系统之间的互联互通扩展需求,以及中央级信息交换互联互通的扩展需求。
以上所述是本发明的具体实施例及所运用的技术原理,任何基于本发明技术方案基础上的等效变换,均属于本发明保护范围之内。
Claims (5)
1、一种实现SOAP消息分级路由的方法,它包括以下步骤:
A、对网络中的每一个节点地址进行定义;
具体定义方法:
1)、将节点地址分为四段:第1段为根节点中心编码,第2段为根节点下的一级单位编码,第3段为根节点下的二级单位编码,第4段为根节点下的三级单位编码;
2)、第1段编码为“1”;第2段、第3段、第4段的编码范围是001~999;其中,根节点的编码为“1.000.000.000″;
B、给每个节点分配定义好的节点地址;
C、给每个节点配置路由表,该路由表由本节点地址、上行节点地址和下行节点地址构成;
D、部署路由模块:将路由表放置在路由模块的默认地址,并加载路由算法;
E、由引擎模块调用路由模块,由路由模块根据SOAP报文中的路由上下文信息、路由表以及路由算法计算出路由路径,并按照计算出来的路由路径分发SOAP消息。
2、根据权利要求1所述的一种实现SOAP消息分级路由的方法,其特征在于:所述节点地址中的第2段、第3段、第4段编码由其上级中心分配。
3、根据权利要求2所述的一种实现SOAP消息分级路由的方法,其特征在于:所述加载到路由模块中的路由算法是指根据SOAP报文中的路由上下文信息计算路由路径的方法,它包括以下步骤:
A、路由模块获取SOAP报文中的路由上下文信息;
B、查路由表获得本地节点地址;
C、判断是否是本地节点地址,是则返回true,否则继续下一步;
D、计算下一跳地址,并返回计算结果,具体方法:
1)、检查路由上下文信息中是否具有地址编码,如果没有,返回异常信息;如果具有地址编码,则执行下一步;
2)、比较该地址编码和本地地址,判断上行,还是下行;
①、如果是上行,从路由表中直接获得上行节点地址;
②、如果是下行,计算下行地址编码;
3)、返回下一跳节点地址。
4、根据权利要求3所述的一种实现SOAP消息分级路由的方法,其特征于:上述步骤D中的判断是否上行的具体方法,包括以下步骤:
A、取出本地地址的A、B、C、D段编码;
B、取出SOAP报文中路由上下文信息中地址编码的A、B、C、D段编码;
C、按照从左至右的顺序比较各段编码;
D、相同则进入下一级的比较;
E、相异则判断:
1)本地地址的各段编码全零则下行,返回false;
2)SOAP报文中路由上下文信息中地址编码的各段编码全零则上行,返回true;
3)均非全零则上行,返回true。
5、根据权利要求3所述的一种实现SOAP消息分级路由的方法,其特征在于:上述步骤D中获得下行节点地址编码的方法,包括以下步骤:
A、获得本地地址编码的分段字符串数组;
B、获得本地地址编码全零字段的起始位置j;
C、将本地地址编码的j+1段开始置为全零,获得下行地址编码;
D、返回下行地址编码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100872523A CN100561987C (zh) | 2005-07-28 | 2005-07-28 | 一种实现soap消息分级路由的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100872523A CN100561987C (zh) | 2005-07-28 | 2005-07-28 | 一种实现soap消息分级路由的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1905533A CN1905533A (zh) | 2007-01-31 |
CN100561987C true CN100561987C (zh) | 2009-11-18 |
Family
ID=37674663
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100872523A Expired - Fee Related CN100561987C (zh) | 2005-07-28 | 2005-07-28 | 一种实现soap消息分级路由的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100561987C (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101355492B (zh) * | 2007-07-27 | 2011-04-13 | 华为技术有限公司 | 简单对象访问协议路由方法及路由系统以及相关设备 |
-
2005
- 2005-07-28 CN CNB2005100872523A patent/CN100561987C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1905533A (zh) | 2007-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101268658B (zh) | 产生对称生成树的系统和方法 | |
CN100459534C (zh) | 分层网络节点及通过该节点构成的网络、节点和分层网络 | |
CN100586079C (zh) | 一种面向数据链路层的网络拓扑发现方法 | |
CN107733855A (zh) | 一种可同时支持公有链、联盟链及私有链的区块链系统及应用方法 | |
CN102487374B (zh) | 一种访问控制列表实现方法及装置 | |
CN105191215A (zh) | 双向服务链的数据平面学习 | |
WO2004066641A3 (en) | Routing signaling messages to the same destination over different routes using message origination information | |
WO2007149850A3 (en) | Hierarchical deterministic pairwise key predistribution scheme | |
CN102685036A (zh) | Iec 61850变电站网关 | |
CN103338274A (zh) | 树形泛在网络中面向路由的地址分配方法 | |
CN102811227A (zh) | IPsec协议下标准方式ACL规则的一种管理机制 | |
CN105493455A (zh) | 压缩的源路由编码 | |
CN103647598A (zh) | 一种基于智能光网络的通信多等级保护方法 | |
WO2005036803A3 (en) | System and method of utilizing virtual ants in small world infrastructure communication networks | |
CN101364924A (zh) | 一种基于企业服务总线的数据采集自适应体系结构 | |
CN100561987C (zh) | 一种实现soap消息分级路由的方法 | |
CN105871737B (zh) | 一种用于冗余网络间通信的通信流量控制装置 | |
CN106453091A (zh) | 路由器转发平面的等价路由管理方法和装置 | |
CN110061874A (zh) | 一种联盟区块链可视化通道管理的方法 | |
CN105256733B (zh) | 地铁站出站导向方法及系统 | |
CN101132342A (zh) | Ftn匹配管理方法 | |
CN101599979A (zh) | 基于隧道的ip电信网实现方法 | |
CN103281175B (zh) | 一种lkh密钥管理树动态平衡方法 | |
WO2002054687A3 (en) | Management of protocol information in pnni hierarchical networks | |
CN107689883A (zh) | 协同节点的确定方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091118 Termination date: 20120728 |