一种UDP协议加速方法和系统技术方案

技术编号:13387783 阅读:61 留言:0更新日期:2016-07-22 04:24
本发明专利技术公开了一种UDP协议加速方法和系统。该系统包括客户端、加速服务器和源站,其中客户端包括处于应用层的本地代理和待加速的一个或多个本地应用以及处于IP层的网络过滤器。本地代理在收到请求后识别来自不同应用的重定向请求,并查询原始目的地址,将目的地址与请求封装后发送至加速服务器;加速服务器解析出原始目的地址,并代理请求,将响应返送回本地代理;本地代理收到加速服务器的响应后,查询加速记录,将响应转发至对应本地应用。

【技术实现步骤摘要】
一种UDP协议加速方法和系统
本专利技术涉及用户数据报协议UDP协议,尤其涉及UDP协议流量加速方法和系统。
技术介绍
UDP协议是开放式系统互联OSI参考模型的中的一种无连接协议,处于第四层——传输层中,是IP协议的上一层,用于处理数据包,主要是将网络数据流量压缩成数据包的形式,提供面向事务的简单信息传送服务。它不提供数据包分组、组装,也不能对数据包进行排序。UDP协议加速通常分为两个环节,第一个环节将UDP协议流量引导至远程加速服务器,第二个环节由加速服务器对UDP流量进行代理。第一个环节的通常做法是将UDP协议流量重定向至本地代理,在本地代理中对UDP数据包进行封装并转发至远程加速服务器。为使加速服务器正确代理UDP协议流量,本地代理需将数据包和其原始目的地址发送至加速服务器。由于UDP是无连接通信,当数据包被重定向至本地代理后,在用户态无法通过现有套接字socket函数获取原始目的地址。而目前在路由器中对流经路由器的UDP协议流量加速的具体方法是通过设置Iptables规则将流量重定向至本地代理,通过Linux的透明代理TPROXY模块在本地代理中获取UDP数据包的原始目的地址,在本地代理中将数据包和原始目的地址信息转发至加速服务器。由于TPROXY模块工作于网络过滤器Netfilter的路由前PREROUTING链,而本地应用产生的流量并不经过PREROUTING链路,因此该方案不能对本地应用产生的UDP数据包加速。另一方面,尽管路由器能够加速流经路由器的流量,但无法对不同终端的流量进行区分处理;以机顶盒、手机等终端设备接入加速路由器为例,路由器无法区分不同的终端设备的流量。因此,需要将加速功能安装至终端中。
技术实现思路
提供本
技术实现思路
以便以简化的形式介绍将在以下的具体实施方式中进一步描述的一些概念。本
技术实现思路
并不旨在专门标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。本专利技术通过解决本地应用产生的UDP协议流量加速过程中UDP数据包重定向至本地代理后正确获取数据包的原始目的地址的问题,实现在客户端中对本地UDP协议流量进行加速。本专利技术的UDP协议加速方法包括,在客户端中由本地代理获取本地应用请求的源地址;查询所述客户端的操作系统中的连接信息表获取原始目的地址;将所述原始目的地址和所述请求封装后通过加速套接字发送至加速服务器;由所述加速服务器代理客户端请求;所述本地代理接收所述加速服务器的响应,并将所述响应转发至对应的所述本地代理。本专利技术的UDP协议加速系统包括,客户端,包括本地代理、待加速的一个或多个本地应用、以及处于IP层的Netfilter;加速服务系统;以及其中所述本地代理在收到请求后识别来自不同应用的重定向请求,并查询原始目的地址,将目的地址与所述请求封装后发送至所述加速服务器,所述加速服务器解析出所述原始目的地址,代理所述请求,并将响应返送回所述本地代理,所述本地代理收到所述加速服务器的响应后,查询加速记录,并将所述响应转发至对应本地应用。附图说明图1是实现本专利技术的系统结构示意图;图2是本专利技术的本地代理模块工作的流程图。具体实施方式本专利技术通过在本地UDP协议数据包被重定向后正确获取其目的地址,使在客户端中对本地应用产生的UDP协议流量加速成为可能。根据本专利技术的一个实施例,依靠Iptables将流量引导至本地代理,本地代理中对UDP协议数据包原始目的地址的获取、流量引导均在应用层中实现。加速方案不改变Linux的Netfilter、TCP/IP协议栈等关键模块。参见图1,示出了实现本专利技术的系统结构示意图,该系统包括客户端101、加速服务器102、和源站103。客户端101中包括本地代理1012和待加速的一个或多个本地应用1011,两者均处于应用层;客户端101中的Netfilter属于IP层,可将本地应用1011发出的请求重定向至本地代理1012中。本地代理1012在收到请求后进行处理,识别来自不同应用的重定向请求,查询原始目的地址,并将原始目的地址与请求封装后发送至加速服务器102,在处理的同时本地代理1012还保存加速记录;加速服务器102解析出原始目的地址,并对本地代理1012进行代理以向源站103发出请求,然后将响应返送回本地代理1012;本地代理1012收到加速服务器102的响应包后,查询先前保存的加速记录,并根据加速记录将响应转发至对应本地应用1011。现在转到图2,其示出了根据本专利技术的一种UDP协议加速方法的本地代理模块工作的流程。方法在步骤201开始。在步骤202,创建本地代理的监听套接字,监听套接字作用是处理客户端应用被重定向至本地代理的请求。该监听套接字关联第一文件描述符。在步骤203,监听第一文件描述符是否可读,若可读表示有本地应用发出请求被重定向到本地代理监听的端口,那么本地代理即可接收重定向请求以进行加速处理,因而前进到步骤204;如果否,则返回此步骤203继续监听。在步骤204,由本地代理通过API接口获取请求的源地址src_ip、src_port;接着在步骤205,由本地代理根据所获取的请求的源地址src_ip,src_port通过查询连接信息表/proc/net/ip_conntrack,得到原始目的地址dst_ip、dst_port;并在步骤206,由本地代理创建加速套接字以与远程加速服务器进行通信,同时将所创建的加速套接字信息及其关联的第二文件描述符、请求的源地址src_ip、src_port、原始目的地址dst_ip、dst_port和保存在本地代理处的加速记录中以便用于在得到响应后发回给本地应用。由本地代理将原始目的地址dst_ip、dst_port和请求封装后通过加速套接字发送至加速服务器。在步骤207,作出加速套接字是否收到请求的判断,若否,方法返回步骤203,若是,则在步骤208查询加速记录,根据加速记录获取请求的源地址src_ip、src_port,并修改请求的目的地址,接着在步骤209将响应通过本地代理监听套接字转发至请求的源地址src_ip、src_port。整个进程在步骤209之后,返回步骤203,继续监听。其中,根据请求的源地址src_ip,src_port查询连接信息表/proc/net/ip_conntrack获取原始目的地址的步骤205进一步通过以下步骤实现:Linux内核中使用ip_conntrack结构体来记录进入netfilter网络数据包的状态,并把状态信息保存到/proc/net/ip_conntrack中;/proc/net/ip_conntrack中udp协议记录格式如下:udp1721src=192.168.1.121dst=27.152.87.177sport=35779dport=6666[UNREPLIED]src=127.0.0.1dst=192.168.1.121sport=8122dport=35779mark=0use=2其中主要字段含义如下:第3个字段表示记录存活时间,单位为秒;第4、5、6、7字段表示进入netfilter前的tuple[ORIGINAL]信息(请求被重定向前的元组信息),即原始udp数据包信息;第8个字段表示udp数据包状态,本文档来自技高网
...

