CN102098214A - 一种采用轮询机制的高速报文接收方法 - Google Patents
一种采用轮询机制的高速报文接收方法 Download PDFInfo
- Publication number
- CN102098214A CN102098214A CN2010105977607A CN201010597760A CN102098214A CN 102098214 A CN102098214 A CN 102098214A CN 2010105977607 A CN2010105977607 A CN 2010105977607A CN 201010597760 A CN201010597760 A CN 201010597760A CN 102098214 A CN102098214 A CN 102098214A
- Authority
- CN
- China
- Prior art keywords
- message
- software
- read
- hardware
- pointer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种采用轮询机制的高速报文接收方法。采用无中断软硬件结合方式实现,硬件网卡PCI控制器向主机注册PCI空间,软件申请报文缓冲区,软件轮询读写指针,读缓冲区接收报文,并移动读指针,硬件接收报文时,写缓冲区并移动写指针。本发明采用无中断的轮询方式实现高速的报文接收,报文缓冲区的读写指针放入PCI空间的寄存器中,软硬件通过直接操作寄存器实现交互,从而避免接收报文的中断开销,提高系统效率。
Description
技术领域
本发明涉及网络数据处理领域,具体涉及一种采用轮询机制的高速报文接收方法。
背景技术
在计算机系统中,中断是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空间寄存器,判断硬件写指针是否等于软件的读指针,如果不相等,则说明读指针和写指针之间是新的报文,则读取出来,并移动读指针。如果读指针追上了写指针,则说明缓冲区内报文已经全部读出,则等待一个时间片后,进行下一次轮询。
Claims (2)
1.一种采用轮询机制的高速报文接收方法,其特征在于:采用无中断软硬件结合方式实现,步骤如下:
A、硬件网卡的PCI控制器向主机注册PCI空间,其中定义接收报文相关的寄存器地址;
B、软件申请一片物理地址连续的内存,作为接收报文的缓冲区,把缓冲区的物理地址和长度写入PCI空间的对应寄存器,并设置硬件的写指针和软件的读指针为初始值0;
C、硬件每次从网络接收到一个报文后,把报文传输到软件的报文缓冲区中,并根据报文长度,修改pci空间的写指针;
D、软件循环收包,每次收包都要查看pci空间寄存器,判断硬件写指针是否等于软件的读指针,如果不相等,则说明读指针和写指针之间是新的报文,则读取出来,并移动读指针。如果读指针追上了写指针,则说明缓冲区内报文已经全部读出,则等待一个时间片后,进行下一次轮询。
2.如权利要求1所述一种采用轮询机制的高速报文接收方法,其特征在于:所述PCI空间寄存器用来记录报文缓冲区地址和长度,软件从缓冲区读报文的读指针,网卡向缓冲区写报文的写指针。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105977607A CN102098214A (zh) | 2010-12-17 | 2010-12-17 | 一种采用轮询机制的高速报文接收方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105977607A CN102098214A (zh) | 2010-12-17 | 2010-12-17 | 一种采用轮询机制的高速报文接收方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102098214A true CN102098214A (zh) | 2011-06-15 |
Family
ID=44131086
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010105977607A Pending CN102098214A (zh) | 2010-12-17 | 2010-12-17 | 一种采用轮询机制的高速报文接收方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102098214A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102520911A (zh) * | 2011-12-19 | 2012-06-27 | 曙光信息产业(北京)有限公司 | 一种优化收包设备上的软件操作pci空间寄存器效率的系统和方法 |
CN102750245A (zh) * | 2012-05-29 | 2012-10-24 | 中国人民解放军国防科学技术大学 | 报文接收方法、报文接收模块、装置及系统 |
CN104486249A (zh) * | 2014-12-22 | 2015-04-01 | 浪潮集团有限公司 | 一种提高rapidio传输网络报文效率的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101707565A (zh) * | 2009-12-04 | 2010-05-12 | 曙光信息产业(北京)有限公司 | 零拷贝网络报文发送、接收方法和装置 |
CN101877666A (zh) * | 2009-11-13 | 2010-11-03 | 曙光信息产业(北京)有限公司 | 基于零拷贝方式的多应用程序报文接收方法和装置 |
-
2010
- 2010-12-17 CN CN2010105977607A patent/CN102098214A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101877666A (zh) * | 2009-11-13 | 2010-11-03 | 曙光信息产业(北京)有限公司 | 基于零拷贝方式的多应用程序报文接收方法和装置 |
CN101707565A (zh) * | 2009-12-04 | 2010-05-12 | 曙光信息产业(北京)有限公司 | 零拷贝网络报文发送、接收方法和装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102520911A (zh) * | 2011-12-19 | 2012-06-27 | 曙光信息产业(北京)有限公司 | 一种优化收包设备上的软件操作pci空间寄存器效率的系统和方法 |
CN102520911B (zh) * | 2011-12-19 | 2015-04-29 | 曙光信息产业(北京)有限公司 | 一种优化收包设备上的软件操作pci空间寄存器效率的系统和方法 |
CN102750245A (zh) * | 2012-05-29 | 2012-10-24 | 中国人民解放军国防科学技术大学 | 报文接收方法、报文接收模块、装置及系统 |
CN102750245B (zh) * | 2012-05-29 | 2015-11-18 | 中国人民解放军国防科学技术大学 | 报文接收方法、报文接收模块、装置及系统 |
CN104486249A (zh) * | 2014-12-22 | 2015-04-01 | 浪潮集团有限公司 | 一种提高rapidio传输网络报文效率的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102006241B (zh) | 一种多个应用共享一个缓冲区的报文接收方法 | |
CN101827072B (zh) | 执行分段卸载的方法和网络装置 | |
US10120781B2 (en) | Techniques for detecting race conditions | |
EP2831727B1 (en) | Accessing a device on a remote machine | |
CN102541468B (zh) | 虚拟化环境下的脏数据回写系统 | |
CN101727414A (zh) | 用于在计算机系统中传递中断的技术 | |
EP1916601A3 (en) | Multiprocessor system | |
CN102968395B (zh) | 用于微处理器的内存拷贝加速方法及装置 | |
CN102662777A (zh) | 一种基于kvm虚拟机的客户机之间高速通信的方法 | |
CN111813713A (zh) | 数据加速运算处理方法、装置及计算机可读存储介质 | |
CN104714918A (zh) | 主机环境下高速fc总线数据接收及缓冲方法 | |
US10318733B2 (en) | Techniques for detecting malware with minimal performance degradation | |
CN110874336B (zh) | 一种基于申威平台的分布式块存储低延迟控制方法及系统 | |
CN102098214A (zh) | 一种采用轮询机制的高速报文接收方法 | |
CN102750245B (zh) | 报文接收方法、报文接收模块、装置及系统 | |
WO2017210015A1 (en) | Improving throughput in openfabrics environments | |
CN103559079A (zh) | 一种基于共享内存的数据存取方法及装置 | |
CN102088406A (zh) | 一种采用轮询机制的高速报文发送方法 | |
CN101013408A (zh) | 数据处理系统及数据处理方法 | |
CN102890661A (zh) | 一种主从机通讯协议 | |
CN101577712A (zh) | 支持多终端远程接入的业务前置机及其网络接口卡 | |
CN102420749A (zh) | 一种网卡发包功能的实现装置和方法 | |
CN107025068B (zh) | 在存储器内异步复制数据 | |
CN104331352A (zh) | cache一致性芯片地址带外读取检测方法及装置 | |
CN1841270A (zh) | 一种用于智能卡仿真调试系统的接口 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110615 |