JP2008257642A - Packet processor - Google Patents

Packet processor Download PDF

Info

Publication number
JP2008257642A
JP2008257642A JP2007101831A JP2007101831A JP2008257642A JP 2008257642 A JP2008257642 A JP 2008257642A JP 2007101831 A JP2007101831 A JP 2007101831A JP 2007101831 A JP2007101831 A JP 2007101831A JP 2008257642 A JP2008257642 A JP 2008257642A
Authority
JP
Japan
Prior art keywords
packet
dma
interrupt
reception
cpu
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
Application number
JP2007101831A
Other languages
Japanese (ja)
Inventor
Satoshi Kurosawa
怜志 黒澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2007101831A priority Critical patent/JP2008257642A/en
Publication of JP2008257642A publication Critical patent/JP2008257642A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Transfer Systems (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To provide a packet processor, for rapidly receiving packets. <P>SOLUTION: The packet processor adapted to receive a packet from an external device through an NIC (network interface card) 20 by a plurality of CPUs a1-an comprises an OS 40 which sets a plurality of DMA receiving buffers b1-bn for receiving the packet DMA-transferred from the NIC 20 within a kernel space; and a packet receiving processing part 1 which receives the packet from the NIC 20 by a predetermined DMA receiving buffer based on an instruction from the OS 40 and transfers it to a host layer processing part 62. The processing part 1 changes setting of CPU for reporting interruption next and setting of DMA receiving buffer for receiving the packet next before starting the next DMA transfer from the NIC 20, and receives the packet by the set DMA receiving buffer in addition to interruption notice to the set CPU when the NIC 20 performs the next DMA transfer. <P>COPYRIGHT: (C)2009,JPO&INPIT

Description

本発明は、複数のプロセッサを用いてネットワークインタフェイスデバイスからパケットを受信するパケット処理装置に関するものである。   The present invention relates to a packet processing apparatus that receives a packet from a network interface device using a plurality of processors.

近年、インターネットを利用した通信サービスが次々と登場し、アクセス網およびコア網におけるIPトラヒック量は年々増加している。このIPトラヒック量の増加に伴って、イーサネット(登録商標)規格(IEEE(Institute of Electrical and Electronics Engineers)802.3)に代表される有線ネットワークや、WiMAX(Worldwide Interoperability for Microwave Access)(IEEE802.16)に代表される無線ネットワークにおいて、伝送帯域の高速化の検討が進められている。特に有線通信では、100Mbpsや1Gbps以上の10Gbpsのイーサネット(登録商標)規格が策定され、既に10Gbpsに対応したネットワークインタフェイスデバイス(以下、NIDという)が製品化されている。   In recent years, communication services using the Internet have appeared one after another, and the amount of IP traffic in the access network and the core network has been increasing year by year. As the amount of IP traffic increases, a wired network represented by the Ethernet (registered trademark) standard (IEEE (Institute of Electrical and Electronics Engineers) 802.3) and WiMAX (Worldwide Interoperability for Microwave Access) (IEEE 802.16). In a wireless network represented by (1), studies are being made to increase the transmission bandwidth. In particular, for wired communication, a 10 Gbps Ethernet (registered trademark) standard of 100 Mbps or 1 Gbps or higher has been established, and a network interface device (hereinafter referred to as NID) corresponding to 10 Gbps has already been commercialized.

ところで、CPU(Central Processing Unit)もクロックアップ、マルチコアプロセッサ/マルチプロセッサによる高性能化が進んでいるが、OS(Operating System)を搭載したCPUおよびNIDで構成される通信装置では、CPUとNIDとの間のパケット送受信がボトルネックとなり、10Gbpsのような高速伝送帯域を収容することが困難である。   By the way, the CPU (Central Processing Unit) is also clocked up, and the performance of the multi-core processor / multiprocessor is increasing. However, in a communication device including a CPU and an NID equipped with an OS (Operating System), the CPU and the NID Packet transmission / reception between the two becomes a bottleneck and it is difficult to accommodate a high-speed transmission band such as 10 Gbps.

汎用OSを搭載したCPUおよびNIDで構成された従来の通信装置におけるパケット受信処理について説明する。この従来の通信装置におけるパケット受信処理では、まずOSが割り込みを通知するCPUを決定するとともに、NIDからDMA(Direct Memory Access)転送されてくるパケットを格納するDMA受信バッファをカーネル空間内に用意する。PHY(physical layer)デバイスから受信したパケットは、MAC(Media Access Control)ヘッダ、FCS(Frame Check Sequence)などによってフィルタリングされ、NID内のバッファからDMA受信バッファに転送される。その後、NIDは、パケットの到着をCPU(OS)側に通知するため、HW(Hard Ware)割込みをCPUに対して通知する。   A packet receiving process in a conventional communication apparatus configured with a CPU and NID equipped with a general-purpose OS will be described. In the packet reception process in this conventional communication apparatus, first, the OS determines a CPU to notify of an interrupt, and prepares a DMA reception buffer in the kernel space for storing a packet transferred from NID to DMA (Direct Memory Access). . A packet received from a PHY (physical layer) device is filtered by a MAC (Media Access Control) header, FCS (Frame Check Sequence) or the like, and transferred from the buffer in the NID to the DMA reception buffer. Thereafter, the NID notifies the CPU of a hardware ware (HW) interrupt in order to notify the CPU (OS) of the arrival of the packet.

CPU側では、NIDからのHW割込みに対応する割込みハンドラとネットワークドライバーを起動することによって、パケットの受信を確認し、その後上位プロトコルスタックにパケット処理の制御を移行させている(例えば、非特許文献1参照)。また、HW割込みを複数のCPUに振り分けることによって、パケットの受信処理を並列化する方法も提案されている(例えば、特許文献1参照)。   On the CPU side, the reception of a packet is confirmed by activating an interrupt handler and a network driver corresponding to the HW interrupt from the NID, and then control of packet processing is transferred to the upper protocol stack (for example, non-patent document) 1). A method of parallelizing packet reception processing by distributing HW interrupts to a plurality of CPUs has also been proposed (see, for example, Patent Document 1).

K. Salah, K. El-Badawi, "Performance evaluation of interrupt-driven kernels in gigabit networks," Global Telecommunications Conference, 2003. GLOBECOM '03. IEEE, pp. 3953 - 3957K. Salah, K. El-Badawi, "Performance evaluation of interrupt-driven kernels in gigabit networks," Global Telecommunications Conference, 2003. GLOBECOM '03. IEEE, pp. 3953-3957 特開平8−36498号公報(第3頁、図1)JP-A-8-36498 (page 3, FIG. 1)

しかしながら、上記前者の従来技術では、パケット受信処理のシーケンスにおいて、OSによる割込みハンドラ処理やネットワークドライバー処理時のスレッド生成や割当て、OSによるコンテキストスイッチの発生などによって、受信処理の遅延が発生しパケット受信処理のボトルネックになるという問題があった。   However, in the former prior art, in the sequence of packet reception processing, a delay in reception processing occurs due to thread generation and allocation during interrupt handler processing by the OS, network driver processing, and context switch generation by the OS. There was a problem of becoming a bottleneck of processing.

また、上記前者および後者の従来技術では、カーネル空間内にDMA受信バッファが1つしか用意されていないので、パケット受信の際、DMA転送を完了してCPUがHW割込みを受け取り、ネットワークドライバーによるパケットの受信処理が完了した後にしかNIDは次のDMA転送を開始することができない。このため、HW割込みを複数のCPUに振り分けるだけでは受信処理を並列化することができないという問題点があった。   In the former and latter prior arts, only one DMA receive buffer is prepared in the kernel space. Therefore, when receiving a packet, the DMA transfer is completed and the CPU receives an HW interrupt, and the packet by the network driver is received. The NID can start the next DMA transfer only after the reception process is completed. For this reason, there is a problem that it is impossible to parallelize reception processing only by distributing HW interrupts to a plurality of CPUs.

本発明は、上記に鑑みてなされたものであって、迅速にパケットの受信処理を行なうパケット処理装置を得ることを目的とする。   The present invention has been made in view of the above, and an object of the present invention is to obtain a packet processing apparatus that performs packet reception processing quickly.