【技术保护点】
一种UDP协议加速方法,包括:在客户端中由本地代理获取本地应用请求的源地址(204);查询所述客户端的操作系统中的连接信息表获取原始目的地址(205);将所述原始目的地址和所述请求封装后通过加速套接字发送至加速服务器(206);由所述加速服务器代理客户端请求(208);所述本地代理接收所述加速服务器的响应,并将所述响应转发至对应的所述本地代理(209)。

【技术特征摘要】
1.一种UDP协议请求加速方法,包括:在客户端中由本地代理获取本地应用UDP协议请求的源地址;查询所述客户端的操作系统中的连接信息表获取原始目的地址,包括:由所述本地代理收到UDP请求的元组信息查询所述连接信息表,根据请求被重定向后的元组信息,查询出请求被重定向前的元组信息,从而得到原始目的地址,其中进入netfilter网络数据包的状态信息被保存在所述连接信息表中,UDP协议在所述连接信息表中的格式包括:记录存活时间字段、进入netfilter前的原始UDP数据包信息字段、进入netfilter后的UDP数据包信息字段,和/或UDP数据包状态字段;将所述原始目的地址和所述UDP协议请求封装后通过加速套接字发送至加速服务器;由所述加速服务器代理所述客户端的请求;所述本地代理接收所述加速服务器的响应,并将所述响应转发至对应的所述本地应用。2.如权利要求1所述的方法,其特征在于,应用请求信息、本地代理与加速服务器连接信息储存在本地代理中,当本地代理收到所述加速服务器的响应时根据所述应用请求信息、本地代理与加速服务器连接信息将响应转发给相应...

【专利技术属性】
技术研发人员:洪珂范自道郑明
申请(专利权)人:网宿科技股份有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1