一种sctp建链方法

文档序号:7957229阅读:395来源:国知局
专利名称:一种sctp建链方法
技术领域
本发明涉及SCTP(stream control transmission protocol流控传输协议)技术领域,具体来说,涉及到SCTP建链的技术。
背景技术
SCTP和TCP/UDP(transport control protocol/user datagram protocol传输控制协议/用户数据报协议)一样,同属于传输层协议,SCTP综合了UDP报文传输(相对于TCP的字节流传输)和TCP的可靠保序的特点,特别适合于电信领域应用,因为这些应用通常要求可靠的投递服务,又不希望上层自己为报文进行定界处理。
TCP/UDP通常使用一个四元组<Local Address,Local Port,RemoteAddress,Remote Port><本地地址、本地端口、远端地址、远端端口>来标识一个通信关联。
SCTP中采用被称作SCTP多归属的方案,将上述四元组中的LocalAddress和Remote Address延伸成了Local Address List(本地地址列表)和Remote Address List(远端地址列表),List中的地址通常对应不同的网络接口,也就可能对应不同的网络路由,使用四元组<Local Address List,Local Port,Remote Address List,Remote Port>来标识一个通信关联。
建链完成后,缺省情况下,List中的某个地址被选为Primary Address(主地址),协议栈通常使用Primary Address作为发送报文的目的地址,当Primary Address对应的路径不可用,如对应的接口故障或者网络路由瘫痪)时,List中的另一个Address将被选作新的Primary Address,这个新的Primary Address将作为后续报文发送的目的地址。
上述的SCTP多归属建链方案可以提高报文发送的可靠性,但无法解决建链可靠性的问题,具体说明如下现有技术中SCTP建链过程如图1所示1、在Client(客户)侧和Server(服务器)侧由operator(操作者)在ULP(Upper Layer Protocol上层应用)中针对所建关联配置各自可用的一个Address List以及对应的端口号;2、上述的配置数据通过ULP Client和SCTP PS(协议栈)之间的Initialize(初始化)原语由ULP传达给SCTP协议栈;3、从步骤1中配置给Server侧可用于本Association(关联)的Address List中选择的一个地址配置给Client侧的ULP作为建链时的目的地址,ULP Client通过建链原语Associate(关联)将该地址传递给SCTP协议栈;4、Client侧的SCTP PS发送Init(初始化)报文(对携带Init Chunk(初始化参数模块)的报文的简称)给Server侧的SCTP PS,启动建链过程,该Init报文的目的地址使用上述步骤3中所述的地址,而目的端口号则使用步骤1中的配置数据;同时,在Init报文中可以携带很多建链相关的参数,其中一个就是地址列表(Local Address List),指明建链完成后Client侧可用于当前所建关联的所有地址;5、Server侧的SCTP PS在接收到来自Client侧的SCTP PS的Init报文之后,如果接受建链请求,则回送Init Ack(初始化确认)报文,同理该报文也可以携带很多建链相关的参数,其中一个也是地址列表(RemoteAddress List),用以指明建链完成后Server侧可用于当前所建关联的所有地址;6、Client侧SCTP PS在接收到来自Server侧SCTP PS的Init Ack报文之后,发送Cookie Echo报文给Server侧SCTP PS;7、Server侧SCTP PS回应Cookie Ack的报文,关联建立;8、客户侧和服务器侧的SCTP PS通过Communication Up(通信建立)原语上报各自的ULP建链成功。
从上述的建链流程的步骤3中可以看出,ULP Client通过建链原语Associate将目的地址传递给SCTP协议栈时只能携带一个目的地址,因为Associate原语中只允许指定一个Destination Address(目的地址)。因此,一旦这个单一配置的Destination Address不可用,则整个链路都会建立不成功,虽然在Server侧还有其他可用的地址。
此外,因为最初的链路建立过程通常都是在设备配置启用的时候,一般都有人工参与,而断链重建的情况则可能发生在无人值守的时机,链路断链后自动重建过程发生上述问题的可能性比最初的链路建立过程要大得多。这两种情况下都将造成通信中断并且不可恢复,这种后果对要求高可靠性的电信行业是不能接收的。

