中间节点、通信网络及其数据传输控制方法

文档序号:7806338阅读:142来源:国知局
中间节点、通信网络及其数据传输控制方法
【专利摘要】本发明公开了一种中间节点、通信网络及其数据传输控制方法,所述方法包括:中间节点接收到一个数据包后,解析出该数据包中携带的上一跳节点发送该数据包的端口的MAC地址,以及上一跳节点为该数据包分配的节点序列号;将解析出的MAC地址和节点序列号进行对应记录;中间节点在每个确认周期到达时,针对每个记录的MAC地址,查找出与该MAC地址对应记录的各节点序列号,从中确定出最大节点序列号和丢失的数据包的节点序列号;并向上一跳节点返回携带有确定出的节点序列号的确认信息;上一跳节点根据接收的确认信息,确定出中间节点已接收的数据包,将确定出的数据包从与中间节点相对应的队列中清除。应用本发明,可以提高数据传输质量。
【专利说明】中间节点、通信网络及其数据传输控制方法
【技术领域】
[0001]本发明涉及互联网领域,尤其涉及一种中间节点、通信网络及其数据传输控制方法。
【背景技术】
[0002]通讯控制机在通信网络中被称为网络结点,网络结点一方面作为与资源子网的主机、终端相连接的接口,将主机和终端连入网内;另一方面网络结点又作为通信子网中的分组储存转发结点,完成分组的接收,校验,存储转发等功能,实现将源主机的数据包发送到目的地主机的作用。网络结点可以包括网络终端、工作站(可以是个人电脑或服务器)还有中间环节的路由器。
[0003]一个通信网络由若干网络节点构成,网络节点包括端节点和中间节点;在通信网络中,一个数据包传输链路通常包括多个网络节点;其中,产生业务流的数据包的端节点称为源端节点,中间传输该数据包的网络节点称为中间节点;数据包最终到达的端节点称为目的端节点。
[0004]目前的通信网络通常是基于TCP/IP协议进行数据包的传输;然而,随着卫星网络的发展,本发明的发明人发现,如果将现有的数据传输控制技术应用于有若干卫星的中间节点的通信网络中,则会出现传输质量大大下降的问题,体现在丢包率、误码率的升高和延迟时间的加长:
[0005]受到各种环境因素的影响,卫星网络本身具有长时延、信号衰落严重的特性;在信号衰落严重时,出现随机误码和突发误码(连续多个数据包丢失)的概率高;若将现有的数据传输控制技术应用于有若干卫星的中间节点的通信网络中,将会增加数据传输的丢包率、误码率。
[0006]而且,现有基于TCP/IP协议的通信网络采用的是端到端的传输确认机制,即目的端节点在接收到上一跳节点发送的数据包后,在确认周期到达时,向源端节点返回确认信息,源端节点根据经中间节点传输的确认信息,确定出源端节点与目的端节点之间丢失的数据包,并将丢失的数据包向目的端节点重发。而在基于TCP/IP协议的通信网络中,一般将数据包的丢失归因于网络拥塞,因此,在发现丢包后,源端节点减小发送窗口(比如将发送速率减小为原来的一半),通过该减小的发送窗口将丢失的数据包重新向目的端节点发送,这样,会进一步延长卫星网路的数据传输的往返时延。
[0007]因此,有必要提供一种能够提高数据传输质量的数据传输控制方法。

【发明内容】

