一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于恢复网络关联信息的方法和装置与流程

2021-11-30 21:16:00 来源:中国专利 TAG:

用于恢复网络关联信息的方法和装置
1.相关申请的交叉引用
2.本技术根据35u.s.c.
§
119(e),要求于2019年2月5日提交的、标题为methods and apparatus for recovering network association information的、序列号为62/801,365的美国临时申请优先权,其全部内容通过参引并入本文中。
技术领域
3.本文中描述的技术总体上涉及恢复用于通信会话的网络关联信息,并且具体地涉及在通信会话中断的情况下恢复网络关联序列号。


背景技术:

4.各种网络通信协议可以用于将数据从一个网络设备通过介质(例如将设备连接在一起的有线和/或无线连接或网络)传输至另一网络设备。为了保持跟踪已传输数据,网络通信协议通常为每个已传输数据包分配编号(例如序列号),该编号对于每个数据包都是唯一的和/或递增的。例如,序列号可以由发送设备用于保持跟踪发送设备已经发送哪些数据包、接收设备已经确认哪些数据包等。序列号可以由接收设备用于保持跟踪它已经从发送设备接收到哪些数据包、接收设备期望哪个数据包是来自发送设备的下一个数据包等。
5.网络通信协议通常需要保持跟踪和维护整个通信会话中的各种数据。例如,网络通信协议通常在设备之间交换控制数据包的初始序列,以建立通信会话的各方面。附加地或可替代性地,在通信会话期间,设备维护各种信息,例如数据包的一个或多个当前序列号和/或其它信息,以维护通信会话。然而,通信会话可能会被中断,例如由于设备之间的介质的问题和/或由于设备本身的问题(例如,崩溃、资源有限导致设备处理滞后等)。这种中断会危及设备维持使通信会话继续所需的信息的能力。如果设备无法恢复此类信息,则通信会话通常必须重启,这是不期望的。


技术实现要素:

6.根据所公开的主题,提供了用于在中断之后恢复网络关联信息,以避免需要重启通信会话的装置、系统和方法。
7.一些实施方案涉及一种确定当前数据传输序列号的计算机化方法,用于与远程计算设备的通信会话中的下一个数据包。该方法包括:确定通信会话的中断;确定用于通信会话的检查点数据,其中,检查点数据指示用于发送至远程计算设备的前一个数据包的前一个序列号;以及执行解析过程,以确定在通信会话中,用于下一个数据包的当前数据传输序列号。解析过程包括:基于检查点数据,确定在通信会话中,用于传输数据的估算的下一个序列号;将第一数据包传输至远程计算设备,其中,第一数据包是包括估算的下一个序列号的虚拟数据包;从远程计算设备接收第二数据包,其中,第二数据包包括关联序列号;以及基于估算的下一个序列号、第二数据包、第二数据包的关联序列号或其一些组合,确定在通信会话中,用于下一个数据包的当前序列号。
8.一些实施方案涉及一种配置成在与远程计算设备的通信会话中,确定用于下一个数据包的当前数据传输序列号的装置。该装置包括与存储器通信的处理器。处理器配置成执行存储在存储器中的指令,这些指令致使处理器:确定通信会话的中断;确定用于通信会话的检查点数据,其中,检查点数据指示用于发送至远程计算设备的前一个数据包的前一个序列号;以及执行解析过程,以确定在通信会话中,用于下一个数据包的当前数据传输序列号。解析过程包括:基于检查点数据,确定在通信会话中,用于传输数据的估算的下一个序列号;将第一数据包传输至远程计算设备,其中,第一数据包是包括估算的下一个序列号的虚拟数据包;从远程计算设备接收第二数据包,其中,第二数据包包括关联序列号;以及基于估算的下一个序列号、第二数据包、第二数据包的关联序列号或其一些组合,确定在通信会话中,用于下一个数据包的当前序列号。
9.因此,已经相当广泛地概述了所公开的主题的特征,以便可以更好地理解随后的详细描述,并且可以更好地理解对本领域的贡献。当然,下文描述中还存在所公开的主题的附加特征,并且其将形成所附权利要求的主题。应当理解的是,本文采用的措辞和术语用于描述的目的,而不应视为具有限制性。
附图说明
10.在附图中,在各图中展示的每个相同或几乎相同的组件由相同的附图标记表示。出于清楚的目的,可能并未在每个附图中标示出每个组件。附图不一定按比例绘制,而是着重展示本文中描述的技术和设备的各个方面。
11.图1a示出了根据一些示例,使用流控制传输协议的本地端点与对等端点之间的连接的示例。
12.图1b示出了根据一些示例的lte无线电接入网络的典型部分。
13.图1c图示了根据一些实施方案,由本地端点执行以解析网络关联信息的高级过程。
14.图2是根据一些实施方案,用于解析本地tsn的计算机化方法的典型流程图。
15.图3是根据一些实施方案,用于解析对等tsn的计算机化方法的典型流程图。
16.图4是根据一些实施方案,用于解析本地ssn的计算机化方法的典型流程图。
17.图5是图表,示出了根据一些实施方案,用于本地端点与对等端点之间的连接的示例数据包流。
18.图6是图表,示出了根据一些实施方案,用于本地端点与对等端点之间的连接的另一示例数据包流。
19.图7是图表,示出了根据一些实施方案,用于本地端点与对等端点之间的连接的另一示例数据包流的图表。
20.图8是图表,示出了根据一些实施方案,用于本地端点与对等端点之间的连接的另一示例数据包流的图表。
21.图9是图表,示出了根据一些实施方案,用于本地端点与对等端点之间的连接的另一示例数据包流的图表。
具体实施方式
22.本文中描述的技术可以用于在发生故障的情况下恢复网络关联信息,包括恢复序列号信息。该技术可以利用对整个通信会话无害的虚拟数据包(dummy packet),触发对等方以其自身的数据块、确认和/或其他响应进行响应。该技术可以使用这些响应,以能够对于对等方透明的方式,恢复网络关联信息,并且可以避免中止和/或重启网络关联。这些和其他技术在本文中进一步论述。
23.在以下描述中,阐述了关于所公开的主题的系统和方法以及这些系统和方法可以操作的环境等的许多具体细节,以便提供对所公开的主题的透彻理解。另外,应当理解的是,下文提供的示例是典型的,并且设想的是,存在属于所公开的主题的范围内的其它系统和方法。
24.本文中描述的技术可以用于恢复用于各种类型的通信协议的网络关联信息。这种协议的一个非限制性示例是流控制传输协议(sctp)。sctp可以用作传输层协议,比如代替传输控制协议(tcp)和/或用户数据报协议(udp),或者与传输控制协议(tcp)和/或用户数据报协议(udp)结合使用。图1a示出了根据一些实施方案,在使用sctp协议的本地端点102与对等端点104之间的连接100的示例。sctp允许端点之间存在多个流,使得如果一个流被阻塞,则另一个流仍可以用于传递数据。图1a所示的典型连接100包括两个流,流0 106和流1 108。
25.本地端点102和对等端点104将交换一系列控制消息以建立sctp关联和状态。传输序列号(transmission sequence number,tsn)和流序列号(stream sequence number,ssn)是应用于sctp数据块以确保数据包按顺序可靠地传递的值。tsn可以用作用于整个数据流的序列号(例如,在用于重组的分段中使用)。ssn可以定义特定流中的块。在建立sctp关联后,每个端点可以识别用于tsn和ssn的初始值,并将发送具有预期值的sctp数据块,针对每个sctp数据块使预期值递增。每个端点可以使用其自身关联的tsn和ssn值,使得本地端点102具有用于其发送的数据包的本地tsn和一个或多个ssn,并且对等端点104具有用于其发送的数据包的其自身的对等tsn和一个或多个ssn。
26.图1b示出了根据一些示例的lte无线接入网(ran)150的典型部分。一个或更多个ue——在图1b中示出为ue的152a到152b(统称为ue 152)——与示出为家庭enodeb(henb)154的小区通信。家庭enodeb网关(henb

gw)156聚合从henb 154到核心网的流量。在该说明性示例中,henb

gw 156使用sctp,作为henb 154与作为lte接入网络的控制节点的移动管理实体(mobile management entity,mme)158之间的传输协议。为简单起见,省略了lte ran 150的其他方面,但是本领域技术人员将理解到可以包括在lte ran 150中的各种组件。
27.当一个sctp端点遇到故障时,例如高可用性集群(high availability,ha)切换或进程重启,sctp关联必须继续,以使用下一个预期的tsn和ssn值。否则,不适当的tsn和/或ssn值可能导致对等方检测到错误,这可能导致中止关联(例如,通过到另一个端点的abort数据包)和/或不处理数据包。在rfc

