用于通过传输协议在测井数据链路上传输数据的方法
【专利摘要】本发明公开了一种用于通过传输协议在测井数据链路上传输数据的方法,所述传输协议包括应用层、位于所述应用层之下的链路层以及位于所述链路层之下的物理层;该方法包括如下步骤:所述链路层接收应用层转发来的应用层报文段,将所述应用层报文段分成若干小段,再将所述若干小段分别封装到至少一个链路层数据帧的有效载荷内,之后将所述链路层数据帧转发到所述物理层由其完成数据传输。本发明方法提高了测井数据传输的效率和吞吐量。
【专利说明】 用于通过传输协议在测井数据链路上传输数据的方法
【技术领域】
[0001]本发明涉及测井数据传输领域,特别涉及一种用于通过传输协议在测井数据链路上传输数据的方法。
【背景技术】
[0002]测井网络主要由井下仪器总线链路,遥传链路、地面链路网络三部分组成,完成地面采集控制命令下传给井下仪器,并将井下仪器采集的数据上传至地面控制中心。传输的数据主要包括下行的数据命令和井下传感器采集的数据。通常下行命令的数据量较低,更多的是上行传感器数据。地面链路网络通常采用高速以太网,井下仪器总线通常采用现场控制总线。遥传链路由长距离测井电缆和两端的终端设备构。受电缆长度、材质结构、工作环境等因素限制,电缆上的通信信号的有效频带通常在200KHZ以内,远比常见的电话线、双绞线、同轴电缆的传输带宽还要窄。为了提高频谱利用率,目前一种有效的方法是采用COFDM方法对通带内的信号进行调制解调,并采用FEC纠错编码的技术。但是,遥传链路的上下行速率仍然较低,而且非对称比较大。遥传电缆受干扰影响大,链路存在随机丢包和突发丢包,链路的往返时延长。
[0003]为了使地面网络设备和各个测井仪器之间容易互联互通,现有的测井网络的遥传链路层协议有采用CAN、PPP或者定制的私有协议。CAN协议封装效率非常低。PPP协议不支持可靠传输,其可靠性只能由上层协议完成。传统的停止等待协议、回退N步协议、普通ARQ协议的传输效率低,不适用于遥传链路。链路层之上采用TCP/IP的网络协议或者私有协议。TCP协议的端到端重传整个报文段将浪费网络带宽资源,同时ACK会造成窄带链路的挤压,增大数据传输延迟。因此,这些方法的不足是之处是协议层次多、各个协议功能单一,总的协议栈较复杂,额外占用的带宽资源和存储资源开销较大。总体效率和吞吐量较低,不适合多样化测井仪器的集成。
【发明内容】
[0004]本发明的目的在于克服现有技术中所存在的上述不足,提供一种数据传输效率和吞吐量较高的用于通过传输协议在测井数据链路上传输数据的方法。
[0005]为了实现上述发明目的,本发明采用的技术方案是:一种用于通过传输协议在测井数据链路上传输数据的方法,所述传输协议包括应用层、位于所述应用层之下的链路层以及位于所述链路层之下的物理层;该方法包括如下步骤:
所述链路层接收应用层转发来的应用层报文段,将所述应用层报文段分成若干小段,再将所述若干小段分别封装到至少一个链路层数据帧的有效载荷内,之后将所述链路层数据帧转发到所述物理层由其完成数据传输。
[0006]优选的,所述应用层将接收的数据加上首部封装成所述应用层报文段,所述应用层报文段包括首部HeaderS和装载所述数据的有效载荷PayloadS,其中所述首部HeaderS包括如下字段: Flag:标识字段,用于标示一个报文段起始同步开始;
Lens:长度字段,用于指示应用层报文段中报文载荷的长度;
Tools ID:测井仪器编号字段,用于标识仪器的编号指明数据来源于该编号的仪器; Seq:报文段序号,用于表示数据帧所在的报文段序号;
Checksum:校验和,用于计算报文段的校验和。
[0007]优选的,所述链路层数据帧包括如下字段:
HeaderF:链路层数据巾贞首部;
PayloadF:有效载荷,链路层数据帧的有效载荷帧最大长度记为MTU;
FCS:帧校验和,采用物理层FEC码对帧数据进行校验。
[0008]优选的,所述链路层数据帧首部HeaderF包括如下字段:
Type:帧类型字段,占用2个比特,用于标识帧的类型,分为数据帧、单一确认帧、捎带确认帧、信令帧四种类型;
Seq,报文段序号,用于表示数据帧所在的报文段序号;
Lenf,载荷长度,表示当前帧内有效载荷的长度;
Id,巾贞号,表不当前巾贞在报文段中的分组序号;
Frag尾巾贞标记,当取O时表示不是当前报文段的最后一巾贞;当取I时,当前巾贞是尾中贞,即当前报文段的最后一帧;
AckBitArray,负确认NACK的各个确认比特位,共占用N个比特,顺次对应巾贞号,当其中一比特为O,表示对应数据巾贞没有被接收端收到,当该比特为I,表示接收端已经收到对应的数据帧。
[0009]优选的,所述链路层直接获取所述应用层和/或所述物理层的参数数据。
[0010]进一步的,所述参数数据至少包括应用层报文段的序号、物理层的上行速率、下行速率、上行丢包率、下行丢包率、信噪比其中之一。
[0011]优选的,当测井数据链路上的发送端发送数据时,所述链路层将接收到的当前应用层报文段分成一个或者多个数据帧封装然后发送到所述物理层,如果发送的是当前应用层报文段的第一个数据帧,则启动移除超时定时器设置第一预定时间,在所述第一预定时间内,若当前应用层报文段的所有数据帧已发送完,则保留当前应用层报文段的所有数据帧直到所述第一预定时间置为零后清除当前应用层报文段的所有数据帧。
[0012]优选的,当所述发送端接收到测井数据链路上的接收端发送来的NACK确认帧后,提取NACK确认帧的确认位组,如果所述确认位组的某一比特位为0,表明与其位置对应的帧号的所述当前应用层报文段的数据帧未被接收端成功接收,需要发送端重传该数据帧,此时发送端的链路层启动移除超时定时器设置第二预定时间,在所述第二预定时间内,重传所述当前应用层报文段的未被接收端成功接收的数据帧,如果超过所述第二预定时间或者预定的重传次数,所述当前应用层报文段的未被接收端成功接收的数据帧仍然未被接收端成功接收,则清除所述当前应用层报文段的所有数据帧并将所述第二预定时间重置为零。
[0013]优选的,当测井数据链路上的接收端接收数据时,所述接收端在预定时间内接收到所述当前应用层报文段的所有数据帧后,将完整的所述当前应用层报文段交给所述应用层转发,否则按照确认策略进行确认发送NACK确认帧。
[0014]进一步的,所述接收端按照确认策略进行确认发送NACK确认帧具体为:
接收端的链路层生成NACK确认帧时,将已经收到的数据帧对应的确认位组的比特位置为1,将未收到的数据帧对应的确认位组的比特位置为0,最终封装成NACK确认帧,返给数据帧的发送端;
当接收端在预定次数内发送NACK确认帧后仍然未收到发送端重传的丢失的数据帧,则将所述当前应用层报文段的所有数据帧全部清除。
[0015]与现有技术相比,本发明的有益效果:本发明采用物理层、链路层和应用层的三层精简结构的传输协议,设计了协议精简的链路层,为地面网络和井下仪器网络构建透明的隧道通路,链路层实现尽最大努力的传输数据,总的协议栈较简单,占用的带宽资源和存储资源开销较小,总体效率和吞吐量较高,适用于不同井下总线的传输,数据传输具有较好的可靠性。
[0016]【专利附图】
【附图说明】:
图1是本发明实施例中的结构示意图。
[0017]图2是本发明实施例中的分组格式及封装示意图;
图3是本发明实施例中的跨层参数获取示意图;
图4是本发明实施例中的发送端发送数据流程图;
图5是本发明实施例中的发送端处理接收到的NACK确认帧的流程图;
图6是本发明实施例中的接收端接收数据流程图;
图7是本发明实施例中的接收端生成NACK确认帧的示意图。
【具体实施方式】
[0018]下面结合【具体实施方式】对本发明作进一步的详细描述。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本
【发明内容】
所实现的技术均属于本发明的范围。
[0019]本发明的用于通过传输协议在测井数据链路上传输数据的方法,所述传输协议包括应用层、位于所述应用层之下的链路层以及位于所述链路层之下的物理层;该方法包括如下步骤:
所述链路层接收应用层转发来的应用层报文段,将所述应用层报文段分成若干小段,再将所述若干小段分别封装到至少一个链路层数据帧的有效载荷内,之后将所述链路层数据帧转发到所述物理层由其完成数据传输。
[0020]优选的,所述应用层将接收的数据加上首部封装成所述应用层报文段,所述应用层报文段包括首部HeaderS和装载所述数据的有效载荷PayloadS,其中所述首部HeaderS包括如下字段:
Flag:标识字段,用于标示一个报文段起始同步开始;
Lens:长度字段,用于指示应用层报文段中报文载荷的长度;
Tools ID:测井仪器编号字段,用于标识仪器的编号指明数据来源于该编号的仪器; Seq:报文段序号,用于表示数据帧所在的报文段序号;
Checksum:校验和,用于计算报文段的校验和。
[0021]优选的,所述链路层数据帧包括如下字段: HeaderF:链路层数据巾贞首部;
PayloadF:有效载荷,链路层数据帧的有效载荷帧最大长度记为MTU;
FCS:帧校验和,采用物理层FEC码对帧数据进行校验。
[0022]优选的,所述链路层数据帧首部HeaderF包括如下字段:
Type:帧类型字段,占用2个比特,用于标识帧的类型,分为数据帧、单一确认帧、捎带确认帧、信令帧四种类型;
Seq,报文段序号,用于表示数据帧所在的报文段序号;
Lenf,载荷长度,表示当前帧内有效载荷的长度;
Id,巾贞号,表不当前巾贞在报文段中的分组序号;
Frag尾巾贞标记,当取O时表示不是当前报文段的最后一巾贞;当取I时,当前巾贞是尾中贞,即当前报文段的最后一帧;
AckBitArray,负确认NACK的各个确认比特位,共占用N个比特,顺次对应巾贞号,当其中一比特为O,表示对应数据巾贞没有被接收端收到,当该比特为I,表示接收端已经收到对应的数据帧。
[0023]优选的,所述链路层直接获取所述应用层和/或所述物理层的参数数据。
[0024]进一步的,所述参数数据至少包括应用层报文段的序号、物理层的上行速率、下行速率、上行丢包率、下行丢包率、信噪比其中之一。
[0025]优选的,当测井数据链路上的发送端发送数据时,所述链路层将接收到的当前应用层报文段分成一个或者多个数据帧封装然后发送到所述物理层,如果发送的是当前应用层报文段的第一个数据帧,则启动移除超时定时器设置第一预定时间,在所述第一预定时间内,若当前应用层报文段的所有数据帧已发送完,则保留当前应用层报文段的所有数据帧直到所述第一预定时间置为零后清除当前应用层报文段的所有数据帧。
[0026]优选的,当所述发送端接收到测井数据链路上的接收端发送来的NACK确认帧后,提取NACK确认帧的确认位组,如果所述确认位组的某一比特位为0,表明与其位置对应的帧号的所述当前应用层报文段的数据帧未被接收端成功接收,需要发送端重传该数据帧,此时发送端的链路层启动移除超时定时器设置第二预定时间,在所述第二预定时间内,重传所述当前应用层报文段的未被接收端成功接收的数据帧,如果超过所述第二预定时间或者预定的重传次数,所述当前应用层报文段的未被接收端成功接收的数据帧仍然未被接收端成功接收,则清除所述当前应用层报文段的所有数据帧并将所述第二预定时间重置为零。
[0027]优选的,当测井数据链路上的接收端接收数据时,所述接收端在预定时间内接收到所述当前应用层报文段的所有数据帧后,将完整的所述当前应用层报文段交给所述应用层转发,否则按照确认策略进行确认发送NACK确认帧。
[0028]进一步的,所述接收端按照确认策略进行确认发送NACK确认帧具体为:
接收端的链路层生成NACK确认帧时,将已经收到的数据帧对应的确认位组的比特位置为1,将未收到的数据帧对应的确认位组的比特位置为0,最终封装成NACK确认帧,返给数据帧的发送端;
当接收端在预定次数内发送NACK确认帧后仍然未收到发送端重传的丢失的数据帧,则将所述当前应用层报文段的所有数据帧全部清除。
[0029]遥传测井链路是测井网络中的关键部分,是制约井下仪器网络与地面控制网络通信的瓶颈链路。针对遥传链路(即测井数据链路)的特点,本发明采用精简的传输协议,设计了链路层协议,采用精简的分组格式减小带宽消耗,采用无确认、负确认的模式减小下行链路的带宽的压力,提高瓶颈链路的利用率,设计的跨层HARQ机制提高协议之间的数据传输效率和传输的实时性。
[0030]为了最大可能的充分利用上行链路带宽,对抗链路误码丢包导致的吐吞量下降,减小网络协议栈的复杂性。本发明采用物理层、链路层和应用层的三层精简结构,设计了精简的链路层协议,为地面网络和井下仪器网络构建透明的隧道通路,适用于不同井下总线的传输,数据传输具有较好的可靠性。其中,链路层实现尽最大努力的传输数据。链路层协议内容包括分组数据格式、获取跨层参数、发送端的发送流程和重传处理流程、接收端的确认处理流程、超时处理、缓存和队列管理等多个部分组成。
[0031]下面结合一个具体实施例说明本发明:参看图1,测井遥传链路连接地面网络和井下仪器网络,主要是将井下测井仪器采集的数据传输到地面计算机设备。本实施例中的测井数据链路的发送端遥传的井下端,接收端为遥传的地面端。每一端含有发送队列TxQueue,接收队列RxQueue,链路层协议软件部分组成,每端还包括应用层转发器和物理层的编码调制解调器作为链路层的上下层实体。遥传地面端还接入地面网络,遥传的井下端还接入井下网络。为了便于阐述本发明所涉及的链路层协议的实施过程,将遥传井下端作为数据发送端,遥传地面端作为数据接收端,当然也可以反之。
[0032]应用层报文段中各个字段参数选择如下:标识Flag占用4个字节,取值为固定0x5A5A5A5A ;长度Lens占用2个字节。仪器编号Tools ID占用2个字节;报文段序号Seq占用2个字节,用于表示数据帧所在的报文段序号。校验和Checksum占用2个字节,采用CRC-16 (多项式为x16+x12+x5+l)校验用于计算报文段的校验和。有效载荷的最大报文段长度MSS设为1500个字节。因此,应用层App报文段的最大长度为1512个字节。
[0033]链路层帧中各字段参数除Type已经定义外,其余的选择如下:报文段序号Seq占用2个字节,用于表示数据帧所在的报文段序号,成帧封装时,Seq直接从应用层报文段中获取,并填充到链路帧内;载荷长度Lenf占用7个比特;帧号Id占用4个比特;尾帧标记Frag占用I个比特。
[0034]AckBitArray的长度N为14.即占用14个比特。有效载荷的最大长度MTU为108个字节。FCS帧校验和,采用物理层RS码对帧数据进行校验,共占用16个字节,最大可纠错8个字节。链路帧为固定长度128个字节,除首部和帧校验和外,当有效载荷不够108字节时,不够部分需要任意填充(Padding),填充凑够108字节。
[0035]测井遥传电缆采单芯或者多芯用铠装缆线,调制解调器采用C0FDM,上行速率约在200^1150Kbps范围,下行速率约在0.6?I1Kbps范围。误码率P控制低于1(Γ5的范围。
[0036]遥传井下端和遥传地面端采用TI C6415的DSP实现,包括物理层的COFDM调制解调器、链路层和应用层等,下面具体说明该实施例。
[0037]协议数据格式和封装:由于测井遥传链路的物理层采用COFDM调制方式,带有FEC编码,而且下行带宽窄特点,因此,确认帧的长度应该尽量短,产生的确认帧的数量尽量少。基于此,将三层协议的分组格式与链路层协议相结合,应用层报文段被分成更短的小段,每个小段封装到链路帧的有效载荷内。应用层报文段包含了长度、序号等字段,链路帧的首部包含类型、序号、帧号等字段。分组数据格式及其封装过程如图2所示。
[0038]应用层报文段中各个字段说明如下:
Flag:标识字段,用于标示一个报文段起始同步开始。
[0039]Lens:长度字段,用于指示应用层报文段中报文载荷的长度。
[0040]Tools ID:测井仪器编号字段,用于标识仪器的编号,进而指明数据来源于该编号的仪器。
[0041]Seq:报文段序号,用于表示数据帧所在的报文段序号。
[0042]Checksum:校验和,用于计算报文段的校验和。
[0043]PayloadS为有效载荷,最大报文段长度记为MSS。
[0044]链路层的帧结构最多包含七个字段,依据类型不同帧类型不一样。
[0045]Type帧类型字段,占用2个比特,用于标识帧的类型,分为数据帧、单一确认帧、捎带确认帧、信令帧等四种类型。Type的取值指明帧的类型。
[0046]当Type=1B,为捎带确认巾贞,包含了类型Type、序列号Seq、长度Lenf、巾贞号Id、尾中贞标记Frag、确认号Ack、确认位组AckBitsArray,以及携带的载荷数据PayloadF。
[0047]当Type=OlB,为单一数据巾贞,包含了类型Type、序列号Seq、长度Lenf、巾贞号Id、尾中贞标记Frag等五个字段,以及携带的载荷数据PayloadF。
[0048]当Type=1B,为单一确认巾贞的首部包含类型+序列号+确认位组,单一确认巾贞不携带载荷数据。特别适合地面对收到的井下数据段的确认。
[0049]当Type=IlB,为信令帧,用户收发两端交互物理信道参数。
[0050]Seq,报文段序号,用于表示数据帧所在的报文段序号。
[0051 ] Lenf,载荷长度,表示当前帧的内有效载荷的长度。
[0052]Id,帧号,表示当前帧帧在报文段中的分组序号。
[0053]Frag尾帧标记,当取O时表示不是当前报文段的最后一帧;当取I时,当前帧是尾帧,就是当前报文段的最后一帧。
[0054]AckBitArray,负确认NACK的各个确认比特位,共占用N个比特,顺次对应巾贞号。当其中一比特为0,表示对应数据帧没有被接收端收到,当为该比特为1,表示接收端已经收到对应的数据帧。
[0055]PayloadF有效载荷部分,链路帧的有效载荷帧最大长度记为MTU。
[0056]FCS帧校验和,采用物理层FEC码对帧数据进行校验。
[0057]跨层参数获取过程:参看图3,链路层主要获取应用层的报文段序列号Seq,以及物理层的上行速率Rup、下行速率Rdwn、上行丢包率Dup、下行丢包率Ddwn等参数。获取这些参数主要用于链路层帧的封装和数据发送做准备。从应用层数据包内获取序列号,直接填充到链路层数据帧的首部的序列号字段。物理层的上下行速率用于初略地计算报文段的SRTT往返时间,供超时处理用。因为链路层的往返时间比较稳定,SRTT不是帧传输的往返时间,而是以报文传输的往返时间为基础,也就是完整传输一个最大报文段需要的往返时间。
[0058]发送端的报文段移除超时定时器RTO (Remove Time-Out)、接收端的报文段等待超时定时器WTO (Waiting Time-Out)将根据丢包率的变化进行修正重传超时。
[0059]发送端流程:发送端的链路层将序号为Seq的应用层报文段分成一个或者多个数据帧,并放入发队列TxQueue内。如果TxQueue不为空,则查询链路层与物理层之间的发送缓存TxBuffer,如果TxBuffer有空余时,从TxQueue发队列中取出数据巾贞顺次送入发送到缓存TxBuffer中。如果发送的帧是序号为Seq的报文段的第一帧,则启动移除超时定时器RTO(Seq),再将RTO(Seq)放入RTO的列表中。通常情况下,移除定时器RTO为SRTT的α倍,即设置第一预定时间,RTO (Seq)为传输序号为Seq的报文段对应的预定时间,α为超时伸缩因子。当TxBuffer没有空余时,则暂停发送,等待TxBuffer有空余空间后再次发送。发送数据帧的流程如4所示。
[0060]发送端的链路层周期性的检测RTO列表里每一个RTO的值。当RTO(Seq)的值为零时,将序号为Seq的所有链路帧将从TxQueue内移除释放,并停止和清除RTO(Seq)。
[0061]当发送端收到确认巾贞后,提取报文序号Seq和确认巾贞的确认位组AckBitArray。如果确认位组的某一比特位为1,表明与其位置对应帧号的帧已经被接收端成功接收,否则表明对应帧号的帧未被接收,需要发送端重传该帧,并将发送端的移除定时器RTO(Seq)为SRTT的α倍。如果是第一次重传序号为Seq的报文段内的任何一帧,则将重传次数RTN(Seq)=O,否则将RTN(Seq)累加一次。需要重传的数据帧采用立即重传,最大重传次数记为MRTN。当重传次数RTN(Seq)超过最大重传次数MRTN时,存放在发送队列TxQueue内序号为Seq的报文段的所有数据帧将被移除,同时并停止和清除RTO(Seq)。发送端收到确认帧后的处理流程如图5所示。当物理层误码率增加,也就是丢包率增加。当丢包率每增加10倍时,RTO也随着增加I倍,从而增大重传的概率,提高数据传输的可靠性。
[0062]接收端处理流程:接收端收到数据帧后,提取该帧的序号Seq、帧号IcU尾帧标记Frag,并放入接收队列RxQueue。当接收到巾贞属于当前的报文段中的第一巾贞或者第一次接收报文段中任何一帧时,则启动接收等待定时器WTO(Seq),并插入WTO的列表。WTO(Seq)设为SRTT的β倍,β为扩展因子,即设置第二预定时间。扫描接收队列内的所有序号为Seq-1的帧的帧号是否连续,当帧号连续且报文段Seq完整,则将报文段交给应用层软件转发,否则发送NACK确认帧。
[0063]当收到的数据帧是序号为Seq的报文中的最后一帧(Frag=I),扫描接收队列内的所有序号为Seq帧是否连续。当帧号连续且报文段Seq完整,则将报文段交给应用层软件转发,否则按照确认策略进行确认,发送NACK确认帧。
[0064]上述接收端处理RxQueue内巾贞的流程如6所示。
[0065]当生成NACK确认巾贞时,扫描接收队列RxQueue,已经收到巾贞号对应的确认位组的比特位置为1,未收到帧号对应于位组的比特位置为O。最终封装成NACK确认帧,返给数据帧的发送端,其过程如7所示意。
[0066]当接收端对序号为Seq报文段第一次发送NACK确认帧时,确认次数ATN(Seq) =0,否则ATN(Seq) =ATN(Seq)+1。最大确认次数记为ΜΑΤΝ。当ATN(Seq)〉MATN时,仍然未收到完整的丢失的数据帧,则将接收队列里所有序号为Seq的报文段的数据帧全部释放。
[0067]另外,当接收端从接收队列RxQueue中清除不完整的报文段或者向应用层提交完整报文段的时候,需要检查RxQueue内是否还有其他数据帧。如果RxQueue没有其余的数据帧,则向发送端发送一个序号为Seq+Ι的全负确认NACK帧,即其确认位组全部为0,再启动WT0(Seq+l),并插入WTO列表中。接收端在清理RxQueue末尾帧时,主动发送NACK (Seq+1)是为了避免发送端发送的最后一个报文段丢失。
[0068]接收端的链路层软件周期性的检测WTO列表里每一个WTO的值。当WTO (Seq)的值为零时,如果序号为Seq的报文段的所有数据帧不能构成完整的报文段,则将这些数据帧从RxQueue内移除释放,并停止和清除WTO (Seq)。
[0069]接收端将接收到的完整的报文段进行转发。当多个报文段需要转发时候,按照报文序号递增的顺序进行顺次转发。当大序号的报文已经是完整的报文,而低序号的报文尚未完整接收,则延迟转发大序号报文,直到小序号报文接收完整或者宣布丢弃小序号报文。
[0070]本发明具有如下优点:精简的帧结构适应了测井遥传链路的下行带宽窄、非对称比例大的特点,提高了传输资源的利用率,降低确认帧对下行带宽的消耗,减小确认帧的压缩效应对上行数据的等待。最大封装效率略高于现有的TCP/IP/EoDSL协议、与TCP/IP/PPP协议封装方式,远高于CAN总线封装方式。
[0071]严格的独立分层会增加数据的可靠传输的难度和开销,比如,由高层协议估算链路的速度和丢包率,则需要统计往返时间和丢帧数量,再进行估算,这将增大收敛时间,增加协议软件开销,而且这些指标的估算值与实际值粗在误差。本发明采用跨层设计精简协议,链路层可以直接获取速率、丢包,信噪比等物理层参数,并利用这些参数,计算帧和报文段的往返时间SRTT,区分丢包的类型,直接地、灵活的感知到物理层的状态,减少重传和降低协议软件的复杂度。
[0072]网络协议对付误码和丢包的主要方式是FEC和ARQ。本发明采用跨层分设计,将链路帧与物理层的COFDM共用FEC以便检错和纠错,提高链路层的抗误码能力。ARQ采用帧确认与报文段确认相结合,避免全报文段重传,降低数据传输延迟。以NACK负确认为主,发送端不主动超时重传。
[0073]当发送端未收到报文段或者未收到完整的报文段时,对丢失的报文段的帧发送负确认NACK,接收端对已经成功收到的报文段不发送正确认ACK。NACK中确认位组的每一位指明对应帧是否成功收到。仅仅发送负确认减小了下行带宽的消耗,减小了传统的确认帧的压缩效产生的延迟应对上行的等待。
[0074]上面结合附图对本发明的【具体实施方式】进行了详细说明,但本发明并不限制于上述实施方式,在不脱离本申请的权利要求的精神和范围情况下,本领域的技术人员可以做出各种修改或改型。
【权利要求】
1.一种用于通过传输协议在测井数据链路上传输数据的方法,其特征在于,所述传输协议包括应用层、位于所述应用层之下的链路层以及位于所述链路层之下的物理层;该方法包括如下步骤: 所述链路层接收应用层转发来的应用层报文段,将所述应用层报文段分成若干小段,再将所述若干小段分别封装到至少一个链路层数据帧的有效载荷内,之后将所述链路层数据帧转发到所述物理层由其完成数据传输。
2.根据权利要求1所述的方法,其特征在于,所述应用层将接收的数据加上首部封装成所述应用层报文段,所述应用层报文段包括首部HeaderS和装载所述数据的有效载荷PayloadS,其中所述首部HeaderS包括如下字段: Flag:标识字段,用于标示一个报文段起始同步开始; Lens:长度字段,用于指示应用层报文段中报文载荷的长度; Tools ID:测井仪器编号字段,用于标识仪器的编号指明数据来源于该编号的仪器; Seq:报文段序号,用于表示数据帧所在的报文段序号; Checksum:校验和,用于计算报文段的校验和。
3.根据权利要求2所述的方法,其特征在于,所述链路层数据帧包括如下字段: HeaderF:链路层数据巾贞首部; PayloadF:有效载荷,链路层数据帧的有效载荷帧最大长度记为MTU; FCS:帧校验和,采用物理层FEC码对帧数据进行校验。
4.根据权利要求3所述的方法,其特征在于,所述链路层数据帧首部HeaderF包括如下字段: Type:帧类型字段,占用2个比特,用于标识帧的类型,分为数据帧、单一确认帧、捎带确认帧、信令帧四种类型; Seq,报文段序号,用于表示数据帧所在的报文段序号; Lenf,载荷长度,表示当前帧内有效载荷的长度; Id,巾贞号,表不当前巾贞在报文段中的分组序号; Frag尾巾贞标记,当取O时表示不是当前报文段的最后一巾贞;当取I时,当前巾贞是尾中贞,即当前报文段的最后一帧; AckBitArray,负确认NACK的各个确认比特位,共占用N个比特,顺次对应巾贞号,当其中一比特为O,表示对应数据巾贞没有被接收端收到,当该比特为I,表示接收端已经收到对应的数据帧。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述链路层直接获取所述应用层和/或所述物理层的参数数据。
6.根据权利要求5所述的方法,其特征在于,所述参数数据至少包括应用层报文段的序号、物理层的上行速率、下行速率、上行丢包率、下行丢包率、信噪比其中之一。
7.根据权利要求6所述的方法,其特征在于,当测井数据链路上的发送端发送数据时,所述链路层将接收到的当前应用层报文段分成一个或者多个数据帧封装然后发送到所述物理层,如果发送的是当前应用层报文段的第一个数据帧,则启动移除超时定时器设置第一预定时间,在所述第一预定时间内,若当前应用层报文段的所有数据帧已发送完,则保留当前应用层报文段的所有数据帧直到所述第一预定时间置为零后清除当前应用层报文段的所有数据帧。
8.根据权利要求7所述的方法,其特征在于,当所述发送端接收到测井数据链路上的接收端发送来的NACK确认帧后,提取NACK确认帧的确认位组,如果所述确认位组的某一比特位为O,表明与其位置对应的帧号的所述当前应用层报文段的数据帧未被接收端成功接收,需要发送端重传该数据帧,此时发送端的链路层启动移除超时定时器设置第二预定时间,在所述第二预定时间内,重传所述当前应用层报文段的未被接收端成功接收的数据帧,如果超过所述第二预定时间或者预定的重传次数,所述当前应用层报文段的未被接收端成功接收的数据帧仍然未被接收端成功接收,则清除所述当前应用层报文段的所有数据帧并将所述第二预定时间重置为零。
9.根据权利要求6所述的方法,其特征在于,当测井数据链路上的接收端接收数据时,所述接收端在预定时间内接收到所述当前应用层报文段的所有数据帧后,将完整的所述当前应用层报文段交给所述应用层转发,否则按照确认策略进行确认发送NACK确认帧。
10.根据权利要求9所述的方法,其特征在于,所述接收端按照确认策略进行确认发送NACK确认帧具体为: 接收端的链路层生成NACK确认帧时,将已经收到的数据帧对应的确认位组的比特位置为1,将未收到的数据帧对应的确认位组的比特位置为0,最终封装成NACK确认帧,返给数据帧的发送端; 当接收端在预定次数内发送NACK确认帧后仍然未收到发送端重传的丢失的数据帧,则将所述当前应用层报文段的所有数据帧全部清除。
【文档编号】H04L29/08GK104378444SQ201410708183
【公开日】2015年2月25日 申请日期:2014年11月27日 优先权日:2014年11月27日
【发明者】伍瑞卿, 陈伟, 顾庆水, 丁囡, 揭鸿 申请人:电子科技大学