JP2008257642A - パケット処理装置 - Google Patents

パケット処理装置 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
English (en)
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/ja
Publication of JP2008257642A publication Critical patent/JP2008257642A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Transfer Systems (AREA)

Abstract

【課題】迅速にパケットの受信処理を行なうパケット処理装置を得ること。
【解決手段】複数のCPUa1〜anでNIC20を介して外部装置からのパケットを受信するパケット処理装置において、NIC20からDMA転送されるパケットを受信するDMA受信バッファb1〜bnをカーネル空間内に複数設定するOS40と、NIC20からのパケットをOS40からの指示に基づいた所定のDMA受信バッファで受信して上位レイヤ処理部62へ転送するパケット受信処理部1と、を備え、パケット受信処理部1は、NIC20から次のDMA転送が開始されるまでに、次に割込みを通知するCPUの設定と次にパケットを受信するDMA受信バッファの設定を切替えておき、NIC20が次のDMA転送を行なうと、設定しておいたCPUに割込み通知を行なうとともに設定しておいたDMA受信バッファでパケットを受信する。
【選択図】 図1

Description

本発明は、複数のプロセッサを用いてネットワークインタフェイスデバイスからパケットを受信するパケット処理装置に関するものである。
近年、インターネットを利用した通信サービスが次々と登場し、アクセス網およびコア網におけるIPトラヒック量は年々増加している。このIPトラヒック量の増加に伴って、イーサネット(登録商標)規格(IEEE(Institute of Electrical and Electronics Engineers)802.3)に代表される有線ネットワークや、WiMAX(Worldwide Interoperability for Microwave Access)(IEEE802.16)に代表される無線ネットワークにおいて、伝送帯域の高速化の検討が進められている。特に有線通信では、100Mbpsや1Gbps以上の10Gbpsのイーサネット(登録商標)規格が策定され、既に10Gbpsに対応したネットワークインタフェイスデバイス(以下、NIDという)が製品化されている。
ところで、CPU(Central Processing Unit)もクロックアップ、マルチコアプロセッサ/マルチプロセッサによる高性能化が進んでいるが、OS(Operating System)を搭載したCPUおよびNIDで構成される通信装置では、CPUとNIDとの間のパケット送受信がボトルネックとなり、10Gbpsのような高速伝送帯域を収容することが困難である。
汎用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に対して通知する。
CPU側では、NIDからのHW割込みに対応する割込みハンドラとネットワークドライバーを起動することによって、パケットの受信を確認し、その後上位プロトコルスタックにパケット処理の制御を移行させている(例えば、非特許文献1参照)。また、HW割込みを複数のCPUに振り分けることによって、パケットの受信処理を並列化する方法も提案されている(例えば、特許文献1参照)。
K. 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)
しかしながら、上記前者の従来技術では、パケット受信処理のシーケンスにおいて、OSによる割込みハンドラ処理やネットワークドライバー処理時のスレッド生成や割当て、OSによるコンテキストスイッチの発生などによって、受信処理の遅延が発生しパケット受信処理のボトルネックになるという問題があった。
また、上記前者および後者の従来技術では、カーネル空間内にDMA受信バッファが1つしか用意されていないので、パケット受信の際、DMA転送を完了してCPUがHW割込みを受け取り、ネットワークドライバーによるパケットの受信処理が完了した後にしかNIDは次のDMA転送を開始することができない。このため、HW割込みを複数のCPUに振り分けるだけでは受信処理を並列化することができないという問題点があった。
本発明は、上記に鑑みてなされたものであって、迅速にパケットの受信処理を行なうパケット処理装置を得ることを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、複数のプロセッサでネットワークインタフェイスデバイスを介して外部装置からのパケットを受信するパケット処理装置において、前記ネットワークインタフェイスデバイスからDMA転送されるパケットを受信するバッファをDMA受信バッファとしてカーネル空間内に複数設定するOSを記憶するOS記憶部と、前記ネットワークインタフェイスデバイスからDMA転送されるパケットを、前記OSからの指示に基づいた所定の前記DMA受信バッファで受信して上位レイヤ側へ転送するパケット受信処理部と、を備え、前記パケット受信処理部は、前記ネットワークインタフェイスデバイスからDMA転送のための割込み通知を受けた後であってかつ次のDMA転送が開始されるまでに、次に割込みを通知するプロセッサの設定を現在設定されているプロセッサとは異なる他のプロセッサに切替えておくとともに次にDMA転送されるパケットを受信するDMA受信バッファの設定を現在設定されているDMA受信バッファとは異なる他のDMA受信バッファに切替えておき、前記ネットワークインタフェイスデバイスが次のDMA転送を行なった際に、設定しておいた前記他のプロセッサに割込み通知を行なうとともに設定しておいた前記他のDMA受信バッファで前記パケットを受信することを特徴とする。
この発明によれば、DMA転送されるパケットを受信するDMA受信バッファをOSがカーネル空間内に複数設定するので、DMA転送されるパケットを複数のDMA受信バッファで並列して受信することができ、迅速にパケットの受信処理を行なうことが可能になるという効果を奏する。
以下に、本発明に係るパケット処理装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は、本発明の実施の形態1に係るパケット処理装置の構成を示すブロック図である。図1では、パケット処理装置(通信装置)101の構成とともに、パケット受信処理の流れを示している。
パケット処理装置101は、IPパケットなどの通信パケットの転送や上位レイヤプロトコルの処理をOS上のアプリケーションで実行するネットワーク装置である。本実施の形態では、パケット処理装置101は、複数のDMA受信バッファを用いてパケットの受信処理を行なう。
パケット処理装置101は、物理デバイス10、ネットワークインタフェイスデバイスであるNIC(Network Interface Card)20、割込み通知機構30、OS記憶部4、パケット受信処理部1を含んで構成されている。
物理デバイス10は、外部ネットワーク装置(図示せず)との間で物理層(PHYレイヤ)を介してIPパケット(フレーム)を送受信するデバイスである。物理デバイス10は、NIC−PHY間IF15によってNIC20と接続されている。
NIC−PHY間IF15は、物理デバイス10とNICとの間の通信インタフェイスであり、例えばGMII(Giga bit Media Independent Interface)、XAUI(10 Gigabit Attachment Unit Interface)、XGMII(10 Gigabit Media Independent Interface)などである。
NIC20は、汎用ネットワークインタフェイスカードやASIC/FPGA/NPU(Application Specific Integrated Circuit/Field Programmable Gate Array/Network Processing Unit)などのパケット処理に特化したハードウェアネットワークインタフェイスデバイスである。NIC20は、物理デバイス10からフレームを受信するとともに、フレームのパケット処理として主にMACレイヤ処理(イーサネット(登録商標)処理)などを行なう。
NIC20は、MACレイヤ処理部(MAC Block)22とフレームバッファ21を備えている。NIC20では、MACレイヤ処理部22が物理デバイス10からのIPパケットに対してMACレイヤプロトコルに関する処理を行なう。フレームバッファ21は、フレームデータを格納するバッファであり、MACレイヤ処理部22から送られてくるフレームを格納する。NIC20は、フレームバッファ21に格納したフレームをパケットとして受信部50にDMA転送する。
割込み通知機構30は、NIC20および受信部50との間でデータ(HW割込みなど)のやりとりを行う。割込み通知機構30は、後述のOS40からの指示に基づいて、I/Oインタフェイスや種々のデバイス(NIC20)からのHW割込みを各プロセッサ(後述のCPUa1〜CPUan)に振り分ける処理を行なう。
OS記憶部4は、OS40を記憶している。OS40は、マルチコアプロセッサおよびマルチプロセッサ対応のOSであり、NIC20、割込み通知機構30パケット受信処理部1を制御する。本実施の形態のOS40は、同一メモリ空間上に複数のCPUを認識して使用できるよう構成されている。
パケット受信処理部1は、受信部50、複数のキューc1〜cn、パケット集約処理部60を備えている。受信部50は、複数のプロセッサコア(プロセッサ)を有している。各プロセッサコアは、マルチコアプロセッサ/マルチプロセッサ対応のCPU、ネットワークドライバー、DMA受信バッファを含んで構成されている。なお、本実施の形態では、受信部50がマルチコアプロセッサである場合について説明する。
図1では、CPUa1、DMA受信バッファb1、ネットワークドライバーd1を有するプロセッサコア、CPUa2、DMA受信バッファb2、ネットワークドライバーd2を有するプロセッサコア、CPUan(nは自然数)、DMA受信バッファbn、ネットワークドライバーdnを有するプロセッサコアなどによって受信部50が構成されている場合を示している。
CPUa1〜anは、割込み通知機構30からHW割込みを通知を受けた場合に割込みハンドラを生成する。各CPUa1〜CPUanに生成された割込みハンドラは、自らのCPUに対応するネットワークドライバーd1〜dnにNIC20からDMA転送されてくるパケットの受信処理を行なわせる。本実施の形態では、各CPUa1〜anが割込み通知機構30によって順番に指定され、割込み通知機構30から順番にHW割込み通知を受ける。
DMA受信バッファb1〜bnは、OS40で認識しているCPUメモリ空間内(受信部50)でパケット(フレームデータ)を格納するバッファである。NIC20のフレームバッファ21からDMA受信バッファb1〜bnへは、例えばCPUa1〜anが介在しないDMA転送によってパケットが転送される。
ネットワークドライバーd1〜dnは、割込み通知機構30からCPUa1〜CPUanの何れかへHW割込み通知がされた後に、受信パケットの整合性をチェックしてパケットデータを上位レイヤ側(パケット集約処理部60)に転送する。
キューc1〜cnは、上位レイヤへの転送に使用されるパケットバッファキューであり、それぞれネットワークドライバーd1〜dnに接続されている。また、キューc1〜cnは、パケット集約処理部60に接続されている。
パケット集約処理部60は、パケット集約機構(Packet Aggregationモジュール)61、上位レイヤ処理部62、1〜複数のCPU63を有している。パケット集約機構61(制御モジュール)は、パケットが転送されるキューの順番に基づいて各キューc1〜cnに格納されているパケットを上位レイヤ処理部62に転送する。パケット集約機構61は、ネットワークドライバーd1から受信完了通知を受け取った後、パケットを上位レイヤ処理部62に転送する。上位レイヤ処理部62は、パケット集約機構61から受信したパケットの上位レイヤ処理を行なう。CPU63は、パケット集約機構61と上位レイヤ処理部62を制御する。
つぎに、パケット処理装置101の動作手順について説明する。図2は、パケット処理装置の動作手順を示すフローチャートである。パケット処理装置101のOS40は、予め受信処理のみを行わせるCPUとDMA受信バッファを複数個ずつ用意しておく。本実施の形態のOS40は、CPUa1〜anとDMA受信バッファb1〜bnを用意しておく。
OS40は、デバイス初期化時にNIC20に対し、DMA転送を行う受信バッファとしてカーネル空間内のDMA受信バッファb1を指定する。さらに、OS40は、割込み通知機構30に対し、NIC20からのHW割込みを通知するCPUとしてCPUa1を指定しておく(ステップS110)。
外部ネットワーク装置からのIPパケットは、物理デバイス10で物理的な信号を受信・終端し、MACレイヤ処理を行なうNIC20へNIC−PHY間IF15(規定のインタフェイス)経由で送信する。NIC20は、物理デバイス10からのIPパケットを受信する(ステップS120)。
NIC20では、MACレイヤ処理部22にてMACヘッダを解析するとともに、フレーム検証と、送信先・送信元アドレスの検証を行い、装置内上位レイヤに送信すべきフレームを自身のバッファ(フレームバッファ21)に格納する(ステップS130)。
NIC20は、フレームバッファ21に格納したフレームを、デバイス初期化時に指定されたカーネル空間内のDMA受信バッファb1へDMA転送する(ステップS140)。なお、カーネル空間内のDMA受信バッファへの1回でのDMA転送のパケット(フレーム)数はNIC20の仕様・パラメータ設定に依存しており、複数のパケットをまとめてDMA転送してもよい。
NIC20は、DMA転送を開始してから所定の時間を経過した後、またはDMA転送したパケットが所定のパケット数に達したら、割込み通知機構30にHW割込みを通知する(ステップS150)。割込み通知機構30は、NIC20からHW割込みの通知を受け取ると、OS40に指定されたCPUa1に対してHW割込みを通知する(ステップS160)。
CPUa1は、HW割込みを受け取ると、割込みハンドラを生成する。このとき、OS40は、割込み通知機構30に対し、次回にHW割り込みを通知するCPUをCPUa2に変更させる。さらに、OS40は、NIC20に対し、次にDMA転送を行う受信バッファをカーネル空間内のb1からDMA受信バッファb2に変更させる(ステップS170)。
換言すると、OS40は、NIC20からDMA転送のための割込み通知を受けた後であってかつ次のDMA転送が開始されるまでに、次に割込みを通知するCPUの設定を現在設定されているCPUa1とは異なる他のCPUa2に切替えておく。また、このとき、OS40は次にDMA転送されるパケットを受信するDMA受信バッファの設定を現在設定されているDMA受信バッファb1とは異なる他のDMA受信バッファb2に切替えておく。
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の順番で変更させていく。
換言すると、OS40は、割込み通知機構30に対し、HW割り込みを通知するCPUをCPUam(mは1〜nの自然数)〜a(m+1)の順番で変更させていく。また、OS40は、NIC20に対し、DMA転送を行う受信バッファをDMA受信バッファbm〜b(m+1)の順番で変更させていく。
受信部50では、割込みハンドラが、ネットワークドライバーd1に受信処理を行わせる。ネットワークドライバーd1は、DMA受信バッファb1からフレーム情報を取得する。そして、ネットワークドライバーd1は、DMA受信バッファb1のフレームを用いて、OS40の内部で管理可能な形式であるパケットデータ(ソケットバッファ)を生成し、上位レイヤ転送向けのキューc1にキューイングする。ネットワークドライバーd1は、受信処理(キューc1へのキューイング)が完了すると、パケット集約処理部60のパケット集約機構61に対して、受信処理が完了したこと(受信完了通知)を通知する。
パケット集約機構61へは、予めOS40からパケットが転送されるキューの順番の情報を与えておく。パケット集約機構61は、ネットワークドライバーd1から受信完了通知を受け取ると、キューの順番の情報に基づいて各キューc1〜cnに格納されているパケットを上位レイヤ側(上位レイヤ処理部62)に転送する。このとき、パケット集約機構61は、CPU63(SW(Soft Ware)割込みハンドラ)によって制御されている。
本実施の形態では、CPUa1〜CPUanの順番でHW割り込みを通知し、DMA受信バッファb1〜bnの順番でDMA転送を行う受信バッファを指定しているので、OS40は、キューc1〜cnの順番でパケットを転送させるようパケット集約機構61に指示しておく。
パケット集約機構61は、キューc1に格納されているパケットを上位レイヤ(上位レイヤ処理部62)に転送する。このとき、パケット集約機構61は、キューc1に格納されたパケットを上位レイヤに転送するまでは、キューc2〜キューcnに格納されているパケットを上位レイヤ処理部62に転送しないこととする。
NIC20では、DMA受信バッファb2へのDMA転送を完了した後、CPUa2にHW割り込みを通知する。そして、CPUa2は、HW割込みを受け取ると、割込みハンドラを生成してネットワークドライバーd2にパケットの受信処理を行わせる。
換言すると、NIC20が次のDMA転送を行なった際に、次のDMA転送が開始されるまでに設定しておいたCPUa1とは異なる他のCPUa2に割込み通知を行なうとともに、次のDMA転送が開始されるまでに設定しておいたDMA受信バッファb1とは異なる他のDMA受信バッファb2でパケットを受信する。
この処理を繰り返すことによってCPUanにHW割り込みを通知すると、OS40は、次にHW割り込みを通知するCPUをCPUa1に変更するとともに、DMA受信バッファをDMA受信バッファa1に変更する。
図3は、CPUによるパケットの受信処理の手順を説明するための図である。図3では、各CPUa1〜anの割込み処理(割込みハンドラの生成など)、HW割り込みを通知するCPUとDMA受信バッファの切替処理、パケットの受信処理の処理タイミングを示している。
NIC20から受信部50へ最初のDMA転送が行なわれると、割込み通知機構30は、OS40によって指定されたCPUa1に対してHW割込みを通知する。CPUa1は、HW割込みを受け取ると、割込みハンドラを生成する(割込み処理)。
OS40は、次にHW割り込みを通知するCPUをCPUa1からCPUa2に変更するとともに、次にDMA転送を行う受信バッファをDMA受信バッファb1からDMA受信バッファb2に変更する(切替処理)。切替処理が完了すると、NIC20では、DMA受信バッファb2へのDMA転送を開始し、CPUa1の割込みハンドラでは、ネットワークドライバーd1にパケットの受信処理を行わせる。
CPUa1の場合と同様に、NIC20から受信部50へ次のDMA転送が行なわれると、割込み通知機構30は、OS40によって指定されたCPUa2に対してHW割込みを通知する。CPUa2は、HW割込みを受け取ると、割込みハンドラを生成する(割込み処理)。
OS40は、次にHW割り込みを通知するCPUをCPUa2からCPUa3に変更するとともに、次にDMA転送を行う受信バッファをDMA受信バッファb2からDMA受信バッファb3に変更する(切替処理)。切替処理が完了すると、NIC20では、DMA受信バッファb2へのDMA転送を開始し、CPUa2の割込みハンドラでは、ネットワークドライバーd2にパケットの受信処理を行わせる。
CPUa1,a2の場合と同様に、NIC20から受信部50へ次のDMA転送が行なわれると、割込み通知機構30は、OS40によって指定されたCPUa3に対してHW割込みを通知する。CPUa3は、HW割込みを受け取ると、割込みハンドラを生成する(割込み処理)。
OS40は、次にHW割り込みを通知するCPUをCPUa3から次のCPUに変更するとともに、次にDMA転送を行う受信バッファをDMA受信バッファb3から次のDMA受信バッファに変更する(切替処理)。切替処理が完了すると、NIC20では、DMA受信バッファb3へのDMA転送を開始し、CPUa3の割込みハンドラでは、ネットワークドライバーd3にパケットの受信処理を行わせる。
この後、CPUa1〜a3の場合と同様に、各CPUの割込み処理、HW割り込みを通知するCPUとDMA受信バッファの切替処理、各CPUによるパケットの受信処理を繰り返す。
以上の動作によって、割込みベースのパケット受信の際に発生するOS40による割込みハンドラ処理、タスクスケジューリング処理、ネットワークドライバー処理の時間を短縮できる。これにより、高速パケットの受信処理を実現できる。
なお、NIC20によるDMA転送の開始タイミングと、CPUの割込みハンドラによるパケットの受信開始タイミングは、同じタイミングである必要はなく、タイミングがずれていてもよい。
このように実施の形態1によれば、カーネル空間内に複数のDMA受信バッファb1〜bnを設けているので、先に割込みを受けたCPUが受信処理を行なっている間に、次のDMA転送と次のCPUへの割込み通知を行なうことができる。したがって、同種の割込みを複数のCPUで並列処理することが可能となるので、迅速にパケットの受信処理を行なうことが可能となる。
また、パケット集約機構61がパケットが転送されるキューの順番に基づいて各キューc1〜cnに格納されているパケットを上位レイヤ処理部62に転送するので、上位レイヤ処理部62に転送するパケットの順序が逆転してしまうことを防ぐことが可能となる。
実施の形態2.
つぎに、図4を用いてこの発明の実施の形態2について説明する。実施の形態2では、パケットの受信処理を行っていないCPUのうち処理負荷の小さなCPUを選択してHW割り込みを通知する。
図4は、本発明の実施の形態2に係るパケット処理装置の構成を示すブロック図である。図4では、パケット処理装置(通信装置)102の構成とともに、パケット受信処理の流れを示している。図4の各構成要素のうち図1に示す実施の形態1のパケット処理装置101と同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
パケット処理装置102は、パケット処理装置101が有する機能に加えて、CPU負荷判別機構31を有している。CPU負荷判別機構31は、CPUa1〜anと割込み通知機構30に接続されており、各CPUa1〜anの負荷に関する情報(負荷情報)を管理する。この負荷情報には、各CPUa1〜anの負荷に関する情報に加えて、各CPUa1〜anが受信処理を行っているか否かの情報が含まれている。CPU負荷判別機構31は、割込み通知機構30がHW割り込みを通知するCPUを選択する際に、負荷情報を割込み通知機構30に送る。
つぎに、パケット処理装置102の動作手順について説明する。割込み通知機構30がHW割込みを通知するCPUの変更処理以外は、図2で説明した実施の形態1のパケット処理装置101の処理手順と同様であるため、その説明は省略する。
パケット処理装置102がパケットの受信処理を行なう際に、CPU負荷判別機構31は、各CPUa1〜anの負荷情報を各CPUa1〜anから取得する。CPU負荷判別機構31は、取得した負荷情報を割込み通知機構30に送信する。
割込み通知機構30は、HW割り込みを通知するCPUを選択する際に、受信処理を行っていないCPUであって、且つCPU負荷の低いCPU(例えば処理負荷が最も低いCPU)を選択する。具体的には、割込み通知機構30は、CPU負荷判別機構31が各CPUa1〜anから取得した負荷情報に基づいて、HW割り込みを通知するCPUを選択する。
受信部50では、パケット集約機構61によって各キューc1〜cnからパケットを受信する際の受信順序の制御処理として、パケット集約機構61に特定のCPU63を割当てる。そして、パケット集約機構61は、各キューc1〜cnにポーリングを行なうとによって各キューc1〜cnの状態(パケットを格納しているか否か)を監視し、この監視結果(パケット受信に用いたキューの順番)に基づいてパケット受信の順序制御を行う。なお、本実施の形態では、パケット集約機構61が各キューc1〜cnへのポーリングを行なっているので、ネットワークドライバーd1は、キューc1〜cnへのキューイングが完了した際に、パケット集約機構61に対して受信完了通知を通知する必要がない。
例えば、パケット受信に用いたキューの順番がキューc1、キューc3の順番である場合、パケット集約機構61は、キューc1からのパケットを上位レイヤ処理部62に転送した後、キューc3からのパケットを上位レイヤ処理部62に転送する。
なお、本実施の形態では、割込み通知機構30が、各CPUa1〜anの負荷情報に基づいてHW割り込みを通知するCPUを選択したが、他の方法によってHW割り込みを通知するCPUを選択してもよい。
例えば、OS40からCPUの変更指示を受けずに割込み通知を行うCPUを変更できる割込み通知機構30と、OS40からDMA受信バッファの変更指示を受けずにDMA受信バッファを変更できるNIC20と、を用いる。
この場合、OS40は、予めHW割込み通知を行ってもよいCPUa1〜anの情報を割込み通知機構30に与えておく。また、OS40はカーネル空間内に用意した複数のDMA受信バッファb1〜bnの情報をNIC20に与えておく。
NIC20は、DMA転送を開始してから所定の時間を経過した後、またはDMA転送したパケットが所定のパケット数に達したら、割込み通知機構30にHW割込みを通知する。
NIC20は、割込み通知機構30へHW割込みの通知を行う際に、DMA受信バッファb1〜bnの情報に基づいて、DMA転送を行うカーネル空間内のDMA受信バッファを他のDMA受信バッファ(次のDMA受信バッファ)に変更し、DMA転送を開始する。このとき、NIC20は、CPU負荷判別機構31が取得する、各CPUa1〜anの負荷情報などに基づいて、次のDMA受信バッファを変更してもよい。
NIC20は、割込み通知機構30へHW割込みの通知を行う際に、例えば変更後のDMA受信バッファ(次のDMA受信バッファ)に関する情報を、割込み通知機構30に通知しておく。
割込み通知機構30は、NIC20からHW割込みの通知を受け取ると、OS40から与えられたCPUa1〜anの情報、次のDMA受信バッファに関する情報に基づいて、次回にHW割り込みを通知するCPUを他のCPU(次のCPU)変更する。
具体的には、割込み通知機構30は、次のDMA受信バッファに対応するCPUを、次回にHW割り込みを通知するCPUに設定する。例えば、次のDMA受信バッファがDMA受信バッファb3である場合、割込み通知機構30は、DMA受信バッファb3に対応するCPUa3を次回にHW割り込みを通知するCPUに設定する。
なお、割込み通知機構30が次回にHW割り込みを通知するCPUを決定するとともに、決定したCPUの情報をNIC20に送信してもよい。この場合、NIC20は、割込み通知機構30によって決定されたCPUの情報に対応するDMA受信バッファを次のDMA受信バッファに設定する。
また、本実施の形態では、各DMA受信バッファb1〜bnに順番にDMA転送していく場合について説明したが、他の手順によってDMA受信バッファb1〜bnにDMA転送してもよい。
例えば、HW割込みを受け取った際に複数のCPUに同じHW割込みを一斉に通知する割り込み通知機構30と、OS40からDMA受信バッファの変更指示を受けずにDMA受信バッファを変更できるNIC20と、を用いる。
この場合、NIC20は、OS40から用意された複数のDMA受信バッファに対して、所定のパケット数(例えば1パケット)ずつラウンドロビンでDMA転送を行う。具体的には、NIC20は、DMA転送を開始してから所定の時間を経過した後、またはDMA転送したパケットが所定のパケット数(例えば全てのパケット)に達したら、割込み通知機構30にHW割込みを通知する。そして、割り込み通知機構30は、HW割込みを受け取ると、DMA受信バッファb1〜bnに対応する各CPUa1〜anに対して一斉に割り込み通知を行う。
パケット集約機構61では、各ネットワークドライバーd1〜dnから受信完了通知を受け取ると、OS40から与えられたキューの順番の情報に基づいて各キューc1〜cnに格納されている先頭のパケットを上位レイヤ側(上位レイヤ処理部62)にラウンドロビンでパケット転送していく。
このように実施の形態2によれば、プロセッサCPUのうちパケットの受信処理を行っていないCPUであってかつ処理負荷が低いCPUを選択してHW割込みの通知を行なうので、CPUへの負荷分散を行なうことが可能となり、迅速にパケット受信を行なうことが可能となる。
また、NIC20は、予めOS40から与えられた情報(カーネル空間内に用意したDMA受信バッファb1〜bnの情報)に基づいて、次にパケットを受信させるDMA受信バッファを切替えるので、HW割込み通知を行なうたびにOS40からNIC20へDMA受信バッファを変更させる指示を送る必要がなくなる。したがって、OS40の処理負荷が低減される。
また、割込み通知機構30は、予めOS40から与えられた情報(HW割込み通知を行ってもよいCPUa1〜anの情報)に基づいて、次に割込み通知を行なうCPUを切替えるので、HW割込み通知を行なうたびにOS40からNIC20へCPUを変更させる指示を送る必要がなくなる。したがって、OS40の処理負荷が低減される。
また、NIC20は、各DMA受信バッファb1〜bnに対して所定数のパケットずつラウンドロビンでDMA転送し、DMA転送が完了した後に各CPUa1〜anに割込み通知を行なうので、各DMA受信バッファb1〜bnと各CPUa1〜anの制御が容易になる。
また、パケット集約機構61は、各キューc1〜cnにポーリングを行なうとによって各キューc1〜cnを監視し、この監視結果に基づいてパケット受信の順序制御するので、予めOS40からパケット集約機構61にパケットが転送されるキューの順番の情報を与えておく必要がない。したがって、OS40の負荷を低減することが可能となる。
以上のように、本発明に係るパケット処理装置は、ネットワークインタフェイスデバイスからのパケット受信に適している。
実施の形態1に係るパケット処理装置の構成を示すブロック図である。 パケット処理装置の動作手順を示すフローチャートである。 CPUによるパケットの受信処理の手順を説明するための図である。 実施の形態2に係るパケット処理装置の構成を示すブロック図である。
符号の説明
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 ネットワークドライバ