4960中指定了sctp重启过程,以用于重新初始化关联的tsn和ssn值,其全部内容通过参引并入本文中。sctp重启过程依赖于在本地端点102和对等端点104第一次建立关联时,使用的控制消息(例如,包括init、init

ack、cookie

echo和cooke

ack数据包)的相同交换。例如,该过程在rfc

4960的5.2.4.1节中论述。sctp重启过
程通常需要对等端点104参与和/或知道本地端点102正在重启。例如,对等端点104必须能够使用在来自重启端点的init数据包中传送的信息,找到用于关联的现有传输控制块(transport control block,tcb)。tcb是一种数据结构,其包含sctp连接的任一侧的连接信息。在sctp重启期间,虽然端点之间的心跳消息通常将继续交换,但sctp数据块通常将被丢弃,因为必须在协商期间重置tsn/ssn值。在一些实现形式中,mme可能找不到现有关联,这可能会导致mme替代地创建新关联(例如,这会使已经使用该关联的ue丢失其传输并经历数据丢失)。在一些实现形式中,由于对等方需要参与重启,因此一旦对等方确定正在发生sctp重启,则对等方可以配置成确保与先前sctp关联相关联的任何状态被迁移,这可以包括任何ue上下文。附加地或可替代地,当检测到sctp关联已经重启时,对等方可能会采取一些不期望的动作(例如警报和/或其他事件)。
28.申请人已经发现并认识到的是,为了支持ha,网络中的一个或多个sctp关联(例如,henb

gw与henb和/或mme之间)应当在端点故障(例如进程重启或切换)中幸存,而不会导致关联的解除。申请人已经开发了独特的技术,用于以对于对等方透明的方式,恢复sctp关联并解析对等方之间的sctp流的tsn和ssn值,使得对等方无需知道本地端点重启。如本文所论述的,这些技术可以以独特的方式使用支持的sctp/s1ap基本消息和/或过程,以允许sctp关联在故障中幸存。这些技术可以与第三方设备兼容,和/或可以不需要sctp关联的对等方的特殊行为。
29.在一些实施方案中,该技术可以与不支持sctp重启机制(例如,如rfc

4960所指定的)的端点一起使用。在不支持sctp重启机制的情况下,当发生故障时,申请人已经发现并认识到的是,sctp关联可能会受影响(例如,中止),这会对客户建立的ue连接产生不利影响。本文中提供的技术可以用作在故障转移之后,执行维护sctp关联、恢复状态和/或解析sctp流的tsn和ssn值中的一者或多者的替代方式。通过执行此类操作,数据流量可以复原,而无需端点(例如,不支持sctp重启机制的mme)的改变和/或特殊行为。
30.发明人还发现并认识到,虽然可以对tsn和ssn值设置检查点(例如,在关联期间随着tsn和ssn值的变化而存储和维护),但是对每一个tsn和ssn变化和恢复状态设置检查点通常是不切实际的,并且替代地会在真实的网络和流量条件下证明是有问题的。例如,这种连续设置检查点会消耗大量资源,这会对端点的性能产生负面影响。本文中描述的技术提供由本地sctp端点对sctp关联的初始状态进行检查点设置。如上所述,检查点值通常不保持最新,例如由于流量率、数据处理延迟等而不保持最新。本文中描述的技术可以通过从对等方的sctp确认(例如,sack消息)和失败之后的数据块中获知tsn和ssn值、利用检查点数据,透明地解析预期的tsn和ssn值。该技术可以用于通过已建立的sctp关联来使发送数据复原,而无需例如在sctp的对等方上执行sctp重启和/或重新初始化任何状态。
31.在一些实施方案中,最高确认tsn的检查点值可以在故障转移之后立即用于向具有预期被对等方报告为重复的tsn的对等端点,发送初始虚拟sctp数据包(例如,对sctp关联无害的数据包)。例如,这些技术可以发送tsn值小于被确认的最高tsn值的虚拟数据包,以尝试发送已知重复。例如,已知的重复可以允许本地节点将sack与确认接收到虚拟数据包的对等方,和被发送以确认一些(先前发送的)传输中数据的sack区分开。传输中数据可以包括由本地节点使用未设置检查点的tsn/ssn值发送的数据(例如,在本地节点发送该数据之前,最后一个检查点发生的位置)。接收后,如果重复,对等方将发送sctp sack,指示接
收到的最高tsn,并将初始虚拟数据包指示为重复。一旦初始虚拟数据包被识别为重复,则本地端点就可以开始使用sack中报告的cumtsn作为最高tsn,以发送后续虚拟数据包。
32.在一些实施方案中,虚拟数据包可以是将提示来自对等方的响应的虚拟数据包。例如,在一些实施方案中,可以使用不包含元素的s1ap enb配置更新,因为对等方利用匹配的s1ap enb配置更新确认或失败,以响应数据包。因此,可以使用将导致对等方以数据响应和/或sack响应虚拟数据块的虚拟数据包。
33.在一些实施方案中,虚拟数据包可以包括被设计成在被对等方接收时不引起改变的数据。因此,例如,虽然数据包对整个通信会话是无害的,但可以用于解析tsn和/或ssn值。例如,enb配置更新可以在没有新信息或修改信息的情况下使用,使得数据包不会导致对等方的状态改变。在一些实施方案中,虚拟数据包可以作为sctp无序数据包发送,使得包含在虚拟数据包中的ssn值是不相关的,并且不被对等方检查。在一些实施方案中,这些技术可以限制所有数据通过一个sctp流发送。例如,将数据流量限制于单个流可以允许对等方准确地计算由传输中数据使用的ssn,并且在解析tsn和ssn之后为新数据调整ssn。
34.在一些实施方案中,响应于来自对等方的初始虚拟数据包而发送的信息用于确定是否调整本地存储的tsn和/或ssn值。例如,可以使用来自对等方sack的信息(例如,累积tsn、间隙和/或重复)并将其与本地存储的最后发送的值进行比较,以确定是否需要调整本地tsn和/或ssn。如果报告了间隙或重复,这些技术可以计算所需的tsn和ssn的调整,并且可以根据需要向对等方发送额外的虚拟sctp数据包。在间隙的情况下,虚拟数据包将使用由对等方报告的间隙的tsn,以解析tsn。当对等方报告重复时(这由于初始虚拟数据包可以是有意重复而可以被预料到),该技术可以将下一个虚拟数据包的下一个tsn调整为比对等方报告为最后确认的tsn的值多一。
35.虚拟数据包传输过程可以继续进行,直到从端点获得指示解析tsn和/或ssn值的期望响应为止。例如,正在恢复的本地节点可以配置成执行传输过程,直到其从对等方收到报告没有间隙或重复的sack,并确认最后发送的虚拟数据包(例如,其解析了对等方的tsn值)为止。作为另一示例,本地节点可以配置成执行传输过程,直到其接收到下述响应(例如,enb配置更新ack)为止:该响应指示解析本地恢复节点在向对等方发送sack时,将使用的累积tsn。本地恢复节点可以配置成假设在确认之前,已经接收到所有数据包。在一些实施方案中,这些技术因此可以容忍恢复期间的一些最小数据丢失。
36.这些技术可以设计成使得本地节点可以恢复有多少数据包在传输中并由对等方处理,以便适当地计算ssn值以用于发送新数据。在一些实施方案中,与tsn值(例如,本地和/或对等方的tsn)不同,不能从sack直接获知ssn。该技术可以使用最后发送的tsn、ssn对的检查点数据集,以确定ssn。例如,对等方可以将前一次检查点数据与对等方报告的累积tsn进行比较,以确定正传输的sctp数据包(例如,已发送但未设置检查点)的编号。计算出的增量可以用于确定下一个真实sctp数据包的恰当ssn。这些技术可以用于接收来自对等方的特定响应,例如来自对等方的s1ap enb配置更新ack,以确定何时退出解析tsn和ssn的进程。
37.图1c图示了根据一些实施方案,由本地端点102执行以解析网络关联信息的高级过程。在步骤172中,本地端点确定与对等端点104的通信会话中断。在步骤174中,本地端点102确定用于通信会话的检查点数据。如本文所论述的,通常检查点数据至少包括与用于由
本地端点102发送至对等端点104的前一个数据包的前一个序列号有关的信息。接下来,本地端点执行解析过程,以确定通信会话中的下一个数据包的当前数据传输序列号。在步骤176中,本地端点102基于检查点数据(例如,有意重复的序列号),确定用于在通信会话中传输数据的估算的下一个序列号,并且向对等端点104传输包括估算的下一个序列号的虚拟数据包。在步骤178中,对等端点104从对等端点104接收包括响应序列号的响应。在步骤180中,本地端点102基于内部存储的信息(例如,检查点数据和/或估算的下一个序列号)和响应(例如,包括响应的关联序列号),确定用于通信会话中的下一个数据包的当前序列号。图1c意在作为简单的典型示例,因为在实践中本地端点102可能需要发送多个虚拟数据包,并分析多个响应以便解析期望的信息,如本文进一步论述的。例如,如果响应178指示存在间隙和/或重复,则本地端点102可以发送额外的虚拟数据包,以解析关联的tsn和/或ssn。
38.图2至图5示出了网络关联解析进程的详细示例。图2是根据一些实施方案,用于解析本地tsn的计算机化方法的典型流程图。在步骤202中,本地端点确定存在切换或其他中断/错误,这导致本地设备开始解析本地tsn。进入解析状态后,本地端点可以阻止端点必须发送给对等方的任何数据(例如,直到完成解析过程之后为止)。在步骤204中,本地端点恢复检查点数据。例如,检查点数据可以包括发送至对等端点的最高tsn和/或ssn、对等端点确认的最高tsn,和/或其他tsn或ssn数据,如将在本文中进一步论述的。检查点数据可以是也可以不是当前的。例如,如上所述,一些端点可能不会为每个发送或接收到的数据包设置检查点数据,因为这样做会消耗太多资源(例如,这可能会导致性能问题)。因此,例如,在严重拥塞的情况下,对等方可能已经为已发送的较旧数据的tsn和/或ssn信息设置检查点。尽管检查点数据可能已过时,但其仍然可以向本地端点提供足够的信息,以获知当前本地tsn信息,如本文中进一步论述的。
39.在步骤206中,本地端点可以可选地设置一个或多个内部变量和/或元数据,以记录本地端点正在解析本地tsn。
40.在步骤208中,本地端点发送初始虚拟数据包。例如,虚拟数据包可以是对通信会话无害的数据包,例如使得虚拟数据包不影响本地端点与对等方之间的通信。例如,虚拟数据包可以避免导致对等方发送否定确认(例如,nac),使得虚拟数据包可以导致对等方响应于虚拟数据包而向本地端点发送肯定确认和/或数据。例如,虚拟数据包可以是sctp数据包,例如enbcfgupd数据包和/或不会导致对等方的状态改变,并导致对等方在响应中发送同样不会导致本地端点的任何状态变化的消息的任何其他数据包。本地端点可以基于检查点数据,确定虚拟数据包的一个或多个字段。例如,初始虚拟数据包可以包括基于检查点数据确定的tsn和/或ssn值。在一些实施方案中,检查点数据(例如,tsn和/或ssn)用于虚拟数据包。在一些实施方案中,比检查点数据低的值可以用于初始虚拟数据包(例如,用于有意发送重复数据包)。例如,可以从检查点数据中减去预定值(例如,二、五、十等)以用于虚拟数据包。在一些实施方案中,虚拟数据包是到对等方的无序数据包,使得对等方忽略ssn并且不发送ssn以进行处理。
41.在步骤210中,本地端点等待来自本地端点向其发送虚拟数据包的对等端点的响应。在步骤212中,本地端点启动一个或多个定时器。例如,定时器可以包括重传定时器,该重传定时器设置本地端点将等待来自对等端点对特定虚拟数据包的响应的时间段,然后,在该时间段到期之后,将重传虚拟数据包。每次发送虚拟数据包时,本地端点都可以启动重
传定时器。作为另一示例,定时器可以包括设置时间段或重传次数或者两者的解析tsn定时器,一旦满足,就会导致本地端点中止解析本地tsn(例如,以防止本地端点在对等端点不再可用的情况下变成死锁)。解析tsn定时器可以在切换时启动。例如,解析tsn定时器可以指定等待来自对等方的响应的最大时间段、发送虚拟数据包的最大重试次数等。例如,该时间段对于整个关联可以是五秒时间段。每个sctp关联都可以维护重传定时器和/或解析tsn定时器。
42.一旦本地端点在步骤212中设置一个或多个定时器,则本地端点将在步骤214中接收响应,或者一个或多个定时器将在步骤216中超时。如果一个或多个定时器在步骤216中超时(例如,在接收到来自对等方的响应之前),则本地端点移动至步骤220,并确定最大超时条件是否满足和/或到期。如果满足最大超时条件,则该方法进行至步骤222并中止该过程。如果不满足最大超时条件,则该方法进行至步骤224,并重传在步骤208中发送的虚拟数据包,并返回至步骤210。
43.如果本地端点在214中接收来自对等端点的响应,则该方法进行至步骤218。在步骤中214中接收到的响应可以是sack数据包,对等端点通过该sack数据包确认接收到直到指定tsn值的数据包。在确认中的tsn可以是虚拟数据包的tsn、先前发送的数据包的tsn(例如,如果对等方在后)和/或比虚拟数据包中发送的tsn大的tsn(例如,如果与本地端点已设置检查点的数据相比,对等方已收到更多数据)。响应可以包括其他信息,例如对等端点是否检测到tsn值中的间隙、对等端点是否检测到重复的tsn值等。一旦本地端点移动至步骤218,则本地端点更新记录已发送和/或已确认的数据包的数据。在一些实施方案中,本地端点将最高确认tsn更新至在步骤214中接收到的、在响应中的tsn。在一些实施方案中,本地端点将发送的最高tsn更新至在步骤208中发送的虚拟数据包的tsn值。在一些实施方案中,并非更新在步骤218中发送的最高tsn,对等端点可以在步骤208中在其发送虚拟数据包时,更新发送的最高tsn。
44.如上所述,来自对等方的数据包可以包括各种数据。图2所示的技术分析数据包中的数据,以确定本地端点的适当响应。在步骤226中,对等端点基于在步骤中214接收到的响应,以确定是否存在任何间隙。如果没有间隙,则对等端点进行至步骤228。在步骤228中,对等端点基于在步骤214中接收到的响应,以确定是否存在任何重复。如果没有重复,则对等端点进行至步骤230,并确定对等方的tsn是否被解析。在步骤230中,如果对等方的tsn未被解析,则对等端点返回至步骤210并等待sack。如果在步骤230中对等的tsn被解析,则对等端点进行至步骤242,以检查已确认的最高tsn是否与发送的最高虚拟tsn匹配。如果这些值不匹配,则对等端点返回至步骤210并等待sack。如果值匹配,则对等端点移动至步骤232,在步骤232中宣布本地tsn已解析。如本文所论述的,当本地端点已接收到对发送至对等方的最后一个tsm的响应,并且对等方不指示存在任何间隙或重复时,可以解析本地tsn。例如,对等端点可以确定由对等方确认的最高tsn是否等于本地端点已存储为在一个或多个虚拟数据包中发送的最高tsn的值。在步骤232中,例如对等端点可以设置数据,以指示本地tsn被解析。例如,本地端点可以改变其在步骤206中设置的变量或其他数据,以记录其完成解析对等方的tsn。在完成解析对等方的tsn后,本地端点可以继续解析ssn,这将结合图4进一步论述。返回至步骤230,如果对等端点确定其还没有解析对等方的tsn,则对等端点返回至步骤210/212(例如,以等待对等端点对初始虚拟数据包的响应)。
45.回到步骤226,如果本地端点确定存在一个或多个丢失数据包的间隙,则本地端点进行至步骤234,并发送一个或多个虚拟数据包以填充该间隙。例如,对于间隙中每个丢失的tsn,本地端点创建带有丢失tsn的虚拟数据包,并将一个或多个虚拟数据包发送至对等端点以填充间隙。在一些实施方案中,除了用于填充间隙的数据包之外,本地端点还可以发送具有已知重复的原始虚拟数据包。例如,可以包括原始虚拟数据包,因为在处理包含间隙的sack消息时,其可以指示初始虚拟数据包的重复。为了计算ssn,对等端点可能需要接收sack,该sack将初始虚拟指示为重复。例如,由于在步骤226中本地端点检查间隙,然后通过为所指示的tsn生成另一虚拟数据包来处理这些间隙,因此对等端点此外还可以再次发送初始虚拟数据包。继续该示例,一旦所有的间隙都被填满,则在步骤226中对等端点将确定没有间隙并移动至228,在步骤228中,将会发现报告了重复的对等端点,并且将会发现初始虚拟是重复的,然后计算ssn。本地端点从步骤234返回至步骤210/212,以等待来自对等端点对一个或多个虚拟数据包的响应。因此,在一些实施方案中,当检测到间隙时,对等端点使用所指示间隙的最低tsn发送虚拟数据包,并等待sack。对于每个间隙虚拟数据包,对等端点也可以重新发送初始虚拟数据包。
46.返回参照步骤228,如果本地端点确定存在重复,则本地端点进行至步骤236。在步骤236中,本地端点确定初始虚拟数据包是否被报告为重复。如果初始虚拟数据包是重复,则对等端点进行至步骤238。在一些实施方案中,对等端点可能需要将初始虚拟数据包标识为重复,以便将在切换事件202之后发送的虚拟数据包与其他传输中数据包区分开。在步骤238中,本地端点计算本地ssn。如本文所论述的,可以不从对等端点往回发送ssn值。例如,来自对等端点的sack响应中不包括ssn值。本地端点可以在结合图2论述的本地tsn解析进程期间,计算ssn值。在一些实施方案中,本地端点可以有意地发送更多重复数据包,使得本地端点可以继续接收sack,本地端点可以使用这些sack来识别重复,并用来使ssn递增直到ssn是当前的。在一些实施方案中,本地端点可以配置成一旦本地端点接收到将初始虚拟数据包识别为重复的无间隙的sack,就计算ssn。本地端点可以使用由该sack报告的cumtsn以通过将其与检查点已确认的最高tsn进行比较,来确定传输中数据包的数量,然后本地端点可以相应地调整ssn。本地端点从步骤238进行至步骤240。在步骤240中,本地端点发送虚拟数据包,其中,tsn被设置为由对等端点确认的最高tsn加1。本地端点然后返回至步骤210。返回至步骤236,如果初始虚拟数据包没有被报告为重复,则本地端点返回至步骤210(例如,以对初始虚拟数据包的响应)。
47.图3是根据一些实施方案,用于解析对等tsn的计算机化方法的典型流程图。在步骤302中,本地端点确定存在切换,这导致本地设备开始解析对等tsn。在步骤304中,本地端点恢复可能是或可能不是当前的检查点数据。检查点数据可以包括从与本地端点通信的对等端点处最后接收到的tsn和ssn。在一些实施方案中,本地端点可以在解析其他信息之后,执行对等tsn解析进程300,例如在解析本地tsn之后(例如,使用图2中描述的进程)。在这种情况下,在先前的解析进程中可能已经发送了初始虚拟数据包。如果尚未发送虚拟数据包,则本地端点可以发送虚拟数据包(例如,使用基于检查点数据确定的tsn和/或ssn)。在步骤306中,本地端点可以可选地设置内部变量,以指示本地端点正在解析对等tsn。
48.本地端点进行至步骤308以等待来自对等方的数据。本地端点还在步骤310中启动解析tsn定时器。如果解析tsn定时器到期,则对等端点进行至步骤312以确定是否已经满足
最大超时。如果未满足最大超时,则本地端点返回至步骤308/310。如果已达到最大超时,则本地端点进行至步骤314并中止解析进程(例如,在对等端点不可用的情况下避免死锁等)。
49.回到步骤308和310,如果本地端点从对等端点接收数据,则本地端点进行至步骤316。在步骤316中,本地端点基于来自对等端点的数据更新接收到的tsn和ssn。例如,本地端点可以存储从对等方最后接收到的tsn和/或ssn。本地端点进行至步骤318,并检查接收到的数据是否是对虚拟数据包的响应。如果接收到的数据不是对虚拟数据包的响应,则对等端点返回至步骤308以等待数据(例如,等待来自对等方对虚拟数据包的响应的数据)。如果接收到的数据是对虚拟数据包的响应,则对等端点进行至步骤320,并确定对等tsn已解析。在步骤322中,本地端点发送具有下一个tsn的另一个虚拟数据包。本地端点进行至步骤324并继续解析本地tsn,如结合图2所论述的。例如,对等tsn解析进程300可以结合解析本地tsn来执行(例如,如结合图2所论述的)。
50.进一步参照步骤322,下一个虚拟被发送并用于解析本地tsn。例如,参照图2,在步骤218中,本地端点接收sack。假设sack将初始虚拟数据报告为重复,则本地端点进行至步骤238并计算ssn,然后进行至步骤240并发送tsn设置为已确认的最高tsn 1的虚拟。这会导致本地端点更新最高tsn的本地变量。然后,本地端点再次等待sack。本地端点接收sack而不是响应(enbcfgupdack),因为对等方接收到虚拟enbcfgupd,但sack是重复,因此其没有被上层处理。所以在图2中,在步骤240中,本地端点所发送的虚拟应当生成没有重复或间隙的sack,和来自对等方的响应(enbcfgupdack)。当这种情况发生时,在图2中,本地端点将在步骤230中处理sack(例如,并确定本地端点仍在等待解析对等方,因此移动回到210)。同时,enbcfgupdack在图3中被处理,并且在步骤318中,本地端点可以检查并发现对等方已经响应,并且将进行至步骤322并使用下一个tsn值(存储最高tsn的本地变量)发送另一虚拟。返回参照图2,在图3中的步骤322中发送的那个虚拟数据包触发来自对等方的sack和enbcfgupdack。在图2之后,sack被处理为没有重复或间隙,并且在230中本地端点确定对等tsn被解析,并且移动至步骤232并解析本地tsn。
51.图4是根据一些实施方案,用于解析本地ssn的计算机化方法的典型流程图。在步骤402中,本地端点确定存在切换,这导致本地设备开始解析本地ssn。在步骤404中,本地端点恢复可能是或可能不是当前的检查点数据。如本文所论述的,检查点数据可以包括ssn数据,比如由本地端点发送至对等端点的最高ssn。在步骤406中,本地端点可以可选地设置内部变量,以指示本地端点正在解析本地ssn。在一些实施方案中,本地端点可以在解析其他信息之后,执行本地ssn解析进程,例如在解析本地tsn之后(例如,使用图2中描述的过程)。在这种情况下,对等方可以等待,直到在从步骤406移动至步骤408之前完成先前的解析过程(例如,在本地tsn被解析的通知时)。
52.在步骤408中,本地端点使用调整后的ssn在流1上发送有序虚拟数据包。如本文进一步论述的,本地端点可以使用cumtsn,以确定对本地ssn的初始调整。本地端点可以针对在流1上发送的每个数据包,继续使本地ssn递增。本地端点进行至步骤410,并等待来自对等端点的数据包。在一些实施方案中,本地端点等待对虚拟数据包的确认,和来自对等端点对虚拟数据包的响应。在步骤412中,本地端点在其发送有序虚拟数据包时,设置重传定时器。如果解析tsn定时器(例如,在图2的步骤212或图3的310中设置的解析tsn定时器)到期,则本地对等方进行至步骤414,并确定是否已达到最大超时次数。如果已达到最大超时次
数,则本地端点进行至步骤416并中止解析过程。例如,本地端点可以向对等方发送abort消息以中止通信会话。如果尚未达到最大超时次数,则对等端点返回至步骤410/412。返回参照步骤410/412,如果重传定时器到期,则本地端点进行至步骤418,并重传虚拟数据包。本地端点然后返回至步骤410和412,以等待对重传虚拟数据包的响应。
53.从步骤410/412开始,如果本地端点接收到对虚拟数据包的确认(例如,sack),则对等端点进行至步骤420,并基于该确认来更新由对等端点确认的最高tsn(例如,对等端点将确认的最高tsn设置为响应中的tsn值)。本地端点返回至步骤410/412。
54.从步骤410/412开始,如果本地端点从对等端点接收数据,则本地端点进行至步骤422,并确定数据是否响应于在步骤408中发送的虚拟。如果数据不是响应于虚拟数据包,则本地端点返回至步骤410/412。如果数据是响应于虚拟数据包,则本地端点进行至步骤424,以确定数据是响应流0上的有序虚拟数据还是响应流1上的有序虚拟数据。如果数据是响应于流1上的有序虚拟数据,则对等端点进行至步骤426,并使用检查点ssn在流0上发送有序虚拟。对等端点然后返回至步骤410/412。如果数据是响应于流0上的有序虚拟,则对等端点进行至步骤428并完成解析本地ssn,并且在步骤430中终止解析过程。
55.图5是图表,示出了根据一些实施方案,用于本地端点与对等端点之间的连接的示例数据包流。如上所述,可以对各种tsn和/或ssn信息设置检查点,例如由本地端点发送的最高tsn、由本地端点发送的最高ssn(例如,每个信道)、由对等方确认的最高tsn等。第1列示出了发送的最高tsn。第2列示出了为流0和流1两者发送的最高ssn。第3列示出了确认的最高tsn。第4列示出了发送的基本tsn。第5列示出了对等tsn是否已解析。第6列示出了本地tsn是否已解析。第7列示出了本地ssn是否已解析。第8列示出了本地sctp端点的操作。第9列示出了在本地sctp端点与对等sctp端点之间发送的数据包的方向。第10列示出了对等sctp端点的操作。参照第8列和第10列,典型数据包/消息以tsn、流id和ssn的格式示出。
56.在第1行中,从本地端点发送至对等端点的最高tsn为99,从流0发送的最高ssn为0,从流1发送的最高ssn为1。如第8列所示,本地端点向流1上的对等端点发送tsn为100且ssn为1的数据包。此时,对于流1,下一个预期tsn为101且ssn为2。
57.在第2行中,第1列的条目带有阴影,以指示这是执行设置检查点的时间。例如,检查点可以包括最后发送的tsn为100和ssn为[0,1]。如第10列所示,对等方发送sack,该sack确认对等方收到了直到tsn 100的所有数据包。
[0058]
在第3行中,如第10列所示,对等方在流1上将tsn为200和ssn为10的数据发送至本地端点。为200的tsn用于从对等方发送至本地端点的数据包,因此不需要与从本地端点发送至对等方的为100的tsn有任何关系。
[0059]
在第4行中,本地端点通过发送确认直到tsn 200的sack来确认数据。
[0060]
在第5行中,发生切换(或其他故障),这导致本地端点开始使用本文中论述的技术与对等端点解析tsn和ssn。
[0061]
在第6行中,如第4列所示,本地端点将发送的检查点最高tsn保存为发送的基本tsn(在此示例中为100的tsn)。此时,如第5至7列所示,本地端点尚未解析对等tsn或本地tsn或ssn(全部以“f”表示为假)。本地端点使用已确认的最高tsn计算用于初始虚拟数据包的tsn,以有意地发送重复。在此示例中,本地端点计算最高tsn减去10(100

10=90),并向对等方发送无序的sctp数据包enbcfgupd,使得对等方忽略ssn。如第3列所示,本地端点将
确认的最高tsn设置为90。
[0062]
在第7行中,对等方发送sack,该sack确认tsn 100(在切换之前发送),并将使用tsn 90的初始虚拟数据包报告为重复。接收后,如第3列所示,本地端点基于报告的累积tsn(cumtsn)(在此示例中为100),将已确认的最高tsn从90更新至100。由于为在初始虚拟tsn中发送的tsn 90报告了重复,因此本地端点将ssn增量计算为cumtsn(100)

