[发明专利]一种TCP数据包的传输方法无效
申请号: | 200810055730.6 | 申请日: | 2008-01-08 |
公开(公告)号: | CN101217493A | 公开(公告)日: | 2008-07-09 |
发明(设计)人: | 张建宇;姚嘉;刘晓舟;廖唯棨;邹维 | 申请(专利权)人: | 北京大学 |
主分类号: | H04L12/56 | 分类号: | H04L12/56;H04L29/06 |
代理公司: | 北京君尚知识产权代理事务所 | 代理人: | 余长江 |
地址: | 100871*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 tcp 数据包 传输 方法 | ||
技术领域
本发明属于计算机网络和数据通信技术领域,涉及一种TCP(Transmission ControlProtocol)数据包的传输方法,可用于应用网关的设备和软件中,以提高网关传输TCP数据包以及处理其应用层数据的效率,减少系统开销和网络延迟。
背景技术
应用网关通常采用透明代理技术,在客户机和服务器之间充当中间人的角色,接收流经的TCP数据包并重定向到内核层的本地网络协议栈中,由协议栈对数据包进行协议解析处理和TCP流重组,还原提取出应用层数据,然后通过流套接字(Stream Socket)将应用层数据从内核层拷贝到用户层,传送给用户层的业务程序(如病毒检测程序、关键词过滤程序等)进行各种处理和修改(如删除、替换);用户层业务程序将处理修改后的数据再通过流套接字从用户层拷贝到内核层,交给本地网络协议栈,并通知协议栈采用重定向前原始数据包的目的IP地址和目的端口来重新构建数据包并进行协议封装,然后发送出去。其中,流量重定向多采用网络地址转换技术(Network Address Translation,简称NAT),这主要是由于传统的套接字实现(如伯克利套接字,参见文献:W.R.Stevens,B.Fenner andA.M.Rodoff,“UNIX Network Programming,Volume 1:The Sockets Networking API”,Addison Wesley,2003;IEEE Std 1003.1)和网络协议栈的实现不能接收和处理非本地目的IP地址和目的端口的数据包,也不能发送非本地源IP地址和源端口的数据包。因此,应用网关对接收到的数据包要进行目的地址转换(DNAT),将其目的IP地址和目的端口改为网关的本地IP地址和本地端口,从而将其重定向到应用网关的本地网络协议栈中;对于待发送的数据包则要进行源地址转换(SNAT),将其源IP地址和源端口从网关的本地IP地址和本地端口改为DNAT前原始数据包的源IP地址和源端口。为了区分属于不同TCP连接的数据包,需要对TCP流量进行连接跟踪并在连接表中记录NAT操作前后的IP地址和端口信息。
上述技术存在如下几个主要缺陷,造成应用网关处理效率和容量的大幅下降,无法满足在高流量带宽以及存在大量并发会话的网络环境中的性能需求:(1)NAT技术对每一个数据包的IP地址和端口字段进行修改并需重新计算校验和,对系统性能造成一定影响;(2)NAT技术依赖于连接跟踪,需要建立会话表,为每一个TCP会话保存IP地址、端口等信息,而会话跟踪和会话表管理任务的时空间开销繁重,会严重影响系统的性能;(3)为了保持NAT转换前后TCP连接的一一对应关系,在执行DNAT操作时需要将不同的TCP连接的数据包目的端口转换为不同的本地端口,因而系统能够支持的最大并发连接数受限于可用的本地端口数目(不多于65535个);(4)数据在内核层和用户层之间多次拷贝传递,以及在发送数据时需要重新进行数据包构建等操作,也会严重降低系统性能。
发明内容
本发明的目的在于提供一种TCP数据包传输方法,通过将非本地TCP数据包直接重定向到本地网络协议栈进行处理(不依赖于网络地址转换技术)、流套接字负载均衡、减少内核层和用户层之间的数据拷贝传递、在内核层的流套接字之间直接传递TCP数据包以及减少网络协议栈中执行数据包构建等复杂操作的开销,提高了内核层内部各模块间传输和处理TCP数据包以及内核层与用户层业务程序之间传输数据的效率。
本发明的上述发明目的是通过如下的技术方案实现:一种TCP数据包的传输方法,其步骤如下:
1.将应用网关接收到的、目的IP地址为非本地IP地址的TCP数据包传输到内核层的数据包转发模块;
2.数据包转发模块根据负载均衡算法从用户层业务程序创建的“监听”流套接字池中选出一个“监听”流套接字,将其本地监听端口保存到数据包的内核数据结构中;
3.所述“监听”流套接字响应新建TCP连接握手请求,并创建“数据”流套接字,所述流套接字包含三个数据包缓冲队列:接收队列、发送队列和深度处理队列;“监听”流套接字还包含一个监听队列和一个新建TCP连接队列;
4.数据包转发模块将TCP数据包重定向到内核层的本地网络协议栈;
5.本地网络协议栈的TCP输入处理模块对TCP数据包的TCP包头进行解析处理,在“数据”流套接字散列表中查找是否存在与数据包对应的“数据”流套接字;
6.若存在“数据”流套接字,则将数据包加入到“数据”流套接字的接收队列的队尾,跳到步骤9;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810055730.6/2.html,转载请声明来源钻瓜专利网。