基于应用类型的数据引流方法、装置及系统的制作方法
【技术领域】
[0001] 本发明涉及通信技术领域,尤其涉及一种基于应用类型的数据引流方法、装置及 系统。
【背景技术】
[0002] 当前,内容分发网络(ContentDeliveryNetwork,简称CDN)已经在互联网技术中 得到了广泛的应用,其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性 的瓶颈和环节,使内容传输的更快、更稳定。内容分发网络是通过在网络各处放置CDN服务 器,能够实时地根据网络流量和各CDN服务器的连接、负载状况以及到用户的距离和响应 时间等综合信息将用户的请求重新导向离用户最近的CDN服务器上;其目的是使用户可就 近取得所需内容,解决互联网拥挤的状况,能够提高用户访问网站等的响应速度。
[0003] 应用引流:又称应用选路,是一种多链路负载的方法,当有多条出口时,可以选择 某种应用走特定的出口,比如P2P应用走移动线路。
[0004] 在现有技术中,做应用引流的关键是做首包识别,就是链接的第一包就能把应用 识别出来,并引到对应的链路去;如果首包识别不出来,中间的包识别不出来了,就没法做 引流了,因为出口线路会做源地址转换,如果中间识别后,引导别的线路去,会导致前面的 源地址和后面引流后的源地址不同,会导致连接中断。
[0005] 但对Web类基于TCP的应用,没法基于内容做首包识别,因为TCP的第一包是SYN 数据包,是不带任何数据的。目前传统的首包识别方法是基于"节点跟踪"的方法。"节点跟 踪"的意思是,第一次识别出应用时,不做引流,而是记录一个"节点",这个"节点"包括这个 应用的目的IP和目的端口,"节点跟踪"的逻辑是,当第二次访问这个"节点"(目的IP+目 的端口)时,就认为这个连接的应用是"节点"上记录的应用,并按这个应用来引流。但这 种方法对Web类应用没法使用,因为同一"节点"下的web应用,可以根据里面的内容不同, 会有完全不同应用,比如一种应用是web视频应用,另一种应用是web游戏应用。另外,对 web应用,还应该考虑到CDN的存在,对同一个CDN节点,会被不同的网站提供服务,所以应 用也不相同。
[0006] 上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技 术。
【发明内容】
[0007] 本发明的主要目的在于提供一种基于应用类型的数据引流方法,旨在实现对web 类的应用数据进行引流,提高引流效率和网络资源利用率。
[0008] 为实现上述目的,本发明提供一种基于应用类型的数据引流方法,该方法包括:
[0009] 接收客户端发送的SYN数据包,并将所述接收的SYN数据包分别通过至少两条链 路发送给服务器;
[0010] 接收所述服务器分别通过至少两条链路返回的SYN+ACK数据包;并将最快返回的 SYN+ACK数据包发送给所述客户端,将所述最快返回的SYN+ACK数据包对应的链路确定为 初步目标链路;
[0011] 接收所述客户端发送的ACK数据包,并将所述接收的ACK数据包通过所述初步目 标链路发送给所述服务器;
[0012] 接收所述客户端发送的业务数据包,并识别所述业务数据包对应的应用类型;
[0013] 根据所述业务数据包对应的应用类型和所述初步目标链路,确定最终目标链路, 将所述业务数据包通过所述确定的最终目标链路发送给所述服务器。
[0014] 可选的,所述根据所述业务数据包对应的应用类型和所述初步目标链路,确定最 终目标链路,将所述业务数据包通过所述确定的最终目标链路发送给所述服务器的步骤包 括:
[0015] 根据所述预设的应用类型与链路的映射关系,确定所述业务数据包对应的默认传 输链路;
[0016] 当判断出所述业务数据包对应的默认传输链路与所述初步目标链路相同时,将所 述初步目标链路确定为最终目标链路;
[0017] 将所述业务数据包通过所述最终目标链路发送给所述服务器。
[0018] 可选的,所述根据所述业务数据包对应的应用类型和所述初步目标链路,确定最 终目标链路,将所述业务数据包通过所述确定的最终目标链路发送给所述服务器的步骤包 括:
[0019] 根据所述预设的应用类型与链路的映射关系,确定所述业务数据包对应的默认传 输链路;
[0020] 当判断出所述业务数据包对应的默认传输链路与所述初步目标链路不相同时,将 所述默认传输链路确定为最终目标链路,并生成一个ACK数据包;
[0021] 将所述生成的ACK数据包通过所述最终目标链路发送给所述服务器;
[0022] 根据所述最终目标链路的序列号,修改所述业务数据包的确认号,生成新业务数 据包;
[0023] 将所述新业务数据包通过所述最终目标链路发送给所述服务器。
[0024] 可选的,所述根据所述业务数据包对应的应用类型和所述初步目标链路,确定最 终目标链路,将所述业务数据包通过确定的最终目标链路发送给所述服务器的步骤之后, 所述方法还包括:
[0025] 接收所述服务器通过所述最终目标链路返回的应答数据包;
[0026] 在所述最终目标链路与所述初步目标链路不相同时,根据所述最终目标链路的序 列号、初步目标链路的序列号,修改所述应答数据包的序列号,生成新应答数据包;
[0027] 将所述新应答数据包发送给所述客户端;
[0028] 或者,
[0029] 在所述最终目标链路与所述初步目标链路相同时,将所述应答数据包发送给所述 客户端。
[0030] 可选的,所述识别所述业务数据包对应的应用类型的步骤包括:
[0031] 分析所述业务数据包,得到统一资源定位符URL;
[0032] 根据所述URL确定所述业务数据包对应的应用类型。
[0033] 此外,为实现上述目的,本发明还提供一种基于应用类型的数据引流装置,所述装 置连接在客户端与服务器之间,所述装置包括:
[0034] 第一收发模块,用于接收客户端发送的SYN数据包,并将所述接收的SYN数据包分 别通过至少两条链路发送给服务器;
[0035] 第二收发模块,用于接收所述服务器分别通过至少两条链路返回的SYN+ACK数据 包;并将最快返回的SYN+ACK数据包发送给所述客户端;
[0036] 第一确定模块,用于将所述最快返回的SYN+ACK数据包对应的链路确定为初步目 标链路;
[0037] 第三收发模块,用于接收客户端发送的ACK数据包,并将所述接收的ACK数据包通 过所述初步目标链路发送给所述服务器;及接收所述客户端发送的业务数据包,并识别所 述业务数据包对应的应用类型;
[0038] 第二确定模块,用于根据所述业务数据包对应的应用类型和所述初步目标链路, 确定最终目标链路;第四收发模块,用于将所述业务数据包通过所述确定的最终目标链路 发送给所述服务器。
[0039] 可选的,所述第二确定模块包括:
[0040] 第一确定单元,用于根据所述预设的应用类型与链路的映射关系,确定所述业务 数据包对应的默认传输链路;
[0041] 第二确定单元,用于当判断出所述业务数据包对应的默认传输链路与所述初步目 标链路相同时,将所述初步目标链路确定为最终目标链路。
[0042] 可选的,所述第二确定模块包括:第三确定单元,用于根据所述预设的应用类型与 链路的映射关系,确定所述业务数据包对应的默认传输链路;
[0043] 第四确定单元,用于当判断出所述业务数据包对应的默认传输链路与所述初步目 标链路不相同时,将所述默认传输链路确定为最终目标链路;
[0044] 所述装置还包括:第一生成模块、第五收发模块、第二生成模块,
[0045] 所述第一生成模块,用于当判断出所述业务数据包对应的默认传输链路与所述初 步目标链路不相同时,生成一个ACK数据包;
[0046] 所述第五收发模块,用于将所述生成的ACK数据包通过所述最终目标链路发送给 所述服务器;
[0047] 所述第二生成模块,用于根据所述最终目标链路的序列号,修改所述业务数据包 的确认号,生成新业务数据包;
[0048] 所述第四收发模块,还用于将所述新业务数据包通过所述最终目标链路发送给所 述服务器。
[0049] 可选的,所述装置还包括第六收发模块、第三生成模块、第七收发模块或者所述装 置还包括第八收发模块,其中:
[0050] 所述第六收发模块,用于接收所述服务器通过所述最终目标链路返回的应答数据 包;
[0051] 所述第三生成模块,用于在所述最终目标链路与所述初步目标链路不相同时,根 据所述最终目标链路的序列号、初步目标链路的序列号,修改所述应答数据包的序列号,生 成新应答数据包;
[0052] 所述第七收发模块,用于在所述最终目标链路与所述初步目标链路相同时,将所 述应答数据包发送给所述客户端;
[0053] 所述第八收发模块,用于在所述最终目标链路与所述初步目标链路不相同时,将 所述新应答数据包发送给所述客户端。
[0054] 此外,为实现上述目的,本发明还提供一种基于应用类型的数据引流系统,所述系