一种流量引导方法和系统与流程

文档序号:12789698阅读:284来源:国知局
本发明涉及网络流量引导
技术领域
:,特别涉及一种流量引导方法和系统。
背景技术
::随着计算机网络技术的不断发展,互联网技术已成为人类生活的重要组成部分。用户对网络的传输速率及用户请求的反馈速度要求越来越大。在最初的技术架构中,用户的请求数据直接发送到服务端,服务端根据用户请求进行处理后,再直接返回给用户。由于用户和服务端之间可能存在地理位置距离远、归属不同的网络运营商、线路受损、线路过载等问题,用户与服务端之间的通信会出现传输慢、反馈慢、费用高、传输中断等现象。如此一来,不仅影响了用户的上网体验,也增加了内容提供商的成本,甚至带来其他不可预估的损失。随着技术的改良和进步,现有技术中,通过在用户和服务端之间增加代理服务器来进行数据传输路径的优化,代理服务器接收用户向服务端发出的请求,并根据网络状态选择较佳路径进行传输,发送至服务端。代理服务器上运行的代理服务程序的功能就是为用户请求选择较佳路径。在对代理服务器进行测试时,需要至少一台测试机通过路由器与代理服务器连接,并在测试机上部署客户端程序,客户端程序向服务端发起的请求通过路由器传送到代理服务器上,代理服务器上的代理服务程序对客户端程序发往服务端的请求进行路径选择,并通过选择的路径发送到服务端。上述测试方法的缺点是:(1)需要提供测试机,增加了设备成本;(2)测试时需要为测试机引导流量配置路由;(3)测试工作涉及多台设备,操作繁琐。技术实现要素:为了解决上述技术的问题,本发明实施例提供了一种流量引导方法和系统。所述技术方案如下:一种流量引导方法,包括以下步骤:在代理服务器上部署客户端程序,用于向服务端发送请求;配置代理服务器上的iptables规则,使得客户端程序所发出的请求被识别,并被代理服务器上的代理服务程序接收;代理服务程序接收请求,获取请求的原始目的IP(InternetProtocol,网络协议)地址和原始目的端口,并向请求的原始目的IP地址和原始目的端口发送请求。本发明一较佳实施例中,在配置iptables规则步骤前更包含步骤:指定客户端程序的组标识。本发明一较佳实施例中,配置iptables规则步骤包含:将属于客户端程序的组标识的TCP(TransmissionControlProtocol,传输控制协议)请求的目的IP地址和目的端口重定向为代理服务程序监听的IP地址和TCP端口。本发明一较佳实施例中,代理服务程序通过getsockopt函数获取所述请求的原始目的IP地址和原始目的端口。本发明一较佳实施例中,配置iptables规则的步骤包含:将属于所述客户端程序的组标识的UDP(UserDatagramProtocol,用户数据报协议)请求通过透明代理来建立与所述代理服务程序的联系,并对所述UDP协议请求进行标记。本发明一较佳实施例中,所述UDP协议请求通过所述透明代理注册一个target到netfilter,所述target使得所述UDP协议请求能够被所述代理服务程序监听的端口所接收。本发明一较佳实施例中,配置iptables规则的步骤包含:将属于客户端程序的组标识的ICMP(InternetControlMessageProtocol,互联网控制报文协议)请求进行标记。本发明一较佳实施例中,配置iptables规则步骤之前,更包含步骤:在所述代理服务器上配置策略路由,指定所述被标记请求所要查找的路由表,并在所述代理服务器上配置路由,在所述路由表中添加默认路由规则,把所述被标记的请求发往本地还回接口,从而被所述代理服务程序接收。此外本发明还提供一种流量引导系统,包括:代理服务器,用于把部署在代理服务器上的客户端程序向服务端发送的数据包重定向到部署在代理服务器的代理服务程序上,再由代理服务程序来访问服务端;服务端,与代理服务器连接,用于接收代理服务器发来的请求。进一步的,代理服务器具体包括:配置模块,包含组标识单元,用于指定所述客户端程序的组标识;iptables配置单元,用于对所述代理服务器上的iptables规则进行配置;策略路由及路由配置单元,用于对所述代理服务器上的策略路由和路由进行配置,以识别所述客户端程序向所述服务端发送的请求,并使所述请求被所述代理服务程序接收。本发明所提供的技术方案中,客户端程序和代理服务程序均部署在同一代理服务器上,通过对iptables规则进行配置,使得客户端程序所发出的请求流量的传送路径,由原先的直接从代理服务器的输出端口发出到服务端,被引导至代理服务程序所监听的端口,并被代理服务程序接收,进而按照代理服务程序所选择的优选路径传输至服务端。,如此一来,代理服务器上的客户端程序可直接用于代理服务程序的测试,客户端程序向服务端发送的请求被代理服务程序监听并接收,代理服务程序对所接收到的请求进行路径选择和转发,从而实现代理服务功能的测试。由此可见,本发明所提供的技术方案,较于现有技术中的测试方式而言,省却了测试机及连接设备,不仅节省了设备资源和维护成本,而且无需单独再为测试机引导流量配置路由,简化了测试架构,节约了开发成本。值得注意的是,在本发明所提供的技术方案主要实现了代理服务器上的客户端程序的请求流量的重定向,使得同一代理服务器上的代理服务程序能对其进行监听和接收,并转发,这一技术方案不仅可用于代理服务程序的测试,还可以用于其他需求场景,故本说明书虽以本发明在测试中的应用场景为切入点对技术方案进行说明,但并不以此为限。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明一较佳实施例所提供的流量引导方法流程图;图2为本发明另一较佳实施例所提供的流量引导方法流程图;图3是本发明再一较佳实施例的所提供的流量引导方法流程图;图4是本发明又一较佳实施例所提供的流量引导方法流程图;图5是本发明一较佳实施所提供的流量引导系统示意图。具体实施方式以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。首先,对本发明说明书中的技术词汇进行解释说明。以下说明是对本发明技术的解释,但本发明并不以此为限。代理服务器,架设在用户和服务端之间,提供代理服务的服务器,其中,代理服务器所提供的代理服务可实现的内容较多,本发明不再一一赘述,本说明书中以路径选择服务为例进行说明,路径选择服务主要是对用户的访问请求的传输路径进行优化,具体而言,用户A向服务端B发送请求,该请求先被代理服务器接收,代理服务器根据请求的目的地址进行传输路径的选择,并转发至服务端B,在为该请求选择较优路径进行传输时,较优路径的判断,可基于线路是否通畅、链路时延、地理位置、网络运营商归属等方面进行考量,本发明并不对此进行限制。客户端程序,为用户提供服务操作的应用程序,例如视频播放、购物、音乐、直播等应用程序。用户可通过客户端程序向服务提供商的服务端发送内容的请求,服务端接收客户端程序请求,并根据请求进行回源。代理服务程序,实现代理服务器业务功能的应用程序,以路径选择为例,代理服务程序可通过其所监听的端口获取请求流量,并对其进行路径选择和转发。IP地址,是指互联网协议地址(英语:InternetProtocolAddress,又译为网际协议地址)。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。iptables是与Linux内核集成的IP信息包过滤系统,该系统有利于在Linux系统上更好地控制IP信息包过滤和防火墙配置。Iptables是工作在用户空间中,定义规则的工具,本身并不算是防火墙。它定义的规则,可以让在内核空间当中的netfilter(网络过滤器)来读取,并且实现让防火墙工作。iptables工作在内核当中,用来设置、维护和检查Linux内核的IP包过滤规则,可以将规则组成一个列表,实现绝对详细的访问控制功能。iptables可以定义不同的表,每个表都包含几个内部的链,也能包含用户定义的链。每个链都是一个规则列表,对对应的包进行匹配:每条规则指定应当如何处理与之相匹配的包,也可以跳向同一个表内的用户定义的链。组标识,英文groupid,Linux系统中的用户分组标识,通过该标识可识别用户所在组别及相应权限。getsockopt函数,用于获取任意类型、任意状态套接口的选项当前值,并把结果存入optval。透明代理,是指客户端根本不需要知道有代理服务器的存在,它改变你的requestfields(报文),并会传送真实IP。netfilter,是由RustyRussell提出的Linux2.4内核防火墙框架,该框架既简洁又灵活,可实现安全策略应用中的许多功能,如数据包过滤、数据包处理、地址伪装、透明代理、动态网络地址转换(NetworkAddressTranslation,NAT),以及基于用户及媒体访问控制(MediaAccessControl,MAC)地址的过滤和基于状态的过滤、包速率限制等。它提供了一个抽象、通用化的框架,作为中间件,为每种网络协议(IPv4、IPv6等)定义一套钩子函数。Ipv4定义了5个钩子函数,这些钩子函数在数据报流过协议栈的5个关键点被调用,也就是说,IPv4协议栈上定义了5个“允许垂钓点”。在每一个“垂钓点”,都可以让netfilter放置一个“鱼钩”,把经过的网络包(Packet)钓上来,与相应的规则链进行比较,并根据审查的结果,决定包的下一步命运,即是被原封不动地放回IPv4协议栈,继续向上层递交;还是经过一些修改,再放回网络;或者干脆丢弃掉。target,指的是通过iptables注册到netfilter的规则所对应的操作,也就是要对规则匹配到的数据包进行的操作,比如ACCEPT(接受)、DROP(丢弃)等。rawsocket,即原始套接字,可以接收本机网卡上的数据帧或者数据包,用于监听网络的流量和分析。本发明提供的流量引导方法的一种实施方式,请参照图1,图1为本发明一较佳实施例所提供的流量引导方法流程图。如图1所示,本实施例中的流量引导方法包括以下步骤:步骤S101,在代理服务器上部署客户端程序。客户端程序用于向服务端发送各种协议类型的请求,包括TCP(TransmissionControlProtocol,传输控制协议)请求、UDP(UserDatagramProtocol,用户数据报协议)请求和ICMP(InternetControlMessageProtocol,互联网控制报文协议)请求等。步骤S102,配置代理服务器上的iptables规则,使得客户端程序所发出的请求被识别,并被代理服务器上的代理服务程序监听。在代理服务器上根据不同的协议请求配置不同的iptables规则,客户端程序向服务端发出请求后,根据请求的协议类型,按照对应的iptables规则识别请求,并对请求进行处理,使所述请求先进入代理服务器上的代理服务程序,被代理服务程序监听。本实施例中,代理服务器通过为客户端设置指定组标识,并根据组标识来识别客户端所发出的请求,故在本实施例中,更进一步的,在步骤S102前更包含步骤:指定客户端程序的组标识。可以理解的是,本发明的其他实施例中,也可使用其他本领域技术人员所习知的技术手段来实现客户端请求的识别,并不以此为限。步骤S103,代理服务程序接收请求,获取请求的原始目的IP(InternetProtocol,网络协议)地址和原始目的端口,并向请求的原始目的IP地址和原始目的端口发送请求。本发明的实施例中,针对不同协议类型的客户端请求所配置的iptables规则有所差别,以下将分别针对协议类型为TCP、UDP和ICMP的请求的流量引导方法实施例进行说明。TCP类型的客户端请求的流量引导方法请参照图2,图2为本发明另一较佳实施例所提供的流量引导方法流程图,如图2所示,本实施例的流量引导方法包含以下步骤:步骤S201,在代理服务器上部署客户端程序。客户端程序用于向服务端发送请求。步骤S202,指定客户端程序的组标识。为代理服务器上部署好的客户端程序配置指定的组标识。步骤S203,配置代理服务器上的iptables规则,使得客户端程序所发出的TCP协议请求被识别,并被代理服务器上的代理服务程序监听。具体而言,通过对代理服务器上的iptables规则进行配置,代理服务器可通过组标识来识别客户端程序所发出的请求并判断请求的协议类型,当请求的协议类型为TCP时,将该请求的目的IP地址和目的端口重定向(redirect)为代理服务程序监听的IP地址和TCP端口,从而实现客户端程序的TCP请求被代理服务程序监听并接收。步骤S204,代理服务程序接收所述请求,获取所述请求的原始目的IP地址和原始目的端口,并向所述请求的原始目的IP地址和原始目的端口发送所述请求。具体而言,代理服务程序通过其所监听的IP地址和TCP端口获取请求数据,并通过getsockopt函数获取请求的原始目的IP地址和原始目的端口,进行相应的代理服务,例如,传输路径选择,并将所述请求发送至原始目的IP地址和原始目的端口。对客户端程序所发出的请求实现代理服务功能。UDP类型的客户端请求的流量引导方法请参照图3,图3为本发明又一较佳实施例所提供的流量引导方法流程图,如图3所示,本实施例的流量引导方法包含以下步骤:步骤S301,在代理服务器上部署客户端程序。客户端程序用于向服务端发送请求。步骤S302,指定客户端程序的组标识。为代理服务器上部署好的客户端程序配置指定的组标识。步骤S303,配置代理服务器上的iptables规则,使得客户端程序所发出的请求被识别,并被代理服务器上的代理服务程序监听。具体而言,通过对代理服务器上的iptables规则进行配置,代理服务器可通过组标识来识别客户端程序所发出的请求并判断请求的协议类型,当请求的协议类型为UDP时,通过透明代理(tproxy)来建立与代理服务程序的联系,并对所述UDP协议请求进行标记M1。具体而言,客户端的UDP协议请求通过透明代理注册一个target到netfilter,该target使得该请求能够被代理服务程序监听的端口所接收,从而建立了请求与代理服务程序之间的联系。为了代理服务程序能够接收到该请求,本实施例更包含步骤S304,对代理服务器上的策略路由和路由进行配置,具体而言,在代理服务器上配置策略路由,指定被标记为M1的请求所要查找的路由表,并在代理服务器上配置路由,在路由表中添加默认路由规则,把被标记为M1的请求发往本地还回接口,从而被所述代理服务程序接收。步骤S305,代理服务程序接收所述请求,获取所述请求的原始目的IP地址和原始目的端口,并向所述请求的原始目的IP地址和原始目的端口发送所述请求。具体而言,透明代理把客户端UDP协议请求的原始目的IP地址和原始目的端口与代理服务程序建立了一个联系,请求被发到被代理服务程序所监听的本地还回接口以后,就可以通过这种联系,把使请求被代理服务程序接收,并进行相应的代理服务,例如传输路径选择,并将所述请求发送至原始目的IP地址和原始目的端口,对客户端程序所发出的请求实现代理服务功能。值得注意的是,由于并未对UDP协议请求的原始目的IP地址和原始目的端口进行任何修改,故代理服务程序可直接从请求信息中获取其原始目的IP地址和原始目的端口。ICMP类型的客户端请求的流量引导方法请参照图4,图4为本发明再一较佳实施例所提供的流量引导方法流程图,如图4所示,本实施例的流量引导方法包含以下步骤:步骤S401,在代理服务器上部署客户端程序。客户端程序用于向服务端发送请求。步骤S402,指定客户端程序的组标识。为代理服务器上部署好的客户端程序配置指定的组标识。步骤S403,配置代理服务器上的iptables规则,使得客户端程序所发出的请求被识别,并被代理服务器上的代理服务程序监听。具体而言,通过对代理服务器上的iptables规则进行配置,代理服务器可通过组标识来识别客户端程序所发出的请求并判断请求的协议类型,当请求的协议类型为ICMP时,对所述ICMP协议请求进行标记M2。步骤S404,对代理服务器上的策略路由和路由进行配置,具体而言,在代理服务器上配置策略路由,指定被标记为M2的请求所要查找的路由表,并在代理服务器上配置路由,在路由表中添加默认路由规则,把被标记为M2的请求发往本地还回接口,从而被所述代理服务程序接收。由于ICMP使用的是rawsocket,只要把ICMP协议请求路由到本地还回接口以后,由于本地还回接口被代理服务程序所监听,代理服务器程序就能够通过rawsocket接收到这个请求。步骤S405,代理服务程序接收所述请求,获取所述请求的原始目的IP地址和原始目的端口,并向所述请求的原始目的IP地址和原始目的端口发送所述请求。具体而言,客户端的ICMP协议请求被发到本地还回接口以后,代理服务程序通过rawsocket接收,并进行相应的代理服务,例如,传输路径选择,并将所述请求发送至原始目的IP地址和原始目的端口。对客户端程序所发出的请求实现代理服务功能。值得注意的是,由于并未对UDP协议请求的原始目的IP地址和原始目的端口进行任何修改,故代理服务程序可直接从请求信息中获取其原始目的IP地址和原始目的端口。由此可见,本发明所提供的流量引导方法可使代理服务程序接收到部署在同一代理服务器上的客户端程序所发送的TCP协议请求、UDP协议请求和ICMP协议请求进行接收,并进行代理服务。这一技术可应用代理服务器的代理功能测试中,从而省却了测试设备,简化了测试环境部署工作,节省开发成本。本发明还提供了一种流量引导系统,请参照图5,图5为本发明一较佳实施所提供的流量引导系统示意图,如图5所示,流量引导系统1包括代理服务器100和服务端200。代理服务器100部署有客户端程序110和代理服务程序120,服务端200,与代理服务器100连接,接收代理服务器100发来的请求,客户端程序110向服务端200发出的请求被代理服务程序120接收,代理服务程序120对该请求就行代理服务,并将该请求发送给服务端200。代理服务器100更包含配置模块130,其中配置模块130包含组标识单元131,用于指定客户端程序110的组标识;iptables配置单元132,用于对代理服务器100上的iptables规则进行配置;策略路由及路由配置单元133,用于对代理服务器100上的策略路由和路由进行配置,通过配置模块130中各单元的配置可使代理服务器100识别客户端程序110向服务端200发送的请求,并使该些请求述代理服务程序120接收。具体而言,客户端程序110部署在代理服务器100上,可向服务端200发送请求,该些请求包含不同的协议类型,协议类型主要包括TCP(TransmissionControlProtocol,传输控制协议)、UDP(UserDatagramProtocol,用户数据报协议)和ICMP(InternetControlMessageProtocol,互联网控制报文协议)等。配置模块130的组标识单元131为客户端程序配置指定的组标识,如此一来,客户端程序所发出的请求信息中包含该指定的组标识,通过iptables配置单元132对代理服务器100上的iptables规则的配置,使得代理服务器100可根据指定的组标识识别出客户端程序所发出的请求,并根据不同协议类型的请求进行相应的处理,使得代理服务程序120接收到客户端程序110所发送的请求。针对上述三种协议类型的请求,分别进行以下配置:(1)TCP协议请求:将客户端程序110发出的TCP请求的目的IP地址和目的端口重定向为代理服务程序120所监听的IP地址和TCP端口。(2)UDP协议请求:将客户端程序110发出的UDP请求通过透明代理来建立与代理服务程序120的联系,并对所述UDP协议请求进行标记。具体而言,UDP协议请求通过透明代理注册一个target到netfilter,所述target使得所述UDP协议请求能够被代理服务程序120监听的端口所接收。(3)ICMP协议请求:将客户端程序发出的ICMP请求进行标记。通过上述iptables规则的配置,客户端程序110发出的TCP协议请求可被代理服务程序120监听并接收,但UDP协议请求和ICMP协议请求还无法被代理服务程序120所接收,还需通过策略路由及路由配置单元133对代理服务器100上的策略路由和路由进行配置。策略路由及路由配置单元133在对代理服务器上的策略路由进行配置,指定被标记请求所要查找的路由表,并在代理服务器100上配置路由,在路由表中添加默认路由规则,把被标记的请求发往本地还回接口,从而被所述代理服务程序120接收。经过配置模块130中的各配置单元的配置,代理服务器100上的客户端程序110所发出的三种协议类型的请求都能被代理服务程序120所接收,客户端程序110所发出的请求流量的传送路径,由原先的直接从代理服务器100的输出端口发出到服务端200,被引导至代理服务程序120所监听的端口,并被代理服务程序120接收,进而按照代理服务程序120所选择的优选路径传输至服务端200。综上所述,本发明所提供的技术方案中,客户端程序和代理服务程序均部署在同一代理服务器上,将客户端程序向服务端发起的请求引导到代理服务程序上,由代理服务程序来访问服务端。该技术可应用于代理服务程序的测试,去掉了现有方法中的测试机,节省测试机的设备资源和维护成本,无需单独再为测试机引导流量配置路由,可以在一台设备上完成测试操作。同时现有技术方案所使用的应用程序也无需修改即可使用,节约了开发成本。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1