Claims (6)

  1. 複数のプロセッサでネットワークインタフェイスデバイスを介して外部装置からのパケットを受信するパケット処理装置において、
    前記ネットワークインタフェイスデバイスからDMA転送されるパケットを受信するバッファをDMA受信バッファとしてカーネル空間内に複数設定するOSを記憶するOS記憶部と、
    前記ネットワークインタフェイスデバイスからDMA転送されるパケットを、前記OSからの指示に基づいた所定の前記DMA受信バッファで受信して上位レイヤ側へ転送するパケット受信処理部と、
    を備え、
    前記パケット受信処理部は、
    前記ネットワークインタフェイスデバイスからDMA転送のための割込み通知を受けた後であってかつ次のDMA転送が開始されるまでに、次に割込みを通知するプロセッサの設定を現在設定されているプロセッサとは異なる他のプロセッサに切替えておくとともに次にDMA転送されるパケットを受信するDMA受信バッファの設定を現在設定されているDMA受信バッファとは異なる他のDMA受信バッファに切替えておき、前記ネットワークインタフェイスデバイスが次のDMA転送を行なった際に、設定しておいた前記他のプロセッサに割込み通知を行なうとともに設定しておいた前記他のDMA受信バッファで前記パケットを受信することを特徴とするパケット処理装置。
  2. 前記パケット受信処理部は、前記DMA受信バッファで受信したパケットが転送されるキューの順番で、前記キューから前記パケットを取得して上位レイヤ側へ転送する制御モジュールを有することを特徴とする請求項1に記載のパケット処理装置。
  3. 前記パケット受信処理部は、次に割込みを通知するプロセッサの設定を現在設定されているプロセッサとは異なる他のプロセッサに切替えておく際に、前記プロセッサのうちパケットの受信処理を行っていないプロセッサであってかつ処理負荷が最も低いプロセッサを選択して前記他のプロセッサに設定することを特徴とする請求項1または2に記載のパケット処理装置。
  4. 前記ネットワークインタフェイスデバイスからDMA転送のための割込み通知を受けるとともに、前記OSからの指示に基づいた所定のプロセッサに前記ネットワークインタフェイスデバイスからの割込みを通知する割込み通知機構をさらに備え、
    前記ネットワークインタフェイスデバイスは、予め前記OSから与えられた情報に基づいて次に割込みを通知するプロセッサの設定を切替え、前記割込み通知機構は、予め前記OSから与えられた情報に基づいて次にDMA転送されるパケットを受信するDMA受信バッファの設定を切替えることを特徴とする請求項1〜3のいずれか1つに記載のパケット処理装置。
  5. 前記ネットワークインタフェイスデバイスは、前記各DMA受信バッファに対して所定数のパケットずつラウンドロビンでDMA転送し、DMA転送が完了した後に前記各プロセッサに割込み通知を行なうことを特徴とする請求項1または2に記載のパケット処理装置。
  6. 前記制御モジュールは、前記キューにポーリングを行なうとによって前記各キューを監視し、この監視結果に基づいてパケット受信の順序制御を行うことを特徴とする請求項2〜4のいずれか1つに記載のパケット処理装置。
