一种分发传输tcp数据包的方法及装置的制作方法

文档序号:7693221阅读:129来源:国知局
专利名称:一种分发传输tcp数据包的方法及装置的制作方法
技术领域
本发明涉及数字信息传输技术,尤其涉及一种分发传输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 4妻收端返回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和节点l是分流节点。并且在该两个节点之间TCP数据包在传输时可能使用的每条通道可称作这两个节点之间的物理链路。在图1中,节点0和节点5之间有3条物理链路;而节点2和节点5之间有1条物理链路。
如果在分流节点上对TCP数据包不做特殊的处理,而把TCP数据包随意通过分流节点与其多个后节点间的物理链路进行发送,那么由于各条物理链路上的传输时延和抖动不同,会增加目的节点接收到的数据包顺序与分流节点发送的数据包顺序不一致,即发生TCP数据包传输乱序。
如图2所示,可能会出现如下情况TCP接收端针对一条TCP链接的当前EXP—SN是snl,此时在分流节点中,这条TCP链接上存在四个连续的TCP数据包等待发送,序列号分别为snl、 sn2、 sn3和sn4,其中sn2、 sn3和sn4的顺序在snl之后。分流节点把序号为snl的数据包从分流节点与其后节点1间的物理链路上发送出去,把序号sn2、 sn3和sn4的数据包从分流节点与其他后节点间的物理链路上发送出去;由于分流节点与其后节点1间的物理链路的时延较大,而其他物理链路的时延较小,导致目的节点(TCP接收端)在没有接收到序号为snl的数据包时,先接收到了序号sn2、 sn3和sn4的数据包。此时,TCP接收端的协议栈会连续发送三次针对snl的DupACK。这些DupACK会导致TCP发送端必须对snl的数据包进行重传,从而降低了这条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链4妄分配一条物理链路,并记录所述新的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;否贝'J, 执行步骤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链接上的数据传输效率。
9以图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 数据包的传输效率。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若千改进和润饰, 这些改进和润饰也应视为本发明的保护范围。
权利要求
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数据包的方法,其特征在于,所述;f全测步骤还包括当斥企测所述TCP链接为已经存在时,则根据所述TCP链接和所述物理链路的所述对应关系,查找到所述待发送TCP数据包所在的所述TCP链接对应的所述物理链路。
5. —种分发传输TCP数据包的装置,用于在TCP发送端和TCP接收端之间传输所述TCP数据包,所述TCP发送端和TCP接收端之间存在多条物理链路,其特征在于,所述装置包括获取模块,用于获取待发送TCP数据包所在的TCP链接;一物理链路发送出去。
6. 根据权利要求5所述的分发传输TCP数据包的装置,其特征在于,所述装置还包括检测模块,用于检测所述TCP链接是否为新的TCP链接,若是,为所述新的TCP链接分配一条物理链路,并记录所述新的TCP链接和所述物理链路的对应关系。
7.根据权利要求5所述的分发传输TCP数据包的装置,其特征在于,所述装置还包括设置模块,用于设置所述TCP链接与所述物理链路的对应关系,以及查找单元,用于根据所述TCP链接与所述物理链路的所述对应关系,查
全文摘要
本发明提供一种分发传输TCP数据包的方法及装置,属于数字信息传输技术领域,用于在TCP发送端和TCP接收端之间传输TCP数据包,并且TCP发送端和TCP接收端之间存在多条物理链路,该方法包括获取待发送TCP数据包所在的TCP链接;将该TCP链接上的所有待发送TCP数据包通过同一物理链路发送出去,通过将TCP链接上的TCP数据包设置在与该TCP链接对应的物理链路上发送,可降低TCP数据包出现乱序,从而提高TCP链接上的数据传输效率。
文档编号H04L12/56GK101547192SQ200810102559
公开日2009年9月30日 申请日期2008年3月24日 优先权日2008年3月24日
发明者于晓伟, 张剑锋, 李孟喜, 伟 邓 申请人:大唐移动通信设备有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1