上述した課題を解決し、目的を達成するために、本発明は、複数のプロセッサでネットワークインタフェイスデバイスを介して外部装置からのパケットを受信するパケット処理装置において、前記ネットワークインタフェイスデバイスからDMA転送されるパケットを受信するバッファをDMA受信バッファとしてカーネル空間内に複数設定するOSを記憶するOS記憶部と、前記ネットワークインタフェイスデバイスからDMA転送されるパケットを、前記OSからの指示に基づいた所定の前記DMA受信バッファで受信して上位レイヤ側へ転送するパケット受信処理部と、を備え、前記パケット受信処理部は、前記ネットワークインタフェイスデバイスからDMA転送のための割込み通知を受けた後であってかつ次のDMA転送が開始されるまでに、次に割込みを通知するプロセッサの設定を現在設定されているプロセッサとは異なる他のプロセッサに切替えておくとともに次にDMA転送されるパケットを受信するDMA受信バッファの設定を現在設定されているDMA受信バッファとは異なる他のDMA受信バッファに切替えておき、前記ネットワークインタフェイスデバイスが次のDMA転送を行なった際に、設定しておいた前記他のプロセッサに割込み通知を行なうとともに設定しておいた前記他のDMA受信バッファで前記パケットを受信することを特徴とする。   In order to solve the above-described problems and achieve the object, the present invention provides a packet processing apparatus in which a plurality of processors receive packets from an external apparatus via a network interface device, and performs DMA transfer from the network interface device. An OS storage unit that stores a plurality of OSs that are set in the kernel space as a DMA reception buffer, and a packet that is DMA-transferred from the network interface device is determined based on an instruction from the OS. A packet reception processing unit that receives the DMA reception buffer and transfers the packet to the upper layer side. The packet reception processing unit receives an interrupt notification for DMA transfer from the network interface device. Once the next DMA transfer is started Until then, the processor setting for the next interrupt notification is switched to another processor different from the currently set processor, and the DMA receive buffer setting for receiving the next DMA transfer packet is currently set. Switch to another DMA receive buffer different from the current DMA receive buffer, and when the network interface device performs the next DMA transfer, it notifies the other processor that has been set and notifies the interrupt. The packet is received by the other DMA reception buffer.

この発明によれば、DMA転送されるパケットを受信するDMA受信バッファをOSがカーネル空間内に複数設定するので、DMA転送されるパケットを複数のDMA受信バッファで並列して受信することができ、迅速にパケットの受信処理を行なうことが可能になるという効果を奏する。   According to the present invention, since the OS sets a plurality of DMA reception buffers for receiving DMA transferred packets in the kernel space, the DMA transferred packets can be received in parallel by the plurality of DMA reception buffers, There is an effect that packet reception processing can be performed quickly.

以下に、本発明に係るパケット処理装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。   Hereinafter, embodiments of a packet processing apparatus according to the present invention will be described in detail with reference to the drawings. Note that the present invention is not limited to the embodiments.

実施の形態1.
図1は、本発明の実施の形態1に係るパケット処理装置の構成を示すブロック図である。図1では、パケット処理装置(通信装置)101の構成とともに、パケット受信処理の流れを示している。
Embodiment 1 FIG.
FIG. 1 is a block diagram showing a configuration of a packet processing apparatus according to Embodiment 1 of the present invention. FIG. 1 shows the flow of packet reception processing together with the configuration of the packet processing device (communication device) 101.

パケット処理装置101は、IPパケットなどの通信パケットの転送や上位レイヤプロトコルの処理をOS上のアプリケーションで実行するネットワーク装置である。本実施の形態では、パケット処理装置101は、複数のDMA受信バッファを用いてパケットの受信処理を行なう。   The packet processing device 101 is a network device that executes transfer of communication packets such as IP packets and processing of higher layer protocols by an application on the OS. In the present embodiment, the packet processing apparatus 101 performs packet reception processing using a plurality of DMA reception buffers.

パケット処理装置101は、物理デバイス10、ネットワークインタフェイスデバイスであるNIC(Network Interface Card)20、割込み通知機構30、OS記憶部4、パケット受信処理部1を含んで構成されている。   The packet processing apparatus 101 includes a physical device 10, a network interface card (NIC) 20 that is a network interface device, an interrupt notification mechanism 30, an OS storage unit 4, and a packet reception processing unit 1.

物理デバイス10は、外部ネットワーク装置(図示せず)との間で物理層(PHYレイヤ)を介してIPパケット(フレーム)を送受信するデバイスである。物理デバイス10は、NIC−PHY間IF15によってNIC20と接続されている。   The physical device 10 is a device that transmits and receives IP packets (frames) to and from an external network device (not shown) via a physical layer (PHY layer). The physical device 10 is connected to the NIC 20 via the NIC-PHY IF 15.

NIC−PHY間IF15は、物理デバイス10とNICとの間の通信インタフェイスであり、例えばGMII(Giga bit Media Independent Interface)、XAUI(10 Gigabit Attachment Unit Interface)、XGMII(10 Gigabit Media Independent Interface)などである。   The NIC-PHY IF 15 is a communication interface between the physical device 10 and the NIC, such as GMII (Gigabit Media Independent Interface), XAUI (10 Gigabit Attachment Unit Interface), and XGMII (10 Gigabit Media Independent Interface). It is.

NIC20は、汎用ネットワークインタフェイスカードやASIC/FPGA/NPU(Application Specific Integrated Circuit/Field Programmable Gate Array/Network Processing Unit)などのパケット処理に特化したハードウェアネットワークインタフェイスデバイスである。NIC20は、物理デバイス10からフレームを受信するとともに、フレームのパケット処理として主にMACレイヤ処理(イーサネット(登録商標)処理)などを行なう。   The NIC 20 is a hardware network interface device specialized for packet processing, such as a general-purpose network interface card or ASIC / FPGA / NPU (Application Specific Integrated Circuit / Field Programmable Gate Array / Network Processing Unit). The NIC 20 receives a frame from the physical device 10 and performs mainly MAC layer processing (Ethernet (registered trademark) processing) as frame packet processing.

NIC20は、MACレイヤ処理部(MAC Block)22とフレームバッファ21を備えている。NIC20では、MACレイヤ処理部22が物理デバイス10からのIPパケットに対してMACレイヤプロトコルに関する処理を行なう。フレームバッファ21は、フレームデータを格納するバッファであり、MACレイヤ処理部22から送られてくるフレームを格納する。NIC20は、フレームバッファ21に格納したフレームをパケットとして受信部50にDMA転送する。   The NIC 20 includes a MAC layer processing unit (MAC Block) 22 and a frame buffer 21. In the NIC 20, the MAC layer processing unit 22 performs processing related to the MAC layer protocol on the IP packet from the physical device 10. The frame buffer 21 is a buffer for storing frame data, and stores a frame sent from the MAC layer processing unit 22. The NIC 20 DMA-transfers the frame stored in the frame buffer 21 to the receiving unit 50 as a packet.

割込み通知機構30は、NIC20および受信部50との間でデータ(HW割込みなど)のやりとりを行う。割込み通知機構30は、後述のOS40からの指示に基づいて、I/Oインタフェイスや種々のデバイス(NIC20)からのHW割込みを各プロセッサ(後述のCPUa1〜CPUan)に振り分ける処理を行なう。   The interrupt notification mechanism 30 exchanges data (such as an HW interrupt) between the NIC 20 and the receiving unit 50. The interrupt notification mechanism 30 performs processing for distributing HW interrupts from the I / O interface and various devices (NIC 20) to each processor (CPUa1 to CPUan described later) based on an instruction from the OS 40 described later.

OS記憶部4は、OS40を記憶している。OS40は、マルチコアプロセッサおよびマルチプロセッサ対応のOSであり、NIC20、割込み通知機構30パケット受信処理部1を制御する。本実施の形態のOS40は、同一メモリ空間上に複数のCPUを認識して使用できるよう構成されている。   The OS storage unit 4 stores the OS 40. The OS 40 is a multicore processor and an OS compatible with the multiprocessor, and controls the NIC 20 and the interrupt notification mechanism 30 packet reception processing unit 1. The OS 40 according to the present embodiment is configured to recognize and use a plurality of CPUs in the same memory space.

パケット受信処理部1は、受信部50、複数のキューc1〜cn、パケット集約処理部60を備えている。受信部50は、複数のプロセッサコア(プロセッサ)を有している。各プロセッサコアは、マルチコアプロセッサ/マルチプロセッサ対応のCPU、ネットワークドライバー、DMA受信バッファを含んで構成されている。なお、本実施の形態では、受信部50がマルチコアプロセッサである場合について説明する。   The packet reception processing unit 1 includes a reception unit 50, a plurality of queues c1 to cn, and a packet aggregation processing unit 60. The receiving unit 50 has a plurality of processor cores (processors). Each processor core includes a multi-core processor / multiprocessor-compatible CPU, a network driver, and a DMA receive buffer. In the present embodiment, the case where the receiving unit 50 is a multi-core processor will be described.

