(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-28
(45)【発行日】2023-07-06
(54)【発明の名称】情報処理装置、情報処理方法、及びプログラム
(51)【国際特許分類】
H04L 69/14 20220101AFI20230629BHJP
H04L 47/41 20220101ALI20230629BHJP
【FI】
H04L69/14
H04L47/41
(21)【出願番号】P 2019170157
(22)【出願日】2019-09-19
【審査請求日】2022-03-16
【新規性喪失の例外の表示】特許法第30条第2項適用 2019年3月26日、株式会社PFUにおいて、株式会社PFUが、リンクダウン処理の時間改善を行った、「IPCOM EX」用の個別ソフトウェア「E30L11NF0101」を販売した。
(73)【特許権者】
【識別番号】000136136
【氏名又は名称】株式会社PFU
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】安土 隼
【審査官】羽岡 さやか
(56)【参考文献】
【文献】特開2016-163084(JP,A)
【文献】特開2017-046283(JP,A)
【文献】米国特許出願公開第2015/0188772(US,A1)
【文献】川島 龍太 Ryota KAWASHIMA,オープンソース仮想スイッチの実装に見るDPDKの使用方法と性能への影響 Performance Effects of DPDK Usage in Open Source Virtual Switches,電子情報通信学会技術研究報告 Vol.116 No.324 IEICE Technical Report,日本,一般社団法人電子情報通信学会 The Institute of Electronics,Information and Communication Engineers,2017年11月17日,第116巻,P.13-18
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/00-69/40
(57)【特許請求の範囲】
【請求項1】
複数のネットワークカードと、
前記ネットワークカードを介して、通信を行うデータプレーンコアと、
前記ネットワークカード及び前記データプレーンコアを制御する制御プレーンコアと
を有し、
前記制御プレーンコアは、いずれかの前記ネットワークカードに対して、状態変化の指示を行った後であって、
リンクアップ又はリンクダウンである状態変化を指示された前記ネットワークカードが状態変化を完了させる前に、他の前記ネットワークカードに対して、状態変化の指示を行
い、
前記制御プレーンコアは、いずれかの前記ネットワークカードに対して、リンクアップ又はリンクダウンの指示を行った後であって、リンクアップ又はリンクダウンを指示された前記ネットワークカードがリンクアップ又はリンクダウンを完了させる前に、他の前記ネットワークカードに対して、リンクアップ又はリンクダウンの指示を行い、
前記制御プレーンコアは、いずれかの前記ネットワークカードに対して、リンクアップ又はリンクダウンの指示を行った後、このネットワークカードにおけるリンクアップ又はリンクダウンの完了を監視する監視スレッドを起動させて、他の前記ネットワークカードに対する指示に移行する、
情報処理装置。
【請求項2】
前記制御プレーンコアは、上位制御部、中位制御部及び下位制御部を含み、
前記中位制御部は、前記上位制御部からの指示に応じて、リンクアップ又はリンクダウンを前記下位制御部に指示して、監視スレッドを起動し、前記上位制御部に対して、リンクアップ又はリンクダウンの完了を通知する
請求項
1に記載の情報処理装置。
【請求項3】
前記上位制御部から他の処理を指示された場合に、前記中位制御部又は前記下位制御部は、全てのネットワークカードのリンクアップが完了するまで、上位からの指示を保留する待合せ処理を実行する
請求項
2に記載の情報処理装置。
【請求項4】
複数のネットワークカードと、前記ネットワークカードを介して、通信を行うデータプレーンコアと、前記ネットワークカード及び前記データプレーンコアを制御する制御プレーンコアとを有する情報処理装置において、
前記制御プレーンコアが、いずれかの前記ネットワークカードに対して、
リンクアップ又はリンクダウンである状態変化の指示を行うステップと、
状態変化を指示された前記ネットワークカードが状態変化を完了させる前に、他の前記ネットワークカードに対して、状態変化の指示を行うステップと
、
前記制御プレーンコアが、いずれかの前記ネットワークカードに対して、リンクアップ又はリンクダウンの指示を行った後であって、リンクアップ又はリンクダウンを指示された前記ネットワークカードがリンクアップ又はリンクダウンを完了させる前に、他の前記ネットワークカードに対して、リンクアップ又はリンクダウンの指示を行うステップと、
前記制御プレーンコアは、いずれかの前記ネットワークカードに対して、リンクアップ又はリンクダウンの指示を行った後、このネットワークカードにおけるリンクアップ又はリンクダウンの完了を監視する監視スレッドを起動させて、他の前記ネットワークカードに対する指示に移行するステップと、
を有する情報処理方法。
【請求項5】
複数のネットワークカードと、前記ネットワークカードを介して、通信を行うデータプレーンコアと、前記ネットワークカード及び前記データプレーンコアを制御する制御プレーンコアとを有するコンピュータにおいて、
前記制御プレーンコアが、いずれかの前記ネットワークカードに対して、
リンクアップ又はリンクダウンである状態変化の指示を行うステップと、
状態変化を指示された前記ネットワークカードが状態変化を完了させる前に、他の前記
ネットワークカードに対して、状態変化の指示を行うステップと
、
前記制御プレーンコアが、いずれかの前記ネットワークカードに対して、リンクアップ又はリンクダウンの指示を行った後であって、リンクアップ又はリンクダウンを指示された前記ネットワークカードがリンクアップ又はリンクダウンを完了させる前に、他の前記ネットワークカードに対して、リンクアップ又はリンクダウンの指示を行うステップと、
前記制御プレーンコアは、いずれかの前記ネットワークカードに対して、リンクアップ又はリンクダウンの指示を行った後、このネットワークカードにおけるリンクアップ又はリンクダウンの完了を監視する監視スレッドを起動させて、他の前記ネットワークカードに対する指示に移行するステップと、
を前記コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、及びプログラムに関する。
【背景技術】
【0002】
例えば、特許文献1には、ループ処理として、複数種類の定型処理を順次繰り返し実施するループ処理部と、既定の条件に合致した場合に、ループ処理部によるループ処理を停止させるループ制御部と、ループ制御部によりループ処理が停止されている場合に、いずれかの定型処理に割り当てられたリソースを解放する解放処理を実施する解放処理部とを有する情報処理装置が開示されている。
また、特許文献2には、ネットワーク入力/出力(NW I/O)デバイス又はネットワークインターフェイスカード(NIC)のための受信キューをモニタリングして、データプレーン展開キット(DPDK)ポーリングスレッドの活動レベルを決定する装置が開示されている。
また、特許文献3には、論理インタフェースをDPDKで制御する方法が開示されている。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2017-046286
【文献】特表2018-507457
【文献】特表2018-507635
【発明の概要】
【発明が解決しようとする課題】
【0004】
制御プレーンコアで複数のネットワークカードが制御される環境下において、ネットワークカードの状態変化を高速化する情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0005】
本発明に係る情報処理装置は、複数のネットワークカードと、前記ネットワークカードを介して、通信を行うデータプレーンコアと、前記ネットワークカード及び前記データプレーンコアを制御する制御プレーンコアとを有し、前記制御プレーンコアは、いずれかの前記ネットワークカードに対して、状態変化の指示を行った後であって、状態変化を指示された前記ネットワークカードが状態変化を完了させる前に、他の前記ネットワークカードに対して、状態変化の指示を行う。
【0006】
好適には、前記状態変化は、リンクアップ又はリンクダウンであり、前記制御プレーンコアは、いずれかの前記ネットワークカードに対して、リンクアップ又はリンクダウンの指示を行った後であって、リンクアップ又はリンクダウンを指示された前記ネットワークカードがリンクアップ又はリンクダウンを完了させる前に、他の前記ネットワークカードに対して、リンクアップ又はリンクダウンの指示を行う。
【0007】
好適には、前記制御プレーンコアは、いずれかの前記ネットワークカードに対して、リンクアップ又はリンクダウンの指示を行った後、このネットワークカードにおけるリンクアップ又はリンクダウンの完了を監視する監視スレッドを起動させて、他の前記ネットワークカードに対する指示に移行する。
好適には、前記制御プレーンコアは、単一のコアであり、複数の前記ネットワークカードに対して、順にリンクアップ又はリンクダウンを指示する。
【0008】
好適には、前記制御プレーンコアは、上位制御部、中位制御部及び下位制御部を含み、前記中位制御部は、前記上位制御部からの指示に応じて、リンクアップ又はリンクダウンを前記下位制御部に指示して、監視スレッドを起動し、前記上位制御部に対して、リンクアップ又はリンクダウンの完了を通知する。
【0009】
好適には、前記上位制御部から他の処理を指示された場合に、前記中位制御部又は前記下位制御部は、全てのネットワークカードのリンクアップが完了するまで、上位からの指示を保留する待合せ処理を実行する。
【0010】
また、本発明に係る情報処理方法は、複数のネットワークカードと、前記ネットワークカードを介して、通信を行うデータプレーンコアと、前記ネットワークカード及び前記データプレーンコアを制御する制御プレーンコアとを有する情報処理装置において、前記制御プレーンコアが、いずれかの前記ネットワークカードに対して、状態変化の指示を行うステップと、状態変化を指示された前記ネットワークカードが状態変化を完了させる前に、他の前記ネットワークカードに対して、状態変化の指示を行うステップとを有する。
【0011】
また、本発明に係るプログラムは、複数のネットワークカードと、前記ネットワークカードを介して、通信を行うデータプレーンコアと、前記ネットワークカード及び前記データプレーンコアを制御する制御プレーンコアとを有するコンピュータにおいて、前記制御プレーンコアが、いずれかの前記ネットワークカードに対して、状態変化の指示を行うステップと、状態変化を指示された前記ネットワークカードが状態変化を完了させる前に、他の前記ネットワークカードに対して、状態変化の指示を行うステップとを前記コンピュータに実行させる。
【発明の効果】
【0012】
制御プレーンコアで複数のネットワークカードが制御される環境下において、ネットワークカードの状態変化を高速化できる。
【図面の簡単な説明】
【0013】
【
図1】ネットワーク装置10を含むネットワーク通信システム1のハードウェア構成を例示する図である。
【
図2】ネットワーク装置10のリンクアグリゲーション機能を説明する模式図である。
【
図3】ネットワーク装置10のハードウェア構成を例示する図である。
【
図4】ネットワーク装置10の機能ブロックを例示する図である。
【
図5】
図4の上位エンジン処理部320、LANドライバ共通部340及びLANドライバハードウェア固有部360のより詳細な機能構成を例示する図である。
【
図6】比較例におけるリンクアップ処理(S10)を説明するシーケンス図である。
【
図7】実施例におけるリンクアップ処理(S20)の前半を説明するシーケンス図である。
【
図8】実施例におけるリンクアップ処理(S20)の後半を説明するシーケンス図である。
【
図9】ハードウェア設定要求があった場合のリンクアップ処理(S28)を説明するシーケンス図である。
【
図10】比較例におけるリンクダウン処理(S30)を説明するシーケンス図である。
【
図11】実施例におけるリンクダウン処理(S40)を説明するシーケンス図である。
【発明を実施するための形態】
【0014】
以下、本発明の実施形態を、図面を参照して説明する。
図1は、ネットワーク装置10を含むネットワーク通信システム1のハードウェア構成を例示する図である。
図1に例示するように、ネットワーク通信システム1は、複数のネットワーク装置10と、これを接続するネットワークスイッチ20とを含む。
ネットワーク装置10は、ネットワークに接続して使用されるネットワーク機器である。ネットワーク装置10は、本発明に係る情報処理装置の一例である。本例のネットワーク装置は、LANケーブル及びネットワークスイッチ20を介してLAN(Local Area Network)に接続しており、帯域制御機能及びファイアウォール機能などを有すると共に、他のネットワーク装置10と二重化して冗長構成によって耐障害性を高めている。具体的には、稼働中のネットワーク装置10A(Active)と、待機中のネットワーク装置10B(Standby)との間で生存監視パケットが送受信され、既定時間生存監視パケットが送受信されない場合に、待機中のネットワーク装置10Bが稼働状態となり、役割を引き継ぐ。
【0015】
例えば、本例のネットワーク通信システム1では、2台のネットワーク装置10の間で、1秒間隔で生存監視パケットが送信され、生存監視パケットの送信が3秒以上滞ると、二重化監視でエラー検出となり、Active/Standbyのネットワーク装置10の切り替えが発生するように設定されている。
【0016】
また、
図2に例示するように、本例のネットワーク装置10は、複数の物理LANインタフェースをグループ化し、一つの論理的なインタフェースとして扱う(リンクアグリゲーション機能)。これにより、回線の帯域幅の拡大と回線の冗長化を同時に実現できる。本例では、リンクアグリゲーションでグループ化できる物理LANインタフェース数は、1~8個であり、本図では、8個の物理LANインタフェースをグループ化し、リンクアグリゲーションを行った場合を具体例として説明する。
【0017】
図3は、ネットワーク装置10のハードウェア構成を例示する図である。
図3に例示するように、ネットワーク装置10は、CPU100、メモリ102、複数のスロット104、及びサウスブリッジ106を有する。
CPU100は、中央処理装置である。本例のCPU100は、複数のコアからなるマルチコアプロセッサである。
メモリ102は、例えば、半導体メモリであり、CPU100に接続され、主記憶装置として機能する。
スロット104は、拡張スロットであり、LANカード120が挿入される。本例では、複数のスロット104それぞれに、LANカード120が挿入されており、本例のLANカード120には、PCIスイッチを介して複数のインタフェース(#0~#3)が設けられている。ここで、LANカードとは、広義のネットワークカードを意味し、イーサネット(登録商標)に対する狭義のLANカードだけではなく、ファイバーチャネルカードなどのネットワークカードやネットワークアダプタなどを含む概念である。
サウスブリッジ106は、例えば、SATAバスなどを接続するICチップである。
本例のネットワーク装置10は、上記ハードウェア構成にデータプレーン開発キット(Data Plane Development Kit)を採用して、パケット処理の高速化を実現している。
【0018】
ここで、オープンソースソフトウェアであるデータプレーン開発キットでは、送信処理が複数コア(複数のデータプレーンコア)に跨っている。すなわち、データプレーン開発キットで採用されているLANドライバ(PMD:Polling Mode Driver)では、制御プレーンコアとデータプレーンコアという二つの機能に分離されている。制御プレーンコアでは、主にLANカードに対する制御を行い、データプレーンコアでは、パケット送受信処理を行うという特殊なCPUコアの使い方となっている。さらに、パケットを高速に処理するためにデータプレーンコアが複数存在し、一つのLANカード上のインタフェースに対して、コア毎に送受信キューを用意している。この、各コアに割り当てられた送受信キューを常時ポーリングすることで、高速なパケット処理を実現している。
そのため、LANカードの状態変化(例えば、リンクアップやリンクダウン)は、制御プレーンコアが単一コアで担うことになる。
【0019】
例えば、リンクダウンを行うとき、DPDKの実装上、制御プレーンコア(単一のコア)で、シーケンシャルに、8個の物理LANインタフェースをリンクダウンする。このリンクダウン処理は、ハードウェア(LANカード)に対してリンクダウン要求を出すが、ハードウェア内部でリンクダウンに遷移するまでの時間が多くを占める。ハードウェアとLANカードの相性によっては、100ミリ秒オーダーかかるものが存在する。ワーストで約730ミリ秒程度の時間がかかるLANカードが存在しており、このLANカードの場合にオフライン機能を実行すると、最後の物理LANインタフェースがリンクダウンするまでに、5.8秒かかり、使用ユーザに違和感を与えることに繋がる。
同様に、リンクアップを行うとき、DPDKの実装上、制御プレーンコア(単一のコア)で、シーケンシャルに、8個の物理LANインタフェースをリンクアップする。このリンクアップ処理も、ハードウェア(LANカード)に対してリンクアップ要求を出すが、ハードウェア内部でリンクアップに遷移するまでの時間が多くを占める。こちらも、ハードウェアとLANカードの相性によっては、100ミリ秒オーダーかかるものが存在し、10Gbps SFP+カード(Intel 82599コントローラ搭載)で実測したところ、約180ミリ秒~730ミリ秒程度の時間がかかることが判明している。このLANカードの場合にオンライン機能を実行すると、最後の物理LANインタフェースがリンクアップするまでに、ワーストケースで5.6秒かかる。このとき、ネットワーク装置10の二重化管理コンポーネントでは、制御プレーンコア上の他の処理をロックして処理完了を待つ。このロック期間中には、二重化状態の生存監視機構も動作不可となる。結果、ネットワーク装置10に異常がある訳でもないのに、冗長装置に対する生存監視機能が動作できなくなり、ACTIVE側のネットワーク装置10からの生存を伝えることができず、両方のネットワーク装置10がACTIVEに切り替わってしまう。
また、ネットワーク装置10が接続しているスイッチ等が停電した場合に、シーケンシャルに8個の物理LANインタフェースをリンクダウンしていくと、ワーストケースで5.1秒かかる。リンクアップしている物理インタフェース数が閾値(channel-minimum)を下回ったら、異常検出としてネットワーク装置10を切り替える設定にしていたとすると、仮にchennel-minimum=1に設定していた場合、対向スイッチの停電から異常検出までに(ワーストで5.1秒間)、二重化装置の切り替えができず、装置外部への通信が正常に行えないことで、様々な通信機能に影響することが懸念される。
【0020】
そこで、LANカードでは、インタフェース毎に内部資源が分離している(並列動作可能)という特徴に着目し、本例のネットワーク装置10では、DPDKのリンクダウン処理のシーケンシャル部分を改造して、ハードウェアに状態変化処理(リンクアップ又はリンクダウン)を依頼したタイミングで、完了を待たずに、次の物理LANインタフェースへ状態変化の依頼を次々実施するように対応する。また、ハードウェアの処理完了待ちは、インタフェース単位で別スレッドとして起動して、順次処理する。これにより、ソフト処理は単一コアでシーケンシャルに実施することは変わらないが、時間がかかっているハードウェア処理を並列実行できるため、大幅に時間短縮を図ることが可能となる。
特に、リンクアップ処理において、DPDKの実装は、LANドライバ共通層とLANドライバハードウェア固有層に分離している。この2つの層にまたがっており、リンクアップが完了した後、インタフェースがスタート状態であることをDPDK内に示すdev_startedフラグをLANドライバ共通層で操作する。LANドライバ共通層のAPIには、dev_startedがセットされた後に、上位層からの要求をLANドライバハードウェア固有層に依頼できる状態になるものがいくつか存在する。一方、LANインタフェースがリンクアップしたことを検出できるのは、LANドライバハードウェア固有層である。そのため、リンクアップをLANドライバハードウェア固有層で検出した後に、LANドライバ共通層へ情報を伝えるために、以下の対応を実施した。
・ハードウェア処理完了待ちのため、LANドライバ共通層とLANドライバハードウェア固有層で、完了待ちのスレッドを起動する。
(上位層に対しては、表向き完了しているように応答する)
・ハードウェア層でリンクアップ完了を確認したら、内部フラグinternal_start_flagをCOMPにセットする。
・LANドライバ共通層の完了待ちスレッドは、internal_start_flagを定期監視する。
・LANドライバ共通層でinternal_start_flagがCOMPになったことを検出したら、dev_startedをセットする。
・上位層に対しては、表向き完了しているように応答しているため、インタフェースに対してなんらかの要求がある可能性がある(例:MTU変更など)。その場合は、dev_startedを確認する前に、internal_start_flagがCOMPになるまで待ち合わせる。
すなわち、単一コアで複数のスレッドを起動して協調動作させながら、ハードウェア内部で並列にリンクアップを実現している挙動が新しい点である。
【0021】
図4は、ネットワーク装置10の機能ブロックを例示する図である。
図4に例示するように、ネットワーク装置10は、LANドライバの機能ブロックとして、制御プレーンコア処理部300と、データプレーンコア処理部400とを有する。ここで、制御プレーンコアと制御プレーンコア処理部は実質的に同じものであるが、ハードウェアに着目した場合には「制御プレーンコア」と呼び、機能又はソフトウェアに着目した場合には「制御プレーンコア処理部」と呼ぶ。データプレーンコアとデータプレーンコア処理部の関係も同様である。
制御プレーンコア処理部300は、LANカード120などの制御処理を行う。本例の制御プレーンコア処理部300は、上位エンジン処理部320、LANドライバ共通部340、及びLANドライバハードウェア固有部360を有する。LANドライバ共通部340は、例えば、DPDKのバイナリファイル名「libethdev.so」であり、LANドライバハードウェア固有部360は、DPDKのバイナリファイル名「librte_pmd_e1000.so」(1Gbps)又は「librte_pmd_ixgbe.so」(10Gbps)である。上位エンジン処理部320は、上位層からの指示に応じて、制御に必要なデータを、LANドライバ共通部340及びLANドライバハードウェア固有部360を介して、LANカード120に出力する。なお、上位エンジン処理部320、LANドライバ共通部340、及びLANドライバハードウェア固有部360は、それぞれ、本発明に係る上位制御部、中位制御部、及び下位制御部の一例である。
【0022】
データプレーンコア処理部400は、パケット処理を行う。本例のデータプレーンコア処理部400は、上位エンジン処理部420、LANドライバ共通部440、及びLANドライバハードウェア固有部460を有する。上位エンジン処理部420は、ファイアウォールなどの処理を実行する。
LANドライバ共通部440は、上位エンジン処理部420からの指示に応じて、送受信するパケットに対してLANカード共通の処理を施す。
LANドライバハードウェア固有部460は、LANカード120に直接アクセスして、LANドライバ共通部440から指示されたパケットの送受信を行う。すなわち、受信パケットは、LANドライバハードウェア固有部460でLANカード120から受け取り、LANドライバ共通部440を通過して、上位エンジン処理部420でファイアウォール機能などの固有機能を適用する。送信パケットは、上位エンジン処理部420からLANドライバ共通部440を通過して、LANドライバハードウェア固有部460からLANカード120に受け渡される。
【0023】
図5(A)は、
図4の上位エンジン処理部320(制御プレーンコア処理部)のより詳細な機能構成を例示し、
図5(B)は、
図4のLANドライバ共通部340のより詳細な機能構成を例示し、
図5(C)は、
図4のLANドライバハードウェア固有部360のより詳細な機能構成を例示する図である。なお、本図の各構成は、全て制御プレーンコア内に閉じて動作する。
図5(A)に例示するように、制御プレーンコア処理部300に設けられた上位エンジン処理部320は、リンクアップ要求部322、リンクダウン要求部324、及びハードウェア設定部326を有する。
リンクアップ要求部322は、LANドライバ共通部340に、全インタフェースに対するリンクアップを順に要求する。
リンクダウン要求部324は、LANドライバ共通部340に、全インタフェースに対するリンクダウンを順に要求する。
ハードウェア設定部326は、LANドライバ共通部340を介して、LANカード120の設定を変更する。
【0024】
図5(B)に例示するように、制御プレーンコア処理部300に設けられたLANドライバ共通部340は、リンクアップ受付部342、リンクアップ完了待ちスレッド344、リンクダウン要求部346、及び待合せ処理部348を有する。
リンクアップ受付部342は、リンクアップ要求部322からのリンクアップ要求を受け付けると、LANドライバハードウェア固有部360のリンクアップ受付部362に対して、リンクアップを要求し、その後、リンクアップ完了待ちスレッド344の起動を仕掛けて、上位エンジン処理部320のリンクアップ要求部322に対して、リンクアップ完了を疑似的に応答する。
リンクアップ完了待ちスレッド344は、リンクアップ受付部342の指示に応じて起動するスレッドであり、LANカード120におけるリンクアップ完了を定期監視する。より具体的には、リンクアップ完了待ちスレッド344は、internal_start_flagを定期監視し、定期監視中に、COMPを検出した時点で、dev_startedを1にセットして、DPDK内部にリンクアップ完了を表明する。
【0025】
リンクダウン要求部346は、上位エンジン処理部320のリンクダウン要求部324からリンクダウン要求を受け付けると、LANドライバハードウェア固有部360のリンクダウン受付部366に対して、リンクダウンを要求する。
待合せ処理部348は、リンクアップ受付部342が上位エンジン処理部320に対してリンクアップ完了を疑似的に応答した後、リンクアップ完了待ちスレッド344がリンクアップ完了を表明するまでの間、ハードウェア設定部326からの設定変更要求を保留する。設定変更は、例えば、リンクスピードの変更、通信方式(全二重/半二重)の変更、送受信キュー設定の変更、送信タイムアウト監視の停止、フロー制御設定の取得、MDI/MDI-Xモードの取得又は設定、及び、MTU設定の変更などである。
【0026】
図5(C)に例示するように、制御プレーンコア処理部300に設けられたLANドライバハードウェア固有部360は、リンクアップ受付部362、リンクアップ実行スレッド364、リンクダウン受付部366、及びリンクダウン実行スレッド368を有する。
リンクアップ受付部362は、LANドライバ共通部340のリンクアップ受付部342からリンクアップ要求を受け付けると、リンクアップ実行スレッド364の起動を仕掛けて、LANドライバ共通部340に対して、リンクアップ完了を疑似的に応答する。
リンクアップ実行スレッド364は、リンクアップ受付部362の指示に応じて起動するスレッドであり、LANカード120のリンクアップ処理を実行する。
【0027】
リンクダウン受付部366は、LANドライバ共通部340のリンクダウン要求部346からリンクダウン要求を受け付けると、リンクダウン実行スレッド368の起動を仕掛けて、LANドライバ共通部340に対して、リンクダウン完了を疑似的に応答する。
リンクダウン実行スレッド368は、リンクダウン受付部366の指示に応じて起動するスレッドであり、LANカード120のリンクダウン処理を実行する。
【0028】
次に、本発明が適用された実施例のシーケンスと、本発明が適用されていない比較例のシーケンスを比較して説明する。
図6は、比較例におけるリンクアップ処理(S10)を説明するシーケンス図である。
図6に例示するように、ステップ100(S100)において、上位エンジン処理部320が、一つ目のインタフェースについて、リンクアップ要求を行い、ロックが開始される。
ステップ102(S102)において、LANドライバ共通部340は、上位エンジン処理部320からのリンクアップ要求に応じて、LANドライバハードウェア固有部360にリンクアップを要求する。
ステップ104(S104)において、LANドライバハードウェア固有部360は、LANドライバ共通部340からのリンクアップ要求に応じて、1つ目のインタフェースについてLANカード120にリンクアップを指示する。
ステップ106(S106)において、LANカード120は、1つ目のインタフェースについてリンクアップを開始する。
ステップ108(S108)において、LANカード120は、1つ目のインタフェースについてリンクアップが完了すると、リンクアップ完了をLANドライバハードウェア固有部360に応答する。
ステップ110(S110)において、LANドライバハードウェア固有部360は、リンクアップ完了をLANドライバ共通部340に応答する。
ステップ112(S112)において、LANドライバ共通部340は、dev_startedを1にセットして、1つ目のインタフェースについてリンクアップ完了を表明する。
ステップ114(S114)において、上位エンジン処理部320は、1つ目のインタフェースについてリンクダウン完了を検知する。
【0029】
同様に、2つ目のインタフェースに関するリンクアップ処理(S120~S134)から、8つ目のインタフェースに関するリンクアップ処理(S160~S174)までを実行し、ロックが解除される。
このように、比較例では、ソフトウェア処理及びハードウェア処理の双方がシーケンシャルに実行されるため、リンクアップ処理(S10)の完了までに要する時間が長くなる。
【0030】
図7及び
図8は、実施例におけるリンクアップ処理(S20)を説明するシーケンス図である。
図7及び
図8に例示するように、ステップ200(S200)において、上位エンジン処理部320のリンクアップ要求部322は、LANドライバ共通部340のリンクアップ受付部342に対して、1つ目のインタフェースについてリンクアップを要求し、ロックが開始される。
ステップ202(S202)において、LANドライバ共通部340のリンクアップ受付部342は、LANドライバハードウェア固有部360のリンクアップ受付部362に対して、1つ目のインタフェースについてリンクアップを要求する。
ステップ204(S204)において、LANドライバハードウェア固有部360のリンクアップ受付部362は、リンクアップ実行スレッド364の起動を仕掛ける。
ステップ206(S206)において、リンクアップ受付部362は、1つ目のインタフェースに関するリンクアップ完了を疑似的にLANドライバ共通部340に応答する。
ステップ208(S208)において、LANドライバ共通部340のリンクアップ受付部342は、リンクアップ完了待ちスレッド344の起動を仕掛け、1つ目のインタフェースに関するリンクアップ完了を疑似的に上位エンジン処理部320に応答する。
ステップ210(S210)において、上位エンジン処理部320は、LANドライバ共通部340からの応答に基づいて、1つ目のインタフェースに関するリンクアップを完了する。
【0031】
同様に、2つ目のインタフェースに関するリンクアップ準備処理(S220~230)から、8つ目のインタフェースに関するリンクアップ準備処理(S260~S270)まで順に実施し、ロックが解除される。
【0032】
ステップ212(S212)において、LANドライバハードウェア固有部360のリンクアップ実行スレッド364は、リンクアップ受付部362の指示に応じて起動し、LANカード120に対してリンクアップ処理を開始する。
ステップ214(S214)において、LANドライバ共通部340のリンクアップ完了待ちスレッド344は、リンクアップ受付部342の指示に応じて起動し、internal_start_flagを定期的に監視する。
ステップ216(S216)において、リンクアップ実行スレッド364は、LANカード120内でリンクアップ処理が完了すると、internal_start_flagをCOMPにセットして、スレッドを終了する。
ステップ218(S218)において、リンクアップ完了待ちスレッド344は、internal_start_flagがCOMPにセットされたことを検知すると、dev_startedを1にセットして、DPDK内部にリンクアップ完了を表明し、スレッドを終了する。
【0033】
同様に、2つ目のインタフェースに関するリンクアップ完了処理(S232~S238)から、8つ目のインタフェースに関するリンクアップ完了処理(S272~S278)までを並行して実施する。なお、LANカード120内の処理に要する時間は個体差があるため、
図8に例示するように、完了のタイミングが前後しうる。
このように、本実施例のリンクアップ処理(S20)では、ハードウェア処理が並行して行われるため、リンクアップ完了までに要する時間が短縮される。
【0034】
図9は、リンクアップ処理中にハードウェア設定要求があった場合のリンクアップ処理(S28)を説明するシーケンス図である。本図では、
図7及び
図8のリンクアップ処理(S20)のうち、一つ目のインタフェースのみに着目して説明する。
図9に例示するように、S200~S214によって、リンクアップ実行スレッド364及びリンクアップ完了待ちスレッド344が起動し、疑似的にリンクアップ完了が応答されると、ロックが解除され、ハードウェア設定の要求が可能になる。
ステップ280(S280)において、上位エンジン処理部320のハードウェア設定部326は、LANドライバ共通部340に対して、ハードウェア設定を要求する。
ステップ282(S282)において、LANドライバ共通部340の待合せ処理部348は、internal_start_flagを定期的に監視して、COMPにセットされたことを検知するまで、ハードウェア設定要求を保留する。
ステップ284(S284)において、待合せ処理部348は、internal_start_flagがCOMPにセットされたことを検知すると、LANドライバハードウェア固有部360を介して、LANカード120に対して、ハードウェア設定を要求する。
ステップ286(S286)において、LANカード120は、ハードウェア設定を完了すると、LANドライバハードウェア固有部360及びLANドライバ共通部340を介して、上位エンジン処理部320に、ハードウェア設定の完了が通知される。
なお、本例では、LANドライバ共通部340で待合せ処理を行う場合を具体例として説明したが、LANドライバハードウェア固有部360で待合せ処理を行うように構成してもよい。
【0035】
図10は、比較例におけるリンクダウン処理(S30)を説明するシーケンス図である。
図10に例示するように、ステップ300(S300)において、上位エンジン処理部320が、一つ目のインタフェースについて、リンクダウン要求を行い、ロックが開始される。
ステップ302(S302)において、LANドライバ共通部340は、上位エンジン処理部320からのリンクダウン要求に応じて、LANドライバハードウェア固有部360にリンクダウンを要求する。
ステップ304(S304)において、LANドライバハードウェア固有部360は、LANドライバ共通部340からのリンクダウン要求に応じて、1つ目のインタフェースについてLANカード120にリンクダウンを指示する。
ステップ306(S306)において、LANカード120は、1つ目のインタフェースについてリンクダウンを開始する。
ステップ308(S308)において、LANカード120は、1つ目のインタフェースについてリンクダウンが完了すると、リンクダウン完了をLANドライバハードウェア固有部360に応答する。
ステップ310(S310)において、LANドライバハードウェア固有部360は、リンクダウン完了をLANドライバ共通部340に応答する。
ステップ312(S312)において、LANドライバ共通部340は、1つ目のインタフェースについてリンクダウン完了を表明する。
ステップ314(S314)において、上位エンジン処理部320は、1つ目のインタフェースについてリンクダウン完了を検知する。
【0036】
同様に、2つ目のインタフェースに関するリンクダウン処理(S320~S334)から、8つ目のインタフェースに関するリンクアップ処理(S360~S374)までを実行し、ロックが解除される。
このように、比較例では、ソフトウェア処理及びハードウェア処理の双方がシーケンシャルに実行されるため、リンクダウン処理(S30)の完了までに要する時間が長くなる。
【0037】
図11は、実施例におけるリンクダウン処理(S40)を説明するシーケンス図である。
図11に例示するように、ステップ400(S400)において、上位エンジン処理部320のリンクダウン要求部324は、LANドライバ共通部340のリンクダウン要求部346に対して、1つ目のインタフェースについてリンクダウンを要求し、ロックが開始される。
ステップ402(S402)において、LANドライバ共通部340のリンクダウン要求部346は、LANドライバハードウェア固有部360のリンクダウン受付部366に対して、1つ目のインタフェースについてリンクダウンを要求する。
ステップ404(S404)において、LANドライバハードウェア固有部360のリンクダウン受付部366は、リンクダウン実行スレッド368の起動を仕掛ける。
ステップ406(S406)において、リンクダウン受付部366は、1つ目のインタフェースに関するリンクダウン完了を疑似的にLANドライバ共通部340に応答する。
ステップ408(S408)において、LANドライバ共通部340のリンクダウン要求部346は、1つ目のインタフェースに関するリンクダウン完了を疑似的に上位エンジン処理部320に応答する。
ステップ410(S410)において、上位エンジン処理部320は、LANドライバ共通部340からの応答に基づいて、1つ目のインタフェースに関するリンクダウンを完了する。
【0038】
同様に、2つ目のインタフェースに関するリンクダウン準備処理(S420~S430)から、8つ目のインタフェースに関するリンクアップ準備処理(S460~S470)まで順に実施し、ロックが解除される。
【0039】
ステップ412(S412)において、LANドライバハードウェア固有部360のリンクダウン実行スレッド368は、リンクダウン受付部366の指示に応じて起動し、LANカード120に対してリンクダウン処理を開始する。
ステップ414(S414)において、リンクダウン実行スレッド368は、LANカード120内でリンクダウン処理が完了すると、スレッドを終了する。
【0040】
同様に、2つ目のインタフェースに関するリンクダウン完了処理(S432~S434)から、8つ目のインタフェースに関するリンクダウン完了処理(S472~S474)までを並行して実施する。
このように、本実施例のリンクダウン処理(S40)では、ハードウェア処理が並行して行われるため、リンクダウン完了までに要する時間が短縮される。
【0041】
以上説明したように、本実施形態のネットワーク装置10は、リンクアップ処理又はリンクダウン処理において、LANカード120内のハードウェア処理を並列化することにより、処理に要する時間を短縮することができる。例えば、1Gbps 4portインターフェースカード(搭載LANコントローラーチップ:Intel 82576)を採用した場合、 どのポートもリンクアップにかかる時間は安定しており、533ミリ秒程度であり、8ポートでリンクアグリゲーションしているとなると、比較例では4260ミリ秒程度を要したところ、本実施例では、1100ミリ秒程度に改善した。また、10Gbps 2port SFP+インターフェースカード(搭載LANコントローラーチップ:Intel 82599)を採用した場合、どのポートもリンクアップにかかる時間が不安定で、180ミリ秒~610ミリ秒の間であり、8ポートでリンクアグリゲーションしているとして、ワーストケースで考えると、比較例では4880ミリ秒程度かかり、体感でも、さすがに違和感があるレベルであったが、本実施例では、不安定ではあるが、数回測定して、360ミリ秒~750ミリ秒程度に改善した。
また、ネットワーク装置10は、リンクアップ処理の完了を疑似的に通知した後であって、LANカード120内のリンクアップ処理が未完了である期間について、待合せ処理を実施して、矛盾を解消している。
【符号の説明】
【0042】
1…ネットワーク通信システム
10…ネットワーク装置
100…CPU
102…メモリ
104…スロット
120…LANカード
300…制御プレーンコア処理部
320…上位エンジン処理部
322…リンクアップ要求部
324…リンクダウン要求部
326…ハードウェア設定部
340…LANドライバ共通部
342…リンクアップ受付部
344…リンクアップ完了待ちスレッド
346…リンクダウン要求部
348…待合せ処理部
360…LANドライバハードウェア固有部
362…リンクアップ受付部
364…リンクアップ実行スレッド
366…リンクダウン受付部
368…リンクダウン実行スレッド
400…データプレーンコア処理部