发送的基本tsn(100,来自第4列),即100

100=0。对于流1,本地端点将ssn增量添加至发送的最高ssn,即1 0=1,从而不导致变化。
[0063]
在第8行中,本地端点使用下一个tsn 101向对等方发送另一虚拟数据包enbcfgupd。如第1列所示,本地端点将发送的最高tsn从100更新至101。
[0064]
在第9行中,如第10列所示,对等方向本地端点发送sack,该sack确认ssn为101,因此不会报告重复或间隙。
[0065]
在第10行中,如第10列所示,对等方将tsn为201且ssn为11的enbcfgupdateack发送至本地端点。接收后,本地端点假设先前的所有数据包都已收到。如上所述,可以做出这种假设是因为这些技术可以容忍一些数据丢失。因此,这解析对等方tsn,如反映“t”为真的第5列所示。
[0066]
在第11行中,如第8列所示,本地端点发送tsn为201的sack以确认接收到。现在对等方tsn已解析,本地端点还使用下一个tsn 102发送另一虚拟enbcfgupd数据包。如第1列所示,本地端点将发送的最高tsn从101更新至102。
[0067]
在第12行中,如第10列所示,对等方发送tsn 102的sack,其报告没有间隙或重复。如第3列所示,作为响应,本地端点将确认的最高tsn从101更新至102。由于对等tsn已解析,并且确认的最高tsn(102)等于发送的最高tsn(102,这是发送的最高虚拟),因而这会解析本地tsn,如第6列所示。对等方还发送带有tsn 202和ssn 12的enbcfgupdack。
[0068]
在第13行中,如第8列所示,本地端点发送带有tsn 202的sack以确认接收。本地端点还使用先前刚刚计算的下一个tsn 103和下一个ssn 2,在流1上发送有序虚拟数据包enbcfgupd。如第1列所示,本地端点将发送的最高tsn从102更新至103。本地端点还将为流1发送的最高ssn从1更新至2。
[0069]
在第14行中,如第10列所示,对等方处理带有tsn 103和ssn 2的虚拟。对等方为最后一个带有tsn 103的虚拟发送sack。作为响应,本地端点将确认的最高tsn从102更新至103,如第3列所示。对等方还发送带有tsn 203和ssn 13的enbcfgupdack。
[0070]
在第15行中,如第8列所示,本地端点发送带有tsn 203的sack以确认接收。本地端点还使用用于流0(1)的下一个ssn,在流0上发送带有tsn 104的有序虚拟enbcfgupd。如第2列所示,本地端点将为流0发送的最高ssn更新至1。
[0071]
在第16行中,对等端点发送带有tsn 104的sack,以确认最后一个虚拟,并发送带有tsn 202和ssn 14的enbcfgupdack,并且本地端点假设ssn对流0是正确的。例如,本地端点可以假设对等方发送的tsn和ssn都是正确的,因此可以容忍任何可能丢失的数据。如第7列所示,这样就完成了tsn和ssn的解析。
[0072]
在第17行中,对于通道1,本地端点发送的下一个真实数据将具有正确的tsn(105)和ssn 3。
[0073]
图6是图表,示出了根据一些实施方案,用于本地端点与对等端点之间的连接的另
一个示例数据包流。如下文进一步论述的,在该示例中,数据在切换期间传输。与图5类似,第1列示出了发送的最高tsn。第2列示出了为流0和流1两者发送的最高ssn。第3列示出了确认的最高tsn。第4列示出了发送的基本tsn。第5列示出了对等tsn是否已解析。第6列示出了本地tsn是否已解析。第7列示出了本地ssn是否已解析。第8列示出了本地sctp端点的操作。第9列示出了在本地sctp端点与对等sctp端点之间发送的数据包的方向。第10列示出了对等sctp端点的操作。
[0074]
在第1行中,本地端点向对等方发送具有tsn 100和ssn 1的数据。确认的最高tsn为99,如第3列所示。本地端点将发送的最高tsn从99递增至100(第1列),并且将为流1发送的最高ssn从0递增至1(第2列)。
[0075]
在第2行中,对等方下一个预期tsn为100,并且下一个预期ssn为1。如第10列所示,对等方发送带有tsn 100的sack,以确认接收到了直到tsn 100的所有数据包。如第3列所示,本地端点将确认的最高tsn从99更新至100。第1列的条目带有阴影,以指示发送的检查点最高tsn为100。
[0076]
在第3行中,本地端点爆发性发送tsn的范围为101至200且ssn的范围为2至101的100个数据包。针对流1,本地端点将发送的最高tsn从100更新至100(第1列),并且将发送的最高ssn从1更新至101(第2列)。
[0077]
在第4行中,发生切换,现在本地端点开始使用本文论述的技术与对等端点解析tsn和ssn。
[0078]
在第5行中,本地端点将发送的检查点最高tsn(100)保存为发送的基本tsn,如第4列所示。在此示例中,此值为100,因为该值是最后一次设置检查点的值(例如,即使在自前一次检查点以来突发性发送了100个数据包)。本地端点通过确定用于虚拟数据包的tsn,开始该过程。如上所述,为了有意地发送重复,本地端点计算确认的最高tsn减去10(在此示例中,100

10=90),并且如第9列所示发送带有tsn 90的无序sctp虚拟数据包enbcfgupd,因此ssn被忽略并且不发送。本地端点将发送的最高tsn如第1列所示的那样调整为90,将确认的最高tsn如第3列所示那样调整为90。本地端点还使用为流1发送的检查点最高ssn,对应于tsn 100,该检查点最高ssn为1。要注意的是,实际发送的最后一个ssn是101,因此对等端点将预期用于下一个有序数据包的ssn为102。
[0079]
在第6行中,对等方发送确认tsn 110(在切换之前发送)的sack数据包。sack并不表示存在任何重复或间隙。特别地,当突发性发送了100个数据包时,数据正在传输中,并且仍在由对等方处理。本地端点将已确认的最高tsn和发送的最高tsn从90更新至110(在第1列和第3列中示出),并继续等待响应于初始虚拟数据包而报告的带有tsn 90的重复。
[0080]
在第7行中,对等端点继续处理传输中数据,并发送回具有tsn 150的sack。本地端点继续更新已发送并确认的最高tsn(从110更新到150,如第1列和第3列所示)并且等待。
[0081]
在第8行中,如第10列所示,对等端点发送sack,该sack确认tsn 200(在切换之前发送),并将使用tsn 90的初始虚拟数据包报告为重复。本地端点基于报告的cumtsn(200),更新已发送并确认的最高tsn。由于报告了具有tsn 90的重复,并且它是初始虚拟tsn,因此本地端点将ssn增量计算为cumtsn,发送的基本tsn(200

100=100)。本地端点将计算的ssn增量添加至为流1发送的最高ssn(1 100=101),如第2列所示。此时,发送的最高tsn和发送的最高ssn的值现在与本地端点在切换之前已发送的值匹配,如第3行所示。
[0082]
在第9行中,如第8列所示,本地端点使用下一个tsn 201发送另一个虚拟数据包。如第1列所示,本地端点将发送的最高tsn从200更新至201。
[0083]
在第10行中,如第10列所示,本地端点接收带有ssn 201的sack,该sack报告没有重复或间隙。本地端点将确认的最高tsn从200更新至201,如第3列所示。
[0084]
在第11行中,对等端点发送带有tsn 201和ssn 11的enbcfgupdateack,并且本地端点假设先前的所有数据包都已收到。这将解析对等tsn,如第5列所示。
[0085]
在第12行中,本地端点发送带有tsn 201的sack以确认接收到。现在对等tsn已解析,本地端点使用下一个tsn 202发送另一虚拟endbcfgupd。如第1列所示,本地端点将发送的最高tsn从201更新至202。
[0086]
在第13行中,本地端点接收到tsn 202的sack,它报告没有间隙或重复。由于对等tsn已解析,并且确认的最高tsn=发送的最高tsn(最高虚拟发送),这将解析本地tsn,如第6列所示。本地端点将确认的最高tsn从201更新至202。
[0087]
在第14行中,如第8列所示,本地端点发送带有tsn 202的sack以确认接收。本地端点还使用下一个计算的ssn 102,在流1上发送有序虚拟enbcfgupd。本地端点将发送的最高tsn从202更新至203(第1列),并将为流1设置的最高ssn更新至102(第2列)。
[0088]
在第15行中,对等端点为最后一个虚拟数据包发送带有tsn 203的sack。对等端点还发送带有tsn 203和ssn 13的enbcfgupdack,并且本地端点假设ssn对流1是正确的(例如,容忍一些数据丢失)。本地端点将确认的最高tsn从202更新至203。
[0089]
在第16行中,如第8列所示,本地端点发送带有tsn 203的sack以确认接收。本地端点还使用用于流0的下一个ssn 1,在流0上发送带有tsn 204的有序虚拟数据包enbcfgupd。本地端点将发送的最高ssn从0更新至1。
[0090]
在第17行中,如第10列所示,对等端点为最后一个虚拟发送带有tsn 204的sack,以及带有tsn 202和ssn 14的enbcfgupdack,并且本地端点假设ssn对流0是正确的。这样就完成了tsn和ssn的解析,如第7列所示。
[0091]
在第18行中,本地端点发送的下一个真实数据将具有正确的tsn和ssn,在此示例中,tsn为205,ssn为103。
[0092]
图7是图表,示出了根据一些实施方案,用于本地端点与对等端点之间的连接的另一示例数据包流。如下文进一步论述的,在该示例中,数据在切换期间传输,同时发生重传。与图5至图6类似,第1列示出了发送的最高tsn。第2列示出了为流0和流1发送的最高ssn。第3列示出了确认的最高tsn。第4列示出了发送的基本tsn。第5列示出了对等tsn是否已解析。第6列示出了本地tsn是否已解析。第7列示出了本地ssn是否已解析。第8列示出了本地sctp端点的操作。第9列示出了在本地sctp端点与对等sctp端点之间发送的数据包的方向。第10列示出了对等sctp端点的操作。
[0093]
在第1行中,如第8列所示,本地端点向对等方发送具有tsn 100和ssn 1的数据。确认的最高tsn为99,如第3列所示。本地端点将发送的最高tsn从99递增至100(第1列),并且将为流1发送的最高ssn从0递增至1(第2列)。下一个预期tsn和ssn是(101,2)。
[0094]
在第2行中,如第10列所示,对等端点利用带有tsn 100的sack,确认接收到了直到tsn 100的所有数据包。本地端点将确认的最高tsn从99更新至100。第1列的条目突出显示,以指示检查点tsn为100且用于流1的检查点ssn为1。
[0095]
在第3行中,如第8列所示,本地端点爆发性发送tsn的范围为101至200且ssn的范围为2至101的100个数据包。本地端点将发送的最高tsn从100更新至200,并将为流1发送的最高ssn从1更新至101。
[0096]
在第4行中,如第10列所示,对等方确认接收到了直到tsn 150的所有数据包,但对等端点处理其他数据包的速度很慢,或者这些数据已被丢弃。本地端点将确认的最高tsn从100更新至150。
[0097]
在第5行中,如第8列所示,本地端点重传定时器超时,并且本地端点重传尚未确认的数据包,即带有tsn 151至200的数据包。如上所述,这些可能已被对等方接收,只是尚未及时处理,和/或未被对等方接收。
[0098]
在第6行中,发生切换,现在本地端点开始使用本文论述的技术与对等端点解析tsn和ssn。
[0099]
在第7行中,本地端点将发送的检查点最高tsn(100)保存为发送的基本tsn(第4列)。例如,此值为100,因为该值是最后一次设置检查点的值,如上面第2行所述,并且在此示例中设置检查点是滞后的。作为有意发送重复的技术的示例,对等方确定确认的最高tsn