发明内容
本发明的目的在于提供一种SCTP建链方法,以解决提高SCTP建链可靠性的问题。
为实现上述目的,本发明采用的技术方案如下一种SCTP建链方法,所述的方法包括如下步骤
a、客户侧上层应用ULP将建链目的地址集中的目的地址传递到客户侧SCTP协议栈;b、所述的客户侧SCTP协议栈逐个将所述的目的地址集中的目的地址作为建链目的地址向服务器侧的SCTP协议栈发起建链过程,直到建链成功或者所有的目的地址都不可用为止。
其中步骤a具体包括a1、所述的客户侧ULP将建链目的地址集一次或者将其中的目的地址逐个传递到客户侧SCTP协议栈;其中步骤b具体包括b1、所述的客户侧SCTP协议栈收到所述的一次传递的目的地址集后逐个将所述的目的地址集中的目的地址作为建链目的地址向服务器侧的SCTP协议栈发起建链过程,或者所述的SCTP协议栈收到所述的逐个传递的目的地址后将所述的目的地址作为建链目的地址向服务器侧的SCTP协议栈发起建链过程,直到建链成功或者所有的目的地址都不可用为止。
其中步骤a之前还包括在所述的客户侧ULP中配置所述的目的地址集。
其中所述的目的地址集为配置在ULP中的远端地址列表RemoteAddress List中的两个或者两个以上的地址。
其中步骤a1具体包括a11、所述的客户侧ULP向所述的客户侧SCTP协议栈发送建链指令,通过所述的指令一次将所述的目的地址集传递给所述的客户侧SCTP协议栈;其中步骤b1具体包括b11、所述的客户侧SCTP协议栈依次从所述的目的地址集中任选一个地址作为建链目的地址向所述的服务器侧SCTP协议栈发起建链,直到建链成功或者所有的目的地址都不可用为止。
其中步骤a1具体包括
a11、所述的客户侧ULP向所述的客户侧SCTP协议栈发送建链指令,所述的指令中携带从所述的目的地址集中任选的作为建链目的地址的地址;其中步骤b1具体包括b11、所述的客户侧SCTP协议栈将所选的地址作为建链目的地址向所述的服务器侧SCTP协议栈发起建链;b12、如果建链失败,重复步骤a11和步骤b11,直到建链成功或者所述的目的地址集中所有的地址都不可用为止。
其中步骤b还包括所述的客户侧SCTP协议栈将从所述的服务器侧协议栈收到的远端地址列表与所述的目的地址集进行合并。
其中b之后还包括如果建链成功,客户侧SCTP协议栈和服务器侧SCTP协议栈分别向其ULP上报建链成功。
本发明克服现有技术的不足,采用在客户侧的ULP中配置一个目的地址集,一次将该目的地址集通过建链原语Association发送给客户侧的SCTP协议栈,或者逐个将该目的地址集中的目的地址通过建链原语Association发送给客户侧的SCTP协议栈,SCTP PS在建立链路的过程中依次逐个尝试上述目的地址集中的地址,直到链路成功建立为止的技术方案,克服了现有技术中SCTP多归属应用时单一目的地址配置情况下的链路建立和链路重建的可靠性不高的问题,很好的满足了用户对设备运行高可靠性的要求。


