CN101163139A - 拒绝冗余重传的sip消息的方法和设备 - Google Patents
拒绝冗余重传的sip消息的方法和设备 Download PDFInfo
- Publication number
- CN101163139A CN101163139A CN200610142362.XA CN200610142362A CN101163139A CN 101163139 A CN101163139 A CN 101163139A CN 200610142362 A CN200610142362 A CN 200610142362A CN 101163139 A CN101163139 A CN 101163139A
- Authority
- CN
- China
- Prior art keywords
- sip
- message
- affairs
- application server
- transmission
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/10—Architectures or entities
- H04L65/1045—Proxies, e.g. for session initiation protocol [SIP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1101—Session protocols
- H04L65/1104—Session initiation protocol [SIP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Telephonic Communication Services (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种用于在SIP应用体系结构中拒绝所接收的冗余重传的SIP消息的方法,所述方法包括:根据SIP消息的传输方向,转发所有从SIP应用服务器发往SIP终端的SIP消息,并且丢弃所接收的所有从SIP终端冗余重传至SIP应用服务器的SIP消息,然后根据所述丢弃的消息的消息类型,对所丢弃的SIP消息做出相应的应答。此外,本发明还提供了相应的重传拒绝设备以及包括它的网络设备,并且还提供了用于在存储空间有限的情况下快速地拒绝冗余重传的SIP消息的方法和设备。本发明可以应用在位于SIP应用服务器前端的网络设备、例如SIP无状态代理中。
Description
技术领域
本发明总体上涉及通信领域中的会话发起协议(SIP)技术,并且尤其涉及用于在SIP应用服务器的前端拒绝冗余重传的SIP消息以便减小重传消息对SIP应用服务器的影响的方法和设备。
背景技术
近年来,会话发起协议(SIP)技术已经被广泛地认为是IP(Internet Protocol,网际协议)环境中进行用户定位、会话建立和会话管理的首选。此外,SIP还被第三代合作伙伴项目(3rd GenerationPartnership Project,3GPP)用作IP多媒体子系统(IP multimediaSubsystem,IMS)中的呼叫控制协议,其中该IP多媒体子系统(IMS)是3GPP发布的通用移动电信网络(Universal MobileTelecommunication System,UMTS)协议版本5/6的一部分。SIP协议是基于文本的信令协议,用来创建和控制两方或者多方参加的多媒体会话。SIP系统通常采用IP网络常用的客户端/服务器结构,定义了若干种不同的服务器和用户代理,通过和服务器之间的请求和响应完成呼叫和传输层的控制。
图1示出了一种典型的SIP应用体系结构。如图1所示,当服务提供商基于SIP技术开展应用时,存在大的、用于托管(hosting)应用的SIP应用服务器集群,这些SIP应用服务器同时处理来自大量SIP终端的并发SIP会话。SIP应用服务器中的工作负荷会影响到大规模电信服务的性能和质量。在该SIP应用服务器集群之前,在SIP终端和SIP应用服务器之间,存在一个SIP无状态代理(SIP statelessproxy),用于接收、预处理和分发SIP消息。
根据SIP协议,SIP用户代理(User Agent,UA)是呼叫的终端系统单元,包括客户端用户代理(UAC)和服务器端用户代理(UAS)。一个SIP事务(SIP Transaction)包括由客户端代理发送请求给服务器端代理、以及服务器代理返回所有响应到客户端代理的过程。在本文论述中,从SIP应用服务器角度来看,可以把事务分类为“客户端事务”和“服务器端事务”。在图1中,我们定义客户端事务是指SIP应用服务器充当UAC而SIP终端设备充当UAS;相应的,服务器端事务是SIP应用服务器充当UAS而SIP终端充当UAC的事务。
SIP是一种信令协议,传输和处理SIP消息的性能对于基于SIP的应用而言是非常重要的。许多已有的研究工作主要致力于解决由于网络环境或者过高的消息流量引起的问题。然而,在实践中,不难发现,即使当工作负荷处于中等适度情形,并且网络资源也十分充足时,也仍然存在性能问题,并且可能产生严重的影响。
众所周知,SIP协议被设计为一种与底层传输机制无关的协议。在实践中通常采用用户数据报协议(User Datagram Protocol,UDP)传输SIP消息。由于UDP协议并不保证消息能够可靠到达,所以在SIP协议中设计了消息重传机制,以确保信息递送的可靠性。实际上,由于发送方并不了解发送后消息在网络中传递的过程,不能确定某一条消息在其递送或者处理过程中是丢失了还是被延迟了。因此,发送方只能在一定的时间间隔之后没有接收到所需的响应消息时,重复发送已发出的消息,直到收到所需响应或者发送超时。如果初始的消息没有丢失而是被延迟了,但发送方还是重传了消息,则该初始消息以及重传消息将会到达预定目的端。这时,重传消息并没有带来更多的信息,却增加了目的端处理开销,我们称这样的重传为冗余重传。在IP网络中,由于位于SIP终端和SIP应用服务器中的SIP用户代理(User Agent,UA)无法了解SIP消息传输和处理的整个过程,消息的冗余重传是不可能避免的,并且这种冗余重传可能会对处理大量SIP事务的应用服务器的性能产生严重的负面影响。
图2示出了依据现有技术在如图1所示的SIP应用体系结构中SIP信令消息流在SIP终端、SIP无状态代理和SIP应用服务器之间的传输情况。如图2所示,SIP无状态代理仅仅是转发经过的所有SIP消息(包括初始和重传的SIP请求和响应消息)。冗余重传的消息将增加SIP应用服务器开销。如果冗余重传的消息的数量不可忽略时,这些消息将显著地影响SIP应用服务器的性能,例如,可能会增加CPU的利用率和存储空间的占用量、增加消息处理的延迟、和/或降低吞吐量等。并且,如果重传的开销非常大的话,则还将会影响到这些SIP应用服务器中的服务质量。有实验数据表明,冗余重传经常发生,并且存在以下不良影响:可使SIP应用服务器中的吞吐量下降了10%,同时使处理延迟增加了10倍。
如何从正常传输的SIP消息中识别出哪些是冗余重传而哪些是必需的传输,以及如何尽可能地阻止冗余重传或减小冗余重传的负面影响,是提高SIP应用服务器的性能的重要因素之一。
当前,在SIP协议中主要有以下几种机制用来防止消息冗余重传的负面影响。例如,
(1)产生重传消息的间隔遵循指数后退的(back-off)规则。例如,对于同一消息而言,第一次重传在最初递送之后的T1毫秒(ms)内发出,而且如果必要的话,第二次重传在2×T1毫秒内发出,等等诸如此类。
(2)在SIP UA或者UA之间的有状态的代理服务器(SIP statefulproxy)每当收到请求消息首先返回临时响应(1xx response),以便抑制消息重传。
然而,SIP协议中的上述这些机制只能够降低而不能消除冗余重传的产生。例如,在SIP UA之间路径延时过大、服务器响应时间过长等都可能导致重传的产生。通常,对重传的处理仅仅在UA中进行。然而,UA并不是识别和防止冗余重传的唯一适当的位置。例如,在图1所示的典型的SIP应用体系结构中,为了消除冗余重传的影响,可以考虑允许由SIP无状态代理来识别和拒绝消息的冗余重传以便减轻SIP应用服务器的工作负荷。
为此,鉴于上述情形,需要有一种新颖的、用于在SIP应用服务器的前端、例如SIP无状态代理中拒绝SIP消息的冗余重传从而减轻SIP应用服务器中的工作负荷的方法和设备。
此外,为了拒绝并尽可能地消除SIP信令消息的冗余重传,需要确定哪些消息是冗余重传的消息,因此,需要为每个SIP事务分配一定的存储空间,用以保持有关该事务的某些必要信息,以便对重传的消息做出适当的响应。然而,在实际的SIP应用中,往往同时存在来自多个SIP终端的数目众多的SIP事务,而且有实验数据表明,对于每个SIP事务至少需要分配2KB的存储空间。因此,当SIP系统中同时存在数目非常巨大的SIP事务时,所需要的存储空间也是相当大的。然而,在许多情况下存储空间往往是不够用的,例如,在交换机或者多功能的SIP无状态代理或者SIP卸载引擎(SIP offload engine)中就是如此。考虑到在实际应用中并不是每个SIP事务都会重传它们的某些消息,因此,为每个SIP事务都存储其有关必要信息,势必会造成存储空间的浪费。
考虑到多数情况下存储空间往往可能存在限制这一事实,因此,还需要一种在存储空间存在限制的情况下将可用存储空间分配给比较倾向于重传的SIP事务,从而在SIP应用服务器的前端、例如SIP无状态代理上快速地拒绝冗余重传的SIP消息以减轻SIP应用服务器中的工作负荷的方法和设备。
发明内容
在下文中给出了关于本发明的简要概述,以便提供关于本发明的某些方面的基本理解。应当理解,这个概述并不是关于本发明的穷举性概述。它并不是意图确定本发明的关键或重要部分,也不是意图描述本发明的范围。其目的仅仅是以简化的形式给出某些概念,以此作为稍后论述的更详细描述的前序。
为了解决现有技术的上述问题,本发明的一个目的是提供一种用于在SIP应用体系结构中拒绝所接收的冗余重传的SIP消息的方法和设备,以便减轻SIP应用服务器中的工作负荷。
本发明的另一个目的是提供一种位于SIP终端和SIP应用服务器之间并且处于SIP应用服务器的前端的、包括上述重传拒绝设备的网络设备。
本发明的再一个目的是提供一种用于在存储空间有限的情况下用于在SIP应用体系结构中快速地拒绝所接收的冗余重传的SIP消息的方法和网络设备。
本发明还有一个目的是提供一种相应的计算机可读存储介质和计算机程序产品
为了实现上述目的,根据本发明的一个方面,提供了一种用于在会话发起协议应用体系结构、即SIP应用体系结构中拒绝所接收的冗余重传的SIP消息的方法,其中所述SIP消息的消息类型和传输方向是已知的,所述方法包括以下步骤:(a)根据所述SIP消息的传输方向,转发所有从SIP应用服务器发往SIP终端的SIP消息;以及(b)根据所述SIP消息的传输方向,判断所述接收的、从SIP终端发往SIP应用服务器的SIP消息是否为冗余重传的,并且丢弃所接收的所有从SIP终端冗余重传至SIP应用服务器的SIP消息,然后根据所述丢弃的SIP消息的消息类型,对所丢弃的SIP消息重新做出应答。
根据本发明的另一个方面,还提供了一种用在会话发起协议应用体系结构、即SIP应用体系结构中拒绝所接收的冗余重传的SIP消息的重传拒绝设备,其中所述SIP消息的消息类型和传输方向是已知的,所述设备包括:重传识别器,用于确定所述接收的从SIP终端发往SIP应用服务器的SIP消息是否为冗余重传的;以及消息处理器,用于转发所接收的所有从SIP应用服务器发往SIP终端的SIP消息,丢弃所接收的所有从SIP终端冗余重传至SIP应用服务器的SIP消息,并且根据所述丢弃的SIP消息的消息类型,对所丢弃的SIP消息重新做出应答。
根据本发明的另一个方面,还提供了一种用在会话发起协议应用体系结构、即SIP应用体系结构中的网络设备,位于SIP终端和SIP应用服务器之间并且处于SIP应用服务器的前端,用于拒绝所接收的会话发起协议信令消息、即SIP消息的冗余重传,所述网络设备包括:事务表,包括存储了所述SIP信令消息的事务信息的事务项目;上述重传拒绝设备。
根据本发明的另一个方面,还提供了一种用于在会话发起协议应用体系结构、即SIP应用体系结构中快速地拒绝所接收的冗余重传的SIP消息的方法,包括如下步骤:对所接收的SIP消息进行重传检测,以便确定所述消息是否为重传的消息;一旦检测到消息的重传,就更新消息发送方的重传指示器;根据消息发送方的重传指示器的值,对所接收的SIP消息进行消息分类,以便确定所述消息是否比较倾向于进行重传;以及对于比较倾向于进行重传的SIP消息,执行上述用于在SIP应用体系结构中拒绝所接收的冗余重传的SIP消息的方法的步骤。
根据本发明还有的另一个方面,还提供了一种用在会话发起协议应用体系结构、即SIP应用体系结构中的网络设备,位于SIP终端和SIP应用服务器之间并且处于SIP应用服务器的前端,用于拒绝所接收的冗余重传的SIP消息,所述网络设备包括:事务表,包括存储了所述SIP消息的事务信息的事务项目;重传检测器,用于对所接收的SIP消息进行重传检测,以便确定所述消息是否为重传的消息,并且一旦检测到消息的重传,就通知消息分类器更新消息发送方的重传指示器;消息分类器,用于根据消息发送方的重传指示器的值,对所接收的SIP消息进行消息分类,以便确定所述消息是否比较倾向于进行重传;以及上述用在SIP应用体系结构中拒绝所接收的冗余重传的SIP消息的重传拒绝设备,用于对比较倾向于进行重传的SIP消息进行重传拒绝处理。
依据本发明的其它方面,还提供了相应的计算机可读存储介质和计算机程序产品。
本发明的一个优点在于,通过在SIP应用服务器的前端对冗余重传的SIP消息进行处理,在保持或增加SIP呼叫的吞吐量的同时,可以尽可能多地减轻SIP应用服务器上的工作负荷,并且可以实现更好的服务质量和降低操作成本。
本发明的又一个优点在于,本发明考虑了存储空间的限制,通过在对所接收的SIP信令消息进行重传检测和消息分类后,仅仅对比较倾向于重传的消息进行重传拒绝处理,可以在存储空间有限的情况下快速地拒绝消息的冗余重传,减少了进行重传拒绝处理的消息数量,并且减少了进行重传拒绝处理的开销。
通过以下结合附图对本发明的最佳实施例的详细说明,本发明的这些以及其他优点将更加明显。
附图说明
本发明可以通过参考下文中结合附图所进行的描述而得到更好的理解,其中在所有附图中使用了相同或相似的附图标记来表示相同或者相似的部件。所述附图连同下面的详细说明一起包含在本说明书中并且构成本说明书的一部分,用来进一步举例说明本发明的优选实施例和解释本发明的原理和优点。在附图中:
图1示出了一种在大型应用中典型的SIP应用体系结构;
图2示出了依据现有技术、在如图1所示的SIP应用体系结构中SIP信令消息流在SIP终端、SIP无状态代理和SIP应用服务器之间的传输情况;
图3示出了根据本发明在如图1所示的SIP应用体系结构中SIP信令消息流在SIP终端、SIP无状态代理和SIP应用服务器之间的传输情况;
图4示出了根据本发明的第一个方面、由SIP无状态代理所执行的用于拒绝SIP信令消息的冗余重传的方法的流程图;
图5示出了在执行图4所示的方法时所述SIP无状态代理中的消息处理过程;
图6从客户端事务和服务器事务的角度示出了在执行图4所示的方法时所述SIP无状态代理中的消息处理过程;
图7是示出了根据本发明的第一个方面的SIP无状态代理的示意性结构框图;
图8示出了根据本发明的第二个方面、对图7所示的SIP无状态代理进行改进后的SIP无状态代理的示意性结构框图;
图9是示出了根据本发明的第二个方面、由图8所示的SIP无状态代理所执行的用于快速拒绝SIP信令消息的冗余重传的方法的流程图;
图10示出了根据本发明的一个优选实施例、用于实现图8中所示的重传检测器的三状态Bloom过滤器(BF)的示意性结构图;
图11示出了根据本发明的该优选实施例、用于实现图8中所示的消息分类器的可计数的Bloom过滤器(CBF)的示意性结构图;以及
图12示出了在本发明的该优选实施例中所采用的两级事务表的示意性结构图。
本领域技术人员应当理解,附图中的元件仅仅是为了简单和清楚起见而示出的,而且不一定是按比例绘制的。例如,附图中某些元件的尺寸可能相对于其他元件放大了,以便有助于提高对本发明实施例的理解。
具体实施方式
在下文中将结合附图对本发明的示范性实施例进行描述。为了清楚和简明起见,在说明书中并未描述实际实施方式的所有特征。然而,应该了解,在开发任何这种实际实施例的过程中必须做出很多特定于实施方式的决定,以便实现开发人员的具体目标,例如符合那些与系统及业务相关的限制条件,其中这些限制条件会随着实施方式的不同而改变。此外,还应该了解,虽然开发工作有可能非常复杂和费时,但对得益于本公开的本领域技术人员来说,这种开发工作仅仅是例行的任务。
在此,还需要说明的一点是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的装置结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
以下结合图3至图6,对根据本发明的第一个方面的、用于在图1所示的SIP应用体系结构中在SIP无状态代理中拒绝冗余重传的SIP消息的方法400(具体可参见图4)进行描述。
其中,在图1所示的SIP应用体系结构的基础上,图3示出了在SIP无状态代理中应用了上述方法400之后SIP信令消息流在SIP终端、SIP无状态代理和SIP应用服务器之间的传输情况;图4示出了上述方法400的处理流程图;图5示出了在执行上述方法400时所述SIP无状态代理中的消息处理过程;以及,图6从客户端事务和服务器事务的角度示出了在执行上述方法400时所述SIP无状态代理中的消息处理过程。
在根据本发明的这个方面的实施例中,假定在图1所示的SIP应用体系结构满足以下条件:
(1)SIP信令消息能够在SIP无状态代理和SIP应用服务器之间可靠地进行传输;
(2)从SIP无状态代理发送到SIP应用服务器的每个请求都能够触发相应的响应,并且无论被延迟多长时间,所述响应都能够最终被SIP无状态代理接收到。
基于上述两个假定,在如图1所示的SIP应用体系结构中,SIP无状态代理能够识别和处理冗余重传的消息。如图3所示,所有从SIP终端冗余重传到SIP应用服务器的SIP信令消息都能够被SIP无状态代理所阻止,而且如果已经从SIP应用服务器接收到了对于该消息的响应,则SIP无状态代理能够对重传的请求直接做出应答。此外,基于上述两个假定,如图3所示,所有从SIP应用服务器发往SIP终端的消息都被SIP无状态代理所转发。以这种方式,能够降低在SIP应用服务器中对重传的请求进行处理的工作负荷。
SIP无状态代理检查所接收到SIP信令消息(包括从SIP终端接收的消息以及从SIP应用服务器接收的消息),并且将它们映射到SIP事务上。根据消息的类型以及传输方向(是发往SIP应用服务器还是从SIP应用服务器发出)的不同,SIP无状态代理能够采取不同的动作来处理SIP信令消息。
图4示出了根据本发明的第一个方面、由SIP无状态代理所执行的用于拒绝冗余重传的SIP消息的方法400的流程图。
如图4所示,在步骤S1中,SIP无状态代理接收来自SIP终端或者SIP应用服务器的SIP信令消息。
在步骤S2中,SIP无状态代理对所接收的消息进行消息解析,以便获得例如所接收消息的消息类型、发送源、传输方向等必要信息。
随后,方法400的处理进行到步骤S3,根据消息解析的结果,执行事务查询,即,确定事务表中是否存在存储了与所接收消息相应的事务信息的事务项目。
其中,事务表用于保持SIP信令信息的当前事务信息,其中包括事务ID、消息到达时间、相应的响应消息等(它们构成事务项目)。事务表的大小通常会受到可用存储空间的限制。此外,由于要处理的SIP信令信息的数目巨大,所以经常需要对事务表进行访问,以便执行事务项目的插入、查找、更新和删除等处理。在此,事务表可以采用现有技术中的任何便于插入、查找、更新和删除事务项目等处理的结构来实现,并且被存储在SIP无状态代理中。
如果在步骤S3中确定存在所述相应的事务信息,则方法400的处理进行到步骤S4,否则处理转入步骤S5。
在步骤S4中,判断所接收消息的传输方向,即,是要发往SIP终端还是要发往SIP应用服务器。
如果在步骤S4中确定所接收的消息是要发往SIP终端的,则处理进行到步骤S6,判断该消息是否为响应或确认(ACK)的第一次传输。
如果在步骤S6中确定是响应或确认ACK的第一次传输,则处理进行到步骤S8,在事务表中的与该消息有关的事务项目中记录该消息。然后,处理进行到步骤S12。
如果在步骤S6中的判断结果为否,则处理进行到步骤S12。
在步骤S12中,SIP无状态代理输出所接收的消息(将消息输出到SIP终端)。
上述步骤S4-S6-(S8)-S12的处理过程,表明从SIP应用服务器发往SIP终端的所有消息(包括请求和响应)都会被SIP无状态代理转发,其中的步骤S8是为了确保在事务表中记录所接收消息的相应响应,所以只需要在第一次传输响应或确认ACK时将其记录在事务表中即可。
如果在步骤S4中确定所接收的消息是要发往SIP应用服务器的,则处理进行到S7,判断该消息是否为冗余重传。
如果在步骤S7中判定所述消息是冗余重传,则SIP无状态代理将会阻止该消息的继续传输,并且直接对该冗余重传做出应答。
具体来说,如果步骤S7的判定结果为是,则方法400的处理进行到步骤S9,确定该消息的类型,即判断该消息是否为一个请求或者对于INVITE的最终响应。
如果步骤S7的判定结果为否,即,如果所述消息不是冗余重传,则处理进行到步骤S8,将该消息记录在事务表中的所述事务项目中。然后,处理进行到步骤S12,由SIP无状态代理输出所述消息。
如果在步骤S9中确定所述冗余重传的消息是一个请求,则处理进行到步骤S10,SIP无状态代理丢弃该冗余重传的请求,并且根据情况对所丢弃的请求做出应答。具体而言,如果已经接收到了其相应的响应,则用适当的响应(如果事务表中不存在最终响应,则使用临时响应;如果存在最终响应,则使用该最终响应)来对该请求做出应答;如果没有接收到相应的响应,则SIP无状态代理直接丢弃该消息,不做应答。
如果在步骤S9中确定所述冗余重传的消息是对于INVITE的最终响应,则处理进行到步骤S11,用相应的确认ACK对其做出应答。如果还没有接收到相应的ACK,则使用一个寄存器来保持未被应答的最终响应的数目,并且一旦接收到了ACK后,就重复发送ACK达相应次数(即,重复发送ACK的次数=未被应答的最终响应的数目)。
在此,为了简单起见,在图4中省略了有关上述处理过程的处理流程,而仅仅简单地用步骤S10、S11来表示。显然,本领域技术人员可以很容易地根据上述文字描述绘制出相应的流程图。
如果在步骤S9中确定所述冗余重传的消息既不是一个请求,也不是对于INVITE的最终响应,而是其它响应,则处理进行到步骤S13,丢弃所述其它响应,并且不会输出任何消息。
在如图4所示的方法400的流程图中,如果SIP无状态代理确定在事务表中不存在所接收消息的相应事务信息(这表明该消息没有被记录在事务表中),并且所接收消息为一个请求,即,如果步骤S5中的判定结果为是,则处理进行到步骤S14,在事务表中创建和插入一个与所接收消息相应的事务项目。然后,处理进行到步骤S12,输出所述接收的消息。另外,如果步骤S5中的判定结果为否,则处理也进行到步骤S12,输出所述接收的消息。
图5示出了在执行上述方法400时所述SIP无状态代理中的消息处理过程。如图5所示,在SIP无状态代理中,将所有来自SIP应用服务器的消息都转发到SIP终端;丢弃所有从SIP终端重传的到SIP应用服务器的消息,并根据所丢弃消息的类型,执行下述处理。如果所丢弃的消息为一个请求,而且已经接收到了相应的响应(一个或多个),则用适当的一个响应来对该请求做出应答;如果所丢弃的消息是对于INVITE事务的最终响应,则确定是否接收到了相应的ACK,如果还没有接收到,则记录已经接收到了多少个未被确认的最终响应(其数目用ReplyNum表示),直到接收到相应的ACK为止,然后重复发送ACK达ReplyNum次;如果所丢弃的消息是除上述最终响应以外的其它响应,则不再执行其它处理,即不会向SIP应用服务器输出任何消息。
图6从客户端事务和服务器事务的角度示出了在执行上述方法400时所述SIP无状态代理中的消息处理过程。
如图6所示,在SIP无状态代理接收到来自SIP终端或者SIP应用服务器的SIP信令消息后,对该消息进行解析,并且在事务表中查找相应的事务信息。然后,根据所述事务信息是客户端事务还是服务器事务,对其执行不同的处理。
正如背景技术部分中所描述的,客户端事务是指其UAC是SIP应用服务器、且UAS是SIP终端的事务,即,客户端事务包括从SIP应用服务器向SIP终端发送的请求、以及从SIP终端向SIP应用服务器发送的响应;而服务器事务则是指其UAC是SIP终端、且UAS为SIP应用服务器的事务,即服务器事务包括从SIP终端向SIP应用服务器发送的请求、以及从SIP应用服务器向SIP终端发送的响应(以及ACK)。
对于客户端事务而言,如图6中的D1所示,将所有来自SIP应用服务器的请求都传递到SIP终端,并且丢弃所有从SIP终端重传到SIP应用服务器的响应,而且如果有必要的话,还重复发送ACK达一定次数。
对于服务器事务而言,如图6中的D3所示,将所有来自SIP应用服务器的响应都传递到SIP终端,并且还如图6中的D2所示,丢弃所有从SIP终端重传到SIP应用服务器的请求,此时,如果存在对应于所丢弃的请求的响应,则将适当的响应应答给SIP终端。
在此需要说明的是,以上虽然结合图4所示的流程图对根据本发明由SIP无状态代理所执行的方法400的处理进行了描述。但是,本领域技术人员应当理解,显然根据上述描述可以绘制出与图4所示的流程图局部或者完全不同的流程图,其中的处理步骤和以及处理步骤的执行顺序可能部分或者完全不同于图4中所描绘的步骤和顺序。也就是说,根据以上所给出的教导,SIP无状态代理可以执行不同于上述方法400的处理来拒绝发给SIP应用服务器的冗余重传的SIP消息,只要其原则上能够满足图5中所示的消息处理过程即可。
另外,还需要说明的是,上述方法400中的步骤S10和S11中的有关处理是为了满足SIP协议的有关协议要求而执行的,因此在上述的描述中没有进行详细说明。
图7示出了根据本发明实施例的SIP无状态代理700的示意性结构。该SIP无状态代理700可以执行以上结合图4所描述的方法。
如图7所示,该SIP无状态代理700包括:消息解析器701,用于对SIP无状态代理所接收到的消息进行解析;重传拒绝设备710,用于执行图4所示的流程图中的步骤S3至S14中的处理(其具体功能和操作在下文中进行详细描述);和事务表705,用于存储当前的事务信息,其中包括事务ID、消息到达时间、相应的响应等。如图7所示,重传拒绝设备710包括事务查询及生成器702、重传识别器703和消息处理器704。
其中,事务查询及生成器702用于执行事务信息的查询和/或事务项目的生成,具体来说,用于在事务表705中查找是否存在与所接收的SIP消息相对应的事务信息,如果没有找到相应的事务信息,并且所接收的SIP消息为一个请求,则在事务表中创建和插入一个事务项目,并在其中记录下该消息的事务ID、消息到达时间等事务信息。
重传识别器703用于识别所接收的SIP消息是第一次传输的还是冗余重传的,并且将识别结果告知消息处理器704。
消息处理器704根据上述重传识别结果,并且依据所接收的SIP消息是请求、对于INVITE事务的最终响应、还是其它响应,对所接收的消息进行不同的处理(具体可参见图4所示的流程图中的步骤S8、S9、S10、S11、S12和S13)。
显然,上述各个模块或设备的功能和处理过程通过以上结合图3-6所给出的描述已经非常清楚了,因此,为了说明书的简洁起见,在此就不再详述了。
在以上描述的依据本发明的方法400和SIP无状态代理700中,由于处理的SIP消息的数量非常巨大,因此会非常频繁地对事务表进行插入、查找、更新和删除等,因此,上述方法400的处理速度和SIP无状态代理700的性能在很大程度上要受到事务表处理的影响。
为了在实际处理过程中实现事务信息或事务项目的快速插入、查找、更新和删除,在本发明的一个优选实施例中,采用了具有固定大小的哈希表来实现事务表,并且为了避免冲突和进行快速的查找,利用了多个哈希函数。此外,考虑到存储空间的限制,对每个事务项目设定了时间期限,并且允许在存储空间不够的情况下删除到期的事务项目。
假定哈希表的大小为m,即,假定哈希表是长度为m的数组,用{A0,A1,...,Am-1}表示,其中Ai用于存储相关事务项目的实际存储位置的地址指针。以下为了方便起见,将A0,A1,...,Am-1称为事务表中的第0、1、......、m-1个位置。
此外,还假定选择了k个哈希函数H1、H2、......、Hk,将事务ID(用x表示)用作事务项目的关键字进行哈希计算。哈希函数H1、H2、......、Hk可以把x映射为一个在区间[0,1,......,m-1]内的整数。
如果需要把一个新的事务项目插入到事务表中,则对于每个Hi(1≤i≤k),依次判断第Hi(x)个位置是否为空,并且一旦发现某一Hi(x)的位置为空,就在该位置中放入该事务项目的实际存储位置(或存储单元)的地址指针。否则,如果所有Hi(x)(1≤i≤k)的位置都不为空,则依次判断Hi(x)(1≤i≤k)的位置中的事务项目是否到期了(例如,可以根据消息的到达时间和所设定的时间期限来判断),并且一旦发现Hi(x)的位置中的事务项目到期了,就用新的事务项目代替该到期的事务项目。如果所有的Hi(x)(1≤i≤k)的位置中的事务项目都没有到期,则用该新的事务项目代替最旧的那个事务项目。
对于事务项目的查找操作,其处理过程是与上述插入事务项目的处理过程相逆的过程。具体来说,为了查找一个具有事务ID x的事务项目,依次查找由存储在哈希表中第Hi(x)(1≤i≤k)个位置中的地址指针所指向的存储单元,以确定其中存储的事务ID是否为x。为了描述的简单和方便起见,在下文中将上述操作简单地用“依次查找哈希表中第Hi(x)(1≤i≤k)个位置以查找事务ID为x的事务项目”来描述。
一旦在某一Hi(x)(1≤i≤k)的位置中找到了事务ID为x的事务项目,则终止查找处理。如果在所有的Hi(x)(1≤i ≤k)的位置中都没有找到所需的事务项目,则查找处理将会返回一个空值(null)。
为了加速对哈希表的操作,应当适当地选择H1、H2、......、Hk。考虑到事务ID是一个字符串,因此,在本发明的一个进一步的优选实施例中,将H1选择为适合于对字符进行哈希计算的哈希函数,并且将所有后续的H2、......、Hk选择为是对H1(x)的结果进行位操作的哈希函数。
以上结合图3-7描述了依据本发明一个方面的SIP无状态代理及其处理方法,其中在SIP无状态代理上可以拒绝冗余重传的SIP消息,丢弃所有从SIP客户端重传发往SIP应用服务器的消息,并根据所丢弃的消息的不同类别直接做出适当的应答,而不把冗余重传的消息转发到SIP应用服务器进行处理,因此有效地减轻了SIP应用服务器上的消息处理负载。
但是,正如上文中所提到的,在上述方法和SIP无状态代理中,需要将所有接收到的SIP消息都映射为相应的SIP事务,并且事务信息(包括到达时间、当前状态、接收到的相应响应等)都应当被保持一段时间,以便根据事务的状态识别冗余重传的消息并且对其做出响应。因此,需要为每个SIP事务分配一定的存储空间。
在实际的应用中,SIP事务将会持续一段时间(对于INVITE事务该时间可达一秒或多秒),这样,在SIP无状态代理上可以观察到大量并发事务,因此,需要为这些事务分配的存储空间是相当大的。然而,在许多情况下,存储空间往往不够用。因此,考虑到以下两个主要问题:(1)识别冗余重传的消息并且对其做出响应的速度;(2)当同时存在大量并发事务时可利用的存储空间的数量,并且鉴于实际应用中并不是每个SIP事务都会重传它们的某些消息这一情况,所以,当存储空间有限时,为了节省存储空间,应当确保将可用的存储空间分配给比较倾向于重传的SIP事务。
为此,根据本发明的另一个方面,对上述方法和SIP无状态代理进行了改进,以便可以在SIP无状态代理上存在存储空间受限的情况下快速地拒绝冗余重传的SIP消息。
下面仍然以图1所示的SIP应用体系结构为例,结合图8-9描述了根据本发明的所述另一个方面的应用,其中图8示出了在存储空间有限的情况下对图7所示的SIP无状态代理700进行改进后的SIP无状态代理800的结构框图,图9示出了在该SIP无状态代理800上执行的、用于在存储空间有限的情况下快速阻止冗余重传的SIP消息的方法900。
在本发明的这个方面中,做出了如下假定:一旦确定从某一发送方重传了一条SIP消息,则认为在后续的某一预定时间间隔内所有来自该发送方的消息都是倾向于进行重传的。
如图8所示,SIP无状态代理800包括消息解析器801、重传检测器802、消息分类器803、重传拒绝设备804和事务表805。
其中,消息解析器801和事务表805的功能与图7中所示的消息解析器701和事务表705的功能是相同的,因此,为了避免重复,在此省略了对它们的描述。
重传检测器802用于对SIP无状态代理800所接收的SIP信令消息进行重传检测,即检查所接收到的消息是否为重传的消息,并且如果检测到重传,则通知消息分类器803更新消息发送方的重传指示器。
消息分类器803根据所接收消息的发送方的重传指示器,对该消息进行分类,即确定该消息是否倾向于重传。然后,消息分类器803将所接收消息中比较倾向于重传的那些消息传送到重传拒绝设备804,而对于其它消息则并不经过重传拒绝设备804进行处理,而是直接输出。在此,由消息分类器803传送到重传拒绝设备804进行重传拒绝处理的消息的最大比率受到SIP无状态代理800中可用存储空间的限制。
重传拒绝设备804用于对从消息分类器803传送来的比较倾向于重传的SIP信令消息进行处理,以检查该消息是否是冗余重传的,并且如果是的话,对其做出正确的响应。重传拒绝设备804的功能和处理过程与图7中所示的重传拒绝设备710的功能和处理过程是相同的,因此在此就不再对它们进行详述了。
通过在SIP无状态代理800中在重传拒绝设备800之前设置重传检测器和消息分类器,可以减少需要进行重传拒绝处理的消息数量,并且因此减少了重传拒绝设备和事务表中的开销。如果消息分类是有效的并且是正确的,则还可以有效地降低处理延迟和存储空间占用率。
关于SIP无状态代理800中的上述各个模块或设备的具体处理过程,在下面参考图9所示的方法900的流程图进行进一步的详细描述。
如图9所示,在步骤S901,SIP无状态代理800接收来自SIP终端或者SIP应用服务器的SIP信令消息。
然后,在步骤S902,消息解析器801对所接收的SIP信令消息进行消息解析,以便获得如消息类型、发送源等必要信息。
随后,方法900的处理进行到步骤S903,重传检测器802对所接收的消息进行重传检测,即检查所述消息是否为重传的消息。并且,一旦检测到消息的重传,就会通知消息分类器803更新发送方的重传指示器。
此后,处理进行到步骤S904,消息分类器803根据其中重传的发送方的重传指示器,对所接收的消息进行消息分类。即,如果在步骤S903中检测到重传了一条消息,则在消息分类器803中记录下该消息的发送方和/或更新发送方的重传指示器,并且根据发送方的重传指示器,对所述接收的消息进行分类,即确定该消息是否倾向于进行重传。
接下来,在步骤S905,判断所述消息是否比较倾向于进行重传。例如,该步骤可以由消息分类器803依据消息发送方的重传指示器的值是否大于某一预定阈值来做出判断,并且依据判定结果决定是否将所述消息传送到重传拒绝设备804。
如果在步骤S905中判定所述消息是比较倾向于重传的,则在步骤S906中,由重传拒绝设备对比较倾向于进行重传的所述消息进行重传拒绝处理,将所有从SIP应用服务器发往SIP终端的消息都进行转发,同时丢弃所有从SIP终端冗余重传的消息,并且根据所丢弃的消息的不同做出适当的响应。该步骤906的处理对应于以上结合图4所描述的方法400中的步骤S3-S11、S13和S14的处理过程,因此,在此为了简洁起见就不再详述了。
在对比较倾向于重传的消息进行重传拒绝处理后,方法900的处理进行到步骤S907,输出相应的消息。
如果在步骤S905中判定所述消息不属于比较倾向于重传的,则方法900的处理进行到步骤S907,直接输出所述接收的消息。
通过以上结合图8和9给出的描述可知,通过在图7所示的重传拒绝设备710的前端进行重传检测和消息分类,以及仅仅对所接收消息中比较倾向于重传的SIP消息执行结合图4所描述的方法400的处理,减少了SIP无状态代理800中进行重传拒绝处理的SIP消息的数量,因而可以实现快速操作。
在结合图8和9所描述的本发明的这个方面中,考虑到存储空间存在限制,因此重传检测器、消息分类器以及事务表的设计会在很大程度上影响到SIP无状态代理800的性能和方法900的处理速度。
为此,在本发明的一个进一步的优选实施例中,为了进一步地节省存储空间以及对事务表执行更为快速的事务项目插入、查找、更新和删除处理,分别使用Bloom过滤器来实现上述图8中所示的重传检测器802和消息分类器803,并且还使用了一个两级事务表来实现图8中所示的事务表805。下面将结合图10至图12对它们进行具体描述。
图10示出了根据本发明的一个优选实施例、用于实现重传检测器的三状态Bloom过滤器(BF)的示意性结构图;图11示出了根据本发明的该优选实施例、用于实现消息分类器的可计数的Bloom过滤器(BF)的示意性结构图;以及图12示出了根据本发明的该优选实施例中采用的两级事务表的示意性结构图。
标准的Bloom过滤器使用一组s个独立的哈希函数(HFG),以便对一个对象进行哈希计算,从而得到一组对应于该对象的位置坐标。只有当由某个对象的s个哈希值所指示的位置全部都被标记了时,才将该对象判定为存在。简而言之,标准的Bloom过滤器通过一个s维的标记矢量识别一个元素的存在关系。有关标准Bloom过滤器的细节可参见(Burton Bloom,Space/time trade-offs in hash coding withallowable errors,CACM,13(7):422-426,July 1970.),在此仅仅对其与本发明密切相关的部分内容进行说明。
如以上结合图8所述的那样,重传检测器802用来检测一条消息是否是重传的,并且通知消息分类器对该消息的发送方进行标记。这意味着,重传检测将对消息分类器模块进行配置。在该实施例中,采用了如图10所示的三状态的Bloom过滤器(Bloom Filter,BF)1000(以下将其简称为消息过滤器)来实现重传检测器。
对于每条SIP信令消息,消息过滤器1000对整条消息进行哈希计算,并且根据所计算的哈希值对消息过滤器进行查找。重传的消息经过哈希计算后会具有相同的哈希值,而其它的消息则具有不同的哈希值。因此,如果该哈希值被标记在消息过滤器中了,则意味着该消息是一条重传的消息;并且将相应的发送方保持在消息分类器中,即记录或者更新消息分类器中的发送方重传指示器。如果该哈希值没有被标记在消息过滤器中,则这意味着该消息是第一次传输的消息(即非重传的消息),并且在消息过滤器中标记该哈希值。
具体来说,参见图10,为了简单起见,用一个4行8列的表来形象表示该消息过滤器1000。实际上,该表的所有位置构成一个数组,四个独立的哈希函数将消息哈希后会给出四个独立的位置。假定消息过滤器的初始状态如图10中最左边的表格所示,其中所有位置的初始值均为0。
在第一次接收到某一条SIP信令消息时,对该消息进行哈希计算,并且在与所计算的哈希值相对应的位置中标记1,以表明该消息已进行过传输,例如,如图10中的第2个表格所示。在这种情况下,消息过滤器还会通知消息分类器更新消息发送方的重传指示器。
在接收到重传的消息时,对其进行哈希计算后会得到相同的哈希值,如果在与该哈希值相对应的位置处的值标记为1,则将该位置中的值从1改为2,以表明该消息是重传的消息,例如,如图10中的第3个表格所示。在再次接收到该条消息时,会发现相应位置中的值已经被标记为2了,这表明该条消息已经被标记为是重传的消息,因此就无需再对其进行任何处理,如图10中最右边的表格所示。
从以上的描述中可以看出,消息过滤器中的标记值可以表明所接收消息的传输或重传次数,标记值为0,表示该消息是第一次传输;标记值为1,表示该消息是第一次重传;标记值为2,表示该消息已经至少重传过一次了。
由于消息过滤器的大小是固定的,所以为了防止过载,需要将消息过滤器中的所有值定期地递减。
此外,由于考虑到在存储空间有限的情况下消息分类器的处理应当是快速的和有效的,为此,在该实施例中采用了如图11所示的可计数的Bloom过滤器1100(以下简称为发送方过滤器)来实现图8所示的消息分类器803。在此,基于标准Bloom过滤器的概念,将标准Bloom过滤器中的位阵列扩展为4位的计数器阵列,其中每个计数器可以具有16个可能的值,以便对消息进行分类,即确定所述消息是否倾向于重传和识别一个用户是否倾向于重传消息。如图11所示每一个单元表示一个计数器。
当接收到一条消息时,发送方过滤器1100使用HFG对发送方ID进行哈希计算,发送方ID可以是消息头中的From URI,或者是其它的能够从消息中获得的标记发送方的字段。当检测到重传的消息时,经过对发送方ID进行哈希计算后会对应于图11中所示的同样单元位置,然后将该单元位置中的计数器加1。图11中示出了发送方1(RU=1)和发送方2(RU=2)的计数器值的情况,其中发送方1的计数器值为1、2、1、1,发送方2的计数器值为3、4、5、4。某一发送方RU的各计数器值不同,是由于对不同发送方ID进行哈希计算后的哈希值可能会对应于相同的单元位置从而造成了重叠。因此,将某一发送方ID哈希值所指示的各个计数器值中的最小值(用CW表示)作为该发送方的重传指示器值。例如,如图11所示,发送方1的重传指示器值为1。
由此可见,可以使用发送方过滤器1000来保持标记了的、倾向于重传消息的发送方,并且可以由重传检测器(即消息过滤器)对它进行配置。
在接收到一条消息时,检查消息发送方的重传指示器值是否大于某一预定阈值T。如果是的话,则该消息将会被认为是比较倾向于重传,并且其将会被传送到图8所示的重传拒绝设备804。如果该消息的发送方的重传指示器值小于所述预定阈值T,则该消息将会被直接发送出去。
所述阈值T可以根据发送方过滤器中值的分布情况(即,发送方的重传指示器值的分布情况)以及可用存储空间的大小来进行确定和调整。
根据本发明的一个优选实施例,所述预定阈值T可以如下所述这样确定。假设重传拒绝设备804的重传处理率为λa事务/秒(TPS)(其由SIP无状态代理中的可用存储空间的大小来确定),T是使所有具有CW≥T的消息的消息到达率的总和小于λa的最小整数。
由于发送方过滤器的大小是固定的,所以为了防止过载,与消息过滤器1000相类似地,发送方过滤器1100中的所有值也需要被定期地递减。例如,当发送方过滤器中的一半以上的计数器达到其最大值时,除非其值已经为0,否则,将所有计数器减去某一个值(例如1或者所有计数器值中的最小值)。当减小计数器值时,可以计算计数器值的分布,并且还依据可用存储空间的大小,计算下一个时段内用于确定来自某一发送方的消息是否比较倾向于进行重传的所述阈值T。
下面将参考图12描述这个实施例中所使用的事务表1200。
如图12所示,该事务表用一个两级的结构实现,其包括两个子表:循环事务项目表以及索引表。
其中,循环事务项目表用于存储和保持事务项目,并且有一个指针用来指示下一个空位置。当要在事务表中插入一个新的事务项目时,将该项目放置在由所述指针所指示的位置上(正如以上所描述的那样,是将该事务项目的实际存储位置或者单元的地址指针放置在所述位置上)。然后,将指针加1。循环事务项目表是一个其中逐个地放置事务项目的紧凑的表,其大小N可以用下式来计算:
N=M/S,
其中,M表示可用存储空间的大小,S表示平均的事务项目大小。
索引表用来保持事务项目在循环事务项目表中的位置,其中的每个索引仅仅是个整数。所以,在SIP无状态代理中的存储空间较小的情况下,索引表的大小也可以是较大的。实际上,索引表的大小n要大于循环事务项目表的大小N。在一个优选实施例中,n/N=5。即使n/N=10,由索引表所占用的存储空间也小于由循环事务项目表所占用的存储空间的1%。
为了实现在事务表中快速地插入或者查找事务项目,将索引表实现为一个哈希表,并且使用了多个哈希函数,以避免冲突和进行快速查找。假定索引表的大小为n(即,索引表是一个大小为n的数组),并且选择了k个哈希函数:H1、H2、......、Hk。将事务ID x用作事务项目的关键字,并且H1、H2、......、Hk把x映射为一个在区间[0,1,......,n-1]内的整数。
如果一个新的事务项目将要被插入到事务表中,则将该事务项目直接放置到循环事务项目表中,并且该事务项目在循环事务项目表中的放置的位置是该事务项目在索引表的索引。然后,依次判断所述索引表中的第Hi(x)(1≤i≤k)个位置是否为空,一旦发现其中有一个位置为空,则就在索引表的该位置中放入所述索引值。如果所有Hi(x)(1≤i≤k)所指示的位置都不为空,则依次检查索引表中第Hi(x)(1≤i≤k)个位置中存储的旧的索引值所指示的项目是否到期了,如果它到期了,则将该新的索引放在这个位置上。如果由索引表中所有Hi(x)(1≤i≤k)的位置中的旧的索引所指示的项目都没有到期,则用该新的索引值代替最旧的那个事务项目的索引值。
如果需要查找一个事务ID(TID)为x的事务项目(以下简称为目标事务项目),则对于每个Hi(x)(1≤i≤k),按照顺序,依次比较所述循环事务项目表中的、由存储在索引表中第Hi(x)(1≤i≤k)个位置中的索引值(用Index(Hi(x))表示)所指示的位置中的事务项目的TID,一旦在所述循环事务项目表中的、由某一索引值Index(Hi(x))所指示的位置中找到目标事务项目,就终止查找处理。如果在循环事务项目表中的、由索引值Index(Hi(x))(1≤i≤k)所指示的所有位置中都没有找到目标事务项目,则搜索处理将会返回一个空值(null)。
例如,假设某一个事务项目被放置在第200个位置上。该事务项目的索引值为200。利用Hi(x)(1≤i≤k)对该事务项目的TID按照顺序依次进行哈希计算。一旦在索引表中由Hi(x)(1≤i≤k)所指示的位置中找到一个空位置或者已到期的位置,则就把索引值200放置在该空位置上。否则,将把索引值200放置在具有最旧的索引值的位置上。此外,为了查找该事务项目,将上述处理反向进行即可。通过利用Hi(x)(1≤i≤k)对TID进行哈希计算(逐个进行),按照顺序依次检查由索引表中的第Hi(x)(1≤i≤k)个位置中的索引值所指示的事务项目的TID,直到找到正确的事务项目为止。
正如以上结合图7所描述的那样,为了加速对索引表的操作,应当适当地选择H1、H2、......、Hk。例如,在一个优选实施例中,由于事务ID是一个字符串,所以将H1选择为用于字符的哈希函数,而所有后续的H2、......、Hk选择为是对H1(x)的结果进行位操作的哈希函数。
通过以上对本发明的优选实施例的描述可知,利用本发明,可以在保持或增加SIP呼叫的吞吐量的同时,减轻SIP应用服务器上的工作负荷,并且实现更好的服务质量和降低操作成本。
虽然以上结合图3至12对本发明的优选实施例进行了描述,但是,显然应当理解,上述示例描述不可能是穷举的,而且根据设计要求的不同,本发明完全可以有其它不同的优选实施方式。
例如,以上虽然描述了在一个优选实施例中同时对图8所示的重传检测器802、消息分类器803和事务表805进行了改进,但是,显然分别对它们进行改进或者以任意组合方式对它们中的某一些进行改进都是可能的。而且,对于重传检测器和消息分类器来说,除了使用Bloom过滤器以外,也可以使用其它方式来实现,只要能够实现其预定功能即可。
另外,例如,对于图7和8中所示的事务表705和805来说,虽然以上分别对它们的一种优选实施方式进行了描述,但是,显然上述两种事务表结构是可以互换使用的。此外,虽然在上述的优选实施例中都使用了哈希表来实现事务表,但是显然也可以用其它方式来实现事务表,只要其结构便于快速地执行事务项目的插入、查找、更新和删除即可。
此外,在本发明中,还需要说明的是,在以上所描述的SIP无状态代理和方法处理过程中的消息解析过程不同于SIP UA中的消息解析过程。在本发明中,消息解析处理仅仅需要部分地解析所接收到的SIP信令消息即可,即,只要能够确定所接收消息的类型,源和目标地址、上一跳地址等以便计算事务ID即可。因此,在本发明中,可以使用一个部分解析器(partial parser),以便提高解析效率以及降低解析开销。并且,在根据本发明的方法和SIP无状态代理中,如果在SIP无状态代理之前已经存在了其它的SIP操作并且获知了消息类型和消息源,则在该SIP无状态代理中能够利用在所述先前的SIP操作中进行消息解析的结果。在这种情况下,在如图4和9所示的方法的处理流程中,可以省略其中关于消息解析的步骤。这样,能够进一步减少在SIP无状态代理中进行消息解析的开销。
另外,虽然以上是在图1所示的典型的SIP应用体系结构中对本发明在SIP无状态代理中的应用进行了描述,但是,显然应当明白,本发明的原理除了可以被应用在SIP无状态代理中之外,还可以被应用在位于SIP终端和SIP应用服务器之间并处于SIP应用服务器前端的其它网络设备、例如路由器、边缘服务器等中。
此外,显然,根据本发明的上述方法的各个操作过程也可以以存储在各种机器可读的存储介质中的计算机可执行程序的方式实现。
而且,本发明的目的也可以通过下述方式实现:将存储有上述可执行程序代码的存储介质直接或者间接地提供给系统或设备,并且该系统或设备中的计算机或者中央处理单元(CPU)读出并执行上述程序代码。
此时,只要该系统或者设备具有执行程序的功能,则实施的方式不局限于程序,并且该程序也可以是任意的形式,例如,目标程序、解释器执行的程序或者提供给操作系统的脚本程序等
上述这些机器可读存储介质包括但不限于:各种存储器和存储单元,半导体设备,磁盘单元例如光、磁和磁光盘,以及其它适于存储信息的介质等。
另外,客户计算机通过连接到因特网上的相应网站,并且将依据本发明的计算机程序代码下载和安装到计算机中然后执行该程序,也可以实现本发明。
最后,还需要说明的是,在本文中,诸如左和右、第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上虽然结合附图详细描述了本发明的实施例,但是应当明白,上面所描述的实施方式只是用于说明本发明,而并不构成对本发明的限制。对于本领域的技术人员来说,可以对上述实施方式做出各种修改和变更而不背离本发明的实质和范围。因此,本发明的范围仅由所附权利要求及其等效含义来限定。
Claims (31)
1.一种用于在会话发起协议应用体系结构、即SIP应用体系结构中拒绝所接收的冗余重传的SIP消息的方法,其中所述SIP消息的消息类型和传输方向是已知的,所述方法包括以下步骤:
(a)根据所述SIP消息的传输方向,转发所有从SIP应用服务器发往SIP终端的SIP消息;以及
(b)根据所述SIP消息的传输方向,判断所述接收的、从SIP终端发往SIP应用服务器的SIP消息是否为冗余重传的,并且丢弃所接收的所有从SIP终端冗余重传至SIP应用服务器的SIP消息,然后根据所述丢弃的SIP消息的消息类型,对所丢弃的SIP消息重新做出应答。
2.根据权利要求1所述的方法,还包括如下步骤:
对所接收的SIP消息进行事务查询,在事务表中查找是否存在包含了与所接收的SIP消息相对应的事务信息的事务项目,
其中,所述事务信息包括与SIP消息有关的事务ID、消息到达时间、相应的响应。
3.根据权利要求2所述的方法,还包括如下步骤:
如果在事务表中没有找到所述事务项目,并且所述接收的SIP信令消息为一个请求,则在所述事务表中插入一个新的事务项目,用于记录与该消息相对应的事务信息。
4.根据权利要求2所述的方法,其中,所述步骤(a)进一步包括如下步骤:
当在所述事务表中找到了所述事务项目,并且从SIP应用服务器发往SIP终端的SIP消息是响应或确认ACK的第一次传输时,将该消息记录在所述事务表的所述事务项目中。
5.根据权利要求2所述的方法,其中,所述步骤(b)进一步包括步骤:
如果所述接收的从SIP终端发往SIP应用服务器的SIP消息不是冗余重传的,则将所述消息记录在所述事务表的所述事务项目中,并且转发该消息。
6.根据权利要求2所述的方法,其中,步骤(b)进一步包括如下步骤:
如果所述接收的从SIP终端发往SIP应用服务器的SIP消息是冗余重传的,则丢弃所述冗余重传的SIP消息,并且,
当所述丢弃的SIP消息为一个请求时:
确定所述事务表的所述事务项目中是否存在与该请求相对应的响应;
如果存在所述相对应的响应,则使用该响应对该请求直接做出应答,
如果不存在所述相对应的响应,则直接丢弃该消息;
当所述丢弃的SIP消息为INVITE事务的最终响应时:
确定是否接收到相应的确认ACK;
如果已经接收到了所述确认,则用该确认做出应答;以及
如果还没有接收到,则等待直到接收到所述确认为止,并且将所述确认重发预定次数。
7.根据权利要求2到6中任何一项权利要求所述的方法,其中,事务表是哈希表、以及包括循环事务项目表和哈希表的两级事务表中的一种。
8.根据权利要求1到6中任何一项权利要求所述的方法,其中,所述方法在位于SIP终端和SIP应用服务器之间并且处于SIP应用服务器的前端的网络设备中执行。
9.根据权利要求8所述的方法,其中,所述网络设备为SIP无状态代理。
10.根据权利要求1到6中任何一项权利要求所述的方法,其中,所述SIP消息的消息类型和传输方向是通过对所接收的SIP消息进行部分消息解析获得的。
11.一种用在会话发起协议应用体系结构、即SIP应用体系结构中拒绝所接收的冗余重传的SIP消息的重传拒绝设备,其中所述SIP消息的消息类型和传输方向是已知的,所述设备包括:
重传识别器,用于确定所述接收的从SIP终端发往SIP应用服务器的SIP消息是否为冗余重传的;以及
消息处理器,用于转发所接收的所有从SIP应用服务器发往SIP终端的SIP消息,丢弃所接收的所有从SIP终端冗余重传至SIP应用服务器的SIP消息,并且根据所述丢弃的SIP消息的消息类型,对所丢弃的SIP消息重新做出应答。
12.如权利要求11所述的重传拒绝设备,还包括:
事务查询及生成器,用于对所接收的SIP消息进行事务查询,在事务表中查找是否存在与所接收的SIP消息相对应的事务信息,
其中,所述事务信息包括与SIP消息有关的事务ID、消息到达时间、相应的响应。
13.如权利要求12所述的重传拒绝设备,其中,所述事务查询及生成器还用于如果事务表中不存在相应的事务信息,而且所述SIP消息为一个请求,则在事务表中创建一个事务项目,用于记录与该消息相对应的事务信息。
14.根据权利要求12所述的重传拒绝设备,其中,所述消息处理器还用于当在所述事务表中找到了所述事务项目,并且从SIP应用服务器发往SIP终端的SIP消息是响应或确认ACK的第一次传输时,将该消息记录在所述事务表的所述事务项目中。
15.根据权利要求12所述的重传拒绝设备,其中,所述消息处理器还用于如果所述接收的从SIP终端发往SIP应用服务器的SIP消息不是冗余重传的,则将所述消息记录在所述事务表的所述事务项目中,并且转发该消息。
16.根据权利要求12所述的重传拒绝设备,其中,所述消息处理器还用于执行下述功能:
如果所述接收的从SIP终端发往SIP应用服务器的SIP消息是冗余重传的,则丢弃所述冗余重传的SIP消息,并且,
当所述丢弃的SIP消息为一个请求时:
确定所述事务表的所述事务项目中是否存在与该请求相对应的响应;
如果存在所述相对应的响应,则使用该响应对该请求直接做出应答,
如果不存在所述相对应的响应,则直接丢弃该消息;以及
当所述丢弃的SIP消息为INVITE事务的最终响应时:
确定是否接收到相应的确认ACK;
如果已经接收到了所述确认,则用该确认做出应答;以及
如果还没有接收到,则等待直到接收到所述确认为止,并且
将所述确认重发预定次数。
17.根据权利要求11到16中任何一项权利要求所述的重传拒绝设备,被包括在位于SIP终端和SIP应用服务器之间并且处于SIP应用服务器的前端的网络设备中。
18.根据权利要求17所述的重传拒绝设备,其中,所述网络设备为SIP无状态代理、路由器、边缘服务器之一。
19.根据权利要求11到16中任何一项权利要求所述的重传拒绝设备,其中,所述SIP信令消息的消息类型和传输方向是通过对所接收的SIP消息进行部分消息解析获得的。
20.一种用在会话发起协议应用体系结构、即SIP应用体系结构中的网络设备,位于SIP终端和SIP应用服务器之间并且处于SIP应用服务器的前端,用于拒绝所接收的会话发起协议信令消息、即SIP消息的冗余重传,所述网络设备包括:
事务表,包括存储了所述SIP信令消息的事务信息的事务项目;
如权利要求11至16中任何一项权利要求所述的重传拒绝设备。
21.根据权利要求20所述的网络设备,其中,所述事务表是哈希表、以及包括循环事务项目表和哈希表的两级事务表中的一种。
22.根据权利要求20或21所述的网络设备,其中,所述网络设备是为SIP无状态代理、路由器、边缘服务器之一。
23.一种用于在会话发起协议应用体系结构、即SIP应用体系结构中快速地拒绝所接收的冗余重传的SIP消息的方法,包括如下步骤:
对所接收的SIP消息进行重传检测,以便确定所述消息是否为重传的消息;
一旦检测到消息的重传,就更新消息发送方的重传指示器;
根据消息发送方的重传指示器的值,对所接收的SIP消息进行消息分类,以便确定所述消息是否比较倾向于进行重传;以及
对于比较倾向于进行重传的SIP消息,执行根据权利要求1至6中任何一项所述的方法的步骤。
24.根据权利要求23所述的方法,其中,所述方法在位于SIP终端和SIP应用服务器之间并且处于SIP应用服务器的前端的网络设备中执行。
25.根据权利要求23所述的方法,其中,所述网络设备为网络设备是为SIP无状态代理、路由器、边缘服务器之一。
26.根据权利要求23到25中任何一项权利要求所述的方法,其中,所述SIP消息的消息类型和传输方向是通过对所接收的SIP消息进行部分消息解析获得的。
27.一种用在会话发起协议应用体系结构、即SIP应用体系结构中的网络设备,位于SIP终端和SIP应用服务器之间并且处于SIP应用服务器的前端,用于拒绝所接收的冗余重传的SIP消息,所述网络设备包括:
事务表,包括存储了所述SIP消息的事务信息的事务项目;
重传检测器,用于对所接收的SIP消息进行重传检测,以便确定所述消息是否为重传的消息,并且一旦检测到消息的重传,就通知消息分类器更新消息发送方的重传指示器;
消息分类器,用于根据消息发送方的重传指示器的值,对所接收的SIP消息进行消息分类,以便确定所述消息是否比较倾向于进行重传;以及
如权利要求11至16中任何一项权利要求所述的重传拒绝设备,用于对比较倾向于进行重传的SIP消息进行重传拒绝处理。
28.根据权利要求27所述的网络设备,其中,所述事务表是哈希表、以及包括循环事务项目表和哈希表的两级事务表中的一种。
29.根据权利要求27所述的网络设备,其中,所述重传检测器的核心部分为三状态的Bloom过滤器。
30.根据权利要求27所述的网络设备,其中,所述消息分类器的核心部分为可计数的Bloom过滤器。
31.根据权利要求27至30中任何一项所述的网络设备,其中,所述网络设备为SIP无状态代理、路由器、边缘服务器之一。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200610142362.XA CN101163139B (zh) | 2006-10-11 | 2006-10-11 | 拒绝冗余重传的sip消息的方法和设备 |
US11/868,990 US8792483B2 (en) | 2006-10-11 | 2007-10-09 | Method and device for rejecting redundantly retransmitted SIP messages |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200610142362.XA CN101163139B (zh) | 2006-10-11 | 2006-10-11 | 拒绝冗余重传的sip消息的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101163139A true CN101163139A (zh) | 2008-04-16 |
CN101163139B CN101163139B (zh) | 2010-12-15 |
Family
ID=39297967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200610142362.XA Expired - Fee Related CN101163139B (zh) | 2006-10-11 | 2006-10-11 | 拒绝冗余重传的sip消息的方法和设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8792483B2 (zh) |
CN (1) | CN101163139B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104350514A (zh) * | 2012-03-19 | 2015-02-11 | 加拿大皇家铸币厂 | 资产存储和转移系统中的外部日志存储 |
CN107889131A (zh) * | 2016-09-29 | 2018-04-06 | 英特尔Ip公司 | 无线电接入技术网络中优先数据的优化传输 |
CN108009022A (zh) * | 2017-11-06 | 2018-05-08 | 联动优势科技有限公司 | 一种消息处理方法及服务器 |
CN111757553A (zh) * | 2019-03-28 | 2020-10-09 | 北京三星通信技术研究有限公司 | 一种提高冗余分组数据会话性能的方法和设备 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8230074B2 (en) * | 2006-07-06 | 2012-07-24 | Telefonaktiebolaget Lm Ericsson (Publ) | System and method for reducing required memory usage between communication servers |
US20090310484A1 (en) * | 2008-04-17 | 2009-12-17 | Dorgham Sisalem | Methods, systems, and computer readable media for session initiation protocol (sip) overload control |
EP2112799A1 (en) * | 2008-04-25 | 2009-10-28 | Koninklijke KPN N.V. | Service integrity handling in an IMS-based system |
US8601139B2 (en) * | 2008-11-26 | 2013-12-03 | Cavium, Inc. | Multiple core session initiation protocol (SIP) |
US8321592B2 (en) * | 2008-12-12 | 2012-11-27 | Tekelec, Inc. | Methods, systems, and computer readable media for generating and using statelessly reversible representations of session initiation protocol (SIP) information by SIP cluster entities |
US9015136B2 (en) * | 2010-01-22 | 2015-04-21 | Microsoft Technology Licensing, Llc | Storing temporary state data in separate containers |
JP5693065B2 (ja) * | 2010-07-06 | 2015-04-01 | キヤノン株式会社 | 通信端末、通信端末の制御方法及びプログラム |
US8984627B2 (en) * | 2010-12-30 | 2015-03-17 | Verizon Patent And Licensing Inc. | Network security management |
GB2493129B (en) * | 2011-07-11 | 2018-07-04 | Metaswitch Networks Ltd | Method and system for managing a sip server |
FR2978317A1 (fr) * | 2011-07-20 | 2013-01-25 | France Telecom | Procedes de traitement et de communication entre equipements dans un reseau a commutation de paquets, equipements correspondants |
CN102891833B (zh) * | 2011-07-21 | 2017-03-29 | 中兴通讯股份有限公司 | 网络容灾方法和系统 |
US9860390B2 (en) | 2011-08-10 | 2018-01-02 | Tekelec, Inc. | Methods, systems, and computer readable media for policy event record generation |
US9049257B2 (en) * | 2011-12-19 | 2015-06-02 | Vmware, Inc. | Methods and apparatus for an E-mail-based management interface for virtualized environments |
JP6059336B2 (ja) | 2012-04-13 | 2017-01-11 | テケレック・インコーポレイテッドTekelec, Inc. | Diameter過負荷制御を実行するための方法、システムおよびコンピュータ読取可能媒体 |
US9391897B2 (en) | 2013-07-31 | 2016-07-12 | Oracle International Corporation | Methods, systems, and computer readable media for mitigating traffic storms |
US9537775B2 (en) | 2013-09-23 | 2017-01-03 | Oracle International Corporation | Methods, systems, and computer readable media for diameter load and overload information and virtualization |
US11388082B2 (en) | 2013-11-27 | 2022-07-12 | Oracle International Corporation | Methods, systems, and computer readable media for diameter routing using software defined network (SDN) functionality |
US10027760B2 (en) | 2015-05-22 | 2018-07-17 | Oracle International Corporation | Methods, systems, and computer readable media for short and long term policy and charging rules function (PCRF) load balancing |
CN110401514B (zh) * | 2017-08-02 | 2020-10-27 | 华为技术有限公司 | 一种计数方法及通信装置 |
CN108234658B (zh) * | 2018-01-05 | 2021-05-25 | 北京奇艺世纪科技有限公司 | 一种感知服务器集群健康状况的方法、装置和服务器 |
CN113676294A (zh) * | 2021-08-24 | 2021-11-19 | Oppo广东移动通信有限公司 | 数据重传方法、通信装置、计算机设备及可读存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101061659B (zh) * | 2004-12-02 | 2015-04-29 | 汤姆逊许可公司 | 自适应前向纠错的方法和设备 |
US9473529B2 (en) * | 2006-11-08 | 2016-10-18 | Verizon Patent And Licensing Inc. | Prevention of denial of service (DoS) attacks on session initiation protocol (SIP)-based systems using method vulnerability filtering |
JP5138045B2 (ja) * | 2007-11-16 | 2013-02-06 | ノキア シーメンス ネットワークス オサケユキチュア | システム間ハンドオーバのためのサービス品質のマッピング |
-
2006
- 2006-10-11 CN CN200610142362.XA patent/CN101163139B/zh not_active Expired - Fee Related
-
2007
- 2007-10-09 US US11/868,990 patent/US8792483B2/en not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104350514A (zh) * | 2012-03-19 | 2015-02-11 | 加拿大皇家铸币厂 | 资产存储和转移系统中的外部日志存储 |
CN107889131A (zh) * | 2016-09-29 | 2018-04-06 | 英特尔Ip公司 | 无线电接入技术网络中优先数据的优化传输 |
CN107889131B (zh) * | 2016-09-29 | 2022-02-08 | 英特尔公司 | 无线电接入技术网络中优先数据的优化传输 |
CN108009022A (zh) * | 2017-11-06 | 2018-05-08 | 联动优势科技有限公司 | 一种消息处理方法及服务器 |
CN111757553A (zh) * | 2019-03-28 | 2020-10-09 | 北京三星通信技术研究有限公司 | 一种提高冗余分组数据会话性能的方法和设备 |
CN111757553B (zh) * | 2019-03-28 | 2023-12-15 | 北京三星通信技术研究有限公司 | 一种提高冗余分组数据会话性能的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN101163139B (zh) | 2010-12-15 |
US20090092131A1 (en) | 2009-04-09 |
US8792483B2 (en) | 2014-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101163139B (zh) | 拒绝冗余重传的sip消息的方法和设备 | |
EP3937409A1 (en) | Data transmission method and apparatus | |
CN1185841C (zh) | 执行网络操作的方法和设备 | |
US7209759B1 (en) | Method and system for customizing distributed short message routing | |
CN1264235A (zh) | 使用短消息业务的数据传输协议 | |
US20100082860A1 (en) | System and method for updating the status of an asynchronous, idempotent message channel | |
CN1708973A (zh) | 在基于http的通信系统中的差错消息传送方法 | |
CN105242975A (zh) | 一种消息传输的方法和消息中间件 | |
CN101188618B (zh) | 取消推送消息的方法、系统及服务器、终端 | |
WO2023221452A1 (zh) | 报文处理系统、方法、设备和存储介质 | |
Dong et al. | In-packet network coding for effective packet wash and packet enrichment | |
US8589567B2 (en) | Method and apparatus for improving SIP parse performance | |
CN101621532A (zh) | 一种使用线程池实现超文本传输协议应用的方法 | |
CN106911485B (zh) | 用于可靠组播传输数据的方法及设备 | |
US7995517B2 (en) | System and method for transmitting units of messages in a mobile communication system | |
CN102612825A (zh) | 用于改进报头压缩的方法和装置 | |
US8612607B2 (en) | Submit report handling in SMSIP | |
CN116055403A (zh) | 报文数据的传输方法、装置和服务器 | |
CN101156400B (zh) | 一种在多媒体消息业务中处理消息的方法和系统 | |
CN109067503A (zh) | 一种数据重传方法和装置 | |
US20140179359A1 (en) | Message router for concatenated sms | |
Liu | Verification of the SIP transaction using coloured petri nets | |
CN115412519B (zh) | 消息传输方法、装置、服务器及存储介质 | |
CN115834574B (zh) | 数据编码传输方法、装置、设备及存储介质 | |
EP3520353A1 (en) | Playout buffering in a live content distribution system |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101215 Termination date: 20201011 |
|
CF01 | Termination of patent right due to non-payment of annual fee |