具体实施方式
本发明提出了一种基于MPLS的实现服务流的方法。MPLS是由因特网工程任务组(IETF)的网络协议,其目标是使得网络服务提供者能够向其用户提供附加的服务,扩展其当前服务,并通过使用MPLS的流量工程能力对其不能增长的网络施加更多的控制。
MPLS工作在OSI(开放式系统互联)模型的第二层(数据链路层)和第三层(网络层)之间的层上,并因此常常被称为2.5层协议。图3示意性地示出了MPLS的基本概念。位于MPLS网络的边缘的边缘标签交换路由器将进入MPLS网络的数据包进行分类,并根据该数据包所属的服务类向数据包附加MPLS标签,该标签指示了该数据包所属的服务类以及作为该数据包的目标的下一个标签交换路由器或边缘标签交换路由器。该数据包所经过的每一个标签交换路由器接收到该数据包后,使用该数据包的MPLS标签以及预先建立的标签查找表获得新的标签(这与IP路由器中使用IP路由表进行路由形成对比),使用新的标签替换原标签,并将该数据包发送给与新的标签相关联的下一个标签交换路由器或边缘标签交换路由器。当一边缘标签交换路由器接收到来自MPLS网络的附加了标签的数据包时,该边缘标签交换路由器去除该数据包的MPLS标签,并将该数据包提供给MPLS网络外部的设备。每个标签交换路由器和边缘标签交换路由器可通过诸如标签分配协议(LDP)等协议与其他标签交换路由器和边缘标签交换路由器交换各自的标签信息,以形成各自的标签查找表,从而在标签交换路由器和边缘标签交换路由器之间建立起针对特定服务类的标签交换路径。由于MPLS网络使用MPLS层的标签进行路由,避免了使用耗时的IP路由表查找,从而加快了数据包在网络中的传送速度;同时,通过在网络中形成不同的标签交换路径,可容易地实现流量控制功能,从而满足数据包处理的负载均衡和QoS要求。
本发明的基本思想是通过MPLS技术将应用层服务流集成到MPLS 层,使得应用层服务流能够利用MPLS使能的网络基础设施在每个服务流组件之间转发消息。由于应用消息的路由是在MPLS层进行的,从而加速了消息的路由和处理过程,并且能够容易地实现负载均衡和QoS要求。
本发明将企业应用划分为两个阶段:在控制阶段,为应用服务流建立适当的标签交换路径;在运行阶段,根据所建立的标签交换路径,将应用服务流的消息路由到适当的服务流组件进行处理,从而完成应用服务流。
下面参照附图说明本发明的实施例。在下面的说明中,阐述了许多具体细节以便更全面地了解本发明。但是,对于本技术领域内的技术人员明显的是,本发明的实现可不具有这些具体细节中的一些。此外,应当理解的是,本发明并不限于所介绍的特定实施例。相反,可以考虑用下面的特征和要素的任何组合来实施本发明,而无论它们是否涉及不同的实施例。因此,下面的方面、特征、实施例和优点仅作说明之用而不应被看作是所附权利要求的要素或限定,除非权利要求中明确提出。
图4示出了根据本发明的实施例的基于MPLS的实现服务流的系统及其运行环境。如图所示,该运行环境包括数据中心A、数据中心B和数据中心C。在这些数据中心中,分别部署有服务A1-A5、B1-B6、C1-C5;且在每个数据中心中,部署有一个或多个ESB网关,例如Datapower ESB网关,每个ESB网关用于该数据中心中的多个服务。各数据中心中的ESB网关通过MPLS使能的路由器S1-S5相互连接。当然,所图示的本发明的系统的运行环境仅为示例,而不是对本发明的系统的运行环境的限制。例如,本发明的系统的运行环境可包括任意多个数据中心,或者仅包括一个数据中心;各ESP网关可以通过MPLS使能的路由器以任何适当的方式互连,等等。
如图所示,根据本发明的实施例的基于MPLS的实现服务流的系统包括应用标签交换路径(ALSP)引擎401和位于一个或多个服务器处的一个或多个应用标签交换器(ALS)402。
其中,所述ALSP引擎401被配置为接收服务流的定义,所述服务流的定义定义了以预定顺序调用多个个别服务,并在所述多个个别服务之间 交换消息以便实现集成服务的业务逻辑的流程,其中所述多个个别服务被部署在通过一个或多个MPLS使能的路由器互连的一个或多个服务器上;所述ALSP引擎401还被配置为根据所述服务流的定义在所述一个或多个MPLS使能的路由器以及位于所述一个或多个服务器处的一个或多个ALS402之间建立MPLS标签交换路径,并在所述一个或多个服务器处的一个或多个ALS402中建立该服务流与该MPLS标签交换路径之间的对应关系。
所述ALSP引擎401可以位于任何计算设备上,该计算设备可以与所述一个或多个MPLS使能的路由器和ALS402通过网络连接,也可以不与所述一个或多个MPLS使能的路由器计算设备和ALS402通过网络连接。由于ALSP引擎401工作在控制阶段,因此只要该计算设备能够使得ALSP引擎401能够接收到服务流的定义,并根据服务流的该定义对所述MPLS使能的路由器和ALS402进行配置即可。
所述ALSP引擎401可以从任何实体通过任何信息传递方式接收服务流的定义,例如从定义、创建或部署作为集成服务的企业应用的计算机处,或从企业应用的开发者或管理员处。
所述MPLS使能的路由器可以是任何现有的或新开发的能够按照MPLS协议路由网络包的路由器、交换机或其他设备。所述服务器优选为应用服务器。所述MPLS使能的路由器与所述服务器之间的连接方式可以是任意的。可选地,每一个服务器通过一个ALS与一个MPLS使能的路由器相连。每一个ALS可以将一个或多个服务器与一个MPLS使能的路由器相连。ALS可以硬件实现,也可以软件实现,且其既可以位于与所述服务器相连的设备(例如ESB网关)上,也可以位于所述服务器中。每一个MPLS使能的路由器可以连接一个或多个其他MPLS使能的路由器,以及/或一个或多个ALS402。
根据本发明的实施例,被配置为根据所述服务流的定义在所述一个或多个MPLS使能的路由器以及所述一个或多个服务器处的ALS402之间建立MPLS标签交换路径,并在所述一个或多个服务器处的一个或多个ALS 中建立该服务流与该MPLS标签交换路径之间的对应关系的ALSP引擎401进一步被配置为:根据所述服务流的定义生成一组MPLS标签;以及将所述一组MPLS标签分别发送给所述一个或多个MPLS使能的路由器以及所述一个或多个服务器处的ALS,以便在所述一个或多个MPLS使能的路由器以及所述一个或多个服务器处的ALS之间建立MPLS标签交换路径,并在所述一个或多个服务器处的一个或多个ALS中的每一个中建立该服务流与相应的MPLS标签之间的对应关系。
ALSP引擎401可使用任何方法生成所述一组MPLS标签,且所述一组MPLS标签可以是符合MPLS协议的任何一组标签,只要该组标签能够将为该服务流建立的应用标签交换路径与根据其他组标签为其他服务流建立的其他标签交换路径相区别即可。ALSP引擎401可以为不同的服务流生成不同的一组标签,以便为不同的服务流建立不同的标签交换路径,所述不同的标签交换路径将包括不同组的MPLS使能的路由器401和ALS402。
ALSP引擎401可使用任何传输方法、传输介质或通信协议将所生成的一组MPLS标签分别发送给相应的MPLS使能的路由器和ALS402。
当MPLS使能的路由器或ALS402接收到来自ALSP引擎401的相应标签后,可以通过例如标签交换协议等与其他MPLS使能的路由器或ALS402交换各自的标签信息,根据各自的和所接收的标签信息维护一标签查找表,从而在MPLS使能的路由器和ALS之间建立起MPLS标签交换路径。MPLS使能的路由器或ALS响应于接收到相应的标签建立MPLS标签交换路径的方法是本领域中的公知的,因此在此不再赘述。
通过在每一个ALS402中建立服务流与相应的MPLS标签之间的对应关系,ALS就能够向接收自应用服务器上的个别服务的服务流消息添加相应的MPLS标签,将添加了相应的MPLS标签的服务流的消息发送给与其相连的MPLS使能的路由器,从而通过已建立的MPLS标签交换路径将该消息发送给位于其他服务器上的个别服务来处理;并能够根据接收自MPLS标签交换路径的来自其他服务器上的个别服务的服务流消息中的 MPLS标签确定该服务流消息所属的服务流,以便去除该服务流消息的MPLS标签并将去除了MPLS标签的该服务流消息转发给相应的服务器上的个别服务去处理。仅作为示例,在ALS402中建立该服务流与相应的MPLS标签之间的对应关系,可以通过在ALS中的表中存储该ALS接收自所述ALSP引擎401的MPLS标签与该服务流的对应关系来实现。
根据本发明的一个实施例,所述ALSP引擎401还被配置为在根据所述服务流的定义以及包含所述多个个别服务的网络地址和路径信息的服务注册表确定执行该服务流的网络路径,以及该网络路径包含的一个或多个MPLS使能的路由器以及一个或多个服务器处的ALS402的网络地址,以便将所述一组MPLS标签分别发送给所述一个或多个MPLS使能的路由器以及所述一个或多个服务器处的ALS。
所述服务注册表可以是包含个别服务的网络地址和路径信息的任何现有的或新开发的服务注册表。由于在所述服务注册表中包含了各个别服务的服务地址和路径信息,所述ALSP引擎401就有可能根据该服务注册表为同一个服务流确定出不同的网络路径,并可以根据每个网络路径的流量等情况,从中选择适当的网络路径,从而满足负载均衡或QoS的要求。
在根据本发明一个实施例的基于MPLS的实现服务流的系统中,所述位于一个或多个服务器处的一个或多个ALS402被配置为根据该服务流与该MPLS标签交换路径之间的对应关系,并通过所述MPLS标签交换路径在所述多个个别服务之间交换该服务流的消息,以便完成所述服务流。
根据本发明的进一步的实施例,被配置为根据该服务流与该MPLS标签交换路径之间的对应关系并通过所述MPLS标签交换路径在所述多个个别服务之间交换该服务流的消息,以便完成所述服务流的ALS包括:
该服务流的起始个别服务所在的服务器处的ALS402,其被配置为响应于接收到来自该起始个别服务的该服务流的消息,根据在该服务器处的ALS402中建立的该服务流与相应的MPLS标签之间的对应关系,向该服务流的消息附加所述相应的MPLS标签,并且将该附加了所述相应的MPLS标签的该服务流的消息发送到该服务器处的该ALS402所连接的 MPLS使能的路由器,以便通过所述MPLS标签交换路径将附加了相应的MPLS标签的该服务流的消息转发给该服务流涉及的其他个别服务所在的服务器处的ALS402;以及
所述其他个别服务所在的服务器处的ALS402,其中的每一个ALS被配置为:响应于接收到来自所述MPLS标签交换路径的附加了相应的MPLS标签的该服务流的消息,去除所述相应的MPLS标签,并将去除了所述相应的MPLS标签的该服务流的消息提供给相应的个别服务,以便由所述相应的个别服务进行处理;以及如果该服务流的执行没有完成,则响应于接收到经过所述相应的个别服务处理的该服务流的消息,将相应的MPLS标签附加到该服务流的消息,并将附加了所述相应的MPLS标签的该服务流的消息发送给该ALS所连接的MPLS使能的路由器。
至于通过所述MPLS标签交换路径中转发附加了相应的MPLS标签的该服务流的消息的具体方式,即该MPLS标签交换路径所涉及的每一个MPLS使能的路由器以及ALS根据MPLS协议接收和转发该服务流的消息的具体方式,则是本技术领域中公知的,因此,在此不再赘述。
根据本发明的一个实施例,所述一个或多个服务器处的一个或多个ALS中的每个,位于用于多个服务器的ESB网关中。所述ESP网关例如可以是Datapower ESB网关。
根据本发明的实施例,所述一个或多个服务器处的一个或多个ALS为网络驱动程序。该网络驱动程序例如可位于所述ESB网关设备中。
根据本发明的进一步的实施例,所述一个或多个服务器与所述ESB网关位于一个或多个刀片服务器机箱中。在这样的实施例中,通常每个刀片服务器机箱中包含多个刀片服务器和一个ESB网关,该ESB网关用作所述多个刀片服务器的ESB。
根据本发明的实施例,所述服务流为应用层服务流。这就是说,所述多个个别服务是在应用层被集成为所述集成服务的。
根据本发明的实施例的基于MPLS的实现服务流的系统中的所述多个个别服务可以位于不同的管理域中。例如,它们可以分别位于不同企业的 数据中心中;也可以位于相同的管理域中,例如位于同一个企业的一个或多个数据中心中。
以上描述了根据本发明的实施例的基于MPLS的实现服务流的系统,应指出的是,以上描述仅为示例,而不是对本发明的限制。在本发明的其他实施例中,所述基于MPLS的实现服务流的系统可具有更多、更少或不同的模块,且各模块之间的关系可以与以上描述和图示的不同。例如,在本发明的一些实施例中,所述ALSP引擎也可与一个ALS一起位于某一个ESB网关中,等等。
现在考虑本发明的基于MPLS的实现服务流的系统的一个示例性应用场景。在目前的数据中心环境中,Datapower ESB网关通常被用作ESB网关。在每个刀片服务器机箱中,有一个Datapower ESB网关,其用作应用层企业服务总线。通常,同一个机箱中的刀片之间的服务流消息交换是在Datapower ESB网关中进行的。为了支持不同机箱之间的服务流消息交换,传统上,一个专用的ESB网关被用作联合ESB主干。
通过使用本发明的系统,不再需要该专用的ESB主干。在每一个Datapower ESB网关中,将存在一个ALS。这样,Datapower ESB中的应用消息将由该ALS分析。如果该应用消息的目标是其他Datapower ESB,则ALS将根据所存储的路由规则(即前文中所述的根据MPLS标签与服务流之间的对应关系)向该应用消息附加相应的MPLS标签,并将该应用消息作为网络包发送到网络中。ALS也可能根据网络协议的要求首先将应用消息切分为若干网络包(例如,IP包),然后向每一个网络包附加MPLS标签,并将每一个网络包发送到网络中。
当所述网络包被发送到网络中后,网络中的路由器和交换机将理解MPLS标签。这是因为,MPLS是IETF标准,因此现代的网络设备都将理解MPLS。这样,网络包就被路由到相应的Datapower ESB的ALS。该ALS将去除所接收的网络包的MPLS标签,可能需要将网络包重新组合为应用消息,并将该应用消息发送给相同机箱中的某个刀片上的服务。
下面参照附图描述根据本发明的实施例的基于MPLS的实现服务流的 方法。该方法可以由上述根据本发明的实施例的基于MPLS的实现服务流的系统来实现。为简明起见,在以下描述中省略了与上述内容重复的部分细节,因此可参照以上描述获得对本发明的基于MPLS的实现服务流的方法的更详细的理解。
图5示出了根据本发明的实施例的一种基于MPLS的实现服务流的方法。如图所示,该方法包括:
在步骤501,接收服务流的定义,所述服务流的定义定义了以预定顺序调用多个个别服务,并在所述多个个别服务之间交换消息以便实现集成服务的业务逻辑的流程,其中所述多个个别服务被部署在通过一个或多个MPLS使能的路由器互连的一个或多个服务器上。
在步骤502,根据所述服务流的定义在所述一个或多个MPLS使能的路由器以及所述一个或多个服务器处的一个或多个装置之间建立MPLS标签交换路径,并在所述一个或多个服务器处的一个或多个装置中建立该服务流与该MPLS标签交换路径之间的对应关系。
在步骤503,根据该服务流与该MPLS标签交换路径之间的对应关系并通过所述MPLS标签交换路径在所述多个个别服务之间交换该服务流的消息,以便完成所述服务流。
现参照图6,其示出了根据本发明的实施例的上述步骤502中包括的具体步骤。
如图所示,在可选步骤601,根据所述服务流的定义以及包含所述多个个别服务的网络地址和路径信息的注册表确定执行该服务流的网络路径,以及该网络路径包含的一个或多个MPLS使能的路由器以及一个或多个服务器处的装置的网络地址,以便将所述一组MPLS标签分别发送给所述一个或多个MPLS使能的路由器以及所述一个或多个服务器处的装置。
在步骤602,根据所述服务流的定义生成一组MPLS标签。
在步骤603,将所述一组MPLS标签分别发送给所述一个或多个MPLS使能的路由器以及所述一个或多个服务器处的装置,从而在所述一个或多个MPLS使能的路由器以及所述一个或多个服务器处的装置之间建立 MPLS标签交换路径。
在步骤604,在所述一个或多个服务器处的一个或多个装置中的每一个中建立该服务流与相应的MPLS标签之间的对应关系。
现参照图7,其示出了根据本发明的实施例的上述步骤503中包括的具体步骤。
如图所示,在步骤701,由该服务流的起始个别服务所在的服务器处的装置响应于接收到来自该起始个别服务的该服务流的消息,根据在该服务器处的装置中建立的该服务流与相应的MPLS标签之间的对应关系,向该服务流的消息附加所述相应的MPLS标签,并且将该附加了所述相应的MPLS标签的该服务流的消息发送到该服务器处的装置所连接的MPLS使能的路由器。
在步骤702,通过所述MPLS标签交换路径将附加了相应的MPLS标签的该服务流的消息转发给该服务流涉及的其他个别服务所在的服务器处的装置。
在步骤703,由所述其他个别服务所在的服务器处的每一个装置响应于接收到来自所述MPLS标签交换路径的附加了相应的MPLS标签的该服务流的消息,去除所述相应的MPLS标签,并将去除了所述相应的MPLS标签的该服务流的消息提供给相应的个别服务,以便由所述相应的个别服务进行处理。
在步骤704,如果该服务流的执行没有完成,则由所述其他个别服务所在的服务器处的每一个装置响应于接收到经过所述相应的个别服务处理的该服务流的消息,将相应的MPLS标签附加到该服务流的消息,并将附加了所述相应的MPLS标签的该服务流的消息发送给所述其他个别服务所在的服务器处的该装置所连接的MPLS使能的路由器。
根据本发明的实施例,所述一个或多个服务器处的一个或多个装置中的每个装置位于用于一个或多个服务器的ESB网关中。
根据本发明的实施例,所述一个或多个服务器处的一个或多个装置为网络驱动程序。
根据本发明的进一步的实施例,所述一个或多个服务器与所述ESB网关位于一个或多个刀片服务器机箱中。
根据本发明的实施例,所述服务流为应用层服务流。
以上描述了根据本发明的实施例的基于MPLS的实现服务流的方法,应指出的是,所描述的方法仅为示例,而不是对本发明的限制。在本发明的其他实施例中,本发明的方法可具有更多、更少或不同的步骤,且一些步骤之间的顺序可以与所描述和图示的不同,或者可以并行执行。
本发明可以硬件、软件、或硬件与软件的结合的方式实现。适于执行本文中描述的方法的任何计算机系统或其它装置都是合适的。一种典型的硬件和软件的组合可以是带有计算机程序的通用计算机系统,当该计算机程序被加载和执行时,控制该计算机系统而使其执行本发明的方法,并构成本发明的装置。
本发明也可体现在计算机程序产品中,该程序产品包含使能实现本文中描述的方法的所有特征,并且当其被加载到计算机系统中时,能够执行所述方法。
尽管已参照优选实施例具体示出和说明了本发明,但是本领域内的那些技术人员应理解,可在形式和细节上对其进行各种改变而不会背离本发明的精神和范围。