CN115173990A - 一种数据包传输方法 - Google Patents
一种数据包传输方法 Download PDFInfo
- Publication number
- CN115173990A CN115173990A CN202210682235.8A CN202210682235A CN115173990A CN 115173990 A CN115173990 A CN 115173990A CN 202210682235 A CN202210682235 A CN 202210682235A CN 115173990 A CN115173990 A CN 115173990A
- Authority
- CN
- China
- Prior art keywords
- sequence number
- packet
- link layer
- data
- tlp
- 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
- 238000000034 method Methods 0.000 title claims abstract description 65
- 230000005540 biological transmission Effects 0.000 title claims abstract description 31
- 125000004122 cyclic group Chemical group 0.000 claims description 39
- 230000002159 abnormal effect Effects 0.000 claims description 10
- 239000003550 marker Substances 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 32
- 230000006870 function Effects 0.000 description 13
- 238000004590 computer program Methods 0.000 description 7
- 238000003860 storage Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 239000002699 waste material Substances 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000032683 aging Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
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/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/1607—Details of the supervisory signal
-
- 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/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0061—Error detection codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/003—Arrangements for allocating sub-channels of the transmission path
- H04L5/0053—Allocation of signaling, i.e. of overhead other than pilot signals
- H04L5/0055—Physical resource allocation for ACK/NACK
-
- 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/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/222—Studio circuitry; Studio devices; Studio equipment
- H04N5/262—Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
- H04N5/268—Signal distribution or switching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/76—Television signal recording
- H04N5/765—Interface circuits between an apparatus for recording and another apparatus
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/10—Adaptations for transmission by electrical cable
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Multimedia (AREA)
- Computer Security & Cryptography (AREA)
- Communication Control (AREA)
Abstract
本申请提供一种数据包传输方法,该方法包括:第一数据链路层在接收到TLP数据包后,为TLP数据包封装第一序列号;第一数据链路层将第一序列号寄存器存储的序列号更新为第一序列号,将TLP数据包存储到重传缓存区,并发送TLP数据包;第二数据链路层在接收到TLP数据包后,从该TLP数据包中解析第二序列号;若第二序列号大于第二序列号寄存器中存储的目标序列号与预设数值之和,则向第一数据链路层发送封装有目标序列号的RSND数据包;第一数据链路层在接收到RSND数据包后,从重传缓存区中获取序列号大于目标序列号的TLP数据包,并重传该TLP数据包。通过本申请的技术方案,在数据链路层实现数据重传,避免丢包问题,保证业务正常运行。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种数据包传输方法。
背景技术
CXP(CoaXPress)协议是一项同轴电缆不对称高速串行通信标准,是一种非对称的高速点对点串行通信数字接口标准,是为机器视觉行业开发的一种数字接口规范。其中,设备(如相机)可以通过同轴电缆连接到主机(如个人计算机中的采集卡),在相机和采集卡均支持CXP协议时,相机可以基于CXP协议向采集卡发送图像数据,如以高达10G比特/秒的速度发送图像数据。
在相机基于CXP协议向采集卡发送图像数据时,由于环境干扰、线路异常等原因,会导致图像数据发生丢失,即存在丢包问题,影响业务正常运行。
发明内容
本申请提供一种数据包传输方法,发送端设备包括第一数据链路层,接收端设备包括第二数据链路层,所述方法包括:
所述第一数据链路层在接收到TLP数据包后,为所述TLP数据包封装第一序列号;其中,第一序列号寄存器用于存储最后一个已发送TLP数据包的序列号,所述第一序列号是该序列号与预设数值之和;
所述第一数据链路层将所述第一序列号寄存器存储的序列号更新为所述第一序列号,将TLP数据包存储到重传缓存区,并发送所述TLP数据包;
所述第二数据链路层在接收到TLP数据包后,从该TLP数据包中解析第二序列号;若所述第二序列号大于第二序列号寄存器中存储的目标序列号与预设数值之和,则向第一数据链路层发送封装有所述目标序列号的RSND数据包;其中,第二序列号寄存器用于存储最后一个已成功接收的TLP数据包的序列号;
所述第一数据链路层在接收到所述RSND数据包后,从所述重传缓存区中获取序列号大于所述目标序列号的TLP数据包,并重传该TLP数据包。
本申请提供一种数据包传输方法,发送端设备包括第一数据链路层,接收端设备包括第二数据链路层,该方法应用于第一数据链路层,该方法包括:
在接收到TLP数据包后,为所述TLP数据包封装第一序列号;其中,所述发送端设备维护有第一序列号寄存器,所述第一序列号寄存器用于存储最后一个已发送TLP数据包的序列号,所述第一序列号是该序列号与预设数值之和;
将所述第一序列号寄存器存储的序列号更新为所述第一序列号,将所述TLP数据包存储到重传缓存区,并向所述第二数据链路层发送所述TLP数据包;
若接收到所述第二数据链路层发送的RSND数据包,且所述RSND数据包包括目标序列号,所述目标序列号是所述接收端设备维护的第二序列号寄存器中存储的序列号,则从所述重传缓存区中获取序列号大于所述目标序列号的TLP数据包,并向所述第二数据链路层重传该TLP数据包。
本申请提供一种数据包传输方法,发送端设备包括第一数据链路层,接收端设备包括第二数据链路层,该方法应用于第二数据链路层,该方法包括:
在接收到TLP数据包后,从该TLP数据包中解析第二序列号;
若所述第二序列号大于第二序列号寄存器中存储的目标序列号与预设数值之和,则向第一数据链路层发送封装有所述目标序列号的RSND数据包;
其中,所述接收端设备维护有第二序列号寄存器,所述第二序列号寄存器用于存储最后一个已成功接收的TLP数据包的序列号。
由以上技术方案可见,本申请实施例中,在数据链路层实现数据重传,在保持高带宽的情况下,采用硬件实现数据重传,通过数据链路层完成数据包的序列号检测、发送重传命令、发送备份数据包等,而不需要软件干预,时效性更快,无需大容量的DDR(Double DataRate,双倍数据速率)缓存,不会有带宽浪费,能够提供整个系统的可靠性,传输方式与传输介质无关。比如说,在相机向采集卡发送图像数据时,若图像数据发生丢失,则可以触发相机重新发送图像数据,从而避免丢包问题,保证业务正常运行。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其他的附图。
图1是本申请一种实施方式中的数据包传输系统的结构示意图;
图2是本申请一种实施方式中的七层模型和四层模型的示意图;
图3是本申请一种实施方式中的数据包传输系统的结构示意图;
图4A是本申请一种实施方式中的DLLP数据包的格式示意图;
图4B是本申请一种实施方式中的CLR数据包的格式示意图;
图4C是本申请一种实施方式中的DONE数据包的格式示意图;
图4D是本申请一种实施方式中的ACK数据包的格式示意图;
图4E是本申请一种实施方式中的RSND数据包的格式示意图;
图5A和图5B是本申请一种实施方式中的TLP数据包的格式示意图;
图6是本申请一种实施方式中的数据包传输方法的流程示意图;
图7是本申请一种实施方式中的数据链路层重传TLP数据包的简要框图;
图8是本申请一种实施方式中的TX端的重传TLP数据包的详细框图;
图9是本申请一种实施方式中的RX端的重传TLP数据包的详细框图;
图10是本申请一种实施方式中的数据包传输方法的流程示意图;
图11是本申请一种实施方式中的数据包传输方法的流程示意图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请实施例提出一种数据包传输方法,应用于包括发送端设备和接收端设备的系统,比如说,发送端设备可以为相机(如工业相机),接收端设备可以为采集卡(如部署在工控PC的采集卡);或者,发送端设备可以为采集卡,接收端设备可以为相机。例如,在相机向采集卡发送图像数据时,发送端设备为相机,接收端设备为采集卡。在采集卡向相机发送控制数据时,发送端设备为采集卡,接收端设备为相机。当然,相机和采集卡只是示例,发送端设备可以是任意类型设备,接收端设备可以是任意类型设备,本实施例对此不做限制。
参见图1所示,为数据包传输系统的结构示意图,数据包传输系统可以包括发送端设备和接收端设备,且发送端设备是相机,接收端设备是采集卡。
示例性的,发送端设备与接收端设备之间可以通过目标协议通信,目标协议可以是高速协议,如带宽提升到10Gbps的协议等。当然,上述高速协议只是目标协议的示例,本实施例对此不做限制,可以是任意类型的协议。
在发送端设备基于目标协议向接收端设备发送数据时,由于环境干扰、线路异常等原因,会导致数据发生丢失,即存在丢包问题,影响业务正常运行。
针对上述问题,本申请实施例中提出一种基于数据链接层的重传方案,应用于机器视觉等工业制造领域,该重传方案在数据链路层实现数据重传,在保持高带宽的情况下,采用硬件实现数据重传,提供整个系统的可靠性。
参见图2所示,OSI(Open System Interconnection,开放式系统互联)的七层模型可以包括应用层(Application Layer)、表示层(Presentation Layer)、会话层(SessionLayer)、传输层(Transport Layer)、网络层(Network Layer)、数据链路层(Datalinklayer)和物理层(Physical layer),可以将七层模型简化成四层模型,比如说,四层模型可以包括应用层(Application Layer)、传输层(Transport Layer)、数据链路层(Datalinklayer)和物理层(Physical layer)。
基于此,参见图3所示,发送端设备(如相机)可以包括应用层、传输层、数据链路层和物理层,接收端设备(如采集卡)也可以包括应用层、传输层、数据链路层和物理层。在数据包的传输过程中,数据包需要经过四层架构协议,封装成完整帧发送到对端,即在发送端设备与接收端设备之间传输。
应用层的主要功能与应用相关,包括读写控制逻辑、图像数据发送等。传输层的主要功能是数据类型分配、端对端的通信机制等。数据链路层的主要功能是提供节点对节点的通信机制、用于重传及特殊数据包的传输。物理层的主要功能是提供最底层通信链路,实现链路训练、速率切换、bit编码。当然,上述只是应用层、传输层、数据链路层和物理层的功能的示例,本实施例对应用层、传输层和物理层的功能不做限制,数据链路层的功能参见后续实施例。
为了区分方便,本实施例中,将发送端设备的应用层称为第一应用层,将发送端设备的传输层称为第一传输层,将发送端设备的数据链路层称为第一数据链路层,将发送端设备的物理层称为第一物理层。将接收端设备的应用层称为第二应用层,将接收端设备的传输层称为第二传输层,将接收端设备的数据链路层称为第二数据链路层,将接收端设备的物理层称为第二物理层。
示例性的,数据链路层可以将来自于传输层的数据包发送给对端,也可以将自身生成的数据包发送给对端。针对来自于传输层的数据包,可以是传输层生成的数据包,也可以是应用层生成的数据包,对此不做限制,将来自于传输层的数据包记为TLP(TransportLayer Packet,传输层数据包)数据包。针对数据链路层自身生成的数据包,是由数据链路层主动生成,将数据链路层自身生成的数据包记为DLLP(Data Link Layer Packet,数据链路层数据包)数据包。综上所述,与数据链路层有关的数据包有2大类:DLLP数据包和TLP数据包。
示例性的,DLLP数据包是由数据链路层发起的数据包,参见图4A所示,为DLLP数据包的示意图,DLLP数据包可以包括DLLP Type字段、DLLP Data字段、CRC字段、SPLP(Startof Physical Layer Packet,物理层数据包的开始)字段和EPLP(End of Physical LayerPacket,物理层数据包的结束)字段。
SPLP字段是物理层为DLLP数据包添加的包头,EPLP字段是物理层为DLLP数据包添加的包尾,对此SPLP字段和EPLP字段的内容不做限制。
本实施例中,可以将DLLP数据包区分为CLR数据包、DONE数据包、ACK数据包、RSND数据包,DLLP Type字段用于表示DLLP数据包的类型,如DLLP数据包是CLR数据包,还是DONE数据包,还是ACK数据包,还是RSND数据包。DLLP Data字段用于表示DLLP数据包的数据内容。CRC字段表示DLLP数据包的循环冗余校验码,对此循环冗余校验码的获取方式不做限制。CLR数据包是发送端设备向接收端设备发送的DLLP数据包,RSND数据包、ACK数据包、DONE数据包均是接收端设备向发送端设备发送的DLLP数据包。
其中,DLLP Type字段用于表示DLLP数据包的类型,参见表1所示,为DLLP Type字段的示例,当然,表1中的各数值只是举例说明,对此不做限制。
表1
从表1可以看出,在DLLP Type字段为00000000时,表示DLLP数据包是CLR数据包,在DLLP Type字段为00010000时,表示DLLP数据包是DONE数据包,在DLLP Type字段为00100000时,表示DLLP数据包是ACK数据包,在DLLP Type字段为00110000时,表示DLLP数据包是RSND数据包。
参见图4B所示,为CLR数据包的格式示例的示意图,该CLR数据包用于清除数据链路层的序列号。其中,CLR数据包的第一个字节是00000000,用于表示DLLP数据包是CLR数据包,第二个字节可以是预留内容(Reserved),可以为空,第三个字节和第四个字节可以是循环冗余校验码。
参见图4C所示,为DONE数据包的格式示例的示意图,DONE数据包用于表示数据链路层已经接收到CLR数据包,并完成序列号清除。其中,DONE数据包的第一个字节是00010000,用于表示DLLP数据包是DONE数据包,第二个字节是预留内容,可以为空,第三个字节和第四个字节是循环冗余校验码。
参见图4D所示,为ACK数据包的格式示例的示意图,ACK数据包用于表示正确接收到TLP数据包,且需要将TLP数据包的序列号添加到ACK数据包的DLLP Data字段中。其中,ACK数据包的第一个字节是00100000,用于表示DLLP数据包是ACK数据包,第二个字节可以是序列号(即从TLP数据包中解析出的序列号),第三个字节和第四个字节可以是循环冗余校验码。
参见图4E所示,为RSND数据包的格式示例的示意图,RSND数据包用于表示接收到的TLP数据包存在错误,并将上一个正确的TLP数据包中的序列号添加到RSND数据包的DLLPData字段中。其中,RSND数据包的第一个字节可以是00110000,用于表示DLLP数据包是RSND数据包,第二个字节可以是序列号,第三个字节和第四个字节可以是循环冗余校验码。
示例性的,TLP数据包是由传输层发起的数据包,参见图5A所示,为TLP数据包的示意图,TLP数据包可以包括SPLP字段、SDLLP字段、TLP数据字段、EDLLP字段和EPLP字段。其中,TLP数据字段用于承载数据内容(如图像数据等),是传输层发送给数据链路层的TLP数据包,SPLP字段是物理层为TLP数据包添加的包头,EPLP字段是物理层为TLP数据包添加的包尾,对此SPLP字段、EPLP字段和TLP数据字段的内容均不做限制。
SDLLP(Start of Data Link Layer Packet,数据链路层数据包的开始)字段是数据链路层为TLP数据包添加的包头,EDLLP(End of Data Link Layer Packet,数据链路层数据包的结束)字段是数据链路层为TLP数据包添加的包尾。SDLLP字段可以包括DLLP Type字段和序列号字段,EDLLP字段可以包括CRC字段。
其中,DLLP Type字段用于表示TLP数据包的类型,即用于表示数据包是TLP数据包。序列号字段用于表示TLP数据包的序列号,可以理解为TLP数据包的标识。CRC字段用于表示TLP数据包的循环冗余校验码,对此循环冗余校验码的获取方式不做限制。TLP数据包是发送端设备向接收端设备发送的。
其中,DLLP Type字段用于表示TLP数据包的类型,结合表1的DLLP Type字段,参见表2所示,为DLLP Type字段的示例,对此不做限制。从表2可以看出,在DLLP Type字段为10000000时,表示TLP数据包。
表2
参见图5B所示,为TLP数据包的格式示例的示意图,TLP数据包用于发送实际应用数据(如图像数据等),前面两个字节是SDLLP,后面两个字节是EDLLP。其中,TLP数据包的第一个字节是10000000,用于表示数据包是TLP数据包,第二个字节是TLP数据包的序列号,第二个字节后面是实际应用数据(即TLP数据字段,由传输层提供),最后两个字节可以是循环冗余校验码。
在上述应用场景下,本申请实施例中提出一种数据包传输方法,该方法可以应用于包括发送端设备和接收端设备的系统,比如说,在相机向采集卡发送TLP数据包时,相机作为发送端设备,采集卡作为接收端设备,在采集卡向相机发送TLP数据包时,采集卡作为发送端设备,相机作为接收端设备。
本实施例中,发送端设备可以包括第一应用层、第一传输层、第一数据链路层和第一物理层,接收端设备可以包括第二应用层、第二传输层、第二数据链路层和第二物理层,在后续过程中,以第一数据链路层和第二数据链路层的处理过程为例,关于其它层的处理方式,本实施例中不做限制。
参见图6所示,为该方法的流程示意图,该方法可以包括:
步骤601、第一数据链路层在接收到TLP数据包后,为TLP数据包封装第一序列号;其中,第一序列号寄存器用于存储最后一个已发送TLP数据包的序列号,且第一序列号是该序列号与预设数值(如1)之和。
步骤602、第一数据链路层将第一序列号寄存器存储的序列号更新为第一序列号,将TLP数据包存储到重传缓存区,并发送该TLP数据包。
示例性的,第一传输层可以将TLP数据包发送给第一数据链路层,由第一数据链路层接收该TLP数据包。比如说,第一传输层在得到TLP数据包之后,向第一数据链路层发送查询消息,由第一数据链路层查询重传缓存区(即重传Buffer)是否有剩余存储空间来存储该TLP数据包。若有,则第一数据链路层向第一传输层发送同意消息,第一传输层可以将TLP数据包发送给第一数据链路层。若没有,则第一数据链路层向第一传输层发送拒绝消息,第一传输层禁止将TLP数据包发送给第一数据链路层,即阻塞TLP数据包,直到重传缓存区有剩余存储空间来存储TLP数据包,才重新将TLP数据包发送给第一数据链路层。
示例性的,发送端设备可以维护第一序列号寄存器,第一序列号寄存器用于存储最后一个已发送TLP数据包的序列号。基于此,第一数据链路层在每次接收到TLP数据包之后,可以基于第一序列号寄存器中已存储的序列号确定该TLP数据包对应的第一序列号,并为该TLP数据包封装该第一序列号,且该第一序列号是第一序列号寄存器中已存储的序列号与1之和。以及,第一数据链路层还可以将第一序列号寄存器存储的序列号更新为第一序列号。
比如说,第一序列号寄存器中存储的序列号的初始值为0(也可以为其它数值),第一数据链路层在接收到第1个TLP数据包时,为该TLP数据包封装的第一序列号是1(0+1),并将第一序列号寄存器中存储的序列号更新为1。第一数据链路层在接收到第2个TLP数据包时,为该TLP数据包封装的第一序列号是2(1+1),并将第一序列号寄存器中存储的序列号更新为2。第一数据链路层在接收到第3个TLP数据包时,为该TLP数据包封装的第一序列号是3(2+1),并将第一序列号寄存器中存储的序列号更新为3,以此类推。
示例性的,参见图5A和图5B所示,第一数据链路层在每次接收到TLP数据包之后,可以为该TLP数据包封装SDLLP字段和EDLLP字段,SDLLP字段可以包括DLLP Type字段和序列号字段,EDLLP字段可以包括CRC字段。
其中,DLLP Type字段为10000000,用于表示数据包是TLP数据包,序列号字段为TLP数据包对应的第一序列号,CRC字段为循环冗余校验码。
示例性的,第一数据链路层在每次接收到TLP数据包之后,在为该TLP数据包封装第一序列号(如为该TLP数据包封装SDLLP字段和EDLLP字段)之后,可以将该TLP数据包存储到重传缓存区,并发送该TLP数据包。
步骤603、第二数据链路层在接收到TLP数据包(即第一数据链路层发送给第二数据链路层的TLP数据包)后,从该TLP数据包中解析第二序列号。
示例性的,第二数据链路层接收到数据包后,解析数据包的DLLP Type字段的值,若DLLP Type字段的值(如10000000)表示数据包是TLP数据包,则确定数据包是TLP数据包,并从TLP数据包的序列号字段中解析出第二序列号。
步骤604、第二数据链路层比较第二序列号和目标序列号与预设数值之和。
若第二序列号大于目标序列号与预设数值之和,则可以执行步骤605。
若第二序列号等于目标序列号与预设数值之和,则可以执行步骤607。
若第二序列号小于目标序列号与预设数值之和,则可以执行步骤609。
示例性的,接收端设备可以维护第二序列号寄存器,第二序列号寄存器用于存储最后一个已成功接收的TLP数据包的序列号,将第二序列号寄存器中存储的序列号记为目标序列号。基于此,第二数据链路层在每次接收到TLP数据包之后,可以从TLP数据包中解析出第二序列号,并从第二序列号寄存器中获取目标序列号,并比较第二序列号和目标序列号与预设数值(如1)之和。
示例性的,已成功接收的TLP数据包是指:针对第二数据链路层接收到的每个TLP数据包,若该TLP数据包中携带的第二序列号等于第二序列号寄存器中的目标序列号与预设数值之和,则将这个TLP数据包作为已成功接收的TLP数据包,将这个TLP数据包的第二序列号更新到第二序列号寄存器中。若该TLP数据包中携带的第二序列号不等于(如大于或小于)第二序列号寄存器中的目标序列号与预设数值之和,则这个TLP数据包不作为已成功接收的TLP数据包,不将这个TLP数据包的第二序列号更新到第二序列号寄存器中。
步骤605、若第二序列号大于目标序列号与预设数值之和,则第二数据链路层向第一数据链路层发送封装有目标序列号的RSND数据包。
步骤606、第一数据链路层在接收到该RSND数据包后,从重传缓存区中获取序列号大于该目标序列号的TLP数据包,并重传该TLP数据包。
比如说,若TLP数据包携带的第二序列号是103,第二序列号寄存器存储的目标序列号是100,即第二序列号大于目标序列号与1之和,则表示序列号是101、102的TLP数据包已丢失,因此,第二数据链路层可以向第一数据链路层发送RSND数据包,且RSND数据包包括目标序列号100。第一数据链路层在接收到RSND数据包后,从RSND数据包中解析出目标序列号100,并从重传缓存区中获取序列号大于目标序列号100的所有TLP数据包,如序列号是101的TLP数据包、序列号是102的TLP数据包、序列号是103的TLP数据包。
然后,第一数据链路层可以重传这些TLP数据包,即将这些TLP数据包发送给第二数据链路层,第二数据链路层在接收到TLP数据包后,执行步骤603。
综上可以看出,在序列号是101、102的TLP数据包已丢失时,第一数据链路层可以重传序列号是101、102的TLP数据包,从而避免TLP数据包丢失。
示例性的,参见图4A和图4E所示,第二数据链路层生成RSND数据包,并向第一数据链路层发送RSND数据包,RSND数据包包括DLLP Type字段、DLLP Data字段和CRC字段。DLLPType字段为00110000,用于表示数据包是RSND数据包,DLLP Data字段为目标序列号,CRC字段为循环冗余校验码。
第一数据链路层在接收到RSND数据包后,从RSND数据包的CRC字段中解析出循环冗余校验码。若基于该循环冗余校验码确定RSND数据包为异常数据包(即CRC校验错误),则可以直接丢弃RSND数据包,不再重传TLP数据包。若基于该循环冗余校验码确定RSND数据包为正常数据包(即CRC校验正确),则解析RSND数据包的DLLP Type字段的值,若该值表示数据包是RSND数据包,则解析RSND数据包的DLLP Data字段,得到目标序列号,并从重传缓存区中获取序列号大于目标序列号的TLP数据包,并重传该TLP数据包。
步骤607、若第二序列号等于目标序列号与预设数值之和,则第二数据链路层向第一数据链路层发送封装有第二序列号的ACK数据包,并将第二序列号寄存器存储的目标序列号更新为第二序列号(即TLP数据包中的第二序列号)。
步骤608、第一数据链路层在接收到ACK数据包后,从重传缓存区中删除序列号小于或者等于第二序列号的TLP数据包。
比如说,若TLP数据包携带的第二序列号是101,第二序列号寄存器存储的目标序列号是100,即第二序列号等于目标序列号与1之和,则表示已正确接收序列号是101的TLP数据包,因此,第二数据链路层可以向第一数据链路层发送ACK数据包,且ACK数据包包括第二序列号101,以及,第二数据链路层将第二序列号寄存器存储的目标序列号更新为第二序列号101。
第一数据链路层在接收到ACK数据包后,从ACK数据包中解析出第二序列号101,并从重传缓存区中删除序列号小于或者等于第二序列号101的TLP数据包,如删除序列号是101、100、99、98的TLP数据包等。
示例性的,参见图4A和图4D所示,第二数据链路层生成ACK数据包,并向第一数据链路层发送ACK数据包,ACK数据包包括DLLP Type字段、DLLP Data字段和CRC字段。DLLPType字段为00100000,用于表示数据包是ACK数据包,DLLP Data字段为第二序列号,CRC字段为循环冗余校验码。
第一数据链路层接收到ACK数据包后,从ACK数据包的CRC字段解析出循环冗余校验码。若基于循环冗余校验码确定ACK数据包为异常数据包,则丢弃ACK数据包,不从重传缓存区中删除TLP数据包。若基于循环冗余校验码确定ACK数据包为正常数据包,则解析ACK数据包的DLLP Type字段的值,若该值表示数据包是ACK数据包,则解析ACK数据包的DLLPData字段,得到第二序列号,从重传缓存区中删除序列号小于或等于第二序列号的TLP数据包。
示例性的,在第二序列号等于目标序列号与预设数值之和时,表示第二数据链路层正确接收第二序列号的TLP数据包,第二数据链路层可以剥离SDLLP和EDLLP等信息,并将修改后的TLP数据包发送给第二传输层。
步骤609、若第二序列号小于目标序列号与预设数值之和,则第二数据链路层向第一数据链路层发送封装有第二序列号的ACK数据包。
步骤610、第一数据链路层在接收到ACK数据包后,从重传缓存区中删除序列号小于或者等于第二序列号的TLP数据包。
比如说,若TLP数据包携带的第二序列号是99,第二序列号寄存器存储的目标序列号是100,即第二序列号小于目标序列号与1之和,则表示已正确接收序列号是99的TLP数据包,因此,第二数据链路层可以向第一数据链路层发送ACK数据包,且ACK数据包包括第二序列号99,在该情况下,第二数据链路层不需要更新第二序列号寄存器存储的目标序列号,即不会更新为99。第一数据链路层在接收到ACK数据包后,从ACK数据包中解析出第二序列号99,并从重传缓存区中删除序列号小于或者等于第二序列号99的TLP数据包。
步骤609-步骤610可以参见步骤607-步骤608,在此不再重复赘述。
在一种可能的实施方式中,针对步骤603,第二数据链路层在接收到TLP数据包之后,第二数据链路层从该TLP数据包中解析第二序列号之前,第二数据链路层还可以从该TLP数据包中解析循环冗余校验码。若基于该循环冗余校验码确定该TLP数据包为正常数据包,则执行从该TLP数据包中解析第二序列号的操作,即执行步骤603及后续步骤。若基于该循环冗余校验码确定该TLP数据包为异常数据包,则第二数据链路层直接从第二序列号寄存器中读取目标序列号,并向第一数据链路层发送封装有目标序列号的RSND数据包。
示例性的,参见图5A和图5B所示的TLP数据包,第二数据链路层在接收到TLP数据包后,从TLP数据包的CRC字段中解析出循环冗余校验码。
若基于该循环冗余校验码确定TLP数据包为异常数据包(即CRC校验错误),则生成RSND数据包,并向第一数据链路层发送RSND数据包,参见图4A和图4E所示,RSND数据包可以包括DLLP Type字段、DLLP Data字段和CRC字段。第一数据链路层接收到RSND数据包后的操作,参见上述实施例。
若基于该循环冗余校验码确定TLP数据包为正常数据包(即CRC校验正确),则解析数据包的DLLP Type字段的值,若该值表示数据包是TLP数据包,则确定数据包是TLP数据包,并从TLP数据包的序列号字段中解析出第二序列号。
在一种可能的实施方式中,接收端设备(如第二数据链路层)可以维护RSND标记位,RSND标记位的取值为第一取值(如0)或者第二取值(如1)。在RSND标记位的取值为第一取值时,表示允许发送RSND数据包,在RSND标记位的取值为第二取值时,表示不允许发送RSND数据包。在初始状态下,RSND标记位的取值为第一取值,即初始状态下,允许发送RSND数据包。
基于此,第二数据链路层在接收到TLP数据包后,若该TLP数据包中的第二序列号大于目标序列号与预设数值之和,则确定RSND标记位的取值。
若RSND标记位的取值为第一取值,即允许发送RSND数据包,则第二数据链路层才向第一数据链路层发送封装有目标序列号的RSND数据包,然后将RSND标记位的取值修改为第二取值,即不再允许发送RSND数据包。
若RSND标记位的取值为第二取值,即不允许发送RSND数据包,则第二数据链路层禁止向第一数据链路层发送封装有目标序列号的RSND数据包,也就是说,即使第二序列号大于目标序列号与预设数值之和,第二数据链路层也不会向第一数据链路层发送封装有目标序列号的RSND数据包。
此外,第二数据链路层在接收到TLP数据包后,若该TLP数据包中的第二序列号小于或者等于目标序列号与预设数值之和,则判断RSND标记位的取值。
若RSND标记位的取值为第一取值,即允许发送RSND数据包,则第二数据链路层保持RSND标记位的取值为第一取值不变。若RSND标记位的取值为第二取值,即不允许发送RSND数据包,则第二数据链路层将RSND标记位的取值修改为第一取值,即通过RSND标记位允许发送RSND数据包。
综上可以看出,第二数据链路层接收到多个TLP数据包,且多个TLP数据包中的第二序列号均大于目标序列号与预设数值之和时,第二数据链路层可以只发送一个RSND数据包,而不是发送多个RSND数据包,从而避免第一数据链路层接收到多个RSND数据包,导致TLP数据包的反复重传。
比如说,第二序列号寄存器存储的目标序列号是100,若第二数据链路层依次接收到第二序列号是103、104、105的TLP数据包,则针对第二序列号是103的TLP数据包,由于RSND标记位的取值为第一取值,因此,第二数据链路层向第一数据链路层发送封装有目标序列号100的RSND数据包,并将RSND标记位的取值修改为第二取值。然后,由于RSND标记位的取值为第二取值,因此,针对第二序列号是104、105的TLP数据包,不再发送RSND数据包。
一直到第二数据链路层接收到第二序列号是101的TLP数据包,第二数据链路层可以向第一数据链路层发送封装有第二序列号是101的ACK数据包,并将RSND标记位的取值修改为第一取值,继而允许发送RSND数据包。
在一种可能的实施方式中,发送端设备(如第一数据链路层)可以维护看门狗定时器,该看门狗定时器的老化时长可以根据经验配置,对此不做限制。
针对步骤606,第一数据链路层在接收到RSND数据包,从重传缓存区中获取序列号大于目标序列号的TLP数据包,并重传该TLP数据包之后,第一数据链路层可以启动看门狗定时器。在看门狗定时器超时之前,若接收到第二数据链路层返回的ACK数据包,则第一数据链路层关闭看门狗定时器。在看门狗定时器超时时,若未接收到第二数据链路层返回的ACK数据包,则第一数据链路层重传重传缓存区中所有TLP数据包,并重新启动看门狗定时器。
比如说,基于RSND标记位,第二数据链路层不会向第一数据链路层发送连续多个RSND数据包,而是只发送一个RSND数据包,因此,第一数据链路层在接收到RSND数据包之后,在接收到ACK数据包之前,第一数据链路层不会再接收到RSND数据包,这样,第一数据链路层重传TLP数据包之后,若仍然有TLP数据包丢失,导致第二数据链路层无法正确接收到TLP数据包,那么,第二数据链路层不再向第一数据链路层发送RSND数据包,也不会向第一数据链路层发送ACK数据包,为此,为了重传TLP数据包,还可以采用如下方式:
第一数据链路层在重传TLP数据包之后,启动看门狗定时器。第二数据链路层在接收到TLP数据包之后,从该TLP数据包中解析第二序列号。
若第二序列号大于目标序列号与预设数值之和,且RSND标记位为第二取值,则第二数据链路层不会向第一数据链路层发送RSND数据包,由于第一数据链路层不会接收到RSND数据包,也不会接收到ACK数据包,因此,看门狗定时器会超时,在看门狗定时器超时时,则第一数据链路层重传重传缓存区中所有TLP数据包,并重新启动看门狗定时器,重复上述过程。
若第二序列号小于或者等于目标序列号与预设数值之和,则第二数据链路层会向第一数据链路层发送ACK数据包,这样,在看门狗定时器超时之前,第一数据链路层可以接收到ACK数据包,并关闭看门狗定时器。
在一种可能的实施方式中,发送端设备维护第一序列号寄存器,接收端设备维护第二序列号寄存器,在运行过程中,可以对第一序列号寄存器和第二序列号寄存器中的序列号进行清除,即将第一序列号寄存器和第二序列号寄存器中的序列号更新为初始值,序列号的初始值可以根据经验配置,如0、1等。
示例性的,在需要清除第一序列号寄存器中的序列号时,即同步清除第一序列号寄存器中的序列号和第二序列号寄存器中的序列号,第一数据链路层向第二数据链路层发送CLR数据包,并启动清除定时器。第二数据链路层在接收到CLR数据包后,清除第二序列号寄存器中的序列号,并向第一数据链路层发送DONE数据包。在清除定时器超时之前,若第一数据链路层接收到DONE数据包,则清除第一序列号寄存器中的序列号,并关闭清除定时器。在清除定时器超时时,若第一数据链路层未接收到DONE数据包,则重新启动清除定时器,并重新向第二数据链路层发送CLR数据包,即重复上述过程。
比如说,在发送端设备和/或接收端设备重新启动时,可以清除第一序列号寄存器中的序列号,或者,在第一序列号寄存器或第二序列号寄存器中的序列号为目标值(如序列号最大值等)时,可以清除第一序列号寄存器中的序列号。当然,上述只是序列号清除的触发时机的两个示例,对此触发时机不做限制。
在需要清除第一序列号寄存器中的序列号和第二序列号寄存器中的序列号时,参见图4A和图4B所示,第一数据链路层可以生成CLR数据包,并向第二数据链路层发送CLR数据包,CLR数据包可以包括DLLP Type字段、DLLP Data字段和CRC字段。其中,DLLP Type字段为00000000,用于表示数据包是CLR数据包,DLLP Data字段为空,CRC字段为循环冗余校验码。
第二数据链路层在接收到CLR数据包后,从CLR数据包的CRC字段中解析出循环冗余校验码。若基于该循环冗余校验码确定CLR数据包为异常数据包,则直接丢弃CLR数据包。若基于该循环冗余校验码确定CLR数据包为正常数据包,则解析CLR数据包的DLLP Type字段的值,若该值表示数据包是CLR数据包,则第二数据链路层可以清除第二序列号寄存器中的序列号。
第二数据链路层清除第二序列号寄存器中的序列号后,生成DONE数据包,并向第一数据链路层发送DONE数据包,DONE数据包可以包括DLLP Type字段、DLLP Data字段和CRC字段。其中,DLLP Type字段为00010000,用于表示数据包是DONE数据包,DLLP Data字段为空,CRC字段为循环冗余校验码。
第一数据链路层在接收到DONE数据包后,从DONE数据包的CRC字段中解析出循环冗余校验码。若基于该循环冗余校验码确定DONE数据包为异常数据包,则直接丢弃DONE数据包。若基于该循环冗余校验码确定DONE数据包为正常数据包,则解析DONE数据包的DLLPType字段的值,若该值表示数据包是DONE数据包,则第一数据链路层清除第一序列号寄存器中的序列号。
其中,第一数据链路层向第二数据链路层发送CLR数据包之后,还可以启动清除定时器。在清除定时器超时之前,若接收到DONE数据包,则清除第一序列号寄存器中的序列号,并关闭清除定时器。在清除定时器超时时,若未接收到DONE数据包,则重新启动清除定时器,并重新发送CLR数据包。
在一种可能的实施方式中,第一数据链路层在接收到TLP数据包之后,可以为TLP数据包封装第一数据包类型,第一数据包类型表示数据包是TLP数据包。比如说,参见表2所示,第一数据包类型可以是DLLP Type字段,且DLLP Type字段的取值为10000000,表示数据包是TLP数据包。第二数据链路层向第一数据链路层发送RSND数据包时,为RSND数据包封装第二数据包类型,第二数据包类型表示数据包是RSND数据包。比如说,参见表2所示,第二数据包类型可以是DLLP Type字段,且DLLP Type字段的取值为00110000,表示数据包是RSND数据包。第二数据链路层向第一数据链路层发送ACK数据包时,为ACK数据包封装第三数据包类型,第三数据包类型表示数据包是ACK数据包。比如说,参见表2所示,第三数据包类型可以是DLLP Type字段,且DLLP Type字段的取值为00100000,表示数据包是ACK数据包。第一数据链路层向第二数据链路层发送CLR数据包时,为CLR数据包封装第四数据包类型,第四数据包类型表示数据包是CLR数据包。比如说,参见表2所示,第四数据包类型可以是DLLPType字段,且DLLP Type字段的取值为00000000,表示数据包是CLR数据包。第二数据链路层向第一数据链路层发送DONE数据包时,为DONE数据包封装第五数据包类型,第五数据包类型表示数据包是DONE数据包。比如说,参见表2所示,第五数据包类型可以是DLLP Type字段,且DLLP Type字段的取值为00010000,表示数据包是DONE数据包。
由以上技术方案可见,本申请实施例中,可以在数据链路层实现数据的重传,在保持高带宽的情况下,采用硬件实现数据重传,通过数据链路层完成数据包的序列号检测、发送重传命令、发送备份数据包等,而不需要软件干预,时效性更快,无需大容量的DDR缓存,不会有带宽浪费,能够提供整个系统的可靠性,传输方式与传输介质无关,可以在此基础上实现多连接器数据聚合。比如说,在相机向采集卡发送图像数据时,若图像数据发生丢失,则可以触发相机重新发送图像数据,从而避免丢包问题,保证业务正常运行。
针对数据链路层生成的DLLP数据包,只会占用4个字节,在正常取流过程中,只会发送RSND数据包或者ACK数据包,而RSND数据包和ACK数据包只占用接收端设备到发送端设备之间的通道,并不影响发送端设备到接收端设备之间的通道,在实际使用中并不会有带宽浪费。每个数据链路层都是独立运行,各自完成重传,通道之间互不影响,可以实现多连接器数据传输聚合。
以下结合具体应用场景,对本申请实施例的数据包传输方法进行说明。
参见图7所示,为数据链路层重传TLP数据包的简要框图,发送端设备简称为TX端,接收端设备简称为RX端。在TX端的传输层有TLP数据包传输时,可以将TLP数据包发送给数据链路层。在TLP数据包经过数据链路层时,数据链路层为TLP数据包添加DLLP Type字段、序列号字段和CRC字段,DLLP Type字段为10000000,序列号字段为第一序列号,CRC字段为循环冗余校验码。数据链路层将TLP数据包存储到重传缓存区,并发送该TLP数据包到RX端。
RX端的数据链路层在接收到TLP数据包之后,进行CRC校验和数据包检查,并发送ACK数据包或者RSND数据包到TX端。比如说,若CRC校验错误,则发送RSND数据包到TX端。若CRC校验正确,则进行数据包检查,即比较第二序列号和目标序列号与预设数值之和,若第二序列号大于目标序列号与预设数值之和,则可以发送RSND数据包到TX端;若第二序列号小于或者等于目标序列号与预设数值之和,则可以发送ACK数据包到TX端。
其中,ACK数据包用于确认第二序列号的TLP数据包被接收到,因此,TX端的数据链路层在接收到ACK数据包之后,可以从重传缓存区中删除序列号小于或者等于第二序列号的TLP数据包。RSND数据包用于确认目标序列号以及之前的TLP数据包被接收到,目标序列号之后的TLP数据包没有被接收到,需要重传,因此,TX端的数据链路层在接收到RSND数据包之后,从重传缓存区中获取序列号大于该目标序列号的TLP数据包,并重传该TLP数据包。
RX端的数据链路层在接收到TLP数据包之后,对于正确接收的TLP数据包,剥离DLLP Type字段、序列号字段和CRC字段,并发送到RX端的传输层。
参见图7所示,针对TX端,还可以涉及MUX和De-MUX等模块,对此不做限制,针对RX端,还可以涉及MUX和De-MUX等模块,对此不做限制。其中,MUX可以是多路复合器模块,De-MUX可以是多路解复合器模块。
参见图8所示,为TX端的数据链路层重传TLP数据包的详细框图。
在TX端的传输层有TLP数据包传输时,向数据链路层申请TLP数据包传输,若重传缓存区(即重传Buffer)有剩余存储空间来存储TLP数据包,则允许传输层将TLP数据包发送给数据链路层,若没有剩余存储空间来存储TLP数据包,则禁止传输层将TLP数据包发送给数据链路层,即阻塞TLP数据包。
数据链路层包括Seq_num模块和CRC模块,在TLP数据包经过数据链路层时,Seq_num模块为TLP数据包添加SDLLP字段,即添加DLLP Type字段和序列号字段,CRC模块为TLP数据包添加EDLLP字段,即添加CRC字段。
其中,Seq_num模块内部是一个8bit(这里以8bit为例进行说明)的自加计数器(即上述实施例的第一序列号寄存器),当该计数器的值达到255时,下一次自加值变成0。当链路处于初始化状态时,该计数器的值会初始化为0,该计数器的每一个值是一个序列号,与一个TLP数据包对应。
数据链路层包括TLP Resend Buffer,TLP Resend Buffer是重传缓存区,数据链路层将TLP数据包存储到重传缓存区,并发送该TLP数据包到RX端。
数据链路层包括Clear Seq_num模块和Clear Timmer模块。Clear Seq_num模块是序列号清除模块,在链路处于INIT(初始化)状态时,Clear Seq_num模块会向RX端发送CLR数据包,通知RX端的数据链路层清除序列号的值,同时开启Clear Timmer模块。ClearTimmer模块为上述实施例的清除定时器,当清除定时器超时时,表示RX端未返回清除完成的DONE数据包,Clear Seq_num模块会重新发送CLR数据包,在清除定时器超时之前,若接收到清除完成的DONE数据包,则表示RX端已经清除序列号完成,INIT状态完成。
数据链路层包括Pass CRC模块,Pass CRC模块用于对接收到的所有数据包进行CRC校验,如果CRC校验错误,则Pass CRC模块会丢弃数据包,针对CRC校验正确的数据包,会将这个数据包发送给后面模块(如DONE模块)。
数据链路层包括DONE模块,DONE模块用于检测数据包是否为DONE数据包,如果是,则将这个数据包发送给Clear Seq_num模块,表示RX端清除序列号完成,如果否,则将这个数据包发送给后面模块(如ACK模块)。
数据链路层包括ACK模块,ACK模块用于判断数据包是ACK数据包还是RSND数据包。若是ACK数据包,则表示RX端正确接收到TLP数据包,需要清除重传缓存区中的TLP数据包。比如说,ACK数据包可以包括第二序列号,可以从重传缓存区中删除序列号小于或者等于该第二序列号的TLP数据包。
数据链路层包括Resend TLP模块,若是RSND数据包(即不是ACK数据包),则ResendTLP模块需要重新发送重传缓存区中的TLP数据包。比如说,RSND数据包可以包括目标序列号,Resend TLP模块可以从重传缓存区中获取序列号大于该目标序列号的TLP数据包,并重传该TLP数据包。
数据链路层包括Receive Seq_num(RSN[7:0])寄存器,用于记录最新一个接收到的正确Seq_num(序列号)。当处于INIT状态时,该寄存器被赋值为全1。
数据链路层包括Resend Timmer模块,Resend Timmer模块是看门狗定时器,在Resend TLP模块重传TLP数据包之后,可以启动看门狗定时器。在看门狗定时器超时之前,若接收到ACK数据包或者RSND数据包,则关闭看门狗定时器,即将看门狗定时器清零。或者,在看门狗定时器超时时,若未接收到ACK数据包或者RSND数据包,即长时间未接收到ACK数据包或者RSND数据包,则Resend TLP模块会重新发送重传缓存区内的所有TLP数据包。
数据链路层包括Resend Counter模块,Resend Counter模块是重传计数模块,在接收到ACK数据包时,会将Resend Counter模块的计数值清零,在接收到RSND数据包时,会对Resend Counter模块进行计数。在Resend Counter模块的计数值超过设定值后,可以产生error中断信号,通知上层进行异常处理。
参见图9所示,为RX端的数据链路层重传TLP数据包的详细框图。
数据链路层包括Pass CRC模块,Pass CRC模块用于对接收到的所有数据包进行CRC校验,如果CRC校验错误,则Pass CRC模块将数据包发送给TLP模块,如果CRC校验正确,则Pass CRC模块将数据包发送给CLR模块。
数据链路层包括TLP模块,TLP模块判断CRC校验错误的数据包是否为TLP数据包,比如说,若DLLP Type字段为10000000(0X80),则表示数据包是TLP数据包,否则,表示数据包不是TLP数据包。进一步的,如果是TLP数据包,若RSND Flag(RSND标记位)的取值为第一取值,则由RSND模块发送RSND数据包,若RSND Flag的取值为第二取值,则RSND模块不发送RSND数据包。如果不是TLP数据包,则TLP模块可以丢弃该数据包。
数据链路层包括CLR模块,CRC校验正确的数据包进入CLR模块,CLR模块判断数据包是否为CLR数据包。如果是CLR数据包,则由DONE模块发送DONE数据包,且由CLR模块或者DONE模块清除Next Seq_num(NSN[7:0])寄存器值,即清除Next Seq_num(NSN[7:0])中序列号,Next Seq_num(NSN[7:0])寄存器是上述实施例的第二序列号寄存器。如果不是CLR数据包,则表示数据包是TLP数据包,CLR模块可以将TLP数据包发送给比较模块。
数据链路层包括比较模块,比较模块在接收到TLP数据包之后,从TLP数据包中提取出Seq_num值(第二序列号)存入Current Seq_num(NSN[7:0])寄存器,第二序列号记为CSN(Current Seq_num,当前序号)值。比较模块从Next Seq_num(NSN[7:0])寄存器中获取Seq_num值(目标序列号),目标序列号记为NSN(Next Seq_num,下一个序号)值。比较模块比较CSN值和NSN值,如果CSN值小于NSN值+1,则表示接收到已经被正确收到的TLP数据包,由ACK模块发送ACK数据包,通知TX端清除重传缓存区中的TLP数据包。
如果CSN值等于NSN值+1,则表示接收到正确的TLP数据包,将TLP数据包发送到传输层,由ACK模块发送ACK数据包,通知TX端清除重传缓存区中TLP数据包,将Current Seq_num(NSN[7:0])寄存器中的值更新为CSN值。
如果CSN值大于NSN值+1,则表示中间存在TLP数据包遗漏,需要由RSND模块发送RSND数据包,通知TX端重新发送重传缓存区中的TLP数据包。
数据链路层包括RSND Flag(RSND标记位),在RSND模块发送RSND数据包时,RSNDFlag被置位,并且RSND模块不再发送RSND数据包。当接收到的TLP数据包的CSN值小于或等于NSN值+1时,RSND Flag被清零。
显然,RSND模块在每次需要发送RSND数据包时,可以先查询RSND Flag的取值,若RSND Flag被置位,则RSND模块不发送RSND数据包,若RSND Flag为0,则RSND模块可以发送RSND数据包。
数据链路层包括RSND模块、ACK模块和DONE模块,RSND模块用于组装RSND数据包,并发送RSND数据包,ACK模块用于组装ACK数据包,并发送ACK数据包,DONE模块用于组装DONE数据包,并发送DONE数据包。
基于与上述方法同样的申请构思,本申请实施例提出一种数据包传输方法,发送端设备包括第一数据链路层,接收端设备包括第二数据链路层,参见图10所示,为该方法的流程示意图,该方法应用于第一数据链路层,该方法包括:
步骤1001、在接收到TLP数据包后,为该TLP数据包封装第一序列号;其中,发送端设备维护有第一序列号寄存器,第一序列号寄存器用于存储最后一个已发送TLP数据包的序列号,该第一序列号是该序列号与预设数值之和。
步骤1002、将第一序列号寄存器存储的序列号更新为该第一序列号,将该TLP数据包存储到重传缓存区,并向第二数据链路层发送该TLP数据包。
步骤1003、若接收到第二数据链路层发送的RSND数据包,且该RSND数据包可以包括目标序列号,该目标序列号可以是接收端设备维护的第二序列号寄存器中存储的序列号,则从重传缓存区中获取序列号大于该目标序列号的TLP数据包,并向第二数据链路层重传该TLP数据包。
在一种可能的实施方式中,向第二数据链路层发送该TLP数据包之后,若接收到第二数据链路层发送的ACK数据包,且该ACK数据包包括第二序列号,则从重传缓存区中删除序列号小于或者等于该第二序列号的TLP数据包;其中,第二序列号是接收端设备从接收到的TLP数据包中解析,且第二序列号小于或等于第二序列号寄存器中的目标序列号与预设数值之和。
在一种可能的实施方式中,第一数据链路层在向第二数据链路层重传该TLP数据包之后,还可以启动看门狗定时器;在看门狗定时器超时之前,若接收到第二数据链路层返回的ACK数据包,则可以关闭看门狗定时器;在看门狗定时器超时时,若未接收到第二数据链路层返回的ACK数据包,则可以重传该重传缓存区中所有TLP数据包,并重新启动看门狗定时器。
在一种可能的实施方式中,在需要清除第一序列号寄存器中的序列号时,还可以向第二数据链路层发送CLR数据包,并启动清除定时器;在清除定时器超时之前,若接收到DONE数据包,则清除第一序列号寄存器中的序列号,并关闭清除定时器;在清除定时器超时时,若未接收到DONE数据包,则重新启动清除定时器,并重新向第二数据链路层发送CLR数据包。
基于与上述方法同样的申请构思,本申请实施例提出一种数据包传输方法,发送端设备包括第一数据链路层,接收端设备包括第二数据链路层,参见图11所示,为该方法的流程示意图,该方法应用于第二数据链路层,该方法包括:
步骤1101、在接收到TLP数据包后,从该TLP数据包中解析第二序列号。
步骤1102、若第二序列号大于第二序列号寄存器中存储的目标序列号与预设数值之和,则向第一数据链路层发送封装有目标序列号的RSND数据包。
示例性的,接收端设备维护有第二序列号寄存器,第二序列号寄存器用于存储最后一个已成功接收的TLP数据包的序列号。
在一种可能的实施方式中,从该TLP数据包中解析第二序列号之后,若第二序列号等于目标序列号与预设数值之和,则可以向第一数据链路层发送封装有第二序列号的ACK数据包,并将第二序列号寄存器中存储的目标序列号更新为第二序列号。或者,若第二序列号小于目标序列号与预设数值之和,则可以向第一数据链路层发送封装有第二序列号的ACK数据包。
在一种可能的实施方式中,在向第一数据链路层发送封装有目标序列号的RSND数据包时,若RSND标记位的取值为第一取值,则可以向第一数据链路层发送封装有目标序列号的RSND数据包,并将RSND标记位的取值修改为第二取值。在从该TLP数据包中解析第二序列号之后,若第二序列号大于目标序列号与预设数值之和,且RSND标记位的取值为第二取值,则禁止向第一数据链路层发送RSND数据包;若第二序列号等于目标序列号与预设数值之和,且RSND标记位的取值为第二取值,则将RSND标记位的取值修改为第一取值。
在一种可能的实施方式中,在接收到TLP数据包之后,还可以从该TLP数据包中解析循环冗余校验码;若基于该循环冗余校验码确定该TLP数据包为正常数据包,则执行从该TLP数据包中解析第二序列号的操作;若基于该循环冗余校验码确定该TLP数据包为异常数据包,则从第二序列号寄存器中读取目标序列号,并向第一数据链路层发送封装有目标序列号的RSND数据包。
在一种可能的实施方式中,若接收到第一数据链路层发送的CLR数据包,则清除第二序列号寄存器中的序列号,并向第一数据链路层发送DONE数据包。
基于与上述方法同样的申请构思,本申请实施例中提出一种数据包传输系统,该数据包传输系统可以包括发送端设备和接收端设备,发送端设备包括第一数据链路层,接收端设备包括第二数据链路层,其中:
所述第一数据链路层,用于在接收到TLP数据包后,为所述TLP数据包封装第一序列号;其中,第一序列号寄存器用于存储最后一个已发送TLP数据包的序列号,所述第一序列号是该序列号与预设数值之和;
所述第一数据链路层,用于将所述第一序列号寄存器存储的序列号更新为所述第一序列号,将TLP数据包存储到重传缓存区,并发送所述TLP数据包;
所述第二数据链路层,用于在接收到TLP数据包后,从该TLP数据包中解析第二序列号;若所述第二序列号大于第二序列号寄存器中存储的目标序列号与预设数值之和,则向第一数据链路层发送封装有所述目标序列号的RSND数据包;第二序列号寄存器用于存储最后一个已成功接收的TLP数据包的序列号;
所述第一数据链路层,用于在接收到所述RSND数据包后,从所述重传缓存区中获取序列号大于所述目标序列号的TLP数据包,并重传该TLP数据包。
示例性的,所述第二数据链路层,用于若所述第二序列号等于所述目标序列号与预设数值之和,则向第一数据链路层发送封装有所述第二序列号的ACK数据包,将所述第二序列号寄存器存储的目标序列号更新为所述第二序列号;或者,若所述第二序列号小于所述目标序列号与预设数值之和,则向第一数据链路层发送封装有所述第二序列号的ACK数据包;
所述第一数据链路层,用于在接收到所述ACK数据包后,从所述重传缓存区中删除序列号小于或者等于所述第二序列号的TLP数据包。
示例性的,所述第二数据链路层,用于若RSND标记位的取值为第一取值,则向第一数据链路层发送所述RSND数据包,将所述RSND标记位的取值修改为第二取值;若所述第二序列号大于所述目标序列号与预设数值之和,且RSND标记位的取值为第二取值,则禁止向第一数据链路层发送所述RSND数据包;若所述第二序列号等于所述目标序列号与预设数值之和,且RSND标记位的取值为第二取值,则将所述RSND标记位的取值修改为第一取值。
示例性的,所述第一数据链路层,用于启动看门狗定时器;在看门狗定时器超时之前,若接收到第二数据链路层返回的ACK数据包,则关闭所述看门狗定时器;在所述看门狗定时器超时时,若未接收到第二数据链路层返回的ACK数据包,则重传所述重传缓存区中所有TLP数据包,并重新启动看门狗定时器。
示例性的,所述第二数据链路层,用于从该TLP数据包中解析循环冗余校验码;若基于所述循环冗余校验码确定该TLP数据包为正常数据包,则从该TLP数据包中解析第二序列号;若基于所述循环冗余校验码确定该TLP数据包为异常数据包,则从所述第二序列号寄存器中读取目标序列号,并向所述第一数据链路层发送封装有所述目标序列号的RSND数据包。
示例性的,所述第一数据链路层,用于在需要清除所述第一序列号寄存器中的序列号时,向所述第二数据链路层发送CLR数据包,并启动清除定时器;
所述第二数据链路层,用于在接收到所述CLR数据包后,清除所述第二序列号寄存器中的序列号,并向所述第一数据链路层发送DONE数据包;
所述第一数据链路层,用于在所述清除定时器超时之前,若接收到DONE数据包,则清除所述第一序列号寄存器中的序列号,并关闭所述清除定时器;
在所述清除定时器超时时,若未接收到DONE数据包,则重新启动清除定时器,并重新向所述第二数据链路层发送CLR数据包。
基于与上述方法同样的申请构思,本申请实施例中提出一种发送端设备,所述发送端设备包括第一数据链路层,其中:所述第一数据链路层,用于在接收到TLP数据包后,为所述TLP数据包封装第一序列号;其中,所述发送端设备维护有第一序列号寄存器,所述第一序列号寄存器用于存储最后一个已发送TLP数据包的序列号,所述第一序列号是该序列号与预设数值之和;
将所述第一序列号寄存器存储的序列号更新为所述第一序列号,将所述TLP数据包存储到重传缓存区,并向所述第二数据链路层发送所述TLP数据包;
若接收到所述第二数据链路层发送的RSND数据包,且所述RSND数据包包括目标序列号,所述目标序列号是所述接收端设备维护的第二序列号寄存器中存储的序列号,则从所述重传缓存区中获取序列号大于所述目标序列号的TLP数据包,并向所述第二数据链路层重传该TLP数据包。
基于与上述方法同样的申请构思,本申请实施例中提出一种接收端设备,所述接收端设备包括第二数据链路层,其中:所述第二数据链路层,用于在接收到TLP数据包后,从该TLP数据包中解析第二序列号;
若所述第二序列号大于第二序列号寄存器中存储的目标序列号与预设数值之和,则向第一数据链路层发送封装有所述目标序列号的RSND数据包;
其中,所述接收端设备维护有第二序列号寄存器,所述第二序列号寄存器用于存储最后一个已成功接收的TLP数据包的序列号。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (12)
1.一种数据包传输方法,其特征在于,发送端设备包括第一数据链路层,接收端设备包括第二数据链路层,所述方法包括:
所述第一数据链路层在接收到TLP数据包后,为所述TLP数据包封装第一序列号;其中,第一序列号寄存器用于存储最后一个已发送TLP数据包的序列号,所述第一序列号是该序列号与预设数值之和;
所述第一数据链路层将所述第一序列号寄存器存储的序列号更新为所述第一序列号,将TLP数据包存储到重传缓存区,并发送所述TLP数据包;
所述第二数据链路层在接收到TLP数据包后,从该TLP数据包中解析第二序列号;若所述第二序列号大于第二序列号寄存器中存储的目标序列号与预设数值之和,则向第一数据链路层发送封装有所述目标序列号的RSND数据包;其中,第二序列号寄存器用于存储最后一个已成功接收的TLP数据包的序列号;
所述第一数据链路层在接收到所述RSND数据包后,从所述重传缓存区中获取序列号大于所述目标序列号的TLP数据包,并重传该TLP数据包。
2.根据权利要求1所述的方法,其特征在于,所述第二数据链路层从该TLP数据包中解析第二序列号之后,所述方法还包括:
若所述第二序列号等于所述目标序列号与预设数值之和,则所述第二数据链路层向第一数据链路层发送封装有所述第二序列号的ACK数据包,将所述第二序列号寄存器存储的目标序列号更新为所述第二序列号;或者,若所述第二序列号小于所述目标序列号与预设数值之和,则所述第二数据链路层向第一数据链路层发送封装有所述第二序列号的ACK数据包;
所述第一数据链路层在接收到所述ACK数据包后,从所述重传缓存区中删除序列号小于或者等于所述第二序列号的TLP数据包。
3.根据权利要求1或2所述的方法,其特征在于,
所述第二数据链路层向第一数据链路层发送封装有所述目标序列号的RSND数据包,包括:若RSND标记位的取值为第一取值,则向第一数据链路层发送所述RSND数据包,将所述RSND标记位的取值修改为第二取值;
所述第二数据链路层从该TLP数据包中解析第二序列号之后,所述方法还包括:若所述第二序列号大于所述目标序列号与预设数值之和,且RSND标记位的取值为第二取值,则禁止向第一数据链路层发送所述RSND数据包;若所述第二序列号等于所述目标序列号与预设数值之和,且RSND标记位的取值为第二取值,则将所述RSND标记位的取值修改为第一取值。
4.根据权利要求3所述的方法,其特征在于,
所述第一数据链路层重传该TLP数据包之后,所述方法还包括:
所述第一数据链路层启动看门狗定时器;
在所述看门狗定时器超时之前,若接收到所述第二数据链路层返回的ACK数据包,则关闭所述看门狗定时器;
在所述看门狗定时器超时时,若未接收到所述第二数据链路层返回的ACK数据包,则重传所述重传缓存区中所有TLP数据包,并重新启动看门狗定时器。
5.根据权利要求1或2所述的方法,其特征在于,
所述第二数据链路层在接收到TLP数据包之后,所述方法还包括:
所述第二数据链路层从该TLP数据包中解析循环冗余校验码;
若所述第二数据链路层基于所述循环冗余校验码确定该TLP数据包为正常数据包,则执行从该TLP数据包中解析第二序列号的操作;
若所述第二数据链路层基于所述循环冗余校验码确定该TLP数据包为异常数据包,则从所述第二序列号寄存器中读取目标序列号,并向所述第一数据链路层发送封装有所述目标序列号的RSND数据包。
6.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
在需要清除所述第一序列号寄存器中的序列号时,所述第一数据链路层向所述第二数据链路层发送CLR数据包,并启动清除定时器;
所述第二数据链路层在接收到所述CLR数据包后,清除所述第二序列号寄存器中的序列号,并向所述第一数据链路层发送DONE数据包;
在所述清除定时器超时之前,若所述第一数据链路层接收到DONE数据包,则清除所述第一序列号寄存器中的序列号,并关闭所述清除定时器;
在所述清除定时器超时时,若所述第一数据链路层未接收到DONE数据包,则重新启动清除定时器,并重新向所述第二数据链路层发送CLR数据包。
7.根据权利要求6所述的方法,其特征在于,
所述第一数据链路层在接收到TLP数据包之后,为TLP数据包封装第一数据包类型,所述第一数据包类型表示数据包是TLP数据包;
所述第二数据链路层向第一数据链路层发送RSND数据包时,为RSND数据包封装第二数据包类型,所述第二数据包类型表示数据包是RSND数据包;
所述第二数据链路层向第一数据链路层发送ACK数据包时,为ACK数据包封装第三数据包类型,所述第三数据包类型表示数据包是ACK数据包;
所述第一数据链路层向第二数据链路层发送CLR数据包时,为CLR数据包封装第四数据包类型,所述第四数据包类型表示数据包是CLR数据包;
所述第二数据链路层向第一数据链路层发送DONE数据包时,为DONE数据包封装第五数据包类型,所述第五数据包类型表示数据包是DONE数据包。
8.根据权利要求1或2所述的方法,其特征在于,
所述发送端设备为相机,所述接收端设备为采集卡;或者,
所述发送端设备为采集卡,所述接收端设备为相机;
其中,所述发送端设备与所述接收端设备之间通过目标协议通信。
9.一种数据包传输方法,其特征在于,发送端设备包括第一数据链路层,接收端设备包括第二数据链路层,该方法应用于第一数据链路层,该方法包括:
在接收到TLP数据包后,为所述TLP数据包封装第一序列号;其中,所述发送端设备维护有第一序列号寄存器,所述第一序列号寄存器用于存储最后一个已发送TLP数据包的序列号,所述第一序列号是该序列号与预设数值之和;
将所述第一序列号寄存器存储的序列号更新为所述第一序列号,将所述TLP数据包存储到重传缓存区,并向所述第二数据链路层发送所述TLP数据包;
若接收到所述第二数据链路层发送的RSND数据包,且所述RSND数据包包括目标序列号,所述目标序列号是所述接收端设备维护的第二序列号寄存器中存储的序列号,则从所述重传缓存区中获取序列号大于所述目标序列号的TLP数据包,并向所述第二数据链路层重传该TLP数据包。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
若接收到所述第二数据链路层发送的ACK数据包,且所述ACK数据包包括第二序列号,则从所述重传缓存区中删除序列号小于或者等于所述第二序列号的TLP数据包;其中,所述第二序列号是接收端设备从接收到的TLP数据包中解析,且所述第二序列号小于或等于所述目标序列号与预设数值之和。
11.一种数据包传输方法,其特征在于,发送端设备包括第一数据链路层,接收端设备包括第二数据链路层,该方法应用于第二数据链路层,该方法包括:
在接收到TLP数据包后,从该TLP数据包中解析第二序列号;
若所述第二序列号大于第二序列号寄存器中存储的目标序列号与预设数值之和,则向第一数据链路层发送封装有所述目标序列号的RSND数据包;
其中,所述接收端设备维护有第二序列号寄存器,所述第二序列号寄存器用于存储最后一个已成功接收的TLP数据包的序列号。
12.根据权利要求11所述的方法,其特征在于,
所述从该TLP数据包中解析第二序列号之后,所述方法还包括:
若所述第二序列号等于所述目标序列号与预设数值之和,则向所述第一数据链路层发送封装有所述第二序列号的ACK数据包,并将所述第二序列号寄存器中存储的目标序列号更新为所述第二序列号;
若所述第二序列号小于所述目标序列号与预设数值之和,则向所述第一数据链路层发送封装有所述第二序列号的ACK数据包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210682235.8A CN115173990A (zh) | 2022-06-15 | 2022-06-15 | 一种数据包传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210682235.8A CN115173990A (zh) | 2022-06-15 | 2022-06-15 | 一种数据包传输方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115173990A true CN115173990A (zh) | 2022-10-11 |
Family
ID=83485127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210682235.8A Pending CN115173990A (zh) | 2022-06-15 | 2022-06-15 | 一种数据包传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115173990A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104426866A (zh) * | 2013-08-28 | 2015-03-18 | 华为技术有限公司 | 一种数据传输方法及装置 |
US20200145341A1 (en) * | 2019-05-13 | 2020-05-07 | Debendra Das Sharma | Ordered sets for high-speed interconnects |
CN114095117A (zh) * | 2020-08-24 | 2022-02-25 | 华为技术有限公司 | 一种以太网错误帧的重传方法及相关装置 |
CN114244780A (zh) * | 2021-12-27 | 2022-03-25 | 海光信息技术股份有限公司 | 一种数据传输方法、数据传输装置和相关设备 |
-
2022
- 2022-06-15 CN CN202210682235.8A patent/CN115173990A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104426866A (zh) * | 2013-08-28 | 2015-03-18 | 华为技术有限公司 | 一种数据传输方法及装置 |
US20200145341A1 (en) * | 2019-05-13 | 2020-05-07 | Debendra Das Sharma | Ordered sets for high-speed interconnects |
CN114095117A (zh) * | 2020-08-24 | 2022-02-25 | 华为技术有限公司 | 一种以太网错误帧的重传方法及相关装置 |
CN114244780A (zh) * | 2021-12-27 | 2022-03-25 | 海光信息技术股份有限公司 | 一种数据传输方法、数据传输装置和相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11063884B2 (en) | Ethernet enhancements | |
ES2272283T3 (es) | Metodo de encapsulacion de unidades de datos de protocolos. | |
US20030023915A1 (en) | Forward error correction system and method for packet based communication systems | |
US20050041663A1 (en) | Method to avoid potential deadlocks in a SDU discard function | |
US6640325B1 (en) | Immediate negative acknowledgement for a communication network | |
JPS5866448A (ja) | パケット交換における誤り検出方式 | |
US6741566B1 (en) | Remote management ethernet network and device | |
CN112332951B (zh) | 一种以太网帧抢占方法、装置、设备及存储介质 | |
CN109039552B (zh) | 一种数据恢复方法及装置 | |
US20160285776A1 (en) | Physical-layer signaling of flow control updates | |
US8467302B2 (en) | Wireless data transmission method, transmitting system, and receiving system | |
CN112769939B (zh) | 一种用于实时通讯的大数据可靠传输方法 | |
CN108551425A (zh) | 基于工业以太网的数据传输系统、方法和通信设备 | |
EP1193938A1 (en) | Method and system for transmitting data | |
CN105871512A (zh) | 一种数据传输方法及装置 | |
EP4131817A1 (en) | Data transmission method and network device | |
JP7210867B2 (ja) | 確認パケット伝送方法および通信デバイス | |
CN115173990A (zh) | 一种数据包传输方法 | |
CN114126084A (zh) | 数据处理方法、基站、终端及存储介质 | |
CN116155826A (zh) | 报文收发方法、网络设备、系统和存储介质 | |
JP2004064271A (ja) | 無線lanシステム | |
US20230269062A1 (en) | Communication apparatus and communication system | |
US7596143B2 (en) | Method and apparatus for handling potentially corrupt frames | |
US7428242B2 (en) | Action list for a split media access and control layer communications system | |
CN106209733B (zh) | 一种数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 310051 room 304, B / F, building 2, 399 Danfeng Road, Binjiang District, Hangzhou City, Zhejiang Province Applicant after: Hangzhou Hikvision Robot Co.,Ltd. Address before: 310051 room 304, B / F, building 2, 399 Danfeng Road, Binjiang District, Hangzhou City, Zhejiang Province Applicant before: HANGZHOU HIKROBOT TECHNOLOGY Co.,Ltd. |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |