CN100589477C - 一种基于绑定链路实现数据发送的方法 - Google Patents

一种基于绑定链路实现数据发送的方法 Download PDF

Info

Publication number
CN100589477C
CN100589477C CN200610078081A CN200610078081A CN100589477C CN 100589477 C CN100589477 C CN 100589477C CN 200610078081 A CN200610078081 A CN 200610078081A CN 200610078081 A CN200610078081 A CN 200610078081A CN 100589477 C CN100589477 C CN 100589477C
Authority
CN
China
Prior art keywords
sublink
transmit status
list item
packet
status table
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.)
Expired - Fee Related
Application number
CN200610078081A
Other languages
English (en)
Other versions
CN101072224A (zh
Inventor
王飞祥
周志雄
Original Assignee
ZTE Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN200610078081A priority Critical patent/CN100589477C/zh
Publication of CN101072224A publication Critical patent/CN101072224A/zh
Application granted granted Critical
Publication of CN100589477C publication Critical patent/CN100589477C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种基于绑定链路实现数据发送的方法,特别适用于通讯领域中使用多链路捆绑技术进行数据发送的通信节点。本发明使用发送调度线程判断从哪些Bundle队列中取数据包;发送执行线程提供子链路状况并发送数据;使用子链路发送状态表作为中间层,存储每条子链路当前的发送信息。本发明所述方法给每条子链路同样多的发送机会,对于带宽大的链路,使用发送机会的比例大些,带宽小的链路,使用发送机会的比例小些,这样就不需要关心每条链路带宽的大小以及因配置改变带来的带宽改变,方法简单、易于实现;另外使用发送状态表存储每条子链路的发送状态,可以避免某条子链路堵塞而引起整个通信节点发送效率下降的情况。

Description

一种基于绑定链路实现数据发送的方法
技术领域
本发明涉及在多条链路上发送属于同一逻辑链路数据的方法,具体是一种基于绑定链路实现数据发送的方法,特别适用于通讯领域中使用多链路捆绑技术进行数据发送的通信节点。
背景技术
当通信节点间存在多条链路时,为统一使用这些链路的带宽,可以采用MP(Multilink-PPP,RFC1990)协议将多条链路捆绑在一起作为一个Bundle(绑定链路),这时对于上层应用看到的就只有一条链路,这样可以有效的利用节点间所有链路的带宽。
在移动通讯网中,BTS(基站收发信机)与BSC(基站控制器)之间的物理连接一般会使用多条E1线,每个E1线的带宽被32个传输时隙平分。BTS或BSC中的上层业务模块可以根据某些原则,比如Qos要求或者区分信令/媒体流,来选择使用某一个Bundle来传输数据,一个Bundle由多条HDLC链路捆绑而成,一条HDLC链路可能包含1~32个时隙;通过系统管理后台增删Bundle对应子链路集合中的成员,也可以改变每条HDLC链路对应时隙个数,因此每个Bundle和HDLC的带宽都是可以动态配置的。
每一个Bundle对应一个Bundle发送队列,上层业务模块将所有需要在同一Bundle上发送的MP分片包按顺序入队,发送调度模块从队列中取包,选择Bundle对应子链路集中的某一HDLC,将数据包交给该HDLC发送。因为各条HDLC的带宽可能不同,因此发送调度模块需要参考各条HDLC的带宽大小,合理分配数据包到各条HDLC链路上,以保证不出现某些HDLC溢出而某些HDLC空闲的情况。
发送调度模块可以采取的一种调度方法是:每条HDLC有一个单独的发送队列,调度方法的原则是,在单位时间内入队到各HDLC发送队列中的数据量之比应当尽可能的接近HDLC带宽比,这样才能达到公平利用每条HDLC发送能力的目的。
这种选择发送HDLC的方法有以下缺点:
一、必须有定时器来定位单位时间,定时器超时后将各条HDLC的发送统计值清零,对于由网络处理器或FPGA实现的多链路发送模块,定时器不易获得;
二、如果HDLC数量较多,HDLC发送队列的管理将消耗大量的内存空间;
三、每条HDLC对应的时隙是可以动态调整的,因此一个Bundle所包含的子链路集成员间的带宽比有可能发生变化,在变化发生以后,发送调度模块需要重新比对HDLC带宽比和发送统计值,方法复杂。
发送调度模块还可以采用另一种相对简单的方法:从某一Bundle发送队列中取MP分片包后,查Bundle与HDLC对应表,获得此Bundle对应的所有HDLC,发送调度模块依次查询这些HDLC的链路情况,如果发现某条HDLC空闲,就选择此HDLC发送。
这种方法的缺点是,当发送调度模块从Bundle发送队列中取出MP分片包后,如果前一时刻有短暂的突发数据,那么此时Bundle对应的所有HDLC链路就有可能都处于忙状态,此时有三种处理办法:
1、数据包丢弃,这样Bundle发送队列就没有起到缓冲的作用;
2、将MP分片包再入队,放置在队尾,因为MP协议是按照MP分片包中的序号在接收端组包,所以MP分片包在队列中位置的改变,将引起接收方组包时较大的时延;
3、一直轮询此Bundle所有HDLC链路状态,直到有一个HDLC链路空闲为止,这样做的缺点是发送调度模块在此期间无法为其它Bundle发送队列服务,即使其它Bundle对应的HDLC链路处于空闲状态。
发明内容
本发明的目的是在多链路发送技术方面,提供一种基于绑定链路实现数据发送的方法,克服现有技术中存在的上述发送方法的种种缺点,达到方法简单,易于实现,公平高效的目的。
本发明提出的数据发送方法,主要构思是使用发送调度线程判断从哪些Bundle队列中取数据包;发送执行线程提供子链路状况并发送数据;使用子链路发送状态表作为中间层,存储每条子链路当前的发送信息。
本发明具体是这样实现的:
一种基于绑定链路实现数据发送的方法,包括:
建立绑定链路发送队列,每个绑定链路对应一个发送队列;
其特征在于,还包括如下处理:
建立子链路发送状态表,一条子链路对应一个表项,所有表项按照子链路号顺序排列,所述子链路发送状态表中的每个表项包含:子链路是否被配置使用的字段、子链路是否正处于等待发送状态的字段、当前数据包已发送字节数的字段、当前数据包剩余待发送字节数的字段、指向存储待发送数据包内容内存的字段;
建立子链路的硬件发送缓存,所述硬件发送缓存的字节数固定;
建立发送调度线程,根据子链路发送状态表选择从哪个绑定链路的发送队列中取包,具体包括以下步骤:
步骤一、检查子链路发送状态表中某个表项中的子链路是否被配置使用的字段,若此子链路没有被配置使用,转向下一个表项处理;
步骤二、检查子链路发送状态表中某个表项中的子链路是否正处于等待发送状态的字段,若此子链路处在等待发送状态,转向下一个表项处理;
步骤三、根据子链路与绑定链路的对应关系,获取此子链路对应的绑定链路号,并从此子链路对应的绑定链路发送队列中取数据包;
步骤四、将数据包信息存入子链路发送状态表,修改此子链路发送状态为不可用;
步骤五、继续检查子链路发送状态表中下一个子链路的状态;
建立发送执行线程,循环检查所有配置的子链路情况,并将数据包内容拷贝到硬件发送缓存中。
所述发送执行线程执行如下处理:
步骤一、循环检测子链路发送状态表中的每个表项,直到找到一条子链路有数据包等待发送;
步骤二、检查此子链路是否空闲,若否,则返回步骤一;
步骤三、将子链路发送状态表中指示的数据包内容拷贝到硬件发送缓存,通知硬件发送;
步骤四、清除此子链路对应表项中数据包信息,将此子链路改为可用状态;
步骤五、继续检查子链路发送状态表中下一个表项。
若绑定链路发送队列中的数据包长度都小于硬件发送缓存,省略表项中的当前数据包已发送字节数和当前数据包剩余待发送字节数字段,增加一个字段表示数据包的实际长度;
所述发送调度线程将数据包长度填入子链路发送状态表;
所述发送执行线程在处理每个表项时,直接将整个数据包内容拷贝到硬件发送缓存。
本发明提出的数据发送方法给每条子链路同样多的发送机会,对于带宽大的链路使用发送机会的比例大些,带宽小的链路使用发送机会的比例小些,这样就不需要关心每条链路带宽的大小以及因配置改变带来的带宽改变,方法简单易于实现;另外使用发送状态表存储每条子链路的发送状态,可以避免某条子链路堵塞而引起整个通信节点发送效率下降的情况。
附图说明
图1为本发明实施例中各部分关系图;
图2为本发明实施例中发送调度线程处理流程图;
图3为本发明实施例中发送执行线程处理流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。
本发明的一个实施例是应用在BTS的Abis接口板的MP发送模块,此模块使用Intel的网络处理器作为硬件实现平台,最多支持48个Bundle/128条HDLC/48条E1,每个Bundle可以由1~128个HDLC捆绑组成。
图1描述了本发明实施例中各部分之间的关系:
(1)Bundle发送队列,每个Bundle对应一个发送队列;
(2)HDLC发送状态表,一条HDLC对应一个表项,表项数为此通信节点能够配置的最大HDLC个数,所有表项按照HDLC号顺序排列,每个表项包含五个字段:Using表示此HDLC是否被配置使用,Waiting表示此HDLC是否正处于等待发送的状态,Sended表示当前数据包已发送字节数,Left表示当前数据包剩余待发送字节数,Buffer_pointer表示指向存储待发送数据包内容的内存;
(3)MSF TBUF为网络处理器提供的HDLC发送缓存,发送缓存大小固定,假设为t字节;
(4)发送调度线程,它根据HDLC发送状态表选择从哪个Bundle发送队列中取包;
(5)发送执行线程,它循环检查所有配置的HDLC链路情况,并将数据包内容拷贝到MSF发送缓存中。
发送调度线程循环检查HDLC发送状态表的各个表项,对每个表项的处理流程如图2描述:
第一步,检查Using字段,若此HDLC没有被配置使用,转向下一个表项处理;
第二步,检查Waiting字段,若此HDLC处在等待发送状态,转向下一个表项处理;
第三步,用表项对应HDLC号查找此HDLC对应Bundle号;
第四步,从对应Bundle发送队列中取包,若队列中没有包,转向下一个表项处理;
第五步,将取到的数据包对应的指针写入Buffer_pointer字段;
第六步,将Sended清空,Left置为数据包长度,Waiting字段置为等待状态;
第七步,处理下一个表项。
发送执行线程也循环检查HDLC发送状态表的各个表项,对每个表项的处理流程如图3描述:
第一步,检查Using字段,若此HDLC没有被配置使用,转向下一个表项处理;
第二步,检查Waiting字段,若此HDLC不在等待发送状态,转向下一个表项处理;
第三步,检查MSF提供的HDLC发送状态寄存器,如果HDLC链路忙,转向下一个表项处理,如果HDLC链路空闲,则继续下一步处理;
第四步,检查Sended是否等于零,如果等于零表示此HDLC将要开始一个新数据包的发送,通知MSF,设置偏移量为0,如果Sended不等于零,说明这个数据包已经发送了一部分,设置偏移量为Sended字节;
第五步,根据偏移量,拷贝Buffer_pointer指示数据包对应内容到MSF发送缓存,拷贝长度为t和Left之间的较小值;
第六步,Sended自加min(t,Left),Left自减min(t,Left);
第七步,如果Left不等于零说明此数据包还有数据等待下一次发送,转向下一个表项处理;
第八步,如果Left等于零已经发送完毕,通知MSF,将Waiting置为非等待状态;
第九步,处理下一表项。
在具体实施本发明的技术方案时,根据实际情况,子链路发送状态表表项内容可以有所不同,例如如果确定Bundle队列中的数据包长度都小于硬件的发送缓存,表项中的Sended和Left字段都可以省略,增加一个字段表示数据包的实际长度即可,对应的发送调度线程将数据包长度填入HDLC发送状态表,发送执行线程在处理每个表项时,就无需判断此数据包是否已经被发送了一部分,直接将整个数据包内容拷贝到硬件发送缓存即可。虽然表项内容可能与本发明的实施例不同,但是只要使用子链路发送状态表作为中间层,存储子链路发送过程中的临时信息,都应在本发明的保护范围内。

Claims (3)

1、一种基于绑定链路实现数据发送的方法,包括:
建立绑定链路发送队列,每个绑定链路对应一个发送队列;
其特征在于,还包括如下处理:
建立子链路发送状态表,一条子链路对应一个表项,所有表项按照子链路号顺序排列,所述子链路发送状态表中的每个表项包含:子链路是否被配置使用的字段、子链路是否正处于等待发送状态的字段、当前数据包已发送字节数的字段、当前数据包剩余待发送字节数的字段、指向存储待发送数据包内容内存的字段;
建立子链路的硬件发送缓存,所述硬件发送缓存的字节数固定;
建立发送调度线程,根据子链路发送状态表选择从哪个绑定链路的发送队列中取包,具体包括以下步骤:
步骤一、检查子链路发送状态表中某个表项中的子链路是否被配置使用的字段,若此子链路没有被配置使用,转向下一个表项处理;
步骤二、检查子链路发送状态表中某个表项中的子链路是否正处于等待发送状态的字段,若此子链路处在等待发送状态,转向下一个表项处理;
步骤三、根据子链路与绑定链路的对应关系,获取此子链路对应的绑定链路号,并从此子链路对应的绑定链路发送队列中取数据包;
步骤四、将数据包信息存入子链路发送状态表,修改此子链路发送状态为不可用;
步骤五、继续检查子链路发送状态表中下一个子链路的状态;
建立发送执行线程,循环检查所有配置的子链路情况,并将数据包内容拷贝到硬件发送缓存中。
2、如权利要求1所述的基于绑定链路实现数据发送的方法,其特征在于:
所述发送执行线程执行如下处理:
步骤一、循环检测子链路发送状态表中的每个表项,直到找到一条子链路有数据包等待发送;
步骤二、检查此子链路是否空闲,若否,则返回步骤一;
步骤三、将子链路发送状态表中指示的数据包内容拷贝到硬件发送缓存,通知硬件发送;
步骤四、清除此子链路对应表项中数据包信息,将此子链路改为可用状态;
步骤五、继续检查子链路发送状态表中下一个表项。
3、如权利要求1所述的基于绑定链路实现数据发送的方法,其特征在于:
若绑定链路发送队列中的数据包长度都小于硬件发送缓存,省略表项中的当前数据包已发送字节数和当前数据包剩余待发送字节数字段,增加一个字段表示数据包的实际长度;
所述发送调度线程将数据包长度填入子链路发送状态表;
所述发送执行线程在处理每个表项时,直接将整个数据包内容拷贝到硬件发送缓存。
CN200610078081A 2006-05-09 2006-05-09 一种基于绑定链路实现数据发送的方法 Expired - Fee Related CN100589477C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200610078081A CN100589477C (zh) 2006-05-09 2006-05-09 一种基于绑定链路实现数据发送的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200610078081A CN100589477C (zh) 2006-05-09 2006-05-09 一种基于绑定链路实现数据发送的方法

Publications (2)

Publication Number Publication Date
CN101072224A CN101072224A (zh) 2007-11-14
CN100589477C true CN100589477C (zh) 2010-02-10

Family

ID=38899212

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200610078081A Expired - Fee Related CN100589477C (zh) 2006-05-09 2006-05-09 一种基于绑定链路实现数据发送的方法

Country Status (1)

Country Link
CN (1) CN100589477C (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101753334B (zh) * 2008-12-02 2013-10-30 智邦科技股份有限公司 网络系统的工作管理与排程方法
CN101583193B (zh) * 2009-06-24 2012-03-21 中国科学院计算技术研究所 一种lte系统中基站端上行无线资源分配方法及装置
CN101854396B (zh) * 2010-05-31 2014-03-19 中兴通讯股份有限公司 Mlppp组带宽容量的处理方法和装置
CN102436400A (zh) * 2011-12-06 2012-05-02 曙光信息产业股份有限公司 零拷贝驱动的实现方法和装置
US10686709B2 (en) 2014-07-14 2020-06-16 Qualcomm Incorporated Methods and apparatus for channel usage indication
CN106209880A (zh) * 2016-07-21 2016-12-07 深圳羚羊极速科技有限公司 一种多线路传输流媒体数据的方法
CN106713175B (zh) * 2017-02-07 2020-09-18 北京百卓网络技术有限公司 Sdtp客户端及其数据发送方法与sdtp数据系统
CN111212451A (zh) * 2019-12-26 2020-05-29 曙光信息产业股份有限公司 一种切换网络传输通道的方法和装置

Also Published As

Publication number Publication date
CN101072224A (zh) 2007-11-14

Similar Documents

Publication Publication Date Title
CN100589477C (zh) 一种基于绑定链路实现数据发送的方法
US8505013B2 (en) Reducing data read latency in a network communications processor architecture
US7505410B2 (en) Method and apparatus to support efficient check-point and role-back operations for flow-controlled queues in network devices
US6714553B1 (en) System and process for flexible queuing of data packets in network switching
CN103905300B (zh) 一种数据报文发送方法、设备及系统
US8514874B2 (en) Thread synchronization in a multi-thread network communications processor architecture
US6522188B1 (en) High-speed data bus for network switching
CN101136854B (zh) 一种实现数据包线速处理的方法和装置
WO2012162949A1 (zh) 一种报文重组重排序方法、装置和系统
US20080240111A1 (en) Method and apparatus for writing network packets into computer memory
US8910171B2 (en) Thread synchronization in a multi-thread network communications processor architecture
WO1999053646A2 (en) System and process for application-level flow connection of data processing networks
CN101789908B (zh) 分片报文接收处理方法及装置
WO2000060819A1 (en) Process for automatic detection of and quality of service adjustment for bulk data transfers
US20110225394A1 (en) Instruction breakpoints in a multi-core, multi-thread network communications processor architecture
CN102811176B (zh) 一种数据流量控制方法和装置
CN102868635A (zh) 多核多线程的报文保序方法及系统
US20230127722A1 (en) Programmable transport protocol architecture
CN102916902A (zh) 数据存储方法及装置
CN111274173A (zh) 一种基于zynq的多节点srio通信设计方法及装置
WO2011083445A2 (en) Memory management using packet segmenting and forwarding
US20020154639A1 (en) System and process for providing auxiliary information for a packet-switched network of shared nodes using dedicated associative store
CN105871761A (zh) 一种高阶矩阵开关、片上网络及通信方法
CN115344522A (zh) 消息转换通道、消息转换装置、电子设备和交换设备
CN1079854A (zh) 无连接服务器

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
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Zhao Yankun

Inventor before: Wang Feixiang

Inventor before: Zhou Zhixiong

TR01 Transfer of patent right

Effective date of registration: 20171016

Address after: 061000 Cangzhou city of Hebei Province, the Canal Zone West Village Street Garden Fu District 5 Building 3 unit 502

Patentee after: Zhao Yankun

Address before: 518057 Nanshan District science and Technology Industrial Park, Guangdong high tech Industrial Park, ZTE building

Patentee before: ZTE Corporation

TR01 Transfer of patent right
CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 541001 No. 147, Diecai, the Guangxi Zhuang Autonomous Region District, Guilin, Zhongshan North Road

Patentee after: Zhao Yankun

Address before: 061000 Cangzhou city of Hebei Province, the Canal Zone West Village Street Garden Fu District 5 Building 3 unit 502

Patentee before: Zhao Yankun

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100210

Termination date: 20180509