CN101485152B - 用于高性能捆绑重排序的方法、系统及计算机程序产品 - Google Patents
用于高性能捆绑重排序的方法、系统及计算机程序产品 Download PDFInfo
- Publication number
- CN101485152B CN101485152B CN2007800250645A CN200780025064A CN101485152B CN 101485152 B CN101485152 B CN 101485152B CN 2007800250645 A CN2007800250645 A CN 2007800250645A CN 200780025064 A CN200780025064 A CN 200780025064A CN 101485152 B CN101485152 B CN 101485152B
- Authority
- CN
- China
- Prior art keywords
- segmentation
- psn
- sequence
- channel
- receives
- Prior art date
Links
- 238000004590 computer program Methods 0.000 title abstract description 5
- 230000015654 memory Effects 0.000 claims abstract description 26
- 230000000875 corresponding Effects 0.000 claims abstract description 8
- 230000011218 segmentation Effects 0.000 claims description 169
- 230000015572 biosynthetic process Effects 0.000 claims description 35
- 238000005755 formation reactions Methods 0.000 claims description 35
- 230000000295 complement Effects 0.000 claims description 6
- 230000001808 coupling Effects 0.000 claims 1
- 238000010168 coupling process Methods 0.000 claims 1
- 238000005859 coupling reactions Methods 0.000 claims 1
- 238000000034 methods Methods 0.000 abstract description 27
- 238000004891 communication Methods 0.000 description 19
- 101710003430 psn-10 Proteins 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 5
- 101710003432 psn15 Proteins 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 241001269238 Data Species 0.000 description 3
- 238000010586 diagrams Methods 0.000 description 3
- 101710007189 psn1 Proteins 0.000 description 3
- 101710007187 psn2 Proteins 0.000 description 3
- 239000004744 fabrics Substances 0.000 description 2
- 230000000051 modifying Effects 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 101710003429 psn-11 Proteins 0.000 description 2
- 101710003427 psn13 Proteins 0.000 description 2
- 101710007179 psn3 Proteins 0.000 description 2
- 101710007178 psn5 Proteins 0.000 description 2
- 229940047431 Recombinate Drugs 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 239000000969 carriers Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering processes Methods 0.000 description 1
- 239000003365 glass fibers Substances 0.000 description 1
- 238000009376 nuclear reprocessing Methods 0.000 description 1
- 101710003428 psn12 Proteins 0.000 description 1
- 101710003433 psn14 Proteins 0.000 description 1
- 230000036632 reaction speed Effects 0.000 description 1
- 230000035484 reaction time Effects 0.000 description 1
- 210000001519 tissues Anatomy 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. local area networks [LAN], wide area networks [WAN]
- H04L12/2801—Broadband local area networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Queuing arrangements
- H04L49/9094—Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
Abstract
Description
用于高性能捆绑重排序的方法、系统及计算机程序产品
技术领域
[0001] 本发明涉及通信系统,更具体地说,涉及分段或分组数据的发送和处理。 背景技术
[0002] 信道捆绑是将两点之间的多个独立的通信信道当作一个单独的“虚拟”信道来处 理,该“虚拟”信道与可能的带宽相比则具有更大的总带宽。除了容量更大,这种配置还具 有其它优点,如提高了虚拟信道的整体可靠性。由于一个虚拟信道是由多个物理信道组成, 如果当有一个或多个物理信道出现故障,虚拟信道固有的冗余使得其可以继续工作。
[0003] 信道捆绑的概念可通过图1的电缆通信系统来说明。在这个例子中,电缆调制 解调器终端系统(CMTQ110与电缆调制解调器(CM) 130正在进行通信。数据通过信道 120a-120i从CMTS 110传送到CM 130。在给定的一段时间内,信道120a_120i中部分或全 部信道可以捆绑起来,则这段时间内的分段数据(例如分组)可以通过这些信道发送。某 一给定的分段(segment)或分组数据可通过这些信道中的一个信道发送,而下一个分段或 分组数据可通过相同的信道发送,也可通过该捆绑信道集合(BCS)中的另一个不同信道发 送。然后CM 130在将这些分段或分组数据发送给最终用户前必须对其进行重组。
[0004] 在捆绑信道中发送数据的一种方案是发送端发送全部分组,并基于负载均衡、速 率限制或其它信道选择方法将这些分组数据分配到各个信道中传送。另一种方案是将一串 分组数据连接为一个字节流,再将该字节流分成段通过不同信道传送。在这两种方案中,分 组/分段数据要由发送方(例如CMTS)标记上序号,以使接收方(例如CM)能够按照适当 的分组/分段数据顺序产生数据流。这一过程称为重排序,以保证数据以正确的顺序到达 最终用户。
[0005] 对多个捆绑信道的重排序可能是时间密集型处理,其将消耗大量的内存。分段或 分组数据可能不按顺序接收。当接收端在任意几个捆绑信道上接收一个或多个编号靠后的 分段数据时,会出现间隔(gap)造成分段或分组数据丢失(missing)。编号靠后的分段数据 必须保存到存储器中直到接收到丢失的分段。在这一点上,丢失的分段数据可以与顺序排 在该丢失分段数据之后的已保存分段数据一起发送给最终用户。这些保存的分段数据必须 从存储器中读取并以编号顺序发送给用户。
[0006] 高性能、低成本设备如电缆调制解调器得益于排序分组数据的有效重排序方法。 期望在CM或CMTS中实现快速重排序,并且无需占用大量的存储器/寄存器资源。因此需 要一种在接收节点中有效地重排序分组或其它数据分段的系统和方法,其中重排序处理仅 需最小限度的存储量并且操作速度相对较高。
附图说明
[0007] 图1是通信系统中一组捆绑信道的示意图;
[0008] 图2是本发明一实施例的处理过程流程图;
[0009] 图3是根据本发明一实施例的排序分段数据的过程的流程图;[0010] 图4是根据本发明一实施例确定分段数据是否丢失的过程的流程图;
[0011] 图5是根据本发明一实施例的从队列中除去分段数据的过程的流程图;
[0012] 图6-9是根据本发明的实施例的在处理过程的各个阶段的示例性稀疏阵列的结 构和内容的示意图;
[0013] 图10是根据本发明的实施例的本发明的计算环境的示意图。
[0014] 以下将结合附图对本发明的实施例、特征和有益效果以及各个实施例的操作进行 描述。
具体实施方式
[0015] 现参考附图对本发明实施例进行描述,附图中,同一个附图标记在各幅附图中用 于表示相同的部件或功能相似的部件。另外,附图标记最左边的数字用于标识该附图标记 首次出现时的那幅附图的编号。应当理解,虽然所讨论的是特定的配置和设置,但这仅是为 举例说明的目的。本领域的技术人员知悉,也可使用其它的配置和设置,而不脱离本发明的 精神和范围。本领域的技术人员知悉,本发明还可以运用到其它各种不同的应用中。
[0016] I、引言
[0017] 本发明涉及对通过BCS接收到的分组或分段数据重排序的方法和系统。这些分 段数据接收时顺序是乱的,本发明在接收端对这些分段数据进行重排序以便发送给最终用 户。某些分段数据可能会丢失再也接收不到。本发明允许接收端确认是否缺少的分段数据 应当认为是丢失的,并继续处理分段数据。本发明可以由软件或硬件实现,或由软、硬件的 结合来实现。
[0018] 该系统可以用于按照有线电视数据传输服务接口规范(DOCSIS)标准或类似的标 准进行通信。例如,本发明可以在电缆调制解调器中实施,或者在从一组捆绑信道上的电缆 调制解调器终端系统中接收下行数据分段或分组的其它最终用户设备中实施。因此,在以 下的讨论中,按照从CMTS到CM的下行通信来描述。需要注意的是,本发明的技术方案也可 以应用到从CM到CMTS的捆绑信道上行通信中。此外,除了使用电缆本发明还可应用于使用 其它传输媒介的DOCSIS系统,包括但不限于光纤和无线媒介。本发明还可应用于非DOCSIS 标准的通信系统中。
[0019] II、术语
[0020] 本发明使用以下术语描述捆绑操作。其中一些术语也由DOCSIS 3. 0规范定义:
[0021] RCS:接收信道集。这是通信信道的一个集合,接收实体能够在其上接收数据。
[0022] BCS :捆绑信道集。这是RCS的子集,代表发射和接收实体已达成共识使用这些信 道来发送与捆绑会话(bonding session)相关的数据。
[0023] 捆绑会话:一种状态信息,发射和接收实体使用该状态信息来执行捆绑。在同一时 间可能存在多个捆绑会话活动。
[0024] DSID :下行服务标识,用来标识特定的下行捆绑会话(上行捆绑会话使用不同的 机制来标识这种会话)。下行分段或分组可以用DSID标记,以使CM知晓该分段或分组属于 哪个会话。
[0025] PSN:分组序列号,这个编号用于指示在捆绑会话中某个分段或分组相对于该捆绑 会话中其它分段或分组的顺序。用PSN对分段或分组进行标识,以使接收实体知晓如何对这些分段或分组进行重排序。需注意DOCSIS 3.0要求在信道上以递增的PSN顺序发送分 组(例如发射实体可以在信道0上先发送PSN 3然后发送PSN 5,而不能先发送PSN 5再发 送 PSN 3)。
[0026] 信道ID :表示在其上接收分段或分组的信道的编号。分组或分段不用标识信道 ID,因为接收实体必定知晓所接收的信道。
[0027] 本发明可应用于任何捆绑信道通信系统,以便发射和处理从大数据流分割出来的 各个数据块。这种分段可以是或不是本领域技术人员通常所理解的术语“分组”。因此在后 面的讨论中将全部使用“分段”这一术语。
[0028] III、重排序
[0029] 接收实体例如CM维护一个代表任意给定的捆绑会话中下一个期望分段的PSN的 计数或变量。接收到的分段将被标记上用于标识该捆绑会话的PSN和DSID。当CM接收一 个分段时,CM查找与该分段的DSID相关联的捆绑会话。如果该分段的PSN与捆绑会话中 的下一个期望分段的PSN相匹配,该分段将被转发,且通过增加下一个期望的PSN来更新会 话状态。如果该分段的PSN与下一个期望分段的PSN不匹配,基于带有下一个期望分段PSN 的分段在将来的某个时间点能够到达BCS信道中的一个捆绑信道这个假设,该分段将排队 等待以后处理。在这种情况下,不增加下一个期望PSN的计数值。
[0030] 由于多种原因,带有较高PSN的分段可能会在较低PSN分段之前接收到。这些原 因包括:
[0031] •信道拥塞-CMTS将标识为PSN 1的分段在信道0上排队发送,将标识为PSN 2的 分段在信道1上排队发送。但是,如果有一些其它分段排在信道0的前部等待发送,则标识 为PSN 1的分段必须等待,可能发送时间会在标识为PSN 2的分段之后。因此PSN 2分段 会先于PSN 1分段到达。
[0032] •反应时间/速度-如果BCS中的各信道具有不同的特性(交错深度、调制率等), 则在同一时间排队等待发送的分段将在不同时间到达,这是因为这些比特通过“较慢”信道 传送花费的时间较长。
[0033] ·分段尺寸-当所有的比特都达到时,分段只能由CM进行处理。在其它条件相同 的情况下,因此较小尺寸的分段将视作比大尺寸分段先到达而首先得到处理。
[0034] ·信道服务排序-CM能够同时在多个信道上接收分段,但是其对信道进行服务的 顺序造成分段未能按照PSN顺序进行处理。
[0035] ·分段丢失(loss)-带有较低PSN的分段有可能丢失(由于出错、溢出等),造成 带有较高PSN的分段排队直到期满超时或发生一些其它事件迫使CM将缺少的分段当作不 可恢复分段。后面将对这部分进行详细描述。
[0036] ·同一时间可能会出现上述多种情形。
[0037] CM必须缓冲较高PSN的分段直到缺少的(missing)分段到达。如果缺少的分段丢 失,超时或快速丢失检测将略过缺少的分段将其当作不可恢复分段。
[0038] 重排序处理实施例如图2所示。图2展示了接收分段及按需要保存或转发分段的 过程。处理过程开始于步骤205。在步骤210,接收实体例如CM接收分段。在步骤215,读 取该分段的DSID和PSN。在步骤220,接收实体按照DSID的指示查找该分段所属的捆绑会 话。在步骤225,确定接收到的PSN是否与该会话中下一个期望分段的PSN代表值相匹配。[0039] 如果相匹配,则在步骤240将接收到的分段转发给最终用户。还可以选择对该分 段进行其它处理。在步骤对5,为指示下一个期望分段的PSN增加计数值。在步骤250,确 认与计数值增加后的下一个期望PSN相对应的分段是否排在队列中。如果没有,处理过程 返回到步骤210,接收下一个分段。如果在步骤250中确定队列中存在与计数值增加后的下 一个期望PSN相对应的分段,则处理过程转到步骤M0,转发排在队列中的该分段。
[0040] 如果在步骤225中,接收到的分段的PSN大于该会话中的期望PSN,则在步骤230 将该分段排入队列中。后面将结合图3对步骤230进行更详细描述。
[0041] 在步骤235,确定是否存在应当当作丢失分段对待的任何未接收到的分段。这个步 骤将在后面结合图4进行详细描述。之后,处理过程返回步骤210。
[0042] 图3是步骤230 (将接收到的分段排入队列中)的更详细示意图。这一处理过程开 始于步骤310。在步骤320,将接收到的分段写入缓冲器。在步骤330,将缓冲器地址转换为 分段索引。在步骤340,哈希化(hashed)接收到分段的PSN以生成稀疏阵列索引(sparse array index)。在步骤350,将分段索引写入稀疏阵列中由上述步骤340得到的稀疏阵列索 引指定的位置,处理过程结束。
[0043] 在步骤235中,确定先前任何未接收到的分段是否已经丢失,如图4中根据本发明 一实施例的详细描述。处理过程开始于步骤410,之后应用两个检验方式(test)来确认是 否分段应当被认作丢失。在步骤420,应用第一检验:确认在BCS的每一个信道上是否有排 入队列中的分段。如果有则进入步骤440。在该步骤将期望PSN的值提升到与已经接收的 下一个分段相对应的PSN。因此,当队列中排入有足够的分段时(通过每个信道上有一个或 多个排入队列的分段来确定),确定等待中的(即排入队列的)数据量足以认定任何未接收 到的分组已经丢失。这样允许期望的PSN增加计数为下一个接收分段的PSN(步骤440)。 之后,转发队列中的分段(步骤44¾。步骤445包括从队列中移除这些分段,这部分操作将 在后面结合图5详细描述。
[0044] 如果在步骤420确认BCS的每一个信道不全都有排队分段,则处理过程进入步骤 430。在步骤430,应用第二检验:确认指定的未接收到的分组缺失的时间是否大于预定时 长。如果不是,则处理过程在步骤450结束。但是如果缺少的分段缺失的时间已经大于预 定时长,则缺少的分段被认为超时。处理过程已经等待足够长时间(由预定时长所规定), 足以将未接收到的分组当作丢失处理。在步骤460中增加期望PSN的计数值,跳过缺少的 分段。
[0045] 如果在步骤470中确认期望PSN现在所指示的分段是排在当前队列中的,则在步 骤480转发排在队列中的该分段。处理过程之后进入步骤460,再次增加期望PSN的计数 值。只要队列中持续有对应于期望PSN的分段存在(如步骤470中确定),则增加期望PSN 的计数值(步骤460)和转发指示的分段(步骤480)循环继续进行。
[0046] 如果在步骤470中确认队列中没有对应于期望PSN的分段存在,则处理过程返回 步骤430,确认是否有其它缺少的分段已经超时。
[0047] 注意步骤420和430表示两种条件,两者都意味着一个或多个缺少的分段将当作 丢失处理。在本发明的另一个实施例中,可以增加其它检验或使用其它检验替代这两种检 验(test)。
[0048] 图5是根据本发明一实施例的从队列中移除分段的处理过程的流程图。该处理过程开始于步骤510。在步骤520,哈希化(hashed)排入队列中分段的PSN,生成稀疏阵列的 索引。在步骤530,从稀疏阵列中读取分段索引。具体而言,从由上一步骤生成的稀疏阵列 索引所指示的稀疏阵列中的位置读取分段索引。在步骤MO中,将分段索引转换成缓冲器 地址。在步骤550中,从存储器的缓冲器地址处读取分段。处理过程在步骤560结束。
[0049] 以下将通过实施例对上面讨论的处理过程作进一步说明。注意虽然后面的讨论是 以从CMTS到CM经由捆绑信道集下行通信为例来对本发明的处理过程进行描述,但本发明 的处理过程也可应用到上行方向。此外,本发明不限于电缆媒介或DOCSIS相关通信。
[0050] IV.实例
[0051] 以下对本发明实例的操作进行说明。本实例的目的是说明在用于发射数据分段集 合的假设BCS的情况下,本发明如何实现其功能。本实例只是举例说明,不存在限定本发明 范围的意图。
[0052] 假设CM有一个4信道(信道0-¾的接收信道集(RCQ。进一步假设有下行服务 标识为DSID 1的单个捆绑会话,且该会话的BCS包含三个信道(0-2)。CM正等待DSID 1 中期望PSN值为10的下一个分段。下面的表格展示了由CMTS发送的分段的PSN。空白单 元格表示在特定时间和信道上没有分段发送。在本实例中,假设由于信道错误,缺少分组序 列号为PSN 10、15、17和19的分段。
[0053]
[0054] 发生以下事件:
[0055] 在时刻0 :CMTS发送带有PSN 10的分段,但是CM未接收到。
[0056] 在时刻1 :
[0057]-带有PSN 13的分段到达信道0。PSN与期望的下一个PSN不匹配,因此这个接 收到的分段在稍后的处理中被排入队列。
[0058]-带有PSN 11的分段到达信道1。PSN与期望的下一个PSN 10不匹配,排入队 列。
[0059] 在时刻2 :
[0060]-带有PSN 14的分段到达信道0。PSN与期望的下一个PSN 10不匹配,排入队列。
[0061] -CMTS发送带有PSN 15的分段,但是CM未接收到。
[0062]-带有PSN 12的分段到达信道2。PSN与期望的下一个PSN 10不匹配,排入队 列。
[0063]-现在CM在BCS的每一个信道上都有分段在排队,因此它可以假设PSNlO丢失。 带有PSN 11、12、13和14的分段立即被转发。
[0064]-下一个期望PSN被设置为15,CM在各个信道上都没有分段在排队。
[0065] 在时刻3 :
[0066]-带有PSN 16的分段到达信道1。PSN与期望的下一个PSN 15不匹配,排入队 列。
[0067] -CMTS发送带有PSN 17的分段,但是CM未接收到。
[0068] 在时刻4 :
[0069]-带有PSN 20的分段到达信道1。PSN与期望的下一个PSN 15不匹配,排入队 列。
[0070]-带有PSN 18的分段到达信道2。PSN与期望的下一个PSN 15不匹配,排入队 列。
[0071] 在时刻5:
[0072] -CMTS发送带有PSN 19的分段,但是CM未接收到。
[0073] 在将来的时刻N : (N代表到达超时期间)
[0074] -CM超时等待带有PSN 15的分段,假设该分段丢失。
[0075]-带有PSN 16的分段立即被转发。
[0076]—下一个期望PSN被设置为17。
[0077] 在将来的时刻N+1:
[0078] -CM超时等待带有PSN 17的分段,假设该分段丢失。
[0079]-带有PSN 18的分段立即被转发。
[0080]—下一个期望PSN被设置为19。
[0081] 在将来的时刻N+3:
[0082] -CM超时等待带有PSN 19的分段,假设该分段丢失。
[0083]-带有PSN 20的分段立即被转发。
[0084]—下一个期望PSN被设置为21。
[0085] V.本发明的具体实施方式:
[0086] 如上面所讨论,CM需要知晓捆绑会话状态,特别是下一个期望PSN,并为PSN与下 一个期望PSN不相匹配的排队分段提供存储空间。还必需知晓缺少的分段的计时器和或时 间戳。该参数可用于超时处理,当确认缺少的分段是否是不可恢复时,如下面将讨论。
[0087] 分段排队和计时器/时间戳会消耗大量的存储空间,需要的存储空间由所使用的 表达机制所决定。这将增大系统成本(需要更大的存储器来追踪该状态),并由于必需频繁 访问大量数据(造成很大的总线/RAM访问量和击溃(thrashing)高速缓冲存储器)而降 低系统效率。
[0088] 为避免由于本地系统资源原因造成分段丢失所需要的分段和计时器/时间戳的数量,可以根据捆绑信道特性计算得出。可能需要排入队列的最大分段的数量NumEntries 可由下式估算:
[0089] NumEntries = PacketRate氺(MaxDelayMs/1000)氺NumChannels
[0090]其中:
[0091] PacketRate是每秒每信道接收到的分段数量,
[0092] MaxDelayMs是任意分段的最大延迟,以毫秒为单位,
[0093] 和
[0094] NumChannels是BCS中信道的数量。
[0095] 注意当信道负载不对称时,该公式变为:
[0096] NumEntries = AggregatePacketRate氺(MaxDelayMs/1000)
[0097] 其中AggregatePacketRate是在BCS的全部信道上接收分段的速率,以分段/秒 为单位。这样,如果期望的分组速率是每秒每信道8¾分段,最大信道延迟是23ms,且有4 个信道:
[0098] NumEntries = 88000* (23/1000) *4 = 8096 条目(entries) / 捆绑会话
[0099] 如果使用标准双重连接列表(standard doubly linked list)(假设每条目12字 节),将消耗大约%k字节的存储空间/捆绑会话。如果CM需要支持至少16个会话,则将 消耗将近1. 5MB的RAM。
[0100] 组织得不好的分段队列可能导致更差的CM转发性能,因为分段必须按照PSN顺序 转发,但是常常不按PSN顺序接收。CM需要频繁地管理队列(增加/移除/发现分段和计 时器/时间戳),且队列组织会影响操作的执行量。
[0101] 一种存储分段和时间戳以便重排序的方法是使用稀疏阵列(也称为向量)。对于 给定的分段,该阵列可使用分段PSN的哈希值(hash)来访问。在本发明的一实施例中,该稀 疏阵列是16比特值阵列。这是可以选择的,因为它可以是CPU的原比特数(natural size), 在所使用的存储器有限的情况下,它允许CM知晓大量的未完成的重排序分段。其它实施例 可以使用32比特值或更多比特。
[0102] 如果捆绑信道特性(例如,PacketRate,MaxDelayMs和NumChannels)建议存储分 段只需较少的条目,则阵列值可以具有不同尺寸(例如8比特)。如果有较多信道,则需要 更大的条目(例如32比特)。硬件实施可选择地使用任意断的比特尺寸(例如12比特), 定制到与可选择的硬件环境相匹配。
[0103] 如果PSN是16比特值,意味着直接映射稀疏阵列将有64k个条目;如果一个 条目是16比特长,将消耗12¾字节。这样效率会较差,虽然只有足够的分段需要满足 MaxDelayMs值(在先前的实例中差不多池个条目)。结果,稀疏阵列的尺寸比64k条目小。
[0104] 注意在软件实现上,可以方便地使稀疏阵列尺寸为2的次幂(a power oftwo)。这 样使得稀疏阵列索引和PSN相互一致地绕回零,使追踪当前偏移更容易。硬件实现上(或 更复杂的软件实现)能够允许稀疏阵列尺寸不同于2的次幂(a power of two)。
[0105] 由上式计算得到的NumEntries可以按需要向上舍入或向下舍入,以使其为2的次 幂(向下舍入使用较少的存储空间但是具有不能缓冲足够多分段的风险;向上舍入要使用 较多的存储空间,但是保证不会由于在高分段速率下因缓冲器约束而丢弃分段)。除非在有 限压力测试中,高分段速率是不太可能的,在这种情况下向下舍入是可以接受的。[0106] 图6所示为基于先前的重排序实例的稀疏阵列的状态。该稀疏阵列具有M个条 目。注意在所示的实施例中,Oxffff是用于指示“空时隙(slot empty)”的特殊值,“空时 隙(slot empty)”表示分段未排入队列,超时未激活。如果毫秒时钟计数是0X7ffT (将使 Oxffff得以存储),则时钟计数增加到0x0000,并存储0x8000。这将造成分段缓冲时间比 最大超时(timeout)长1毫秒,但是这一差异是DOCSIS规范所允许的。
[0107] 稀疏阵列中的这些条目由与分段关联的PSN来索引。在本发明的一实施例中,哈 希值只是由相等于阵列尺寸的模数简化后的PSN :
[0108] SparseArrayIndex = PSN mod ArraySize
[0109] 因此,如果阵列尺寸是4096,则PSN 1,4098和7121的阵列索引如下:
[0110] 稀疏阵列索引=1 mod 4096 = 1
[0111]稀疏阵列索引=4098 mod 4096 = 2
[0112]稀疏阵列索引=7121 mod 4096 = 3025
[0113] 分段索引N存储于稀疏阵列条目中,是由分段缓冲地址计算得出;当在下行信道 接收到一个分段,可以通过直接存储访问(DMA)存入缓冲器。在本实例中,缓冲器是通过 32-比特地址进行寻址。这一地址过长以至于无法存储到稀疏阵列条目中可用的15-比特 字段中。然而,由于DMA缓冲器在存储器中是邻近的,并且具有相同的尺寸,分段索引可以 从存储该分段的缓冲器的地址计算得出。
[0114] SegmentIndex = (BufferAddress-BaseAddress)/BufferSize
[0115] 例如,如果DMA缓冲器的BaseAddress是0x80201380,每个缓冲器是2048字节,则 地址为0x80205b80和0x80226b80的缓冲器的分组索引为
[0116] SegmentIndex = (0x80205b80_0x80201380)/2048 = 9
[0117] SegmentIndex = (0x80226b80_0x80201380)/2048 = 75
[0118] 同样,从其索引中可以计算出指针:
[0119] BufferAddress = (SegmentIndex^BufferSize)+BaseAddress
[0120] 可以使用与先前的实例相同的缓冲器:
[0121] BufferAddress = (9*2048)+0x80201380 = 0x80205b80
[0122] BufferAddress = (75*2048)+0x80201380 = 0x80226b80
[0123] 如前所述,当分段在下行信道中到达,如果PSN与捆绑会话的下一个期望PSN不匹 配,则CM将缓冲该分段并为缺少的分段启动超时计时器。
[0124] CM将缓冲器地址转换为分段索引,并哈希(hash) PSN以查找稀疏阵列中的条目来 存储分段索引。之后,对于从下一个期望PSN到被接收分段的PSN的每一个条目,CM计算 当前毫秒时间(模数15比物,MSB置1),存储该时钟计数以指示间隔形成的时间。该时钟 计数可以当作超时值。
[0125] 例如,如果下一个期望PSN是10,在时刻40带有PSN 13的分段到达,并通过DMA 存入地址为0x802^^80 (分段索引为75)的缓冲器,则稀疏阵列如图7所示。
[0126] 随后,如果缺少的分段之一到达(其在稀疏阵列中有超时值),该分段索引重写超 时值,有效地消掉该条目的超时。例如,在时刻41带有PSN 11的分段到达并存入地址为 0x80205b80的缓冲器(分段索引为9)中,则稀疏阵列如图8所示。
[0127] 如果带有PSN 10和12的分段从未达到(例如由于错误而丢失),一旦MaxDelayMs时间过去,则排在队列中的分段将从队列中释放出来。一旦超时期到或分段从队列中转发, 该条目值置为Oxfffff以指示该时隙目前未使用,如图9所示。
[0128] 注意计时器值和分段索引映射到15-比特(另一比特用于标记其它15个比特是 表示计时器值还是分段索引)仅是示例性的。这个具体设置并不意味着对本发明的限制。 如本领域技术人员所知,其它实施例也是可行的。
[0129] VI、计算环境(computing context)
[0130] 在本发明的实施例中,本文中描述的本发明的处理过程是使用由一个或多个计算 机系统所执行的控制逻辑(软件)来实现的,诸如图10所示的计算机系统1000。计算机系 统1000是能够执行本文所描述的功能的任意一种计算机系统。在本发明的实施例中,这样 的计算机系统整合在通信设备中,诸如CM 130或CMTS 110。
[0131] 计算机系统1000包括一个或多个处理器(也称为中央处理单元,或CPU),如处理 器1004。处理器1004连接至通信总线1006。计算机系统1000还包括存储器1008、如随机 存储器(RAM)。主存储器1008存储有控制逻辑(计算机软件)和数据。
[0132] 计算机系统1000还包括一个或多个辅存储装置1010。辅存储装置1010可包括例 如硬盘驱动器1012和或移动存储装置或驱动器1014。移动存储驱动器1014可以是紧凑型 盘片驱动器、光存储装置等。
[0133] 移动存储驱动器1014与移动存储单元1018交互。移动存储单元1018包括计算 机可用或可读存储媒介,其上存储有计算机的(控制逻辑)和或数据。移动存储单元1018 可以是光盘、闪存装置或任何其它计算机数据存储装置。移动存储驱动器1014以现有的方 式读和或写移动存储单元1018。
[0134] 计算机系统1000还包括通信或网络接口 10M。通信接口 102使能计算机系统 1000与远程设备进行通信。例如,通信接口 IOM允许计算机系统1000通过通信网络或路 径10¾进行通信。网络接口 IOM可以通过有线或无线连接来接驳。
[0135] 控制逻辑可以经由通信路径10¾传送给计算机系统1000和从计算机系统1000 传出。具体地说,计算机系统1000可以经由通信路径10¾接收和发送由控制逻辑调制的 载波(电磁信号)。
[0136] 任何包括计算机可用或可读媒介、其上存储有控制逻辑(软件)的装置或产品在 本文中称为计算机程序产品或程序存储装置。其包括但不限于,计算机系统1000、主存储器 1008、硬盘1012和或移动存储单元1018。这样的计算机程序产品中存储有控制逻辑,当一 个或多个数据处理装置执行该控制逻辑,能使所述数据处理装置按照本文中描述的本发明 实施例进行操作。具体地说,以上描述的功能,如图2-5所示和相关的文字和实例,能够嵌 入一个或多个计算机程序产品中。
[0137] 除了本文中所描述的这些实施例以外,本发明可以通过软件、硬件和或操作系统 实现。任何适用于执行本文所描述的功能的软件、硬件和操作系统均可使用。
[0138] VII、结束语
[0139] 上面的讨论展示了本发明的以下特征:
[0140] 在队列中增加或移除条目包括读取和写入单个值(例如16-比特)。无需像传统 链接列表那样管理节点指针。
[0141] 查找分段应当存储的位置包括哈希PSN,而无需在排入队列的分段的列表中进行全面搜索。
[0142] 按照PSN顺序转发分段包括增加索引值(下一个期望的PSN),无需走遍链接的列表。
[0143] 采用与分段相同的机制管理超时/计时器,无需分立的存储器或状态。
[0144] 使用减法(CurrentTimeMs-SparseArray [Next PSN] > = MaxDelayMs),CM可以进 行检验以了解计时器是否已到期。
[0145] 虽然以上描述了本发明的各种实施例,应当理解,其目的仅在于举例说明,而非意 图限制本发明。本领域的技术人员知悉,在不离开本发明的精神和范围情况下,在形式上和 细节上还可做各种的改变。因此,本发明的保护范围不当仅局限于以上描述的任一实施例, 而应该依照权利要求及其等同来限定。
Claims (5)
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US84983606P true | 2006-10-06 | 2006-10-06 | |
US60/849,836 | 2006-10-06 | ||
US11/902,603 | 2007-09-24 | ||
US11/902,603 US7751404B2 (en) | 2006-10-06 | 2007-09-24 | Method, system, and computer program product for high performance bonding resequencing |
PCT/US2007/021395 WO2008045321A2 (en) | 2006-10-06 | 2007-10-05 | Method, system, and computer program product for resequencing of data segments received over a bonding channel set |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101485152A CN101485152A (zh) | 2009-07-15 |
CN101485152B true CN101485152B (zh) | 2011-07-20 |
Family
ID=39167029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800250645A CN101485152B (zh) | 2006-10-06 | 2007-10-05 | 用于高性能捆绑重排序的方法、系统及计算机程序产品 |
Country Status (7)
Country | Link |
---|---|
US (2) | US7751404B2 (zh) |
EP (1) | EP2074756B1 (zh) |
KR (1) | KR101008510B1 (zh) |
CN (1) | CN101485152B (zh) |
AT (1) | AT462245T (zh) |
DE (1) | DE602007005502D1 (zh) |
WO (1) | WO2008045321A2 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7916731B2 (en) * | 2006-11-30 | 2011-03-29 | Broadcom Corporation | Method and system for efficient rapid loss detection in a bonding system |
KR100908868B1 (ko) * | 2007-09-28 | 2009-07-21 | 주식회사 넥스지 | 가상 인터페이스를 통해 연결된 서버와 클라이언트사이에서 각 회선별로 트래픽을 분배하여 데이터를전송하는 방법 및 시스템 |
US9219591B2 (en) | 2008-06-23 | 2015-12-22 | Nokia Solutions And Networks Oy | Method and apparatus for providing acknowledgement bundling |
US8488533B2 (en) * | 2008-06-23 | 2013-07-16 | Nokia Corporation | Method and apparatus for providing acknowledgment bundling |
US8638796B2 (en) * | 2008-08-22 | 2014-01-28 | Cisco Technology, Inc. | Re-ordering segments of a large number of segmented service flows |
US20100254388A1 (en) * | 2009-04-04 | 2010-10-07 | Oracle International Corporation | Method and system for applying expressions on message payloads for a resequencer |
US9124448B2 (en) * | 2009-04-04 | 2015-09-01 | Oracle International Corporation | Method and system for implementing a best efforts resequencer |
US8578218B2 (en) * | 2009-04-04 | 2013-11-05 | Oracle International Corporation | Method and system for implementing a scalable, high-performance, fault-tolerant locking mechanism in a multi-process environment |
US8661083B2 (en) * | 2009-04-04 | 2014-02-25 | Oracle International Corporation | Method and system for implementing sequence start and increment values for a resequencer |
US20110282980A1 (en) * | 2010-05-11 | 2011-11-17 | Udaya Kumar | Dynamic protection of a resource during sudden surges in traffic |
US9553817B1 (en) * | 2011-07-14 | 2017-01-24 | Sprint Communications Company L.P. | Diverse transmission of packet content |
US9100460B2 (en) * | 2012-06-28 | 2015-08-04 | Adobe Systems Incorporated | Media stream fragment request |
KR101404998B1 (ko) | 2012-08-02 | 2014-06-10 | 주식회사 엑스게이트 | Ip 채널 본딩을 통한 데이터 전송 방법 |
CN109298888A (zh) * | 2018-10-31 | 2019-02-01 | 杭州迪普科技股份有限公司 | 队列的数据存取方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1125499A (zh) * | 1993-06-15 | 1996-06-26 | 艾利森电话股份有限公司 | 重排序方法和设备 |
CN1791069A (zh) * | 2004-11-09 | 2006-06-21 | 阿尔卡特公司 | 输入排队分组交换结构及队列服务规则 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6047364A (en) * | 1997-08-27 | 2000-04-04 | Lucent Technologies Inc. | True modulo addressing generator |
AU4059300A (en) | 1999-04-02 | 2000-10-23 | Qualcomm Incorporated | System and method for prioritizing traffic channel messages |
US6934760B1 (en) * | 2001-02-04 | 2005-08-23 | Cisco Technology, Inc. | Method and apparatus for resequencing of packets into an original ordering using multiple resequencing components |
US20030214949A1 (en) * | 2002-05-16 | 2003-11-20 | Nadim Shaikli | System for reordering sequenced based packets in a switching network |
US8995445B2 (en) * | 2002-12-19 | 2015-03-31 | International Business Machines Corporation | System and method for re-sequencing data packets on a per-flow basis |
US9699102B2 (en) | 2004-08-09 | 2017-07-04 | Arris Enterprises Llc | Very high speed cable modem for increasing bandwidth |
US7489641B2 (en) * | 2005-04-25 | 2009-02-10 | Acterna | Data connection quality analysis apparatus and methods |
US7983295B2 (en) * | 2005-10-28 | 2011-07-19 | Broadcom Corporation | Optimizing packet queues for channel bonding over a plurality of downstream channels of a communications management system |
US7573884B2 (en) * | 2006-03-06 | 2009-08-11 | Texas Instruments Incorporated | Cable modem downstream channel bonding re-sequencing mechanism |
US7916731B2 (en) * | 2006-11-30 | 2011-03-29 | Broadcom Corporation | Method and system for efficient rapid loss detection in a bonding system |
-
2007
- 2007-09-24 US US11/902,603 patent/US7751404B2/en active Active
- 2007-10-05 CN CN2007800250645A patent/CN101485152B/zh active IP Right Grant
- 2007-10-05 KR KR20097001348A patent/KR101008510B1/ko not_active IP Right Cessation
- 2007-10-05 EP EP20070839293 patent/EP2074756B1/en active Active
- 2007-10-05 AT AT07839293T patent/AT462245T/de not_active IP Right Cessation
- 2007-10-05 DE DE200760005502 patent/DE602007005502D1/de active Active
- 2007-10-05 WO PCT/US2007/021395 patent/WO2008045321A2/en active Application Filing
-
2010
- 2010-07-02 US US12/829,545 patent/US7957392B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1125499A (zh) * | 1993-06-15 | 1996-06-26 | 艾利森电话股份有限公司 | 重排序方法和设备 |
CN1791069A (zh) * | 2004-11-09 | 2006-06-21 | 阿尔卡特公司 | 输入排队分组交换结构及队列服务规则 |
Also Published As
Publication number | Publication date |
---|---|
DE602007005502D1 (de) | 2010-05-06 |
US7957392B2 (en) | 2011-06-07 |
EP2074756A2 (en) | 2009-07-01 |
KR101008510B1 (ko) | 2011-01-17 |
US7751404B2 (en) | 2010-07-06 |
EP2074756B1 (en) | 2010-03-24 |
WO2008045321A2 (en) | 2008-04-17 |
AT462245T (de) | 2010-04-15 |
WO2008045321A3 (en) | 2008-07-17 |
US20100265954A1 (en) | 2010-10-21 |
KR20090058499A (ko) | 2009-06-09 |
CN101485152A (zh) | 2009-07-15 |
US20080084873A1 (en) | 2008-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9049218B2 (en) | Stateless fibre channel sequence acceleration for fibre channel traffic over Ethernet | |
US7502869B2 (en) | Intelligent network interface system and method for accelerated protocol processing | |
US8635388B2 (en) | Method and system for an OS virtualization-aware network interface card | |
EP2363996B1 (en) | Hashing algorithm for determining a default kernel receive queue | |
RU2436147C2 (ru) | Усовершенствованный беспроводной usb-протокол и usb-концентратор | |
EP1296485B1 (en) | System and method for hardware based reassembly of a fragmented packet | |
US9178840B2 (en) | Systems and methods for preserving the order of data | |
US6629141B2 (en) | Storing a frame header | |
US5619497A (en) | Method and apparatus for reordering frames | |
TWI242946B (en) | Wireless packet communication apparatus and method | |
US6226680B1 (en) | Intelligent network interface system method for protocol processing | |
CN1883212B (zh) | 在无线mac处理器中提供通过网络连接的数据流传输的方法和装置 | |
US8441940B2 (en) | Parallel packet processor with session active checker | |
US5881245A (en) | Method and apparatus for transmitting MPEG data at an adaptive data rate | |
US6591302B2 (en) | Fast-path apparatus for receiving data corresponding to a TCP connection | |
EP2353017B1 (en) | Packet aggregation and fragmentation at layer-2 over a managed network | |
CA2548966C (en) | Increasing tcp re-transmission process speed | |
US7243284B2 (en) | Limiting number of retransmission attempts for data transfer via network interface controller | |
US7159030B1 (en) | Associating a packet with a flow | |
US6757791B1 (en) | Method and apparatus for reordering packet data units in storage queues for reading and writing memory | |
US9026790B2 (en) | Processing packet streams | |
US7383483B2 (en) | Data transfer error checking | |
US8411677B1 (en) | Method and system for processing layered networking protocol packets | |
US7441006B2 (en) | Reducing number of write operations relative to delivery of out-of-order RDMA send messages by managing reference counter | |
US7860943B2 (en) | Enhanced network direct attached storage controller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
C06 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
C10 | Entry into substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1135528 Country of ref document: HK |
|
GR01 | Patent grant | ||
C14 | Grant of patent or utility model | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1135528 Country of ref document: HK |
|
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20180503 Address after: Singapore Singapore Patentee after: Avago Technologies Fiber IP Singapore Pte. Ltd. Address before: california Patentee before: Zyray Wireless Inc. Effective date of registration: 20180503 Address after: Singapore Singapore Patentee after: Avago Technologies Fiber IP Singapore Pte. Ltd. Address before: california Patentee before: Zyray Wireless Inc. |
|
TR01 | Transfer of patent right |
Effective date of registration: 20190919 Address after: Singapore City Patentee after: Annwa high tech Limited by Share Ltd Address before: Singapore City Patentee before: ANHUA HIGH TECHNOLOGY GENERAL IP (SINGAPORE) COMPANY |
|
TR01 | Transfer of patent right |