10(100

10=90),并发送具有tsn 90的无序sctp数据包enbcfgupd,因此ssn被忽略而不发送。本地端点将发送的最高tsn调整为90(第1列),并将确认的最高tsn调整为90(第3列)。本地端点还恢复从检查点数据发送的最高ssn,其对于流1是1。
[0100]
在第8行中,已经过去了足够的时间以允许对等端点赶上处理。如第10列所示,对等方发送sack,该sack确认tsn 200(在切换之前发送)并将所有重传的数据包151至200报告为重复。它还将tsn为90的虚拟数据包报告为重复。对等方将确认的最高tsn从90更新至200(第3列),并且将发送的最高tsn从90更新至200(第1列)。对等设备将ssn增量计算为cumtsn

基础tsn,即200

100=100,并将用于流1的ssn从1调整为101。
[0101]
在第9行中,如第8列所示,本地端点使用下一个tsn 201发送另一个虚拟数据包enbcfgupd。本地端点将发送的最高tsn从200更新至201。
[0102]
在第10行中,如第10列所示,对等端点发送带有tsn 201的sack,并且该sack没有报告重复或间隙。对等方将确认的最高tsn从200更新至201。
[0103]
在第11行中,如第10列所示,对等方发送带有tsn 201和ssn 11的enbcfgupdateack,并且本地端点假设先前的所有数据包都已被接收到。这将解析对等tsn,如第5列所示。
[0104]
在第12行中,本地端点发送带有tsn 201的sack以确认接收。现在对等tsn已解析,本地端点还使用下一个tsn 202发送另一个虚拟enbcfgupd。本地端点将发送的最高tsn从201更新至202(第1列)。
[0105]
在第13行中,对等端点发送用于tsn 202的sack,该sack报告没有间隙或重复。本地端点将确认的最高tsn从201更新至202。由于对等tsn已解析,并且确认的最高tsn(202)等于发送的最高tsn(对于发送的最高虚拟而言,也是202),这将解析本地tsn,如第6列所示。
[0106]
在第14行中,如第8列所示,本地端点发送sack以确认接收到tsn 202。端点还使用下一个计算的ssn在流1上发送带有tsn 203、ssn 102的有序虚拟enbcfgupd。本地端点将发送的最高tsn从202更新至203,并将为流1发送的最高ssn更新至102。
[0107]
在第15行中,如第10列所示,对等端点发送用于tsn 203的最后一个虚拟的sack。对等方还发送带有tsn 203和ssn 13的enbcfgupdack,并且对等方假定ssn对流1是正确的。本地端点将确认的最高tsn从202更新至203。
[0108]
在第16行中,如第8列所示,本地端点发送sack以确认接收到tsn 203。本地端点还使用用于流0的下一个ssn 1,在流0上发送有序虚拟enbcfgupd。
[0109]
在第17行中,如第10列所示,对等方发送用于tsn 204的最后一个虚拟的sack,以及带有tsn 202和ssn 14的enbcfgupdack。本地端点将确认的最高tsn从203更新至204。这样就完成解析tsn和ssn,如第7列所示。
[0110]
在第18行中,本地端点发送的下一个真实数据将具有正确的tsn和ssn,在此示例中分别为205和103。
[0111]
图8是图表,示出了根据一些实施方案,用于本地端点与对等端点之间的连接的另一个示例数据包流。如下文进一步论述,在此示例中,在切换期间数据丢失,因此报告了间隙。与图5至图7类似,第1列示出了发送的最高tsn。第2列示出了为流0和流1两者发送的最高ssn。第3列示出了确认的最高tsn。第4列示出了发送的基本tsn。第5列示出了对等tsn是否已解析。第6列示出了本地tsn是否已解析。第7列示出了本地ssn是否已解析。第8列示出了本地sctp端点的操作。第9列示出了在本地sctp端点与对等sctp端点之间发送的数据包的方向。第10列示出了对等sctp端点的操作。
[0112]
在第1行中,如第8列所示,本地端点向对等方发送具有tsn 100和ssn 1的数据。确认的最高tsn为99,如第3列所示。本地端点将发送的最高tsn从99递增至100(第1列),并将为流1发送的最高ssn从0递增至1(第2列)。下一个预期tsn和ssn是(101,2)。
[0113]
在第2行中,如第10列所示,对等方确认接收到了直到tsn 100的所有数据包。本地端点将确认的最高tsn从99递增至100(第3列)。第1列中的条目突出显示以指示为tsn 100和ssn 1设置检查点。
[0114]
在第3行中,本地端点向对等方发送具有tsn 101、ssn 2的数据。本地端点将发送的最高tsn从100递增至101(第1列),并将为流1发送的最高ssn从1递增至2(第2列)。对于该示例,假设该数据包以某种方式被丢弃和/或没有被对等方接收。
[0115]
在第4行中,本地端点向对等方发送具有tsn 102、ssn 3的数据。本地端点将发送的最高tsn从101更新至102(第1列),并将为流1发送的最高ssn从2更新至3(第2列)。
[0116]
在第5行中,发生切换,现在本地端点开始使用本文论述的技术与对等端点解析tsn和ssn。
[0117]
在第6行中,本地端点将发送的检查点最高tsn(100)保存为发送的基本tsn(第4列)。本地端点计算确认的最高tsn

