CN110198203A - 一种控制数据传输速率的方法 - Google Patents
一种控制数据传输速率的方法 Download PDFInfo
- Publication number
- CN110198203A CN110198203A CN201910516485.2A CN201910516485A CN110198203A CN 110198203 A CN110198203 A CN 110198203A CN 201910516485 A CN201910516485 A CN 201910516485A CN 110198203 A CN110198203 A CN 110198203A
- Authority
- CN
- China
- Prior art keywords
- queue
- message packet
- udp message
- udp
- head
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0002—Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission rate
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/164—Adaptation or special uses of UDP protocol
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种控制数据传输速率的方法,属于网络数据传输技术领域。该方法为数据接收端设置数据传输速率,接收来自数据发送端的UDP数据包,将大于数据接收端传输速率的UDP数据包进行拆封与封装,每间隔1秒,将限量的UDP数据包发送至数据接收端。与现有的FPGA硬件实现数据传输速率控制相比,本发明的优点是:能快速地适应数据接收端多种数据传输速率,提高了数据传输速率控制的灵活性与便利性;大幅降低数据传输速率控制的开发成本和难度。
Description
技术领域
本发明涉及网络数据传输技术领域,具体涉及一种控制数据传输速率的方法。
背景技术
中国专利文献CN 109451541A于2019年3月8日公开了“一种无线网络环境下基于UDP的数据传输速率自适应方法”,它包括:数据发送端收到发送任务,进行分解,将数据内容存储在任务池,同时将任务数据信息送给控制中心;控制中心根据均匀分配的原则将任务信息分配给队列池中当前有效的数据传输队列;数据发送线程池中的发送线程以轮询队列的方式从数据传输队列中进行数据读取并发送;控制中心接收到接收端发送的数据确认报文,控制中心根据数据确认报文,计算数据发送成功率,根据成功率进行发送速率调整;针对没有确认的数据再次放入数据传输队列,并重传。该专利申请利用UDP传输的反馈进行发送速率的控制,最大限度接近当前实际带宽值,实现了数据传输速率的自适应。但是,它只能提升无线信道下数据传输速率、最大限度地利用无线信道带宽,而不能解决数据发送端与数据接收端传输速率不一致的问题。
在某应急通信车内部,使用卫星终端与高速数传电台(以下简称为电台)等两种通信设备建立应急通信,卫星终端为数据发送端,电台为数据接收端。卫星终端与电台通过局域网进行UDP通信,以实现互联互通。一方面,由卫星终端接收数据并转发给电台;另一方面,由电台将卫星终端发来的数据转发给另一部电台。但由于卫星终端与电台之间的通信速率不一致,且卫星终端的通信速率通常高于电台的通信速率,二者间建立UDP通信进行数据传输时容易导致数据丢失。在应急通信车内部可以基于FPGA硬件实现卫星终端和电台之间的数据传输速率控制,解决数据传输速率不一致的问题,当前条件下,这种硬件方法比较有效,但开发成本较高,且难以适应电台具有多种数据传输速率的要求。
发明内容
针对数据发送端与数据接收端之间的通信速率不一致的问题,本发明所要解决的技术问题就是提供一种控制数据传输速率的方法,它能灵活便捷地控制数据传输速率,满足数据接收端不同数据传输速率的要求。
本发明所要解决的技术问题是通过这样的技术方案实现的,它包括以下步骤:
步骤1、给数据接收端设置数据传输速率,每秒发送数据量为字节;
步骤2、数据发送端接收外部数据并生成UDP数据包;
步骤3、将UDP数据包存入队列;
步骤4、判断队列是否为空队列,若为空队列,返回执行步骤2;若不为空队列,则进入下一步;
步骤5、从队列中取出队首UDP数据包,并计算该UDP数据包的长度;若,进入下一步;否则,进入步骤8;
步骤6、对UDP数据包进行拆封与封装,得到UDP数据包集合:
,,
式中,表示经过拆封与封装操作后得到的任一UDP数据包,为自然数,是UDP数据包的长度;
步骤7、将集合中的每个UDP数据包按序存入队列,进入步骤9;
步骤8、将UDP数据包存入队列,进入步骤9;
步骤9、从队列中删除UDP数据包;
步骤10、判断队列是否为空队列,若为空队列,则返回执行步骤4;否则进入步骤11;
步骤11、每间隔1秒,读取队列的队头UDP数据包;
步骤12、将UDP数据包发送至数据接收端;
步骤13、从队列中删除队头UDP数据包,进入步骤10。
本发明采用对UDP数据包进行拆封与封装的方式来控制数据传输速率,与基于FPGA硬件实现数据传输速率控制相比,本发明具有以下优点:
1、本发明通过对UDP数据包进行拆封与封装的方式来控制数据传输速率,能快速地适应数据接收端多种数据传输速率,提高了数据传输速率控制的灵活性与便利性。
2、本发明通过对UDP数据包进行拆封与封装的方式来控制数据传输速率,能大幅降低数据传输速率控制的开发成本和难度。
附图说明
本发明的附图说明如下:
图1为本发明的流程图;
图2为UDP数据包的报文格式;
图3为对UDP数据包拆封与封装的子程序。
具体实施方式
下面结合附图和实施例对本发明作进一步说明:
如图1所示,本发明包括以下步骤:
步骤1,给数据接收端设置单位时间内数据发送总量
数据接收端具有多种数据传输速率,这是数据接收端本身所具备的基本功能,因此,首先通过数据接收端的人机交互接口设置数据传输速率,即设置每秒数据发送总量为字节,的典型取值为9830字节、19660字节、65536字节等。
步骤2,数据发送端接收外部数据并生成UDP数据包
如图2所示,由严伟、潘爱民翻译的《计算机网络(第5版)》(清华大学出版社2012年出版)第六章中指出,UDP数据包由UDP头部和UDP数据等两部分构成。其中,UDP头部由源端口、目标端口、UDP长度、UDP校验和等四部分构成。UDP长度是8字节的UDP头部和UDP数据两部分的总长度。最小的UDP长度是8字节,刚好覆盖UDP头部,最大的UDP长度是65515字节,这是由IP数据包限制的。
每当数据发送端接收到外部发来的数据(长度为字节)后,便按照如图2的所示的UDP数据包格式生成UDP数据包。
步骤3,将UDP数据包插入队列
队列是一种线性链表,它只允许在线性链表的前端进行删除操作,而在线性链表的后端进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。队列具体运算操作见表1:
表1 队列的基本运算操作
序号 | 操作 | 初始条件 | 操作结果 |
1 | 初始化队列(Init_Queue(q)) | 队列q不存在 | 构造一个空队列 |
2 | 插入队列(In_Queue(q, x)) | 队列q已存在 | 插入元素x到队尾,队列发生变化 |
3 | 删除队头(Del_Queue(q)) | 队列q已存在且非空 | 删除队头元素,队列发生变化 |
4 | 读取队头(Read_Queue(q, x)) | 队列q已存在且非空 | 读取队头元素,队列不变 |
5 | 判断为空的操作(Empty_Queue(q)) | 队列q已存在 | 队列不变 |
本发明利用线性链表来生成队列和。队列、采用先进先出的方式,新元素(即等待进入队列的元素)总是被插入到链表的尾部,而读取的时候总是从链表的头部开始读取。
表1中所述的初始化队列、插入队列、删除队头、读取队头、判断为空等操作,均按照由严蔚敏、吴伟民编著的《数据结构(C语言版)》(清华大学出版社1997年出版)第三章所述的方法实现。
若队列还未被创建,则初始化队列,具体操作参见表1中序号1。
数据发送端生成UDP数据包之后,将其存入队列,具体操作参见表1中序号2。
步骤4,判断队列是否为空队列
判断队列是否为空队列,具体操作参见表1中序号5;若队列为空队列,则返回步骤2;否则,执行步骤5。
步骤5,读取队列的队头UDP数据包并计算其长度
读取队列的队头UDP数据包,具体操作见表1中序号4;计算的队头UDP数据包的长度(单位:字节)。
若,则执行步骤6,否则执行步骤8。
步骤6,对的队头UDP数据包进行拆封与封装
本步骤对的队头UDP数据包的拆封与封装规则是:拆封并重新封装后,除最后一个UDP数据包外,其余UDP数据包的长度均为字节;最后一个UDP数据包的长度应小于等于字节,且不允许为8字节(即UDP数据不为空)。
步骤6对的队头UDP数据包进行拆封与封装的子程序如图3所示,包括以下步骤:
在步骤S31,读取设置的每秒发送数据量字节;
在步骤S32,读取队列的队头UDP数据包并计算其长度;
在步骤S33,判断是否大于,若则执行步骤S34,否则执行步骤S310;
在步骤S34,复制UDP数据包数据部分的第1~(K-8)字节,再将第1~(K-8)字节从UDP数据包中删除,并重新计算UDP数据包的长度及校验和;
在步骤S35,利用复制的数据,加上8字节的UDP头部,生成UDP数据包,其长度为字节;
在步骤S36,将UDP数据包存入集合;
在步骤S37,判断是否小于或等于,若是,则执行步骤S38,否则,返回步骤S34;
在步骤S38,判断是否等于8,如是,则执行步骤S310,否则执行步骤S39;
在步骤S39,将UDP数据包存入集合;
在步骤S310,子程序结束。
最终形成由若干个长度小于等于字节的UDP数据包构成的集合:
,,
式中,表示经过拆封与封装操作后得到的任一UDP数据包,为自然数,是UDP数据包的长度。
步骤7,将集合中的每个UDP数据包按序存入队列
若队列还未被创建,则初始化队列,具体操作参见表1中序号1。
将集合中的每个UDP数据包按序存入队列,具体操作见表1中序号2,然后进入步骤9。
步骤8,将的队头UDP数据包存入队列
若队列还未被创建,则初始化队列,具体操作参见表1中序号1。
将的队头UDP数据包存入队列,具体操作见表1中序号2,然后进入步骤9。
步骤9,从队列中删除队头UDP数据包
从队列中删除队头UDP数据包,具体操作见表1中序号3。
步骤10,判断队列是否为空队列
判断队列是否为空队列,具体操作见表1中序号5;若队列为空队列,则返回执行步骤4;否则进入步骤11。
步骤11,每间隔1秒,读取队列的队头UDP数据包
每间隔1秒,读取队列的队头UDP数据包,具体操作见表1中序号4。
步骤12,将UDP数据包发送至数据接收端
数据发送端向数据接收端发送的队头UDP数据包。
步骤13,从队列中删除队头UDP数据包,进入步骤10
从队列中删除队头UDP数据包,具体操作见表1中序号3,然后进入步骤10。
本专利申请中,数据发送端包括并不限于卫星终端,数据接收端包括并不限于电台。正如本申请背景技术中所描述的那样,任意两种通信设备,只要存在因通信双方速率不一致而导致彼此间建立UDP通信进行数据传输时出现数据丢失的条件,则其中一方可视为数据发送端、另一方被视为数据接收端。
Claims (6)
1.一种控制数据传输速率的方法,其特征是,包括以下步骤:
步骤1、给数据接收端设置数据传输速率,每秒发送数据量为字节;
步骤2、数据发送端接收外部数据并生成UDP数据包;
步骤3、将UDP数据包存入队列;
步骤4、判断队列是否为空队列,若为空队列,返回执行步骤2;若不为空队列,则进入下一步;
步骤5、从队列中取出队首UDP数据包,并计算该UDP数据包的长度;若,进入下一步;否则,进入步骤8;
步骤6、对UDP数据包进行拆封与封装,得到UDP数据包集合:
,,
式中,表示经过拆封与封装操作后得到的任一UDP数据包,为自然数,是UDP数据包的长度;
步骤7、将集合中的每个UDP数据包按序存入队列,进入步骤9;
步骤8、将UDP数据包存入队列,进入步骤9;
步骤9、从队列中删除UDP数据包;
步骤10、判断队列是否为空队列,若为空队列,则返回执行步骤4;否则进入步骤11;
步骤11、每间隔1秒,读取队列的队头UDP数据包;
步骤12、将UDP数据包发送至数据接收端;
步骤13、从队列中删除队头UDP数据包,进入步骤10。
2.根据权利要求1所述的一种控制数据传输速率的方法,其特征是:所述队列和队列为线性链表,采用先进先出的方式,等待进入队列的元素被插入到链表的尾部,且从链表的头部开始读取。
3.根据权利要求2所述的一种控制数据传输速率的方法,其特征是,所述队列和队列的运算操作有:
1)、初始化队列,构造一个空队列;
2)、插入队列,插入元素x到队尾,队列发生变化;
3)、删除队头,删除队头元素,队列发生变化;
4)、读取队头,读取队头元素,队列不变;
5)、判断为空的操作,队列不变。
4.根据权利要求1或2所述的一种控制数据传输速率的方法,其特征是,所述UDP数据包由UDP头部和UDP数据两部分构成,其中,UDP头部由源端口、目标端口、UDP长度、UDP校验和构成。
5.根据权利要求4所述的一种控制数据传输速率的方法,其特征是,所述步骤6中,对的队头UDP数据包进行拆封与封装后,除最后一个UDP数据包外,其余UDP数据包的长度均为字节;最后一个UDP数据包的长度应小于等于字节,且其数据长度不允许为0字节。
6.根据权利要求5所述的一种控制数据传输速率的方法,其特征是,所述UDP数据包的拆封与封装方法是:
1)、复制UDP数据包数据部分的第1~(K-8)字节,再将第1~(K-8)字节从UDP数据包中删除,并重新计算UDP数据包的长度及校验和;
2)、利用复制的数据,加上8字节的UDP头部,生成UDP数据包,其长度为字节;
3)、将UDP数据包存入集合;
4)、若UDP数据包的长度大于字节,则继续对数据包进行拆封与封装,直到数据包的长度小于等于字节、且不等于8字节为止;在此过程中,所有因拆封与封装操作而生成的UDP数据包均存入集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910516485.2A CN110198203A (zh) | 2019-06-14 | 2019-06-14 | 一种控制数据传输速率的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910516485.2A CN110198203A (zh) | 2019-06-14 | 2019-06-14 | 一种控制数据传输速率的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110198203A true CN110198203A (zh) | 2019-09-03 |
Family
ID=67754573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910516485.2A Pending CN110198203A (zh) | 2019-06-14 | 2019-06-14 | 一种控制数据传输速率的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110198203A (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1520111A (zh) * | 2003-09-02 | 2004-08-11 | ����ͨѶ�ɷ�����˾ | 局域网内的数据传输方法 |
CN1905456A (zh) * | 2005-07-27 | 2007-01-31 | 华为技术有限公司 | 一种数据帧的传输处理方法 |
US7349337B1 (en) * | 2003-12-12 | 2008-03-25 | Novell, Inc. | Techniques for shaping data transmission rates |
CN101827031A (zh) * | 2010-04-22 | 2010-09-08 | 中兴通讯股份有限公司 | 一种用户数据包协议udp隧道中传输报文的方法及装置 |
CN101911612A (zh) * | 2008-01-08 | 2010-12-08 | 阿克塞斯股份公司 | 分组丢失得以降低的网络卸载 |
CN102137027A (zh) * | 2011-05-03 | 2011-07-27 | 厦门市美亚柏科信息股份有限公司 | 数据的可靠传输方法和装置 |
US8111700B2 (en) * | 2008-09-26 | 2012-02-07 | Fujitsu Limited | Computer-readable recording medium storing packet identification program, packet identification method, and packet identification device |
CN102883372A (zh) * | 2012-08-21 | 2013-01-16 | 中兴通讯股份有限公司 | 一种流量控制方法及终端 |
CN103312719A (zh) * | 2013-06-27 | 2013-09-18 | 博图旭然(北京)科技有限公司 | 网络环境下基于udp的速率自适应传输方法 |
CN106411560A (zh) * | 2016-06-01 | 2017-02-15 | 深圳市永兴元科技有限公司 | 数据传输方法和装置 |
CN108900433A (zh) * | 2018-05-25 | 2018-11-27 | 北京星网锐捷网络技术有限公司 | 一种传输lora报文的方法、终端和服务器 |
-
2019
- 2019-06-14 CN CN201910516485.2A patent/CN110198203A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1520111A (zh) * | 2003-09-02 | 2004-08-11 | ����ͨѶ�ɷ�����˾ | 局域网内的数据传输方法 |
US7349337B1 (en) * | 2003-12-12 | 2008-03-25 | Novell, Inc. | Techniques for shaping data transmission rates |
CN1905456A (zh) * | 2005-07-27 | 2007-01-31 | 华为技术有限公司 | 一种数据帧的传输处理方法 |
CN101911612A (zh) * | 2008-01-08 | 2010-12-08 | 阿克塞斯股份公司 | 分组丢失得以降低的网络卸载 |
US8111700B2 (en) * | 2008-09-26 | 2012-02-07 | Fujitsu Limited | Computer-readable recording medium storing packet identification program, packet identification method, and packet identification device |
CN101827031A (zh) * | 2010-04-22 | 2010-09-08 | 中兴通讯股份有限公司 | 一种用户数据包协议udp隧道中传输报文的方法及装置 |
CN102137027A (zh) * | 2011-05-03 | 2011-07-27 | 厦门市美亚柏科信息股份有限公司 | 数据的可靠传输方法和装置 |
CN102883372A (zh) * | 2012-08-21 | 2013-01-16 | 中兴通讯股份有限公司 | 一种流量控制方法及终端 |
CN103312719A (zh) * | 2013-06-27 | 2013-09-18 | 博图旭然(北京)科技有限公司 | 网络环境下基于udp的速率自适应传输方法 |
CN106411560A (zh) * | 2016-06-01 | 2017-02-15 | 深圳市永兴元科技有限公司 | 数据传输方法和装置 |
CN108900433A (zh) * | 2018-05-25 | 2018-11-27 | 北京星网锐捷网络技术有限公司 | 一种传输lora报文的方法、终端和服务器 |
Non-Patent Citations (1)
Title |
---|
陈佳: "" 基于UDP的数据传输可靠性保障机制研究及应用"", 《中国优秀硕士学位论文全文数据库(电子期刊)》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bruneel | Performance of discrete-time queueing systems | |
CN103907327B (zh) | 电信网络中的不显眼内容压缩 | |
CN110662256B (zh) | 多路径跨协议传输的数据包调度方法及系统 | |
US20030037154A1 (en) | Protocol processor | |
CN101971578B (zh) | Tcp分组间距 | |
CN103283191A (zh) | 信息系统、控制装置、通信方法及程序 | |
CN101502065A (zh) | 用于通过在定序时应用背压来提供服务质量的方法 | |
Neelakanta | A textbook on ATM telecommunications: Principles and implementation | |
CN101998296A (zh) | 一种空口服务质量QoS的控制方法和系统 | |
CN101707590B (zh) | 基于零拷贝方式的tcp/ip协议报文发送方法和装置 | |
CN112019254A (zh) | 一种低轨卫星网络主动式低时延路由方法 | |
EP2439890A1 (en) | Method and system for processing mobile multimedia data broadcasting service | |
WO2021091839A1 (en) | Secured transport in remote mac/phy daa architecture | |
CN110198203A (zh) | 一种控制数据传输速率的方法 | |
CN100546287C (zh) | 一种在即时通信过程中提供好友状态的方法、系统及设备 | |
CN104302008B (zh) | 一种综合时分和缓存占比的无线多跳网络带宽分配方法 | |
CN102368767B (zh) | 一种基于hfc网络的加速互联网上网方法及系统 | |
CN104038557A (zh) | 一种光纤连接的树形网络结构中设备软件批量升级方法 | |
CN102026225B (zh) | 无线网状网络的动态队列管理方法 | |
CN103944892B (zh) | 一种动态虚拟局域网注册方法和设备 | |
CN109152096A (zh) | Eps架构的报文传输方法及计算机可读存储介质 | |
CN109617815A (zh) | Lte核心网的数据采集系统、方法、装置及终端设备 | |
CN105230074B (zh) | 视频缓存切换处理方法、装置和系统 | |
CN108235804A (zh) | 一种网络限速方法、装置和服务器 | |
CN110166382A (zh) | 一种报文转发方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190903 |