一种采用轮询机制的高速报文接收方法

文档序号:7896226阅读:397来源:国知局
专利名称:一种采用轮询机制的高速报文接收方法
技术领域
本发明涉及网络数据处理领域,具体涉及一种采用轮询机制的高速报文接收方法。
背景技术
在计算机系统中,中断是cpu和外设进行交换的最常用的方式,比如,当网卡接收 完一个报文后,会发中断信号给cpu,cpu收到中断信号后,会把发生中断时的工作现场保 存起来,转到网卡的中断处理过程中去,启动下一个报文的接收工作,然后再恢复发生中断 时保存的工作现场,继续进行收到网卡中断信号之前的工作。专利号200710178168. 1公开了一种互联网旁路监测系统的TCP连接管理方法,报 文接接收程采用中断方式实现软硬件交互,每次接收完一个报文后,硬件都要发出中断信 号通知软件,软件才能启动下一个报文过程。在高速网络报文接收网卡上,每秒钟内接收 的报文数有时高达几百万个,因为每次中断信号处理都要有一个保存和恢复工作现场的工 作,所以每接收一个报文都向CPU接收一个中断,会占用CPU大量的计算时间,降低系统效 率。

发明内容
本发明的目的是提供一种采用轮询机制的高速报文接收方法避免高速网络上接 收报文的频繁中断。一种采用轮询机制的高速报文接收方法,采用无中断软硬件结合方式实现,步骤 如下A、硬件网卡的PCI控制器向主机注册PCI空间,其中定义接收报文相关的寄存器 地址;B、软件申请一片物理地址连续的内存,作为接收报文的缓冲区,把缓冲区的物理 地址和长度写入PCI空间的对应寄存器,并设置硬件的写指针和软件的读指针为初始值0 ;C、硬件每次从网络接收到一个报文后,把报文传输到软件的报文缓冲区中,并根 据报文长度,修改PCi空间的写指针;D、软件循环收包,每次收包都要查看pci空间寄存器,判断硬件写指针是否等于 软件的读指针,如果不相等,则说明读指针和写指针之间是新的报文,则读取出来,并移动 读指针。如果读指针追上了写指针,则说明缓冲区内报文已经全部读出,则等待一个时间片 后,进行下一次轮询。本发明的一种优选技术方案在于所述PCI空间寄存器用来记录报文缓冲区地址 和长度,软件从缓冲区读报文的读指针,网卡向缓冲区写报文的写指针。本发明采用无中断的轮询方式实现高速的报文接收,报文缓冲区的读写指针放入 PCI空间的寄存器中,软硬件通过直接操作寄存器实现交互,从而避免接收报文的中断开 销,提高系统效率。


图1是本发明软硬件实现结构图
具体实施例方式本发明是一个软硬件结合的系统。软件负责分配接收报文使用的缓冲区,需要在内核中申请一整片物理地址连续的 内存,作为接收报文的缓冲区,并去轮询硬件,查看是否有新的报文到达。硬件负责从网络接收报文,并把报文传输到主机内存的报文缓冲区中,通过写PCI 空间的寄存器,通知软件有新报文到达。报文接收相关的PCI空间寄存器主要有报文缓冲区地址、长度、软件从缓冲区读 报文的读指针、硬件向缓冲区写报文的写指针。该发明接收报文的方法和过程如下(1)硬件网卡的PCI控制器向主机注册PCI空间,其中定义接收报文相关的寄存器 地址,包括报文缓冲区地址、长度、软件从缓冲区读报文的读指针、硬件向缓冲区写报文的 写指针。(2)软件申请报文缓冲区软件申请一片物理地址连续的内存,作为接收报文的缓冲区,把缓冲区的物理地 址和长度写入PCI空间的对应寄存器,并设置硬件的写指针和软件的读指针为初始值0。(3)硬件接收报文。硬件每次从网络接收到一个报文后,把报文传输到软件的报文缓冲区中,并根据 报文长度,修改PCI空间的写指针。(4)软件接收报文。 软件循环收包,每次收包都要查看PCI空间寄存器,判断硬件写指针是否等于软 件的读指针,如果不相等,则说明读指针和写指针之间是新的报文,则读取出来,并移动读 指针。如果读指针追上了写指针,则说明缓冲区内报文已经全部读出,则等待一个时间片 后,进行下一次轮询。
权利要求
1.一种采用轮询机制的高速报文接收方法,其特征在于采用无中断软硬件结合方式 实现,步骤如下A、硬件网卡的PCI控制器向主机注册PCI空间,其中定义接收报文相关的寄存器地址;B、软件申请一片物理地址连续的内存,作为接收报文的缓冲区,把缓冲区的物理地址 和长度写入PCI空间的对应寄存器,并设置硬件的写指针和软件的读指针为初始值0 ;C、硬件每次从网络接收到一个报文后,把报文传输到软件的报文缓冲区中,并根据报 文长度,修改Pci空间的写指针;D、软件循环收包,每次收包都要查看pci空间寄存器,判断硬件写指针是否等于软件 的读指针,如果不相等,则说明读指针和写指针之间是新的报文,则读取出来,并移动读指 针。如果读指针追上了写指针,则说明缓冲区内报文已经全部读出,则等待一个时间片后, 进行下一次轮询。
2.如权利要求1所述一种采用轮询机制的高速报文接收方法,其特征在于所述PCI 空间寄存器用来记录报文缓冲区地址和长度,软件从缓冲区读报文的读指针,网卡向缓冲 区写报文的写指针。
全文摘要
本发明提供了一种采用轮询机制的高速报文接收方法。采用无中断软硬件结合方式实现,硬件网卡PCI控制器向主机注册PCI空间,软件申请报文缓冲区,软件轮询读写指针,读缓冲区接收报文,并移动读指针,硬件接收报文时,写缓冲区并移动写指针。本发明采用无中断的轮询方式实现高速的报文接收,报文缓冲区的读写指针放入PCI空间的寄存器中,软硬件通过直接操作寄存器实现交互,从而避免接收报文的中断开销,提高系统效率。
文档编号H04L12/56GK102098214SQ201010597760
公开日2011年6月15日 申请日期2010年12月17日 优先权日2010年12月17日
发明者刘兴奎, 刘朝辉, 刘灿, 张英文, 李锋伟, 李静 申请人:天津曙光计算机产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1