10(100

10=90),并使用ssn 90发送无序sctp虚拟数据包enbcfgupd,使得ssn被忽略而不发送。本地端点将发送的最高tsn(第1列)和确认的最高tsn(第3列)调整为此值90。本地端点还从检查点数据中恢复为流1发送的最高ssn,并设置为1。
[0118]
在第7行中,对等方接收到tsn 102,但从未接收到tsn 101,并且还接收到带有tsn 90的虚拟重复。如第10列所示,对等方发送sack,该sack确认tsn 102和直到tsn 100的所有数据,但指示丢失1个数据包的间隙,即tsn 101,并且还报告90作为重复。本地端点基于cumtsn 100,将发送的最高tsn从90更新至100(第1列)和已确认的最高tsn(第3列),并将发
送虚拟来填充间隙。由于存在具有tsn 90的初始虚拟的重复,本地端点将ssn增量计算为cumtsn

基础,在此示例中为100

100=0,因此不进行ssn调整。
[0119]
在第8行中,如第8列所示,本地端点根据sack确定tsn 101丢失,并使用tsn 101创建另一个虚拟数据包以进行发送。本地端点还发送具有已知重复tsn 90的初始虚拟数据包。如本文所论述的,本地端点可以发送初始虚拟数据包,使得接收到的下一个sack也将其报告为重复(例如,使得本地端点能够将sack识别为针对初始虚拟数据包的报告)。对等方将发送的最高tsn从100更新至101。
[0120]
在第9行中,如第10列所示,对等方发送sack,该sack确认直到tsn 102的所有数据包并且现在报告没有间隙。sack再次报告接收到作为重复的初始虚拟数据包90。本地端点将发送的最高tsn从101更新至102(第1列)。本地端点将重复识别为初始虚拟数据包,并将ssn增量计算为cumtsn

