(58)【調査した分野】(Int.Cl.,DB名)
前記フラッシュ処理部は、リンクダウンが検知された場合に、リンクダウンが検知されたネットワークインタフェースカードに対して、通信停止を指示し、その後に、通信開始を指示する
請求項4に記載の情報処理装置。
前記送信処理部は、前記ネットワークインタフェースカードのドライバの一部であり、前記ネットワークインタフェースカードのリンク状態を監視することなく、ループ処理で送信データを送信キューに蓄積し、
前記制御部は、前記ネットワークインタフェースカードで検知されたリンクダウンに基づいて、前記送信処理部に、ループ処理の内容を置換させる
請求項1に記載の情報処理装置。
【背景技術】
【0002】
例えば、特許文献1には、複数の通信ポート11と複数の通信インタフェース12とを有し、通信異常検出部14が通信異常を検出した場合、接続切替部13を制御し、通信異常が検出されたネットワーク通信装置が接続された通信ポート11と接続され通信インタフェース12を変更させるネットワーク機器が開示されている。
特許文献2には、複数の入力ポートおよび複数の出力ポートに関連付けられ、関連付けられた出力ポートでリンク状態変化を検出し、出力ポートでのリンク状態変化を、出力ポートを介して、1つ以上の入力ポートに通知できるネットワーキング装置が開示されている。
特許文献3には、送信側では、映像データにタイムスタンプを付加したデータを送信し、受信側では、受信データに付加されているタイムスタンプに無線通信でかかる時間よりも長い時間を加算し、加算されたタイムスタンプの比較を行うタイムスタンプチェック部0819にタイムスタンプ値にかかわらずデータを廃棄する機能を持たせ、データ伝送開始を検出した時間から、設定された時間だけ、タイムスタンプチェック部0819に対してデータ廃棄を指示するデータ廃棄制御部0826を新たに設けた映像伝送システムが開示されている。
特許文献4には、パケット受信ドライバが、ネットワークインタフェースによるパケットの受信をループ処理によって待機し、ループ処理の合間において、ネットワークインタフェース105及びパケット受信ドライバのうちの少なくともいずれか一方の死活状態を示す情報を死活情報記憶部117rに書き込み、監視装置の監視部114は、死活情報記憶部を参照して、ネットワークインタフェース及びパケット受信ドライバのうちの少なくともいずれか一方の死活状態を監視する監視方法が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
リンクダウン時におけるリソースの無駄遣い、又は、時機を逸したデータ送信を抑制することができる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0005】
本発明に係る情報処理装置は、複数のネットワークインタフェースカードと、前記ネットワークインタフェースカードで送信する送信データを準備する複数の送信処理部と、前記ネットワークインタフェースカードのいずれかにリンクダウンが検知された場合に、リンクダウンが検知されたネットワークインタフェースカードで送信する送信データの準備を、前記送信処理部に停止させる制御部とを有する。
【0006】
好適には、前記送信処理部は、ループ処理によって、送信データを送信キューに蓄積し、前記制御部は、前記送信処理部に、前記ループ処理の一部を、送信失敗となる送信処理に置き換えて、送信データの準備を停止させる。
【0007】
好適には、複数の前記送信処理部は、共用されるコンピュータリソースを用いて、送信データの準備を行い、リンクダウンしているネットワークインタフェースカードに割り当てられた前記送信処理部は、共用されるコンピュータリソースの新規割当てを要求しない。
【0008】
好適には、複数の前記送信処理部は、共用される記録領域を用いて、送信データを蓄積するための送信キューを構成し、リンクダウンしているネットワークインタフェースカードに割り当てられた前記送信処理部は、送信キューのために、共用される記録領域の新規割当てを要求しない。
【0009】
好適には、リンクダウンが検知されたネットワークインタフェースカードのみに対して、蓄積されている送信データをフラッシュさせるフラッシュ処理部をさらに有する。
【0010】
好適には、前記フラッシュ処理部は、リンクダウンが検知された場合に、リンクダウンが検知されたネットワークインタフェースカードに対して、通信停止を指示し、その後に、通信開始を指示する。
【0011】
好適には、前記送信処理部は、前記ネットワークインタフェースカードのドライバの一部であり、前記ネットワークインタフェースカードのリンク状態を監視することなく、ループ処理で送信データを送信キューに蓄積し、前記制御部は、前記ネットワークインタフェースカードで検知されたリンクダウンに基づいて、前記送信処理部に、ループ処理の内容を置換させる。
【0012】
本発明に係る情報処理方法は、複数のネットワークインタフェースカードそれぞれに関して、それぞれの前記ネットワークインタフェースカードで送信する送信データを準備する送信準備ステップと、前記ネットワークインタフェースカードのいずれかにリンクダウンが検知された場合に、リンクダウンが検知されたネットワークインタフェースカードで送信する送信データの準備を停止させる停止ステップとを有する。
【0013】
本発明に係るプログラムは、複数のネットワークインタフェースカードそれぞれに関して、それぞれの前記ネットワークインタフェースカードで送信する送信データを準備する送信準備ステップと、前記ネットワークインタフェースカードのいずれかにリンクダウンが検知された場合に、リンクダウンが検知されたネットワークインタフェースカードで送信する送信データの準備を停止させる停止ステップとをコンピュータに実行させる。
【発明の効果】
【0014】
リンクダウン時におけるリソースの無駄遣い、又は、時機を逸したデータ送信を抑制することができる。
【発明を実施するための形態】
【0016】
以下、本発明の実施形態を、図面を参照して説明する。
図1は、ネットワーク装置10を含むネットワーク通信システム1のハードウェア構成を例示する図である。
図1に例示するように、ネットワーク通信システム1は、複数のネットワーク装置10と、これらを接続するネットワークスイッチ20とを含む。
ネットワーク装置10は、ネットワークに接続して使用されるネットワーク機器である。ネットワーク装置10は、本発明に係る情報処理装置の一例である。本例のネットワーク装置は、LANケーブル及びネットワークスイッチ20を介してLANに接続しており、帯域制御機能及びファイアウォール機能などを有すると共に、他のネットワーク装置10と二重化して冗長構成によって耐障害性を高めている。具体的には、稼働中のネットワーク装置10A(Active)と、待機中のネットワーク装置10B(Standby)との間で生存監視パケットが送受信され、既定時間生存監視パケットが送受信されない場合に、待機中のネットワーク装置10Bが稼働状態となり、役割を引き継ぐ。
このような構成において、LANポートのリンクアップ/リンクダウンに関わらず、ネットワーク装置10の間で、生存監視パケット(ハートビートパケット)やLLC(Logical Link Control)パケットなどが送受信されている。
【0017】
図2は、ネットワーク装置10のハードウェア構成を例示する図である。
図2に例示するように、ネットワーク装置10は、CPU100、メモリ102、複数のスロット104、サウスブリッジ106、ハードディスクドライブ108、コンパクトフラッシュ(登録商標)変換アダプタ110、DVDドライブ112、及び、LANカード120を有する。
CPU100は、中央処理装置である。本例のCPU100は、複数のコアからなるマルチコアプロセッサである。
メモリ102は、例えば、半導体メモリであり、CPU100に接続され、主記憶装置として機能する。
スロット104は、拡張スロットであり、例えば、LANカード120などが挿入される。本例のスロット104には、LANカード120が挿入されており、本例のLANカード120には、PCIスイッチを介して複数のインタフェース(#0〜#3)が設けられている。
サウスブリッジ106は、例えば、SATAバスなどを接続するICチップである。本例では、サウスブリッジ106には、ハードディスクドライブ108、コンパクトフラッシュ(登録商標)変換アダプタ110、及び、DVDドライブ112が接続されている。
【0018】
LANカード120は、コンピュータなどの機器を通信ネットワークに接続するための拡張装置である。本例のLANカード120は、イーサネット(登録商標)に接続するためのカード型拡張装置であり、リンク状態を監視するLANコントローラと、送受信データを蓄積するFIFO(First In, First Out)とを内蔵する。なお、LANカード120は、本発明に係るネットワークインタフェースカードの一例であるが、これに限定されるものではなく、通信ネットワークのインタフェースとなるハードウェアであればよい。
【0019】
本例のネットワーク装置10は、上記ハードウェア構成にデータプレーン開発キット(Data Plane Development Kit)を採用して、パケット処理の高速化を実現している。具体的には、上位アプリケーションソフトウェアからデータプレーン開発キット(
図3の制御プレーンコア処理部300及びデータプレーンコア処理部400)にパケット送信が依頼されると、データプレーン開発キット(以下、DPDK)の送信キューに送信データがセットされる。DPDKは、LANカード120のLANコントローラに対して、送信データがあることを通知する。LANカード120のLANコントローラは、DPDKの送信キューから、送信データをDMAでLANカード120内のFIFOに取得する。LANカード120は、FIFOに蓄積された送信データを、伝送路に送出する。
このとき、DPDKの送信処理(データプレーンコア処理部400)は、ポートのリンクアップ/リンクダウン状態を意識せずに、到着した送信データを送信キューに繋ぐ。換言すると、DPDKの送信処理(データプレーンコア処理部400)は、リンクダウンが発生したとしても、送信キューに送信データを準備し続けるよう構成されている。
【0020】
図3は、ネットワーク装置10の機能ブロックを例示する図である。
図3に例示するように、ネットワーク装置10は、LANドライバの機能ブロックとして、制御プレーンコア処理部300と、データプレーンコア処理部400とを有する。
制御プレーンコア処理部300は、LANカード120などの制御処理を行う。本例の制御プレーンコア処理部300は、上位エンジン処理部320、LANドライバ共通部340、及びLANドライバ360を有する。上位エンジン処理部320は、上位層からの指示に応じて、制御に必要なデータを、LANドライバ共通部340及びLANドライバ360を介して、LANカード120に出力する。
【0021】
データプレーンコア処理部400は、パケット処理を行う。本例のデータプレーンコア処理部400は、上位エンジン処理部420、LANドライバ共通部440、及びLANドライバ460を有する。上位エンジン処理部420は、ファイアウォールなどの処理を実行する。LANドライバ共通部440は、上位エンジン処理部420からの指示に応じて、送受信するパケットに対してLANカード共通の処理を施す。LANドライバ460は、LANカード120に直接アクセスして、LANドライバ共通部440から指示されたパケットの送受信を行う。すなわち、受信パケットは、LANドライバ440でLANカード120から受け取り、LANドライバ共通部440を通過して、上位エンジン処理部420でファイアウォール機能などの固有機能を適用する。送信パケットは、上位エンジン処理部420からLANドライバ共通部440を通過して、LANドライバ460からLANカード120に受け渡される。データプレーンコア処理部400は、本発明に係る制御部の一例である。
【0022】
図4(A)は、制御プレーンコアのLANドライバ360(
図3)をより詳細に説明する図であり、
図4(B)は、データプレーンコアのLANドライバ460(
図3)をより詳細に説明する図である。
図4(A)に例示するように、制御プレーンコアのLANドライバ360は、リンクダウン検出部362、送信処理置換部364、及びフラッシュ処理部366を有する。
リンクダウン検出部362は、LANカード120のリンクダウンを検出する。本例のリンクダウン検出部362は、割り当てられたLANカード120のLANコントローラからの通知に基づいて、LANカード120のリンクダウン又はリンクアップを検出する。
【0023】
送信処理置換部364は、データプレーンコアのLANドライバ460におけるループ処理の一部を、送信失敗となる送信処理に置き換えて、送信データの準備を停止させる。本例の送信処理置換部364は、リンクダウン検出部362によりリンクダウンが検出された場合に、データプレーンコアのLANドライバ460に対して、パケットを送信する送信処理を、処理結果を送信失敗として出力する疑似的送信処理(送信ドロップ処理)に置換させて、送信パケットの準備を停止させる。また、送信処理置換部364は、リンクダウン検出部362によりリンクアップが検出された場合に、データプレーンコアのLANドライバ460に対して、疑似的送信処理(送信ドロップ処理)を、パケットを送信する送信処理に置換させて、送信パケットの準備を再開させる。本例の送信処理置換部364は、送信関数の変更によって、送信処理と送信ドロップ処理とを相互に置換する。
【0024】
フラッシュ処理部366は、リンクダウン検出部362によりリンクダウンが検知されたLANカード120のみに対して、FIFOに蓄積されている送信データをフラッシュさせる。例えば、フラッシュ処理部366は、リンクダウン検出部362によりリンクダウンが検知された場合に、リンクダウンが検知されたLANカード120に対して、通信停止を指示し、その後に、通信開始を指示して、FIFO内の送信データを消去させる。通信開始の指示も行ってしまうことにより、リンクアップの割込みが受信可能な状態となる。
フラッシュ処理部366は、さらに、データプレーンコア処理部400のLANドライバ460に、送信キューを解放させてもよい。
【0025】
図4(B)に例示するように、データプレーンコアのLANドライバ460は、送信処理部462、及び、送信ドロップ処理部464を有する。
送信処理部462は、ループ処理の一部として、LANカード120で送信する送信データを準備する。より具体的には、送信処理部462は、送信キューに送信データを蓄積し、蓄積された送信データをLANカード120に転送して送信させる。すなわち、送信処理部462は、LANカード120のドライバの一部として、データプレーン開発キットに即したパケット送信処理を実行する。
ここで、ループ処理とは、複数種類の定型処理が順次繰り返し実行される処理である。すなわち、ループ処理とは、同種の処理が循環して繰り返されるものである。例えば、ループ処理には、定型処理の他に、非定型な処理が含まれてもよい。
【0026】
送信ドロップ処理部464は、送信失敗となる送信処理を実行する。すなわち、送信ドロップ処理部464は、送信処理部462による送信処理の代替処理として、送信失敗である旨を出力する疑似的送信処理を実行する。
【0027】
LANドライバ460は、上記各処理に加えて、データプレーン開発キットに即したパケット受信処理をループ処理の一部として実行する。
【0028】
図5は、制御プレーンコア及びデータプレーンコアと、LANカードのインタフェースとの間の関係を中心としたシステム構成を例示する図である。
図5に例示するように、CPU100の複数のコア(#0〜#N)のうち、一つが制御プレーンコアとして割り当て、残りのN個のコアがデータプレーンコアとして割り当てられている。それぞれのデータプレーンコアが、ループ処理によってパケット送受信処理を実行している。
つまり、それぞれのデータプレーンコアでは、LANカード120のインタフェース毎に送信キュー及び受信キューを用意しており、送受信処理を無限ループで実行することで、高速なパケット処理を実現している。この高速パケット処理では、送信処理と受信処理を延々ループして実行している。仮に、ループ処理の中に、リンク状態を確認する処理を挿入すると、全体の処理速度が低下してしまう。
そこで、各データプレーンコアのLANドライバ460は、
図6に示すように、制御プレーンコアのLANドライバ360の制御に応じて、ループ処理の一部として、送信処理部462による送信処理、又は、送信ドロップ処理部464を選択的に実行し、ループ処理の速度低下を抑制する。
【0029】
また、複数のデータプレーンコア処理部400は、共用される記録領域を用いて、送信データを蓄積するための送信キューを構成している。リンクダウン状態が継続していると、LANカード120のFIFOが満タンとなり、データプレーンコア処理部400の送信キューに蓄積された送信データをFIFOに転送できないため、データプレーンコア処理部400の送信キューのデータを解放できず、滞留状態となる。これにより、共用される記録領域が枯渇し、送受信効率が低下する。
そこで、リンクダウンしたLANカード120に割り当てられたデータプレーンコアのLANドライバ460は、送信処理を送信ドロップ処理に置換して、送信キューのためのコンピュータリソースの新規割当てを行わないようにする。
【0030】
図7は、リンクダウン時におけるネットワーク装置10の処理(S10)を説明するフローチャートである。
図7に例示するように、ステップ100(S100)において、いずれかのLANカード120のLANコントローラが、リンクダウンを検知するまで待機し(S100:No)、リンクダウンを検知すると(S100:Yes)、S105の処理に移行する。
【0031】
ステップ105(S105)において、リンクダウンを検知したLANカード120のLANコントローラは、製品ファームにリンク変化割込み通知し、リンクダウンを通知する。
【0032】
ステップ110(S110)において、制御プレーンコア処理部300のDPDKでスレッドを起動する。
ステップ115(S115)において、制御プレーンコア処理部300のLANドライバ360のリンクダウン検出部362は、LANカード120からの割込み通知に基づいて、リンクダウンを検出する。
【0033】
ステップ120(S120)において、送信処理置換部364は、リンクダウン検出部362によりリンクダウンが検出されると、リンクダウンしたLANカード120に割り当てられたデータプレーンコア処理部400のLANドライバ460に対して、送信処理を送信ドロップ処理に置換するよう指示する。
データプレーンコア処理部400のLANドライバ460は、送信処理置換部364からの指示に応じて、送信処理部462による送信処理を、送信ドロップ処理部464による送信ドロップ処理に置換する。
【0034】
ステップ125(S125)において、フラッシュ処理部366は、リンクダウンしたLANカード120に対して通信停止を指示し、その後に、通信開始を指示する。
LANカード120は、フラッシュ処理部366からの指示に応じて、通信を停止した後で、通信を開始し、FIFO内の送信パケットをフラッシュする。
【0035】
このように、ネットワーク装置10は、いずれかのLANカード120でリンクダウンした場合に、このLANカード120に割り当てられたデータプレーンコアのLANドライバ460において、送信処理を送信ドロップ処理に置換して、送信データの準備を停止させる。さらに、ネットワーク装置10は、リンクダウンしたLANカード120に対して、フラッシュ処理を実行させて、FIFOに滞留した送信パケットがリンクアップ後に送出されないようにする。
【0036】
図8は、リンクアップ時におけるネットワーク装置10の処理(S20)を説明するフローチャートである。
図8に例示するように、ステップ200(S200)において、いずれかのLANカード120のLANコントローラが、リンクアップを検知するまで待機し(S200:No)、リンクアップを検知すると(S200:Yes)、S205の処理に移行する。
【0037】
ステップ205(S205)において、リンクアップを検知したLANカード120のLANコントローラは、製品ファームにリンク変化割込み通知し、リンクアップを通知する。
【0038】
ステップ210(S210)において、制御プレーンコア処理部300のDPDKでスレッドを起動する。
ステップ215(S215)において、制御プレーンコア処理部300のLANドライバ360のリンクダウン検出部362は、LANカード120からの割込み通知に基づいて、リンクアップを検出する。
【0039】
ステップ220(S220)において、送信処理置換部364は、リンクダウン検出部362によりリンクアップが検出されると、リンクアップしたLANカード120に割り当てられたデータプレーンコア処理部400のLANドライバ460に対して、送信ドロップ処理を送信処理に置換するよう指示する。
データプレーンコア処理部400のLANドライバ460は、送信処理置換部364からの指示に応じて、送信ドロップ処理部464による送信ドロップ処理を、送信処理部462による送信処理に置換する。
【0040】
このように、ネットワーク装置10は、いずれかのLANカード120について、リンクアップが検出されると、送信ドロップ処理から送信処理に戻して、パケット送信を再開する。
【0041】
以上説明したように、本実施形態のネットワーク装置10は、いずれかのLANカード120においてリンクダウンが発生した場合に、対応するLANドライバ460の送信処理を送信ドロップ処理に置換することにより、このLANカード120で送信するパケットの準備を停止して、パケットの準備に要するコンピュータリソースの浪費を抑制する。
また、本ネットワーク装置10は、リンクダウンが発生した場合に、対応するLANカード120のFIFOをフラッシュさせて、時機を逸したデータ送信を抑制する。