JP2017046283A - 情報処理装置、情報処理方法、及びプログラム - Google Patents

情報処理装置、情報処理方法、及びプログラム Download PDF

Info

Publication number
JP2017046283A
JP2017046283A JP2015169018A JP2015169018A JP2017046283A JP 2017046283 A JP2017046283 A JP 2017046283A JP 2015169018 A JP2015169018 A JP 2015169018A JP 2015169018 A JP2015169018 A JP 2015169018A JP 2017046283 A JP2017046283 A JP 2017046283A
Authority
JP
Japan
Prior art keywords
transmission
lan card
reception
unit
processing
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.)
Granted
Application number
JP2015169018A
Other languages
English (en)
Other versions
JP6195316B2 (ja
Inventor
隼 安土
Hayato Azuchi
隼 安土
桂介 河合
Keisuke Kawai
桂介 河合
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.)
PFU Ltd
Original Assignee
PFU Ltd
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 PFU Ltd filed Critical PFU Ltd
Priority to JP2015169018A priority Critical patent/JP6195316B2/ja
Publication of JP2017046283A publication Critical patent/JP2017046283A/ja
Application granted granted Critical
Publication of JP6195316B2 publication Critical patent/JP6195316B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】 他のモジュールに対する影響を抑えながら、LANカードを再起動させることができる情報処理装置を提供する。
【解決手段】 情報処理装置は、LANカードを介してデータの送受信を行う送受信部と、送受信部からの制御情報に応じて、LANカードにアクセスし、データの送受信を行う下位送受信部と、LANカードの異常を検知する検知部と、検知部により異常が検知された場合に、LANカードに対して再起動動作を指示する復帰指示部とを有し、送受信部は、復帰指示部により指示された再起動動作が実行されている間、下位送受信部に対して、少なくとも送信処理を禁止する制御情報を出力する。好適には、検知部は、送受信部が管理している送信キューの状態に基づいて、前記LANカードの異常を検知する。
【選択図】図2

Description

