CN101547192A - 一种分发传输tcp数据包的方法及装置 - Google Patents
一种分发传输tcp数据包的方法及装置 Download PDFInfo
- Publication number
- CN101547192A CN101547192A CN200810102559A CN200810102559A CN101547192A CN 101547192 A CN101547192 A CN 101547192A CN 200810102559 A CN200810102559 A CN 200810102559A CN 200810102559 A CN200810102559 A CN 200810102559A CN 101547192 A CN101547192 A CN 101547192A
- Authority
- CN
- China
- Prior art keywords
- tcp
- link
- physical link
- data bag
- transmission
- 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
Landscapes
- Communication Control (AREA)
Abstract
本发明提供一种分发传输TCP数据包的方法及装置,属于数字信息传输技术领域,用于在TCP发送端和TCP接收端之间传输TCP数据包,并且TCP发送端和TCP接收端之间存在多条物理链路,该方法包括:获取待发送TCP数据包所在的TCP链接;将该TCP链接上的所有待发送TCP数据包通过同一物理链路发送出去,通过将TCP链接上的TCP数据包设置在与该TCP链接对应的物理链路上发送,可降低TCP数据包出现乱序,从而提高TCP链接上的数据传输效率。
Description
技术领域
本发明涉及数字信息传输技术,尤其涉及一种分发传输TCP(TransmissionControl Protocol,传输控制协议)数据包的方法及装置。
背景技术
在通信设备的两个端点之间采用TCP协议通信时,可根据数据流的传送方向,将通信两端分别称为TCP发送端和TCP接收端,其中TCP发送端和TCP接收端之间需要建立起一条或多条TCP链接才能传输数据,而每条TCP链接由收发两端的TCP端口号和收发两端的IP(Internet Protocol,国际互联网络通讯协定)地址唯一确定。
在TCP链接上,每个TCP数据包的头部都携带有一个SN(Serial Number,序列号),而且该TCP数据包中的SN是由TCP发送端填写。并且TCP发送端对每条TCP链接都维持一个SN值,而SN的起始数值由TCP发送端在TCP链接建立时随机生成的。
TCP接收端在建立一条链接时可获知TCP发送端为该链接生成的起始SN,并将其记录为该条TCP链接上希望接收到的下一个数据包的序列号(EXP_SN);TCP接收端对每条TCP链接都维持一个EXP_SN值。在一条TCP链接上,TCP接收端每接收到一个TCP数据包时,首先判断数据包头中的SN是否等于当前的EXP_SN。
如果SN与当前的EXP_SN相同,那么TCP协议栈则认为接收到正确的TCP数据包,将该TCP数据包递交给高层应用,并把当前的EXP_SN加上包内的数据长度,作为新的EXP_SN值。
如果SN与当前的EXP_SN不相同,则可能发生TCP数据包的丢失或者乱序,此时,不更新当前的EXP_SN,TCP接收端将立即向TCP发送端返回一个DupACK,并携带EXP_SN。
针对TCP接收端返回DupACK的情况,TCP协议规定:TCP发送端如果连续三次接收到携带有相同EXP_SN的DupACK,那么认为序号为EXP_SN的TCP数据包已经丢失,将重新发送该TCP数据包。
可见,在一条TCP链接上,TCP接收端会因数据包的乱序反馈DupACK,进而可能导致TCP发送端对数据包的重发,这会降低数据传输效率。因此,为了保证一条TCP链接上的数据传输效率,应该努力保证其上的TCP数据包有序传输。
在现有的在TCP数据包传输过程中,TCP数据包从TCP发送端到TCP接收端传输时,可能需要经过多个数据处理节点。此时可将TCP发送端定义为源节点,负责TCP数据包的生成和发送;将TCP接收端定义为目的节点,负责TCP数据包的接收。然而除源节点和目的节点外,TCP数据包还可能会经过一些中间节点,这些中间节点负责TCP数据包的转发以及分发。一个TCP数据包从节点A传输至节点B,如果不经过中间节点,那么称节点B是节点A的后节点,节点A是节点B的前节点。当某一节点具有多个后节点时,可将该节点称为分流节点。
参见图1,在该图中节点0和节点1分别有两个后节点,节点4和节点5分别有两个前节点。则此时节点0和节点1是分流节点。并且在该两个节点之间TCP数据包在传输时可能使用的每条通道可称作这两个节点之间的物理链路。在图1中,节点0和节点5之间有3条物理链路;而节点2和节点5之间有1条物理链路。
如果在分流节点上对TCP数据包不做特殊的处理,而把TCP数据包随意通过分流节点与其多个后节点间的物理链路进行发送,那么由于各条物理链路上的传输时延和抖动不同,会增加目的节点接收到的数据包顺序与分流节点发送的数据包顺序不一致,即发生TCP数据包传输乱序。
如图2所示,可能会出现如下情况:TCP接收端针对一条TCP链接的当前EXP_SN是sn1,此时在分流节点中,这条TCP链接上存在四个连续的TCP数据包等待发送,序列号分别为sn1、sn2、sn3和sn4,其中sn2、sn3和sn4的顺序在sn1之后。分流节点把序号为sn1的数据包从分流节点与其后节点1间的物理链路上发送出去,把序号sn2、sn3和sn4的数据包从分流节点与其他后节点间的物理链路上发送出去;由于分流节点与其后节点1间的物理链路的时延较大,而其他物理链路的时延较小,导致目的节点(TCP接收端)在没有接收到序号为sn1的数据包时,先接收到了序号sn2、sn3和sn4的数据包。此时,TCP接收端的协议栈会连续发送三次针对sn1的DupACK。这些DupACK会导致TCP发送端必须对sn1的数据包进行重传,从而降低了这条TCP链接上的数据传输效率。
在实现本发明的过程中,发现现有技术中至少存在如下问题:
在TCP收发两端之间的分流节点上,由于存在把同一条TCP链接上的TCP数据包分发到多个物理链路上进行传输,可能会导致TCP接收端在这条TCP链接上接收到的TCP数据包乱序,进而导致该TCP链接上的数据传输效率降低。
发明内容
本发明的目的是提供一种分发传输TCP数据包的方法及装置,有效的提高了TCP链接上TCP数据包的传输效率。
为达到上述目的,本发明提供一种分发传输TCP数据包的方法,用于在TCP发送端和TCP接收端之间传输所述TCP数据包,所述TCP发送端和TCP接收端之间存在多条物理链路,所述方法包括:
获取步骤,获取待发送TCP数据包所在的TCP链接;
发送步骤,将所述TCP链接上的所有所述待发送TCP数据包通过同一物理链路发送出去。
优选地,在所述发送步骤之前,所述方法还包括:检测步骤,检测所述TCP链接是否为新的TCP链接,若是,为所述新的TCP链接分配一条所述物理链路,并记录所述新的TCP链接和所述物理链路的对应关系。
优选地,在所述获取步骤之前,所述方法还包括:设置步骤,设置所述TCP链接与所述物理链路的对应关系。
优选地,所述检测步骤还包括:当检测所述TCP链接为已经存在时,则根据所述TCP链接和所述物理链路的所述对应关系,查找到所述待发送TCP数据包所在的所述TCP链接对应的所述物理链路。
本发明还提供一种分发传输TCP数据包的装置,用于在TCP发送端和TCP接收端之间传输所述TCP数据包,所述TCP发送端和TCP接收端之间存在多条物理链路,所述装置包括:
获取模块,用于获取待发送TCP数据包所在的TCP链接;
发送模块,用于将所述TCP链接上的所有所述待发送TCP数据包通过同一物理链路发送出去。
优选地,所述装置还包括:
检测模块,用于检测所述TCP链接是否为新的TCP链接,若是,为所述新的TCP链接分配一条物理链路,并记录所述新的TCP链接和所述物理链路的对应关系。
优选地,所述装置还包括:
设置模块,用于设置所述TCP链接与所述物理链路的对应关系,以及
查找单元,用于根据所述TCP链接与所述物理链路的所述对应关系,查找到所述待发送TCP数据包所在的所述TCP链接对应的所述物理链路。
上述技术方案中的一个技术方案具有如下有益效果:将TCP链接上的所有TCP数据包通过同一物理链路发送,降低了TCP数据包出现乱序的可能,从而提高TCP链接上TCP数据包的传输效率。
附图说明
图1为现有的物理链路示意图;
图2为现有的传输TCP数据包的结构图;
图3为本发明的实施例中分发传输TCP数据包的方法一流程图;
图4为本发明的实施例中分发传输TCP数据包的方法二流程图;
图5为本发明的实施例中分发传输TCP数据包的结构图;
图6为本发明的实施例中分发传输TCP数据包的装置结构框图。
具体实施方式
本发明的实施例可适用于TCP收发两端之间所有分流节点。该分流节点与其所有后节点之间都有一条物理链路可用,并且将该物理链路称为该分流节点的可用物理链路。
为了使本技术领域的技术人员更好地理解本发明的技术方案,下面将结合附图和实施方式对本发明的实施例作进一步的详细说明。
如图3所示,为本发明的实施例中分发传输TCP数据包的方法一流程图在本发明的实施例中,首先在分流节点上获取待发送TCP数据包所在的TCP链接,然后将同一TCP链接上的所有待发送TCP数据包通过同一物理链路发送出去,从而保证了TCP链接上TCP数据包的有序传输,进而提高了TCP链接的传输效率。其具体步骤如下:
步骤31、获取待发送TCP数据包所在的TCP链接;
可根据该TCP数据包中所携带的收发两端的TCP端口号和收发两端的IP地址来确定该TCP数据包所在的TCP链接。
步骤32、将该TCP链接上的所有待发送TCP数据通过同一物理链路发送出去。
例如,在一些网络设备中,有一个负责接收数据的网络处理器,同时有多个负责进一步处理数据的数据处理器。这里的网络处理器就相当于一个分流节点;而多个数据处理器相当于这个分流节点的后节点。网络处理器接收到TCP数据包之后,首先确定出该TCP数据包所在的TCP链接,然后把属于同一个TCP链接的所有TCP数据包通过同一物理链路发送到同一个数据处理器,从而有效地避免了TCP数据包在传输过程中乱序的问题。
在本发明的实施例中,分流节点检测每个待发送的TCP数据包所在的TCP链接情况,分别确定TCP数据包发送所需的物理链路。在确定物理链路时,由于TCP链接可能是新的或者已经存在,此时针对上述两种情形分别对如何通过该TCP链接确定与其对应的物理链路进行说明。
1)当TCP链接是分流节点上的一个新TCP链接时,需要在分流节点的可用物理链路中为该新的TCP链接分配一条物理链路,并记录这条TCP链接和物理链路的对应关系。
2)当TCP链接在分流节点上已经存在时,分流节点根据TCP链接和物理链路的对应关系查找到相应的物理链路。也就是可通过预先设置TCP链接与物理链路的对应关系,然后根据该对应关系查找物理链路。
根据TCP链接的上述两种情形,也就是在获取待发送TCP数据包所在的TCP链接后,检测该TCP链接是否为新TCP链接,此时本发明的方法实施例可包括如下步骤,如图4所示。
步骤41、获取待发送TCP数据包所在的TCP链接;
可根据该TCP数据包中所携带的收发两端的TCP端口号和收发两端的IP地址来确定该TCP数据包所在的TCP链接。
步骤42、检测TCP链接是否为新的TCP链接?若是,则执行步骤43;否则,执行步骤44;
在获取待发送TCP数据包所在的TCP链接后,检测该TCP链接是否为新的TCP链接,若该TCP链接是新的,则为该新的TCP链接分配一条物理链路,并记录这条TCP链接和物理链路的对应关系;若该TCP链接已经存在时,则根据TCP链接和物理链路的对应关系查找到相应的物理链路。
步骤43、为该新的TCP链接分配一条物理链路,并记录这条TCP链接和物理链路的对应关系;
步骤44、根据TCP链接和物理链路的对应关系查找到相应的物理链路;
本步骤中的对应关系,可在获取待发送TCP数据包所在的TCP链接之前就预先设置TCP链接与物理链路的对应关系,也可以在物理链路发送第一个待发送TCP数据包后,记录该物理链路与该待发送TCP数据包所在TCP链接的对应关系,然后在后续发送该TCP链接上的TCP数据包时,根据记录的对应关系查找与其对应的物理链路。
步骤45、将该TCP链接上的所有待发送TCP数据通过同一物理链路发送出去。
在图3和图4中的步骤中,该对应关系可参考TCP链接的数据特性、各条物理链路上的处理能力、时延抖动等特性来确定,在本发明的实施例中,可采用负荷均衡原则来设置TCP链接与物理链路的对应关系。
由上述技术方案可知,在确定了TCP数据包发送所需的物理链路后,通过该条物理链路将所有待发送TCP数据包发送出去。从而使得在TCP发送端和TCP接收端之间,一个TCP链接上的数据包只在一条物理链路上发送,从而减少了TCP数据包出现乱序的可能,提高该条TCP链接上的数据传输效率。
以图5为例。如果分流节点和TCP接收端之间存在四条TCP链接,分别为TCP链接A、TCP链接B、TCP链接C以及TCP链接D,那么分流节点在分发传输TCP数据包时按照上述实施例,可为每个TCP链接分配一条物理链路,如采用简单的负荷均衡原则,也就是每条物理链路上分配的TCP链接数要均衡,可能的结果是:在物理链路1上发送TCP链接A和TCP链接C的数据,在物理链路2上发送TCP链接B和TCP链接D的数据。
本发明的实施例还提供了一种用于配合本发明实施例所述方法的装置,下面结合图6进行说明。另需要首先说明的是,由于下述实施例是为实现上述方法实施例,故该装置中的模块都是为了实现上述方法中各步骤而设,但本发明的实施例并不限于下述的实施例,任何可实现上述方法的装置都应包含于本发明的保护范围中。
如图6所示,为本发明的实施例中分发传输TCP数据包的装置,用于在TCP发送端和TCP接收端之间传输所述TCP数据包,所述TCP发送端和TCP接收端之间存在多条物理链路,该装置包括:
获取模块,用于获取待发送TCP数据包所在的TCP链接;
发送模块,将所述TCP链接上的所有所述待发送TCP数据包通过同一物理链路发送出去。
在本发明的另一实施例中,该装置还包括:
检测模块,检测所述TCP链接是否为新的TCP链接,若是,为所述新的TCP链接分配一条物理链路,并记录所述新的TCP链接和所述物理链路的对应关系。
在本发明的另一实施例中,该装置还包括:
设置模块,用于设置所述TCP链接与所述物理链路的对应关系,以及
查找单元,用于根据所述TCP链接与所述物理链路的所述对应关系,查找到所述待发送TCP数据包所在的所述TCP链接对应的所述物理链路。
由上述装置实施例可知,通过将TCP链接上的所有TCP数据包通过同一物理链路发送,可降低TCP数据包出现乱序的可能,从而提高TCP链接上TCP数据包的传输效率。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (7)
1.一种分发传输TCP数据包的方法,用于在TCP发送端和TCP接收端之间传输所述TCP数据包,所述TCP发送端和TCP接收端之间存在多条物理链路,其特征在于,所述方法包括:
获取步骤,获取待发送TCP数据包所在的TCP链接;
发送步骤,将所述TCP链接上的所有所述待发送TCP数据包通过同一物理链路发送出去。
2.根据权利要求1所述的分发传输TCP数据包的方法,其特征在于,在所述发送步骤之前,所述方法还包括:
检测步骤,检测所述TCP链接是否为新的TCP链接,若是,为所述新的TCP链接分配一条所述物理链路,并记录所述新的TCP链接和所述物理链路的对应关系。
3.根据权利要求1所述的分发传输TCP数据包的方法,其特征在于,在所述获取步骤之前,所述方法还包括:
设置步骤,设置所述TCP链接与所述物理链路的对应关系。
4.根据权利要求2或3所述的分发传输TCP数据包的方法,其特征在于,所述检测步骤还包括:
当检测所述TCP链接为已经存在时,则根据所述TCP链接和所述物理链路的所述对应关系,查找到所述待发送TCP数据包所在的所述TCP链接对应的所述物理链路。
5.一种分发传输TCP数据包的装置,用于在TCP发送端和TCP接收端之间传输所述TCP数据包,所述TCP发送端和TCP接收端之间存在多条物理链路,其特征在于,所述装置包括:
获取模块,用于获取待发送TCP数据包所在的TCP链接;
发送模块,用于将所述TCP链接上的所有所述待发送TCP数据包通过同一物理链路发送出去。
6.根据权利要求5所述的分发传输TCP数据包的装置,其特征在于,所述装置还包括:
检测模块,用于检测所述TCP链接是否为新的TCP链接,若是,为所述新的TCP链接分配一条物理链路,并记录所述新的TCP链接和所述物理链路的对应关系。
7.根据权利要求5所述的分发传输TCP数据包的装置,其特征在于,所述装置还包括:
设置模块,用于设置所述TCP链接与所述物理链路的对应关系,以及
查找单元,用于根据所述TCP链接与所述物理链路的所述对应关系,查找到所述待发送TCP数据包所在的所述TCP链接对应的所述物理链路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810102559A CN101547192A (zh) | 2008-03-24 | 2008-03-24 | 一种分发传输tcp数据包的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810102559A CN101547192A (zh) | 2008-03-24 | 2008-03-24 | 一种分发传输tcp数据包的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101547192A true CN101547192A (zh) | 2009-09-30 |
Family
ID=41194083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810102559A Pending CN101547192A (zh) | 2008-03-24 | 2008-03-24 | 一种分发传输tcp数据包的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101547192A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103166912A (zh) * | 2011-12-09 | 2013-06-19 | 华为技术有限公司 | 一种数据包的传输方法、系统 |
WO2013159516A1 (zh) * | 2012-04-28 | 2013-10-31 | 大唐移动通信设备有限公司 | 无线侧tcp数据重传的方法和设备 |
CN109408424A (zh) * | 2018-10-19 | 2019-03-01 | 北京航空航天大学 | 一种基于PCIe接口的SpaceFibre总线数据采集方法 |
CN115794731A (zh) * | 2023-01-29 | 2023-03-14 | 北京超摩科技有限公司 | 一种用于芯粒间多通道数据链路传输的解耦控制方法 |
CN117176809A (zh) * | 2023-09-01 | 2023-12-05 | 中科驭数(北京)科技有限公司 | 一种数据交互方法及系统 |
-
2008
- 2008-03-24 CN CN200810102559A patent/CN101547192A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103166912A (zh) * | 2011-12-09 | 2013-06-19 | 华为技术有限公司 | 一种数据包的传输方法、系统 |
CN103166912B (zh) * | 2011-12-09 | 2016-08-10 | 华为技术有限公司 | 一种数据包的传输方法、系统 |
WO2013159516A1 (zh) * | 2012-04-28 | 2013-10-31 | 大唐移动通信设备有限公司 | 无线侧tcp数据重传的方法和设备 |
CN109408424A (zh) * | 2018-10-19 | 2019-03-01 | 北京航空航天大学 | 一种基于PCIe接口的SpaceFibre总线数据采集方法 |
CN109408424B (zh) * | 2018-10-19 | 2021-08-31 | 北京航空航天大学 | 一种基于PCIe接口的SpaceFibre总线数据采集方法 |
CN115794731A (zh) * | 2023-01-29 | 2023-03-14 | 北京超摩科技有限公司 | 一种用于芯粒间多通道数据链路传输的解耦控制方法 |
CN117176809A (zh) * | 2023-09-01 | 2023-12-05 | 中科驭数(北京)科技有限公司 | 一种数据交互方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4857262B2 (ja) | エンド・ツー・エンドの信頼性のあるグループ通信のための方法および装置 | |
CN110418376A (zh) | 数据传输方法及装置 | |
CN101534249B (zh) | 一种在捆绑链路上发送数据的方法及网络设备 | |
CN104168212B (zh) | 发送报文的方法和装置 | |
CN102263697A (zh) | 一种聚合链路流量分担方法和装置 | |
CN102143078A (zh) | 一种报文处理方法、转发设备及系统 | |
US10263920B2 (en) | Enhanced acknowledgement handling in communication packet transfer | |
CN101547192A (zh) | 一种分发传输tcp数据包的方法及装置 | |
US20150127837A1 (en) | Relay apparatus and data transfer method | |
Natarajan et al. | Non-renegable selective acknowledgments (NR-SACKs) for SCTP | |
EP2788891B1 (en) | Dynamic secure packet block sizing | |
CN103314552A (zh) | 使用非统一接收器的基于组的组播方法 | |
US20060259845A1 (en) | Method and apparatus for acknowledging a bitwise data chunk in wireline and wireless communication systems | |
Tkachov et al. | Method for transfer of data with intermediate storage | |
JP5832335B2 (ja) | 通信装置および通信システム | |
CN110808917B (zh) | 多链路聚合数据重传方法及发送设备 | |
CN104580171B (zh) | Tcp协议的传输方法、装置和系统 | |
CN102694727A (zh) | 实现网络数据包转发加速的方法及装置 | |
CN106603205B (zh) | 数据传输方法、装置和系统 | |
Lee et al. | A simulation study of TCP performance over IEEE 1394 home networks | |
US20050204053A1 (en) | Data transfer to nodes of a communication network using a data channel and a control channel | |
CN107979542A (zh) | 网络拥塞确定方法及本端网元 | |
JP7123194B2 (ja) | データ送信方法、送信デバイス、データ受信方法、および受信デバイス | |
CN103036984A (zh) | 一种单向流量的检测方法及网络设备 | |
Leung et al. | TCP-Swift: an end-host enhancement scheme for TCP over satellite IP networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20090930 |