図1では、CPUa1、DMA受信バッファb1、ネットワークドライバーd1を有するプロセッサコア、CPUa2、DMA受信バッファb2、ネットワークドライバーd2を有するプロセッサコア、CPUan(nは自然数)、DMA受信バッファbn、ネットワークドライバーdnを有するプロセッサコアなどによって受信部50が構成されている場合を示している。   In FIG. 1, CPUa1, DMA receive buffer b1, processor core having network driver d1, CPUa2, DMA receive buffer b2, processor core having network driver d2, CPUan (n is a natural number), DMA receive buffer bn, network driver dn The case where the receiving part 50 is comprised by the processor core which has is shown.

CPUa1〜anは、割込み通知機構30からHW割込みを通知を受けた場合に割込みハンドラを生成する。各CPUa1〜CPUanに生成された割込みハンドラは、自らのCPUに対応するネットワークドライバーd1〜dnにNIC20からDMA転送されてくるパケットの受信処理を行なわせる。本実施の形態では、各CPUa1〜anが割込み通知機構30によって順番に指定され、割込み通知機構30から順番にHW割込み通知を受ける。   The CPUs a <b> 1 to an generate an interrupt handler when receiving a HW interrupt notification from the interrupt notification mechanism 30. The interrupt handler generated by each of the CPUa1 to CPUan causes the network driver d1 to dn corresponding to its own CPU to perform reception processing of a packet transferred from the NIC 20 by DMA. In the present embodiment, the CPUs a <b> 1 to an are designated in turn by the interrupt notification mechanism 30, and receive HW interrupt notifications from the interrupt notification mechanism 30 in order.

DMA受信バッファb1〜bnは、OS40で認識しているCPUメモリ空間内(受信部50)でパケット(フレームデータ)を格納するバッファである。NIC20のフレームバッファ21からDMA受信バッファb1〜bnへは、例えばCPUa1〜anが介在しないDMA転送によってパケットが転送される。   The DMA reception buffers b1 to bn are buffers for storing packets (frame data) in the CPU memory space (reception unit 50) recognized by the OS 40. Packets are transferred from the frame buffer 21 of the NIC 20 to the DMA reception buffers b1 to bn by, for example, DMA transfer without the CPUs a1 to an.

ネットワークドライバーd1〜dnは、割込み通知機構30からCPUa1〜CPUanの何れかへHW割込み通知がされた後に、受信パケットの整合性をチェックしてパケットデータを上位レイヤ側(パケット集約処理部60)に転送する。   After the HW interrupt notification is sent from the interrupt notification mechanism 30 to any of the CPUa1 to CPUan from the interrupt notification mechanism 30, the network drivers d1 to dn check the consistency of the received packet and send the packet data to the upper layer side (packet aggregation processing unit 60). Forward.

キューc1〜cnは、上位レイヤへの転送に使用されるパケットバッファキューであり、それぞれネットワークドライバーd1〜dnに接続されている。また、キューc1〜cnは、パケット集約処理部60に接続されている。   The queues c1 to cn are packet buffer queues used for transfer to an upper layer, and are connected to the network drivers d1 to dn, respectively. The queues c1 to cn are connected to the packet aggregation processing unit 60.

パケット集約処理部60は、パケット集約機構(Packet Aggregationモジュール)61、上位レイヤ処理部62、1〜複数のCPU63を有している。パケット集約機構61(制御モジュール)は、パケットが転送されるキューの順番に基づいて各キューc1〜cnに格納されているパケットを上位レイヤ処理部62に転送する。パケット集約機構61は、ネットワークドライバーd1から受信完了通知を受け取った後、パケットを上位レイヤ処理部62に転送する。上位レイヤ処理部62は、パケット集約機構61から受信したパケットの上位レイヤ処理を行なう。CPU63は、パケット集約機構61と上位レイヤ処理部62を制御する。   The packet aggregation processing unit 60 includes a packet aggregation mechanism (Packet Aggregation module) 61, an upper layer processing unit 62, and a plurality of CPUs 63. The packet aggregation mechanism 61 (control module) transfers the packets stored in the respective queues c1 to cn to the upper layer processing unit 62 based on the order of the queues to which the packets are transferred. After receiving the reception completion notification from the network driver d1, the packet aggregation mechanism 61 transfers the packet to the higher layer processing unit 62. The upper layer processing unit 62 performs upper layer processing on the packet received from the packet aggregation mechanism 61. The CPU 63 controls the packet aggregation mechanism 61 and the upper layer processing unit 62.

つぎに、パケット処理装置101の動作手順について説明する。図2は、パケット処理装置の動作手順を示すフローチャートである。パケット処理装置101のOS40は、予め受信処理のみを行わせるCPUとDMA受信バッファを複数個ずつ用意しておく。本実施の形態のOS40は、CPUa1〜anとDMA受信バッファb1〜bnを用意しておく。   Next, an operation procedure of the packet processing apparatus 101 will be described. FIG. 2 is a flowchart showing an operation procedure of the packet processing apparatus. The OS 40 of the packet processing apparatus 101 prepares a CPU for performing only reception processing and a plurality of DMA reception buffers in advance. The OS 40 of the present embodiment prepares CPUs a1 to an and DMA reception buffers b1 to bn.

OS40は、デバイス初期化時にNIC20に対し、DMA転送を行う受信バッファとしてカーネル空間内のDMA受信バッファb1を指定する。さらに、OS40は、割込み通知機構30に対し、NIC20からのHW割込みを通知するCPUとしてCPUa1を指定しておく(ステップS110)。   The OS 40 designates the DMA reception buffer b1 in the kernel space as a reception buffer for performing DMA transfer to the NIC 20 at the time of device initialization. Furthermore, the OS 40 designates the CPU a1 as the CPU that notifies the interrupt notification mechanism 30 of the HW interrupt from the NIC 20 (step S110).

外部ネットワーク装置からのIPパケットは、物理デバイス10で物理的な信号を受信・終端し、MACレイヤ処理を行なうNIC20へNIC−PHY間IF15(規定のインタフェイス)経由で送信する。NIC20は、物理デバイス10からのIPパケットを受信する(ステップS120)。   An IP packet from an external network device receives and terminates a physical signal at the physical device 10 and transmits it to the NIC 20 that performs MAC layer processing via the NIC-PHY IF 15 (specified interface). The NIC 20 receives the IP packet from the physical device 10 (step S120).

NIC20では、MACレイヤ処理部22にてMACヘッダを解析するとともに、フレーム検証と、送信先・送信元アドレスの検証を行い、装置内上位レイヤに送信すべきフレームを自身のバッファ(フレームバッファ21)に格納する(ステップS130)。   The NIC 20 analyzes the MAC header in the MAC layer processing unit 22, performs frame verification and verification of the transmission destination / source address, and stores a frame to be transmitted to the upper layer in the apparatus in its own buffer (frame buffer 21) (Step S130).

NIC20は、フレームバッファ21に格納したフレームを、デバイス初期化時に指定されたカーネル空間内のDMA受信バッファb1へDMA転送する(ステップS140)。なお、カーネル空間内のDMA受信バッファへの1回でのDMA転送のパケット(フレーム)数はNIC20の仕様・パラメータ設定に依存しており、複数のパケットをまとめてDMA転送してもよい。   The NIC 20 DMA-transfers the frame stored in the frame buffer 21 to the DMA reception buffer b1 in the kernel space designated at the time of device initialization (step S140). Note that the number of DMA transfer packets (frames) to the DMA reception buffer in the kernel space depends on the specifications and parameter settings of the NIC 20, and a plurality of packets may be DMA transferred together.

NIC20は、DMA転送を開始してから所定の時間を経過した後、またはDMA転送したパケットが所定のパケット数に達したら、割込み通知機構30にHW割込みを通知する(ステップS150)。割込み通知機構30は、NIC20からHW割込みの通知を受け取ると、OS40に指定されたCPUa1に対してHW割込みを通知する(ステップS160)。   The NIC 20 notifies the interrupt notification mechanism 30 of a HW interrupt after a predetermined time has elapsed from the start of DMA transfer or when the number of packets transferred by DMA reaches a predetermined number of packets (step S150). When receiving the notification of the HW interrupt from the NIC 20, the interrupt notification mechanism 30 notifies the CPU a1 designated by the OS 40 of the HW interrupt (step S160).

