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