图1为现有技术的SCTP建链过程流程图;图2为本发明实施例一流程图;图3为本发明实施例二流程图。
具体实施例方式
本发明的基本原理是在客户侧的ULP中配置一个目的地址集,一次将该目的地址集通过建链原语Association发送给客户侧的SCTP协议栈,或者逐个将该目的地址集中的目的地址通过建链原语Association发送给客户侧的SCTP协议栈,SCTP协议栈建立链路的过程中,依次逐个尝试上述目的地址集中的地址,直到链路成功建立为止。
以下结合附图和具体实施例进行详细说明。
首先需要在Client侧的ULP中配置包含多个目的地址的目的地址集,具体来说,可以取Remote Address List的全部,也可酌情取其部分,取的地址数目越多可靠性越高。
在Client侧的ULP配置目的地址集后,可以通过如下的两种方式完成建链过程方式一修改ULP和SCTP协议栈之间的Associate原语,以便将上述配置的目的地址集一次性下发给SCTP协议栈执行建链过程。SCTP协议栈的建链状态机也需要进行调整依次从该目的地址集中选择一个发起建链,如果选择的地址不可用,则选择下一个地址重复建链过程,如此重复,直到在某个可用的地址上建链成功。对于所有地址都不可用的情况,SCTP协议栈通过Associate原语调用返回失败来上报ULP建链不成功,否则通过Communication Up原语来上报建链成功。
方式二不修改Associate原语和协议栈状态机,而是由ULP每次从上述的目的地址集中选择一个目的地址,通过原有的Associate原语通知SCTP协议栈建链,如果选取的地址不可用,则针对SCTP协议栈的Associate调用返回失败,那么ULP轮选下一个目的地址通过原有的Associate原语通知SCTP协议栈按照新的目的地址建链,直到某个Associate原语调用返回成功或者针对所有地址的Associate调用都返回失败。
实施例一采用上述的方式一完成建链过程的流程如图2所示1、在Client侧和Server侧由operator(操作者)在ULP中针对所建关联配置各自可用的一个Address List以及对应的端口号;2、上述的配置数据通过ULP Client和SCTP协议栈之间的Initialize原语由ULP传送给SCTP协议栈;3、从步骤1中配置给Server侧的可用Address List中选择的两个或者两个以上的地址配置给Client侧的ULP作为建链时的目的地址集,ULPClient通过建链原语Associate将所述目的地址集传递给Client侧的SCTP协议栈;4、Client侧的SCTP PS发送Init报文给Server侧的SCTP PS,该Init报文中将上述目的地址集中的某一个地址Address1作为本次建链的目的地址,而目的端口号则使用步骤1中的配置数据,启动建链过程;5、如果建链失败,则将上述目的地址集中的另一个地址Address 2作为建链的目的地址,通过Init报文从Client侧的SCTP PS发送Server侧的SCTP PS,执行建链过程;6、如果建链失败,则依次尝试采用上述目的地址集中其他地址重复上述的过程,如果建链成功,转步骤7;7、Server侧的SCTP PS回送Init Ack报文;8、Client侧SCTP PS在接收到来自Server侧SCTP PS的Init Ack报文之后,发送Cookie Echo报文给Server侧SCTP PS;
9、Server侧SCTP PS回应Cookie Ack的报文;10、客户侧和服务器侧的SCTP PS通过Communication Up原语上报各自的ULP建链成功。
实施例二采用上述的方式二完成建链过程的流程如图3所示1、在Client侧和Server侧由operator(操作者)针对所建关联在ULP中配置各自可用的一个Address List以及对应的端口号;2、上述的配置数据通过ULP Client和SCTP协议栈之间的Initialize原语由ULP传达给SCTP协议栈;3、从步骤1中配置给Server侧的可用Address List中选择的两个或者两个以上的地址配置给Client侧的ULP作为建链时的目的地址集,ULPClient从上述的目的地址集中选择某一个地址Address 1作为目的地址,通过建链原语Associate将所选择的目的地址传递给SCTP协议栈;4、Client侧的SCTP PS发送Init报文给Server侧的SCTP PS,启动建链过程,该Init报文中将Address 1作为本次建链的目的地址,而目的端口号则使用步骤1中的配置数据;5、如果建链失败,ULP Client从上述的目的地址集中选择另一个地址作为目的地址,通过建链原语Associate将所选择的目的地址传递给SCTP协议栈;6、Client侧的SCTP PS发送Init报文给Server侧的SCTP PS,启动建链过程,该Init报文中将步骤5中的目的地址作为本次建链的目的地址,而目的端口号则使用步骤1中的配置数据;7、如果建链失败,则依次将上述目的地址集中的地址作为目的地址通过建链原语Associate将所选择的目的地址传递给SCTP协议栈;
8、Client侧的SCTP PS发送Init报文给Server侧的SCTP PS,启动建链过程,该Init报文中将上述的目的地址作为本次建链的目的地址,而目的端口号则使用步骤1中的配置数据,如果建链成功,转步骤9;9、Server侧的SCTP PS回送Init Ack报文;10、Client侧SCTP PS在接收到来自Server侧SCTP PS的Init Ack报文之后,发送Cookie Echo报文给Server侧SCTP PS;11、Server侧SCTP PS回应Cookie Ack的报文;12、客户侧和服务器侧SCTP PS通过Communication Up原语上报各自的ULP建链成功。
另外,在建链过程中,Client侧SCTP协议栈有可能从来自Server侧的Init Ack报文中收到对端的地址列表参数(Remote Address List),协议栈应该将这个地址列表和配置的多个地址取并集的运算,将运算结果作为建立成功的链路的目的地址集。在最终的目的地址集中,可能部分地址可用,部分不可用,SCTP协议栈的Path管理功能将负责维护正确的状态并确保其被正确使用。
还有,在建链过程中,针对每个地址的尝试次数和超时时间可以基于具体的需要灵活设置,常见的做法是可配置。
权利要求
1.一种SCTP建链方法,其特征在于,所述的方法包括如下步骤a、客户侧上层应用ULP将建链目的地址集中的目的地址传递到客户侧SCTP协议栈;b、所述的客户侧SCTP协议栈逐个将所述的目的地址集中的目的地址作为建链目的地址向服务器侧的SCTP协议栈发起建链过程,直到建链成功或者所有的目的地址都不可用为止。
2.根据权利要求1所述的方法,其特征在于,其中步骤a具体包括a1、所述的客户侧ULP将建链目的地址集一次或者将其中的目的地址逐个传递到客户侧SCTP协议栈;其中步骤b具体包括b1、所述的客户侧SCTP协议栈收到所述的一次传递的目的地址集后逐个将所述的目的地址集中的目的地址作为建链目的地址向服务器侧的SCTP协议栈发起建链过程,或者所述的SCTP协议栈收到所述的逐个传递的目的地址后将所述的目的地址作为建链目的地址向服务器侧的SCTP协议栈发起建链过程,直到建链成功或者所有的目的地址都不可用为止。
3.根据权利要求1或者2所述的方法,其特征在于,其中步骤a之前还包括在所述的客户侧ULP中配置所述的目的地址集。
4.根据权利要求3所述的方法,其特征在于,所述的目的地址集为配置在ULP中的远端地址列表Remote Address List中的两个或者两个以上的地址。
5.根据权利要求2所述的方法,其特征在于,其中步骤a1具体包括a11、所述的客户侧ULP向所述的客户侧SCTP协议栈发送建链指令,通过所述的指令一次将所述的目的地址集传递给所述的客户侧SCTP协议栈;其中步骤b1具体包括b11、所述的客户侧SCTP协议栈依次从所述的目的地址集中任选一个地址作为建链目的地址向所述的服务器侧SCTP协议栈发起建链,直到建链成功或者所有的目的地址都不可用为止。
6.根据权利要求2所述的方法,其特征在于,其中步骤a1具体包括a11、所述的客户侧ULP向所述的客户侧SCTP协议栈发送建链指令,所述的指令中携带从所述的目的地址集中任选的作为建链目的地址的地址;其中步骤b1具体包括b11、所述的客户侧SCTP协议栈将所选的地址作为建链目的地址向所述的服务器侧SCTP协议栈发起建链;b12、如果建链失败,重复步骤a11和步骤b11,直到建链成功或者所述的目的地址集中所有的地址都不可用为止。
7.根据权利要求1或者2所述的方法,其特征在于,其中步骤b还包括所述的客户侧SCTP协议栈将从所述的服务器侧协议栈收到的远端地址列表与所述的目的地址集进行合并。
8.根据权利要求1或者2所述的方法,其特征在于,其中步骤b之后还包括如果建链成功,客户侧SCTP协议栈和服务器侧SCTP协议栈分别向其ULP上报建链成功。
全文摘要
本发明公开了一种SCTP建链方法,所述的方法包括如下步骤a、客户侧上层应用ULP将建链目的地址集中的目的地址传递到客户侧SCTP协议栈;b、所述的客户侧SCTP协议栈逐个将所述的目的地址集中的目的地址作为建链目的地址向服务器侧的SCTP协议栈发起建链过程,直到建链成功或者所有的目的地址都不可用为止。本发明克服了现有技术中SCTP多归属应用时单一目的地址配置情况下的链路建立和链路重建的可靠性不高的问题,很好的满足了用户对设备运行高可靠性的要求。
文档编号H04L29/12GK101060525SQ20061006110
公开日2007年10月24日 申请日期2006年6月7日 优先权日2006年6月7日
发明者汪大海 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1