具体实施方式
图1是示出建立会话的第一连接114(1)和继续该会话的第二连接114(2)的示例性通信环境100。如图所示,示例性通信环境100包括多个客户机102(1)、102(2)、……、102(m),以及多个主机108(1)、108(2)、……、108(n),以及网络104和网关(NG)106。网关106充当网络104和内联网110之间的网关。主机108耦合到内联网110。
在所描述的实现中,客户机102(1)、102(2)、……、102(m)分别对应于地址“C1”、“C2”、……、“Cm”。客户机102的每一个可以是能够进行网络通信的任何设备,诸如计算机、移动站、娱乐设备、另一网络等等。客户机102也可对应于操作客户机设备的人或其它实体。换言之,客户机102可包括作为用户和/或机器的逻辑客户机。
网络104可以从诸如因特网、另一内联网、有线或无线电话网络、无线宽带网络等一个或多个网络中形成。用于客户机102的设备以及用于网络104的网络类型/拓扑结构的其它示例在下文参考图8来描述。各个客户机102能够通过网关106在网络104上与一个或多个主机108通信,反之亦然。
主机108(1)、108(2)、……、108(n)分别对应于地址“H1”、“H2”、……、“Hn”。主机地址H1、H2、……、Hn在内联网110上存在。主机108通常承载一个或多个应用程序(未示出)。这些应用程序(i)提供了用于与客户机102的交互和/或通信的服务,(ii)由客户机102使用,等等。仅作为示例,这些应用程序可包括文件传送程序、网站管理/服务器程序、远程访问程序、电子邮件程序、数据库访问程序等等。
每一主机108可对应于一个服务器和/或设备、多个服务器和/或多个设备、服务器的一部分和/或设备的一部分、其某一组合等等。用于主机108的特定示例性实现在后文参考图2、4和5进一步描述。此外,用于主机108的其它示例性设备实现在下文参考图8描述。
网关106可在一个或多个地址“NGN”处通过网络104来到达或定位,且网关106也以至少一个地址“NGI”在因特网110上存在。被定向到网关106的地址NGN的来自客户机102(或其它节点)的通信在网关106处接收,并且之后被路由到多个主机108(1)、108(2)、……、108(n)中的主机108。网关106由一个或多个网关元件(未在图1中单独示出)组成。每一网关元件106可包括路由器、代理服务器、负载平衡器、防火墙设备、其某一组合等中的全部或一部分。用于网关元件106的示例性非特定设备实现也在下文参考图8描述。
一般而言,连接114在客户机102和主机108之间通过网关106在网络104上构造。客户机102通常发起连接114,但是主机108可替换地可以是发起者。具体地在本示例中,客户机102(1)发起与主机108(2)的连接114(1)。然而,客户机102(1)对于主机108(2)的地址H2并非是私人的。相反,客户机102(1)将连接(例如,请求连接的分组)定向到网关106的地址NGN。
网关106然后依照某一默认策略(例如,规则)对连接114(1)执行路由操作116(1)。结果,网关106在此例中通过内联网110将连接114(1)路由到主机108(2)。一般而言,网关106不能简单地照原样将连接114的分组从客户机102(1)发送到网络地址H2处的主机108(2),因为分组是被目的地定址到网关106的地址NGN的。相反,网关106通常采用以下示例性选项的一个或多个来通过内联网110路由分组:网络地址转换(NAT)、半NAT、隧道、其某一组合等等。
在传输控制协议/网际协议(TCP/IP)环境中,NAT是通过(i)用网关106的IP地址NGI和NAT生成的端口号来覆盖源(即,客户机102(1))IP地址C1和端口号,以及(ii)用主机108(2)的IP地址H2来覆盖目的地IP地址NGN来执行的。半NAT是通过用主机108(2)的IP地址H2覆盖目的地IP地址NGN,使得源IP地址C1和端口号被保留来执行的。隧道是通过将每一分组封装在定址到主机108(2)的地址H2的新IP分组中,并将所封装的分组从网关106发送到可解封它们的主机108(2)来执行的。
在连接114(1)期间,在客户机102(1)和主机108(2)之间建立会话。对于所建立的连接114(1)的会话,在主机108(2)处产生会话上下文112。通常在客户机102(1)处产生类似的、相似的和/或相互的会话上下文(未示出)。会话上下文112促进了客户机102(1)和主机108(2)之间的通信。
由此,连接114(1)可以是或可以在其上建立许多不同类型的会话中的任意一 个或多个。示例性会话类型包括:(i)安全套接字层(SSL);(ii)传输层安全(TLS)会话;(iii)安全网际协议(IPsec)会话;(iv)基于超文本传输协议(HTTP)cookie的会话;(v)点对点隧道协议(PPTP)会话;(vi)IPSec/第2层隧道协议(L2TP)会话;(vi)专有会话;(viii)终端服务器会话;(ix)管理员定义的会话;(x)等等。这些不同会话类型的示例也阐明了可以如何建立和使用会话层。
会话上下文112的内容可以至少部分地根据为其产生该上下文的会话的类型而改变。例如,特定的会话上下文112可包括以下的一个或多个:TCP 4元组(例如,用于用TCP连接建立的会话);会话标识符;维护对应的会话的持久状态的一个或多个数据库条目的位置;提供给主机108(2)的客户机102(1)的公钥;协商的私钥;其它安全相关参数;等等。TCP 4元组包括源IP地址、源TCP端口、目的地IP地址、以及目的地TCP端口。作为当前标准下的SSL会话的示例,会话标识符的长度可达32字节。
如上所述,在构造了连接114(1)之后,在当前示例中在客户机102(1)和主机108(2)之间建立会话。客户机102(1)更具体地与驻留在和/或执行在主机108(2)上的至少一个应用程序建立会话。然而,为简明起见,这些应用程序一般可在参考主机108(2)时被包括在内。
会话建立阶段产生或得到会话上下文112。会话上下文112为客户机102(1)和主机108(2)之间的通信交换提供了上下文。会话上下文112可包括实际上对这些通信交换是关键的、仅仅是有益的、或某种程度上与之有关的信息。
假设客户机102(1)可以是逻辑客户机,会话上下文112可以与(i)特定的设备和/或特定的设备用户,以及(ii)主机108(2)之间的通信交换有关。因此,与用户客户机102(1)相关联的会话上下文112可继续与其相关联,即使用户客户机102(1)从不同的设备访问主机108。设备可以在客户机102(1)的本地层、在网络104层等上不同。这些不同设备情形的示例包括代理服务器情形(例如,某些互联网服务提供商(ISP)的情形)、终端服务器会话情形等等。
会话上下文112储存在主机108(2)处,和/或可从其中访问。当连接114(1)完成或停止时,会话上下文112可以不被再次使用。相反,如果客户机102(1)试图对同样的、相似的或相关等的会话发起与主机108的另一连接,则会话上下文112可以再次有用。如果这一其它连接不被路由到储存会话上下文112的同一主机108(2),则客户机102(1)必须建立新的会话,这可能是耗时的、数据/处理密集的、 和/或令用户感到受挫的(尤其是对应于客户机102(1)的用户)。如果在网关106处没有某一会话亲缘性(affinity)保存机制,则第二连接也被路由到主机108(2)通常除了随机发生之外没有更高的可能性。
会话亲缘性保存机制或功能适用于将连接(包括分组级和逻辑级请求)路由回到与要用该连接继续的现有会话的会话上下文112相关联的主机108。例如,会话亲缘性保存功能试图使得对客户机102(1)的连接114(2)能够被路由回到与会话上下文112相关联的主机108(2)。这一会话亲缘性保存机制可以依照一个或多个示例性策略来实现。尽管一般适用于网关106,然而这些示例性策略是从负载平衡实现的角度来描述的。
第一策略涉及用“粘性”模式来进行负载平衡,在该模式中,从例如给定的IP地址传入的大多数(如果不是全部)请求被路由到单个主机108。然而,该策略依赖于给定IP地址表示单个客户机102的假设,这显然对于代理服务器不是真实的。代理服务器对负载平衡器来说看似为单个IP地址,但是它实际上表示了对于许多,可能上千台客户机102的请求。结果,将所有这些请求路由到单个主机108可能导致设备之间/之中非常不均衡的负载平衡。通常,接收来自代理服务器的传入请求的设备必然会被分配较大数量的客户机102。此外,使用该第一策略,来自具有改变的IP地址的客户机102的请求也被不正确地路由。IP地址可以在移动环境中、当地址临时从IP地址池分配时等情况下改变。
第二策略涉及采用使用会话标识符的负载平衡试探。继续现有会话的请求被路由到先前使用特定的个别会话标识符来建立(例如,协商)该会话的主机108。在操作中,在特定的客户机102和特定的主机108之间建立的特定的会话之后,储存将该特定主机108链接到该特定会话的映射,该会话由一特定会话标识符来标识。当接收到来自客户机102的包括该特定会话标识符的请求时,该请求可以使用映射被路由回到该特定主机108。该第二策略因此允许会话亲缘性的保存。
然而,第二策略从效率角度来看必然伴有相对的缺陷。首先,负载平衡器维护会话标识符和主机108之间的这些映射的表。该表的大小可以是巨大的,因为对每一现有会话都有一独立的条目。例如,如果每一主机108高速缓存10,000个会话,且有500个主机108,则该表使用五百万个条目来以优化的效率路由对这些会话的请求。其次,对于每一新建立的会话,负载平衡器监视会话建立阶段,直到检测到会话标识符且可以向表添加条目。第三,每次当接收到恢复会话的请求时,负载平衡器咨询(可能非常大的)表以执行路由。
第四,由于会话具有生存期,且由于过度拥挤而迅速到达期限或从主机108的高速缓冲中丢弃,所以负载平衡器表也实现某一时效机制来反映各个主机108正在做什么或期望对其自己的高速缓存做什么。如果主机108和负载平衡器时效机制不同步,则负载平衡器可能过早地删除在主机108上仍有效的会话的状态信息,或者相反,它可能保留任何主机108上不再存在的会话的状态信息。
会话亲缘性保存功能的第三种策略可通过对新建立的会话的会话标识符的选择性创建/确定在网关106处实现会话亲缘性保存,且没有对每一个别的会话需要一个条目的表。当确定会话标识符时,主机108在其中嵌入主机标识符。
网关106从会话标识符中提取主机标识符,并对响应于该主机标识符向其分配了该会话标识符的会话路由通信量。该第三种策略因此可采用相对无状态的方法,它使用具有有界数量的条目(例如,等于主机108的数量的数量的条目)的表,和/或路由会话延续请求而不使用具有这样的每会话条目的表。该第三种策略的各方面将在此进一步描述。
在通信环境100的示例中,在作为连接114(1)的一部分完成了会话建立阶段之后,在主机108(2)处产生会话上下文112。连接114(1)之后停止。当对连接114(2)的请求到达网关106时,在其上执行路由操作116(2)。这一连接114(2)被指示为用于按照分配给它的会话标识符而对应于会话上下文112的先前建立的会话的延续。该会话标识符包括依照第三策略的主机108(2)的标识符。对主机108(2)使用从会话延续请求的会话标识符中提取的主机标识符,连接114(2)在路由操作116(2)中被路由到与会话上下文112相关联的主机108(2)。
项114(1)和114(2)也可表示发生在单个连接内的会话相关消息(例如,请求),以及在两个或多个连接期间发生的消息。此外,客户机102和主机108之间的某些通信在此被描述为消息。消息通常作为一个或多个分组从客户机102传播到主机108,反之亦然。客户机消息从客户机102发送,而主机消息从主机108发送。会话消息是涉及会话的消息(例如,涉及会话的建立、延续/恢复、拆卸等的消息)。一个示例性会话消息在下文参考图3进一步描述。
会话发起消息是由客户机102和/或主机108发送的涉及发起会话的消息。会话延续消息是由客户机102和/或主机108发送的涉及继续现有会话的消息。会话发起消息和会话延续消息可具有明显不同的格式、类似的格式、相同的格式等等。然而,在所描述的实现中,会话发起消息和会话延续消息至少具有相似的格式,其中会话标识符的存在指示客户机会话消息是客户机会话延续消息,而会话标识符的 缺失指示客户机会话消息是客户机会话发起消息。
尽管此处的描述不如此限制,但是以下描述的实现偶尔会强调或集中于网关106的负载平衡实现。同样,尽管其它协议和协议的组合是适用的,且可替换地使用,但为简明性起见,以下描述主要使用了TCP/IP连接和SSL/TLS会话。
作为示例而非局限,客户机会话发起消息或客户机会话延续消息可以是依照TLS协议版本1.0规范(1999年1月)的“Client Hello(客户机问候)”消息。如果Client Hello消息包括会话标识符,则它可以是客户机会话延续消息,否则它可以是客户机会话发起消息。类似地,主机会话发起消息或主机会话延续消息可以是依照TLS协议版本1.0规范的“Server Hello(服务器问候)”消息。如果Server Hello消息包括由客户机在Server Hello消息所响应的Client Hello消息中提供的会话标识符,则它可以是主机会话延续消息。如果Server Hello消息是响应于不包括会话标识符的Client Hello消息,则它可以是主机会话发起消息。为主机会话发起消息创建会话标识符以及制定这一主机会话发起消息在下文中进一步描述。
图2示出了对会话消息提供和使用路由提示的一个示例性方法。会话消息202、204和206通过网关元件106在网络104上从客户机102发送到主机108,或在相反方向发送。网关元件106表示网关106(图1)的元件。尽管消息202、204和206的每一个被示为由网关元件106路由,但每一个别的会话消息可以替换地由网关106的不同的个别元件路由。
如图所示,主机108包括处理发送到客户机102以及从客户机102接收的消息的消息处理器208。消息处理器208包括传入消息处理器部分208IC和传出消息处理器部分208OG。主机108与主机标识符214相关联,主机标识符214储存在主机108上或可从其中访问。主机标识符214的示例在下文参考图3进一步描述。主机108还包括使用主机标识符214来创建会话标识符(例如,会话标识符210)的会话标识符创建器212。
在所描述的实现中,客户机102具有地址“C”,而网关元件106具有地址NGN和NGI,其中地址C和NGN位于网络104上。主机108具有地址“H”,它连同地址NGI一起位于内联网110上。来自客户机102的会话消息通过网络104在网关元件106处接收。网关元件106然后用路由操作216通过内联网110将这些会话消息向前路由到主机108。在相反的路径上,来自主机108的会话消息通过内联网110被发送/传输到网关元件106,网关元件106用路由操作216将它们路由回到客户机102。
具体地,客户机102通过网络104将客户机会话发起消息(SIM)202发送到网关元件106。客户机会话发起消息202不包括会话标识符,因为它包括了对新会话的请求。由于客户机会话发起消息202不是用于现有会话的,因此网关元件106使用通用策略在路由操作216(A)中将客户机会话发起消息202路由到主机108。例如,网关元件106可依照当前和/或相关的负载平衡策略(例如,传入新会话请求的循环分发)来路由客户机会话发起消息202。
主机108通过内联网110在传入消息处理器部分208IC处接收客户机会话发起消息202。如果没有会话标识符,则传入消息处理器部分208IC将客户机会话发起消息202识别为用于新会话。激活会话标识符创建器212以为所请求的新会话创建新会话标识符。会话标识符创建器212确定/检索主机标识符214。
会话标识符创建器212使用主机标识符214来创建会话标识符210。例如,会话标识符创建器212将主机标识符214插入到会话标识符210中。会话标识符210也可包括除主机标识符214的值之外的其它值。会话标识符210的其它值可以使用一种或多种技术的任一种来创建。这些技术包括但不限于,随机选择的值、来自递增计数器的值、安全相关的值、散列值、其某一组合等等。
在所描述的实现中,会话标识符210的第一部分(即,主机标识符214)专用于表示当前拥有对应的会话的主机108。该第一部分在给定群集的所有主机108上是唯一的(即,没有一个主机108将其主机标识符214与同一群集中的任何其它主机108共享)。第一部分可以是主机108拥有的IP地址、由管理员分配的整数等等。会话标识符的第二部分可提高会话标识符210的唯一性(以及不可预测性)。可对该第二部分使用各种技术,诸如使用对每一新会话递增一(并能翻转到0)的全局计数器和使用伪随机和/或散列技术的组合。
会话标识符创建器212向消息处理器208提供会话标识符210。传出消息处理器部分208OG准备/制定包括会话标识符210的主机会话发起消息204。主机会话发起消息204通过内联网110被发送到网关元件106。网关元件106然后使用路由返回路由操作216(B)通过网络104将主机会话发起消息204发送到客户机102。尽管未如此示出,但主机会话发起消息204可替换地沿不包括网关元件106的路径被路由返回,尤其是因为网关元件106能够路由随后的客户机消息而无需储存每一会话的状态信息。
客户机102从主机会话发起消息204中提取会话标识符210,并保留会话标识符210以供将来的可能使用来继续所建立的会话(以及用于对所建立的会话的任何 当前使用)。在某一点处,对所建立的会话的实际使用停止(例如,终止连接)。为继续与主机108的所建立的且现有的会话,客户机102制定客户机会话延续消息(SCM)206。客户机102在客户机会话延续消息206中包括保留的会话标识符210。客户机会话延续消息206然后通过网络104从客户机102发送到网关元件106。
当网关元件106接收到客户机会话延续消息206时,它检测到客户机102正在试图继续由所包括的会话标识符210所指示的现有会话。在路由操作216(C)中,网关元件106使用会话标识符210来路由客户机会话延续消息206。更具体地,网关元件106使用作为会话标识符210的一部分且从其中提取的主机标识符214来路由客户机会话延续消息206。
主机标识符214标识它所相关联的主机108。因此,网关元件106在路由操作216(C)中使用由主机标识符214指示的主机108的标识来路由客户机会话延续消息206。客户机会话延续消息206因此通过内联网110从网关106发送到主机108。在主机108处,传入消息处理器部分208IC接收客户机会话延续消息206,且可使用储存的会话上下文(例如,图1所示的会话上下文112)来开始先前建立的会话的延续。
主机标识符214可标识与其以多种方式相关联的主机108。例如,主机标识符214可包括主机108的(内联网)网络地址H。在这一情况下,网关元件106可将客户机会话延续消息206路由到主机108,而不使用会话相关表或主机标识符表。换言之,可以使用主机标识符214或至少其部分作为对客户机会话延续消息206放置在内联网110上的一个或多个分组的目的地地址,将客户机延续消息206转发到主机108。
或者,主机标识符214可映射到主机108的地址H。尽管该映射方式涉及表(或计算),但表中的条目数“n”可等于服务器群集中、内联网110上、web场中等的主机108的数目。由此,该表具有有界的条目数,且不包括每一会话的状态信息。参考上文使用的示例,如果每一主机108高速缓存10,000个会话,且有500个主机108,则该表可使用500个条目(而非5百万个)以有效地为这些会话路由请求。
以下表1是将通过主机108的地址将主机标识符214链接到主机108的示例性链接数据结构。
表1用于将主机标识符214映射到主机地址H的数据结构
在操作中,网关元件106从客户机102接收到的客户机延续消息206的会话标识符中提取主机标识符214(#)。网关元件106然后访问诸如表1的链接数据结构,使用主机标识符214(#)来确定链接到其上的主机地址H#。该主机地址H#对应于内联网110上的主机108(#)的地址,且用作目的地地址来将客户机会话延续消息206路由到主机108(#)。示例性主机标识符-网络地址链接表在下文中参考图6A和6B来描述。
图3示出了可包括路由提示的示例性会话消息302。会话消息302是涉及一个或多个会话的消息。如图所示,会话消息302包括多个字段。这多个字段包括会话标识符210以及如由其它字段304表示的一个或多个其它字段。
会话标识符210包括至少一个主机标识符214。主机标识符214包括设备标识符306以及可任选的应用程序标识符308。设备标识符306可包括网络地址310或键312(A)。或者,主机标识符214可包括键312(B)。
在所描述的实现中,用于会话消息302的一个或多个格式是由诸如SSL/TLS等网络或通信标准或协议来定义的。会话标识符210可以位于会话消息302中的任何地方,尤其是如由适用的标准或协议所定义的。其它字段304可包括源和/或目的地地址、一般头部信息、安全类型信息、其它会话相关信息、数据、其某一组合等等。作为示例,会话消息302可以是如由TLS协议版本1.0标准所定义的ClientHello或Server Hello消息,且会话标识符210可对应于任一TLS Hello消息的“SessionID”字段。包括安全类型信息的字段304的一个示例是指示制定会话消息302的会话参与者(例如,客户机或主机)支持哪些密码选项的密码字段。
会话标识符210包括主机标识符214和可任选的其它值,它们共同形成会话标识符。该会话标识符填充会话消息302的会话标识符字段210。主机标识符214可以位于会话标识符210的字段内的任何地方,包括在会话标识符210字段上划分、分散和/或散布。
在为易于提取的所述实现中,会话标识符210中对应于主机标识符214的子 字段被实现为连续的字节序列。该连续的字节序列出现在离会话标识符210的最高字节的固定偏移量处。然而,固定偏移量可以改为是从最低字节开始的偏移。
对于额外的灵活性,主机标识符214可以被外部地配置,而非由例如SSLTLS组件选择。例如,主机标识符214可以通过作为从注册表键中读取的值来外部配置。如上所述,管理员可诸如通过设置注册表键值或通过某一其它机制来确定主机标识符214。
主机标识符214或者可以被嵌入与来自会话标识符210的字段不同的字段中。例如,可使用发送到客户机102且当请求恢复现有会话时可不改变地从该客户机102返回的特定字段。该替换在消息格式和底层协议准许或要求具有期望的会话上下文112的主机108为该特定字段创建/选择值时尤其适用。对于该替换,网关元件106至少使用该特定字段的部分内容来执行路由操作216。
主机标识符214包括设备标识符306,且还可包括应用程序标识符308。设备标识符306对应于主机标识符214相关联的主机的设备/用于该主机的设备。如图所示,设备标识符306包括标识主机108的设备的网络地址310或键312(A)。
网络地址310是用于主机108的设备在内联网110上的网络地址。由此,如果设备标识符306包括网络地址310,则网关元件106可将设备标识符306插入到将被转发给主机108的一个或多个分组的目的地地址中。
键312(A)是映射到用于主机108的设备在内联网110上的网络地址的值。该映射可以通过在表中查找网络地址、通过执行计算(例如,遵循公式、实现算法等)等来执行。例如,键312(A)可以被链接到上文参考表1所描述的数据结构中的主机地址H。其中键312(A)被链接到网络地址310的一个示例性表在下文参考图6A描述。
当主机标识符214包括设备标识符306和应用程序标识符308时,主机标识符214包括应用程序端点。应用程序标识符308标识了由设备标识符306标识的主机设备上的特定应用程序。由此,包括设备标识符306和应用程序标识符308的主机标识符214能够从在单个主机108上和/或跨多个主机108复制的多个应用程序中标识特定的应用程序。
包括设备标识符306但不包括应用程序标识符308的主机标识符214也可包括应用程序端点。例如,当设备仅有一个应用程序时,当设备是多宿主时,当设备的NIC拥有两个IP地址时等等,这是尤其可能的。在任一情况下,主机标识符214用于标识特定的应用程序以及特定的主机108。因此,客户机会话延续消息206的 路由可以迅速地对与请求客户机102具有会话亲缘性的期望的应用程序执行。
主机标识符214可替换地包括键312(B)。键312(B)是映射到(i)用于主机108的设备在内联网110上的网络地址,以及(ii)其上的特定应用程序的值。这一映射使得键312(B)能够映射到应用程序端点,而无需使用单独的应用程序标识符308。该映射可通过在表中查找网络地址/应用程序标识符对,通过执行计算(例如,遵循公式、实现算法等)等来执行。例如,键312(B)可以被链接到数据结构中的网络地址310和应用程序标识符308。其中键312(B)链接到网络地址310和应用程序标识符308的一个示例性表在下文参考图6B来描述。
在另一替换实现中,代码可被嵌入在会话消息302的会话标识符210的字段中。该代码可占据部分或整个会话标识符210字段。该代码可用于将信息(例如,数据、命令等)从主机108传递到网关元件106和/或客户机102。会话消息302的会话标识符字段可以用代码本身和/或用使用该代码创建的会话标识符210来填充。客户机102和/或网关元件106可以在代码映射(例如,查找、计算等)之后提取代码并照原样使用所传递的信息等。
图4是示出用于提供路由提示的示例性方法的流程图400。流程图400包括七个框402-414。尽管流程图400的动作可以在其它环境中并使用各种硬件体系结构和软件模式来执行,但是图1-3(以及5)尤其用于示出该方法的某些方面和示例。例如,主机108可以执行所描述的动作。
在框402,接收客户机会话消息。例如,主机108可从客户机102接收客户机会话消息202或206(例如,在消息处理器208的传入消息处理器部分208IC)。在框404,确定所接收的客户机会话消息是否包括消息标识符。例如,可检查所接收的客户机会话消息202或206(例如,以诸如会话消息302等格式)以确定它是否在会话标识符字段中有会话标识符210。
如果所接收的客户机会话消息包括会话标识符210,则所接收的客户机会话消息是客户机会话延续消息(SCM)206,且方法在框412继续。另一方面,如果所接收的客户机会话消息不包括会话标识符210,则所接收的客户机会话消息是客户机会话发起消息(SIM)202,且方法在框406继续。
在框406,用主机标识符创建会话标识符。例如,主机108的主机标识符214由会话标识符创建器212用于创建会话标识符210。会话标识符创建器212可将主机标识符214连同它的其它值一起插入到会话标识符210中。
在框408,用所创建的会话标识符制定主机会话发起消息。例如,传出消息处 理器部分208OG可以制定(例如,使用诸如会话消息302等的格式)用包括主机标识符214的会话标识符210填充的主机会话发起消息204。在框410,发送主机会话发起消息。例如,主机108可通过网关元件106经由网络104向客户机102发送主机会话发起消息204。
另一方面,如果确定(在框404)所接收的客户机会话消息确实包括会话标识符,则在框412用所接收的会话标识符制定主机会话延续消息。例如,传出消息处理器部分208OG可制定(例如,使用诸如会话消息302等的格式)用所接收的会话标识符210(可包括先前嵌入的主机标识符214)填充的主机会话延续消息(未在图2中特别示出)。在框414,发送主机会话延续消息。例如,主机108可通过网关元件106经由网络104向客户机102发送主机会话延续消息。
图5示出了对会话消息提供和使用路由提示的另一示例性方法。该示例性方法集中于在网关元件106处使用路由提示。如图所示,客户机102(1)、102(2)、……、102(m)通过网络104提交定址到NGN处的网关元件106的请求。
网关元件106将这些请求路由到主机108(1)、108(2)、……、108(n)。每一主机108(1)、108(2)、……、108(n)与相应的主机标识符214(1)、214(2)、……、214(n)相关联。例如,主机标识符214可从特定种类的会话可能定向到的一组端点中唯一地标识应用程序端点。
在所描述的实现中,网关元件106涉及网络负载平衡。与网络负载平衡一起(或具有路由功能的其它网关),可采用一个或多个路由策略508。例如,路由策略508可包括管理员可编写或设置以使网络负载平衡器路以所规定的方式路由传入分组和/或请求的路由策略。路由策略508也可包括可依赖于诸如主机108的健康和负载信息等实时参数的更灵活和/或更广泛的路由策略。
网关元件106的网络负载平衡实现可用集成的网络负载平衡功能来实现。该实现参考客户机会话延续消息206(A)和路由操作216(C)来描述。网关元件106的网络负载平衡实现可用分离的网络负载平衡功能来实现。该实现参考客户机会话延续消息206(B)和路由操作512来描述。
在分离的功能的该示例性网络负载平衡实现中,网关元件106包括转发器502、分类器504、主机标识符(HI)-网络地址(NA)链接表506。转发器502在客户机102和主机108之间分别使用网络104和内联网110转发分组。分类器504对分组、请求、连接等进行分类,以执行路由操作,来实现网络负载平衡功能和/或会话亲缘性保存功能。
转发器502和分类器504可以驻留在网关106的不同设备上并在其上执行,或可以驻留在网关106的单个设备上或在其上执行。此外,转发器502和分类器504的每一个可以在一个以上设备上分布。此外,网关106中可以有多个转发器502组件和/或分类器504组件。如图所示,每一分类器504包括主机标识符-网络地址链接表506。或者,网关106可仅有一个主机标识符-网络地址链接表506。主机标识符-网络地址链接表506也可位于不同的功能组件上和/或与不同的功能组件相关联。
在集成网络负载平衡实现的操作中,客户机102(1)通过网络104向地址NGN处的网关元件106发送客户机会话延续消息206(A)。客户机102(1)先前已经在主机108(1)处建立了会话,且保留了分配给先前建立的会话的会话标识符210(1)。该会话标识符210(1)包括与主机108(1)相关联的主机标识符214(1)。客户机会话延续消息206(A)包括会话标识符210(1)。
在集成网络负载平衡功能的实现中,网关元件106为客户机会话延续消息206(A)执行路由操作216(C)。由于客户机会话延续消息206(A)具有包括主机标识符214(1)的会话标识符210(1),因此网关元件106使用会话标识符210(1)的主机标识符214(1)部分路由客户机会话延续消息206(A)。一般而言,网关元件106使用从会话标识符210(1)中提取的主机标识符214(1)将客户机会话延续消息206(A)路由到主机108(1)。
具体地,网关元件106可将主机标识符214(1)插入到被路由到主机108(1)的客户机会话延续消息206(A)的分组的目的地地址字段中。该方法在主机标识符214(1)包括主机108(1)的网络地址H1时是有效的。
或者,网关元件106也可执行从主机标识符214(1)到网络地址H1的映射。例如,可对这一映射执行计算操作或查找操作。对于计算操作,主机标识符214(1)通过某一公式、算法等被映射到网络地址H1。对于查找操作,主机标识符214(1)通过访问包括将主机标识符214(1)链接到网络地址H1的条目的主机标识符-网络地址表,诸如主机标识符-网络地址链接表506被映射到网络地址H1。这样的表的一个示例在下文中参考图6A进一步描述。
在分离的网络负载平衡实现的操作中,客户机102(2)通过网络104向地址NGN处的网关元件106发送客户机会话延续消息206(B)。客户机102(2)先前已经在主机108(2)处建立了会话,且保留了分配给先前建立的会话的会话标识符210(2)。该会话标识符210(2)包括与主机108(2)相关联的主机标识符214(2)。客户机会话延续消 息206(B)包括会话标识符210(2)。
在分离的网络负载平衡功能的实现中,转发器502接收客户机会话延续消息206(B)。由于客户机会话延续消息206(B)用于对转发器502未知的会话(以及可能用于新连接),因此转发器502在通信交换510将客户机会话延续消息206(B)发送给分类器504。客户机会话延续消息206(B)具有包括主机标识符214(2)的会话标识符210(2),因此分类器504在路由操作512使用会话标识符210(2)的主机标识符214(2)部分来分类客户机会话延续消息206(B)。同样在通信交换510中,客户机504向转发器502返回客户机会话延续消息206(B)和/或在转发器502处添加路由条目,以指示该会话的消息/分组要被转发给主机108(2)。
由此,分类器504和转发器502使用从会话标识符210(2)中提取的主机标识符214(2)联合地将客户机会话延续消息206(B)路由到主机108(2)。如上文相对于路由操作216(C)所描述的,转发器502和分类器504(i)可以将主机标识符214(2)插入到目的地地址字段中,(ii)可以执行主机标识符214(2)到网络地址H2的映射(例如,计算、查找等),等等。
主机标识符-网络地址链接表506被描述为分类器504的一部分或与分类器504相关联。尽管主机标识符-网络地址链接表506被示出为位于网关元件106处,但是它也可以在不同的设备(例如,代理服务器设备)上。当位于这样的代理服务器设备上时,具有分离或集成(例如,网络负载平衡相关)功能的网关元件106可以从其中访问主机标识符-网络地址链接表506。
图6A和6B分别是示出用于路由提示的主机标识符214和网络地址310链接的示例性表506(A)和506(B)。主机标识符-网络地址链接表506(A)一般对应于其中主机标识符214映射到设备的实现。主机标识符-网络地址链接表506(B)一般对应于其中主机标识符214映射到应用程序端点的实现。然而,主机标识符-网络地址链接表506(A)也可映射到如上文参考图3所描述的应用程序端点,
如图所示,主机标识符-网络地址链接表506(A)将相应的主机标识符214链接到相应的网络地址310。表506(A)包括多个条目602(1A)、602(2A)、……、602(nA)。每一条目602(1A)、602(2A)、……602(nA)各自包括相应的主机标识符214(1)、214(2)、……、214(n)以及链接到其上的相应的网络地址310(1)、310(2)、……、310(n)。
在所描述的实现中,表506(A)包括“n”个条目,其中n等于主机108的数目,且每一主机标识符214(1)、214(2)、……、214(n)对应于键312(A)(见图3)。在这一实现中,网络地址310(1)、310(2)、310(n)分别对应于主机地址H1、H2、……、 Hn(例如,图5)。在操作中,网关元件106访问具有主机标识符214(#)的表506(A)以定位与其相关联的条目602(#A)。从该条目602(#A)中,提取链接到主机标识符214(#)的网络地址310(#),用于将客户机会话延续消息206(A)或206(B)路由到主机108(#)。
如图所示,主机标识符-网络地址链接表506(B)将相应的主机标识符214链接到相应的网络地址310和应用程序标识符308。表506(B)包括多个条目602(1B)、602(2B)、602(3B)、……、602(wB)。每一条目602(1B)、602(2B)、602(3B)、……、602(wB)各自包括(i)相应的主机标识符214(1*)、214(2*)、214(3*)、……、214(w),以及(ii)链接到主机标识符214的相应的网络地址310(1)、310(2)、……、310(n)和相应的应用程序标识符308(1)、308(2)、308(3)、……、308(z)。
在所描述的实现中,表506(B)包括“w”个条目,其中w等于主机108上应用程序端点的数目,且每一主机标识符214(1*)、214(2*)、214(3*)、……、214(w)对应于键315(B)(图3)。作为解释,且参考图5,所示的主机标识符-网络地址链接表506(B)可以在以下示例性情况中使用:主机108(1)与主机标识符214(1*)相关联,且具有对应于应用程序标识符308(1)的一个应用程序,且地址H1对应于网络地址310(1)。主机108(2)与主机标识符214(2*)和214(3*)相关联,且具有对应于应用程序标识符308(2)和308(3)的两个应用程序,且地址H2对应于网络地址310(2)。
另外,主机108(n)与主机标识符214(w)相关联,且具有对应于应用程序标识符308(z)的一个应用程序,且地址Hn对应于网络地址310(n)。如果每一应用程序标识符308对于每一应用程序安装是唯一的,则变量“z”可以等于应用程序端点的数目w。另一方面,如果应用程序标识符308在同一应用程序类型的应用程序安装之间共享,则z可以小于w。
图7是示出用于使用路由提示的示例性方法的流程图700。流程图700包括八个框702-716。尽管流程图700的动作可以在其它环境中且用各种硬件体系结构和软件方案来执行,但是特别地使用了图1-3和5-6来示出该方法的某些方面和示例。例如,一个或多个网关元件106可执行所描述的动作。
在框702,接收客户机消息。例如,网关元件106可以通过网络104从客户机102接收客户机消息。在框704,检查所接收的客户机消息的内容。例如,网关元件106可以检查会话消息302的一个或多个字段,诸如会话标识符210的字段。
在框706,确定所接收的客户机消息是否为会话相关的。例如,如果所接收的客户机消息包括具有会话标识符210的字段的会话消息302,则所接收的客户机消 息是会话相关的。另一方面,如果所接收的客户机消息没有会话标识符210的字段,则所接收的客户机消息不是会话相关的,且该方法在框708继续。
在框708,使用默认策略路由所接收的客户机消息。例如,网关元件106可使用路由策略508的通用路由策略,诸如默认网络负载平衡策略来路由所接收的客户机消息。如由虚线箭头718A所指示的,网关元件106然后可等待下一客户机消息的接收。
另一方面,如果确定(在框706)所接收的客户机消息是会话相关的,则在框710检查会话标识符字段。例如,网关元件106可检查所接收的客户机会话消息302的会话标识符字段。在框712,确定客户机是否使用会话标识符字段指定了会话标识符。例如,网关元件106可确定会话标识符210是否填充会话消息302的会话标识符字段。
如果确定(在框712)没有指定任何会话标识符,则所接收到的客户机会话发起消息202可在框708使用默认策略来路由。另一方面,如果确定(在框712)客户机指定了会话标识符,则在框714从所指定的会话标识符中提取主机标识符。例如,网关元件106可从所接收的客户机会话延续消息206中所指定的会话标识符210中提取主机标识符214。
在框716,使用所提取的主机标识符来路由所接收的客户机消息。例如,所接收的客户机会话延续消息206可以由网关元件106路由到与主机标识符214相关联的主机108。该路由可能需要将主机标识符214不经修改地插入到转发给主机108的一个或多个分组的目的地字段中,或可能将需要主机标识符214映射到至少一个网络地址310。映射可以通过使用主机标识符214在表506中查找网络地址310,通过在主机标识符214上执行导致网络地址310的计算(例如,遵循公式、实现算法等)等来实现。
尤其是对于其中网关元件106是网络负载平衡器的实现,网关元件106可具有对涉及多个主机108的健康和/或负载信息的访问。该健康和/或负载信息可指示与所提取的主机标识符214相关联的目的地(例如,主机108和/或其应用程序端点)由于健康和/或负载原因而不适用于或不能处理会话延续。在这一情况下,网关元件106即使在客户机102指定了包括主机标识符214的会话标识符210的情况下,也可对默认的路由策略执行框708的动作。
在框716的动作之后,如由虚线箭头718B所指示的,网关元件106可等待下一客户机消息的接收。网关元件106可根据所提取的主机标识符214的类型,以多 种方式使用所提取的主机标识符214来路由所接收的客户机会话延续消息206。
例如,如果主机标识符214包括设备标识符306和应用程序标识符308,或者如果键312(B)映射到主机108的设备和应用程序,则网关元件106可将所接收的客户机会话延续消息206直接路由到预期的应用程序。另外,网关元件106可能能够使用主机标识符214的设备标识符306的网络地址310实现来将所接收的客户机会话延续消息206路由到有亲缘性的主机108,其中网络地址310用作所路由的一个或多个分组的目的地地址。
或者,网关元件106可使用主机标识符214的设备标识符306的键312(A)实现来查找有亲缘性的主机108的设备的网络地址310。例如,键312(#)可用于访问将键312(A)映射到主机108的网络地址310的表506(A)(例如,数据结构)。具有键312(#)的条目602(#A)位于该数据结构中。提取链接到该定位的条目602(#A)中的键312(#)的网络地址310(#),并将其用于将客户机会话延续消息206路由到有亲缘性的主机108。
此外,网关元件106可使用主机标识符214的设备标识符306和应用程序标识符308的应用程序端点专用键312(B)实现来查找具有亲缘性的主机108的设备的网络地址310及其应用程序的应用程序标识符308。例如,键312(#)可用于访问将键312(B)映射到主机108的应用程序端点的表506(B)(例如,数据结构)。具有键312(#)的条目602(#B)位于数据结构中。提取链接到该定位的条目602(#B)中的键312(#)的应用程序端点(例如,网络地址310(#)和应用程序标识符308(#)),并将其用于将客户机会话延续消息206路由到具有亲缘性的主机108的特定设备/用于主机108的特定设备上的特定应用程序。
图1-7的动作、方面、特征、组件等是在被划分成多个框的图中示出的。然而,描述和/或示出图1-7的多个框的顺序、号码、位置、互连、布局等并不旨在被解释为限制,且可以用任何方式组合、重新排列、增加、省略等任意数量的框来实现用于路由提示的一个或多个系统、方法、设备、过程、介质、应用程序编程接口(API)、装置、排列等。此外,尽管此处的描述包括对特定实现(以及图8的示例性操作环境)的引用,但所示和/或描述的实现可以用任何合适的硬件、软件、固件或其组合,且使用任何合适的网络组织、传输/通信协议、客户机-服务器体系结构等来实现。
图8示出了能够实现用于此处所描述的路由提示的至少一个系统、设备、装置、组件、安排、协议、途径、方法、过程、介质、API、其某一组合等的示例性 计算(或通用设备)操作环境800。操作环境800可以在下文描述的计算机和网络体系结构中或在单独的情况下使用。
示例性操作环境800仅是环境的一个示例,且不旨在对适用的设备(包括计算机、网络节点、娱乐设备、移动装置、通用电子设备等)体系结构的使用范围或功能提出任何局限。也不应将操作环境800(或其设备)解释为对图8所示的组件的任一个或任何组合有任何依赖性和要求。
其它路由提示可以用众多其它的通用或专用设备(包括计算系统)环境或配置来实现。适合使用的公知的设备、系统、环境和/或配置的示例包括但不限于,个人计算机、服务器计算机、瘦客户机、胖客户机、个人数字助理(PDA)或移动电话、手表、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子设备、视频游戏机、游戏控制台、便携式或手持式游戏装置、网络PC、小型机、大型机、网络节点、包括任意上述系统或设备的分布式计算环境、其某一组合等等。
路由提示的实现可在处理器可执行指令的一般上下文环境中描述。一般而言,处理器可执行指令包括例程、程序、协议、对象、接口、组件、数据结构等等,它们执行和/或启用特定的任务和/或实现特定的抽象数据类型。此处某些实施例中所描述的路由提示也可以在分布式处理环境中实践,其中,任务由通过通信链路和/或网络链接的远程链接的处理设备来执行。尤其是在分布式计算环境中,处理器可执行指令可以位于单独的存储介质中、由不同的处理器执行、和/或通过传输介质传播。
示例性操作环境800包括计算机802形式的通用计算设备,它可包括具有计算/处理能力的任何(例如,电子)设备。计算机802的组件可包括但不限于,一个或多个处理器或处理单元804、系统存储器806以及将包括处理器804的各类系统组件耦合至系统存储器806的系统总线808。
处理器804不限于从其中形成处理器或其中采用处理机制的材料。例如,处理器804可以由半导体和/或晶体管(例如,电子集成电路(IC))构成。在这一上下文中,处理器可执行指令可以是电子可执行指令。或者,处理器804或用于处理器804的机制以及因此用于计算机802的机制可包括,但不限于,量子计算、光学计算、机械计算(例如,使用纳米技术)等等。
系统总线808表示任何多种类型的有线或无线总线结构的一种或多种,包括存储器总线或存储器控制器、点对点连接、交换光纤、外围总线、加速图形端口、 以及使用各类总线体系结构的处理器或局部总线。作为示例,这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线、外围部件互连(PCI)总线(也称为Mezzanine总线)、其某一组合等等。
计算机802通常包括各种处理器可访问介质。这类介质可以是可由计算机802或另一(例如,电子)设备访问的任一可用介质,并包括易失性和非易失性介质、可移动和不可移动介质、以及存储和传输介质。
系统存储器806包括诸如随机存取存储器(RAM)810等易失性存储器,和/或诸如只读存储器(ROM)812等非易失性存储器形式的计算机存储介质。基本输入/输出系统(BIOS)814包括如在启动时帮助在计算机802内的元件之间传输信息的基本例程,通常储存在ROM 812中。RAM 810通常包含处理单元804立即可访问和/或当前正在操作的数据和/或程序模块/指令。
计算机802也可包括其它可移动/不可移动、和/或易失性/非易失性存储介质。作为示例,图8示出了(通常)对不可移动、非易失性磁介质(未单独示出)进行读写的硬盘驱动器或盘驱动器阵列816;(通常)对可移动、非易失性磁盘820(如,“软盘”)进行读写的磁盘驱动器818;以及(通常)对可移动、非易失性光盘824,如CD、DVD或其它光介质进行读写的光盘驱动器822。硬盘驱动器816、磁盘驱动器818和光盘驱动器822的每一个通过一个或多个存储介质接口826连接到系统总线808。或者,硬盘驱动器816、磁盘驱动器818和光盘驱动器822可通过一个或多个单独或组合的接口(未示出)连接到系统总线808。
盘驱动器及其相关联的处理器可访问介质为计算机802提供了诸如数据结构、程序模块和其它数据等处理器可执行指令的非易失性存储。尽管示例性计算机802示出了硬盘816、可移动磁盘820和可移动光盘824,然而可以理解,其它类型的处理器可访问介质,如盒式磁带或其它磁存储设备、闪存、光盘(CD)、数字多功能盘(DVD)或其它光存储、RAM、ROM、电可擦除可编程只读存储器(EEPROM)等,也可储存可由设备访问的数据。这样的介质也可包括所谓的专用或硬布线的IC芯片。换言之,任何处理器可访问介质可用于实现示例性操作环境800的存储介质。
任意数量的程序模块(或其它指令/代码单元或集合)可储存在硬盘816、磁盘820、光盘824、ROM 812和/或RAM 810中。作为一般的示例,这些程序模块可包括操作系统828、一个或多个应用程序830、其它程序模块832以及程序数据 834。
用户可以通过诸如键盘836和定位设备838(如,“鼠标”)等输入设备向计算机802输入命令和信息。其它输入设备840(未具体示出)可包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、串行端口、扫描仪和/或其类似物。这些和其它输入设备通常通过耦合至系统总线808的输入/输出接口842连接到处理单元804。然而,输入设备和/或输出设备也可以通过其它接口和总线结构连接,如并行端口、游戏端口、通用串行总线(USB)端口、红外端口、IEEE 1394(“火线”)接口、IEEE 802.11无线接口、 (蓝牙)无线接口等。
监视器/查看屏幕844或其它类型的显示设备也通过接口,如视频适配器846连接到系统总线808。视频适配器846(或另一组件)可以是或可以包括用于处理图形密集型操作和用于处理需要的显示要求的图形卡。通常,图形卡包括图形处理单元(GPU)、视频RAM(VRAM)等,以便于图形的迅速显示以及图形操作的执行。除监视器844之外,其它输出外围设备可包括诸如扬声器(未示出)和打印机848等组件,它们可通过输入/输出接口842连接到计算机802。
计算机802可以使用到一个或多个远程计算机,如远程计算设备850的逻辑连接在网络化环境中操作。作为示例,远程计算设备850可以是个人计算机、便携式计算机(例如,膝上型计算机、平板计算机、PDA、移动站等)、手掌或口袋大小的计算机、手表、游戏设备、服务器、路由器、网络计算机、对等设备、另一网络节点、或上文列出的另一设备类型等等。然而,远程计算设备850被示出为可包括此处相对于计算机802所描述的许多或所有元件和特征的便携式计算机。
计算机802和远程计算机850之间的逻辑连接被描述为局域网(LAN)852和通用广域网(WAN)854。这类网络环境常见于办公室、企业范围计算机网络、内联网、因特网、固定和移动电话网络、特别和基础结构无线网络、其它无线网络、游戏网络、其某一组合等等。这样的网络和通信连接是传输介质的示例。
当在LAN网络环境中实现时,计算机802通过网络接口或适配器856连接至LAN 852。当在WAN网络环境中使用时,计算机802通常包括调制解调器858或用于通过WAN 854建立通信的其它装置。调制解调器858可以对计算机802是内置或外置的,可通过输入/输出接口842或其它适当的机制连接至系统总线808。可以理解,示出的网络连接是示例性的,也可以使用在计算机802和850之间建立通信链路的其它手段。
此外,可采用为服务器特别设计的其它硬件。例如,SSL加速卡可用于卸载 SSL计算。另外,尤其是在网络负载平衡操作环境中,网络接口或适配器856上(例如,网络接口卡上)的TCP卸载硬件和/或分组分类器可被安装在服务器设备上并在其上使用。
在诸如用操作环境800示出的网络化环境中,相对于计算机802描述的程序模块或其他指令可完全或部分地储存在远程介质存储设备中。作为示例,远程应用程序860驻留在远程计算机850的存储器组件中,但可用于计算机802或可通过计算机802来访问。同样,为说明目的,应用程序830和诸如操作系统828等其它处理器可执行指令在此处被示出为离散的框,但是可以认识到,这些程序和组件以及其它指令在不同的时刻驻留在计算设备802(和/或远程计算设备850)的不同存储组件中,并由计算机802(和/或远程计算设备850)的处理器804执行。
尽管以对结构、逻辑、算法和功能特征专用的语言和/或图表描述了系统、介质、设备、方法、过程、装置、技术、方案、途径、程序、安排和其它实现,但是可以理解,所附权利要求书中所定义的本发明不必限于所描述的具体特征或图表。相反,这些具体特征和图表是作为实现要求保护的本发明的示例性形式来揭示的。