CPUa1は、HW割込みを受け取ると、割込みハンドラを生成する。このとき、OS40は、割込み通知機構30に対し、次回にHW割り込みを通知するCPUをCPUa2に変更させる。さらに、OS40は、NIC20に対し、次にDMA転送を行う受信バッファをカーネル空間内のb1からDMA受信バッファb2に変更させる(ステップS170)。   When the CPU a1 receives the HW interrupt, it generates an interrupt handler. At this time, the OS 40 causes the interrupt notification mechanism 30 to change the CPU that notifies the next HW interrupt to the CPU a2. Further, the OS 40 causes the NIC 20 to change the reception buffer for performing the next DMA transfer from b1 in the kernel space to the DMA reception buffer b2 (step S170).

換言すると、OS40は、NIC20からDMA転送のための割込み通知を受けた後であってかつ次のDMA転送が開始されるまでに、次に割込みを通知するCPUの設定を現在設定されているCPUa1とは異なる他のCPUa2に切替えておく。また、このとき、OS40は次にDMA転送されるパケットを受信するDMA受信バッファの設定を現在設定されているDMA受信バッファb1とは異なる他のDMA受信バッファb2に切替えておく。   In other words, the OS 40 receives the interrupt notification for the DMA transfer from the NIC 20 and before the next DMA transfer is started, the CPU a1 that is currently set as the CPU to notify the next interrupt is set. It is switched to another CPUa2 different from the above. At this time, the OS 40 switches the setting of the DMA reception buffer for receiving the next DMA-transferred packet to another DMA reception buffer b2 different from the currently set DMA reception buffer b1.

CPUa2への切替えとDMA受信バッファb2への切替えが完了した後、NIC20は、DMA受信バッファb2へのDMA転送を開始する。この後、CPUおよびDMA受信バッファは、HW割込みの通知後にラウンドロビンで変更されていく。すなわち、パケット処理装置101は、ステップS110〜170と同様の処理を繰り返す。具体的には、OS40は、NIC20からHW割込みを受け取るたびに、割込み通知機構30に対し、HW割り込みを通知するCPUをCPUa3、CPUa4、CPUanの順番で変更させていく。また、OS40は、NIC20に対し、DMA転送を行う受信バッファをDMA受信バッファb3、DMA受信バッファb4、DMA受信バッファbnの順番で変更させていく。   After the switching to the CPU a2 and the switching to the DMA reception buffer b2 are completed, the NIC 20 starts DMA transfer to the DMA reception buffer b2. Thereafter, the CPU and the DMA reception buffer are changed in round robin after notification of the HW interrupt. That is, the packet processing apparatus 101 repeats the same processing as steps S110 to 170. Specifically, every time the OS 40 receives a HW interrupt from the NIC 20, the OS 40 changes the CPU that notifies the HW interrupt to the interrupt notification mechanism 30 in the order of CPUa3, CPUa4, and CPUan. Further, the OS 40 causes the NIC 20 to change the reception buffer for performing DMA transfer in the order of the DMA reception buffer b3, the DMA reception buffer b4, and the DMA reception buffer bn.

換言すると、OS40は、割込み通知機構30に対し、HW割り込みを通知するCPUをCPUam(mは1〜nの自然数)〜a(m+1)の順番で変更させていく。また、OS40は、NIC20に対し、DMA転送を行う受信バッファをDMA受信バッファbm〜b(m+1)の順番で変更させていく。   In other words, the OS 40 causes the interrupt notification mechanism 30 to change the CPU that notifies the HW interrupt in the order of CPUam (m is a natural number from 1 to n) to a (m + 1). Also, the OS 40 causes the NIC 20 to change the reception buffer for performing DMA transfer in the order of the DMA reception buffers bm to b (m + 1).

受信部50では、割込みハンドラが、ネットワークドライバーd1に受信処理を行わせる。ネットワークドライバーd1は、DMA受信バッファb1からフレーム情報を取得する。そして、ネットワークドライバーd1は、DMA受信バッファb1のフレームを用いて、OS40の内部で管理可能な形式であるパケットデータ(ソケットバッファ)を生成し、上位レイヤ転送向けのキューc1にキューイングする。ネットワークドライバーd1は、受信処理(キューc1へのキューイング)が完了すると、パケット集約処理部60のパケット集約機構61に対して、受信処理が完了したこと(受信完了通知)を通知する。   In the reception unit 50, the interrupt handler causes the network driver d1 to perform reception processing. The network driver d1 acquires frame information from the DMA reception buffer b1. Then, the network driver d1 uses the frame of the DMA reception buffer b1 to generate packet data (socket buffer) in a format that can be managed inside the OS 40, and queues it in the queue c1 for upper layer transfer. When the reception process (queuing to the queue c1) is completed, the network driver d1 notifies the packet aggregation mechanism 61 of the packet aggregation processing unit 60 that the reception process has been completed (reception completion notification).

パケット集約機構61へは、予めOS40からパケットが転送されるキューの順番の情報を与えておく。パケット集約機構61は、ネットワークドライバーd1から受信完了通知を受け取ると、キューの順番の情報に基づいて各キューc1〜cnに格納されているパケットを上位レイヤ側(上位レイヤ処理部62)に転送する。このとき、パケット集約機構61は、CPU63(SW(Soft Ware)割込みハンドラ)によって制御されている。   Information on the order of queues to which packets are transferred from the OS 40 is given to the packet aggregation mechanism 61 in advance. Upon receiving the reception completion notification from the network driver d1, the packet aggregation mechanism 61 transfers the packets stored in the respective queues c1 to cn to the upper layer side (upper layer processing unit 62) based on the queue order information. . At this time, the packet aggregation mechanism 61 is controlled by a CPU 63 (SW (Soft Ware) interrupt handler).

本実施の形態では、CPUa1〜CPUanの順番でHW割り込みを通知し、DMA受信バッファb1〜bnの順番でDMA転送を行う受信バッファを指定しているので、OS40は、キューc1〜cnの順番でパケットを転送させるようパケット集約機構61に指示しておく。   In the present embodiment, the HW interrupt is notified in the order of CPUa1 to CPUan, and the reception buffer for performing DMA transfer is specified in the order of DMA reception buffers b1 to bn. Therefore, the OS 40 is in the order of queues c1 to cn. The packet aggregation mechanism 61 is instructed to transfer the packet.

パケット集約機構61は、キューc1に格納されているパケットを上位レイヤ(上位レイヤ処理部62)に転送する。このとき、パケット集約機構61は、キューc1に格納されたパケットを上位レイヤに転送するまでは、キューc2〜キューcnに格納されているパケットを上位レイヤ処理部62に転送しないこととする。   The packet aggregation mechanism 61 transfers the packet stored in the queue c1 to the upper layer (upper layer processing unit 62). At this time, the packet aggregation mechanism 61 does not transfer the packets stored in the queues c2 to cn to the upper layer processing unit 62 until the packets stored in the queue c1 are transferred to the upper layer.

NIC20では、DMA受信バッファb2へのDMA転送を完了した後、CPUa2にHW割り込みを通知する。そして、CPUa2は、HW割込みを受け取ると、割込みハンドラを生成してネットワークドライバーd2にパケットの受信処理を行わせる。   The NIC 20 notifies the CPU a2 of an HW interrupt after completing the DMA transfer to the DMA reception buffer b2. When the CPU a2 receives the HW interrupt, the CPU a2 generates an interrupt handler and causes the network driver d2 to perform packet reception processing.

換言すると、NIC20が次のDMA転送を行なった際に、次のDMA転送が開始されるまでに設定しておいたCPUa1とは異なる他のCPUa2に割込み通知を行なうとともに、次のDMA転送が開始されるまでに設定しておいたDMA受信バッファb1とは異なる他のDMA受信バッファb2でパケットを受信する。   In other words, when the NIC 20 performs the next DMA transfer, an interrupt notification is sent to another CPU a 2 different from the CPU a 1 set until the next DMA transfer is started, and the next DMA transfer starts. The packet is received by another DMA reception buffer b2 that is different from the DMA reception buffer b1 that has been set up until then.

この処理を繰り返すことによってCPUanにHW割り込みを通知すると、OS40は、次にHW割り込みを通知するCPUをCPUa1に変更するとともに、DMA受信バッファをDMA受信バッファa1に変更する。   When this process is repeated to notify the CPUan of the HW interrupt, the OS 40 changes the CPU that notifies the HW interrupt next to the CPUa1 and changes the DMA reception buffer to the DMA reception buffer a1.

