CN107852398A - 一种基于udp协议的网络编码及传输方法 - Google Patents
一种基于udp协议的网络编码及传输方法 Download PDFInfo
- Publication number
- CN107852398A CN107852398A CN201380081163.0A CN201380081163A CN107852398A CN 107852398 A CN107852398 A CN 107852398A CN 201380081163 A CN201380081163 A CN 201380081163A CN 107852398 A CN107852398 A CN 107852398A
- Authority
- CN
- China
- Prior art keywords
- data
- transmission
- layer
- packet
- network coding
- 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
Images
Classifications
-
- 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 Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
Abstract
本发明涉及一种基于UDP协议的网络编码及传输方法,包括如下步骤:构建使用UPD协议与传输层连接的网络编码层数据或文件由发送端的应用层进入发送端的网络编码层,在发送端的网络编码层处理形成网络编码,将其按照设定的方式形成带有编号的数据包,通过发送端传输层发送到接收端;接收端的网络编码层通过接收端的传输层接收到所述编码数据,识别接收到的数据包的编号,依据接收的编号返回所述发送端不同的应答信号,并对其进行解码得到数据或文件,并传输到接收端的应用层。实施本发明的基于UDP协议的网络编码及传输方法,具有以下有益效果:较易实现、接收端延迟较小、适应网络环境变化。
Description
一种基于 UDP协议的网络编码及传输方法
技术领域
本发明涉及网络编码传输领域, 更具体地说, 涉及一种基于 UDP协议的 网络编码及传输方法。
背景技术
目前, 网络编码在传输层的研究主要基于 TCP协议, 如基于网络编码理 论的 TCP协议( TCP/NC )。 在现有技术中, 为了结合 TCP和网络编码的优点, 提出了一个新的协议称为 TCP/NC。 TCP/NC的数据包使用随机线性网络编码来 编码单个数据流, 修改了 TCP的确认(ACK)方案,以便它应答确认自由度(收到 的新编码数据包的数量)而取代单个数据包。 TCP/NC利用随机线性编码技术 来掩盖 TCP数据包的丟失, 有效提高吞吐量。 但是对于越来越广泛使用的无 线网络, 应用 TCP 协议效果并不好, 这是由于传统的传输层协议会把包丟 失看成是网络拥塞,从而会减小拥塞窗口,导致网络吞吐量下降。 目前, 基于 网络编码理论的 TCP协议的方法(TCP/NC) , 即在 TCP层与 IP层之间增加网络编 码层(NC层) , 需要对现有的 TCP协议进行一些修改。 发送端的 NC层从 TCP 层收到数据包并将它们保存在一个代表编码窗口的编码緩存中, 对緩存的原 始数据包进行编码, 然后重新封装编码后的数据包并发送; 其接收端网络编 码层负责从网络中接收到编码后的数据包并緩存, 然后向发送端返回 ACK消 息,对接收到的编码数据包进行解码,最后将解码后的原始数据包传递给 TCP 层。 发送方在编码窗口中生成并发送数据包的随机线性组合, 线性组合系数 通过包头来传输。
在这种情况下,对于编码窗口中的数据包,将进行 R次随机线性组合( R 是冗余系数, 为成功接收概率的倒数, 其可能不是整数, 故在运算时将向 上取整)发送出去。 当网络情况较为稳定, 丟包率变化不大的情况下, 可以 通过设置固定最优的冗余系数 R (最优冗余系数 R等于成功接收率的倒数) 来提高网络吞吐量和链路利用率。 但在网络情况不明, 丟包率经常变化的 环境下,冗余系数的 R不易确定,如果 R太小,将不足以掩盖数据包的丟失, 因此, 会出现大量的超时从而导致吞吐量低下; 反之, 发送速率会受到编码 自身速率的限制,也会降低吞吐量,而且发送太多的线性组合也会阻塞网络。
因此, 在现有技术中, 除了对 TCP协议修改较大、 难于实现外, 其使用编码 窗口进行编码也可能带来接收端的较大的延迟, 同时固定冗余系数值的
TCP/NC协议不能 ^艮好地适应网络环境不断变化的情况,特别是受外界干扰影 响较大的无线网络环境。
发明内容
本发明要解决的技术问题在于, 针对现有技术的上述较难实现、 接收端 延迟较大、 不能适应网络环境变化的缺陷, 提供一种较易实现、 接收端延迟 较小、 适应网络环境变化的基于 UDP协议的网络编码及传输方法。
本发明解决其技术问题所采用的技术方案是: 构造一种基于 UDP协议的 网络编码及传输方法, 包括如下步骤:
A )在传输层和应用层之间构建网络编码层; 所述网络编码层分别 与其相应的传输层和应用层连接, 所述网络编码使用所述传输层的 UDP协议 与所述传输层建立连接;
B )数据或文件由发送端的应用层进入发送端的网络编码层, 在发 送端的网络编码层緩存并进行网络编码, 将其按照设定的方式形成带有编号 的数据包, 通过发送端传输层, 采取可靠传输的传输方式发送到接收端;
C )接收端的网络编码层通过接收端的传输层接收到所述编码数据, 识别接收到的数据包的编号, 依据接收的编号返回不同的应答信号给所述发 送端, 同时对其进行解码得到数据或文件, 并传输到接收端的应用层。
更进一步地, 还包括如下步骤:
D )所述发送端依据接收到所述接收端发来的不同类型的应答信号, 决定重发或不重发数据块。
更进一步地, 所述步骤 B ) 中进一步包括如下步骤:
B1 )所述发送端与接收端建立连接时, 发送携带有设定传输参数的 数据包通知所述接收端, 所述接收端在接收到所述数据包后返回确认信息并 按照所述传输参数设定该接收端。
更进一步地, 所述步骤 B ) 中进一步包括如下步骤:
B2 )所述发送端将要传输的数据或文件按其流入顺序划分为第一设 定长度的数据包, 当余下留下的文件或数据长度小于第一设定长度时, 填入
数据零以保持数据包长度, 使划分后的每个数据包具有相同的长度; 设定个 数为 blks ize的数据包构成一个数据块, 数据包是传输的最小单位; 数据块 所包含的数据包个数在传输过程中依据接收端返回的信息调节。
更进一步地, 所述步骤 B ) 中进一步包括如下步骤:
B3 )所述发送端通过单位时间内允许出现的令牌个数控制所述数据 包的发送速度, 每个令牌允许发送一个数据包; 所述单位时间内出现的令牌 数量依据数据包传输的时间调节。
更进一步地, 所述单位时间内允许发送的令牌数量根据一个数据包在所 述发送端和所述接收端的传输时间调节并通知所述接收端; 所述数据包传输 的时间越长, 单位时间内允许发送的令牌数量越少。
更进一步地, 所述数据块包括的数据包数量依据每个数据包的传输时间 调节, 所述数据块包括的数据包数量与数据包在所述发送端和接收端之间的 传输时间成反比。
更进一步地, 所述步骤 C ) 中进一步包括如下步骤:
C1 )所述接收端检测已经接收到的数据包编号, 如果编号连续, 发 送确认应答信号到所述发送端; 如果编号不连续, 发送扩展确认应答信号到 所述发送端, 所述扩展确认信号中携带有所述接收端接收到的最后一个连续 的数据包编号。
更进一步地, 所述步骤 C ) 中进一步包括如下步骤:
C2 )在接收到新的数据块时, 初始化尺寸为 blks ize*blks ize的编 码系数矩阵和相应的有效载荷结构, 其中, blks ize是当前设定的数据块的 长度;
C3 )对于每个接收到的数据包, 将其编码系数和有效载荷分别插入 上述编码系数矩阵和相应的有效载荷结构中, 使用高斯消元法判断其与之前 的数据包是否线性无关, 如是, 执行步骤 C4 ); 否则, 执行步骤 C5 );
C4 )返回确认信号, 更新当前块自由度, 使其加 1 , 并判断更新后 的当前块自由度是否等于数据块中的当前设定长度, 如是, 判断该数据块可 以解码; 否则, 等待接收下一数据包;
C5 )发送确认信号,但不更新块自由度,并等待接收下一数据包。
更进一步地, 如果发送端发送一个数据包且未收到确认信号的时间大于 最后一个数据包的传输时间加上重传超时周期, 发送端采用慢启动模式传输 数据包; 所述慢启动模式包括设置所述单位时间允许传输的令牌数为缺省值 , 每次成功传输一个数据包后所述令牌数加一, 直到所述令牌数达到设定门限 后, 改为正常传输状态。
实施本发明的基于 UDP协议的网络编码及传输方法,具有以下有益效果: 由于将网络编码层设置在应用层和传输层之间, 该网络编码层通过传输层的 UDP协议栈与传输层连接并传输数据, 而 UDP协议的修改难度和工作量均大 大小于对 TCP/ IP协议的修改, 同时,在接收端和发送端之间使用确认信号, 采用可靠的 UDP传输形式保证数据的可靠传输; 而且可以实时地根据数据包 的传输时间, 调节单位时间内传输的数据包数量以及每个数据块中包括数据 包的数量, 以适应网络环境的变化。 所以, 其较易实现、 接收端延迟较小、 适应网络环境变化。
附图说明
图 1是本发明基于 UDP协议的网络编码及传输方法实施例中网络编码层 设置的示意图;
图 2是所述实施例中的数据传输时一种情况下的流程图;
图 3是所述实施例中发送端发送数据及拥塞控制的的流程图。
图 4 是所述实施例中接受端解码的流程图;
图 5 是网络编码层可靠传输的六种状态转换图。 具体实施方式
下面将结合附图对本发明实施例作进一步说明。
如图 1和图 2所示, 在本发明的基于 UDP协议的网络编码及传输方法实 施例中, 该方法包括如下步骤:
步骤 S11 构建网络编码层,使其分别与应用层和传输层连接: 在本步骤 中, 为了实现编码及数据传输, 需要构建一个编码的机构, 并且该机构在编 码后要能够将得到的编码数据传输到接收端进行解码; 所以, 在发送端和接 收端均需要设置网络编码层, 该网络编码层在作为接收端时, 对数据进行编
码, 得到编码数据; 而在作为接收端时, 对接收到的编码数据进行解码。 在 本实施例中, 发送端和接收端的结构是相同的, 一个终端, 其发起连接时, 就是发送端,其在别的终端要求下与对方连接时,就是接收端。在本步骤中, 在终端的传输层和应用层之间构建网络编码层; 该网络编码层分别与传输层 和应用层连接, 在与传输层的连接中, 网络编码层使用 (或者通过)传输层 的 UDP协议与该传输层建立连接。 上述网络编码层的位置及数据传输示意图 请参见图 1 , 在图 1 中, 实线箭头表示数据传输路径, 而虚线的箭头表示应 答信号 (ACK ) 的传输路径。
步骤 S12 形成网络编码, 并行成带有编号的数据包, 由发送端发送到接 收端: 在本步骤中, 一个终端需要将数据或文件传输到另一个终端, 于是, 该终端发起连接, 作为发送端; 而另一个终端响应其发起的连接, 作为接收 端。该发送端将需要传输的文件由应用层传输到网络编码层,对其进行编码, 得到编码数据; 这些得到的编码数据依次进入发送端的传输层; 在发送端的 传输层中对其进行处理, 得到带有编号的数据包, 多个这样的数据包构成一 个数据块, 通过传输层发送到网络上。 在上述数据发送时, 传输层以数据包 为单位发送数据, 但是, 网络编码层是以数据块为单位对编码数据进行解码 的。 在上述传输过程中, 包括了传输参数的设置、 数据包的发送以及确认信 号 (接收端收到数据包后发送的) 的接收等等, 具体情况稍后详述。
步骤 S1 3 接收端接收数据包,取得其编号, 并依据编号情况发送不同的 应答信号到发送端: 当数据通过网络链路到达接收端后, 接收端接收上述数 据包, 并在传输层中取得这些数据包的编号, 依据之前取得的编号和当前取 得的编号之间的关系, 发送不同的确认信号到发送端, 例如, 如果得到的数 据包编号都是连续的, 表明其中没有丟包的情况出现, 发送确认信号到发送 端; 如果数据包的编号不是连续的, 表明中间有数据包没有接收到, 发送扩 展确认信号到发送端。 其中, 上述扩展确认信号携带有最后收到的连续的数 据包的编号和当前收到的数据包编号, 便于发送端判断重发哪些数据包。
步骤 S14 发送端依据不同的应答信号决定重发或不重发相关的数据包: 在本步骤中, 发送端依据接收到的、 接收端发来的不同类型的应答信号, 决 定重发或不重发数据包, 在需要重发的情况下, 还要判断需要重发哪些数据
包。
在本实施例中, 具体来讲, 步骤 S12中还包括了多个步骤, 如下:
步骤 S21发送端发送带有传输参数的数据包到接收端, 接收端收到 后返回确认信号并按其设置: 在网络传输中, 由于数据所需要到达的接收端 通常是不定的, 为了保证传输, 需要发送端在发送数据之前, 也就是建立连 接时通知接收端其传输参数, 便于接收端按照这些参数进行设置, 从而实现 连接传输数据。 在本步骤中, 发送端在建立与接收端的连接时, 发送携带有 设定传输参数的数据包通知所述接收端, 而接收端在接收到所述数据包后返 回确认信息并按照所述传输参数设定该接收端。
步骤 S22设置或按规定调数据块大小: 在本步骤中, 发送端将要传输的 数据或文件按其流入顺序划分为第一设定长度的数据包, 当余下的文件或数 据长度小于第一设定长度时(即当按照第一设定长度划分得到整数个数据包, 还剩余一些数据尚未划分, 但这些数据的长度小于第一设定长度), 填入数 据零以保持数据包长度; 设定个数的数据包构成一个数据块, 数据包是传输 的最小单位; 数据块所包含的数据包个数在传输过程中依据接收端返回的信 息调节。 即发送方把流或文件分割成多块, 包含 b lks i ze 包的数量,每个数 据包假定是固定的长度。 如果分割完余下的文件或流不足以形成一个完整的 包,用零来填充,以确保所有的数据包具有相同的长度。 一个块不需要全满, 即一个块可能少于 b lks i ze个数据包;然而,在第 i+1个块初始化前第 i块必 须全满。 在初始数据包传送后, 块大小要根据接收端的反馈来调整。 接收方 则负责解码收到的数据并构建 ACK给发送端。 当接收端收到一个包,它需要 检查当前块是否可解码(ack_currb lk)和所收到的当前块的自由度数 (ack-currdof) 。
对于每个块 b lkno,接收机端初始化一个 b lks i ze b lks i ze的编码系数 矩阵 Cblkn。 和一个相应的有效荷载结构 Pblkn。。 每当从 b lkno收到一个数据包, 编码系数和有效荷载分别插入到 Cblkn。和 Pblkn。。然后使用高斯消元法来判断接 收到的数据与之前收到的数据包是否线性无关。 如果是,接收方设置 ack-currdof ack.currdof + 1。 如果 ack_currdof 等于 b lks i ze,那么接收 方确认已收到 ack_currb lk 块足够的自 由度并更新 ack_currb lk
ack.currblk + 1 (需要重置 ack_currdof 来反映新 ack_currblk自由度的需 求)。 如果接收到的数据包与之前收到的数据包线性相关, 接收端传输 ACK (相应的包收到的)但不更新 ack_currdof 和 ack_currblk。一旦收到足够 的线性无关的 blks izef 包(自由度), 接收端就可以解码块中所有的包。
步骤 S23发送端按设定格式处理编码数据, 得到带有编号的数据包 和数据块: 在本步骤中, 调节数据块中数据包的数量, 在网络环境不好的情 况下,减小数据块中数据包的数量,有助于成功解码。 因此, 网络环境好时, 其数据块中的数据包数量较多;反之,则数量较少。也就是说,在本步骤中, 数据块的所包括的数据包数量依据每个数据包的传输时间调节, 所述数据块 包括的数据包数量与数据包在所述发送端和接收端之间的传输时间成反比。
步骤 S24设置或按规定调节令牌数量: 在本步骤中, 设置或调节令 牌数量, 同样是依据网络环境而变化的, 发送端通过单位时间内允许出现的 令牌个数控制所述数据包的发送速度, 每个令牌允许发送一个数据包; 单位 时间内出现的令牌数量依据数据包传输的时间调节。 所述单位时间内允许发 送的令牌数量根据一个数据包在所述发送端和所述接收端的传输时间调节 并通知所述接收端; 所述数据包传输的时间越长, 单位时间内允许发送的令 牌数量越少。
在本实施例中, 图 3只是给出了一个例子。 为了便于说明情况, 图 3 中的步骤是按照一定情况排列的。 但是, 在实际情况或应用中, 在数据发送 端可能并不是按照图 3中的顺序排列的, 有可能图 3中的两个步骤是同时进 行的或者图 3中的两个步骤的顺序是相反的或者由于某种原因不进行其中一 个步骤等等。 这些情况在本实施例中都是可能出现的。 总之, 图 3中的步骤 是为了顺利地、 可靠地发送数据而实行的, 可以依据实际的情况采取不同的 步骤。 例如, 就同一对发送端和接收端而言, 在开始时, 必然有参数的设置 步骤; 但是, 传输一段时间后, 需要调节数据块中包括数据包的个数, 此时 就不必将上述步骤全部执行一遍, 仅仅需要按照上述描述直接调节其个数 (即直接执行步骤 S23 ) 即可。
如上所述, 在上述步骤 S13中当数据包在被接收端接收后, 在接收端的 传输层中对其进行处理, 得到其数据包编号, 并对其进行判断, 如果编号连
续, 发送确认应答信号到所述发送端; 如果编号不连续, 发送扩展确认应答 信号到所述发送端, 所述扩展确认信号中携带有所述接收端接收到的最后一 个连续的数据包编号。
此外, 接收端的网络编码层还需要对接收到的数据包进行解码。 其首先 需要判断这些数据包是否能够解码。 判断过程请参见图 4 , 包括如下步骤: 步骤 S31 接收新的数据块, 初始化编码矩阵和有效载荷: 在本步骤 中, 在接收到新的数据块时, 初始化尺寸为 b Iks i zeXb Iks i ze的编码系数矩 阵和相应的有效载荷结构, 其中, blks ize是当前设定数据块的长度。
步骤 S32 新接收的数据包与本数据块之前接收的数据包线性相关否, 如是, 执行步骤 S34 , 否则, 执行步骤 S35 ; 对于每个接收到的数据包, 将 其编码系数和有效载荷分别插入上述编码系数矩阵和相应的有效载荷结构 中, 使用高斯消元法判断其与之前的数据包是否线性无关。
步骤 S33 发送确认信号, 更新块自由度: 由于线性无关, 表明该数 据包接收正常, 接收端返回确认信号, 更新当前块自由度, 使其加 1 , 并执 行步骤 S35。
步骤 S34 发送确认信号, 不更新块自由度: 在本步骤中, 发送确认 信号, 但不更新块自由度, 并等待接收下一数据包, 返回步骤 S32。
步骤 S35 自由度与块长度相等否: 判断更新后的当前块自由度是否 等于数据块中的当前设定长度, 如是, 判断该数据块可以解码; 否则, 返回 步骤 S32。
步骤 S36 本数据块接收完成, 可以解码: 在本步骤中, 对已接收到 的一个数据块中的所有数据包进行解码。 同时准备接收下一个数据块。
此外, 在本实施例中, 如果发送端发送一个数据包且未收到确认信号 的时间大于最后一个数据包的传输时间加上重传超时周期, 发送端采用慢启 动模式传输数据包; 所述慢启动模式包括设置所述单位时间允许传输的令牌 数为缺省值, 每次成功传输一个数据包后所述令牌数加一, 直到所述令牌数 达到设定门限后, 改为正常传输状态。
总之,在本实施例中,由于网络编码层是工作在本来不可靠的 UDP传 输层上面的, 所以必须考虑报文丟失的情况出现。 请参见图 5 , 为了在 UDP
上实现其高效、可靠传输功能的介绍,其网络编码层协议需要考虑六种状态, :¾口下:
CLOSE (断开): 当没有连接时处于该状态; LI STEN (侦听): 当被动连 接时进入 LI STEN状态,在该状态下等待主动建立连接请求; SYN-SENT ( SYN 发送): 当发起一个主动建立连接的 SYN后进入 SYN-SENT状态。 此时生成 一个连接状态记录, 确定本连接的初始序列号, 并发送一个 SYN 到远端, 等待对端 SYN及 ACK 确认; SYN-RECVD ( SYN接收): 此状态可以从 LI STEN 状态和 SYN-SENT状态转换而来。 当处于 LI STEN状态时, 只要收到一个远 端的 SYN 文段便转换到 SYN-RECVD状态。 并且产生一个初始序列号作为 本端报文序列的起始号, 并发送一个 SYN和 ACK确认到对端, 然后等待对 端回应; OPEN (连接): 表示建立连接成功双方协商好配置数据如初始序列 号, 最大报文段尺寸最大发送窗口等等, 然后双方可以通过该虚拟连接进行 数据交互; CLOSE- WAIT。 CLOSE- WAIT状态可以从 OPEN 状态收到 c l ose (断 开) 请求转换到 CLOSE 状态也可以是收到 RST报文。 这两种情况下进入 CLOSE-WAIT (等待断开)状态等到一段时间, 关闭连接。
当处于 SYN-SENT状态时, 收到远端的 SYN但是并没有伴随的 ACK 时, 就从 SYN-SNET 状态转入到 SYN-RECVD 状态。 这种情况是由于两方同时主 动发起建立连接的请求。 此时以同样的序列号再次发送 SYN, 并且对对方的 SYN 进行确认, 表示接收建立连接请求。
在本实施例中, 发送方和接收方的网络编码对等层之间也会建立起虚连 接, 类似于 TCP , 也进行三次握手。 根据实际情况, 在双方如果同时发起建 立连接时, 进行回应并发送 SYN。 建立连接时发送 SYN 类型报文段, 所有 的两端的配置消息都携带在报文段中。 一般情况下关闭连接采用与 TCP 类 似的 4 次握手, 但是在永久连接应用中只有出现异常时才关闭连接。 在一 端出现异常后, 另外一端通过可靠检测机制端检测到异常后上报给上层用户, 释放本端连接资源。
在本实施例中, 还借助于如下部件或机制, 实现了高效、 可靠的传输: 重传定时器: 在网络编码层中, 当每一个编码消息发送后, 如果此时重 传定时器未设置, 则设置该定时器。 这样当对端收到该消息后会发送响应给
发送端, 发送端收到响应后取消定时器, 如果收到应答后, 还有发送但未 应答的报文, 则重启该定时器。 定时器超时的时长是由两端协商的, 但是两 端必须是同一值。
重传计数器: 重传计数器记录报文重发的次数, 直到重传次数达到门限 值。 当重发次数超过了门限则认为连接已经断开, 此时, 应转入连接错误处 理。
应答机制: 编码消息有两种类型的应答消息。 EACK 和 ACK。 必须考虑 当一组消息发送后, 中间序号消息丟失的情况。 为此, 此方案提供了 EACK 消 息类型。 当接收方收到的并不是按序的消息时,接收端会向发送端发送 EACK 响应, 通告对方某些消息可能在传播途中丟失或损坏。 当发送端收到 EACK 类型消息后, EACK 消息中携带着最近最后收到的一个按序消息号和收到的 乱序消息号, 根据消息中所带的信息计算出需要重发的消息序号然后重发这 些消息。 与 TCP 类似为了减少网络负载, 提高利用率。 它也采用了应答延 迟技术。 在接收端维护了一个计数器统计收到但未应答的报文数, 当收到的 报文超过了门限值(门限值是可以配置)则发送一个单独的 ACK, 如果此时 有乱序报文未响应则发送一个 EACK。 此外, 还有一个累计超时定时器用以 控制等待的时间。 当累计确认定时器超时, 无论累计计数器是否达到门限值 都要发送单独的 ACK 或者 EACK。 当单独的应答发送后, 该定时器重启。
保活机制: 在利用网络编码层协议传输信息时, 可能存在一段时间内一 个连接上并未有数据流通的情况。 即是说链路双方都没有应用数据向对方发 送。 此时需要提供保活机制来及时了解链路情况, 以便在一方崩溃的情况下 及时检测出来。 当连接上的一端发现本端无消息发送时, 便在本端设定保活 定时器。 如果在保活定时器超时之前有数据发送, 则取消保活定时器, 设置 重发定时器。 如果保活定时器超时并未有应用数据需要发送则发送保活消息 到对端。 保活机制使得网络编码层能够提供长连接服务。
冗余连接机制: 如果一条连接失败了, 上层应用会收到信号并且启动状 态转换定时器。 上层应用可以通过 API 将连接状态信息转移, 发起另外一 条连接并继承之前失败的连接。 这样避免消息丟失或重复。 如果状态转换定 时器超时仍然未进行状态转换, 则释放掉断开的连接资源。
在本实施例中, SYN 类型的消息用于发起两个主机间的连接。 SYN 消 息中还包含了双方需要的配置协商信息。 比如各类定时器时长、 版本号、 该 连接 ID、 消息序列空间、 累计确认门限等等。 SYN 类型的消息不能携带用 户数据。 ACK则用于向发送端应答收到的按序(in-sequence)的消息。 EACK , 即扩展 ACK , 发送端收到 EACK 时, 说明有消息在传输中丟失, 接收端收到 了乱序消息。 EACK 中总包含了最近最后收到的一个按序消息序号和一个或 多个乱序消息序号。 发送端收到 EACK 后, 会更据 EACK中内容, 重传最后 一个按序消息之后到乱序消息之前的消息 (不包括这两个序号的消息) 。 如上所述, 在实施例中,
在本实施例中, 网络编码层使用令牌(tokens ) 来控制发送端的传输速 率而不是拥塞窗口 cwnd;因此, tokens对于网络编码层起着重要作用就像 cwnd对于 TCP—样。 一个 token允许网络编码层发送端发送一个数据包(编 码或未编码的)。 当发送端传送包时,可使用 tokens。 Tokens的数量是根据 修改后的 AIMD乘法补偿来控制:
o _ RTT匪
RTT
当丟包发生时 RTT = RTTmax (链接队列已满)。 在这种情况下,当一个链接被提 供用一个带宽延迟积的緩存,那么 RTTmax= 2 RTTmin , β = 0. 5 , 即与标准的 TCP 相同。 一般地,当发生队列溢出时, 流吞吐量之和必须等于链接的容量 toke = B ^ 其中 n是流的数量。 根据算法 3补偿后,队列清空, 吞吐 =1 RTT 量总和成为 °=i Pi R to T k T mS = B 。 即上述选择中其 β降低了 tokens数量, 以便 链接队列清空, 维持吞吐量。 在有损耗的链接(除了队列溢出的损耗),使用 RTT使 β适应每一个损耗。 当一个网络路径利用率低时, RTT = RTTmin (因此, β = 1和 β * token=tokens) 。 因此, tokens不减少丟包, 尽管存在数据包丟失 tokens也能够增大。 一旦
链接开始经历排队延迟, 则 RTT> RTTmin , β < 1,即有丟包时 tokens减少, 因为链接队列是满的,损失之前吞吐量总和是∑n = B。 tokens减少后 , 当队列清空时, 吞吐量总和最低是 5; ^^ = β (所有流补偿 tokens) , 也就是说, 可以调整 β来保持全吞吐量。
在本实施例中, 发送方的参数定义如下表:
ACK, 参数被重置为默认值。 收到 ACK后, 根据 ACK更新参数。 t ime— las tack
就是当前时间 current time; 如果最小的未解码块(编号) 大于当前发送方 的块编号, 就需要发送最小的未解码块给接收端, 所以当前发送方块编号更 新为 ack_currblk ;其实 currdof 总是 ack_currdof 和 currdof 大的那个, 越大的自由度可对数据包进行各种操作。 如网络编码可以将数据包中的数 据位进行操作, 如 "按位异或" 等可以有效地允许目标节点接受多个信息 而不必增加它所能接收数据包的数量, 即不必增加网络的整体容量, 而按位 来获得更大的自由度。
对于序歹l号, 当已确认的 ack.seqno 大于 seqno.una (未确认的) , 说明有包丟失(因为确认按序进行, 由小到大,小的总是比大的号先确认), 平均丟失率如算法一所示, 其 seqno.una 更新为 ack.seqno 力口 1。
发送端控制其网络阻塞的方法是可以是慢开始 (启动 slow-start )和 拥塞避免; 慢开始起初设置 拥塞窗口 cwnd=l, 使得发送端在开始只发送一 个报文段, 然后再逐渐增大 cwnd, 这比按照大的 cwnd —下子把许多报文段 突然注入到网络中' |·曼得多。
开始时, 若 current time > time_lastack + RTO , 时间轴上收到 ACK 的时间加上重传超时周期 若小于现在的时间, 那么说明即使包丟失等发生, 也不能收到重传应答确认消息。 所以启动慢开始模式。
当收到 ACK, 在慢开始下, 令牌加 1, 表明网络编码层发送端一次允许 发送的数据包增加; 当令牌 tokes增加到慢开始门限 ss_threshold , 停止 使用慢开始而改用拥塞避免算法。而 tokens的数量根据修改后的 AIMD 来控 制。 也就是说, 使用上述方法并应用 tokens 来实现拥塞控制。
对于接收端而言,主要是根据 ack_currblk 中的自由度来控制器是否可 解码。 若收到的块线性相关, 说明接收到重复的块, 不能作为解码的系数矩 阵, 一旦有足够的线性无关的块, 其每个块都可由这些线性无关的块表示, 故可以解码。
对于每个块 (blkno),接收机端初始化一个 blks ize blksize的编码系 数矩阵 Cblkn。 和一个相应的有效荷载结构 Pblkn。。 每当从 blkno收到一个数据 包,编码系数和有效荷载插入分别到 Cblkn。和 Pblkn。。 然后使用高斯消元法来判 断接收到的数据与之前收到的数据包是否线性无关。 如果是,接收方设置
ack-currdof ack.currdof + 1。 如果 ack_currdof 等于 blks ize,那么接收 方 确认已收到 ack_currblk 块足够的自由并更新 ack_currblk ack.currblk + 1 (需要重置 ack.currdof 来反映新 ack.currblk自由度 的需求)。 如果接收到的数据包与之前收到的数据包线性相关, 接收端传输 ACK (相应的包收到的)但不更新 ack_currdof 和 ack_currblk。一旦收到足够 的线性无关的 blks izef 包(自由度), 接收端就可以解码块中所有的包。
若块 blkno的 Cblkn。[ index, :] 为空, 即块中数据包皆线性无关, 无需 迭代, 返回 TRUE。 把块 blkno归一化后的编码系数和荷载构成 Cblkn。 和 Pblkn。
如果索引项小于块的大小, 表明块中有线性相关的数据包, 所以返回 FALSE。 需迭代更新参数, 使线性相关的编码系数为 0 , 更新一次就需要 归 一化一次。
但并不能因此而理解为对本发明专利范围的限制。 应当指出的是, 对于本领 域的普通技术人员来说, 在不脱离本发明构思的前提下, 还可以做出若干变 形和改进, 这些都属于本发明的保护范围。 因此, 本发明专利的保护范围应 以所附权利要求为准。
Claims (9)
- 权利要求书1、一种基于 UDP协议的网络编码及传输方法,其特征在于,包括如下步骤:A )在传输层和应用层之间构建网络编码层; 所述网络编码层分别 与所述传输层和所述应用层连接, 所述网络编码使用所述传输层的 UPD协 议与所述传输层建立连接;B )数据或文件由发送端的应用层进入发送端的网络编码层, 在发 送端的网络编码层緩存并进行网络编码, 将其按照设定的方式形成带有编号 的数据包, 通过发送端传输层发送到接收端;C )接收端的网络编码层通过接收端的传输层接收到所述编码数据, 识别接收到的数据包的编号, 依据接收的编号返回不同的应答信号到所述发 送端, 同时对其进行解码得到数据或文件, 并传输到接收端的应用层。
- 2、 根据权利要求 1所述的基于 UDP协议进行网络编码传输的方法, 其 特征在于, 还包括如下步骤:D )所述发送端依据接收到的所述接收端发来的不同类型的应答信号 , 决定重发或不重发数据块。
- 3、 根据权利要求 2所述的基于 UDP协议的网络编码及传输方法, 其特 征在于, 所述步骤 B ) 中进一步包括如下步骤:B1 )所述发送端与接收端建立连接时, 发送携带有设定传输参数的 数据包通知所述接收端, 所述接收端在接收到所述数据包后返回确认信息并 按照所述传输参数设定该接收端。
- 4、 根据权利要求 3所述的基于 UDP协议的网络编码及传输方法, 其特 征在于, 所述步骤 B ) 中进一步包括如下步骤:B2 )所述发送端将要传输的数据或文件按其流入顺序划分为第一设 定长度的数据包, 当余下留下的文件或数据长度小于第一设定长度时, 填入 数据零以保持数据包长度, 使划分后的每个数据包具有相同的长度; 设定个 数为 blksize的数据包构成一个数据块,数据包是传输的最小单位;数据块所 包含的数据包个数在传输过程中依据接收端返回的信息调节。
- 5、 根据权利要求 4所述的基于 UDP协议的网络编码及传输方法, 其特 征在于, 所述步骤 B ) 中进一步包括如下步骤:B3 )所述发送端通过单位时间内允许出现的令牌个数控制所述数据 包的发送速度, 每个令牌允许发送一个数据包; 所述单位时间内出现的令牌 数量依据数据包传输的时间调节。
- 6、 根据权利要求 5所述的基于 UDP协议的网络编码及传输方法, 其特 征在于, 所述单位时间内允许发送的令牌数量根据一个数据包在所述发送端 和所述接收端的传输时间调节并通知所述接收端; 所述数据包传输的时间越 长, 单位时间内允许发送的令牌数量越少。
- 7、 根据权利要求 6所述的基于 UDP协议的网络编码及传输方法, 其特 征在于, 所述数据块包括的数据包数量依据每个数据包的传输时间调节, 所 述数据块包括的数据包数量与数据包在所述发送端和接收端之间的传输时 间成反比。
- 8、 根据权利要求 7所述的基于 UDP协议的网络编码及传输方法, 其特 征在于, 所述步骤 C ) 中进一步包括如下步骤:C1 )所述接收端检测已经接收到的数据包编号, 如果编号连续, 发 送确认应答信号到所述发送端; 如果编号不连续, 发送扩展确认应答信号到 所述发送端, 所述扩展确认信号中携带有所述接收端接收到的最后一个连续 的数据包编号。
- 9、 根据权利要求 8所述的基于 UDP协议的网络编码及传输方法, 其特 征在于, 所述步骤 C ) 中进一步包括如下步骤:C2 )在接收到新的数据块时, 初始化尺寸为 blksize*blksize的编码 系数矩阵和相应的有效载荷结构,其中, blksize是当前设定的数据块的长度;C3 )对于每个接收到的数据包, 将其编码系数和有效载荷分别插入 上述编码系数矩阵和相应的有效载荷结构中, 使用高斯消元法判断其与之前 的数据包是否线性无关, 如是, 执行步骤 C4 ); 否则, 执行步骤 C5 );C4 )返回确认信号, 更新当前块自由度, 使其加 1 , 并判断更新 后的当前块自由度是否等于数据块中的当前设定长度, 如是, 判断该数据块 可以解码; 否则, 等待接收下一数据包;C5 )发送确认信号,但不更新块自由度,并等待接收下一数据包。 10、 根据权利要求 9所述的基于 UDP协议的网络编码及传输方法, 其 特征在于, 如果发送端发送一个数据包且未收到确认信号的时间大于最后一 个数据包的传输时间加上重传超时周期, 则发送端采用慢启动模式传输数据 包; 所述慢启动模式包括设置所述单位时间允许传输的令牌数为缺省值, 每 次成功传输一个数据包后所述令牌数加一, 直到所述令牌数达到设定门限后, 改为正常传输状态。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2013/087789 WO2015074279A1 (zh) | 2013-11-25 | 2013-11-25 | 一种基于udp协议的网络编码及传输方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107852398A true CN107852398A (zh) | 2018-03-27 |
Family
ID=53178846
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380081163.0A Pending CN107852398A (zh) | 2013-11-25 | 2013-11-25 | 一种基于udp协议的网络编码及传输方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107852398A (zh) |
WO (1) | WO2015074279A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112422962A (zh) * | 2020-10-30 | 2021-02-26 | 西安万像电子科技有限公司 | 一种控制视频编码层的方法及装置 |
CN113347151A (zh) * | 2021-04-28 | 2021-09-03 | 厦门海迈科技股份有限公司 | 一种基于socket共享内存的数据交互方法 |
CN115134047A (zh) * | 2021-03-29 | 2022-09-30 | 维沃移动通信有限公司 | 传输方法、装置、设备及可读存储介质 |
CN115499108A (zh) * | 2022-09-27 | 2022-12-20 | 西安羚控电子科技有限公司 | 一种基于udp协议的闭环网络通信方法及系统 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11588587B2 (en) * | 2020-04-27 | 2023-02-21 | Qualcomm Incorporated | Network coding termination and procedures using feedback |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102291226A (zh) * | 2011-09-02 | 2011-12-21 | 北京大学深圳研究生院 | 基于tcp协议的自适应网络传输控制方法和系统 |
US8130776B1 (en) * | 2009-08-28 | 2012-03-06 | Massachusetts Institute Of Technology | Method and apparatus providing network coding based flow control |
CN103200192A (zh) * | 2013-03-28 | 2013-07-10 | 中国科学院声学研究所 | 网络编码层对数据包的编解码方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101841479B (zh) * | 2010-04-28 | 2012-12-05 | 四川大学 | 一种基于网络编码的高误码率长时延网络自适应传输方法 |
CN102904689A (zh) * | 2012-10-15 | 2013-01-30 | 哈尔滨工业大学深圳研究生院 | 基于网络编码的传输控制协议的改进方法 |
CN103152359B (zh) * | 2013-03-25 | 2016-03-23 | 重庆大学 | 一种端到端无线传输控制协议线性网络编码的改进方法 |
-
2013
- 2013-11-25 WO PCT/CN2013/087789 patent/WO2015074279A1/zh active Application Filing
- 2013-11-25 CN CN201380081163.0A patent/CN107852398A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8130776B1 (en) * | 2009-08-28 | 2012-03-06 | Massachusetts Institute Of Technology | Method and apparatus providing network coding based flow control |
CN102291226A (zh) * | 2011-09-02 | 2011-12-21 | 北京大学深圳研究生院 | 基于tcp协议的自适应网络传输控制方法和系统 |
CN103200192A (zh) * | 2013-03-28 | 2013-07-10 | 中国科学院声学研究所 | 网络编码层对数据包的编解码方法 |
Non-Patent Citations (1)
Title |
---|
MINJI KIM,ET AL: "Network Coded TCP (CTCP)", 《ARXIV PREPRINT》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112422962A (zh) * | 2020-10-30 | 2021-02-26 | 西安万像电子科技有限公司 | 一种控制视频编码层的方法及装置 |
CN115134047A (zh) * | 2021-03-29 | 2022-09-30 | 维沃移动通信有限公司 | 传输方法、装置、设备及可读存储介质 |
CN113347151A (zh) * | 2021-04-28 | 2021-09-03 | 厦门海迈科技股份有限公司 | 一种基于socket共享内存的数据交互方法 |
CN113347151B (zh) * | 2021-04-28 | 2023-04-28 | 厦门海迈科技股份有限公司 | 一种基于socket共享内存的数据交互方法 |
CN115499108A (zh) * | 2022-09-27 | 2022-12-20 | 西安羚控电子科技有限公司 | 一种基于udp协议的闭环网络通信方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2015074279A1 (zh) | 2015-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100785293B1 (ko) | 다중 tcp확인응답을 이용한 tcp 혼잡 제어 시스템및 그 방법 | |
CN107508655B (zh) | 一种自适应端到端网络编码传输方法 | |
JP4589764B2 (ja) | スプリアスタイムアウトに対する応答 | |
JP5020076B2 (ja) | 低頻度ackのシステムに適した高性能tcp | |
US8169914B2 (en) | Method and node for transmitting data over a communication network using negative acknowledgment | |
US7028094B2 (en) | Data communication method, system, and transmitter and receiver constituting the system | |
KR101610715B1 (ko) | 단방향 데이터 송수신 시스템 및 방법 | |
JP2007534194A (ja) | パケットを再配列する際のtcp性能の改善 | |
WO2012174763A1 (zh) | 一种基于tcp协议的自适应网络控制传输方法和系统 | |
CN107634823B (zh) | 基于网络编码的传输控制协议的数据传输方法 | |
KR100547749B1 (ko) | 재전송 타임아웃 수를 줄이기 위한 전송 제어 프로토콜의혼잡제어 방법과 시스템 | |
WO2006027695A1 (en) | Signaling a state of a transmission link via a transport control protocol | |
CN107852398A (zh) | 一种基于udp协议的网络编码及传输方法 | |
CN107592185B (zh) | 一种适用于网络编码传输控制协议的前向重传方法 | |
EP1568191A2 (en) | Apparatus and method for a lightweight, reliable, packet-based transport protocol | |
WO2008069398A1 (en) | Apparatus and method for improving transport control protocol performance using path recovery notification over wireless network | |
WO2014194806A1 (zh) | 在多路传输控制协议中的链路处理方法和移动终端 | |
US20180331962A1 (en) | System and method for reducing bandwidth usage of a network | |
CN111193577A (zh) | 使用传输超时的网络系统通信方法及通信装置 | |
US7623546B1 (en) | Latency improvement for file transfers over network connections | |
CN112468513B (zh) | 一种企业网的终端管理通信方法 | |
CN107566083B (zh) | 一种适用于网络编码传输控制协议的补偿重传方法 | |
KR100913897B1 (ko) | 재전송 타임아웃 수를 줄이기 위한 전송 제어 프로토콜혼잡제어방법 | |
Ha et al. | Masking lossy networks by TCP tunnel with network coding | |
Coonjah et al. | An Investigation of the TCP Meltdown Problem and Proposing Raptor Codes as a Novel to Decrease TCP |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180327 |
|
WD01 | Invention patent application deemed withdrawn after publication |