[发明专利]一种零拷贝接收报文的方法和系统有效
申请号: | 201110361904.3 | 申请日: | 2011-11-15 |
公开(公告)号: | CN102402487A | 公开(公告)日: | 2012-04-04 |
发明(设计)人: | 刘彤 | 申请(专利权)人: | 北京天融信科技有限公司 |
主分类号: | G06F12/08 | 分类号: | G06F12/08;H04L12/56 |
代理公司: | 工业和信息化部电子专利中心 11010 | 代理人: | 梁军 |
地址: | 100085 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 拷贝 接收 报文 方法 系统 | ||
1.一种零拷贝接收报文的方法,其特征在于,包括:
用户态进程打开预先创建的虚拟字符设备,调用所述虚拟字符设备提供的mmap方法;内核态进程在所述mmap方法被调用时,将所有内核低端空间映射到用户空间,并为所述内核低端空间的结构vm_area_struct设置nopage方法;
内核态进程在网卡设备接收到数据包时,基于所述数据包在所述内核低端空间中的地址,得到数据包存储偏移地址后传递给用户态进程;
用户态进程根据所述偏移地址计算得到待访问的虚拟地址,并在访问所述虚拟地址时,触发CPU缺页异常,使得操作系统调用所述nopage方法得到要访问的物理地址对应的页目录和页表项;
用户态进程基于所述页目录和页表项,读取存储在所述内核低端空间内的所述数据包。
2.如权利要求1所述的方法,其特征在于,所述用户态进程根据所述偏移地址计算得到待访问的虚拟地址的方式包括:
所述用户态进程将所述数据包的存储偏移地址加上映射的用户空间地址,得到读取所述数据包所需访问的虚拟地址。
3.如权利要求1所述的方法,其特征在于,所述操作系统调用所述nopage方法得到要访问的物理地址对应的页目录和页表项,具体包括:
操作系统将要访问的所述虚拟地址减去所述用户空间的起始虚拟地址,得到一个偏移地址,并根据该偏移地址得到要访问的物理地址;
操作系统将所述物理地址右移PAGE_SHIFT位转换成页帧号,再调用pfn_to_page函数返回page结构指针;
操作系统取得所述page结构指针后,为所述物理地址设置页目录和页表项。
4.如权利要求3所述的方法,其特征在于,所述操作系统调用所述nopage方法得到要访问的物理地址对应的页目录和页表项前,还包括:
所述操作系统调用缺页异常处理函数检测所述虚拟地址所在用户空间的合法性,当所述用户空间合法时,调用所述nopage方法。
5.如权利要求1所述的方法,其特征在于,所述网卡设备接收到所述数据包时,具体包括:
所述网卡驱动调用系统函数alloc_skb()为网卡分配缓存,并利用所述系统函数alloc_skb()调用内存分配函数kmalloc()分配内存块;
所述网卡驱动通过直接内存存取方式将所述数据包存到所述缓存中。
6.如权利要求5所述的方法,其特征在于,所述网卡驱动将所述数据包存到所述缓存后还包括:操作系统的TCP/IP协议栈对所述数据包进行处理。
7.一种零拷贝接收报文的系统,其特征在于,包括:
初始化模块,用于打开预先创建的虚拟字符设备,调用所述虚拟字符设备提供的mmap方法;
映射模块,用于在所述mmap方法被调用时,将所有内核低端空间映射到用户空间,并为所述内核低端空间的结构vm_area_struct设置nopage方法;
地址计算模块,用于在网卡设备接收到数据包时,基于所述数据包在所述内核低端空间中的地址,得到数据包存储偏移地址后传递给地址访问模块;
地址访问模块,用于根据所述偏移地址计算得到待访问的虚拟地址,并在访问所述虚拟地址时,触发CPU缺页异常;
Page获取模块,用于在所述地址访问模块触发CPU缺页异常时,调用所述nopage方法得到要访问的物理地址对应的页目录和页表项;
报文读取模块,用于基于所述物理地址对应的页目录和页表项,读取存储在所述内核低端空间内的所述数据包。
8.如权利要求7所述的系统,其特征在于,所述Page获取模块具体包括:
物理地址计算子模块,用于将要访问的所述虚拟地址减去所述用户空间的起始虚拟地址,得到一个偏移地址,并根据该偏移地址计算要访问的物理地址;
Page指针获取子模块,用于将所述物理地址右移PAGE_SHIFT位转换成页帧号,再调用pfn_to_page函数返回page结构指针;
Page项设置子模块,用于在所述Page指针获取模块取得所述page结构指针后,为所述物理地址设置页目录和页表项。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京天融信科技有限公司,未经北京天融信科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110361904.3/1.html,转载请声明来源钻瓜专利网。
- 上一篇:多穴位高精密注塑模具
- 下一篇:塑料排水板热熔式自动剪切机