図3は、CPUによるパケットの受信処理の手順を説明するための図である。図3では、各CPUa1〜anの割込み処理(割込みハンドラの生成など)、HW割り込みを通知するCPUとDMA受信バッファの切替処理、パケットの受信処理の処理タイミングを示している。   FIG. 3 is a diagram for explaining a procedure of packet reception processing by the CPU. FIG. 3 shows the processing timing of the interrupt processing (interrupt handler generation, etc.) of each of the CPUs a1 to ann, the CPU and DMA reception buffer switching processing that notifies the HW interrupt, and the packet reception processing.

NIC20から受信部50へ最初のDMA転送が行なわれると、割込み通知機構30は、OS40によって指定されたCPUa1に対してHW割込みを通知する。CPUa1は、HW割込みを受け取ると、割込みハンドラを生成する(割込み処理)。   When the first DMA transfer is performed from the NIC 20 to the receiving unit 50, the interrupt notification mechanism 30 notifies the CPU a1 designated by the OS 40 of the HW interrupt. When receiving the HW interrupt, the CPU a1 generates an interrupt handler (interrupt processing).

OS40は、次にHW割り込みを通知するCPUをCPUa1からCPUa2に変更するとともに、次にDMA転送を行う受信バッファをDMA受信バッファb1からDMA受信バッファb2に変更する(切替処理)。切替処理が完了すると、NIC20では、DMA受信バッファb2へのDMA転送を開始し、CPUa1の割込みハンドラでは、ネットワークドライバーd1にパケットの受信処理を行わせる。   The OS 40 changes the CPU that notifies the HW interrupt next from the CPU a1 to the CPU a2, and also changes the reception buffer that performs the next DMA transfer from the DMA reception buffer b1 to the DMA reception buffer b2 (switching process). When the switching process is completed, the NIC 20 starts DMA transfer to the DMA reception buffer b2, and the interrupt handler of the CPU a1 causes the network driver d1 to perform packet reception processing.

CPUa1の場合と同様に、NIC20から受信部50へ次のDMA転送が行なわれると、割込み通知機構30は、OS40によって指定されたCPUa2に対してHW割込みを通知する。CPUa2は、HW割込みを受け取ると、割込みハンドラを生成する(割込み処理)。   As in the case of the CPUa1, when the next DMA transfer is performed from the NIC 20 to the receiving unit 50, the interrupt notification mechanism 30 notifies the CPUa2 designated by the OS 40 of the HW interrupt. When receiving the HW interrupt, the CPU a2 generates an interrupt handler (interrupt processing).

OS40は、次にHW割り込みを通知するCPUをCPUa2からCPUa3に変更するとともに、次にDMA転送を行う受信バッファをDMA受信バッファb2からDMA受信バッファb3に変更する(切替処理)。切替処理が完了すると、NIC20では、DMA受信バッファb2へのDMA転送を開始し、CPUa2の割込みハンドラでは、ネットワークドライバーd2にパケットの受信処理を行わせる。   The OS 40 changes the CPU that notifies the HW interrupt next from the CPUa2 to the CPUa3, and changes the reception buffer for performing the next DMA transfer from the DMA reception buffer b2 to the DMA reception buffer b3 (switching process). When the switching processing is completed, the NIC 20 starts DMA transfer to the DMA reception buffer b2, and the interrupt handler of the CPU a2 causes the network driver d2 to perform packet reception processing.

CPUa1,a2の場合と同様に、NIC20から受信部50へ次のDMA転送が行なわれると、割込み通知機構30は、OS40によって指定されたCPUa3に対してHW割込みを通知する。CPUa3は、HW割込みを受け取ると、割込みハンドラを生成する(割込み処理)。   As in the case of the CPUs a1 and a2, when the next DMA transfer is performed from the NIC 20 to the receiving unit 50, the interrupt notification mechanism 30 notifies the CPU a3 designated by the OS 40 of the HW interrupt. When receiving the HW interrupt, the CPUa3 generates an interrupt handler (interrupt process).

OS40は、次にHW割り込みを通知するCPUをCPUa3から次のCPUに変更するとともに、次にDMA転送を行う受信バッファをDMA受信バッファb3から次のDMA受信バッファに変更する(切替処理)。切替処理が完了すると、NIC20では、DMA受信バッファb3へのDMA転送を開始し、CPUa3の割込みハンドラでは、ネットワークドライバーd3にパケットの受信処理を行わせる。   The OS 40 changes the CPU that notifies the HW interrupt next from the CPU a3 to the next CPU, and changes the reception buffer for performing the next DMA transfer from the DMA reception buffer b3 to the next DMA reception buffer (switching process). When the switching processing is completed, the NIC 20 starts DMA transfer to the DMA reception buffer b3, and the interrupt handler of the CPU a3 causes the network driver d3 to perform packet reception processing.

この後、CPUa1〜a3の場合と同様に、各CPUの割込み処理、HW割り込みを通知するCPUとDMA受信バッファの切替処理、各CPUによるパケットの受信処理を繰り返す。   Thereafter, as in the case of the CPUs a1 to a3, the CPU interrupt processing, the CPU and DMA reception buffer switching processing for notifying the HW interrupt, and the packet reception processing by each CPU are repeated.

以上の動作によって、割込みベースのパケット受信の際に発生するOS40による割込みハンドラ処理、タスクスケジューリング処理、ネットワークドライバー処理の時間を短縮できる。これにより、高速パケットの受信処理を実現できる。   With the above operation, it is possible to shorten the time for interrupt handler processing, task scheduling processing, and network driver processing performed by the OS 40 when receiving an interrupt-based packet. Thereby, high-speed packet reception processing can be realized.

なお、NIC20によるDMA転送の開始タイミングと、CPUの割込みハンドラによるパケットの受信開始タイミングは、同じタイミングである必要はなく、タイミングがずれていてもよい。   Note that the DMA transfer start timing by the NIC 20 and the packet reception start timing by the CPU interrupt handler need not be the same timing, and the timing may be shifted.

このように実施の形態1によれば、カーネル空間内に複数のDMA受信バッファb1〜bnを設けているので、先に割込みを受けたCPUが受信処理を行なっている間に、次のDMA転送と次のCPUへの割込み通知を行なうことができる。したがって、同種の割込みを複数のCPUで並列処理することが可能となるので、迅速にパケットの受信処理を行なうことが可能となる。   As described above, according to the first embodiment, since the plurality of DMA reception buffers b1 to bn are provided in the kernel space, the next DMA transfer is performed while the CPU that has received the interrupt is performing reception processing. And an interrupt notification to the next CPU. Therefore, since the same kind of interrupts can be processed in parallel by a plurality of CPUs, packet reception processing can be performed quickly.

また、パケット集約機構61がパケットが転送されるキューの順番に基づいて各キューc1〜cnに格納されているパケットを上位レイヤ処理部62に転送するので、上位レイヤ処理部62に転送するパケットの順序が逆転してしまうことを防ぐことが可能となる。   Further, since the packet aggregation mechanism 61 transfers the packets stored in the respective queues c1 to cn to the upper layer processing unit 62 based on the order of the queues to which the packets are transferred, It is possible to prevent the order from being reversed.

実施の形態2.
つぎに、図4を用いてこの発明の実施の形態2について説明する。実施の形態2では、パケットの受信処理を行っていないCPUのうち処理負荷の小さなCPUを選択してHW割り込みを通知する。
Embodiment 2. FIG.
Next, a second embodiment of the present invention will be described with reference to FIG. In the second embodiment, a CPU with a low processing load is selected from CPUs that are not performing packet reception processing, and a HW interrupt is notified.

図4は、本発明の実施の形態2に係るパケット処理装置の構成を示すブロック図である。図4では、パケット処理装置(通信装置)102の構成とともに、パケット受信処理の流れを示している。図4の各構成要素のうち図1に示す実施の形態1のパケット処理装置101と同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。   FIG. 4 is a block diagram showing the configuration of the packet processing apparatus according to Embodiment 2 of the present invention. FIG. 4 shows the flow of packet reception processing together with the configuration of the packet processing device (communication device) 102. Among the constituent elements in FIG. 4, constituent elements that achieve the same functions as those of the packet processing apparatus 101 of the first embodiment shown in FIG. 1 are assigned the same numbers, and redundant descriptions are omitted.

