[发明专利]一种实现局域网内高效传输大块数据的方法及系统有效
申请号: | 200810068094.0 | 申请日: | 2008-06-25 |
公开(公告)号: | CN101304373A | 公开(公告)日: | 2008-11-12 |
发明(设计)人: | 王魏强;孙福清;程宁 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | H04L12/56 | 分类号: | H04L12/56;H04L1/16;H04L1/00;H04L29/08;H04L12/28 |
代理公司: | 深圳市君胜知识产权代理事务所 | 代理人: | 王永文 |
地址: | 518057广东省深圳市南山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 局域网 高效 传输 大块 数据 方法 系统 | ||
1.一种实现局域网内高效传输大块数据的方法,其特征在于,包括以下步骤:
A、客户端向服务器端发送数据请求;
B、所述服务器端接收数据请求后,所述服务器端进行数据准备,并向客户端发送大块数据应答,利用网卡的直接内存存取DMA功能和分散/汇聚SG功能,采用头部和载荷分离的方式实现零拷贝的数据发送;
C、所述客户端接收服务器端的大块数据应答,利用数据包中携带的用户缓冲区地址信息,将数据包的载荷写入对应的用户缓冲区;
其中,所述步骤A具体包括:
A1、客户端用户程序根据数据请求的帧结构,分配用户缓冲区并填充数据请求包,向服务器端用户程序请求大块数据;
A2、所述客户端用户程序通过网络套接字调用数据发送的接口陷入内核态,进入数据请求包发送流程;
A3、协议栈内核模块验证数据请求帧结构的合法性,如果数据请求帧结构合法,则继续执行;如果数据请求帧结构不合法,则返回帧错误;
A4、协议栈内核模块对控制缓冲区和数据缓冲区地址进行变换,将客户端用户程序提供的进程虚拟地址转换为物理内存地址,并存储在该网络套接字相关的内核数据结构中,同时锁定相关物理内存;
A5、在网络套接字相关的内核数据结构中,记录数据请求索引,并设置数据请求标志为工作状态;
A6、协议栈内核模块发送接口通过网卡驱动模块以DMA方式直接发送用户缓冲区的数据请求帧。
2.根据权利要求1所述的方法,其特征在于,所述步骤B还包括:
B11、所述服务器端用户程序通过网络套接字调用数据接收接口陷入内核态,进入数据请求包接收流程;
B12、协议栈内核模块检查该套接字的内核接收队列上是否有数据请求,如果有数据请求,则将该数据请求从内核接收队列上取下,并将请求数据包的内容从内核态缓冲区中拷贝到用户态缓冲区中,释放该内核态缓冲区;如果没有数据请求,则服务器端用户程序阻塞在该套接字的内核接收队列上,等到内核接收函数收到数据请求包时唤醒。
3.根据权利要求2所述的方法,其特征在于,所述步骤B还包括:
B21、所述服务器端用户程序根据数据请求包中具体应用定义的数据结构,准备客户端请求的大块数据,存放在连续的用户缓冲区内,根据数据应答帧结构填充数据应答包;
B22、所述服务器端用户程序通过网络套接字调用数据发送接口陷入内核态,进入数据应答包发送流程。
4.根据权利要求3所述的方法,其特征在于,所述步骤B还包括:
B23、协议栈内核模块验证数据应答帧结构的合法性,如果数据应答帧结构合法,则继续执行;如果数据应答帧结构不合法,则返回结构错误;
B24、协议栈内核模块通过网卡驱动模块以DMA方式直接发送数据应答帧。
5.根据权利要求4所述的方法,其特征在于,所述步骤C还包括:
C1、所述客户端用户程序通过网络套接字调用数据接收接口陷入内核态,进入数据应答包接收流程;
C2、协议栈内核模块检查该套接字上是否设置了数据请求标志,如果设置了数据请求标志,则等待内核接收函数调用模块的内核接收函数完成数据包的接收时唤醒;如果没有设置数据请求标志,则直接返回错误;
C3、如果超时时间到,用户程序仍然没有被唤醒,则清除数据请求标志,返回超时错误并退出;如果在超时之前,协议栈模块已经接受完所有的数据包,则设置数据请求标志为完成状态,完成后正常返回。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810068094.0/1.html,转载请声明来源钻瓜专利网。