JP2007101831A 2007-04-09 2007-04-09 パケット処理装置 Pending JP2008257642A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007101831A JP2008257642A (ja) 2007-04-09 2007-04-09 パケット処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007101831A JP2008257642A (ja) 2007-04-09 2007-04-09 パケット処理装置

Publications (1)

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

Family

ID=39981121

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007101831A Pending JP2008257642A (ja) 2007-04-09 2007-04-09 パケット処理装置

Country Status (1)

Country Link
JP (1) JP2008257642A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013179429A (ja) * 2012-02-28 2013-09-09 Nippon Telegr & Teleph Corp <Ntt> 振分先を切り替える並列パケット処理方法および装置
KR20160031494A (ko) * 2013-06-20 2016-03-22 마이크론 테크놀로지, 인코포레이티드 캡슐화 가능한 pcie 가상화

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013179429A (ja) * 2012-02-28 2013-09-09 Nippon Telegr & Teleph Corp <Ntt> 振分先を切り替える並列パケット処理方法および装置
KR20160031494A (ko) * 2013-06-20 2016-03-22 마이크론 테크놀로지, 인코포레이티드 캡슐화 가능한 pcie 가상화
KR102144330B1 (ko) 2013-06-20 2020-08-13 마이크론 테크놀로지, 인코포레이티드 캡슐화 가능한 pcie 가상화

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 (ja) パケット処理方法および装置
RU2491737C2 (ru) Управление памятью для высокоскоростного управления доступом к среде
JP6188093B2 (ja) 通信トラフィック処理アーキテクチャおよび方法
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
JP2008129767A (ja) ネットワーク装置
JP2013534103A (ja) 少なくとも部分的なフレーム送信の割り込み
EP3353959B1 (en) Active link during lan interface reset
WO2015172668A1 (zh) 网络中拥塞窗口的确定方法和装置
US20200252337A1 (en) Data transmission method, device, and computer storage medium
JP5065269B2 (ja) ローカル・エリア・ネットワーク管理
CN116868553A (zh) 用于管理端点资源和拥塞缓解的数据中心网络上的动态网络接收器驱动的数据调度
CN111431812B (zh) 一种报文转发控制方法及装置
JP2008257642A (ja) パケット処理装置
JP2008299439A (ja) パケット処理装置
US8004991B1 (en) Method and system for processing network information
JP2007088709A (ja) パケット通信装置およびその処理方法
KR100950528B1 (ko) 복수 개의 데이터를 계층별로 처리하는 장치 및 방법
US8225004B1 (en) Method and system for processing network and storage data
JP2009118106A (ja) ネットワーク装置
TWI429230B (zh) 處理資訊系統的方法
US20070112987A1 (en) Minimizing ISR latency and overhead
WO2023174081A1 (zh) 一种队列调度的方法及装置