パケット処理装置102は、パケット処理装置101が有する機能に加えて、CPU負荷判別機構31を有している。CPU負荷判別機構31は、CPUa1〜anと割込み通知機構30に接続されており、各CPUa1〜anの負荷に関する情報(負荷情報)を管理する。この負荷情報には、各CPUa1〜anの負荷に関する情報に加えて、各CPUa1〜anが受信処理を行っているか否かの情報が含まれている。CPU負荷判別機構31は、割込み通知機構30がHW割り込みを通知するCPUを選択する際に、負荷情報を割込み通知機構30に送る。   The packet processing device 102 has a CPU load determination mechanism 31 in addition to the functions of the packet processing device 101. The CPU load determining mechanism 31 is connected to the CPUs a <b> 1 to an and the interrupt notification mechanism 30, and manages information (load information) regarding the loads of the CPUs a <b> 1 to an. This load information includes information on whether or not each of the CPUs a1 to an is performing reception processing in addition to the information about the loads of the CPUs a1 to an. The CPU load determination mechanism 31 sends load information to the interrupt notification mechanism 30 when the interrupt notification mechanism 30 selects a CPU that notifies the HW interrupt.

つぎに、パケット処理装置102の動作手順について説明する。割込み通知機構30がHW割込みを通知するCPUの変更処理以外は、図2で説明した実施の形態1のパケット処理装置101の処理手順と同様であるため、その説明は省略する。   Next, an operation procedure of the packet processing apparatus 102 will be described. Since the interrupt notification mechanism 30 is the same as the processing procedure of the packet processing apparatus 101 according to the first embodiment described in FIG. 2 except for the CPU changing process for notifying the HW interrupt, the description thereof is omitted.

パケット処理装置102がパケットの受信処理を行なう際に、CPU負荷判別機構31は、各CPUa1〜anの負荷情報を各CPUa1〜anから取得する。CPU負荷判別機構31は、取得した負荷情報を割込み通知機構30に送信する。   When the packet processing apparatus 102 performs packet reception processing, the CPU load determination mechanism 31 acquires load information of each CPU a <b> 1 to an from each CPU a <b> 1 to an. The CPU load determination mechanism 31 transmits the acquired load information to the interrupt notification mechanism 30.

割込み通知機構30は、HW割り込みを通知するCPUを選択する際に、受信処理を行っていないCPUであって、且つCPU負荷の低いCPU(例えば処理負荷が最も低いCPU)を選択する。具体的には、割込み通知機構30は、CPU負荷判別機構31が各CPUa1〜anから取得した負荷情報に基づいて、HW割り込みを通知するCPUを選択する。   When selecting the CPU that notifies the HW interrupt, the interrupt notification mechanism 30 selects a CPU that is not performing reception processing and that has a low CPU load (for example, a CPU with the lowest processing load). Specifically, the interrupt notification mechanism 30 selects a CPU that notifies the HW interrupt based on the load information acquired by the CPU load determination mechanism 31 from each of the CPUs a1 to an.

受信部50では、パケット集約機構61によって各キューc1〜cnからパケットを受信する際の受信順序の制御処理として、パケット集約機構61に特定のCPU63を割当てる。そして、パケット集約機構61は、各キューc1〜cnにポーリングを行なうとによって各キューc1〜cnの状態(パケットを格納しているか否か)を監視し、この監視結果(パケット受信に用いたキューの順番)に基づいてパケット受信の順序制御を行う。なお、本実施の形態では、パケット集約機構61が各キューc1〜cnへのポーリングを行なっているので、ネットワークドライバーd1は、キューc1〜cnへのキューイングが完了した際に、パケット集約機構61に対して受信完了通知を通知する必要がない。   The receiving unit 50 assigns a specific CPU 63 to the packet aggregation mechanism 61 as a reception order control process when the packet aggregation mechanism 61 receives packets from the queues c1 to cn. Then, the packet aggregation mechanism 61 monitors the state of each of the queues c1 to cn (whether or not a packet is stored) by polling each of the queues c1 to cn, and the monitoring result (the queue used for packet reception). The order of packet reception is controlled based on the order of In this embodiment, since the packet aggregation mechanism 61 polls each of the queues c1 to cn, the network driver d1 performs the packet aggregation mechanism 61 when queuing to the queues c1 to cn is completed. There is no need to notify the reception completion notification.

例えば、パケット受信に用いたキューの順番がキューc1、キューc3の順番である場合、パケット集約機構61は、キューc1からのパケットを上位レイヤ処理部62に転送した後、キューc3からのパケットを上位レイヤ処理部62に転送する。   For example, when the order of the queues used for packet reception is the order of the queue c1 and the queue c3, the packet aggregation mechanism 61 transfers the packet from the queue c1 to the upper layer processing unit 62 and then the packet from the queue c3. Transfer to upper layer processing unit 62.

なお、本実施の形態では、割込み通知機構30が、各CPUa1〜anの負荷情報に基づいてHW割り込みを通知するCPUを選択したが、他の方法によってHW割り込みを通知するCPUを選択してもよい。   In the present embodiment, the interrupt notification mechanism 30 selects the CPU that notifies the HW interrupt based on the load information of each of the CPUs a1 to an. However, even if the CPU that notifies the HW interrupt is selected by other methods. Good.

例えば、OS40からCPUの変更指示を受けずに割込み通知を行うCPUを変更できる割込み通知機構30と、OS40からDMA受信バッファの変更指示を受けずにDMA受信バッファを変更できるNIC20と、を用いる。   For example, an interrupt notification mechanism 30 that can change a CPU that performs an interrupt notification without receiving a CPU change instruction from the OS 40 and a NIC 20 that can change a DMA reception buffer without receiving a DMA reception buffer change instruction from the OS 40 are used.

この場合、OS40は、予めHW割込み通知を行ってもよいCPUa1〜anの情報を割込み通知機構30に与えておく。また、OS40はカーネル空間内に用意した複数のDMA受信バッファb1〜bnの情報をNIC20に与えておく。   In this case, the OS 40 provides the interrupt notification mechanism 30 with information on the CPUs a1 to an that may perform the HW interrupt notification in advance. In addition, the OS 40 provides the NIC 20 with information on a plurality of DMA reception buffers b1 to bn prepared in the kernel space.

NIC20は、DMA転送を開始してから所定の時間を経過した後、またはDMA転送したパケットが所定のパケット数に達したら、割込み通知機構30にHW割込みを通知する。   The NIC 20 notifies the interrupt notification mechanism 30 of a HW interrupt after a predetermined time has elapsed from the start of DMA transfer or when the number of packets transferred by DMA reaches a predetermined number of packets.

NIC20は、割込み通知機構30へHW割込みの通知を行う際に、DMA受信バッファb1〜bnの情報に基づいて、DMA転送を行うカーネル空間内のDMA受信バッファを他のDMA受信バッファ(次のDMA受信バッファ)に変更し、DMA転送を開始する。このとき、NIC20は、CPU負荷判別機構31が取得する、各CPUa1〜anの負荷情報などに基づいて、次のDMA受信バッファを変更してもよい。   When the NIC 20 notifies the interrupt notification mechanism 30 of the HW interrupt, based on the information of the DMA reception buffers b1 to bn, the NIC 20 changes the DMA reception buffer in the kernel space for performing the DMA transfer to another DMA reception buffer (next DMA reception buffer). Change to (Receive buffer) and start DMA transfer. At this time, the NIC 20 may change the next DMA reception buffer based on the load information of the CPUs a <b> 1 to an acquired by the CPU load determination mechanism 31.

NIC20は、割込み通知機構30へHW割込みの通知を行う際に、例えば変更後のDMA受信バッファ(次のDMA受信バッファ)に関する情報を、割込み通知機構30に通知しておく。   When the NIC 20 notifies the interrupt notification mechanism 30 of the HW interrupt, for example, the NIC 20 notifies the interrupt notification mechanism 30 of information on the DMA reception buffer after the change (next DMA reception buffer).

割込み通知機構30は、NIC20からHW割込みの通知を受け取ると、OS40から与えられたCPUa1〜anの情報、次のDMA受信バッファに関する情報に基づいて、次回にHW割り込みを通知するCPUを他のCPU(次のCPU)変更する。   When the interrupt notification mechanism 30 receives the notification of the HW interrupt from the NIC 20, the CPU that notifies the next time of the HW interrupt based on the information of the CPUa1 to an given from the OS 40 and the information related to the next DMA reception buffer is set as another CPU. (Next CPU) Change.

