数据分发方法以及分发服务器与流程

文档序号:17817480发布日期:2019-06-05 21:56
数据分发方法以及分发服务器与流程
本公开涉及网络
技术领域
,特别涉及一种数据分发方法以及分发服务器。
背景技术
:分发服务器,常用于内容分发网络(ContentDeliveryNetwork,CDN)中。其中,内容分发网络是在传统的电信网络基础之上,使用多级CDN节点(如图1中的CDN中间节点以及CDN边缘节点)构建的一个Overlay网络。依据内容分发网络的规模不同,每一级CDN节点由一个或多个分发服务器组成,而各个分发服务器可基于超文本传输协议(HyperTextTransferProtocol,HTTP)或实时媒体协议(RealTimeMediaProtocol,RTMP)向用户终端提供诸如视频、图片、文件等数据的分发业务。在内容分发网络中,依据分发服务器上是否存储了用户终端请求的数据,分发服务器可提供两种分发服务,即命中服务和中转服务。其中,命中服务发生在分发服务器上存储有用户终端请求的数据的情形下,而中转服务发生在分发服务器上未存储用户终端请求的数据,还需向其他分发服务器或源站进行内容请求中转的情形下。其中,图2示出了一种提供中转服务的分发服务器的内部架构示意图,该分发服务器主要包括协议栈和应用层两大块。如图2所示,协议栈负责因特网互联协议(TransmissionControlProtocol/InternetProtocol,TCP/IP)相关的协议处理,分为server(服务端)/client(客户端)两个模块。其中,server负责处理与用户终端间的TCP连接(以下简称为下游连接),包括下游连接的建立、数据报文的分发、可靠性控制管理(比如速率控制)、与应用层的server之间的数据报文转交;client负责处理与上游节点间的TCP连接(以下简称为上游连接),包括上游连接的建立、数据报文的接收、可靠性控制管理(比如是否乱序)、与应用层的client之间数据报文转交。另外,应用层也分为server/client两个模块。其中,应用层的server负责接收用户终端的内容请求,触发应用层的client向上游节点请求(get)数据,接收应用层的client转交过来的上游节点发送的数据报文,并转交给协议栈的server,进而将接收到的数据报文发送给下游节点或用户终端。应用层的client负责接收应用层的server的触发,发起到上游节点的内容请求,此内容请求会触发协议栈的client与上游节点建立连接,之后应用层的client接收协议栈的client从上游节点获取到的数据报文,并转交给应用层的server。简言之,在正常的数据报文处理流程中,一个数据报文需历经协议栈的控制管理(比如检查是否乱序),再到应用层,再由应用层转交到协议栈,再历经协议栈的控制管理(比如速率控制),之后才能由协议栈将数据报文发送给用户终端,即实现数据分发。在实现本公开的过程中,发明人发现相关技术至少存在以下问题:在数据报文的分发过程中,数据分发与控制管理这两个过程严重的糅合在了一起,即需要在对数据报文进行控制管理后才能再进行分发,这使得控制管理过程延后了针对数据报文的分发,引入了较大时延。技术实现要素:本公开实施例提供了一种数据分发方法以及分发服务器,解决了相关技术中数据分发时延较大的问题。所述技术方案如下:第一方面,提供了一种数据分发方法,所述方法应用于分发服务器,所述方法包括:连续接收上游节点发送的第一上游数据报文和第二上游数据报文;对所述第一上游数据报文进行拷贝处理,根据已建立的连接映射表,对拷贝得到的两份报文中的第一份报文进行转换处理,将转换得到的第一下游数据报文发送给下游节点或用户终端,并对基于所述第一上游数据报文拷贝得到的第二份报文进行控制管理;对所述第二上游数据报文进行拷贝处理,根据所述连接映射表,对拷贝得到的两份报文中的第一份报文进行转换处理,将转换得到的第二下游数据报文发送给所述下游节点或所述用户终端,并对基于所述第二上游数据报文拷贝得到的第二份报文进行控制管理;其中,所述连接映射表给出了上游连接信息与下游连接信息之间的映射关系。详细来说,所述连接映射表中包括多个映射表项,而每一个映射表项中给出了上游连接的N元组信息、与所述上游连接的N元组信息匹配的下游连接的N元组信息,以及所述上游连接与所述下游连接的初始序列号差值。此外,所述分发服务器至少包括应用层、协议栈以及数据转发层。其中,所述数据转发层负责上述的数据分发流程,而所述协议栈负责上述的控制管理流程,实现数据转发与控制管理的分离。具体地,所述协议栈包括第一使能接口,所述应用层在向所述上游节点发送用户终端的内容请求之前,会调用所述协议栈的第一使能接口。其中,所述第一使能接口携带上下游连接标识以及指示分离数据转发功能与控制管理功能的使能标志;而所述协议栈在接收到所述应用层的调用后,分离上下游连接的数据转发功能与控制管理功能。另外,所述数据转发层包括第二使能接口,所述协议栈在接收到所述应用层的调用后,调用所述数据转发层的第二使能接口。其中,所述第二使能接口携带所述上游连接信息与所述下游连接信息;所述数据转发层在接收到所述协议栈的调用后,建立所述连接映射表。在第一方面的第一种可能的实现方式中,所述第一上游数据报文的序号与所述第二上游数据报文的序号不连续,所述第一上游数据报文先于所述第二上游数据报文接收到。即,出现了上游丢包,造成了数据报文丢失,导致本分发服务器没有接收到。结合第一方面,在第一方面的第二种可能的实现方式中,所述对拷贝得到的两份报文中的第一份报文进行转换处理,包括:获取所述第一份报文中的N元组信息;基于所述第一份报文中的N元组信息,查询所述连接映射表,得到与所述第一份报文中的N元组信息匹配的目标映射表项;以所述目标映射表项中包括的目标下游连接的N元组信息,替换所述第一份报文中的N元组信息,并根据所述目标映射表项中包括的目标初始序列号差值以及所述第一份报文中携带的序列号,计算所述目标下游连接的序列号。结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述对基于所述第一上游数据报文拷贝得到的第二份报文进行控制管理,包括:对基于所述第一上游数据报文拷贝得到的第二份报文进行乱序检查,并向所述上游节点发送针对所述第一上游数据报文的ACK(Acknowledgement,确认字符)报文。结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述方法还包括:将基于所述第一上游数据报文拷贝得到的第二份报文转换成第三下游数据报文;将所述第三下游数据报文存储在缓冲区中并设置超时定时器;当所述超时定时器超时,向所述下游节点或所述用户终端发送所述第三下游数据报文。结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述连接映射表中一个上游连接信息与一个下游连接信息对应,所述方法还包括:当在所述超时定时器超时之前接收到所述下游节点或所述用户终端返回的ACK报文时,删除所述缓冲区中存储的所述第三下游数据报文。当上游节点重传丢失的数据报文,则本分发服务器还会执行下述转发重传的数据报文并对其进行控制管理的步骤。即结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第六种可能的实现方式中,所述方法还包括:接收所述上游节点重传的第三上游数据报文,所述第三上游数据报文的序号与所述第一上游数据报文的序号连续;对所述第三上游数据报文进行拷贝处理,根据所述连接映射表,对拷贝得到的两份报文中的第一份报文进行转换处理,将转换得到的第四下游数据报文发送给所述下游节点或所述用户终端,并对基于所述第三上游数据报文拷贝得到的第二份报文进行控制管理。其中,在对基于所述第三上游数据报文拷贝得到的第二份报文进行控制管理时,过程与对第一上游数据报文的过程类似。即,对基于所述第三上游数据报文拷贝得到的第二份报文进行乱序检查,并向所述上游节点发送ACK报文;且将基于所述第三上游数据报文拷贝得到的第二份报文转换成下游数据报文,并将得到的下游数据报文存储在缓冲区中,同时设置超时定时器;当所述超时定时器超时,向所述下游节点或所述用户终端发送存储的这一下游数据报文;当在所述超时定时器超时之前接收到所述下游节点或所述用户终端返回的ACK报文时,删除所述缓冲区中存储的这一下游数据报文。结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第七种可能的实现方式中,所述对基于所述第二上游数据报文拷贝得到的第二份报文进行控制管理,包括:对基于所述第二上游数据报文拷贝得到的第二份报文进行乱序检查,并向所述上游节点发送针对所述第一上游数据报文的ACK报文。结合第一方面的第七种可能的实现方式,在第一方面的第八种可能的实现方式中,所述方法还包括:在将第四下游数据报文发送给所述下游节点或所述用户终端后,将基于所述第二上游数据报文拷贝得到的第二份报文转换成第五下游数据报文;将所述第五下游数据报文存储在缓冲区中并设置超时定时器;当所述超时定时器超时,向所述下游节点或所述用户终端发送所述第五下游数据报文。结合第一方面的第八种可能的实现方式,在第一方面的第九种可能的实现方式中,所述连接映射表中一个上游连接信息与一个下游连接信息对应,所述方法还包括:当在所述超时定时器超时之前接收到所述下游节点或所述用户终端返回的ACK报文时,删除所述缓冲区中存储的所述第五下游数据报文。针对上游丢包导致下游丢包的情况,本分发服务器还会执行下述过程,即结合第一方面的第六种可能的实现方式,在第一方面的第十种可能的实现方式中,所述方法还包括:若在接收到所述上游节点重传的所述第三上游数据报文之前,接收到所述下游节点或所述用户终端发送的M次重复ACK,则等待所述上游节点重传所述第三上游数据报文,所述M次重复ACK是针对所述第一上游数据报文的;在接收到重传的所述第三上游数据报文后,执行所述对所述第三上游数据报文进行拷贝处理,根据所述连接映射表,对拷贝得到的两份报文中的第一份报文进行转换处理,将转换得到的第四下游数据报文发送给所述下游节点或所述用户终端的步骤。结合第一方面的第六种可能的实现方式,在第一方面的第十一种可能的实现方式中,所述方法还包括:若在接收到所述上游节点重传的所述第三上游数据报文之后,接收到所述下游节点或所述用户终端发送的M次重复ACK,则将缓冲区中存储的与所述第三上游数据报文匹配的第六下游数据报文发送给所述下游节点或所述用户终端。第二方面,提供了一种分发服务器,所述服务器用于执行上述第一方面所述的数据分发方法。本公开实施例提供的技术方案带来的有益效果是:针对连续接收到的两个上游数据报文,无论这两个报文的序号是否连续,本分发服务器均会将每一个上游数据报文拷贝为两份,其中一份立即进行数据转发,并对另一份执行控制管理,本公开实施例实现了数据分发与控制管理这两个过程分离,无需在对数据报文进行控制管理后再进行分发,大大缩短了数据报文转发的耗时,而且无论是否发生丢包分发服务器在接收到报文后均立即进行转发,大大降低了数据分发时延。附图说明图1是本公开
背景技术
提供的一种CDN网络的结构示意图;图2是本公开
背景技术
提供的一种分发服务器的内部架构示意图;图3是本公开实施例提供的一种CDN命中服务的场景示意图;图4是本公开实施例提供的一种CDN中转服务的场景示意图;图5是本公开实施例提供的数据分发方法的第一应用场景图;图6是本公开实施例提供的数据分发方法的第一应用场景图;图7是本公开实施例提供的数据分发方法的第一应用场景图;图8是本公开实施例提供的一种分发服务器的内部架构示意图;图9是本公开实施例提供的一种数据分发方法的核心处理流程图;图10是本公开实施例提供的第一种数据分发方法的流程图;图11是本公开实施例提供的第二种数据分发方法的流程图;图12是本公开实施例提供的一种分发服务器的结构示意图;图13是本公开实施例提供的第三种数据分发方法的流程图;图14是本公开实施例提供的一种分发服务器的结构示意图。具体实施方式为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。在对本公开实施例进行详细地解释说明之前,先对本公开实施例可能涉及到的一些名词术语进行解释说明。命中服务:如图3所示,如果某个分发服务器已经存储有某个内容请求所请求的数据,那么这个分发服务器将直接响应这一内容请求,而不再向上一级CDN节点转发这一内容请求。其中,图3示出了CDN边缘节点存储有接收到的内容请求所请求的数据的情形。如图3所示,该CDN边缘节点直接响应接收到的这一内容请求,向用户终端返回响应数据。中转服务:如图4所示,如果CDN中间节点以及CDN边缘节点均没有存储某个内容请求所请求的数据,那么上述CDN节点会将这一内容请求一直中转直至到达源站,最终由源站提供响应数据,并由各个CDN节点逐级进行中转,实现将响应数据分发给用户终端。其中,图4中的各个序号表示请求与分发的先后发生顺序。需要说明的是,针对一般静态内容,如各个视频网站提供的视频、图片等,由于均会长时间保持不变,因此可以缓存在作为CDN站点的分发服务器中,如上述图3和图4中所示的CDN中间节点以及CDN边缘节点,由CDN站点提供命中服务。而针对视频直播(如赛事、热点事件直播等)、动态内容(比如需要源站实时生成网页等)、静态内容的首次分发,则均需上述分发服务器提供中转服务,而由源站提供命中服务。在另一个实施例中,通常还会利用上述分发服务器来就近存储可以缓存的内容,如点播视频、静态图片等,从而就近为用户服务,降低对传输网络带宽的消耗,同时也提高用户终端的体验。再需要强调的一点是,针对虚拟现实(VirtualReality,VR)视频、视频直播、动态内容等这些对实时性要求高的内容来说,通常利用由CDN中间节点以及CDN边缘节点组成的CDN网络来提供智能路由,即提供中转服务,力求低时延分发,而由源站提供命中服务。而本公开实施例提供的方案的关注焦点便在于如何实现低时延分发服务。其中,本公开实施例为了实现低时延分发服务,提供了一种具有低时延分发功能的分发服务器,不但可以缩短数据分发的路径,降低时延,而且还可通过分离数据分发与控制管理过程,降低控制管理给数据分发带来的时延,简要来说,本公开实施例提供的分发服务器主要进行了下述改进:(1)、新增TCP薄层(又称之为数据转发层),专门执行处理流程中的数据分发操作,且零等待转发。其中,TCP薄层转发过程可简述为:a、TCP薄层每收到一个上游数据报文,立即依据已建立的连接映射表,来对接收到的上游数据报文进行转换处理,比如替换数据报文中的N元组信息及序列号;b、转换处理结束之后,立即将转换得到的下游数据报文发送给下游节点或用户终端,零等待转发。需要说明的是,在以上过程中均不作控制管理,比如是否有报文乱序现象发生,是否允许发送报文等,据此来避免因控制管理过程导致的延后数据分发。(2)、为分离数据分发与控制管理,协议栈新增socket(套接字)接口,这一接口由应用层调用。其中,关于协议栈新增的这一接口的详细解释说明,请参见后续实施例。(3)、为支持分离数据分发与控制管理过程,协议栈在接收到应用层的调用后,需设置传输控制协议连接(TransmissionControlProtocol,TCP)仅接收数据报文供重传使用,而不再分发数据报文,即协议栈仅实现控制管理,而数据分发完全交给TCP薄层处理。(3)、为支持TCP薄层进行数据分发,协议栈在接收到应用层的调用后,需调用TCP薄层的使能接口,来指示TCP薄层建立连接映射表,使能其数据分发能力。其中,关于TCP薄层的这一使能接口的详细解释说明,同样请参见后续实施例。接下来,在对本公开实施例提供的方案进行详细地解释说明之前,先对本公开实施例的系统架构或应用场景进行一下介绍。图5给出了本公开实施例提供的方案的第一种应用场景。即,用户终端在发起内容请求之前,先发起到决策服务器的请求,由决策服务器决定该内容请求由什么类型的分发服务器来服务。例如源站应用厂家可按各个应用对时延的要求,将其域名划分成两类,一类是实时性域名,例如包含vr/live/rtmp/dynamic等字样的便为实时性域名,另一类是非实时性域名。一旦检测到用户终端发起的内容请求的域名是实时性域名,则直接返回具有低时延分发功能的分发服务器的网络协议(InternetProtocol,IP)地址,之后用户将发起到这一分发服务器的内容请求,而这一分发服务器将不区分互联网用户,将为接收到的所有内容请求使能低时延分发。其中,这一分发服务器再寻找上游分发节点时,依然可由决策服务器进行决定,而所有沿途的具有低时延分发功能的分发服务器默认为接收到所有内容请求开启低时延分发功能。图6给出了本公开实施例提供的方案的第二种应用场景。即,由用户终端上安装的应用客户端来感知低时延分发的需求。其中,应用客户端需扩展协议字段,携带标识位表明发起的内容请求需要低时延分发,而沿路的各个分发服务器自动识别数据报文中的该协议字段,从而针对该数据报文所属的流使能低时延分发能力,继而为此流后续的数据报文提供低时延转发。图7给出了本公开实施例提供的方案的第三种应用场景。即,由分发服务器自身来感知低时延分发的需求。例如,内容请求的统一资源定位符(UniformResourceLocator,url)中携带dynamic/vr/live/rtmp等关键字,而分发服务器在感知到后自动为相应的流使能低时延分发能力,继而为此流后续的数据报文提供低时延转发。图8是本公开实施例提供的一种具有低时延分发功能的分发服务器的内部架构示意图。参见图8,该分发服务器包括应用层801、协议栈802以及数据转发层803。其中,数据转发层(又可称之为TCP薄层)803负责进行数据分发,其既可以通过软件实现,也可以通过硬件实现,本公开实施例对此不进行具体限定。数据转发层803包括一个使能接口8031,主要完成以下功能:(1)通过使能接口8031,接受上层的协议栈802(或者应用层801)的调用,来维护一个连接映射表(比如新增/删除等)。其中,连接映射表给出了上游连接信息以及下游连接信息,比如连接映射表给出了上游连接的N元组信息、下游连接的N元组信息以及上游连接的初始序列号与下游连接的初始序列号的差值,本公开实施例对此不进行具体限定。(2)数据转发层803每接收到上游节点发送的一个上游数据报文,便会获取该上游数据报文中的N元组信息,并基于该上游数据报文中的N元组信息,查询已建立的连接映射表来进行报文替换,比如替换上游数据报文中的N元组信息,以及修改TCP连接的序列号。除此之外,在进行转换处理时,还可以进行相关校验或修改其他字段,本公开实施例对此同样不进行具体限定。此外,协议栈802负责进行控制管理。如图8所示,协议栈除了包括client模块8021以及server模块8022之外,还包括一个使能接口8023。其中,新增的使能接口8023,供应用层801进行调用,以使能协议栈802分离数据分发和控制管理,剔除协议栈802的数据分发功能,仅保留控制管理功能。在本公开实施例中,使能接口8023需携带上下游连接标识以及指示分离数据转发功能与控制管理功能的使能标志。其中,上下游连接标识如上下游连接描述符,使能标志主要用于告知协议栈802需分离数据分发和控制管理。此外,协议栈802需剔除数据分发的功能,即在接收到应用层801的数据分发调用时,仅将接收到的数据报文封装成TCP报文,并将该TCP报文存储在Buffer(缓冲区)中,但并不发送该TCP报文,该TCP报文仅供后续进行控制管理使用。针对上述情况,协议栈802还需重新设置超时定时器(即重传定时器),如果接收到下游节点或用户终端的正常ACK,则删除Buffer中对应的TCP报文并更新超时定时器;当接收到下游节点或用户终端的三次重复ACK或者超时定时器超时,则依据拥塞控制机制,从Buffer中取出对应的TCP报文进行重传。其中,应用层801包括client模块8011以及server模块8012。在另一个实施例中,可能还需调用数据转发层803的使能接口8031,促使数据转发层803维护连接映射表和使能数据分发功能。关于这部分的介绍请参见后续实施例。本公开实施例提供的分发服务器,通过增加专门负责转换并发送数据报文的TCP薄层,并使能TCP薄层的低时延分发能力,剔除协议栈的数据转发功能,仅保留其控制管理功能,继而实现了分离协议栈的控制管理功能与数据转发功能,减少了控制管理过程对数据转发过程的影响,使得TCP薄层可对接收到的数据报文立即进行转换并发送,缩短了数据报文转发的路径,大大降低了时延。下面结合上述图8所述的具有低时延分发功能的分发服务器的结构图,来对本公开实施例完成低时延分发的核心处理流程进行简单地总结归纳。即,图9示出了公开实施例提供的方案的核心处理流程图。步骤1、下游节点或用户终端发起到本分发服务器的请求。其中,先是到达协议栈的server端的连接请求,再是达到应用层的server端的内容请求。步骤2、本分发服务器检测到本地没有存储用户请求的内容之后,触发应用层的client端发起到上游节点的连接请求。步骤3、在与上游节点的连接建立完成后,应用层调用协议栈的使能接口,控制协议栈针对上下游连接进行数据转发与控制管理的分离,继而由协议栈通过调用TCP薄层的使能接口,来指示TCP薄层针对上下游连接建立连接映射表,使能低时延转发能力。步骤4、应用层的client发起到上游节点的内容请求。步骤5、上游节点发送的上游数据报文正常到达本分发服务器,TCP薄层查找连接映射表,进行转换处理,比如替换上游数据报文中的N元组及序列号等信息,实现将上游数据转换处理成下游数据报文,然后TCP薄层立即将下游数据报文发送给下游节点或用户终端。步骤6、本分发服务器将上游数据报文上送至协议栈,协议栈负责检查数据报文是否乱序;如果数据报文无乱序,则向上游节点发送正常ACK,确认收到该数据报文。步骤7、协议栈的client将该上游数据报文上送到应用层的client,继而由应用层的client将其转交给应用层server,之后再发送给协议栈的server。此时,协议栈的server将该上游数据报文封装成TCP报文放置在Buffer中,但不发送,设置超时定时器,等待超时重传或者在接收到下游节点或用户终端返回的正常ACK后来删除该TCP报文。步骤8、下游节点或用户终端正常接收到下游数据报文并回复ACK,协议栈的server在接收到ACK后,删除Buffer中对应的TCP报文并更新超时定时器。步骤9、若上游节点有丢包现象出现,例如上游数据报文P2/P4/P5/P6正常到达,P3未到达,那么TCP薄层在将接收到的上游数据报文P2/P4/P5/P6进行转换处理后立即发送。步骤10、协议栈在收到P4/P5/P6时,发现报文乱序(P3未收到,从P2跳到P4),因此每接收到一个上游数据报文,便发送一次针对P2的重复ACK。步骤11、上游节点在接收到三次重复ACK时,重传上游数据报文P3,TCP薄层再将P3进行转换处理后立即发送,此时协议栈检测到乱序消除,所以将P2至P6转交至应用层的client,继而再转交到协议栈的server。此外,针对下游丢包的情况请参见后续实施例。图10是本公开实施例提供的一种数据分发方法的流程图。其中,这一实施例主要给出了使能低时延分发能力以及无丢包的数据分发过程。参见图10,本公开实施例提供的方法流程包括:1001、下游节点/用户终端与分发服务器进行TCP三次握手,建立TCP连接。其中,此步骤建立的TCP连接为下游连接。与下游节点/用户终端建立连接的对端,为分发服务器中协议栈的server。1002、下游节点/用户终端使用已建立好的下游连接向分发服务器发送内容请求。其中,该内容请求最终到达分发服务器中应用层的server。此外,该内容请求可使用多种协议,比如HTTP和RTMP。在接收到该内容请求后,应用层的server检查本地缓存,如果本地未存储该内容请求所请求的数据,则应用层的server触发协议栈的client向上游节点发起建立TCP连接的请求。1003、应用层的client触发协议栈的client向上游节点发起建立TCP连接的请求,经过TCP三次握手后,上游连接建立成功。其中,上游连接与步骤1001中提及的下游连接对应,此处不再赘述。需要说明的是,在应用层的client向上游发起内容请求之前,本公开实施例还包括先使能本分发服务器的低时延分发能力的步骤,具体参见下述步骤1004(a)至1004(c)。1004(a)、应用层调用协议栈的第一使能接口,指示协议栈使能低时延分发能力。其中,为了将协议栈新增的使能接口与后续出现的TCP薄层的使能接口进行区分,本公开实施例将上述两个使能接口分别以第一使能接口以及第二使能接口进行标识。在本公开实施例中,协议栈新增的使能接口携带上下游连接标识以及指示分离数据转发功能与控制管理功能的使能标志。其中,上下游连接标识可包括上下游连接描述符fd_client或fd_server,本公开实施例对此不进行具体限定。新增的第一使能接口可以使用setsockoptAPI形式,形如:intsetsockopt(intsockfd,intlevel,intoptname,constvoid*optval,socklen_toptlen)。其中,optval中携带需要分离控制管理与数据转发的上下游连接标识,optname携带指示分离数据分发与控制管理的使能标志,表示低时延分发,如可取值TCP_ZERODELAY。其中,TCP_ZERODELAY指代零等待转发。1004(b)、协议栈在接收到应用层的调用后,分离上下游连接的数据转发功能与控制管理功能。其中,在进行分离时,具体分离fd_server对应的TCP连接的数据转发功能与控制管理功能,即在此动作执行完之后再接收到数据报文,仅做TCP报文封装,不再发送出去,等待超时/ACK触发控制管理处理;分离fd_client对应的TCP连接的数据转发功能与控制管理功能,即同样在此动作执行完之后再接收到数据报文,仅做TCP报文封装,不再发送出去,等待超时/ACK触发控制管理处理。需要说明的是,fd_server对应的TCP连接的处理,主要是针对由上游节点转发给本节点继而要交给下游节点或用户终端的数据,这是CDN分发中的经典情况,因此本方案仅对此情况进行详细说明,而fd_client对应的TCP连接的处理与此相似,本方案不再另行论述。1004(c)、协议栈在接收到应用层的调用后,调用TCP薄层的第二使能接口,指示TCP薄层建立连接映射表,使能TCP薄层的低时延分发能力。在本公开实施例中,协议栈仅做分离操作还不够,还需使能TCP薄层的低时延分发能力,因此协议栈在接收到应用层的调用后,再调用TCP薄层的第二使能接口,指示TCP薄层建立连接映射表,使能TCP薄层的低时延分发能力,告知TCP薄层此后收到的符合连接映射条件的数据报文均按照建立的连接映射表进行转换处理,然后直接转发得到的数据报文。其中,TCP薄层的第二使能接口,形如以下:intsettcpmap(constvoid*client_conn_info,void*server_conn_info,boolenable);其中,client_conn_info携带上游连接信息,可包括N元组信息(比如源IP/Port,目的IP/Port)及初始序列号;server_conn_info携带下游连接信息,可包括N元组信息(比如源IP/Port,目的IP/Port)及初始序列号;针对enable来说,true表明是建立连接映射表,false表明是删除连接映射表。需要说明的是,TCP薄层需要建立两条连接映射表,其中一条表达由上游向下游发送数据,另一条表达由下游向上游发送数据,二者实现方法相同。在本公开实施例中仅以由上游向下游发送数据为例进行说明。针对该种情景,连接映射表形如下述表1:表1Srcdstseq_diff上游连接N元组下游连接N元组上下游连接的初始序号差值假设N元组信息为四元组信息,上游连接四元组为(IPup,Portup,IPc,Portc,)以及上游连接的初始序列号Sequpinit,下游连接四元组为(IPs,Ports,IPdown,Portdown,),以及下游连接的初始序列号Seqdowninit。其中,IPup和Portup表示上游节点的侦听地址和端口,IPc和Portc表示本分发服务器在发起上游连接时使用的地址和端口,IPs和Ports表示本分发服务器的侦听地址和端口,IPdown和Portdown表示下游节点在发起下游连接时使用的地址/端口,则由上游向下游发送数据的情况下,对应的连接映射表为可由上述表1替换为下述表2:表2Srcdstseq_diffIPup,Portup,IPc,PortcIPs,Ports,IPdown,PortdownSeqdowninit-Sequpinit其中,在上述表1和表2中,Src作为索引端,即TCP薄层在接收到上游数据报文时,取出其N元组信息与连接映射表中的Src进行一一比对。当出现相同的Src时,则使用该映射表项的dst及seq_diff做映射转换,即进行转换处理。需要说明的是,此处还可使用常用的hash等方法进行映射表项存储以及加快索引,本公开实施例对此不进行具体限定。在另一个实施例中,当上游节点、下游节点/用户终端中的任一端连接关闭或发生异常时,协议栈调用新增的第一使能接口,将enable置为false,指示TCP薄层删除上述建立的连接映射表,为此流关闭低时延分发服务。1005、应用层的client使用已建立好的上游连接发起到上游节点的内容请求。1006、上游节点使用已建立好的上游连接发送上游数据报文给本分发服务器,本分发服务器首先拷贝一份上游数据报文给TCP薄层,由TCP薄层进行低时延分发。换一种表达方式,TCP薄层在接收到上游节点发送的上游数据报文后,TCP薄层根据已建立的连接映射表,对该上游数据报文进行转换处理,得到下游数据报文,并将转换后的下游连接报文立即转发出去。其中,TCP薄层在进行转换处理时,具体过程如下:首先取出上游数据报文中的N元组信息,使用该N元组信息作为key,查找已建立好的连接映射表,找出与key匹配的目标映射表项,之后使用目标映射表项中的dst和seq_diff对该上游数据报文做转换处理;假设上述N元组信息为(IPup,Portup,IPc,Portc),且查找到的目标映射表项为Srcdstseq_diffIPup,Portup,IPc,PortcIPs,Ports,IPdown,PortdownSeqdowninit-Sequpinit则转换后的下游数据报文的N元组信息为(IPs,Ports,IPdown,Portdown),序列号为Seqdown。其中,Seqdown=Sequp+seq_diff。在得到下游数据报文后,TCP薄层转发下游数据报文。换一种表达方式,TCP薄层将转换得到的IP报文立即发送给下游节点或用户终端。1007、本分发服务器再拷贝一份上游数据报文给协议栈,由协议栈进行控制管理。需要说明的是,在这一实施例中仅考虑无丢包的数据报文按序到达的情况。由于针对该种情况协议栈判断数据报文顺序到达,即协议栈在对数据报文进行乱序检查后,发现未出现报文乱序的情况,因此协议栈发送正常ACK给上游节点。1008、在数据报文按序到达后,协议栈的client上交上游数据报文给应用层的client。1009、应用层的client转交上游数据报文给应用层的server。1010、应用层的server转交上游数据报文给协议栈的server。1011、协议栈的server接收到应用层的server发送的上游数据报文后,使用下游连接信息(比如N元组信息、序列号等)将该上游数据报文封装成TCP报文,并将封装完毕后的TCP报文放置Buffer中。其中,其中封装完毕后的TCP报文并不进行发送,而是仅放置在Buffer中。协议栈的server会设置超时定时器,等待下游节点/用户终端的ACK触发对TCP报文的删除处理,或者等待超时定时器超时,如果超时定时器超时则触发重传TCP报文处理。由以上列举的实施过程可知,本实施例阐述的方案的创新点在于以下:在分发服务器中新增了TCP薄层,低时延分发能力由新增加的TCP薄层实现,而为支持TCP薄层的低时延分发功能,改动了协议栈,剔除了协议栈的数据分发功能,继而分离了协议栈的控制管理功能与数据分发功能。其中TCP薄层既可软件实现,也可硬件实现。基于此,在无丢包的数据分发过程中,这一实施例独特之处在于:(1)、步骤1004(a)至步骤1004(a)中示出的低时延分发能力的使能过程;(2)、步骤1006中在接收到数据报文后,TCP薄层立即进行转换以及分发的过程;(3)、步骤1011中的协议栈的server收到应用层的server发送的数据报文后,仅做封装不进行转发的过程。而现有方案在接收到数据报文后,由于会将数据报文逐层上送至应用层的client,再转交应用层的server,再交由协议栈的server发送出去。相较于现有方案,本公开实施例提供的数据分发方法缩短了转发路径,降低了时延。此外,现有方案中当应用层将数据报文转交给协议栈的server后,协议栈的server并不一定立即进行发送,而是需要考虑发送速率等控制因素,而本方案因为TCP薄层仅负责数据转发,并不进行任何控制处理,所以可以降低控制处理对数据转发的影响。本公开实施例提供的方法,通过在分发服务器中增加专门负责转换并发送数据报文的TCP薄层,并使能TCP薄层的低时延分发能力,剔除协议栈的数据转发功能,仅保留其控制管理功能,继而实现了分离协议栈的控制管理功能与数据转发功能,减少了控制管理过程对数据转发过程的影响,使得TCP薄层可对接收到的数据报文立即进行转换并发送,缩短了数据报文转发的路径,大大降低了时延。图11是本公开实施例提供的一种数据分发方法的流程图。其中,这一实施例主要给出了上游连接控制处理过程,包括针对上游连接丢包的处理过程。参见图11,本公开实施例提供的方法流程包括:1101、上游节点发送的数据报文P1正常到达,本分发服务器将P1拷贝为两份,TCP薄层在对其中一份进行转换处理后立即转发给下游节点或用户终端。1102、协议栈对拷贝得到的另一份进行控制管理,若协议栈检查另一份数据报文无乱序,则协议栈向上游节点发送ACK,确认收到数据报文P1,同时将另一份数据报文上送至应用层的client。1103、上游节点发送的数据报文P2丢失。1104、上游节点发送的数据报文P3正常到达,本分发服务器将P3拷贝为两份,TCP薄层在对其中一份进行转换处理后立即转发给下游节点或用户终端。1105、协议栈对拷贝得到的另一份进行控制管理,协议栈检测到另一份数据报文乱序,协议栈给上游节点发送ACK,确认收到数据P1。需要说明的是,由于未接收到数据报文P2,而是接收到了数据报文P3,因此协议栈确定报文乱序,向上游节点还是发送针对数据报文P1的ACK。此为第一次重复ACK(针对数据报文P1的ACK在步骤1102中已经发送过)。需要说明的是,由于数据报文P2丢失,因此协议栈的client存储数据报文P3,并不上送给应用层的client。1106、上游节点发送的数据报文P4和P5正常到达,TCP薄层在对数据报文P4和P5进行转换处理后立即转发给下游节点或用户终端。由于在数据报文P3之后还收到了数据报文P4和P5,因此还会触发针对数据报文P1的第二次和第三次重复ACK。1107、上游节点在接收到三次重复ACK后,重传数据报文P2,TCP薄层在对数据报文P2进行转换处理后立即转发给下游节点或用户终端。1108、数据报文P2上送至协议栈,协议栈检测到数据报文无乱序,向上游节点发送ACK,确认收到数据报文P5,同时将数据报文P2-P5上交给应用层的client。换一种表达方式,协议栈在接收重传的数据报文P2后,向上游节点发送针对最后一个接收到的数据报文(即数据报文P5)的ACK,并将自数据报文P2开始至数据报文P5结束的4个数据报文上交至应用层的client。1109、应用层的client将数据报文P2-P5转交给应用层的server,应用层的server将数据报文P2-P5转交至协议栈的server。其中,上述数据报文P2-P5以TCP报文形式存储在协议栈的server的Buffer处,等待下游节点或用户终端ACK、或者超时定时器超时,以触发删除TCP报文或重传TCP报文。需要说明的是,在执行上述数据转发时,上述数据报文P1可称之为第一上游数据报文,针对数据报文P1,本分发服务器转发的下游数据报文可称之为第一下游数据报文,协议栈的Buffer中缓存的可称之为第三下游数据报文。上述数据报文P3可称之为第二上游数据报文,针对数据报文P3,本分发服务器转发的下游数据报文可称之为第二下游数据报文,协议栈的Buffer中缓存的可称之为第五下游数据报文。上述数据报文P2可称之为第三上游数据报文,针对数据报文P2,本分发服务器转发的下游数据报文可称之为第四下游数据报文,协议栈的Buffer中缓存的可称之为第六下游数据报文。另外,数据报文P1至P5上游节点是按照时间先后顺序进行发送的,且每一个数据报文对应一个序号。其中,上述第一上游数据报文的序号与第二上游数据报文的序号是不连续的。但是上述第一上游数据报文的序号与第三上游数据报文的序号是连续的。综上所述,以上实施过程描述的是,如何确认接收到的上游数据报文,并在遇上游丢包情况时如何处理丢包。需要说明的是,本方案在是每接收到一个数据报文后立即转换并转发,而无需等到已收到丢包并检查报文无乱序后,再将期间接收到的数据报文转交至应用,进而发送给下游节点或用户终端。在另一个实施例中,图11所示的实施例对报文的处理流程与图10所示的实施例一致,二者之间的差别在于低时延分发能力的使能过程。结合图12,图11所示的实施例的低时延能力使能过程步骤如下:(a)、应用层携带上下游连接描述符调用协议栈新增的一个使能接口,获取上下游连接信息,比如至少包括上下游连接的初始序列号。其中,协议栈新增的这个使能接口形如:intgetsockopt(intsockfd,intlevel,intoptname,void*optval,socklen_t*optlen);其中,optname携带要获取上下游连接信息的标识信息,如可取值为TCP_CONNECTINFO;optval中包含两个结构体,结构体类型为connectinfo,调用时每个connectinfo中分别携带需要分离控制管理与数据转发的上下游连接标识,如上下游连接描述符fd_client、fd_server。其中,connectinfo如下:需要说明的是,协议栈返回时,在seqinit中填上socketfd指定的连接的初始序列号,在ipports中填上该连接的N元组,但N元组不是必须的,因为应用层不调用接口也可以知道N元组信息。(b)、应用层携带上下游连接标识,调用协议栈新增的另一个使能接口,指示协议栈分离数据转发和控制管理功能。其中,新增的这个使能接口可以使用setsockoptAPI形式,形如:intsetsockopt(intsockfd,intlevel,intoptname,constvoid*optval,socklen_toptlen)。其中,optval中携带需要分离控制管理与数据转发的上下游连接标识,optname携带指示分离数据分发与控制管理的使能标志,表示低时延分发,如可取值TCP_ZERODELAY。其中,TCP_ZERODELAY指代零等待转发。(c)、协议栈在接收到应用层的调用后,分离上下游连接的数据转发功能与控制管理功能。其中,在进行分离时,具体分离fd_server对应的TCP连接的数据转发功能与控制管理功能,即在此动作执行完之后再接收到数据报文,仅做TCP报文封装,不再发送出去,等待超时/ACK触发控制管理处理;分离fd_client对应的TCP连接的数据转发功能与控制管理功能,即同样在此动作执行完之后再接收到数据报文,仅做TCP报文封装,不再发送出去,等待超时/ACK触发控制管理处理。(d)、应用层携带上下游连接的N元组信息及初始序列号,调用TCP薄层的使能接口,建立连接映射表,使能TCP薄层的低时延分发功能。其中,TCP薄层的使能接口,形如以下:intsettcpmap(constvoid*client_conn_info,void*server_conn_info,boolenable);其中,client_conn_info携带上游连接信息,可包括N元组信息(比如源IP/Port,目的IP/Port)及初始序列号;server_conn_info携带下游连接信息,可包括N元组信息(比如源IP/Port,目的IP/Port)及初始序列号;针对enable来说,true表明是建立连接映射表,false表明是删除连接映射表。需要说明的是,TCP薄层需要建立两条连接映射表,其中一条表达由上游向下游发送数据,另一条表达由下游向上游发送数据,二者实现方法相同。在本公开实施例中仅以由上游向下游发送数据为例进行说明。针对该种情景,连接映射表形如下所示:Srcdstseq_diff上游连接N元组下游连接N元组上下游连接的初始序号差值假设N元组信息为四元组信息,上游连接四元组为(IPup,Portup,IPc,Portc,)以及上游连接的初始序列号Sequpinit,下游连接四元组为(IPs,Ports,IPdown,Portdown,),以及下游连接的初始序列号Seqdowninit。其中,IPup和Portup表示上游节点的侦听地址和端口,IPc和Portc表示本分发服务器在发起上游连接时使用的地址和端口,IPs和Ports表示本分发服务器的侦听地址和端口,IPdown和Portdown表示下游节点在发起下游连接时使用的地址/端口,则由上游向下游发送数据的情况下,对应的连接映射表为如下所示:Srcdstseq_diffIPup,Portup,IPc,PortcIPs,Ports,IPdown,PortdownSeqdowninit-Sequpinit其中,在上述两个表格中,Src作为索引端,即TCP薄层在接收到上游数据报文时,取出其N元组信息与连接映射表中的Src进行一一比对。当出现相同的Src时,则使用该映射表项的dst及seq_diff做映射转换,即进行转换处理。需要说明的是,此处还可使用常用的hash等方法进行映射表项存储以及加快索引,本公开实施例对此不进行具体限定。需要说明的是,图11对应的实施例与图10对应的实施例的差异之处在于:在图10对应的实施例中,协议栈仅增加一个使能接口,由应用层调用该使能接口一次告知协议栈使能低时延能力,协议栈据此分离自身的控制管理与数据转发给你,同时调用TCP薄层的使能接口来指示TCP薄层建立连接映射表和使能低时延分发能力。在图11对应的实施例中,协议栈新增加了两个使能接口,应用层调用两个使能接口中的一个来获取上下游连接信息,再调用两个使能接口中的另一个来指示协议栈执行分离动作,之后再调用TCP薄层的使能接口来指示TCP薄层建立连接映射表和使能低时延分发能力本公开实施例提供的方法,针对连续接收到的至少两个上游数据报文,无论这些报文的序号是否连续,本分发服务器均会将每一个上游数据报文拷贝为两份,其中一份立即进行数据转发,并对另一份执行控制管理,本公开实施例实现了数据分发与控制管理这两个过程分离,无需在对数据报文进行控制管理后再进行分发,大大缩短了数据报文转发的路径,而且无论是否发生丢包在接收到一个报文后均立即对该报文进行转发,大大降低了数据分发时延。通过在分发服务器中增加专门负责转换并发送数据报文的TCP薄层,并使能TCP薄层的低时延分发能力,剔除协议栈的数据转发功能,仅保留其控制管理功能,继而实现了分离协议栈的控制管理功能与数据转发功能,减少了控制管理过程对数据转发过程的影响,使得TCP薄层可对接收到的数据报文立即进行转换并发送,缩短了数据报文转发的路径,大大降低了时延。图13是本公开实施例提供的一种数据分发方法的流程图。其中,这一实施例主要给出了下游控制处理过程,包含由上游连接丢包导致的下游连接丢包的处理过程。参见图13,本公开实施例提供的方法流程包括:1301、下游节点或用户终端在顺序收到数据报文P1后,向本分发服务器发送ACK。本步骤针对无丢包时处理下游ACK的过程。当下游节点或用户终端顺序收到数据报文P1后,发送ACK给本分发服务器,以确认收到数据报文P1,而本分发服务器会将接收到的这一ACK上送给协议栈,协议栈删除Buffer中的数据报文P1以及序号在P1之前的其他数据报文,并更新超时定时器及其他控制参数,本公开实施例对此不进行具体限定。1302、上游节点发送的数据报文P2丢失。1303、上游节点发送的数据报文P3-P5到达,TCP薄层在对数据报文P3-P5进行转换处理后立即转发给下游节点或用户终端。1304、下游节点或用户终端未接收到数据报文P2。针对本步骤,因为发生了上游丢包,TCP薄层并没有接收到数据报文P2,因此下游节点或用户终端也没有接收到数据报文P2,当下游节点或用户终端依次接收到数据报文P3-P5时,会触发发送针对数据报文P1的3次重复ACK给本分发服务器,仅确认接收到数据报文P1,告知数据报文P2丢失。而本分发服务器在接收到三次重复ACK后,因为当前Buffer中尚未存储数据报文P2,所以无法实现重传,因此不做任何处理,等待TCP薄层收到上游节点重传的数据报文P2转发给下游节点或用户终端。1305、上游节点在接收到三次重复ACK后,重传数据报文P2,将P2拷贝为两份,TCP薄层在对其中一份进行转换处理得到下游数据报文后立即转发给下游节点或用户终端。由于本分发服务器在数据报文P1之后顺序接收到数据报文P3-P5,因此也会发送针对数据报文P1的3次重复ACK给上游节点,继而触发上游节点重传数据报文P2。1306、下游节点或用户终端接收到数据报文P2后,消除乱序,发送ACK给本分发服务器,确认接收到数据报文P5,本节分发服务器在接收到ACK后,协议栈删除存储的数据报文P5及序号在P5之前的数据报文,并更新超时定时器及其他控制参数。需要说明的第一点是,针对上述步骤1304,如果下游节点或用户终端发送的ACK到达时间晚,是在本分发服务器已经接收到上游节点重传的数据报文P2后才到达,那么本分发服务器可以再次触发重传数据报文P2,由于TCP薄层已转发过一次数据报文P2,所以下游节点或用户终端会接收到2份数据报文P2,而下游节点或用户终端在接收到第2份数据报文P2时会自动丢弃,对业务并没有影响。需要说明的第二点是,在上游丢包导致下游丢包时,本节点在接收到上游节点重传的数据报文之前,若接收到下游节点或用户终端的重复ACK,则本节点可能无法实现重传,需等待上游节点重传数据报文到达,并由TCP薄层直接转发。需要说明的第三点是,以上介绍了上游丢包导致下游丢包的情况,针对下游连接出现丢包的情况,可由协议栈的server负责重传,此处不再给出具体流程图进行描述。另外,如果下游丢包严重,比如链路质量太差导致丢包率高,或者下游节点的处理性能太差导致节点内丢包,那么说明下游链路或下游节点的性能无法满足当前传输数据量的要求,可触发下游节点重新发起请求,请求数据量少的内容(例如从高清视频切换到标清视频),或者触发本分发服务器建立一条新的连接映射表,依据新建立的连接映射表为慢节点提供服务。在另一个实施例中,上述实施例中描述的连接映射表仅是一条上游连接对应一条下游连接的情况,但是在实际的应用场景中,尤其是直播场景中,可能会有多个下游节点发起多条连接到本节点(本分发服务器)请求同一个内容,此时本节点仅需发起一条上游连接即可,此时便会出现一条上游连接映射到多条下游连接的情况,其处理过程为:本节点收到第一次请求时,依据图10对应的实施例中的处理,触发建立连接映射表,连接映射表如下:Srcdstseq_diffIPup,Portup,IPc,PortcIPs,Ports,IPdown1,Portdown1Seqdowninit1-Sequpinit本节点收到第N(N>1)次请求时,不再触发上游请求,但依然依据图10对应的实施例中的处理,触发建立连接映射表,此时连接映射表如下:这样TCP薄层在接收到上游节点发送的数据报文后,会查询上述建立的连接映射表,如果查询到的目标映射表项中包含N个dst选项,则TCP薄层将接收到的数据转换处理N次,每一次转换过程与图10对应的实施例相似,但每一次转换依据一个不同的dst选项以及seq_diff选项,且每转换完一次发送一次。由于增加了TCP薄层中一条上游连接映射到多条下游连接的处理过程,因此使得TCP薄层可以更好地支持直播等场景。考虑可能存在直播加入的不同步问题,有的互联网用户可能会稍微加入的晚一点,此时可由应用层筛选已缓存数据发送给后加入的互联网用户,当后加入的互联网用户与先加入的互联网用户同步后,再将后加入互联网用户的下游连接信息加入到上述连接映射表,再由TCP薄层统一按照前文所述的方式进行数据转发,实现同步数据;或者,还可以在TCP薄层或协议栈中针对直播对象设置公共Buffer,该Buffer用于缓存该直播对象的已缓存数据,当有互联网用户后加入时,可由TCP薄层或协议栈筛选已缓存数据发送给后加入的互联网用户,同样当后加入的互联网用户与先加入的互联网用户同步后,再由TCP薄层统一按照前文所述的方式进行数据转发,实现同步数据。需要说明的是,针对一条上游连接映射到多条下游连接的情况,以直播场景为例,协议栈在将接收到的上游数据报文封装为TCP报文并缓存在Buffer中后,后续过程中即便接收到下游节点或互联网用户返回的ACK报文,为了便于以后加入的互联网用户进行直播观看,也不会对Buffer中的已缓存数据进行删除。本公开实施例提供的方法,针对连续接收到的至少两个上游数据报文,无论这些报文的序号是否连续,本分发服务器均会将每一个上游数据报文拷贝为两份,其中一份立即进行数据转发,并对另一份执行控制管理,本公开实施例实现了数据分发与控制管理这两个过程分离,无需在对数据报文进行控制管理后再进行分发,大大缩短了数据报文转发的路径,而且无论是否发生丢包在接收到一个报文后均立即对该报文进行转发,大大降低了数据分发时延。通过在分发服务器中增加专门负责转换并发送数据报文的TCP薄层,并使能TCP薄层的低时延分发能力,剔除协议栈的数据转发功能,仅保留其控制管理功能,继而实现了分离协议栈的控制管理功能与数据转发功能,减少了控制管理过程对数据转发过程的影响,使得TCP薄层可对接收到的数据报文立即进行转换并发送,缩短了数据报文转发的路径,大大降低了时延。图14是本公开实施例提供的一种分发服务器的结构示意图。参见图14,该服务器包括:第一接收模块1401、数据转发模块1402以及控制管理模块1403。其中,数据转发模块1402用于实现前文中TCP薄层的数据转发功能,控制管理模块1403用于实现协议栈的控制管理功能,第一接收模块1401可对应于图8中接收上游节点发送的数据报文的Buffer。其中,第一接收模块1401,用于连续接收上游节点发送的第一上游数据报文和第二上游数据报文,并对所述第一上游数据报文进行拷贝处理以及对所述第二上游数据报文进行拷贝处理;数据转发模块1402,用于根据已建立的连接映射表,对基于所述第一上游数据报文拷贝得到的两份报文中的第一份报文进行转换处理,将转换得到的第一下游数据报文发送给下游节点或用户终端;控制管理模块1403,用于对基于所述第一上游数据报文拷贝得到的第二份报文进行控制管理;数据转发模块1402,还用于根据所述连接映射表,对基于所述第二上游数据报文拷贝得到的两份报文中的第一份报文进行转换处理,将转换得到的第二下游数据报文发送给所述下游节点或所述用户终端;控制管理模块1403,还用于对基于所述第二上游数据报文拷贝得到的第二份报文进行控制管理;其中,所述连接映射表给出了上游连接信息与下游连接信息之间的映射关系。本公开实施例提供的分发服务器,针对连续接收到的至少两个上游数据报文,无论这些报文的序号是否连续,本分发服务器均会将每一个上游数据报文拷贝为两份,其中一份立即进行数据转发,并对另一份执行控制管理,本公开实施例实现了数据分发与控制管理这两个过程分离,无需在对数据报文进行控制管理后再进行分发,大大缩短了数据报文转发的路径,而且无论是否发生丢包在接收到一个报文后均立即对该报文进行转发,大大降低了数据分发时延。在另一个实施例中,所述第一上游数据报文的序号与所述第二上游数据报文的序号不连续,所述第一上游数据报文先于所述第二上游数据报文接收到。在另一个实施例中,所述连接映射表包括多个映射表项,每一个映射表项中给出了上游连接的N元组信息、与所述上游连接的N元组信息匹配的下游连接的N元组信息,所述上游连接与所述下游连接的初始序列号差值;所述数据转发模块1402,还用于获取所述第一份报文中的N元组信息;基于所述第一份报文中的N元组信息,查询所述连接映射表,得到与所述第一份报文中的N元组信息匹配的目标映射表项;以所述目标映射表项中包括的目标下游连接的N元组信息,替换所述第一份报文中的N元组信息,并根据所述目标映射表项中包括的目标初始序列号差值以及所述第一份报文中携带的序列号,计算所述目标下游连接的序列号。在另一个实施例中,所述控制管理模块1403,还用于对基于所述第一上游数据报文拷贝得到的第二份报文进行乱序检查,并向所述上游节点发送针对所述第一上游数据报文的确认字符ACK报文。在另一个实施例中,所述控制管理模块1403,还用于将基于所述第一上游数据报文拷贝得到的第二份报文转换成第三下游数据报文;将所述第三下游数据报文存储在缓冲区中并设置超时定时器;当所述超时定时器超时,向所述下游节点或所述用户终端发送所述第三下游数据报文。在另一个实施例中,所述连接映射表中一个上游连接信息与一个下游连接信息对应,所述控制管理模块1403,还用于当在所述超时定时器超时之前接收到所述下游节点或所述用户终端返回的ACK报文时,删除所述缓冲区中存储的所述第三下游数据报文。在另一个实施例中,所述第一接收模块1401,还用于接收所述上游节点重传的第三上游数据报文,并对所述第三上游数据报文进行拷贝处理,所述第三上游数据报文的序号与所述第一上游数据报文的序号连续;所述数据转发模块1402,还用于根据所述连接映射表,对拷贝得到的两份报文中的第一份报文进行转换处理,将转换得到的第四下游数据报文发送给所述下游节点或所述用户终端,并对基于所述第三上游数据报文拷贝得到的第二份报文进行控制管理。在另一个实施例中,所述控制管理模块1403,还用于对基于所述第二上游数据报文拷贝得到的第二份报文进行乱序检查,并向所述上游节点发送针对所述第一上游数据报文的ACK报文。在另一个实施例中,所述控制管理模块1403,还用于在数据转发模块1402将第四下游数据报文发送给所述下游节点或所述用户终端后,将基于所述第二上游数据报文拷贝得到的第二份报文转换成第五下游数据报文;将所述第五下游数据报文存储在缓冲区中并设置超时定时器;当所述超时定时器超时,向所述下游节点或所述用户终端发送所述第五下游数据报文。在另一个实施例中,所述连接映射表中一个上游连接信息与一个下游连接信息对应,所述控制管理模块1403,还用于当在所述超时定时器超时之前接收到所述下游节点或所述用户终端返回的ACK报文时,删除所述缓冲区中存储的所述第五下游数据报文。在另一个实施例中,所述控制管理模块1403,还用于若在所述第一接收模块1401接收到所述上游节点重传的所述第三上游数据报文之前,第二接收模块接收到所述下游节点或所述用户终端发送的M次重复ACK,则等待所述上游节点重传所述第三上游数据报文,所述M次重复ACK是针对所述第一上游数据报文的;所述数据转发模块1402,还用于在接收到重传的所述第三上游数据报文后,执行根据所述连接映射表,对基于所述第三上游数据报文拷贝得到的两份报文中的第一份报文进行转换处理,将转换得到的第四下游数据报文发送给所述下游节点或所述用户终端的步骤。在另一个实施例中,所述控制管理模块1403,还用于若在所述第一接收模块1401接收到所述上游节点重传的所述第三上游数据报文之后,第二接收模块接收到所述下游节点或所述用户终端发送的M次重复ACK,则将缓冲区中存储的与所述第三上游数据报文匹配的第六下游数据报文发送给所述下游节点或所述用户终端。上述任一种可选方式可与本公开实施例相结合构成本公开的可选实施例。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本公开的可选实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。当前第1页1 2 3 
再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1