[0008]针对上述现有技术存在的缺陷,本发明实施例提供了一种通信网络、中间节点及其数据传输控制方法,用以提高数据传输质量。
[0009]本发明实施例提供了一种通信网络的传输控制方法,包括:
[0010]中间节点接收到一个数据包后,解析出该数据包中携带的上一跳节点发送该数据包的端口的MAC地址,以及所述上一跳节点为该数据包分配的节点序列号后,将解析出的MAC地址和节点序列号进行对应记录;以及
[0011]所述中间节点在每个确认周期到达时,针对每个记录的MAC地址,查找出与该MAC地址对应记录的各节点序列号后从中确定出最大节点序列号和丢失的数据包的节点序列号;并向上一跳节点返回携带有确定出的节点序列号的确认信息;
[0012]所述上一跳节点根据接收的确认信息,确定出所述中间节点已接收的数据包后,将确定出的数据包从与所述中间节点相对应的队列中清除。
[0013]较佳地,在所述将确定出的数据包从与所述中间节点相对应的队列中清除后,所述方法还包括:
[0014]所述上一跳节点将根据接收的确认信息确定出的丢失的数据包重新进行发送。
[0015]较佳地,在所述解析该数据包中的上一跳节点发送该数据包的端口的MAC地址,以及所述上一跳节点为该数据包分配的节点序列号时,还包括:
[0016]解析该数据包中的目的方IP地址。
[0017]较佳地,在所述将解析出的MAC地址和节点序列号进行对应记录后,所述方法还包括:
[0018]将该数据包缓存到对应所述目的方IP地址的下一跳节点所对应的队列中;其中,所述队列中缓存的各数据包按缓存的先后顺序统一分配了编号,并将各数据包的编号分别作为所述中间节点为各数据包分配的节点序列号;并且,所述队列中的每个数据包,在该数据包的帧头携带有所述队列对应的本中间节点的端口的MAC地址,以及所述中间节点为该数据包分配的节点序列号;以及
[0019]所述中间节点按先入先出的顺序将所述队列中缓存的数据包向下一跳节点发送。
[0020]较佳地,在所述中间节点按先入先出的顺序将所述队列中缓存的数据包向下一跳节点发送的过程中,所述方法还包括:
[0021]若所述中间节点确定与所述队列所对应的下一跳节点断开连接,则取消所述队列与所述下一跳节点的对应关系,并根据所述队列中的数据包的目的方IP地址进行重新路由;将重新路由后确定的下一跳节点与所述队列进行对应。
[0022]较佳地,所述上一跳节点具体为源端节点、或所述通信网络中的其它中间节点;以及
[0023]所述下一跳节点具体为目的端节点、或所述通信网络中的其它中间节点。
[0024]本发明实施例还提供了一种中间节点,包括:
[0025]数据包接收模块,用于接收到一个数据包后,解析该数据包中的上一跳节点发送该数据包的端口的MAC地址,以及所述上一跳节点为该数据包分配的节点序列号后,将解析出的MAC地址和节点序列号进行对应记录;
[0026]数据包确认模块,在每个确认周期到达时,针对每个记录的MAC地址,查找出与该MAC地址对应记录的各节点序列号后从中确定出最大节点序列号和丢失的数据包的节点序列号;并向上一跳节点返回携带有确定出的节点序列号的确认信息。
[0027]较佳地,所述中间节点还包括:
[0028]数据包缓存模块,用于将所述数据包接收模块接收的数据包缓存到对应该数据包所携带的目的方IP地址的下一跳节点所对应的队列中;其中,所述队列中缓存的各数据包按缓存的先后顺序统一分配了编号,并将各数据包的编号分别作为所述中间节点为各数据包分配的节点序列号;并且,所述队列中的每个数据包,在该数据包的帧头携带有所述队列对应的本中间节点的端口的MAC地址,以及所述中间节点为该数据包分配的节点序列号;
[0029]数据包发送模块,用于按先入先出的顺序将所述数据包缓存模块中下一跳节点所对应的队列中缓存的数据包向下一跳节点发送。
[0030]较佳地,所述中间节点还包括:
[0031]确认信息处理模块,用于在接收到下一跳节点返回的确认信息后,根据接收的确认信息确定出下一跳节点已接收的数据包后,将确定出的数据包从与所述下一跳节点所对应的队列中清除。
[0032]本发明实施例还提供了一种通信网络,包括上述中间节点;以及
[0033]源端节点,用于针对一个业务生成一系列数据包后,为生成的数据包统一分配序列号作为源端序列号;在根据接收所述数据包的目的端的目的方IP地址进行路由后,确定出接收所述数据包的下一跳节点;将所述数据包缓存到所述下一跳节点所对应的队列中;其中,所述队列中缓存的各数据包按缓存的先后顺序统一分配了编号,并将各数据包的编号分别作为所述源端节点为各数据包分配的节点序列号;并且,所述队列中的每个数据包,在该数据包的帧头携带有所述队列对应的本源端节点的端口的MAC地址,以及本源端节点为该数据包分配的节点序列号、源端序列号;
[0034]目的端节点,用于接收到数据包后,将该数据包中携带的发送方IP地址和源端序列号对应记录,以及该数据包中的上一跳节点发送该数据包的端口的MAC地址,以及所述上一跳节点为该数据包分配的节点序列号对应记录;并在每个确认周期到达时,针对每个记录的MAC地址,查找出与该MAC地址对应记录的各节点序列号后从中确定出最大节点序列号和丢失的数据包的节点序列号;并向上一跳节点返回携带有确定出的节点序列号的确认信息;以及针对每个记录的发送方IP地址,查找出与该发送方IP地址对应记录的各源端序列号后从中确定出最大源端序列号和丢失的数据包的源端序列号;根据该发送方IP地址返回携带有确定出的源端序列号的确认信息;
[0035]所述源端节点还用于接收到下一跳节点返回的携带有节点序列号的确认信息后,根据接收的确认信息确定出下一跳节点已接收的数据包和丢失的数据包后,将下一跳节点已接收的数据包从与所述下一跳节点所对应的队列中清除,将丢失的数据包重新发送;以及接收到所述目的端节点返回的携带有源端序列号的确认信息后,确定出所述目的端节点已接收的数据包和丢失的数据包后,将目的端节点已接收的数据包从队列中清除,将丢失的数据包重新发送。
[0036]本发明的技术方案中,中间节点在接收到数据包后,将该数据包中携带的上一跳节点发送该数据包的端口的MAC地址和上一跳节点为该数据包分配的节点序列号进行对应记录;且在每个确认周期到达时,针对每个记录的MAC地址,可以根据与该MAC地址对应记录的各节点序列号,向上一跳节点返回携带有最大节点序列号和丢失的数据包的节点序列号的确认信息。继而,中间节点的上一跳节点可以根据接收的确认信息,确定出中间节点丢失的数据包,并将丢失的数据包针对目的端节点重新发送。这样,相比现有的端到端的传输控制方案,本发明通过点到点之间的数据包丢失检测和数据恢复,可以减小通信网络中进行数据传输时的丢包率、误码率,保证源端节点与目的端节点之间的数据传输过程中不会产生错误累积;而且,由于中间节点与下一跳节点之间对丢失数据包的检测和恢复速度都要比源端节点到目的端节点之间对丢失包的处理速度要快,缩短了源端节点到目的端节点之间数据传输的往返时延,大大提高了通信网络的数据传输质量。
【专利附图】