具体的には、割込み通知機構30は、次のDMA受信バッファに対応するCPUを、次回にHW割り込みを通知するCPUに設定する。例えば、次のDMA受信バッファがDMA受信バッファb3である場合、割込み通知機構30は、DMA受信バッファb3に対応するCPUa3を次回にHW割り込みを通知するCPUに設定する。   Specifically, the interrupt notification mechanism 30 sets the CPU corresponding to the next DMA reception buffer as the CPU that notifies the next HW interrupt. For example, when the next DMA reception buffer is the DMA reception buffer b3, the interrupt notification mechanism 30 sets the CPU a3 corresponding to the DMA reception buffer b3 as the CPU that notifies the HW interrupt next time.

なお、割込み通知機構30が次回にHW割り込みを通知するCPUを決定するとともに、決定したCPUの情報をNIC20に送信してもよい。この場合、NIC20は、割込み通知機構30によって決定されたCPUの情報に対応するDMA受信バッファを次のDMA受信バッファに設定する。   Note that the interrupt notification mechanism 30 may determine the CPU to notify the HW interrupt next time and transmit the determined CPU information to the NIC 20. In this case, the NIC 20 sets the DMA reception buffer corresponding to the CPU information determined by the interrupt notification mechanism 30 as the next DMA reception buffer.

また、本実施の形態では、各DMA受信バッファb1〜bnに順番にDMA転送していく場合について説明したが、他の手順によってDMA受信バッファb1〜bnにDMA転送してもよい。   In this embodiment, the case where DMA transfer is sequentially performed to each of the DMA reception buffers b1 to bn has been described. However, the DMA transfer may be performed to the DMA reception buffers b1 to bn by other procedures.

例えば、HW割込みを受け取った際に複数のCPUに同じHW割込みを一斉に通知する割り込み通知機構30と、OS40からDMA受信バッファの変更指示を受けずにDMA受信バッファを変更できるNIC20と、を用いる。   For example, an interrupt notification mechanism 30 that simultaneously notifies a plurality of CPUs of the same HW interrupt when an HW interrupt is received, and an NIC 20 that can change the DMA reception buffer without receiving an instruction to change the DMA reception buffer from the OS 40 are used. .

この場合、NIC20は、OS40から用意された複数のDMA受信バッファに対して、所定のパケット数(例えば1パケット)ずつラウンドロビンでDMA転送を行う。具体的には、NIC20は、DMA転送を開始してから所定の時間を経過した後、またはDMA転送したパケットが所定のパケット数(例えば全てのパケット)に達したら、割込み通知機構30にHW割込みを通知する。そして、割り込み通知機構30は、HW割込みを受け取ると、DMA受信バッファb1〜bnに対応する各CPUa1〜anに対して一斉に割り込み通知を行う。   In this case, the NIC 20 performs DMA transfer in a round robin manner for each of a plurality of DMA reception buffers prepared from the OS 40 by a predetermined number of packets (for example, one packet). Specifically, the NIC 20 sends an HW interrupt to the interrupt notification mechanism 30 after a predetermined time has elapsed from the start of DMA transfer or when the number of DMA transferred packets reaches a predetermined number of packets (for example, all packets). To be notified. Then, when receiving the HW interrupt, the interrupt notification mechanism 30 notifies the CPU a1 to an corresponding to the DMA reception buffers b1 to bn all at once.

パケット集約機構61では、各ネットワークドライバーd1〜dnから受信完了通知を受け取ると、OS40から与えられたキューの順番の情報に基づいて各キューc1〜cnに格納されている先頭のパケットを上位レイヤ側(上位レイヤ処理部62)にラウンドロビンでパケット転送していく。   When the packet aggregation mechanism 61 receives a reception completion notification from each of the network drivers d1 to dn, based on the queue order information given from the OS 40, the top packet stored in each of the queues c1 to cn The packet is transferred to the (upper layer processing unit 62) by round robin.

このように実施の形態2によれば、プロセッサCPUのうちパケットの受信処理を行っていないCPUであってかつ処理負荷が低いCPUを選択してHW割込みの通知を行なうので、CPUへの負荷分散を行なうことが可能となり、迅速にパケット受信を行なうことが可能となる。   As described above, according to the second embodiment, a CPU that does not receive a packet among processor CPUs and that has a low processing load is selected and HW interrupt notification is made. It becomes possible to perform packet reception quickly.

また、NIC20は、予めOS40から与えられた情報(カーネル空間内に用意したDMA受信バッファb1〜bnの情報)に基づいて、次にパケットを受信させるDMA受信バッファを切替えるので、HW割込み通知を行なうたびにOS40からNIC20へDMA受信バッファを変更させる指示を送る必要がなくなる。したがって、OS40の処理負荷が低減される。   Further, the NIC 20 switches the DMA reception buffer for receiving a packet next based on information given in advance from the OS 40 (information on the DMA reception buffers b1 to bn prepared in the kernel space). It is not necessary to send an instruction to change the DMA reception buffer from the OS 40 to the NIC 20 each time. Therefore, the processing load on the OS 40 is reduced.

また、割込み通知機構30は、予めOS40から与えられた情報(HW割込み通知を行ってもよいCPUa1〜anの情報)に基づいて、次に割込み通知を行なうCPUを切替えるので、HW割込み通知を行なうたびにOS40からNIC20へCPUを変更させる指示を送る必要がなくなる。したがって、OS40の処理負荷が低減される。   Further, since the interrupt notification mechanism 30 switches the CPU that performs the next interrupt notification based on information given in advance from the OS 40 (information of the CPUs a1 to an that may perform the HW interrupt notification), the interrupt notification mechanism 30 performs the HW interrupt notification. It is not necessary to send an instruction to change the CPU from the OS 40 to the NIC 20 each time. Therefore, the processing load on the OS 40 is reduced.

また、NIC20は、各DMA受信バッファb1〜bnに対して所定数のパケットずつラウンドロビンでDMA転送し、DMA転送が完了した後に各CPUa1〜anに割込み通知を行なうので、各DMA受信バッファb1〜bnと各CPUa1〜anの制御が容易になる。   Further, since the NIC 20 performs DMA transfer of a predetermined number of packets to each of the DMA reception buffers b1 to bn in a round-robin manner, and notifies each CPU a1 to an interrupt after the DMA transfer is completed, each of the DMA reception buffers b1 to b1. Control of bn and each of the CPUs a1 to an is facilitated.

また、パケット集約機構61は、各キューc1〜cnにポーリングを行なうとによって各キューc1〜cnを監視し、この監視結果に基づいてパケット受信の順序制御するので、予めOS40からパケット集約機構61にパケットが転送されるキューの順番の情報を与えておく必要がない。したがって、OS40の負荷を低減することが可能となる。   The packet aggregation mechanism 61 monitors each queue c1 to cn by polling each queue c1 to cn, and controls the order of packet reception based on the monitoring result. There is no need to provide information on the order of queues to which packets are transferred. Therefore, the load on the OS 40 can be reduced.

以上のように、本発明に係るパケット処理装置は、ネットワークインタフェイスデバイスからのパケット受信に適している。   As described above, the packet processing apparatus according to the present invention is suitable for receiving packets from the network interface device.

実施の形態1に係るパケット処理装置の構成を示すブロック図である。1 is a block diagram illustrating a configuration of a packet processing device according to a first embodiment. パケット処理装置の動作手順を示すフローチャートである。It is a flowchart which shows the operation | movement procedure of a packet processing apparatus. CPUによるパケットの受信処理の手順を説明するための図である。It is a figure for demonstrating the procedure of the reception process of the packet by CPU. 実施の形態2に係るパケット処理装置の構成を示すブロック図である。FIG. 6 is a block diagram illustrating a configuration of a packet processing device according to a second embodiment.

符号の説明Explanation of symbols

1 パケット受信処理部
4 OS記憶部
10 物理デバイス
15 NIC−PHY間IF
20 NIC
21 フレームバッファ
22 MACレイヤ処理部
30 割込み通知機構
31 負荷判別機構
40 OS
50 受信部
60 パケット集約処理部
61 パケット集約機構
62 上位レイヤ処理部
101,102 パケット処理装置
a1〜an,63 CPU
b1〜bn DMA受信バッファ
c1〜cn キュー
d1〜dn ネットワークドライバ
1 Packet reception processing unit 4 OS storage unit 10 Physical device 15 NIC-PHY interface
20 NIC
21 Frame buffer 22 MAC layer processing unit 30 Interrupt notification mechanism 31 Load determination mechanism 40 OS
DESCRIPTION OF SYMBOLS 50 Receiving part 60 Packet aggregation process part 61 Packet aggregation mechanism 62 Upper layer process part 101,102 Packet processing apparatus a1-an, 63 CPU
b1 to bn DMA reception buffer c1 to cn queue d1 to dn network driver

