CN1700680A - 使用服务器池时有效的消息路由 - Google Patents

使用服务器池时有效的消息路由 Download PDF

Info

Publication number
CN1700680A
CN1700680A CNA2005100758778A CN200510075877A CN1700680A CN 1700680 A CN1700680 A CN 1700680A CN A2005100758778 A CNA2005100758778 A CN A2005100758778A CN 200510075877 A CN200510075877 A CN 200510075877A CN 1700680 A CN1700680 A CN 1700680A
Authority
CN
China
Prior art keywords
server
message
end server
pools
routine
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.)
Granted
Application number
CNA2005100758778A
Other languages
English (en)
Other versions
CN1700680B (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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN1700680A publication Critical patent/CN1700680A/zh
Application granted granted Critical
Publication of CN1700680B publication Critical patent/CN1700680B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/166Implementing security features at a particular protocol layer at the transport layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • H04L65/1104Session initiation protocol [SIP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/101Server selection for load balancing based on network conditions

Abstract

提供了使用服务器池来有效地路由消息的方法。在一个实施例中,该系统试图保证服务器的高度可用性,这是通过让客户机能够指定服务器池的域名而实现的,即使该服务器池由多个服务器组成,其每一个都具有一唯一的名字,也能够如此保证。当客户机通过使用服务器池的域名启动会话时,该系统可以选择具有不同名字的可用服务器,并且在会话期间将请求和后续消息转发到所选择的服务器。该系统可从池中选择具有最低负载的服务器。该系统还可以指示会话中的后续消息将穿过的服务器。后续消息然后可以被路由到所指示的服务器,以允许所指示的服务器上的应用服务基于该消息和消息的指示采取行动。

Description

使用服务器池时有效的消息路由
技术领域
所述技术一般涉及数据通信,尤其涉及使用服务器池时有效地路由消息的方法和系统。
背景
应用程序有时需要建立和管理计算设备之间的会话。会话是在计算设备之间发生在一段时间内的一组交互。作为例子,实时通信应用程序(例如MICROSOFTMESSENGER或Voice over Internet Protocol(″VoIP″)(互联网协议上的语音))代表用户在通信设备之间建立会话。这些应用程序可以利用各种机制来建立会话,例如″会话启动协议″(″SIP″)。SIP是一种应用层控制协议,设备能够使用它发现另一个设备,并建立、修改和终止设备之间的会话。SIP是一种因特网提议标准。它的规范(″RFC 3261,″)在<http://www.ietf.org/rfc/rfc3261.txt>可找到。关于涉及事件通知的SIP扩展的规范(″RFC 3265,″)在<http://www.ietf.org/rfc/rfc3265.txt>可找到。所有这些规范通过引用整体结合于此。
应用程序可使用SIP以另一协议来发送和接收信息。作为一个例子,应用程序可使用SIP以及实时传输协议(″RTP″)在会话期间传输实时数据。通过使用与其它协议一起使用SIP,应用程序能够创建和管理会话,并且在该会话期间交换信息。与SIP一起使用来交换信息的协议可将信息分割成消息。设备也可以交换SIP消息。这种会话期间的消息交换被称为“对话”。SIP可使用低级通信层来传输对话的消息,例如传输控制协议/互联网协议(″TCP/IP″),它通常被用作传输层和网络层协议。
SIP网络包含能够作为客户机、服务器或两者参与对话的实体。SIP支持四种类型的实体:用户代理、代理服务器、重定向服务器和注册器。用户代理通过与其它SIP实体交换消息来启动和终止会话。用户代理能够是用户代理客户机,它一般是启动SIP请求的设备,或者用户代理能够是用户代理服务器,它一般接收SIP请求并响应这样的请求。作为例子,″IP电话,″、个人数字助理和任何其它类型的计算设备都可以是用户代理。设备能够在一个对话中是用户代理客户机,而在另一个对话中是用户代理服务器,或者在对话期间可以交换角色。代理服务器是担当对于客户机的服务器和对于服务器的客户机的实体。在此行为中,代理服务器在客户机和服务器之间截取、解释或转发消息。重定向服务器接受SIP请求并生成定向发送请求的客户机以联系另一网络资源的响应。注册器是从SIP客户机接受注册信息并通知所接受的注册信息的位置服务的服务器。
SIP支持两种消息类型:请求,它从客户机发送给服务器;以及响应,它通常在响应请求时从服务器发送给客户机。SIP消息由三个部分组成。SIP消息的第一部分是″起始行″,它包含指示消息类型和协议版本的字段。SIP消息的第二部分由头字段组成,其值被表示为名字-值对。SIP消息的第三部分是该消息的正文,它被用来描述将被启动的会话或者包含关于该会话的数据。消息正文可以在请求或响应中出现。
SIP消息基于它们头字段的内容被路由。为了有效,SIP请求应该至少包含以下六个头字段:To(到)、From(来自)、Cseq、Call-ID(呼叫ID)、Max-Forwards(最大转发)、以及Via(经由)。To头字段指示请求的接收者的逻辑身份。该From头字段指示该请求的启动者的逻辑身份。Max-Forwards头字段指示在到达目的地之前请求能够进行的中继的数量。作为例子,如果消息在达到目的地设备C之前从设备A穿过设备B,则该消息被称为已经进行两次中继(例如,设备B和C)。Via头字段指示直到此时由该请求所取的路径(例如,设备的一系列网络地址,该请求已经穿过这些设备),并且指示当路由响应时将跟随的路径。头部还可包含Record(记录)和Record-Route(记录路由)字段,它们被用来指示未来的请求和响应将通过一个被指示的设备来路由。各种网络设备在转发SIP消息以试图强制对话中的后续消息被路由通过该设备时,可以插入Record-Route头字段。Record-Route头字段可以包含用于设备的标识符(例如,网络地址)和参数。处理消息的设备可强制该消息被路由到在消息的Route头字段中列出的设备。Route头字段值可以基于由设备插入的Record-Route头字段值。这些和其它头字段在以上参照的SIP规范中被描述。
SIP服务器可以是单个故障点,并且可能没有能力支持大量的同时会话。该服务器能够是单个故障点,因为来往于客户机的所有的SIP消息可穿越该服务器,并且如果该服务器发生故障,则客户机可能没有能力参与到SIP对话中,因为位置服务可能把该客户机关联到发生故障的服务器。单个服务器可能不能支持大量的客户机,这是由于硬件(例如,处理器或存储器)和网络带宽限制。在此情况下,大量客户机能够被服务器支持所拒绝,导致在这些客户机上正被执行的应用程序的故障。
一种用来克服SIP的这些缺点的有效方法将具有明显的使用价值。
概述
提供了使用服务器池来有效地路由消息的方法。在一个实施例中,该系统试图保证服务器的高度可用性,这是通过让客户机能够指定用于该服务器池的域名而实现,即使该服务器池由多个服务器组成,其每一个都具有一唯一的的名字,也可以如此保证。当客户机通过使用该服务器池的域名启动会话时,该系统可以用一个不同的名字选择一个可用的服务器,并且在该会话期间将该请求和后续的消息路由到所选择的服务器。该系统可从池中选择一个具有最低负载的服务器。该系统还可以指示会话中后续的消息将穿过的服务器。后续消息然后可以被路由到所指示的服务器,以使所指示的服务器上的应用程序服务能够基于该消息和该消息的指示来采取行动。
附图的简要说明
图1是表示当使用服务器池时用于有效消息路由的系统的实施例的框图。
图2是表示图1的服务器池的实施例的框图。
图3是表示由代理服务器执行的用于确认请求消息头部的例程的实施例的流程图。
图4是表示由代理服务器执行的用于处理请求消息头部的例程的实施例的流程图。
图5是表示由系统的企业服务组件执行的用于处理请求消息的例程的实施例的流程图。
图6是表示用于处理请求消息头部以启用应用程序相关路由的例程的实施例的流程图。
图7是表示用于处理响应消息的例程的实施例的流程图。
详细描述
在一个实施例中,提供了使用服务器池来有效地路由消息的系统。该系统试图保证服务器的高度可用性,这是通过让客户机能够指定对于该服务器池的单个正式域名(″FQDN″)而实现,即使该池由多个服务器组成,其每一个都具有一唯一的FQDN,也能如此保证。当客户机通过使用该池的FQDN启动会话时,该系统可以从池中选择一可用服务器(或者“前端服务器”),并且在会话期间将请求和后续的消息路由到所选择的服务器。所选择的服务器的FQDN可以不同于服务器池的FQDN。该系统可从该服务器池中选择具有最低负载的服务器。因为后续的消息将穿过所选择的服务器,因此系统可以试图直接将消息路由到所选择的服务器,以最小化到其它服务器的中继段。如果消息不是被直接地路由到所选择的服务器,而是被路由到其它中间服务器,由于这些服务器处理不必要的通信量,而使服务器的总负载就可能增加。而且,总的消息等待时间也可能因为附加的中继段而增加。为了使消息能够被直接路由,该系统通过添加所选择的服务器的FQDN作为该请求的头字段的参数,来修改消息的头部。网络上的设备可使用这个参数来将消息直接路由到所选择的服务器。该系统也可添加消息的接收者的注册服务器(例如,注册器)的FQDN,作为头字段的参数。网络上的设备可使用这个头字段与注册服务器通信,例如,以定位关于该接收者的信息。遵从SIP规范来路由消息的设备将在会话期间被交换的后续SIP消息中保留这些头字段和参数。通过评价这些头字段和参数,网络设备就有能力将消息直接路由到所选择的服务器,并定位存储在关联于该接收者的注册服务器中的信息。在后续的会话中,或者如果会话因为所选择的服务器已经不再可用(例如,因为它已经崩溃)而需要被重新建立时,该系统有能力为客户机选择另一服务器。这样,该系统有能力保证服务器的高度有效性并平衡各服务器上的负载。
在一个实施例中,为了保证沿着消息的路径运行在服务器上的应用程序能够正确地处理通过的消息,该服务器能够把指出服务器角色的标志加入到该消息的头部。作为一个例子,路径上的服务器可以记录相关于由用户发送或接收的消息的记账信息。为了保证该应用程序注意到所有的消息通信量并且能够基于它的角色采取适当的行动,该系统把To/From(到/自)标志添加到消息的头字段。通过从该头字段中确定该服务器的角色是不是处理来自或去往该会话创建请求的原始发送者的消息,应用程序能够采取适当的行动,而无需执行昂贵的数据库查找来确定该服务器的角色。使用头字段中的参数来指示服务器的角色还允许该系统限制在消息上采取应用程序相关行动的服务器。当这个信息作为Record-Route头字段的参数出现时,并不由该系统控制的依从SIP的设备将返回该信息。作为加入和消息一起传输的头字段和参数的结果,数据库或其它的查找被避免,而且消息被正确地处理。
在一个实施例中,该系统使用不完全合格的域名和设备名。作为例子,该系统可使用相对域名或机器名。该系统可以有能力解析或使用这些域名和设备名来唯一地标识服务器池或设备。
现在回到附图,图1是表示当使用服务器池时用于有效消息路由的系统的实施例的框图。该系统由至少服务器池102组成。该系统可以包括附加的服务器池,它能够被连接到或多个其它服务器池。在一个实施例中,该服务器池可以主宿(host)在不同的互连域中。作为一个例子,一个服务器池可以主宿在″A.com″中主宿,并且第二服务器池主宿在″B.org″中。″A.com″和″B.org″的特征为第二级域名,而″.com″和″.org″的特征为第一级域名。服务器池还可以由更低级域来标识,例如″X.A.com″和″N.Y.B.org,″,它们分别是三级和四级域。
该系统的服务器池可以被耦合到网络108。该网络可以是内联网、因特网或任何其它类型的网络。该网络还可以被耦合到一个或多个用户设备110。这些用户设备可以使用该网络与服务器池交换消息。
图2是表示图1的服务器池的实施例的框图。服务器池202由多个服务器204组成,也称为″前端服务器″。该服务器可以由与它们的服务器池的域名相关的机器名来标识。作为一个例子,如果名为服务器1的服务器是名为″X.A.com″的服务器池的成员,该服务器可以由它的FQDN标识为″服务器1.X.A.com″。该服务器可以彼此耦合以形成服务器网络。
该服务器还可以被耦合到其它的网络资源,例如数据库服务器206。在一个实施例中,每个服务器204具有它拥有的数据库。或者,该服务器可以使用位于数据库服务器中的数据库。该数据库可以驻留在与该服务器分离的计算设备中,也可以在与该服务器相同的计算设备中。该数据库可以被用来存储关于会话的信息。作为一个例子,该服务器可以被用来存储对于该服务器正在处理的每个会话的服务器角色。
服务器204也可以被耦合到负载平衡器208。当会话创建请求到达负载平衡器时,该负载平衡器可以从服务器池中选择一个服务器,它将基于例如每个服务器的负载来处理该请求。作为一个例子,如果服务器池具有三个服务器,并且一个服务器被停机以供维护,且余下的两个服务器之一具有高性能处理器或网络利用,则该负载平衡器可选择第三服务器。
该服务器池可以被耦合到代理服务器210。该代理服务器在它处理的消息上采取各种行动,包括,例如解释或修改头部、转发消息以及从该网络中移除消息。该代理服务器可以具有多个网络接口。一个接口可以被耦合到因特网,而另接口可以被耦合到该服务器池。当服务器池利用代理服务器时,客户机和服务器池之间的所有通信量可以穿过该代理服务器。传入的请求消息可以首先被代理服务器处理,它确认出现在该请求消息的头字段中的路由信息。然后该消息可以被转发到一企业服务组件(如果该组件存在于该系统中)(未示出),并且然后转发到其它的应用程序中(未示出)。这些组件可以由服务器池中的服务器实现。
传入的响应消息也可以首先由代理服务器处理以确认路由信息。然后该响应消息可以被转发到应用程序中(按与请求消息处理相比较相反的次序),并且然后转发到该企业服务组件(如果存在该组件)。然后该代理服务器可以在转发该响应信息之前更新路由信息。
图3是表示用于确认请求消息的头部的例程的实施例的流程图。该例程由代理服务器执行,并且在块302开始,在那里它接收消息作为参数。在块304,该例程处理消息中指出的请求URI(Request-URI)。请求URI是被标识为请求消息的接收者的统一资源标识符(″URI″)。作为例子,请求消息可以标识在请求URI中的用户或者设备。请求URI可以具有一″maddr″参数。maddr参数可以关联于URI,以指出要使用的服务器地址,而不是由该URI的头字段指出的服务器地址。作为一个例子,尽管URI可以指出由用户代理使用的服务器,该URI的maddr参数可以指出要用于联系该用户的代理服务器。通过检查请求URI中的maddr参数是指出该服务器池的FQDN(代理服务器被耦合到该服务器池),还是指出IP地址(代理服务器在其上监听连接请求),该例程处理请求URI。如果是这样的情况,则例程依照RFC 3261移除该maddr参数。该例程然后检查该请求URI是否指出该服务器池的FQDN(代理服务器被耦合到该服务器池),以及是否Route头字段是否还包含该FQDN。如果是这样的情况,该例程使该请求URI成为第一个Route头字段,并且使得在最后一个Route头字段中包含的值成为请求URI。
在块306,该例程确定可信连接上是否有消息到达。作为例子,当连接使用传输层安全性(″TLS″)并且该系统验证了发送该消息的实体具有TLS证书,或者该连接已经由系统的管理员标记为可信的时候,该连接是可信的。TLS使用证书来允许在设备之间的专用数字通信。该技术可以使用任何技术来允许专用通信,包括如Kerberos,高级加密标准(Advanced Encryption Standard),或者数据加密标准(DataEncryption Standard)。如果该连接是可信的,则该例程在块310继续。否则,该例程在块308继续。
在块308,该例程可以处理和修改某些头字段。作为一个例子,该例程可以移除Record-Route头字段以及指示边缘代理的正式域名的头字段。边缘代理是一种代理服务器,它跨接内联网和因特网(例如,在″非保护区″或者″DMZ″),从而在该边缘服务器的因特网侧的设备仅仅通过该边缘代理与内联网上的设备通信。该系统移除这些头字段,因为当该连接不可信时它并不信任它们的有效性。如果代理服务器并移除该头字段,后续的服务器可能错误地信任头部。当一个连接不能被信任时,代理服务器期望直接从客户机连接,这种情况下,这些头字段不能存在。当客户机通过另一代理连接时,该连接将是可信的,因为其它代理将能够通过TSL确认自己(或者将具有某些其它可信连接的指示)。当处理头字段时,该例程还可以确定请求URI是否被签署。如果请求URI未被签署,则由于上述同样的原因,该系统就不能信任指示服务器角色的参数,或者服务器池中的特定服务器的标识符,并因此移除这些参数。该例程还确认Contact(联系人)头字段,这是通过确定对消息中的联系人指示的IP地址是否与发送消息的设备的IP地址相同来完成的。消息中的Contact头字段包含一个URI,消息的发送者将在该URI处接收请求。
在块310,该例程确定最顶端的Route(路由)头字段是否具有其值与最顶端Via(经由)头字段中的IP地址相匹配的“maddr”参数。如果该头字段具有maddr参数,但是该头字段中指出的IP地址不与发送该消息的实体的IP地址匹配,则该例程用发送者的IP地址和端口替换该头字段中所标识的关于FQDN的IP地址和端口参数。该例程还添加一Received-CIDURI(接收的CID URI)参数(例如,邀请启动对话的消息)以保证该对话中的后续消息将通过正确的连接发送。该Received-CID还可以包含一个唯一的号码,它被用来防止客户机连接到它先前没有参与的对话。作为一个例子,如果一台客户机没有正确地从服务器断开连接,并且一台新的客户机连接到该服务器的同样的端口,则该新的客户机可能能够继续该对话。然而,该新的客户机将不能拥有正确的Received-CID参数,因为该服务器并不把它添加到消息中。该不正确的Received-CID参数将是对服务器的指示,指示该新的客户机不属于该对话。如果边缘代理的FQDN(或者网络地址转换器的FQDN)在头字段中被指示,则该例程保存该FQDN并且移除该头字段,以防止它带着该消息行进到服务器池中。
在块312,该例程确定接收消息的连接是否具有联合域。联合域是代理服务器所操作的域之外的可信域。当执行该例程的服务器是边缘代理时,该例程可以评价该连接是否带有联合域。如果消息来自联合域,则例程在块314继续。否则,例程在块316继续。
在块314,该例程确定该消息的Route头字段和请求URI是否已经被数字地签署。如果这些字段以有效的签名被数字地签署,则该例程在块316继续。否则,该例程确定是否不存在Route头字段,以及请求URI是否未被数字地签署。如果是这种情况,则该例程移除头字段中指示该服务器角色的参数并且在块316处继续。否则,该例程在块322继续。在块322,该例程返回包含响应代码的响应481,它指出用户代理服务器已经接收到与现有事务(例如,会话)不匹配的请求。当用户代理客户机接收到这样响应时,它可能通过试图重建立会话作为反应。
在块316,该例程调用Process_Header(处理头部)子例程,并且在块318,该例程调用Application_Routing(应用程序路由)子例程。这些子例程将在以下参考图4和5分别更详细地描述。该例程在块320返回到它的调用者。
图4是表示由代理服务器执行的用于处理请求消息头部的例程的实施例的流程图。该例程在块402开始,在此它接收消息作为参数。在块404,该例程确定消息中是否存在Route头字段。如果发现Route头字段,则该例程在块406继续。否则,该例程在块410继续。
在块406,该例程确定在最顶端Route头字段中的FQDN是否与服务器所属的服务器池的FQDN相匹配。如果这些FQDN匹配,则该例程在块408继续。否则,该例程在块420继续。在块408,该例程从指出服务器角色的Route头部提取参数以及向其路由消息的服务器的标识。
在块410,该例程提取该服务器的角色以及从请求URI向其路由消息的服务器的标识。当实体确定代理服务器在处理该头部所扮演的角色时,这些参数可以由该实体添加到请求URI中。在块412,该例程确定识别目的地服务器的参数是否指示与执行该例程的服务器不同的服务器。如果是这种情况,则该例程在块414继续。否则,该例程在块416继续。在块414,如果指示服务器角色的参数被提取,则该角色以进行附加的处理应用程序能够检索关于该角色的信息的方式来存储,例如存储在耦合到服务器的数据库中。在块416,该例程复制最顶端Route头部,从而使它看来已经由发送该消息的实体插入到正在其上执行该例程的服务器中。在块420,该例程用响应代码481来响应,它指出接收请求的用户代理服务器并没有对应的事务(例如,会话)。在块418,该例程返回到它的调用者。
图5是表示由系统的企业服务组件执行的用于处理请求消息的例程的实施例的流程图。企业服务组件提供能够由应用程序用于基于消息执行特殊处理的逻辑。该组件可以基于它是″To″服务器还是″From″服务器来执行处理(例如,收集关于所发送或接收的消息的记账信息)。″To″服务器是在原始会话请求的目的地服务器池中的服务器。相反,″From″服务器是在原始会话请求的发送者的服务器池中的服务器。服务器是″From″还是″To″服务器被称作为它的″角色″。
该例程可以当服务器生成NOTIFY(通知)消息时在块548开始,或者在任何其它的环境中(例如,当它处理消息时)在块502开始。当服务器生成NOTIFY消息时,该例程在块548开始执行。在这样一种情况中,该服务器的角色可以被隐含地设定到″From″。NOTIFY消息是从一个用户代理到另一个的消息,它指出资源的状态。在块549,该例程确定所生成的NOTIFY消息是否已经具有Route头部。服务器可以从数据库中检索Route头部并将它们放置在生成的NOTIFY消息中。如果NOTIFY消息已经具有Route头部,则该例程在块508继续。否则,该例程在块528继续。
该例程可以在块502开始,在此它接收消息作为参数。在块504,该例程确定消息是否被信任用于认证。当消息从与执行例程的服务器在相同的域中的另一个服务器到达TLS连接时、从指示该消息可信的边缘代理到达TLS连接时、或者在到达被管理员标记为可信的连接中时,该消息是被信任用于认证的。如上指出,该技术能够与允许专用通信的任何技术一起使用。如果该消息被信任用于认证,则该例程在块506继续。否则,该例程在块536继续。
在块506,该例程确定Route头部是否存在于该消息中。消息中的Route头字段的存在指出:服务器已经指出了消息的下一个中继段,或者该消息是对其已由先前的消息建立了路由(例如,中继段序列)的现有会话的一部分,,并且服务器并不需要确定下一个中继段。在一个实施例中,服务器还可以验证:它不负责消息的头部中指出的UR。如果Route头部存在,则该例程在块508继续。否则,该例程在块512继续。在块508,该例程调用Other_Routing(其它路由)子例程,它在以下参照图6进一步描述。在块510,该例程返回到它的调用者。
在块512,该例程确定先前是否已保存了角色参数(例如,由代理服务器、处理该消息的前一服务器、或者通过路由会话中前一消息来保存)。当先前已保存了这一参数时,它是对服务器的角色先前已经被确定的例程的指示。如果是这种情况,则该例程在块514继续。否则,该例程在块528继续。
在块514,该例程确定该服务器的角色是否为″To″。如果是这种情况,则该例程在块516继续。否则,该例程在块524继续。在块516,该例程确定请求的目的地是否为″To″服务器池的服务器。如果是这种情况,则该例程在块518继续。否则,该例程在块520继续。在块518,该例程处理该请求并且可以发送响应。
在块520,该例程确定指示终点标识符(″EPID″)的参数是否存在于消息的头字段中。EPID能够被用于区分涉及一个用户的多个登录(例如,来自台式计算设备,而另来自蜂窝电话)。EPID参数的存在指出:已经选择了″To″服务器池的终点,因为该″To″服务器首先将EPID参数添加到消息,而且这个参数在后续消息中被持久保存。如果EPID参数存在,则该例程在块522继续。否则,该例程在块508继续。在块522,该例程在消息中插入指示下一个服务器是″To″服务器的Route头部。该服务器还可以设置它的角色为″To″,除非该消息将被路由到该池中的另一个服务器,在后一情况中,该服务器将把参数添加到最顶端Route头字段,以指向服务器池中的另一服务器。
在块524,该例程确定请求的目的地是否为″From″服务器。如果是这种情况,则该例程在块518继续。否则,该例程在块526继续。在块526,该例程保存服务器角色是″From″的指示。在块528,该例程确定服务器是否在″To″服务器池的域中。如果是这种情况,则该例程在块530继续。否则,该例程在块508继续。
在块530,该例程检索″To″服务器池的FQDN。在块532,该例程确定执行该例程的服务器是否为″To″服务器池的成员。如果是这种情况,则该例程在块516继续。否则,该例程在块534继续。在块534,该例程把″To″服务器池的FQDN添加入到消息的请求-URI中,带有指出下一个服务器是″To″服务器的参数。作为结果,当该请求URI随后由代理服务器处理时,该消息将被发送到″To″服务器池中的服务器。
在块536,该例程确定该消息是否被认证。如果该消息被认证,则该例程在块538继续。否则,该例程在块546继续。在块546,该例程请求代理服务器质询该消息。
在块538,该例程确定在消息中是否存在Route头部,它指出:该消息是现有会话中的对话的部分。如果是这种情况,则该例程在块508继续。否则,该例程在块540继续。
在块540,该例程检索″From″服务器池的FQDN。在块542,该例程确定执行该例程的服务器是否为″From″服务器池的成员。如果是这种情况,则该例程在块524继续。否则,该例程在块544继续。在块544,该例程把该″From″服务器池的FQDN加入到消息头部中的请求-URI中,带有指出下一个服务器是″From″服务器的参数。当该请求URI随后由代理处理时,该消息将被发送到″From″服务器池中的服务器。
图6是路由用于处理请求消息头部以启用应用程序相关路由的例程的实施例的流程图。该例程在块602开始,在此它接收消息作为参数。在块304,该例程将头字段和相关的值插入到消息中。作为一个例子,该例程可以请求代理插入路由头部。在这样的情况中,代理还可以设置服务器的角色。在执行该例程的服务器上运行的应用程序可以添加附加的Record-Route头字段。作为一个例子,归档应用程序可以把Record-Route头字段加入到消息中,以指示该消息已经被归档。当再一次接收该消息(或者当在该消息所穿越的另一服务器上执行的应用程序接收该消息时),应用程序能够确定:该消息先前已被归档,因为该字段已经被添加。
在块606,该例程评价消息的下一个中继段是否能够从消息的头部中确定。如果存在指示目的地的Route头字段,则该例程从Route头部中确定下一个中继段的FQDN或IP地址。否则,如果在请求URI中标识了服务器池的服务器,并且消息被信任用于路由,则所指出的服务器被用作为下一个中继段。如果不是这种情况,并且请求URI与关联于服务器的静态路由表中的一个模式相匹配,则从该静态路由表中检索下一中继段。当消息是在可信连接中接收,或者其请求URI被安装在服务器上的应用程序所修改,或者该路由信息被数字地签署,则该消息是可信的。如果该消息被信任用于路由,则该例程将消息头部中的请求URI的主机部分标识为下一个中继段。如果下中继不能被确定,则该例程在块620继续。否则,在块608,该例程解析所确定的下一个中继段的FQDN或IP号码,并且连接到所标识的实体(或者使用一个已经打开的连接)。
在块610,该例程确定该FQDN是否能够被解析,并且连接是否打开。如果是这种情况,则该例程在块612继续。否则,该例程在块620继续。在块612,该例程确定该请求是否在本地生成,以及是否需要Record-Route。当服务器角色参数被保存,以及在某些其它的环境中时,边缘代理、转发代理上需要Record-Route。对于那些不启动对话的消息,如NOTIFY、MESSAGE、INFO和SERVICE等消息类型,Record-Route是不需要的。如果消息不是本地生成或者需要Record-Route,则该例程在块614继续。否则,该例程在块616继续。
在块614,该例程可以将头字段或参数添加到消息中。添加哪些头部和参数可取决于发送消息的连接是否被标记为″单向”。管理员可以启用设备仅仅用于单向连接(例如,该设备不能接受来自其它设备的连接请求),以使得例如该设备更加安全。当连接被标记为″单向″时,该例程可以把服务器的FQDN、以及端口与IP地址信息添加到消息的Record-Route头字段中,这些使得消息的接收者能够使用由该设备建立的连接,在返回消息时用于该会话。如果连接没有被标记为单向,并且执行该例程的设备是服务器池中的服务器,则该例程把服务器池的FQDN与添加到Record-Route头字段中,带有标识该服务器的参数(例如,该服务器自己的FQDN或简单地为相对于域的服务器名)。当后续的消息在会话中被系统接收,该系统能够基于该参数确定对哪个服务器路由该后续消息。当该连接没有被标记为单向,并且执行该例程的设备不在服务器池中时,该例程确定该设备是否为边缘代理,以及所评价的请求消息是否始发于客户机或转发代理。如果是这种情况,则该例程添加类似于当连接被标记为单向时所添加的那些头字段和参数,从而后续消息通过同样的边缘代理被路由。否则,该例程可以把该服务器的FQDN添加到Record-Route头字段中。如果该设备是边缘代理,则该设备可以添加能够由向其转发消息的设备解析的FQDN(即,能够在内联网内部或外部被解析的FQDN,这取决于下一个服务器是在内联网的内部还是外部)。在添加这些头字段之后,如果相反的参数先前已经被存储,则该例程可以附带地添加一个颠倒该服务器角色的参数(例如,From变为To或相反)。
在块616,该例程转发消息。在转发消息之前,该例程确定发送消息的连接是否被信任用于路由。作为例子,使用TLS(或者某些其它允许专用通信的机制)的连接,或者由管理员明确地指示为可信的连接被信任用于路由。如果该连接被信任用于路由。并且处理是由边缘代理执行的,则该例程确定该连接是否具有联合域。联合域是除服务器的域之外的可信域。如果该连接不是可信的,或者该连接带有联合域,则该例程数字地签署消息中的任何Contact和Record-Route头字段,并且在最顶端Record-Route头字段中放置签名。Via头部也被数字地签署。该例程然后转发消息。在块618,该例程返回到它的调用者。在块620,该例程用响应代码504来响应,它指出服务器在试图处理该请求时没有及时地接收到响应。
图7是表示用于处理响应消息的例程的实施例的流程图。该例程在块702开始,在此它接收响应消息作为参数。在块706,该例程确定该消息是否包含一个以上Via头字段。如果消息包含一个以上Via消息字段,则它指示该响应可能需要被转发到另一个服务器。如果是这个情况,该例程在块708继续。否则,该例程本地地消耗该响应并且在块716继续。
在块708,该例程确定接收消息的连接是否被信任用于路由。连接被信任用于路由的环境在以上参照图5描述。如果连接被信任用于路由,则当头字段指示这样值时,该例程保存边缘代理的FQDN,并且丢弃头字段。否则,该例程处理响应消息的Contact头字段,这是通过确认这些字段指示与服务器所连接到实体(或代理)相同的IP地址,并且在试图确保具有与执行该例程的服务器的会话的另一个客户机不使用该同样的IP地址和端口时添加Received-CIDURI参数。如果该连接被信任用于路由,并且该例程是由边缘代理执行的,则该例程确定该连接是否到联合域。如果该连接是到联合域,或者在处理Contact头字段之后,该例程验证消息中的路由信息匹配在Record-Route和Via头字段中的签名。如果连接不是来自联合域或者路由签名被验证,则该例程使应用程序和企业服务能够处理该响应。如果路由签名没有被验证(例如,因为该头部没有被正确地数字签署),则该例程取消响应。该例程通过分析响应的头字段来确定执行这个例程的服务器是否把Record-Route头字段插入到一个先前的请求中。如果是这种情况,则该例程在块710继续。否则,该例程在块712继续。
在块710,该例程处理Record-Route头字段。如果在响应中不存在Contact头部,该例程移除指示执行该例程的服务器的Record-Route头字段(如果有的话)。该例程也可以移除它或另一代理在处理当前响应中导致的先前请求时可能已插入其它有关的头字段。该例程还可以把指示服务器角色(或者使用移除参数的值)的参数添加到头部中,从而当先前请求的发送者发送后续请求时,该角色能够被识别或使用。该例程检查管理员是否将连接标记为单向。单向连接指示网络中的其它设备不能够解析服务器的FQDN或者建立回到该服务器的连接。作为一个例子,管理员可能希望使服务器成为防火墙,它允许对外的连接但没有对内的连接。如果连接被标记为单向,则该例程可以把服务器的FQDN、IP地址和端口信息添加到响应的Record-Route头字段中。该例程还可以使用来自先前的中继段的Via头字段的转发点(forward-point)参数来处理涉及穿过网络地址转换器的问题。
如果连接没有被标记为单向,并且执行该例程的设备是服务器池的服务器,则该例程把服务器池的FQDN与指示服务器FQDN的参数一起添加到Record-Route头字段中。当后续的消息在会话中被系统接收,该系统能够基于该参数确定对哪个服务器路由该后续消息。当连接没有被标记为单向,并且执行该例程的设备不在服务器池中时,该例程确定该设备是否为边缘代理,以及所评价的请求消息是否始发于客户机或转发代理。如果是这种情况,该例程可添加类似于当连接被标记为单向时类似的头字段和参数,从而后续消息可疑通过同样的边缘代理被路由。否则,该例程可以把服务器的FQDN添加到Record-Route头字段中。如果设备是边缘代理,则该设备可以添加能够由向其转发消息的设备解析的FQDN。e在添加这些头字段以后,如果先前储存了相反的参数,则该例程可以另外地添加颠倒服务器角色的参数(例如,从“From”变为“To”或相反)。
在块712,该例程移除最顶端Via头字段。在块714,该例程转发响应。如果对外的连接被信任用于路由(例如,因为它使用TLS或者某些其它允许专用通信的机制,或者由管理员指出是可信的),则该例程确定该连接是否到联合域。如果该连接到联合域,则该例程数字地签署包含Record-Route和联系人信息的头字段。如果对外连接不被信任用于路由,则该例程也签署这些头字段。然后,该例程将响应转发到响应路由中的下一个实体。在块716,该例程返回到它的调用者。
在其上可以实现用于有效地路由消息的系统的计算设备可以包括中央处理单元、存储器、输入设备(例如,键盘和定点设备)、输出设备(例如,显示设备)以及储存设备等(例如,磁盘驱动器)。存储器和储存设备是计算机可读介质,它们可以包含实现该安全系统的指令。另外,数据结构和消息结构可以通过诸如通信链路上的信号等数据传输介质被存储或传输。各种通信链接都可以被使用,例如因特网、局域网点对点拨号连接。
图1和2示出可实现安全性的适用的操作环境的例子。该操作环境仅仅是适用的操作环境的一个例子,并且无意暗示对可扩充无线框架的使用范围或功能的任何限制。其它可适用的众所周知的计算系统、环境和配置包括个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、可编程消费电子设备、网络PC、小型计算机、大型计算机、包括任何上述系统和设备的任一个的分布式计算环境等等。
该安全系统可以按由或多个计算机或其它设备执行的计算机可执行指令(例如程序模块)的一般上下文来描述。通常,程序模块包括例程、程序、对象、组件、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。通常,程序模块的功能可以如在各个实施例中所要求的组合或分布。
从以上所述,可以理解,本发明的特定的实施例已在此被描述用于示例的目的,但是可以进行各种修改而不背离本发明的精神和范围。因此,本发明除了所附权利要求书之外不受其它限制。

Claims (40)

1.一种由计算机系统执行的方法,用于有效地将消息路由到服务器池的前端服务器,所述服务器池由多个前端服务器组成,所述方法包括:
从客户机计算设备接收指示打开对话的消息,所述消息被发送到标识所述服务器池的域名;
选择所述服务器池中的一前端服务器,所述前端服务器具有服务器域名;
修改所述消息的头字段,以添加所选择的前端服务器的服务器域名的指示,从而所述对话的后续消息能够基于所述指示被发送到所选择的前端服务器;以及
将所修改的消息转发到所选择的前端服务器,以打开所述客户机计算设备和所选择的前端服务器之间的对话。
2.如权利要求1所述的方法,包括:
从所述客户机计算设备接收所述对话的后续消息;
从包含在所述后续消息的头字段中的服务器域名的指示中检测所选择的前端服务器;以及
基于包含在所述后续消息中的服务器域名的指示,将所述后续消息转发到所选择的前端服务器。
3.如权利要求2所述的方法,其特征在于,所述计算机系统是代理服务器。
4.如权利要求1所述的方法,其特征在于,所述对话的后续消息在所述客户机计算设备和所选择的前端服务器之间交换,而无需由所述服务器池的另一计算设备转发。
5.如权利要求4所述的方法,其特征在于,所述计算机系统是所述服务器池的另一计算设备。
6.权利要求1所述的方法,其特征在于,所述修改包括把一参数添加到头字段中。
7.如权利要求6所述的方法,其特征在于,所述头字段是会话启动协议Record-Route头字段。
8.如权利要求6所述的方法,其特征在于,所述参数指示所述服务器域名。
9.如权利要求8所述的方法,其特征在于,所述服务器域名是正式域名。
10.如权利要求1所述的方法,其特征在于,包括添加一指示所述前端服务器的角色的头字段值。
11.如权利要求10所述的方法,其特征在于,所述角色是From。
12.如权利要求10所述的方法,其特征在于,所述角色是To。
13.如权利要求10所述的方法,其特征在于,一应用程序基于所指示的角色执行处理。
14.如权利要求1所述的方法,其特征在于,包括当服务器池中所选择的前端服务器变成不可用时,选择所述服务器池的一替换前端服务器。
15.如权利要求1所述的方法,其特征在于,所述选择包括确定服务器负载。
16.如权利要求1所述的方法,其特征在于,所述后续的消息遍历一组相同的网络设备。
17.如权利要求1所述的方法,其特征在于,所述消息是会话启动协议消息。
18.一种用于有效地将消息路由到服务器池的前端服务器的系统,所述服务器池由多个前端服务器组成,包括:
从客户机计算设备接收指示打开对话的消息的组件,所述消息被发送到标识所述服务器池的域名。
选择所述服务器池的一前端服务器的组件,所述前端服务器具有一标识符;以及
通过把所选择的前端服务器的标识符的指示添加到所述消息的头字段来修改所述消息的组件。
19.如权利要求18所述的系统,其特征在于,所述消息是会话启动协议消息。
20.如权利要求18所述的系统,其特征在于,所述标识符是所选择的前端服务器的服务器名。
21.如权利要求20所述的系统,其特征在于,所述服务器域名是正式域名。
22.如权利要求18所述的系统,其特征在于,包括将所修改的消息转发到所选择的前端服务器以打开所述客户机计算设备和所选择的前端服务器之间的对话的组件。
23.如权利要求18所述的系统,其特征在于,包括从所述客户机计算设备接收后续消息并将每一后续消息转发到所述后续消息的头字段中指示的前端服务器的组件。
24.一种计算机可读介质,其内容使计算机系统执行一种方法,所述方法包括:
从客户机计算设备接收指示打开对话的消息,所述消息指示标识服务器池的域名。
选择所述池的一前端服务器,所述前端服务器具有一标识符;
修改所述消息的头字段,以添加所选择的前端服务器的标识符的指示,从而所述对话的后续消息能够基于所述标识符被发送到所选择的前端服务器;以及
将所修改的消息转发到所选择的前端服务器,以打开所述客户机计算设备和所选择的前端服务器之间的对话。
25.如权利要求24所述的计算机可读介质,其特征在于,包括:
从所述客户机计算设备接收所述对话的后续消息;
从包含在所述后续消息的头字段中的所选择的前端服务器的指示符中检测所选择的前端服务器;以及
基于包含在所述后续消息的头字段中的前端服务器的指示符,将所述后续消息转发到所选择的前端服务器。
26.如权利要求24所述的计算机可读介质,其特征在于,所述对话的后续消息在所述客户机计算设备和所选择的前端服务器之间交换,而无需由所述服务器池的另一计算设备转发。
27.如权利要求24所述的计算机可读介质,其特征在于,所述消息是会话启动协议消息。
28.如权利要求24所述的计算机可读介质,其特征在于,所述前端服务器的标识符是正式域名。
29.如权利要求28所述的计算机可读介质,其特征在于,所述域名是正式域名。
30.如权利要求24所述的计算机可读介质,其特征在于,所述前端服务器的标识符是服务器名。
31.如权利要求24所述的计算机可读介质,其特征在于,所述前端服务器的标识符对所述服务器池是唯一的。
32.一种计算机可读介质,用于指示服务器池的前端服务器,包括:
包含头字段的消息,其中,所述头字段标识所述服务器池;以及
指示所述前端服务器的所述头字段的参数。
33.如权利要求32所述的计算机可读介质,其特征在于,所述服务器池的标识是正式域名。
34.如权利要求33所述的计算机可读介质,其特征在于,所述域名是正式域名。
35.如权利要求32所述的计算机可读介质,其特征在于,所述参数是所述前端服务器的域名。
36.如权利要求35所述的计算机可读介质,其特征在于,所述域名是正式域名。
37.如权利要求32所述的计算机可读介质,其特征在于,所述参数唯一地标识所述服务器池中的前端服务器。
38.如权利要求32所述的计算机可读介质,其特征在于,包括所述前端服务器的角色的指示。
39.如权利要求38所述的计算机可读介质,其特征在于,所述角色是From。
40.如权利要求38所述的计算机可读介质,其特征在于,所述角色是To。
CN2005100758778A 2004-05-21 2005-05-20 使用服务器池时有效的消息路由 Expired - Fee Related CN1700680B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/851,003 US8024476B2 (en) 2004-05-21 2004-05-21 Efficient message routing when using server pools
US10/851,003 2004-05-21

Publications (2)

Publication Number Publication Date
CN1700680A true CN1700680A (zh) 2005-11-23
CN1700680B CN1700680B (zh) 2012-03-14

Family

ID=34939686

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005100758778A Expired - Fee Related CN1700680B (zh) 2004-05-21 2005-05-20 使用服务器池时有效的消息路由

Country Status (5)

Country Link
US (1) US8024476B2 (zh)
EP (1) EP1599015A1 (zh)
JP (1) JP2005339550A (zh)
KR (1) KR101120695B1 (zh)
CN (1) CN1700680B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101170538B (zh) * 2006-10-24 2013-01-16 国际商业机器公司 用于改善sip解析性能的方法和装置

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7535905B2 (en) * 2004-03-31 2009-05-19 Microsoft Corporation Signing and validating session initiation protocol routing headers
US8024476B2 (en) 2004-05-21 2011-09-20 Microsoft Corporation Efficient message routing when using server pools
US7506369B2 (en) * 2004-05-27 2009-03-17 Microsoft Corporation Secure federation of data communications networks
US20060048163A1 (en) * 2004-08-27 2006-03-02 Thierry Bessis Method for routing messages between servers located on the same board
US20060083242A1 (en) * 2004-10-20 2006-04-20 Nokia Corporation Address modification in application servers
US8583827B2 (en) * 2005-05-26 2013-11-12 Citrix Systems, Inc. Dynamic data optimization in data network
US20070055784A1 (en) * 2005-09-08 2007-03-08 Pancholi Ketan P Method to reduce the learning curve of a transmission control protocol connection
US8943181B2 (en) * 2005-11-29 2015-01-27 Ebay Inc. Method and system for reducing connections to a database
US7979569B2 (en) 2005-12-01 2011-07-12 Firestar Software, Inc. System and method for exchanging information among exchange applications
US9953097B2 (en) * 2006-03-16 2018-04-24 Ebay Inc. System and method for managing network traffic routing
JP4632450B2 (ja) 2006-04-17 2011-02-16 キヤノン株式会社 通信装置及びその制御方法
FR2902590B1 (fr) * 2006-06-16 2008-08-01 Alcatel Sa Detection de boucles au sein d'un element intermediaire de signalisation sip
JP4910542B2 (ja) * 2006-07-27 2012-04-04 富士通株式会社 Sipメッセージ引渡プログラム
US7761538B2 (en) * 2006-08-30 2010-07-20 Microsoft Corporation Dynamically configuring, allocating and deploying computing systems
FR2906668A1 (fr) * 2006-10-02 2008-04-04 Alcatel Sa Marqueur pour systemes de communication composes d'une pluralite de serveurs sip.
US7664108B2 (en) * 2006-10-10 2010-02-16 Abdullah Ali Bahattab Route once and cross-connect many
JP4470934B2 (ja) 2006-10-20 2010-06-02 日本電気株式会社 プロキシ・サーバ、通信システム、通信方法及びプログラム
US8929360B2 (en) 2006-12-07 2015-01-06 Cisco Technology, Inc. Systems, methods, media, and means for hiding network topology
CN101242392B (zh) * 2007-02-06 2012-02-08 国际商业机器公司 用于系列服务消息处理的方法、设备和系统
US8713186B2 (en) * 2007-03-13 2014-04-29 Oracle International Corporation Server-side connection resource pooling
WO2009036184A2 (en) 2007-09-11 2009-03-19 Research In Motion Limited System and method for sharing a sip communication service identifier
US20090185673A1 (en) * 2008-01-17 2009-07-23 Avaya Technology Llc Voice-Over-IP Call Recording in Call Centers
JPWO2010106772A1 (ja) 2009-03-17 2012-09-20 日本電気株式会社 分散処理システム及び分散処理方法
US9160610B1 (en) * 2009-03-31 2015-10-13 Symantec Corporation Method and apparatus for coordinating service execution within a shared file system environment to optimize cluster performance
US9378503B2 (en) * 2010-06-30 2016-06-28 Alcatel Lucent Methods of routing for networks with feedback
US9385935B2 (en) * 2013-03-06 2016-07-05 Microsoft Technology Licensing, Llc Transparent message modification for diagnostics or testing
US20150172324A1 (en) * 2013-12-13 2015-06-18 Alcatel-Lucent Usa Inc. Authorized SIP Redirection
CN105338480B (zh) * 2014-06-24 2020-01-24 创新先进技术有限公司 基于lbs的用户匹配方法、消息客户端、服务器及系统
US9612889B2 (en) * 2015-02-27 2017-04-04 Wal-Mart Stores, Inc. Integrating applications
US10826868B2 (en) * 2016-03-29 2020-11-03 T-Mobile Usa, Inc. NAT aware DNS
CN112913197B (zh) 2018-10-30 2022-09-27 慧与发展有限责任合伙企业 用于云服务的软件定义广域网上行链路选择
NL2022642B1 (en) * 2019-02-26 2020-09-01 Machsol Holding B V A system for connecting a user to a cloud service and a method for setting up the system
US11792071B1 (en) * 2021-12-17 2023-10-17 Juniper Networks, Inc. Intent-based user authentication for dynamic applications

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6317775B1 (en) * 1995-11-03 2001-11-13 Cisco Technology, Inc. System for distributing load over multiple servers at an internet site
US5774660A (en) * 1996-08-05 1998-06-30 Resonate, Inc. World-wide-web server with delayed resource-binding for resource-based load balancing on a distributed resource multi-node network
US6275937B1 (en) 1997-11-06 2001-08-14 International Business Machines Corporation Collaborative server processing of content and meta-information with application to virus checking in a server network
JP3966598B2 (ja) 1998-03-04 2007-08-29 富士通株式会社 サーバ選択システム
US6389532B1 (en) 1998-04-20 2002-05-14 Sun Microsystems, Inc. Method and apparatus for using digital signatures to filter packets in a network
US6567915B1 (en) 1998-10-23 2003-05-20 Microsoft Corporation Integrated circuit card with identity authentication table and authorization tables defining access rights based on Boolean expressions of authenticated identities
NO308019B1 (no) 1998-11-27 2000-07-03 Ericsson Telefon Ab L M FremgangsmÕte for Õ utvide bruken av SIP (Session Initiation Protocol)
US6553422B1 (en) 1999-04-26 2003-04-22 Hewlett-Packard Development Co., L.P. Reverse HTTP connections for device management outside a firewall
US6584567B1 (en) 1999-06-30 2003-06-24 International Business Machines Corporation Dynamic connection to multiple origin servers in a transcoding proxy
US8743892B2 (en) 1999-11-08 2014-06-03 Verizon Business Global Llc Method and system for dynamic gateway selection in an IP telephony network
US6434143B1 (en) 1999-11-08 2002-08-13 Mci Worldcom, Inc. Internet protocol telephony voice/video message deposit and retrieval
US6477150B1 (en) * 2000-03-03 2002-11-05 Qualcomm, Inc. System and method for providing group communication services in an existing communication system
US6976090B2 (en) * 2000-04-20 2005-12-13 Actona Technologies Ltd. Differentiated content and application delivery via internet
US6865681B2 (en) 2000-12-29 2005-03-08 Nokia Mobile Phones Ltd. VoIP terminal security module, SIP stack with security manager, system and security methods
US7284271B2 (en) 2001-03-14 2007-10-16 Microsoft Corporation Authorizing a requesting entity to operate upon data structures
US6985958B2 (en) 2001-03-14 2006-01-10 Microsoft Corporation Messaging infrastructure for identity-centric data access
US20020141404A1 (en) 2001-04-03 2002-10-03 Michael Wengrovitz Call routing using information in session initiation protocol messages
US7676430B2 (en) 2001-05-09 2010-03-09 Lenovo (Singapore) Ptd. Ltd. System and method for installing a remote credit card authorization on a system with a TCPA complaint chipset
US20020178240A1 (en) 2001-05-24 2002-11-28 International Business Machines Corporation System and method for selectively confirming digital certificates in a virtual private network
US7243370B2 (en) 2001-06-14 2007-07-10 Microsoft Corporation Method and system for integrating security mechanisms into session initiation protocol request messages for client-proxy authentication
US7010727B1 (en) 2001-06-15 2006-03-07 Nortel Networks Limited Method and system for negotiating compression techniques to be utilized in packet data communications
US20030009570A1 (en) 2001-07-03 2003-01-09 International Business Machines Corporation Method and apparatus for segmented peer-to-peer computing
US20030084331A1 (en) 2001-10-26 2003-05-01 Microsoft Corporation Method for providing user authentication/authorization and distributed firewall utilizing same
US7343490B2 (en) 2001-11-30 2008-03-11 Nokia Siemens Networks Oy Apparatus, and associated method, for facilitating authentication of a mobile station with a core network
WO2003049357A2 (en) 2001-12-07 2003-06-12 Telefonaktiebolaget Lm Ericsson (Publ) Lawful interception of end-to-end encrypted data traffic
JP3811057B2 (ja) * 2001-12-10 2006-08-16 富士通株式会社 中継コネクション管理プログラムおよび中継コネクション管理方法
KR100426306B1 (ko) * 2001-12-11 2004-04-08 한국전자통신연구원 인트라 도메인내에서의 sip 서버간 로드 분산 처리 방법
US7085829B2 (en) * 2001-12-31 2006-08-01 Innomedia, Pte Ltd. Method and system for an intelligent proxy server for workload balancing by workload shifting
US7509425B1 (en) 2002-01-15 2009-03-24 Dynamicsoft, Inc. Establishing and modifying network signaling protocols
US7240366B2 (en) 2002-05-17 2007-07-03 Microsoft Corporation End-to-end authentication of session initiation protocol messages using certificates
US7774473B2 (en) * 2002-07-31 2010-08-10 Oracle America, Inc. System and method for sticky routing of requests within a server farm
US20040043756A1 (en) 2002-09-03 2004-03-04 Tao Haukka Method and system for authentication in IP multimedia core network system (IMS)
WO2004023263A2 (en) 2002-09-09 2004-03-18 Netrake Corporation System for allowing network traffic through firewalls
KR100472952B1 (ko) 2002-10-30 2005-03-10 한국전자통신연구원 세션 초기화 프로토콜(sip)기반의 부하 분산장치 및방법
JP4338993B2 (ja) 2003-02-28 2009-10-07 モトローラ・インコーポレイテッド 無線端末のセッション制御方法及びインターフェース設定方法
US7412521B2 (en) 2003-03-12 2008-08-12 Microsoft Corporation End-point identifiers in SIP
US7949785B2 (en) * 2003-03-31 2011-05-24 Inpro Network Facility, Llc Secure virtual community network system
US7421732B2 (en) 2003-05-05 2008-09-02 Nokia Corporation System, apparatus, and method for providing generic internet protocol authentication
US6963635B1 (en) 2003-05-06 2005-11-08 Sprint Spectrum L.P. Method and system for facilitating collection of subscriber past due balance
JP2004364141A (ja) 2003-06-06 2004-12-24 Hitachi Communication Technologies Ltd Ipアドレス変換装置およびパケット転送装置
US20040260752A1 (en) * 2003-06-19 2004-12-23 Cisco Technology, Inc. Methods and apparatus for optimizing resource management in CDMA2000 wireless IP networks
JP4115354B2 (ja) * 2003-07-04 2008-07-09 富士フイルム株式会社 ピア・ツー・ピア通信システム
US7257837B2 (en) * 2003-07-26 2007-08-14 Innomedia Pte Firewall penetration system and method for real time media communications
US7142537B2 (en) 2003-12-18 2006-11-28 Motorola, Inc. Interface call signaling protocol
US7535905B2 (en) 2004-03-31 2009-05-19 Microsoft Corporation Signing and validating session initiation protocol routing headers
US8024476B2 (en) 2004-05-21 2011-09-20 Microsoft Corporation Efficient message routing when using server pools
FR2902590B1 (fr) 2006-06-16 2008-08-01 Alcatel Sa Detection de boucles au sein d'un element intermediaire de signalisation sip

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101170538B (zh) * 2006-10-24 2013-01-16 国际商业机器公司 用于改善sip解析性能的方法和装置

Also Published As

Publication number Publication date
KR20060048035A (ko) 2006-05-18
CN1700680B (zh) 2012-03-14
JP2005339550A (ja) 2005-12-08
US20060031536A1 (en) 2006-02-09
KR101120695B1 (ko) 2012-03-23
US8024476B2 (en) 2011-09-20
EP1599015A1 (en) 2005-11-23

Similar Documents

Publication Publication Date Title
CN1700680B (zh) 使用服务器池时有效的消息路由
US20210297408A1 (en) Method and system for creating a virtual sip user agent by use of a webrtc enabled web browser
US7469299B2 (en) Bridging user agent and a proxy server for supporting network services
US9124722B2 (en) Recursive query for communications network data
JP4648214B2 (ja) 呼制御装置および呼制御方法
US7945685B2 (en) Controlled relay of media streams across network perimeters
US7243162B2 (en) Processing network communication control messages
US20060242300A1 (en) Load balancing server and system
KR101224254B1 (ko) 통신 네트워크 통합 방법 및 통신 시스템
WO2002076049A1 (en) Recursive query for communications network data
CN101536481A (zh) 用于在对等网络中提供呼叫中心服务的方法
CN1716964A (zh) 维持会话连接
CN101755445A (zh) 利用PSTN可达性验证VolP呼叫路由信息
US20060187931A1 (en) Communication system and method for providing information on interface connecting network components
US8601139B2 (en) Multiple core session initiation protocol (SIP)
EP1528745B1 (en) Communication method and apparatus
US9083744B2 (en) Use of a distributed hash table to federate many small-sized IMS core infrastructures
JP4627506B2 (ja) Http対応端末をsip対応サーバに接続する代理接続方法、プロキシサーバ及びプログラム
US8280961B2 (en) Method and system for providing a camp-on service for a network service
US20130156026A1 (en) Quantum and promiscuous user agents
JP3801114B2 (ja) 論理アドレスサービス起動方法及び論理アドレスサービス起動システム及び論理アドレスサービス起動プログラム及び論理アドレスサービス起動プログラムを格納した記憶媒体
JP2004297715A (ja) アドレス解決サーバ、VoIPサーバ、アドレス解決方法、アドレス解決プログラム
Montag Load balancing of IP telephony
AU2002252431A1 (en) Recursive query for communications network data

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: 20120314

Termination date: 20130520