基础tsn=102

100=2。本地端点通过加2来调整流1的ssn,从而将其从1更改为3(第2栏)。
[0121]
在第10行中,对等方响应于虚拟tsn 101而发送enbcfgupdateack,该虚拟tsn 101曾被发送以填充间隙。这将解析对等tsn,如第5列所示。
[0122]
在第11行中,本地端点发送sack以确认tsn 202。在解析对等tsn后,本地端点还使用下一个tsn 103发送另一虚拟enbcfgupd。本地端点将发送的最高tsn从102更新至103(第1列)。
[0123]
在第12行中,如第10列所示,对等方发送sack,该sack确认直到tsn 103的所有数据包,并且没有报告重复或间隙。这将解析本地tsn,如第6列所示。对等方还向具有tsn103的虚拟数据包发送ack。
[0124]
在第13行中,如第8列所示,本地端点发送sack以确认接收到tsn 203。本地端点还使用tsn 104和下一个计算的ssn 4,在流1上发送有序虚拟enbcfgupd。本地端点将发送的最高tsn从103更新至104(第1列),并将为流1发送的最高ssn从3更新至4(第2列)。
[0125]
在第14行中,如第10列所示,对等端点发送用于最后一个虚拟tsn 104的sack,并且还发送带有tsn 204和ssn 14的enbcfgupdack。对等方假设ssn对流1是正确的。
[0126]
在第15行中,对等方发送sack以确认接收到tsn 204,并且还使用用于流0的为1的下一个ssn,在流0上发送带有tsn 105的有序虚拟enbcfgupd。本地端点将发送的最高tsn从104更新至105(第1列),并将为流0发送的最高ssn从0更新至1(第2列)。
[0127]
在第16行中,对等方发送用于最后一个虚拟tsn 105的sack,以及tsn 205和ssn 15的enbcfgupdack。本地端点假设ssn对流0是正确的。这完成了tsn和ssn的解析,如第7列所示。
[0128]
在第17行中,由本地端点发送的下一个真实数据将具有正确的tsn和ssn,在此示例中,对于流1,tsn和ssn分别为106和5。
[0129]
图9是图表,示出了根据一些实施方案,用于本地端点与对等端点之间的连接的另一示例数据包流。如下文进一步论述的,在该示例中,在解析tsn时发生超时。与图5至图8类似,第1列示出了发送的最高tsn。第2列示出了为流0和流1发送的最高ssn。第3列示出了确认的最高tsn。第4列示出了发送的基本tsn。第5列示出了对等tsn是否已解析。第6列示出了本地tsn是否已解析。第7列示出了本地ssn是否已解析。第8列示出了本地sctp端点的操作。第9列示出了在本地sctp端点与对等sctp端点之间发送的数据包的方向。第10列示出了对
等sctp端点的操作。
[0130]
在第1行中,如第8列所示,本地端点向对等方发送具有tsn 100和ssn 1的数据。最高tsn确认为99,如第3列所示。本地端点将发送的最高tsn从99递增至100(第1列),并将为流1发送的最高ssn从0递增至1(第2列)。下一个预期的tsn和ssn是(101,2)。
[0131]
在第2行中,如第10列所示,对等方确认接收到了直至tsn 100的所有数据包。本地端点将确认的最高tsn从99递增至100(第3列)。第1列中的条目突出显示以指示为tsn 100设置检查点。
[0132]
在第3行中,发生切换,现在本地端点开始与对等端点解析tsn和ssn。
[0133]
在第4行中,本地端点将发送的检查点最高tsn(100)保存为发送的基本tsn。如第8列所示,本地端点计算确认的最高tsn