本発明は、情報処理装置、情報処理方法、及びプログラムに関する。
例えば、特許文献1には、調整システムを利用して共有リソースの障害を判断し、リセットと、共有リソースへのアクセスを制御できるマルチコアシステムが開示されている。
米国特許出願公開第2010/0325495号明細書
他のモジュールに対する影響を抑えながら、LANカードを再起動させることができる情報処理装置を提供することを目的とする。
本発明に係る情報処理装置は、LANカードを介してデータの送受信を行う送受信部と、前記送受信部からの制御情報に応じて、前記LANカードにアクセスし、データの送受信を行う下位送受信部と、前記LANカードの異常を検知する検知部と、前記検知部により異常が検知された場合に、LANカードに対して再起動動作を指示する復帰指示部とを有し、前記送受信部は、前記復帰指示部により指示された再起動動作が実行されている間、前記下位送受信部に対して、少なくとも送信処理を禁止する制御情報を出力する。
好適には、前記検知部は、前記送受信部が管理している送信キューの状態に基づいて、前記LANカードの異常を検知する。
好適には、前記復帰指示部は、単一の制御プレーンコアであり、前記送受信部は、複数のデータプレーンコアを含み、全ての前記データプレーンコアが、少なくとも送信処理を禁止する制御情報を前記下位送信部に出力する。
好適には、前記検知部は、いずれかの前記データプレーンコアで既定期間、送信キューが変化しなかった場合に、LANカードの異常であると判断する。
好適には、前記制御プレーンコアは、LANカードの再起動動作が実施されている間、上位層からの要求を無視し、前記下位送信部に対して、LANカードの終了処理、初期化処理及び開始処理を順に実行させる制御情報を出力して、LANカードの再起動動作を実現させる。
本発明に係る情報処理方法は、LANカードを介してデータの送受信処理を行う送受信ステップと、前記送受信ステップからの制御情報に応じて、前記LANカードにアクセスし、データの送受信を行う下位送受信ステップと、前記LANカードの異常を検知する検知ステップと、前記LANカードの異常が検知された場合に、前記LANカードに対して再起動動作を指示する復帰指示ステップと、前記LANカードの前記再起動動作が実行されている間、データの送受信処理を行う下位送受信ステップに対して、少なくとも送信処理を禁止する制御情報を出力する出力ステップとを有する。
本発明に係るプログラムは、LANカードを介してデータの送受信処理を行う送受信機能と、前記送受信機能からの制御情報に応じて、前記LANカードにアクセスし、データの送受信を行う下位送受信機能と、前記LANカードの異常を検知する検知機能と、前記LANカードの異常が検知された場合に、前記LANカードに対して再起動動作を指示する復帰指示機能と、前記LANカードの前記再起動動作が実行されている間、データの送受信処理を行う下位送受信機能に対して、少なくとも送信処理を禁止する制御情報を出力する出力機能とをコンピュータに実現させる。
他のモジュールに対する影響を抑えながら、LANカードを再起動させることができる。
ネットワーク装置10を含むネットワーク通信システム1のハードウェア構成を例示する図である。 ネットワーク装置10のハードウェア構成を例示する図である。 ネットワーク装置10の機能ブロックを例示する図である。 図3のLANドライバ360(制御プレーンコア側)及びLANドライバ460(データプレーンコア側)のより詳細な機能構成を例示する図である。 (A)は、制御プレーンコア及びデータプレーンコアと、LANカードのインタフェースとの間の関係を中心としたシステム構成を例示する図であり、(B)は、単一のインタフェースに着目してみた場合のシステム構成を例示する図である。 通常状態のデータプレーンコア処理部400によるパケット送受信処理を模式的に説明する図である。 LANカード再起動中のデータプレーンコア処理部400の状態を模式的に説明する図である。 データプレーンコア側の異常検知処理(S10)を説明するフローチャートである。 制御プレーンコア側の異常検知処理(S20)を説明するフローチャートである。 LANカードの再起動処理(S30)を説明するフローチャートである。
以下、本発明の実施形態を、図面を参照して説明する。
図1は、ネットワーク装置10を含むネットワーク通信システム1のハードウェア構成を例示する図である。
図1に例示するように、ネットワーク通信システム1は、複数のネットワーク装置10と、これを接続するネットワークスイッチ20とを含む。
ネットワーク装置10は、ネットワークに接続して使用されるネットワーク機器である。ネットワーク装置10は、本発明に係る情報処理装置の一例である。本例のネットワーク装置は、LANケーブル及びネットワークスイッチ20を介してLANに接続しており、帯域制御機能及びファイアウォール機能などを有すると共に、他のネットワーク装置10と二重化して冗長構成によって耐障害性を高めている。具体的には、稼働中のネットワーク装置10A(Active)と、待機中のネットワーク装置10B(Standby)との間で生存監視パケットが送受信され、既定時間生存監視パケットが送受信されない場合に、待機中のネットワーク装置10Bが稼働状態となり、役割を引き継ぐ。
例えば、本例のネットワーク通信システム1では、2台のネットワーク装置10の間で、1秒間隔で生存監視パケットが送信され、生存監視パケットの送信が3秒以上滞ると、二重化監視でエラー検出となり、Active/Standbyのネットワーク装置10の切り替えが発生するように設定されている。この場合、LANカードの異常などで送信タイムアウトが検出され、リセットリカバリして復旧させるまでに3秒以上の時間がかかってしまうと、ネットワーク装置10間で生存監視パケットの送信ができず、リカバリできる事象であるにも関わらずActive/Standbyの系切り替えが発生してしまう。したがって、本例では、送信タイムアウト検出からリセットリカバリまでを3秒以内に完了させることが望ましい。
図2は、ネットワーク装置10のハードウェア構成を例示する図である。
図2に例示するように、ネットワーク装置10は、CPU100、メモリ102、複数のスロット104、サウスブリッジ106、ハードディスクドライブ108、コンパクトフラッシュ変換アダプタ110、及び、DVDドライブ112を有する。
CPU100は、中央処理装置である。本例のCPU100は、複数のコアからなるマルチコアプロセッサである。
メモリ102は、例えば、半導体メモリであり、CPU100に接続され、主記憶装置として機能する。
スロット104は、拡張スロットであり、例えば、LANカード120などが挿入される。本例のスロット104には、LANカード120が挿入されており、本例のLANカード120には、PCIスイッチを介して複数のインタフェース(#0〜#3)が設けられている。ここで、LANカードとは、広義のネットワークカードを意味し、イーサネット(登録商標)に対する狭義のLANカードだけではなく、ファイバーチャネルカードなどのネットワークカードやネットワークアダプタなどを含む概念である。
サウスブリッジ106は、例えば、SATAバスなどを接続するICチップである。本例では、サウスブリッジ106には、ハードディスクドライブ108、コンパクトフラッシュ変換アダプタ110、及び、DVDドライブ112が接続されている。
本例のネットワーク装置10は、上記ハードウェア構成にデータプレーン開発キット(Data Plane Development Kit)を採用して、パケット処理の高速化を実現している。
ここで、オープンソースソフトウェアであるデータプレーン開発キットでは、送信処理が複数コア(複数のデータプレーンコア)に跨って実行される場合の送信タイムアウト検出処理及びリセット処理が用意されていない。すなわち、データプレーン開発キットで採用されているLANドライバ(PMD:Polling Mode Driver)では、制御プレーンコアとデータプレーンコアという二つの機能に分離されている。制御プレーンコアでは、主にLANカードに対する制御を行い、データプレーンコアでは、パケット送受信処理を行うという特殊なCPUコアの使い方となっている。さらに、パケットを高速に処理するためにデータプレーンコアが複数存在し、一つのLANカード上のインタフェースに対して、コア毎に送受信キューを用意している。この、各コアに割り当てられた送受信キューを常時ポーリングすることで、高速なパケット処理を実現している。このパケット処理機構に則って、タイムアウト検出処理とリセット処理を実装する必要がある。
パケット送信キューはデータプレーンコアが管理しているため、送信キューの状態が変化しないことを検出して、その状況が所定時間続いてタイムアウトしたことを判定する処理は、データプレーンコア上に実装する必要がある。一方、LANカードのインタフェースに対してリセットを指示してリカバリを行う処理は、制御プレーンコア上に実装する必要がある。このため、これらの機能をデータプレーン開発キットで実現するには、複数コア間の連携が必要になる。つまり、異常検知処理及び再起動処理の影響範囲が広くなり、排他制御などが複雑になる可能性があった。
図3は、ネットワーク装置10の機能ブロックを例示する図である。
図3に例示するように、ネットワーク装置10は、LANドライバの機能ブロックとして、制御プレーンコア処理部300と、データプレーンコア処理部400とを有する。ここで、制御プレーンコアと制御プレーンコア処理部は実質的に同じものであるが、ハードウェアに着目した場合には「制御プレーンコア」と呼び、機能又はソフトウェアに着目した場合には「制御プレーンコア処理部」と呼ぶ。データプレーンコアとデータプレーンコア処理部の関係も同様である。
制御プレーンコア処理部300は、LANカード120などの制御処理を行う。本例の制御プレーンコア処理部300は、上位エンジン処理部320、LANドライバ共通部340、及びLANドライバ360を有する。上位エンジン処理部320は、上位層からの指示に応じて、制御に必要なデータを、LANドライバ共通部340及びLANドライバ360を介して、LANカード120に出力する。制御プレーンコア処理部300は、本発明に係る復帰指示部の一例である。本例の制御プレーンコア処理部300は、LANカード120の異常が検知された場合に、LANカード120の終了処理、初期化処理及び開始処理を順に実行させる制御情報を出力して、LANカード120の再起動動作を実現させる。
データプレーンコア処理部400は、パケット処理を行う。本例のデータプレーンコア処理部400は、上位エンジン処理部420、LANドライバ共通部440、及びLANドライバ460を有する。上位エンジン処理部420は、ファイアウォールなどの処理を実行する。
LANドライバ共通部440は、上位エンジン処理部420からの指示に応じて、送受信するパケットに対してLANカード共通の処理を施す。LANドライバ共通部440は、本発明に係る送受信部の一例であり、LANカードの再起動動作が実行されている間、LANドライバ460に対して、少なくとも送信処理を禁止する制御情報を出力する。より具体的には、LANドライバ共通部440は、送受信処理を空振りさせる空振り関数をコールする。
LANドライバ460は、LANカード120に直接アクセスして、LANドライバ共通部440から指示されたパケットの送受信を行う。すなわち、受信パケットは、LANドライバ460でLANカード120から受け取り、LANドライバ共通部440を通過して、上位エンジン処理部420でファイアウォール機能などの固有機能を適用する。送信パケットは、上位エンジン処理部420からLANドライバ共通部440を通過して、LANドライバ460からLANカード120に受け渡される。LANドライバ460は、本発明に係る下位送受信部の一例である。
図4は、図3のLANドライバ360(制御プレーンコア処理部)及びLANドライバ460(データプレーンコア処理部)のより詳細な機能構成を例示する図である。
図4に例示するように、制御プレーンコア処理部300に設けられたLANドライバ360は、アクセス制御部362、ダミーアクセス制御部364、監視スレッド部366、及びリセット処理部368を有する。
アクセス制御部362は、上位からの制御依頼に応じて、パケット処理に関与する各構成を制御する。本例のアクセス制御部362は、データプレーン開発キットにおいて用意されている制御機能を実現する。
ダミーアクセス制御部364は、リセット処理部368によりLANカード120の再起動動作が実行されている間に、上位からの制御依頼を受けても、制御プレーンコア処理部300がこの依頼に対応する処理を何もしない状態にする。
監視スレッド部366は、複数のデータプレーンコア処理部400を定期的にチェックして、送信タイムアウト検出フラグがセットされているか否かを監視する。監視スレッド部366は、いずれかのデータプレーンコア処理部400に送信タイムアウト検出フラグがセットされている場合に、LANカード120の異常が発生したものと判定する。監視スレッド部366は、本発明に係る検知部の一例である。
リセット処理部368は、監視スレッド部366によりLANカード120の異常が検知された場合に、LANカード120に対して、再起動動作を実施するよう指示する。本例のリセット処理部368は、LANカード120の終了処理、初期化処理及び開始処理を順に実行させる制御情報を出力して、LANカード120の再起動動作を実現させる。
データプレーンコア処理部400に設けられたLANドライバ460は、送信処理部462、ダミー送信処理部466、受信処理部468、及びダミー受信処理部470を有する。送信処理部462は、タイムアウトチェック部464を含む。
送信処理部462は、データプレーン開発キットに即したパケット送信処理を実行する。本例の送信処理部462は、各データプレーンコア処理部400に割り当てられた送信キューを常時ポーリングして、パケットの送信処理を繰り返し実行する。
タイムアウトチェック部464は、送信キューの状態を監視し、既定時間送信キューの状態が変化しない場合に、送信タイムアウト検出フラグをセットする。
ダミー送信処理部466は、LANドライバ共通部440によりコールされた送信空振り関数に応じて、パケット送信処理の空振りを行う。すなわち、ダミー送信処理部466は、LANドライバ共通部440によりコールされた送信空振り関数に従って、LANカード120に対するアクセスを行わずに、パケット送信できなかった旨を上位層に返す。これにより、上位層では、送信不可を検知し、リトライ処理やパケットドロップ扱いとすることができる。換言すると、リンクアップ状態を継続させながらハードウェアにアクセスしない状態となり、疑似的に送信しているようにエミュレートしている。
受信処理部468は、データプレーン開発キットに即したパケット受信処理を実行する。本例の受信処理部468は、送信処理部462に続いて、パケットの受信処理を繰り返し実行する。
ダミー受信処理部470は、LANドライバ共通部440によりコールされた受信空振り関数に応じて、パケット受信処理の空振りを行う。すなわち、ダミー受信処理部470は、LANドライバ共通部440によりコールされた受信空振り関数に従って、LANカード120に対するアクセスを行わずに、パケット受信できなかった旨を上位層に返す。これにより、上位層では、受信パケット無しということで処理を継続できる。
図5(A)は、制御プレーンコア及びデータプレーンコアと、LANカードのインタフェースとの間の関係を中心としたシステム構成を例示する図である。
図5(B)は、単一のインタフェースに着目してみた場合のシステム構成を例示する図である。
図5に例示するように、CPU100の複数のコア(#0〜#N)のうち、一つが制御プレーンコアとして割り当て、残りのN個のコアがデータプレーンコアとして割り当てられている。それぞれのデータプレーンコアが、ループ処理によってパケット送受信処理を実行している。
つまり、それぞれのデータプレーンコアでは、LANカード120のインタフェース毎に送受信キューを用意しており、送受信処理を無限ループで実行することで、高速なパケット処理を実現している。この高速パケット処理では、送信処理と受信処理を延々ループして実行しており、当然、タイミングによってはパケットが存在しない場合が存在するが、このような場合も「通常状態」として存在しうる。したがって、パケット送受信処理の空振りも多くの構成は「通常状態」として処理を継続することができる。
これにより、LANカード120の再起動処理中も、その影響範囲を必要最小限に限定することができる。
図6は、通常状態のデータプレーンコア処理部400によるパケット送受信処理を模式的に説明する図である。
図7は、LANカード再起動中のデータプレーンコア処理部400の状態を模式的に説明する図である。
図6に示すように、各データプレーンコア処理部400では、各コアにくくりつけられた単一スレッドがパケット送受信関数を無限ループで起動している。上位エンジン処理部420からの指示が、LANドライバ共通部440(図のLANドライバ共通部)を介して、最下層のLANドライバ460に入力され、LANドライバ460がLANカード120に直接アクセスしてパケットの送受信を連続的に行っている。
LANカード120の異常が検知され、再起動動作が開始されると、図7に示すように、LANドライバ共通部440は、LANドライバ460に対して、パケットの送受信を実行させない関数(送受信空振り関数)に置換する。これにより、下位のLANドライバ460では、リセット中のLANカード120に対するアクセスを行わずに、結果をLANドライバ共通部440に返し、これが上位エンジン処理部420に結果として返される。上位エンジン処理部420では、通常時(図6の場合)と同じ処理が継続される。
なお、LANカード120の再起動が完了すると、LANドライバ共通部440は、送受信空振り関数を、図6の通常の関数に戻して、通常状態に戻す。
図8は、データプレーンコア側の異常検知処理(S10)を説明するフローチャートである。
図8に例示するように、データプレーンコア処理部400のタイムアウトチェック部464(図4)は、使用可能ディスクリプタの有無を判定し、使用可能ディスクリプタが存在しない場合(S100:Yes)、S110の処理に移行し、使用可能なディスクリプタが存在する場合(S100:No)、S105の処理に移行する。
ステップ105(S105)において、タイムアウトチェック部464は、変数last_tx_endにAll Fを設定し、送信タイムアウト検出フラグdetect_tx_hungにfalseを設定する。
ステップ110(S110)において、タイムアウトチェック部464は、変数tx_endが変数last_tx_endと不一致か否かを判定する。変数tx_endが変数last_tx_endと不一致である場合(S110:Yes)、以前検出した送信停止とは異なるインデックスで停止しているため、停止は解消され、また異なる停止が発生したと判断する。変数tx_endが変数last_tx_endと一致している場合(S110:No)、タイムアウトチェック部464は、検出した送信停止が継続していると判断し、送信停止継続時間の判断(S120)に移る。
ステップ115(S115)において、タイムアウトチェック部464は、送信キューの最後のエントリインデックスを変数last_tx_endに設定し、送信ディスクリプタ獲得不可を検出した時刻tx_busy_timeに、現在時刻を設定する。
タイムS100の処理に戻る。
ステップ120(S120)において、タイムアウトチェック部464は、送信キューが変化しない時間が2.9秒を超えている否かを判定し、2.9秒を超えた場合(S120:Yes)、S125の処理に移行し、2.9秒以下である場合(S120:No)、S100の処理に戻る。
ステップ125(S125)において、タイムアウトチェック部464は、送信タイムアウト検出フラグdetect_tx_hungにtrueを設定して、フラグを立てる。
このように、本例のタイムアウトチェック部464は、送信ディスクリプタ獲得不可を検出後、2.9秒間送信キューが変化しない場合、送信タイムアウト検出とする。これは、二重化切り替えの閾値として、3秒間送信不可という値があるため、制御プレーンコアとデータプレーンコアの処理時間の合計を3秒以内にする必要があることを前提として、送信タイムアウトの検出閾値を極力長くしたためである。
図9は、制御プレーンコア側の異常検知処理(S20)を説明するフローチャートである。
図9に例示するように、ステップ200(S200)において、制御プレーンコア処理部300は、送信タイムアウト検出フラグと共に、送信処理の初期化を行う。
ステップ205(S205)において、制御プレーンコア処理部300は、監視スレッド部366(図4)を定期的に起動させる。
ステップ210(S210)において、起動した監視スレッド部366は、全データプレーンコア処理部400の管理領域をチェックする。
ステップ215(S215)において、監視スレッド部366は、いずれかのデータプレーンコア処理部400において送信タイムアウト検出フラグdetect_tx_hungがtrueに設定されているか否かを判定し、いずれかのデータプレーンコア処理部400において送信タイムアウト検出フラグdetect_tx_hungがtrueに設定されている場合(S215:Yes)、S220の処理に移行し、いずれの送信タイムアウト検出フラグdetect_tx_hungもfalseに設定されている場合(S215:No)、S230の処理に移行する。
ステップ220(S220)において、制御プレーンコア処理部300は、PAUSEフレームを受信中であるか否かを判定し、PAUSE受信中である場合(S220:Yes)に、S230の処理に移行し、これ以外の場合(S220:No)に、S225の処理に移行する。
ステップ225(S225)において、監視スレッド部366は、LANカード120の異常を検知したものと判断して、リセット処理部368にリセット処理を指示する。
リセット処理部368は、LANカード120に再起動動作を指示する。制御プレーンコア処理部300は、全てのデータプレーンコア処理部用の資源を初期化し、変数及び送信タイムアウトフラグをfalseに初期化する。
ステップ230(S230)において、監視スレッド部366は、0.1秒間待機して、S210の処理に戻る。
このように、制御プレーンコア処理部300では、全データプレーンコア処理部400の送信タイムアウト検出フラグをチェックするために、監視スレッド部366を起動させる。監視スレッド部366は、起動後、全データプレーンコア処理部400の送信タイムアウト検出フラグを0.1秒間隔で定期的にチェックする。こうすることで、データプレーンコア処理部400で要した2.9秒と合わせて、3秒以内にリセットリカバリを実行することができる。
図10は、LANカードの再起動処理(S30)を説明するフローチャートである。
図10に例示するように、ステップ300(S300)において、制御プレーンコア処理部300は、リセットフラグを設定する。
ステップ305(S305)において、制御プレーンコア処理部300は、全てのデータプレーンコア処理部400のLANドライバ共通部440に対して、送受信空振り関数を設定するよう指示し、各データプレーンコア処理部400のLANドライバ共通部440は、送受信空振り関数をLANドライバ460に設定する。これにより、送信処理部462及び受信処理部468が送受信処理を停止し、ダミー送信処理部466及びダミー受信処理部470が送受信空振り処理を開始する。結果、LANカード120に対するデータプレーンコア処理部400のアクセスが無くなる。
ステップ310(S310)において、制御プレーンコア処理部300のダミーアクセス制御部364は、上位層からの要求に対して未サポート応答するように設定して、別スレッドからの要求に対して、未サポートである旨を応答する。
ステップ315(S315)において、制御プレーンコア処理部300は、20ミリ秒待機して、現在のデータプレーン処理部400における処理を完了させる。
ステップ320(S320)において、制御プレーンコア処理部300は、close処理を実行する。具体的には、リセット処理部368が、LANカード120の終了処理を実行させる。
ステップ325(S325)において、制御プレーンコア処理部300は、900ミリ秒待機する。リンクダウンからアップまでの間に、最低でも700ミリ秒を要するため、上記待機期間が設けられている。
ステップ330(S330)において、制御プレーンコア処理部300のリセット処理部368は、LANカード120の初期化処理を開始する。なお、初期化処理中には、データプレーンコア処理部400に送受信関数を設定させない。
ステップ335(S335)において、リセット処理部368は、LANカード120のconfigure処理を実行する。
ステップ340(S340)において、リセット処理部368は、LANカード120に、送受信処理に用いる送受信キューのキューセットアップ処理を実行する。
ステップ345(S345)において、リセット処理部368は、LANカード120の開始処理を開始する。なお、開始処理中にも、データプレーンコア処理部400に送受信関数を設定させない。
ステップ350(S350)において、リセット処理部368は、LANカード120にプロミスキャスモードを設定する。
ステップ355(S355)において、ダミーアクセス制御部364は、未サポート応答を終了し、アクセス制御部364が、通常の動作モードを再開する。
ステップ360(S360)において、制御プレーンコア処理部300は、全てのデータプレーンコア処理部400のLANドライバ共通部440に対して、送受信関数を元に戻すよう指示する。
各データプレーンコア処理部400のLANドライバ共通部440は、送受信空振り関数を通常の送受信関数に戻す。すなわち、ダミー送信処理部466及びダミー受信処理部470が送受信空振り処理を終了し、送信処理部462及び受信処理部468が送受信処理を再開する。
ステップ365(S365)において、制御プレーンコア処理部300は、リセットフラグを解除して、LANカード120の再起動処理を完了する。
次に、システムの一例を用いて、送受信空振り関数の具体例を説明する。
データプレーンコア処理部400のパケット送受信処理において、LANドライバ460の送受信関数は、グローバル領域のI/Fデバイス構造体に設定された関数ポインタ(rx_pkt_burst、tx_pkt_burst)をLANドライバ共通部440がコールすることで起動される。
struct rte_eth_dev {
eth_rx_burst_t rx_pkt_burst; /**< Pointer to PMD receive function. */
eth_tx_burst_t tx_pkt_burst; /**< Pointer to PMD transmit function. */
struct rte_eth_dev_data *data; /**< Pointer to device data */
const struct eth_driver *driver;/**< Driver for this device */
struct eth_dev_ops *dev_ops; /**< Functions exported by PMD */
struct rte_pci_device *pci_dev; /**< PCI info. supplied by probing */
struct rte_eth_dev_cb_list callbacks; /**< User application callbacks */
};
送受信関数のインタフェースは、以下の通り形式が決まっており、パケット情報域など必要な情報を引数で渡して、復帰値で受信パケット数、送信パケット数を応答する。
typedef uint16_t (*eth_rx_burst_t)(void *rxq,
struct rte_mbuf **rx_pkts,
uint16_t nb_pkts);
/**< @internal Retrieve input packets from a receive queue of an Ethernet device. */
typedef uint16_t (*eth_tx_burst_t)(void *txq,
struct rte_mbuf **tx_pkts,
uint16_t nb_pkts);
/**< @internal Send output packets on a transmit queue of an Ethernet device. */
今回、上記の関数インタフェースに合わせて、以下の空振り関数を実装した。受信関数を起動して受信処理を行ったが、LANカード120から受信したパケットが存在しなかった、というように上位層に対して見せている。また、送信関数を起動して送信処理を行ったが、LANカード120に対して送信依頼できたパケットが存在しなかった、というように上位層に対して見せている。
(受信処理の空振り関数)
uint16_t
eth_igb_recv_pkts_reinit(__rte_unused void *rx_queue,
__rte_unused struct rte_mbuf **rx_pkts,
__rte_unused uint16_t nb_pkts)
{
/* now resetting */
return 0;
}
(送信処理の空振り関数)
uint16_t
eth_igb_xmit_pkts_reinit(__rte_unused void *tx_queue,
__rte_unused struct rte_mbuf **tx_pkts,
__rte_unused uint16_t nb_pkts)
{
/* now resetting */
return 0;
}
上記は、LANカード120の1Gbpsインタフェースの実装例だが、10Gbpsインタフェースの場合も同様に以下の関数を登録する実装を行った。
uint16_t
ixgbe_recv_pkts_reinit(__rte_unused void *rx_queue,
__rte_unused struct rte_mbuf **rx_pkts,
__rte_unused uint16_t nb_pkts)
{
/* now resetting */
return 0;
}
uint16_t
ixgbe_xmit_pkts_reinit(__rte_unused void *tx_queue,
__rte_unused struct rte_mbuf **tx_pkts,
__rte_unused uint16_t nb_pkts)
{
/* now resetting */
return 0;
}
同様に、制御プレーンコア処理部300においても、LANドライバ360に対する各種制御関数は、グローバル領域のI/Fデバイス構造体に設定された関数ポインタをLANドライバ共通部340がコールすることで起動される。これらを「NULL」に設定することで、各種制御関数が未サポートである状態を作り出す。例として、インタフェースの設定を変更する場合、dev_configureという関数ポインタに制御関数が登録されている。制御関数起動には、以下のマクロを使用しているが、関数ポインタが「NULL」になることで、-ENOTSUPを応答する処理となる。
FUNC_PTR_OR_ERR_RET(*dev->dev_ops->dev_configure, -ENOTSUP);
図10のフローチャートでは、「制御プレーンコア処理部300の別スレッドからの要求には、未サポート応答するように設定」の箇所では、例えば、各種制御関数を「NULL」に設定し、「制御プレーンの別スレッドからの要求には未サポート応答する設定を解除」の箇所では、通常の制御関数に戻す。
ちなみに、本実施形態では、制御プレーンコア処理部300では監視スレッド部366がインタフェースの個数分生成され、それらが性能に影響を及ぼすことが懸念されたが、本例のネットワーク装置10にて上記の設定で性能影響は無視できる範囲(0.7%)であることが確認されている。
以上説明したように、本実施形態のネットワーク装置10は、LANカード120に異常が発生した場合に、その異常を検知し、影響範囲を限定しながらLANカード120の再起動動作を実行させることができる。
1…ネットワーク通信システム
10…ネットワーク装置
100…CPU
102…メモリ
104…スロット
120…LANカード
300…制御プレーンコア処理部
320…上位エンジン処理部
340…LANドライバ共通部
360…LANドライバ
362…アクセス制御部
364…ダミーアクセス制御部
366…監視スレッド部
368…リセット処理部
400…データプレーンコア処理部
420…上位エンジン処理部
440…LANドライバ共通部
460…LANドライバ
462…送信処理部
464…タイムアウトチェック部
466…ダミー送信処理部
468…受信処理部
470…ダミー受信処理部

Claims (7)

  1. LANカードを介してデータの送受信を行う送受信部と、
    前記送受信部からの制御情報に応じて、前記LANカードにアクセスし、データの送受信を行う下位送受信部と、
    前記LANカードの異常を検知する検知部と、
    前記検知部により異常が検知された場合に、LANカードに対して再起動動作を指示する復帰指示部と
    を有し、
    前記送受信部は、前記復帰指示部により指示された再起動動作が実行されている間、前記下位送受信部に対して、少なくとも送信処理を禁止する制御情報を出力する
    情報処理装置。
  2. 前記検知部は、前記送受信部が管理している送信キューの状態に基づいて、前記LANカードの異常を検知する
    請求項1に記載の情報処理装置。
  3. 前記復帰指示部は、単一の制御プレーンコアであり、
    前記送受信部は、複数のデータプレーンコアを含み、
    全ての前記データプレーンコアが、少なくとも送信処理を禁止する制御情報を前記下位送信部に出力する
    請求項2に記載の情報処理装置。
  4. 前記検知部は、いずれかの前記データプレーンコアで既定期間、送信キューが変化しなかった場合に、LANカードの異常であると判断する
    請求項3に記載の情報処理装置。
  5. 前記制御プレーンコアは、LANカードの再起動動作が実施されている間、上位層からの要求を無視し、前記下位送信部に対して、LANカードの終了処理、初期化処理及び開始処理を順に実行させる制御情報を出力して、LANカードの再起動動作を実現させる
    請求項4に記載の情報処理装置。
  6. LANカードを介してデータの送受信処理を行う送受信ステップと、
    前記送受信ステップからの制御情報に応じて、前記LANカードにアクセスし、データの送受信を行う下位送受信ステップと、
    前記LANカードの異常を検知する検知ステップと、
    前記LANカードの異常が検知された場合に、前記LANカードに対して再起動動作を指示する復帰指示ステップと、
    前記LANカードの前記再起動動作が実行されている間、データの送受信処理を行う下位送受信ステップに対して、少なくとも送信処理を禁止する制御情報を出力する出力ステップと
    を有する情報処理方法。
  7. LANカードを介してデータの送受信処理を行う送受信機能と、
    前記送受信機能からの制御情報に応じて、前記LANカードにアクセスし、データの送受信を行う下位送受信機能と、
    前記LANカードの異常を検知する検知機能と、
    前記LANカードの異常が検知された場合に、前記LANカードに対して再起動動作を指示する復帰指示機能と、
    前記LANカードの前記再起動動作が実行されている間、データの送受信処理を行う下位送受信機能に対して、少なくとも送信処理を禁止する制御情報を出力する出力機能と
    をコンピュータに実現させるプログラム。
JP2015169018A 2015-08-28 2015-08-28 情報処理装置、情報処理方法、及びプログラム Active JP6195316B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015169018A JP6195316B2 (ja) 2015-08-28 2015-08-28 情報処理装置、情報処理方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015169018A JP6195316B2 (ja) 2015-08-28 2015-08-28 情報処理装置、情報処理方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2017046283A true JP2017046283A (ja) 2017-03-02
JP6195316B2 JP6195316B2 (ja) 2017-09-13

Family

ID=58212296

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015169018A Active JP6195316B2 (ja) 2015-08-28 2015-08-28 情報処理装置、情報処理方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP6195316B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019020853A (ja) * 2017-07-12 2019-02-07 富士通株式会社 情報処理装置、情報処理方法およびプログラム
JP2019176366A (ja) * 2018-03-29 2019-10-10 株式会社Pfu 情報処理装置、情報処理方法、及びプログラム
JP2021048505A (ja) * 2019-09-19 2021-03-25 株式会社Pfu 情報処理装置、情報処理方法、及びプログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05173903A (ja) * 1991-12-25 1993-07-13 Mazda Motor Corp 多重伝送装置
JP2003018312A (ja) * 2001-07-04 2003-01-17 Hitachi Kokusai Electric Inc 遠隔監視システム及び遠隔監視される通信装置
JP2013541241A (ja) * 2010-07-30 2013-11-07 アルカテル−ルーセント ネットワークにおけるマルチ・セル・サポートのための装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05173903A (ja) * 1991-12-25 1993-07-13 Mazda Motor Corp 多重伝送装置
JP2003018312A (ja) * 2001-07-04 2003-01-17 Hitachi Kokusai Electric Inc 遠隔監視システム及び遠隔監視される通信装置
JP2013541241A (ja) * 2010-07-30 2013-11-07 アルカテル−ルーセント ネットワークにおけるマルチ・セル・サポートのための装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019020853A (ja) * 2017-07-12 2019-02-07 富士通株式会社 情報処理装置、情報処理方法およびプログラム
JP2019176366A (ja) * 2018-03-29 2019-10-10 株式会社Pfu 情報処理装置、情報処理方法、及びプログラム
JP2021048505A (ja) * 2019-09-19 2021-03-25 株式会社Pfu 情報処理装置、情報処理方法、及びプログラム
JP7304250B2 (ja) 2019-09-19 2023-07-06 株式会社Pfu 情報処理装置、情報処理方法、及びプログラム

Also Published As

Publication number Publication date
JP6195316B2 (ja) 2017-09-13

Similar Documents

Publication Publication Date Title
US20140149985A1 (en) Control method for i/o device and virtual computer system
US9331870B2 (en) Switch, information processing apparatus, and information processing system
US20140089492A1 (en) Data collection and control by network devices in communication networks
KR101466791B1 (ko) 네트워크 디바이스의 신호 유실 이벤트 후 자동 복구
JP6195316B2 (ja) 情報処理装置、情報処理方法、及びプログラム
US10530636B2 (en) Link management method, device and system in virtual machine environment
US11398976B2 (en) Method, device, and system for implementing MUX machine
US9164824B2 (en) Information processing apparatus and operation status monitoring method
US20200136912A1 (en) Method, Device, and System for Implementing MUX Machine
CN103684899A (zh) 远程调试方法和装置
CN110677358A (zh) 一种报文处理方法及一种网络设备
CN104536853B (zh) 一种保障双控制器存储设备资源连续可用性的装置
CN104394012A (zh) 集群路由器、mpu及其故障的确定方法、感知控制器
JP7304250B2 (ja) 情報処理装置、情報処理方法、及びプログラム
US10491544B2 (en) Consistency control of a logical path passing through a relay device
JP6979913B2 (ja) 情報処理装置、情報処理方法、及びプログラム
Kitamura et al. Development of a Server Management System Incorporating a Peer-to-Peer Method for Constructing a High-availability Server System
EP2775678B1 (en) Diagnostic port for inter-switch and node link testing in electrical, optical and remote loopback modes
JP3266841B2 (ja) 通信制御装置
CN115202803A (zh) 一种故障处理方法及装置
US11483102B1 (en) Review and retry for minimum speed port channel
WO2024066857A1 (zh) 一种电子设备、处理器、数据传输方法及装置
JP2008148034A (ja) 通信装置及びそのデュプレックス設定方法
CN116010131A (zh) 管理集群中的应用
CN117251039A (zh) 设备复位方法、装置、存储介质及电子设备

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161202

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170804

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170809

R150 Certificate of patent or registration of utility model

Ref document number: 6195316

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150