【附图说明】
[0037]图1为本发明实施例的通信网络的结构示意图;
[0038]图2为本发明实施例的通信网络的传输控制方法的流程示意图;
[0039]图3为本发明实施例的目的端节点向上一跳的中间节点返回确认信息的方法流程不意图;
[0040]图4为本发明实施例的目的端节点向源端节点返回确认信息的方法流程示意图;
[0041]图5为本发明实施例的中间节点的内部结构示意图。
【具体实施方式】
[0042]为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举出优选实施例,对本发明进一步详细说明。然而,需要说明的是,说明书中列出的许多细节仅仅是为了使读者对本发明的一个或多个方面有一个透彻的理解,即便没有这些特定的细节也可以实现本发明的这些方面。
[0043]本申请使用的“模块”、“系统”等术语旨在包括与计算机相关的实体,例如但不限于硬件、固件、软硬件组合、软件或者执行中的软件。例如,模块可以是,但并不仅限于:处理器上运行的进程、处理器、对象、可执行程序、执行的线程、程序和/或计算机。举例来说,计算设备上运行的应用程序和此计算设备都可以是模块。一个或多个模块可以位于执行中的一个进程和/或线程内。
[0044]本发明的发明人对现有的通信网络中基于TCP/IP协议的数据传输控制技术进行分析,发现该技术采用的端到端的确认机制具有一定缺陷:
[0045]在有不可靠节点的网络中,只有最终的目的端有责任检测丢失并请求重传,即源端无序发送的数据包经过多个中间节点到达目的端后才能发现丢包,目的端再经过多个中间节点向源端返回确认信息,源端再根据确认信息将丢失的数据包重新经过多个中间节点发送到目的端;这样,在发送和接收确认信息期间,通信链路不能被充分利用、源端和目的端耗费大量的时间来等待确认信息,造成资源的浪费和增加了通信网络的往返时延,且由于无法了解数据包丢失的原因是中间节点发生拥塞还是卫星无线信道的传输错误,不利于保证数据传输的可靠性。
[0046]由此,本发明的技术方案对现有的基于TCP/IP协议的数据传输控制技术进行改进,结合点到点的确认机制来克服现有技术的缺陷;使得本发明的数据传输控制方法可以大大减小丢包率、误码率,缩短延迟时间;尤其是对于具有卫星的中间节点的通信网络,比如卫星网络而言,本发明的数据传输控制方法的数据传输质量要远高于应用现有的基于TCP/IP协议的数据传输控制方法的传输质量。
[0047]下面结合附图详细说明本发明的技术方案。
[0048]本发明实施例提供了一种通信网络,如图1所示,具体包括:源端节点101、目的端节点102和至少一个中间节点103。[0049]源端节点101可以针对一个业务生成一系列数据包后,为生成的数据包统一分配序列号作为源端序列号;并在根据接收该一系列数据包的目的端的目的方IP地址进行路由后,可以确定出接收该一系列数据包的下一跳节点;并确定出用于缓存源端节点101向该下一跳节点发送数据包的队列,即该下一跳节点所对应的队列;继而,可以将源端节点101生成的一系列数据包缓存到该下一跳节点所对应的队列中。
[0050]其中,该下一跳节点具体为目的端节点102、或通信网络中的一个中间节点103 ;且该下一跳节点所对应的队列中缓存的各数据包按缓存的先后顺序统一分配了编号,且可以将各数据包的编号分别作为源端节点101为各数据包分配的节点序列号。这样,针对该队列中的每个数据包,在该数据包的帧头携带有该队列对应的本源端节点101的端口的MAC地址,以及本源端节点101为该数据包分配的节点序列号Seq1、源端序列号SeqS。
[0051]实际应用中,针对源端节点101所生成的每个数据包,在该数据包的传输过程中,每经过一个中间节点103,该中间节点103可以为该数据包分配节点序列号Seqi。这样,在该数据包的帧头中,其携带的源端节点101为其分配的源端序列号SeqS在到达目的端节点102之前是固定不变的,而其携带的MAC地址和节点序列号Seqi在传输过程中将根据其经过的中间节点103而变化。
[0052]中间节点103在接收到一个数据包后,解析出该数据包中携带的上一跳节点发送该数据包的端口的MAC地址,以及上一跳节点为该数据包分配的节点序列号后,将解析出的MAC地址和节点序列号进行对应记录。这样,在每个确认周期到达时,中间节点可以针对每个记录的MAC地址,查找出与该MAC地址对应记录的各节点序列号后从中确定出最大节点序列号和丢失的数据包的节点序列号;并向上一跳节点返回携带有确定出的节点序列号的确认信息。
[0053]继而,该中间节点103的上一跳节点可以根据接收的确认信息,确定出该中间节点已接收的数据包后,将确定出的数据包从与该中间节点103相对应的队列中清除;并将根据接收的确认信息确定出的丢失的数据包重新进行发送。
[0054]基于上述中间节点和源端节点,上述通信网络进行数据传输控制的具体方法,流程如图2所示,包括如下步骤:
[0055]S201:源端节点101针对一个业务生成一系列数据包后,为生成的数据包统一分配序列号作为源端序列号。
[0056]S202:源端节点101在根据接收数据包的目的端的目的方IP地址进行路由后,确定出接收数据包的下一跳节点。
[0057]具体地,源端节点101可以根据最终接收其生成的一系列数据包的目的端的目的方IP地址进行路由,确定出接收数据包的、与目的端的目的方IP地址相对应的下一跳节点。
[0058]S203:源端节点101将生成的数据包缓存到源端节点101的下一跳节点所对应的队列中后,按先入先出的顺序将队列中缓存的数据包向下一跳节点发送。
[0059]S204:中间节点103接收到一个数据包后,将该数据包中携带的上一跳节点发送该数据包的端口的MAC地址、上一跳节点为该数据包分配的节点序列号进行对应记录;并将该数据包缓存到下一跳节点所对应的队列中。
[0060]其中,上一跳节点具体为源端节点101、或通信网络中的其它中间节点103 ;下一跳节点具体为目的端节点102、或通信网络中的其它中间节点103。
[0061]具体地,中间节点103接收到一个数据包后,可以解析出该数据包中携带的目的方IP地址、中间节点103的上一跳节点发送该数据包的端口的MAC地址、以及该上一跳节点为该数据包分配的节点序列号后,将解析出的MAC地址和节点序列号进行对应记录;并将该数据包缓存到对应解析出的目的方IP地址的下一跳节点所对应的队列中。
[0062]实际应用中,该中间节点103的下一跳节点所对应的队列中缓存的各数据包按缓存的先后顺序统一分配了编号,最后缓存的数据包的编号最大。因此,可以将各数据包的编号分别作为本中间节点103为各数据包分配的节点序列号。这样,针对该队列中的每个数据包,在该数据包的帧头携带有该队列对应的本中间节点103的端口的MAC地址,以及本中间节点103为该数据包分配的节点序列号。其中,由于中间节点103将会在后续按照先入先出的顺序将队列中的数据包发送至下一跳节点,因此,可以按缓存的先后顺序,中间节点103为该队列中的各数据包顺序分配不同大小的节点序列号,其中,最后缓存的数据包的节点序列号最大。
[0063]S205:中间节点103在每个确认周期到达时,针对每个记录的MAC地址,从与该MAC地址对应记录的各节点序列号中确定出最大节点序列号和丢失的数据包的节点序列号;并向上一跳节点返回携带有确定出的节点序列号的确认信息。
[0064]具体地,中间节点103在每个确认周期到达时,针对每个记录的MAC地址,查找出与该MAC地址对应记录的各节点序列号后,从中确定出最大节点序列号和丢失的数据包的节点序列号;并向上一跳节点返回携带有确定出的节点序列号的确认信息。其中,确认周期是由管理人员预先设定的,例如根据源端节点所发送的数据包的数量、频率等信息来设定。
[0065]例如,若中间节点103查找出与中间节点103的一个上一跳节点的MAC地址对应记录的各节点序列号包括:D1、D2、D4、D5、D7,其中最大节点序列号为D7,这样,中间节点103可以将D3、D6确定为丢失的数据包的节点序列号,并将携带有确定出的丢失的数据包的节点序列号D3、D6和最大节点序列号D7的确认信息返回至该中间节点103的上一跳节点,用于确认该上一跳节点与中间节点103之间丢失的数据包。
[0066]S206:中间节点103的上一跳节点根据接收的确认信息,确定出中间节点103已接收的数据包后,将确定出的数据包从与中间节点103相对应的队列中清除;并将确定出的丢失的数据包重新进行发送。
[0067]具体地,中间节点103的上一跳节点(可以是源端节点,也可以是上一跳的中间节点)接收到中间节点103返回的携带有最大节点序列号和丢失的数据包的节点序列号的确认信息后,根据该上一跳节点中的与该中间节点103相对应的队列中缓存的各数据包的节点序列号进行比较,确定出中间节点103已接收的数据包;并将确定出的数据包从与该中间节点103相对应的队列中清除后,将该队列中剩余的数据包确定为该上一跳节点与该中间节点103之间丢失的数据包。
[0068]例如,中间节点103将携带有确定出的丢失的数据包的节点序列号D3、D6和最大节点序列号D7的确认信息返回至中间节点103的上一跳节点;若中间节点103的上一跳节点中与该中间节点103相对应的队列中的最大节点序列号为D8 ;则该上一跳节点可以根据接收的确认信息,确定出该中间节点103已接收的数据包及其对应的节点序列号(Dl、D2、D4、D5、D7),将确定出的已接收的数据包从与该中间节点103相对应的队列中清除后,可以得到丢失的数据包及其节点序列号(D3、D6、D8)。
[0069]继而,在确定出该上一跳节点与该中间节点103之间丢失的数据包之后,可以将根据接收的确认信息确定出的丢失的数据包重新进行发送。具体地,可以根据接收数据包的目的端的目的方IP地址进行重新路由,确定出接收丢失的数据包的下一跳节点后,将丢失的数据包缓存到该下一跳节点所对应的队列中。其中,由于丢失的数据包是针对目的端节点重发的,不是针对下一跳节点发送的,而重新路由时,该上一跳节点之前的下一跳节点即该中间节点103可能已经不在可通信范围内,或者已经不是最佳的传输路径,此时,该上一跳节点将重新路由出新的接收丢失的数据包的下一跳节点,取消缓存丢失的数据包的队列与该中间节点103的对应关系,而建立与重新路由出的下一跳节点的对应关系。
[0070]实际应用中,当该中间节点103的上一跳节点具体为源端节点101时,源端节点101接收到源端节点101的下一跳节点(即该中间节点103)返回的携带有节点序列号的确认信息后,根据接收的确认信息确定出下一跳节点(即该中间节点103)已接收的数据包和丢失的数据包;将下一跳节点已接收的数据包从与下一跳节点所对应的队列中清除,将丢失的数据包重新发送。
[0071]实际应用中,由于卫星网络的往返时延一般比较大,一旦发生丢包,将非常不利于信息的重传和回复,在极端环境情况下,可能在第一跳(源端节点与源端节点的下一跳节点传输数据的过程)就产生了错误(比如丢包);若采用现有的传输控制方式,只有经过多跳到达目的端节点之后才能发现丢包,这样,错误将呈指数累积且检测出最终错误所耗费的时间长;而源端节点也需要重新路由后,再经过多跳将重发的丢失的数据包传输至目的端节点,数据恢复时间长。也就是说,现有确认机制中,只有目的端节点有责任检测丢失的数据包,只有源端节点能够重新路由来重发丢失的数据包,存在丢失数据包的检测速度慢和数据恢复速度慢的不足。
[0072]而本发明提供的技术方案中,中间节点可以对传输的数据包也进行确认,在短时间内检测出该中间节点与下一跳节点之间的丢失的数据包,并将检测出的丢失的数据包向目的端节点重新发送,快速实现数据恢复,这样,可以保证最后在目的端节点仍将正确接收到源端节点发送的一系列数据包。
[0073]相比现有的端到端的传输控制方案,本发明通过点到点之间的数据包丢失检测和数据恢复,可以减小通信网络中进行数据传输时的丢包率、误码率,保证源端节点与目的端节点之间的数据传输过程中不会产生错误累积;而且,由于中间节点与下一跳节点之间对丢失数据包的检测和恢复速度都要比源端节点到目的端节点之间对丢失包的处理速度要快,缩短了源端节点到目的端节点之间数据传输的往返时延,大大提高了通信网络的数据传输质量。
[0074]此外,中间节点103对于已接收的数据包可以继续向下一跳节点进行传输:中间节点103按先入先出的顺序将对应目的方IP地址的下一跳节点所对应的队列中缓存的数据包向下一跳节点发送。
[0075]实际应用中,由于中间节点103是针对目的端的目的IP地址来发送数据包的,而通信网络中的目的端具体可以是对地静止的轨道卫星,也可以是对地具有一定相对速度的中轨及低轨卫星。也就是说,目的端节点的具体位置可能在不断的变化,这样,在中间节点与之前确定出的对应目的方IP地址的下一跳节点之间可能会出现连接失效的情况。[0076]因此,为了保证数据传输控制的传输路径的可靠性,中间节点在将缓存的数据包发送之前,需要判断中间节点与之前确定出的对应目的方IP地址的下一跳节点之间的通信连接是否断连。具体地,中间节点103按先入先出的顺序将对应目的方IP地址的下一跳节点所对应的队列中缓存的数据包向下一跳节点发送的过程中,若中间节点103确定与该队列所对应的下一跳节点断开连接,则取消该队列与下一跳节点的对应关系,并根据该队列中的数据包的目的方IP地址进行重新路由;将重新路由后确定的下一跳节点与队列进行对应;继而,按先入先出的顺序将重新确定的下一跳节点所对应的队列中缓存的数据包向重新确定的下一跳节点发送。
[0077]本发明提供的技术方案中,仍保留端到端的确认机制;目的端节点在接收到数据包后可以向上一跳的中间节点,以及源端节点回复确认信息;其中,目的端节点在接收到数据包后向上一跳的中间节点回复确认信息的具体方法,流程如图3所示,包括如下步骤:
[0078]S301:目的端节点接收到数据包后,将该数据包中携带的发送方IP地址和源端序列号对应记录,以及该数据包中的上一跳节点发送该数据包的端口的MAC地址和上一跳节点为该数据包分配的节点序列号对应记录。
[0079]具体地,通信网络中的目的端节点102在接收到上一跳节点发送的数据包后,解析出该数据包中携带的发送方IP地址、源端节点为该数据包分配的源端序列号、上一跳节点发送该数据包的端口的MAC地址、以及上一跳节点为该数据包分配的节点序列号;继而,可以将解析出的发送方IP地址和源端序列号对应记录,以及将解析出的MAC地址和节点序列号对应记录。其中,该上一跳节点具体为源端节点101、或通信网络中目的端节点102的上一跳的中间节点103。
[0080]S302:目的端节点102在每个确认周期到达时,针对每个记录的MAC地址,查找出与该MAC地址对应记录的各节点序列号后从中确定出最大节点序列号和丢失的数据包的节点序列号;并向上一跳节点返回携带有确定出的节点序列号的确认信息。
[0081]具体地,目的端节点102在每个确认周期到达时,可以针对目的端节点102记录的每个MAC地址,查找出与该MAC地址对应记录的各节点序列号,从查找出的各节点序列号中确定出最大节点序列号和丢失的数据包的节点序列号;并向与该MAC地址对应的目的端节点102的上一跳节点(源端节点101、或上一跳的中间节点103)返回携带有确定出的最大节点序列号和丢失的数据包的节点序列号的确认信息。
[0082]S303:目的端节点102的上一跳节点根据接收的确认信息,确定出目的端节点102已接收的数据包后,将确定出的数据包从与目的端节点102相对应的队列中清除;并将确定出的丢失的数据包重新进行发送。
[0083]具体地,目的端节点102的上一跳节点接收到目的端节点102返回的携带有最大节点序列号和丢失的数据包的节点序列号的确认信息后,根据该上一跳节点中的与目的端节点102相对应的队列中缓存的各数据包的节点序列号进行比较,确定出目的端节点102已接收的数据包;并将确定出的数据包从与目的端节点102相对应的队列中清除后,将该队列中剩余的数据包确定为该上一跳节点与目的端节点102之间丢失的数据包,并将根据接收的确认信息确定出的丢失的数据包重新进行发送。
[0084]进一步地,本发明实施例中,除了进行点到点的确认检测,还可以结合传统的端到端的确认机制,对目的端节点与源端节点之间的传输的数据包进行确认,保证数据传输控制的可靠性。具体地,目的端节点102在接收到数据包后向源端节点回复确认信息的具体方法,流程如图4所示,包括如下步骤:
[0085]S401:目的端节点接收到数据包后,将该数据包中携带的发送方IP地址和源端序列号对应记录,以及该数据包中的上一跳节点发送该数据包的端口的MAC地址和上一跳节点为该数据包分配的节点序列号对应记录。
[0086]S402:目的端节点102在每个确认周期到达时,针对每个记录的发送方IP地址,查找出与该发送方IP地址对应记录的各源端序列号后从中确定出最大源端序列号和丢失的数据包的源端序列号;根据该发送方IP地址返回携带有确定出的源端序列号的确认信息。
[0087]具体地,目的端节点102在每个确认周期到达时,针对每个记录的发送方IP地址,确定出目的端节点102接收的数据包的最大源端序列号和丢失的数据包的源端序列号后,可以向与该发送方IP地址相对应的源端节点返回携带有最大源端序列号和丢失的数据包的源端序列号的确认信息。
[0088]S403:源端节点101接收到目的端节点102返回的携带有源端序列号的确认信息,确定出目的端节点已接收的数据包和丢失的数据包后,将目的端节点已接收的数据包从队列中清除,将丢失的数据包重新发送。
[0089]上述中间节点的一种具体内部结构框图,如图5所示,包括:数据包接收模块501、数据包确认模块502。
[0090]其中,数据包接收模块501用于接收到一个数据包后,解析该数据包中的上一跳节点发送该数据包的端口的MAC地址,以及上一跳节点为该数据包分配的节点序列号后,将解析出的MAC地址和节点序列号进行对应记录。
[0091]数据包确认模块502在每个确认周期到达时,针对数据包接收模块501中每个记录的MAC地址,查找出与该MAC地址对应记录的各节点序列号后从中确定出最大节点序列号和丢失的数据包的节点序列号;并向上一跳节点返回携带有确定出的节点序列号的确认信息。
[0092]上述中间节点还包括:数据包缓存模块503、数据包发送模块504。
[0093]其中,数据包缓存模块503可以将数据包接收模块501接收的数据包缓存到对应该数据包所携带的目的方IP地址的下一跳节点所对应的队列中。
[0094]其中,下一跳节点所对应的队列中缓存的各数据包按缓存的先后顺序统一分配了编号,并将各数据包的编号分别作为中间节点为各数据包分配的节点序列号;并且,下一跳节点所对应的队列中的每个数据包,在该数据包的帧头携带有该队列对应的本中间节点的端口的MAC地址,以及中间节点为该数据包分配的节点序列号。
[0095]数据包发送模块504可以按先入先出的顺序将数据包缓存模块503中下一跳节点所对应的队列中缓存的数据包向下一跳节点发送。
[0096]更优地,本发明实施例中,中间节点还包括:确认信息处理模块505。确认信息处理模块505在接收到下一跳节点返回的确认信息后,根据接收的确认信息确定出下一跳节点已接收的数据包后,将确定出的数据包从数据包缓存模块503中下一跳节点所对应的队列中清除。
[0097]本发明实施例中,关于中间节点中的各模块如何进行数据传输控制,可以参考步骤S204-206,在此不再赘述。[0098]本发明的技术方案中,中间节点在接收到数据包后,将该数据包中携带的上一跳节点发送该数据包的端口的MAC地址和上一跳节点为该数据包分配的节点序列号进行对应记录;且在每个确认周期到达时,针对每个记录的MAC地址,可以根据与该MAC地址对应记录的各节点序列号,向上一跳节点返回携带有最大节点序列号和丢失的数据包的节点序列号的确认信息。继而,中间节点的上一跳节点可以根据接收的确认信息,确定出中间节点丢失的数据包,并将丢失的数据包针对目的端节点重新发送。这样,相比现有的端到端的传输控制方案,本发明通过点到点之间的数据包丢失检测和数据恢复,可以减小通信网络中进行数据传输时的丢包率、误码率,保证源端节点与目的端节点之间的数据传输过程中不会产生错误累积;而且,由于中间节点与下一跳节点之间对丢失数据包的检测和恢复速度都要比源端节点到目的端节点之间对丢失包的处理速度要快,缩短了源端节点到目的端节点之间数据传输的往返时延,大大提高了通信网络的数据传输质量。
[0099]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读取存储介质中,如:R0M/RAM、磁碟、光盘等。
[0100]以上所述仅是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【权利要求】
1.一种通信网络的传输控制方法,其特征在于,包括: 中间节点接收到一个数据包后,解析出该数据包中携带的上一跳节点发送该数据包的端口的MAC地址,以及所述上一跳节点为该数据包分配的节点序列号后,将解析出的MAC地址和节点序列号进行对应记录;以及 所述中间节点在每个确认周期到达时,针对每个记录的MAC地址,查找出与该MAC地址对应记录的各节点序列号后从中确定出最大节点序列号和丢失的数据包的节点序列号;并向上一跳节点返回携带有确定出的节点序列号的确认信息; 所述上一跳节点根据接收的确认信息,确定出所述中间节点已接收的数据包后,将确定出的数据包从与所述中间节点相对应的队列中清除。
2.如权利要求1所述的方法,其特征在于,在所述将确定出的数据包从与所述中间节点相对应的队列中清除后,还包括: 所述上一跳节点将根据接收的确认信息确定出的丢失的数据包重新进行发送。
3.如权利要求2所述的方法,其特征在于,在所述解析该数据包中的上一跳节点发送该数据包的端口的MAC地址,以及所述上一跳节点为该数据包分配的节点序列号时,还包括: 解析该数据包中的目的方IP地址。
4.如权利要求3所述的方法,其特征在于,在所述将解析出的MAC地址和节点序列号进行对应记录后,还包括: 将该数据包缓存到对应所述目的方IP地址的下一跳节点所对应的队列中;其中,所述队列中缓存的各数据包按缓存的先后顺序统一分配了编号,并将各数据包的编号分别作为所述中间节点为各数据包分配的节点序列号;并且,所述队列中的每个数据包,在该数据包的帧头携带有所述队列对应的本中间节点的端口的MAC地址,以及所述中间节点为该数据包分配的节点序列号;以及 所述中间节点按先入先出的顺序将所述队列中缓存的数据包向下一跳节点发送。
5.如权利要求4所述的方法,其特征在于,在所述中间节点按先入先出的顺序将所述队列中缓存的数据包向下一跳节点发送的过程中,还包括: 若所述中间节点确定与所述队列所对应的下一跳节点断开连接,则取消所述队列与所述下一跳节点的对应关系,并根据所述队列中的数据包的目的方IP地址进行重新路由;将重新路由后确定的下一跳节点与所述队列进行对应。
6.如权利要求1-5任一所述的方法,其特征在于,所述上一跳节点具体为源端节点、或所述通信网络中的其它中间节点;以及 所述下一跳节点具体为目的端节点、或所述通信网络中的其它中间节点。
7.—种中间节点,其特征在于,包括: 数据包接收模块,用于接收到一个数据包后,解析该数据包中的上一跳节点发送该数据包的端口的MAC地址,以及所述上一跳节点为该数据包分配的节点序列号后,将解析出的MAC地址和节点序列号进行对应记录; 数据包确认模块,在每个确认周期到达时,针对每个记录的MAC地址,查找出与该MAC地址对应记录的各节点序列号后从中确定出最大节点序列号和丢失的数据包的节点序列号;并向上一跳节点返回携带有确定出的节点序列号的确认信息。
8.如权利要求7所述的中间节点,其特征在于,还包括: 数据包缓存模块,用于将所述数据包接收模块接收的数据包缓存到对应该数据包所携带的目的方IP地址的下一跳节点所对应的队列中;其中,所述队列中缓存的各数据包按缓存的先后顺序统一分配了编号,并将各数据包的编号分别作为所述中间节点为各数据包分配的节点序列号;并且,所述队列中的每个数据包,在该数据包的帧头携带有所述队列对应的本中间节点的端口的MAC地址,以及所述中间节点为该数据包分配的节点序列号; 数据包发送模块,用于按先入先出的顺序将所述数据包缓存模块中下一跳节点所对应的队列中缓存的数据包向下一跳节点发送。
9.如权利要求8所述的中间节点,其特征在于,还包括: 确认信息处理模块,用于在接收到下一跳节点返回的确认信息后,根据接收的确认信息确定出下一跳节点已接收的数据包后,将确定出的数据包从与所述下一跳节点所对应的队列中清除。
10.一种通信网络,其特征在于,包括:如权利要求7-9任一所述的中间节点;以及 源端节点,用于针对一个业务生成一系列数据包后,为生成的数据包统一分配序列号作为源端序列号;在根据接收所述数据包的目的端的目的方IP地址进行路由后,确定出接收所述数据包的下一跳节点;将所述数据包缓存到所述下一跳节点所对应的队列中;其中,所述队列中缓存的各数据包按缓存的先后顺序统一分配了编号,并将各数据包的编号分别作为所述源端节点为各数据包分配的节点序列号;并且,所述队列中的每个数据包,在该数据包的帧头携带有所述队列对应的本源端节点的端口的MAC地址,以及本源端节点为该数据包分配的节点序 列号、源端序列号; 目的端节点,用于接收到数据包后,将该数据包中携带的发送方IP地址和源端序列号对应记录,以及该数据包中的上一跳节点发送该数据包的端口的MAC地址,以及所述上一跳节点为该数据包分配的节点序列号对应记录;并在每个确认周期到达时,针对每个记录的MAC地址,查找出与该MAC地址对应记录的各节点序列号后从中确定出最大节点序列号和丢失的数据包的节点序列号;并向上一跳节点返回携带有确定出的节点序列号的确认信息;以及针对每个记录的发送方IP地址,查找出与该发送方IP地址对应记录的各源端序列号后从中确定出最大源端序列号和丢失的数据包的源端序列号;根据该发送方IP地址返回携带有确定出的源端序列号的确认信息; 所述源端节点还用于接收到下一跳节点返回的携带有节点序列号的确认信息后,根据接收的确认信息确定出下一跳节点已接收的数据包和丢失的数据包后,将下一跳节点已接收的数据包从与所述下一跳节点所对应的队列中清除,将丢失的数据包重新发送;以及接收到所述目的端节点返回的携带有源端序列号的确认信息后,确定出所述目的端节点已接收的数据包和丢失的数据包后,将目的端节点已接收的数据包从队列中清除,将丢失的数据包重新发送。
【文档编号】H04L1/16GK104038322SQ201410268497
【公开日】2014年9月10日 申请日期:2014年6月16日 优先权日:2014年6月16日
【发明者】佘春东 申请人:北京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1