Claims (6)

複数のプロセッサでネットワークインタフェイスデバイスを介して外部装置からのパケットを受信するパケット処理装置において、
前記ネットワークインタフェイスデバイスからDMA転送されるパケットを受信するバッファをDMA受信バッファとしてカーネル空間内に複数設定するOSを記憶するOS記憶部と、
前記ネットワークインタフェイスデバイスからDMA転送されるパケットを、前記OSからの指示に基づいた所定の前記DMA受信バッファで受信して上位レイヤ側へ転送するパケット受信処理部と、
を備え、
前記パケット受信処理部は、
前記ネットワークインタフェイスデバイスからDMA転送のための割込み通知を受けた後であってかつ次のDMA転送が開始されるまでに、次に割込みを通知するプロセッサの設定を現在設定されているプロセッサとは異なる他のプロセッサに切替えておくとともに次にDMA転送されるパケットを受信するDMA受信バッファの設定を現在設定されているDMA受信バッファとは異なる他のDMA受信バッファに切替えておき、前記ネットワークインタフェイスデバイスが次のDMA転送を行なった際に、設定しておいた前記他のプロセッサに割込み通知を行なうとともに設定しておいた前記他のDMA受信バッファで前記パケットを受信することを特徴とするパケット処理装置。
In a packet processing apparatus that receives packets from an external device via a network interface device by a plurality of processors,
An OS storage unit for storing an OS that sets a plurality of buffers in a kernel space as a DMA reception buffer that receives a DMA transfer packet from the network interface device;
A packet reception processing unit that receives a DMA transfer packet from the network interface device by a predetermined DMA reception buffer based on an instruction from the OS and transfers the packet to an upper layer side;
With
The packet reception processing unit
What is the currently set processor after receiving an interrupt notification for DMA transfer from the network interface device and before the next DMA transfer is started? The network interface is switched to another different processor and the DMA reception buffer for receiving the next DMA transferred packet is switched to another DMA reception buffer different from the currently set DMA reception buffer. When the device performs the next DMA transfer, an interrupt is notified to the other processor that has been set and the packet is received by the other DMA reception buffer that has been set Processing equipment.
前記パケット受信処理部は、前記DMA受信バッファで受信したパケットが転送されるキューの順番で、前記キューから前記パケットを取得して上位レイヤ側へ転送する制御モジュールを有することを特徴とする請求項1に記載のパケット処理装置。   The packet reception processing unit includes a control module that acquires the packets from the queue and transfers them to an upper layer side in a queue order to which packets received by the DMA reception buffer are transferred. 2. The packet processing device according to 1. 前記パケット受信処理部は、次に割込みを通知するプロセッサの設定を現在設定されているプロセッサとは異なる他のプロセッサに切替えておく際に、前記プロセッサのうちパケットの受信処理を行っていないプロセッサであってかつ処理負荷が最も低いプロセッサを選択して前記他のプロセッサに設定することを特徴とする請求項1または2に記載のパケット処理装置。   The packet reception processing unit is a processor that does not perform packet reception processing among the processors when the setting of the processor that notifies the next interrupt is switched to another processor different from the currently set processor. 3. The packet processing apparatus according to claim 1, wherein a processor having the lowest processing load is selected and set to the other processor. 前記ネットワークインタフェイスデバイスからDMA転送のための割込み通知を受けるとともに、前記OSからの指示に基づいた所定のプロセッサに前記ネットワークインタフェイスデバイスからの割込みを通知する割込み通知機構をさらに備え、
前記ネットワークインタフェイスデバイスは、予め前記OSから与えられた情報に基づいて次に割込みを通知するプロセッサの設定を切替え、前記割込み通知機構は、予め前記OSから与えられた情報に基づいて次にDMA転送されるパケットを受信するDMA受信バッファの設定を切替えることを特徴とする請求項1〜3のいずれか1つに記載のパケット処理装置。
An interrupt notification mechanism for receiving an interrupt notification for DMA transfer from the network interface device and notifying a predetermined processor based on an instruction from the OS of an interrupt from the network interface device;
The network interface device switches the setting of the processor to be notified of the next interrupt based on information previously given from the OS, and the interrupt notification mechanism is next configured to perform DMA based on the information previously given from the OS. The packet processing apparatus according to claim 1, wherein the setting of a DMA reception buffer that receives a packet to be transferred is switched.
前記ネットワークインタフェイスデバイスは、前記各DMA受信バッファに対して所定数のパケットずつラウンドロビンでDMA転送し、DMA転送が完了した後に前記各プロセッサに割込み通知を行なうことを特徴とする請求項1または2に記載のパケット処理装置。   2. The network interface device according to claim 1, wherein a predetermined number of packets are DMA-transferred in a round robin manner to each of the DMA reception buffers, and an interrupt is notified to each of the processors after the DMA transfer is completed. 3. The packet processing device according to 2. 前記制御モジュールは、前記キューにポーリングを行なうとによって前記各キューを監視し、この監視結果に基づいてパケット受信の順序制御を行うことを特徴とする請求項2〜4のいずれか1つに記載のパケット処理装置。   5. The control module according to claim 2, wherein the control module monitors each of the queues by polling the queue, and performs packet reception order control based on the monitoring result. 6. Packet processing equipment.
JP2007101831A 2007-04-09 2007-04-09 Packet processor Pending JP2008257642A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007101831A JP2008257642A (en) 2007-04-09 2007-04-09 Packet processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007101831A JP2008257642A (en) 2007-04-09 2007-04-09 Packet processor

Publications (1)

Publication Number Publication Date
JP2008257642A true JP2008257642A (en) 2008-10-23

Family

ID=39981121

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007101831A Pending JP2008257642A (en) 2007-04-09 2007-04-09 Packet processor

Country Status (1)

Country Link
JP (1) JP2008257642A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013179429A (en) * 2012-02-28 2013-09-09 Nippon Telegr & Teleph Corp <Ntt> Parallel packet processing method and device for switching distribution destination
KR20160031494A (en) * 2013-06-20 2016-03-22 마이크론 테크놀로지, 인코포레이티드 Encapsulation Enabled PCIE Virtualisation

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013179429A (en) * 2012-02-28 2013-09-09 Nippon Telegr & Teleph Corp <Ntt> Parallel packet processing method and device for switching distribution destination
KR20160031494A (en) * 2013-06-20 2016-03-22 마이크론 테크놀로지, 인코포레이티드 Encapsulation Enabled PCIE Virtualisation
KR102144330B1 (en) 2013-06-20 2020-08-13 마이크론 테크놀로지, 인코포레이티드 Encapsulation Enabled PCIE Virtualisation

Similar Documents

Publication Publication Date Title
US10210113B2 (en) SAN fabric online path diagnostics
US10129151B2 (en) Traffic management implementation method and apparatus, and network device
JP6881861B2 (en) Packet processing method and equipment
US20060203730A1 (en) Method and system for reducing end station latency in response to network congestion
US20190253364A1 (en) Method For Determining TCP Congestion Window, And Apparatus
CN103281257B (en) A kind of protocol message processing method and equipment
JP2008129767A (en) Network apparatus
JP2013534103A (en) Interrupt at least partial frame transmission
EP3353959B1 (en) Active link during lan interface reset
WO2015172668A1 (en) Method and device for determining congestion window in network
US20200252337A1 (en) Data transmission method, device, and computer storage medium
CN116868553A (en) Dynamic network receiver driven data scheduling on a data center network for managing endpoint resources and congestion relief
JP5065269B2 (en) Local area network management
CN111431812B (en) Message forwarding control method and device
JP2008257642A (en) Packet processor
JP2008299439A (en) Packet processing device
JP2007088709A (en) Packet communication apparatus and processing method thereof
US8004991B1 (en) Method and system for processing network information
US8225004B1 (en) Method and system for processing network and storage data
US7433986B2 (en) Minimizing ISR latency and overhead
JP2009118106A (en) Network apparatus
KR20050053987A (en) Apparatus and method for processing multiple data in each layer
WO2024174085A1 (en) Data transmission method and related device thereof
TWI429230B (en) Method of porcessing information system
WO2023174081A1 (en) Queue scheduling method and apparatus