10(100

10=90),并发送初始虚拟数据包,即具有tsn 90的无序sctp数据enbcfgupd,因此ssn被忽略而不发送。本地端点将发送的最高tsn和确认的最高tsn调整为90(第1列和第3列)。本地端点启动重传定时器(例如,重传超时(retransmission timeout,rto))以等待sack预定秒数。本地端点还为关联启动空闲定时器,该空闲定时器每5秒到期。例如,空闲定时器可以是用于确定是否中止该过程的解析tsn定时器。
[0134]
在第5行中,在rto之后,用于关联的重传定时器到期。本地端点重传初始虚拟数据包(tsn为90的无序enbcfgupd)。
[0135]
在第6行中,在rto之后,用于关联的重传定时器第二次到期。本地端点再次重传初始虚拟数据包(tsn为90的无序enbcfgupd)。
[0136]
在第7行中,在rto之后,用于关联的重传定时器第三次到期。本地端点重传初始虚拟数据包(tsn为90的无序enbcfgupd)。
[0137]
虽然没有示出每个rto到期,但在重复的rto定时器到期10次后,本地端点中止关联。
[0138]
根据本文中描述的原理操作的技术可以以任何合适的方式实施。上面的流程图的处理和决策块表示可以包括在执行这些各种过程的算法中的步骤和动作。将从这些过程得到的算法可以实施为与一个或多个单用途或多用途处理器的操作集成并指导其操作的软件、功能等效的电路,例如数字信号处理(dsp)电路或专用集成电路(asic),或者可以按任何其它合适的方式实施。应当理解的是,本文包括的流程图不描绘任何特定电路或任何特定编程语言或编程语言类型的语法或操作。相反,流程图展示本领域技术人员可以用来制造电路或实施计算机软件算法,以执行实施本文中描述的技术类型的特定设备的处理的功能信息。还应当理解的是,除非本文另有指示,否则每个流程图中描述的特定步骤和/或动作的序列仅仅是展示可以实施并且可以在本文中描述的原理的实现方式和实施方案中变化的算法。
[0139]
因此,在一些实施方案中,可以按照实施为软件的计算机可执行指令来体现本文中描述的技术,包括实施为应用软件、系统软件、固件、中间件、嵌入代码或任何其它合适类型的计算机代码。此类计算机可执行指令可以使用许多合适的编程语言和/或编程或脚本工具中的任何一种来编写,并且还可以被编译为在框架或虚拟机上执行的可执行机器语言代码或中间代码。
[0140]
当本文中描述的技术体现为计算机可执行指令时,这些计算机可执行指令可以按
任何合适的方式实施,包括作为多个功能设施,每个功能设施提供一个或多个操作,以完成对根据这些技术操作的算法的执行。然而,实例化的“功能设施(functional facility)”是计算机系统的结构组件,当与一个或多个计算机集成,并由一个或更多个计算机执行时,其使得一个或多个计算机执行特定的操作角色。功能设施可以是软件元素的一部分或整个软件元素。例如,可以将功能设施实施为过程的功能,或实施为分立的过程,或实施为任何其它合适的处理单元。如果将本文中描述的技术实施为多个功能设施,则每个功能设施可以按照其自身的方式实施;无需全部以同样的方式实施。另外,这些功能设施可以适当地并行和/或串行地执行,并且可以使用它们正在执行的一台或多台计算机上的共享存储器、消息传递协议或以任何其它合适的方式在彼此之间传递信息。
[0141]
通常,功能设施包括执行特定任务或实施特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,功能设施的功能性可以根据需要在它们运行的系统中组合或分布。在一些实现方式中,执行本文中的技术的一个或多个功能设施可以一起形成完整的软件包。在替代实施方案中,这些功能设施可以适于与其它不相关的功能设施和/或过程交互,以实施软件程序应用。
[0142]
本文已经描述了用于执行一个或多个任务的一些示例性功能设施。然而,应当理解的是,所描述的功能设施和任务划分仅仅是展示可以实施本文中描述的示例性技术的功能设施的类型,并且实施方案不限于以功能设施的任何特定数目、划分或类型来实施。在一些实现方式中,所有功能可以在单个功能设施中实施。还应当理解的是,在一些实施方案中,本文中描述的一些功能设施可以与其它功能设施一起实施或与其它功能设施分开实施(即,作为单个单元或单独的单元),或者可以不实施这些功能设施中的一些。
[0143]
在一些实施方案中,实施本文中描述的技术的计算机可执行指令(当实施为一个或多个功能设施或以任何其它方式实施时)可以在一个或多个计算机可读介质上编码,以向介质提供功能。计算机可读介质包括诸如硬盘驱动器之类的磁介质、诸如光盘(cd)或数字通用盘(dvd)之类的光学介质、永久性或非永久性固态存储器(例如,闪存、磁性ram等),或任何其它合适的存储介质。这种计算机可读介质可以用任何合适的方式实施。如本文所使用,“计算机可读介质”(也称为“计算机可读存储介质”)是指有形存储介质。有形存储介质是非暂时性的,并且具有至少一个物理结构组件。在如本文所使用的“计算机可读介质”中,至少一个物理结构组件具有至少一个物理特性,物理特性可以在创建具有嵌入信息的介质的过程期间、在其上记录信息的过程期间,或在用信息对介质进行编码的任何其它过程期间以某种方式改变。例如,可以在记录过程期间改变计算机可读介质的物理结构的一部分的磁化状态。
[0144]
此外,上述一些技术包括以某些方式存储信息(例如,数据和/或指令),以供这些技术使用的动作。在这些技术的一些实现方式中,例如在将这些技术实施为计算机可执行指令的实现方式中,可以在计算机可读存储介质上对信息进行编码。在本文中将特定结构描述为存储此信息的有利格式的情况下,这些结构可以用于当在存储介质上编码时赋予信息的物理组织。然后,这些有利结构可以通过影响与信息交互的一个或多个处理器的操作来向存储介质提供功能;例如,通过提高一个或多个处理器执行的计算机操作的效率。
[0145]
在一些但非全部实现方式中,技术可以体现为计算机可执行指令,这些指令可以在任何合适的计算机系统中操作的一个或多个合适的计算装置上执行中,或一个或多个计
算装置(或一个或多个计算装置的一个或多个处理器)可以被编程为执行计算机可执行指令。计算装置或处理器可以被编程为当指令以计算装置或处理器可访问的方式存储时,例如以数据存储(例如,片上高速缓存或指令寄存器、可经由总线访问的计算机可读存储介质、可经由一个或多个网络访问并可由装置/处理器访问的计算机可读存储介质等)的方式存储时,执行指令。包括这些计算机可执行指令的功能设施可以与单个多用途可编程数字计算装置、共享处理能力且联合执行本文中描述的技术的两个或多个多用途计算装置的协调系统、专用于执行本文中描述的技术的单个计算装置或计算装置的协调系统(共址或地理分布)、用于执行本文中描述的技术的一个或多个现场可编程门阵列(fpga),或任何其它合适的系统的操作集成,并指导其操作。
[0146]
计算装置可以包括至少一个处理器、网络适配器和计算机可读存储介质。例如,计算装置可以是台式或膝上型个人计算机、个人数字助理(pda)、智能移动电话、服务器或任何其它合适的计算装置。网络适配器可以是任何合适的硬件和/或软件,以使计算装置能够通过任何合适的计算网络与任何其它合适的计算装置进行有线和/或无线通信。计算网络可以包括无线接入点、交换机、路由器、网关和/或其它网络设备,以及用于在两个或多个计算机之间交换数据的任何合适的一种或多种有线和/或无线通信介质,包括因特网。计算机可读介质可以适于存储要处理的数据和/或要由处理器执行的指令。处理器能够处理数据和执行指令。数据和指令可以存储在计算机可读存储介质上。
[0147]
计算装置可以另外具有一个或多个组件和外围设备,包括输入和输出装置。这些装置可以用于提供用户接口,以及其它作用。可以用于提供用户接口的输出装置的示例包括用于输出的视觉呈现的打印机或显示屏,以及用于输出的可听呈现的扬声器或其它声音生成装置。可以用于用户接口的输入装置的示例包括键盘和指示装置,例如鼠标、触摸板和数字化平板电脑。作为另一示例,计算装置可以通过语音识别或其它可听格式接收输入信息。
[0148]
已经描述了以电路和/或计算机可执行指令实施这些技术的实施方案。应当理解的是,一些实施方案可以是方法的形式,已经提供了该方法形式的至少一个示例。作为方法的一部分执行的动作可以按任何合适的方式排序。因此,可以构造这样的实施方案,其中,以不同于所示的顺序执行动作,这可以包括同时执行一些动作,即使在展示性实施方案中示出为顺序动作。
[0149]
上述实施方案的各个方面可以单独使用、组合使用,或者以在前面描述的实施方案中未具体论述的各种布置使用,因此不限于其应用于前述描述中阐述的或附图中展示的组件的细节和布置。例如,一个实施方案中描述的方面可以用任何方式与其它实施方案中描述的方面组合。
[0150]
在权利要求中使用例如“第一”、“第二”、“第三”等的序数术语来修改权利要求元素本身并不意味着一个权利要求元素优于另一个权利要求元素的任何优先级、优先性或顺序,或执行方法的动作的时间顺序,而是仅用作标签以区分具有特定名称的一个权利要求元素与具有相同名称(但是使用序数术语)的另一个元素从而区分权利要求元素。
[0151]
此外,本文使用的措辞和术语是出于描述的目的,而不应被视为限制。本文中使用“包括”、“包含”、“具有”、“含有”、“涉及”及其变化形式旨在涵盖其后列出的项目及其等同物以及附加项目。
[0152]
本文使用的“典型”一词意指用作示例、实例或展示。因此,本文中描述为典型的任何实施方案、实现方式、过程、特征等应被理解为展示性示例,并且除非另有指示,否则不应被理解为优选或有利示例。
[0153]
已经如此描述了至少一个实施方案的若干方面,应当理解的是,本领域技术人员将容易想到各种改变、修改和改进。这些改变、修改和改进旨在成为本公开的一部分,并且旨在落入本文中描述的原理的精神和范围内。因此,前面的描述和附图仅是示例性的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献