多网络接口设备的数据并发传输方法
技术领域
本发明涉及网络技术领域,具体涉及多网络接口设备的数据并发传输方法。
背景技术
目前,多维网络通信的概念被提出。现在的多维网络通信技术中的设备,如PC,具有多个网络接口,但是仅能实现同一时间只有一个网络接口和其他节点保持数据传输,不具有多数据并发执行的能力,不能实现跨网通信。
现有的实现数据并发传输的的形式都基于以下两种硬件形式:
●多网络接口的数据并行传输
进行传输的两个主机(或其中之一)有多个网络接口,且这些接口接入了不同的网络,那么这两个主机之间就可能存在不同的直接IP路径。
●单网络接口的数据并行传输
进行传输的两个主机都只有一个网络接口,则寻找适当的中转节点,将流量经由这些节点中转,可以形成除了直接IP路径之外的一条或多条重叠路径。
单网络接口主机的数据并行传输技术,关键在中间节点能够成功寻址转发报文。因此,中间节点就必须在发送的报文地址域中携带不属于自己的IP地址,或者中间节点能够动态的将目标IP地址修改为要转发的到的IP地址。通过这两种方法,能过实现数据的并行传输,但是降低了报文的净数据量,延长了报文的传输时间,降低了整个网络的性能。无法满足大容量、实时性的要求。
而多网络接口主机的数据并行传输技术,利用现在廉价的硬件资源,实现PC和PC之间的多网络、多路径互联。通过增加硬件设施来实现网络的数据并行传输。但现有的多网络接口数据并行传输技术存在数据分发调度不合理,接收乱序,以及快速重传效率低下等问题。
现有的并行数据传输技术大多是基于应用层和传输层。基于应用的技术存在普遍适应性差、移植困难的缺点。基于传输层的技术能够兼容现有的各种网络,但实现困难,技术难度大。
现有的传输层协议要有TCP、UDP、SCTP(流控制传输协议)。SCTP作为一种在TCP和UDP基础上发展起来的传输层协议,它有许多优点,经过长期实践检验,已经得到各大操作系统和网络设备厂商的普遍接受。它考虑了TCP和UDP在应用中遇到的各种问题,形成了自己的特点,如支持多穴主机(Multihoming);支持多流;面向消息;支持消息的无序递交;部分可靠的传输等。目前,基于支持多穴主机的特点(简称为多穴特点),SCTP实现了多路径的第一种应用策略,即主路径和备用路径。若直接在主路径和备用路径上并发进行传输,因不同路径的传输时延不同,会导致数据包乱序到达接收端,在延迟差别较大时,可能导致接收端向发送端发出3次间隔报告,使发送端认为发生丢包而进行不必要的重传。
发明内容
有鉴于此,为了解决上述问题,本发明公开了多网络接口设备的数据并发传输方法,应用在多网络接口的PC机上,能很好的实现数据的并发传输。
本发明的目的是这样实现的:多网络接口设备的数据并发传输方法,用于发送端与接收端的多路径数据并发传输,包括如下步骤:
1)发送端与接收端检测可进行通信的网络接口数量,对网络接口进行标记,使每个可进行通信的网络接口具有一个序号;
2)发送端将待发送数据分割为多个报文段,并对每个报文段添加传输序列号;
3)发送端将报文段的传输序列号对网络接口数量求余,将报文段按其所得的余数选择相应的网络接口进行发送;
4)接收端接收到报文段后,对其进行排序组合。
进一步,步骤3)中,将报文段通过与其所得余数相同序号的网络接口进行发送;
进一步,所述发送端和接收端均对每一个网络接口设置有缓存;步骤3)中,报文段在求余后被放到相应网络接口的缓存中,再进行发送;步骤4)中,接收端接收到的报文段先放在相应网络接口的缓存中,再进行排序组合;
进一步,所述步骤4)中还包括报文丢失重传的步骤,接收端对缓存内接收到的报文段的传输序列号对网络接口数量求余,如果所得商与该缓存内上一接收到报文段所得的商之间不连续,则判断报文丢失,并通知发送端重传丢失的报文;
进一步,所述步骤4)中还包括如下步骤:接收端对缓存内接收到的报文段的传输序列号对网络接口数量求余,如果所得余数与该缓存对应的网络接口序号不对应,则丢弃该报文段;
进一步,所述多网络接口设备的数据并发传输方法通过修改流控制传输协议实现;
进一步,所述步骤2)在传输层进行;
进一步,修改后的流控制传输协议中,拥塞窗口更新算法包括如下步骤:
将同一条路径发送的报文作为一个集合,将同一集合内的报文视为逻辑连续;
对每一条路径,监听该路径是否有新的报文到达;
当收到有漏洞的选择性确认信息时,判断新到报文的传输序列号是否与前一报文在逻辑上连续,若否,则更新相应路径的拥塞窗口。
本发明的有益效果是:充分利用现有的网络,通过改进的分组调度算法,解决了数据分发调度不合理、接收乱序及快速重传效率低下等问题,很好地实现了数据的并发传输;在进一步的技术方案中,本发明的方法可通过对SCTP协议进行改进实现,实现难度较低,通过对拥塞窗口更新算法的改进,在每条路径上独立的使用拥塞控制机制,提高了整个数据并行传输的效率。
附图说明
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步的详细描述:
图1示出了本发明多网络接口设备的数据并发传输方法的示意图;
图2示出了本发明多网络接口设备的数据并发传输方法中分组调度算法的示意图;
图3示出了本发明多网络接口设备的数据并发传输方法中报文重传的流程示意图;
图4示出了本发明多网络接口设备的数据并发传输方法中拥塞窗口更新算法的流程示意图。
具体实施方式
以下将对本发明的优选实施例进行详细的描述。
参见图1,本实施例的多网络接口设备的数据并发传输方法,通过对SCTP协议进行改进实现,本领域技术人员不难理解,本方法亦可通过全新的通信协议实现,本实施例的多网络接口设备的数据并发传输方法包括如下步骤:
1)发送端和接收端的主机可通过改进后的SCTP协议自动地检测主机所拥有能够用于进行通信得网络接口数目,且对可通信的网络接口进行标记,假如主机现拥有能够用于通信的网络接口的数目为K,标记后的网络接口的序号依次为0、1......K-1(不同的网络接口对应不同的路径);
2)发送端将待发送数据从应用层交给下一层传输层,在传输层被SCTP分割成认为最适合发送的数据块(称为报文段)并对每个报文段添加传输序列号(TSN);
3)如图2所示,所述发送端和接收端均对每一个网络接口设置有缓存;发送端通过SCTP读取报文的TSN(传输序列号),然后把TSN%K(TSN对K取余)。假若TSN%K后的余数为M(0≤M≤k-1),则该报文就被放到相对应的网络接口的缓存中,之后被取出经网络层封装后到链路层时就从标号为M的网络接口发送出去到网络中;同理,报文序列号(TSN)对K取余后的余数为多少就从标号为多少的网络接口号发送到网络中;
4)接收端接收到报文段后,把其放到相应的网络接口的缓存中,然后对报文进行排序后再交给后续排序组合等处理;若接收端接收到的报文乱序时,则启动重传算法重传丢失的报文;本实施例设计的重传算法是从传送丢失报文的网络接口重传报文;参见图3,发送端为每条路径设置一个缓存,分组经求余分组调度算法后被放到相应路径的发送缓存中,在各自路径的发送缓存中的报文逻辑上是连续的。接收端也为各自路径设置一个接收缓存,从各路径收到的报文被放在相应的接收缓存中。在接收缓存中,SCTP对接收到的报文进行TSN/K和TSN%K操作。若发现TSN/K的商不和上个分组的商有漏洞(在逻辑上不连续),则判断报文丢失,因此通知发送端重传丢失的报文,那么发送端就从原传送丢失报文的路径重传丢失的报文;若SCTP对接收到的报文进行TSN%K操作后,发现得到的余数和路径号不对应,则就丢弃该报文。
本实施例对于SCTP协议中的拥塞窗口更新算法CUMC(cwnd update with mulit-dimensional Communication)也进行改进,标准SCTP只有在收到一个新的SACK(选择性确认信息)累积确认时会更新拥塞窗口,而在并行传输中,接收端会因为分组的乱序而发送大量带有漏洞的SACK,这些SACK对不连续的TSN进行确认,往往具有相同的累积确认值,因此不能促使发送端更新拥塞窗口。当漏洞里面的TSN被后到的SACK以累积确认的形式确认时,会引起拥塞窗口的更新,但其增量大小只取决于新确认的TSN(如累积确认值较上次的变化),因此,拥塞窗口增长的比较慢,影响了吞吐量的提高。
造成这种结果的原因在于SACK中的累积确认值是针对整个SCTP关联而言的,而不是基于单个的路径,单个路径上分组的有序到达并不会影响拥塞窗口的更新。反而某条线路线路通信质量差时,标准的SCP收到的SACK检测到有分组丢失,端点会采取以下动作:
ssthresh=max(cwnd/2,2×MTU);
cwnd=ssthresh。
基本上,分组的丢失将导致cwnd降低一半。
当到某个地址的T3-rtx超时,SCTP将用如下动作进行慢启动。
ssthresh=max(cwnd/2,2×MTU);
cwnd=1×MTU。
在端点收到了数据成功递交给该地址的确认前,不会有多于一个的SCTP分组在向该地址传送。因而影响了整个关联的吞吐量
参见图4,本实施例中的拥塞窗口更新算法则是根据单个路径上累积确认值的变化来更新拥塞窗口,修改了接受方的协议。该算法同样是将已发送的数据根据其实际发送路径的不同而分成不同的集合,在同一条路径上发送的数据属于同一集合,并且认为同一集合内的数据是逻辑上连续的。当收到带有漏洞的SACK时,判断新到报文的传输序列号是否与前一报文在逻辑上连续,若是,则不更新,若否,则更新相应路径的拥塞窗口。本算法创新性的在每条路径上独立的使用拥塞控制机制,提高了整个数据并行传输的效率。
拥塞窗口更新算法中的变量说明如下:
Listener_TSN_New:boolean型,每条路径一个,是否监听该路径上有新的TSN到达。
NEW_TSN:int型,每条路径一个,新到达的最小TSN,并且大于以前的TSN累积确认值。
Receive_TSN_rvl:int型,每条路径一个,记录上次的TSN累计值。
以上所述仅为本发明的优选并不用于限制本发明,显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。