JP2008257642A - Packet processor - Google Patents
Packet processor Download PDFInfo
- 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
Links
Images
Landscapes
- Information Transfer Systems (AREA)
Abstract
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).
しかしながら、上記前者の従来技術では、パケット受信処理のシーケンスにおいて、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
パケット処理装置101は、物理デバイス10、ネットワークインタフェイスデバイスであるNIC(Network Interface Card)20、割込み通知機構30、OS記憶部4、パケット受信処理部1を含んで構成されている。
The
物理デバイス10は、外部ネットワーク装置(図示せず)との間で物理層(PHYレイヤ)を介してIPパケット(フレーム)を送受信するデバイスである。物理デバイス10は、NIC−PHY間IF15によってNIC20と接続されている。
The
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
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
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
割込み通知機構30は、NIC20および受信部50との間でデータ(HW割込みなど)のやりとりを行う。割込み通知機構30は、後述のOS40からの指示に基づいて、I/Oインタフェイスや種々のデバイス(NIC20)からのHW割込みを各プロセッサ(後述のCPUa1〜CPUan)に振り分ける処理を行なう。
The
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
パケット受信処理部1は、受信部50、複数のキューc1〜cn、パケット集約処理部60を備えている。受信部50は、複数のプロセッサコア(プロセッサ)を有している。各プロセッサコアは、マルチコアプロセッサ/マルチプロセッサ対応のCPU、ネットワークドライバー、DMA受信バッファを含んで構成されている。なお、本実施の形態では、受信部50がマルチコアプロセッサである場合について説明する。
The packet reception processing unit 1 includes a
図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
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
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
ネットワークドライバーd1〜dnは、割込み通知機構30からCPUa1〜CPUanの何れかへHW割込み通知がされた後に、受信パケットの整合性をチェックしてパケットデータを上位レイヤ側(パケット集約処理部60)に転送する。
After the HW interrupt notification is sent from the
キュー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
パケット集約処理部60は、パケット集約機構(Packet Aggregationモジュール)61、上位レイヤ処理部62、1〜複数のCPU63を有している。パケット集約機構61(制御モジュール)は、パケットが転送されるキューの順番に基づいて各キューc1〜cnに格納されているパケットを上位レイヤ処理部62に転送する。パケット集約機構61は、ネットワークドライバーd1から受信完了通知を受け取った後、パケットを上位レイヤ処理部62に転送する。上位レイヤ処理部62は、パケット集約機構61から受信したパケットの上位レイヤ処理を行なう。CPU63は、パケット集約機構61と上位レイヤ処理部62を制御する。
The packet
つぎに、パケット処理装置101の動作手順について説明する。図2は、パケット処理装置の動作手順を示すフローチャートである。パケット処理装置101のOS40は、予め受信処理のみを行わせるCPUとDMA受信バッファを複数個ずつ用意しておく。本実施の形態のOS40は、CPUa1〜anとDMA受信バッファb1〜bnを用意しておく。
Next, an operation procedure of the
OS40は、デバイス初期化時にNIC20に対し、DMA転送を行う受信バッファとしてカーネル空間内のDMA受信バッファb1を指定する。さらに、OS40は、割込み通知機構30に対し、NIC20からのHW割込みを通知するCPUとしてCPUa1を指定しておく(ステップS110)。
The
外部ネットワーク装置からの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
NIC20では、MACレイヤ処理部22にてMACヘッダを解析するとともに、フレーム検証と、送信先・送信元アドレスの検証を行い、装置内上位レイヤに送信すべきフレームを自身のバッファ(フレームバッファ21)に格納する(ステップS130)。
The NIC 20 analyzes the MAC header in the MAC
NIC20は、フレームバッファ21に格納したフレームを、デバイス初期化時に指定されたカーネル空間内のDMA受信バッファb1へDMA転送する(ステップS140)。なお、カーネル空間内のDMA受信バッファへの1回でのDMA転送のパケット(フレーム)数はNIC20の仕様・パラメータ設定に依存しており、複数のパケットをまとめてDMA転送してもよい。
The NIC 20 DMA-transfers the frame stored in the
NIC20は、DMA転送を開始してから所定の時間を経過した後、またはDMA転送したパケットが所定のパケット数に達したら、割込み通知機構30にHW割込みを通知する(ステップS150)。割込み通知機構30は、NIC20からHW割込みの通知を受け取ると、OS40に指定されたCPUa1に対してHW割込みを通知する(ステップS160)。
The NIC 20 notifies the interrupt
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
換言すると、OS40は、NIC20からDMA転送のための割込み通知を受けた後であってかつ次のDMA転送が開始されるまでに、次に割込みを通知するCPUの設定を現在設定されているCPUa1とは異なる他のCPUa2に切替えておく。また、このとき、OS40は次にDMA転送されるパケットを受信するDMA受信バッファの設定を現在設定されているDMA受信バッファb1とは異なる他のDMA受信バッファb2に切替えておく。
In other words, the
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
換言すると、OS40は、割込み通知機構30に対し、HW割り込みを通知するCPUをCPUam(mは1〜nの自然数)〜a(m+1)の順番で変更させていく。また、OS40は、NIC20に対し、DMA転送を行う受信バッファをDMA受信バッファbm〜b(m+1)の順番で変更させていく。
In other words, the
受信部50では、割込みハンドラが、ネットワークドライバーd1に受信処理を行わせる。ネットワークドライバーd1は、DMA受信バッファb1からフレーム情報を取得する。そして、ネットワークドライバーd1は、DMA受信バッファb1のフレームを用いて、OS40の内部で管理可能な形式であるパケットデータ(ソケットバッファ)を生成し、上位レイヤ転送向けのキューc1にキューイングする。ネットワークドライバーd1は、受信処理(キューc1へのキューイング)が完了すると、パケット集約処理部60のパケット集約機構61に対して、受信処理が完了したこと(受信完了通知)を通知する。
In the
パケット集約機構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
本実施の形態では、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
パケット集約機構61は、キューc1に格納されているパケットを上位レイヤ(上位レイヤ処理部62)に転送する。このとき、パケット集約機構61は、キューc1に格納されたパケットを上位レイヤに転送するまでは、キューc2〜キューcnに格納されているパケットを上位レイヤ処理部62に転送しないこととする。
The
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
図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
OS40は、次にHW割り込みを通知するCPUをCPUa1からCPUa2に変更するとともに、次にDMA転送を行う受信バッファをDMA受信バッファb1からDMA受信バッファb2に変更する(切替処理)。切替処理が完了すると、NIC20では、DMA受信バッファb2へのDMA転送を開始し、CPUa1の割込みハンドラでは、ネットワークドライバーd1にパケットの受信処理を行わせる。
The
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
OS40は、次にHW割り込みを通知するCPUをCPUa2からCPUa3に変更するとともに、次にDMA転送を行う受信バッファをDMA受信バッファb2からDMA受信バッファb3に変更する(切替処理)。切替処理が完了すると、NIC20では、DMA受信バッファb2へのDMA転送を開始し、CPUa2の割込みハンドラでは、ネットワークドライバーd2にパケットの受信処理を行わせる。
The
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
OS40は、次にHW割り込みを通知するCPUをCPUa3から次のCPUに変更するとともに、次にDMA転送を行う受信バッファをDMA受信バッファb3から次のDMA受信バッファに変更する(切替処理)。切替処理が完了すると、NIC20では、DMA受信バッファb3へのDMA転送を開始し、CPUa3の割込みハンドラでは、ネットワークドライバーd3にパケットの受信処理を行わせる。
The
この後、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
なお、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
実施の形態2.
つぎに、図4を用いてこの発明の実施の形態2について説明する。実施の形態2では、パケットの受信処理を行っていないCPUのうち処理負荷の小さなCPUを選択してHW割り込みを通知する。
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
パケット処理装置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
つぎに、パケット処理装置102の動作手順について説明する。割込み通知機構30がHW割込みを通知するCPUの変更処理以外は、図2で説明した実施の形態1のパケット処理装置101の処理手順と同様であるため、その説明は省略する。
Next, an operation procedure of the packet processing apparatus 102 will be described. Since the interrupt
パケット処理装置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
割込み通知機構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
受信部50では、パケット集約機構61によって各キューc1〜cnからパケットを受信する際の受信順序の制御処理として、パケット集約機構61に特定のCPU63を割当てる。そして、パケット集約機構61は、各キューc1〜cnにポーリングを行なうとによって各キューc1〜cnの状態(パケットを格納しているか否か)を監視し、この監視結果(パケット受信に用いたキューの順番)に基づいてパケット受信の順序制御を行う。なお、本実施の形態では、パケット集約機構61が各キューc1〜cnへのポーリングを行なっているので、ネットワークドライバーd1は、キューc1〜cnへのキューイングが完了した際に、パケット集約機構61に対して受信完了通知を通知する必要がない。
The receiving
例えば、パケット受信に用いたキューの順番がキュー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
なお、本実施の形態では、割込み通知機構30が、各CPUa1〜anの負荷情報に基づいてHW割り込みを通知するCPUを選択したが、他の方法によってHW割り込みを通知するCPUを選択してもよい。
In the present embodiment, the interrupt
例えば、OS40からCPUの変更指示を受けずに割込み通知を行うCPUを変更できる割込み通知機構30と、OS40からDMA受信バッファの変更指示を受けずにDMA受信バッファを変更できるNIC20と、を用いる。
For example, an interrupt
この場合、OS40は、予めHW割込み通知を行ってもよいCPUa1〜anの情報を割込み通知機構30に与えておく。また、OS40はカーネル空間内に用意した複数のDMA受信バッファb1〜bnの情報をNIC20に与えておく。
In this case, the
NIC20は、DMA転送を開始してから所定の時間を経過した後、またはDMA転送したパケットが所定のパケット数に達したら、割込み通知機構30にHW割込みを通知する。
The NIC 20 notifies the interrupt
NIC20は、割込み通知機構30へHW割込みの通知を行う際に、DMA受信バッファb1〜bnの情報に基づいて、DMA転送を行うカーネル空間内のDMA受信バッファを他のDMA受信バッファ(次のDMA受信バッファ)に変更し、DMA転送を開始する。このとき、NIC20は、CPU負荷判別機構31が取得する、各CPUa1〜anの負荷情報などに基づいて、次のDMA受信バッファを変更してもよい。
When the NIC 20 notifies the interrupt
NIC20は、割込み通知機構30へHW割込みの通知を行う際に、例えば変更後のDMA受信バッファ(次のDMA受信バッファ)に関する情報を、割込み通知機構30に通知しておく。
When the NIC 20 notifies the interrupt
割込み通知機構30は、NIC20からHW割込みの通知を受け取ると、OS40から与えられたCPUa1〜anの情報、次のDMA受信バッファに関する情報に基づいて、次回にHW割り込みを通知するCPUを他のCPU(次のCPU)変更する。
When the interrupt
具体的には、割込み通知機構30は、次のDMA受信バッファに対応するCPUを、次回にHW割り込みを通知するCPUに設定する。例えば、次のDMA受信バッファがDMA受信バッファb3である場合、割込み通知機構30は、DMA受信バッファb3に対応するCPUa3を次回にHW割り込みを通知するCPUに設定する。
Specifically, the interrupt
なお、割込み通知機構30が次回にHW割り込みを通知するCPUを決定するとともに、決定したCPUの情報をNIC20に送信してもよい。この場合、NIC20は、割込み通知機構30によって決定されたCPUの情報に対応するDMA受信バッファを次のDMA受信バッファに設定する。
Note that the interrupt
また、本実施の形態では、各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
この場合、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
パケット集約機構61では、各ネットワークドライバーd1〜dnから受信完了通知を受け取ると、OS40から与えられたキューの順番の情報に基づいて各キューc1〜cnに格納されている先頭のパケットを上位レイヤ側(上位レイヤ処理部62)にラウンドロビンでパケット転送していく。
When the
このように実施の形態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
また、割込み通知機構30は、予めOS40から与えられた情報(HW割込み通知を行ってもよいCPUa1〜anの情報)に基づいて、次に割込み通知を行なうCPUを切替えるので、HW割込み通知を行なうたびにOS40からNIC20へCPUを変更させる指示を送る必要がなくなる。したがって、OS40の処理負荷が低減される。
Further, since the interrupt
また、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
以上のように、本発明に係るパケット処理装置は、ネットワークインタフェイスデバイスからのパケット受信に適している。 As described above, the packet processing apparatus according to the present invention is suitable for receiving packets from the network interface device.
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
20 NIC
21
DESCRIPTION OF
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.
前記ネットワークインタフェイスデバイスは、予め前記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.
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)
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 |
-
2007
- 2007-04-09 JP JP2007101831A patent/JP2008257642A/en active Pending
Cited By (3)
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 |