(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-19
(45)【発行日】2024-02-28
(54)【発明の名称】ネットワークインタフェースカード、コンピュータ、回路情報の書き換え方法及びプログラム
(51)【国際特許分類】
H04L 69/00 20220101AFI20240220BHJP
【FI】
H04L69/00
(21)【出願番号】P 2020560100
(86)(22)【出願日】2019-12-09
(86)【国際出願番号】 JP2019048118
(87)【国際公開番号】W WO2020122024
(87)【国際公開日】2020-06-18
【審査請求日】2022-11-01
(31)【優先権主張番号】P 2018231098
(32)【優先日】2018-12-10
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100080816
【氏名又は名称】加藤 朝道
(74)【代理人】
【識別番号】100098648
【氏名又は名称】内田 潔人
(72)【発明者】
【氏名】油科 亮太
【審査官】中川 幸洋
(56)【参考文献】
【文献】特開平11-232111(JP,A)
【文献】国際公開第2017/170311(WO,A1)
【文献】特開2010-166488(JP,A)
【文献】特開2012-230529(JP,A)
【文献】特開2017-139643(JP,A)
【文献】米国特許第9698793(US,B1)
【文献】Daniel Firestone, et al.,Azure Accelerated Networking: SmartNICs in the Public Cloud,In the Proceedings of the 15th USENIX Symposium on Networked Systems Design and Implementation(NSDI),2018年04月09日,pp.51-64,[検索日 2019.12.18],インターネット:<https://www.usenix.org/system/files/conference/nsdi18/nsdi18-firestone.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
H04L 69/00
(57)【特許請求の範囲】
【請求項1】
記録された回路情報に従って、入力されたパケットの処理を行うプログラム可能論理回路と、
前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第1のモードと、前記プログラム可能論理回路を経由せずにバイパスする第2のモードとを切り替え可能な1対のスイッチと、
前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、
前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記1対のスイッチを第2のモードに切り替えるスイッチ制御回路と、を備え、
前記回路情報の書き換え時に、前記プログラム可能論理回路に代わって、前記コンピュータによりパケットの処理を実行可能に構成されているネットワークインタフェースカード。
【請求項2】
前記1対のスイッチは、
前記第2のモードにおいて、前記プログラム可能論理回路に、前記コンピュータ側とのメモリ同期用のパケットを送るよう動作する請求項1のネットワークインタフェースカード。
【請求項3】
前記1対のスイッチが、前記プログラム可能論理回路内部の可変領域の入力端と、出力端にそれぞれ配置されている請求項1又は2のネットワークインタフェースカード。
【請求項4】
さらに、前記アプリケーションプログラム側から、プログラム可能論理回路が一時的に情報を記憶するために用いるメモリへのアクセスを許容するメモリ制御部を備える請求項1のネットワークインタフェースカード。
【請求項5】
前記プログラム可能論理回路は、前記メモリ制御部から前記メモリの情報を引き継ぐことで、前記回路情報の書き換え後、前記コンピュータで実施させていた処理を引き継ぎ可能に構成されている請求項4のネットワークインタフェースカード。
【請求項6】
記録された回路情報に従って入力されたパケットの処理を行うプログラム可能論理回路と、
前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第1のモードと、前記プログラム可能論理回路を経由せずにバイパスする第2のモードとを切り替え可能な1対のスイッチと、
接続されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、
前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記1対のスイッチを第2のモードに切り替えるスイッチ制御回路と、を備え、
前記回路情報の書き換え時に、前記プログラム可能論理回路に代わって、前記コンピュータによりパケットの処理を実行可能に構成されているネットワークインタフェースカードを搭載したコンピュータ。
【請求項7】
前記第2のモードにおいて、前記プログラム可能論理回路に、メモリ同期用のパケットを送るよう動作する請求項6のコンピュータ。
【請求項8】
記録された回路情報に従って入力されたパケットの処理を行うプログラム可能論理回路と、
前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第1のモードと、前記プログラム可能論理回路を経由せずにバイパスする第2のモードとを切り替え可能な1対のスイッチと、
前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、
前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記1対のスイッチを第2のモードに切り替えるスイッチ制御回路と、を備えたネットワークインタフェースカードの前記回路情報の書き換え方法であって、
前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを起動し、
前記1対のスイッチを、前記第1のモードから前記第2のモードに切り替え、
前記回路情報を書き換えた後に、前記1対のスイッチを、前記第2のモードから前記第1のモードに切り替える、
回路情報の書き換え方法。
【請求項9】
記録された回路情報に従って入力されたパケットの処理を行うプログラム可能論理回路と、
前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第1のモードと、前記プログラム可能論理回路を経由せずにバイパスする第2のモードとを切り替え可能な1対のスイッチと、
前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、
前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記1対のスイッチを第2のモードに切り替えるスイッチ制御回路と、を備えたネットワークインタフェースカードの前記回路情報の書き換えプログラムであって、
前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを起動する処理と、
前記1対のスイッチを、前記第1のモードから前記第2のモードに切り替える処理と、
前記回路情報を書き換えた後に、前記1対のスイッチを、前記第2のモードから前記第1のモードに切り替える処理と、
を前記コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願についての記載]
本発明は、日本国特許出願:特願2018-231098号(2018年12月10日出願)の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、ネットワークインタフェースカード、コンピュータ、回路情報の書き換え方法及びプログラムに関する。
【背景技術】
【0002】
大規模なデータセンターやVNF(Virtual Network Function)をはじめとした通信事業者の運用設備においてはソフトウェアの仮想化が進み、一台の汎用サーバに複数のシステムを集約した構成が一般的になっている。その一方で、この種の構成では、ソフトウェアで実現していた通信機能については性能不足が指摘されている。
【0003】
こうした事情から、ネットワークインタフェースカード(以下、NIC)にFPGA(Field-Programmable Gate Array)を載せたSmart NIC(SNIC)と呼ばれる製品が登場している。このSNICは、CPUで実施していたパケットのヘッダやペイロード等の変更、転送といった、いわゆるパケット処理のうち、ソフトウェア処理では性能が出せないような一部モジュールをSNIC内のFPGA回路として実装している。これにより、ソフトウェアボトルネックが解消されて、性能向上を期待できると言われている。
【0004】
特許文献1~4には、FPGAを搭載した通信機器等において通信やサービスを中断せずにFPGAの回路情報の書き換えを行う方法が開示されている。また、特許文献5~6には、サービスを中断せずにファームウェアや制御プログラムの書き換えを行う方法が開示されている。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2017-69777号公報
【文献】国際公開第2017/170311号
【文献】特開2015-176343号公報
【文献】特開2008-177900号公報
【文献】特開2010-79837号公報
【文献】特開2007-202068号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
以下の分析は、本発明によって与えられたものである。上記したSNICに代表される機器では、大きな性能改善が見込める一方、FPGAの回路情報の更新が発生しうる。回路情報の更新中は、FPGAの再起動と回路情報の読み出しが必須となるため、その間、処理ができなくなるという問題点がある。この点、特許文献1では、FPGA内部の可変領域に複数の通信処理回路を構成し、いずれか一方を切り替えて動作させるとともに、他方の回路構成を更新できる構成が開示されている。
【0007】
しかしながら、特許文献1の構成では、可変領域に2つの通信処理回路を配置することになり、回路サイズの制約が生じたり、装置自体が高価になってしまうという問題点がある。この点は、特許文献3、5、6も同様である。
【0008】
その他、特許文献2は、CPUにFPGAを結合した構成において、FPGAプログラムをバージョンアップしている間、CPUにてFPGAで行っていたVMのデータ処理を代行する構成を開示するに止まっている。また、SNICへの適用を考えた場合、FPGAの処理を代行しうる要素を持っていないので特許文献2の方法は採用し得ない。また、特許文献4の方法は、FPGAのアップグレード中にルータからのデータ送信を一時的に停止させるものであり、狭義の意味でユーザに対するサービスを停止させないものとは言いえない。
【0009】
本発明は、FPGAに代表されるプログラム可能論理回路を搭載したネットワークインタフェースカードにおいて、その回路情報の書き換えに伴うシステムの可用性への影響の低減に貢献できるネットワークインタフェースカード、コンピュータ、回路情報の書き換え方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
第1の視点によれば、記録された回路情報に従って入力されたパケットの処理を行うプログラム可能論理回路と、前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第1のモードと、前記プログラム可能論理回路を経由せずにバイパスする第2のモードとを切り替え可能な1対のスイッチと、前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記1対のスイッチを第2のモードに切り替えるスイッチ制御回路と、を備え、前記回路情報の書き換え時に、前記プログラム可能論理回路に代わって、前記コンピュータによりパケットの処理を実行可能に構成されているネットワークインタフェースカードが提供される。
【0011】
第2の視点によれば、上記したネットワークインタフェースカードを搭載したコンピュータが提供される。
【0012】
第3の視点によれば、記録された回路情報に従って入力されたパケットの処理を行うプログラム可能論理回路と、前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第1のモードと、前記プログラム可能論理回路を経由せずにバイパスする第2のモードとを切り替え可能な1対のスイッチと、前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記1対のスイッチを第2のモードに切り替えるスイッチ制御回路と、を備えたネットワークインタフェースカードの前記回路情報の書き換え方法であって、前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを起動し、前記1対のスイッチを、前記第1のモードから前記第2のモードに切り替え、前記回路情報を書き換えた後に、前記1対のスイッチを、前記第2のモードから前記第1のモードに切り替える、回路情報の書き換え方法が提供される。本方法は、ネットワークインタフェースカードを搭載したコンピュータという、特定の機械に結びつけられている。
【0013】
第4の視点によれば、記録された回路情報に従って入力されたパケットの処理を行うプログラム可能論理回路と、前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第1のモードと、前記プログラム可能論理回路を経由せずにバイパスする第2のモードとを切り替え可能な1対のスイッチと、前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記1対のスイッチを第2のモードに切り替えるスイッチ制御回路と、を備えたネットワークインタフェースカードの前記回路情報の書き換えプログラムであって、前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを起動する処理と、前記1対のスイッチを、前記第1のモードから前記第2のモードに切り替える処理と、前記回路情報を書き換えた後に、前記1対のスイッチを、前記第2のモードから前記第1のモードに切り替える処理と、を前記コンピュータに実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な(非トランジトリーな)記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【0014】
本発明によれば、プログラム可能論理回路を搭載したネットワークインタフェースカードにおいて、その回路情報の書き換えに伴うシステムの可用性への影響を低減することが可能となる。即ち、本発明は、背景技術に示したネットワークインタフェースカードを、回路情報の書き換えに伴い可用性が損なわれる可能性の少ないものへと変換するものとなっている。
【図面の簡単な説明】
【0015】
【
図2】本発明の一実施形態の動作を説明するための図である。
【
図3】本発明の一実施形態の動作を説明するための図である。
【
図4】本発明の第1の実施形態の構成を示す図である。
【
図5】本発明の第1の実施形態の動作を表したフローチャートである。
【
図6】本発明の第1の実施形態のFPGAの更新処理の詳細を表したフローチャートである。
【
図7】本発明の第2の実施形態の構成を示す図である。
【
図8】本発明の第2の実施形態の動作を表したフローチャートである。
【
図9】本発明の第3の実施形態の構成を示す図である。
【
図10】本発明のネットワークインタフェースカードを搭載コンピュータの構成を示す図である。
【発明を実施するための形態】
【0016】
はじめに本発明の一実施形態の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。また、以降の説明で参照する図面等のブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号(データ)の流れを模式的に示すものであり、双方向性を排除するものではない。また、図中の各ブロックの入出力の接続点には、ポート乃至インタフェースがあるが図示省略する。プログラムはコンピュータ装置を介して実行され、コンピュータ装置は、例えば、プロセッサ、記憶装置、入力装置、通信インタフェース、及び必要に応じ表示装置を備える。また、コンピュータ装置は、通信インタフェースを介して装置内又は外部の機器(コンピュータを含む)と、有線、無線を問わず、交信可能に構成される。また、以下の説明において、「A及び/又はB」は、A及びBの少なくともいずれかという意味で用いる。
【0017】
本発明は、その一実施形態において、
図1に示すように、プログラム可能論理回路11と、1対のスイッチ12、13と、コンピュータ側インタフェース(IF)14と、スイッチ制御回路15と、を備えるネットワークインタフェースカード10にて実現できる。
【0018】
より具体的には、プログラム可能論理回路11は、記録された回路情報に従って入力されたパケットの処理を行う。スイッチ12、13は、それぞれ前記プログラム可能論理回路11の入力端と、出力端にそれぞれ配置される。そして、このスイッチ12、13はプログラム可能論理回路11にパケットを送る第1のモードと、前記プログラム可能論理回路11を経由せずにバイパスする第2のモードとを切り替え可能に構成される。コンピュータ20は、プログラム可能論理回路11に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されている。そして、コンピュータ側インタフェース(IF)14は、コンピュータ20に、パケットを送信可能となっている。スイッチ制御回路15は、プログラム可能論理回路11の前記回路情報の書き換えの際に、1対のスイッチ12、13を第2のモードに切替可能となっている。上記構成において、ネットワークインタフェースカード10は、前記回路情報の書き換え時に、前記プログラム可能論理回路11に代わって、前記コンピュータによりパケットの処理を実行する。
【0019】
例えば、通常の動作時、
図2に示すように、1対のスイッチ12、13は、プログラム可能論理回路11にパケットを送る第1のモードに設定されている。これにより、上述したSNICと同様に、ソフトウェアボトルネックが解消し、性能向上を見込むことができるようになっている。
【0020】
一方、プログラム可能論理回路11の前記回路情報の書き換えの際、1対のスイッチ12、13は、
図3に示すように、第2のモードに切り替えられる。そして、プログラム可能論理回路11の前記回路情報の書き換えの間、前記プログラム可能論理回路11に代わって、前記コンピュータによりパケットを処理させる。従って、ユーザに対するサービスを停止させずに、プログラム可能論理回路11の回路情報の書き換えを実施することが可能となっている。
【0021】
[第1の実施形態]
続いて、本発明の第1の実施形態について図面を参照して詳細に説明する。
図4は、本発明の第1の実施形態の構成を示す図である。
図4を参照すると、SNIC100を搭載したIAサーバ200と、そのIAサーバ200上で動作するプログラム群(APL/OS)210の詳細構成が示されている。なお、IAサーバ200は、Intel Architectureサーバの略である。また、APL/OSは、それぞれ、Application、Operating Systemの略である。
【0022】
図4のAPP201は、SNIC100を用いてネットワーク側と授受するパケットを処理するパケット処理プログラム本体を示す。APP201は、NIC Driver203を使用してSNIC100でパケット受送信を行う。また、APP201は、FPGA Driver204経由で、FPGA111の回路情報を制御し、また管理可能となっている。
【0023】
APP201は、FPGA Driver204経由で、S-SW112、N-SW113に対し、動作モードの切り替えや、例外パケット(後述)を特定するためのルールを指示する。また、APP201は、Alt-SIM202の起動、停止を管理する。具体的には、APP201は、FPGA111の更新開始前に、Alt-SIM202を起動し、FPGA111に代わって、Alt-SIM202を使用して一連のパケット処理を実行できるように制御する。また、APP201は、FPGA111の起動通知を受けて、Alt-SIM202が不要になればAlt-SIM202を停止する。
【0024】
また、APP201は、Alt-SIM202とFPGA111間で、FPGA111のパケットカウント情報等のメモリ内容を同期するメモリ同期を補助する機能を担う。このメモリ同期は、例えば、OS上にFPGA111との同期用メモリ空間を用意しておき、FPGA111内のmodules120(後述)との定期的なパケット授受により、DRAM118の情報を同期する方法を採ることができる。また、APP201は、FPGA111の更新開始前に、メモリ同期を完了させるべく、Alt-SIM202へ、前記OS内に用意した同期済みのメモリ領域(空間)を渡す機能を具備する。また、APP201は、FPGA111へ処理を切り替える前に、Alt-SIM202とFPGA111間のメモリ同期を行う。このときのmodules120(後述)とのメモリ同期用のパケットを例外パケットという。例外パケットの具体例については後に詳述する。
【0025】
NIC Driver203は、SNIC100のパケット送受信を制御するドライバである。
【0026】
FPGA Driver204は、SNIC100内のFPGA111を制御するためのドライバである。FPGAの回路情報の更新等は、このドライバを使って実行することができる。また、FPGA Driver204は、FPGA111の起動完了等をAPP201に通知する。
【0027】
CPU/RAM205は、IAサーバ200に代表されるコンピュータを構成する一般的な物理部品群を示している(
図10参照)。なお、CPUは、Central Processing Unitの略であり、RAMは、Random Access Memoryの略である。
【0028】
続いて、SNIC100の構成について説明する。
図4を参照すると、FPGA111と、S-SW112と、N-SW113と、Ether Network Controller114と、PCIE Controller115と、QSFP117、FLASH119とを備えた構成が示されている。
【0029】
FPGA111は、任意の回路情報に書き換え可能な領域(Writable FPGA)116と、恒久的な回路とで構成されて、回路情報によって定義された処理ロジックに従って入力されたパケットを処理する。また、FPGAは、起動時に、FLASH119から回路情報をロードして、書き換え可能領域(Writable FPGA)116に回路情報を書き込む。
図4において、この回路情報はmodules120として示されている。FPGA111は、FLASH119、PCIE Controller115、DRAM118との専用インタフェースを持っている。
図4において、これらはそれぞれFLASH-IF、PCIE-IF、RAM-IFで示されている。
【0030】
Ether Network Controller114は、SNIC100内の低レイヤのネットワーク処理を行う専用ハードウェアチップである。Ether Network Controller114が、上記したOSや各種ドライバとのインタフェースを提供する。従って、Ether Network Controller114が、上記したコンピュータ側インタフェース(IF)14としての機能を担うことになる。
【0031】
PCIE Controller115は、FPGA111を制御するためのハードウェアモジュールである。具体的には、PCIE Controller115は、FPGA Driverからの制御に従い、FPGA111に対し、FPGA111の再起動やその回路情報の更新を命令する。また、PCIE Controller115は、FPGA Driver経由でAPP201側に、FPGA111の状態を通知する。また、PCIE Controller115は、APP201からの指示に従い、S-SW112、N-SW113を切り替えるスイッチ制御回路(スイッチ制御回路15参照)としても機能する。
【0032】
FLASH119は、不揮発性のフラッシュメモリで構成され、FPGA111の回路情報を保持する。FLASH119の書き換えは、外部記憶媒体等から、CPU上のOSもしくはNIC Driver203を経由してFLASH119に書き出すことで実施できる。
【0033】
DRAM118は、SNIC100内に具備されているDynamicRAMである。DRAM118は、一般的に揮発性であり、FPGA111内のmodules120が処理の一時的な情報を記憶するために使用される。
【0034】
modules120は、FPGA111の書き変え可能領域(Writable FPGA)116に書き込まれた処理ロジックである。このmodules120は、APP201の処理の一部のオフロード先として機能することで、システム全体のソフトウェアボトルネックが解消される。さらに、modules120は、DRAMの情報をパケット化して、APP201とのパケット授受により、APP201経由でAlt-SIM202とメモリ同期する機構を持つ。
【0035】
QSFP117は、SNIC100のパケット入力用のインタフェースである。このQSFP117は、ケーブルの結線ポイントになる。なお、QSFPは、Quad Small Form-factor Pluggableの略であり、トランシーバの規格である。
【0036】
続いて、上記したFPGA111の回路情報の更新中に、パケット処理を継続させるための構成について説明する。
【0037】
S-SW112は、SNIC100のQSFP117経由で外部から受信したパケット(上りパケット)をFPGA111へ転送するか、もしくはFPGA111を経由しないでN-SW113に転送するかを判断、実行するモジュールである。また、S-SW112は、QSFP117を介して、N-SW113もしくは、FPGA111から受信したパケット(下りパケット)をSNIC外へ転送する機能を具備する。
【0038】
S-SW112には、下記の2種類の動作モードがあり、APP201により、PCIE Controller115経由で動作モードを切り替えられる。
【0039】
A)FPGA経由モード(第1のモードに相当):
S-SW112は、上りパケットをFPGA111へ転送する。
B)バイパスモード(第2のモードに相当):
S-SW112は、上りパケットのうち例外パケット以外をすべてN-SW113へ転送し、例外パケットをFPGA111へ転送する。ここで、例外パケットとは、PCIE Controller115経由でAPP201より指示されたルールにマッチしたパケットを指す。例えば、例外パケットとして、特定のVLANのID(VID)や、特定MACアドレス等を持つパケットを指定することができ、該当するパケットをFPGA111に送ることができる。本実施形態では、この例外パケットをメモリ同期に用いている。その詳細は後述する。
【0040】
N-SW113は、Ether Network Controller114から受信したパケット(下りパケット)をFPGA111へ転送するか、もしくはFPGA111を経由しないでS-SW112に転送するかを判断、実行するモジュールである。また、N-SW113は、SNIC100のFPGA111もしくはS-SW112から受信したパケット(上りパケット)を、Ether Network Controller114へ転送する機能を具備する。
【0041】
N-SW113には、下記の2種類の動作モードがあり、S-SW112と同様に、APP201により、PCIE Controller115経由で動作モードを切り替えられる。
【0042】
A)FPGA経由モード(第1のモードに相当):
N-SW113は、下りパケットをFPGAへ転送する。
B)バイパスモード(第2のモードに相当):
N-SW113は、下りパケットのうち例外パケット以外をすべてS-SW112へ転送し、例外パケットをFPGA111へ転送する。ここで、例外パケットとは、PCIE Controller115経由でAPP201より指示されたルールにマッチしたパケットを指す。例えば、例外パケットとして、特定のVLANのID(VID)や、特定MACアドレス等を持つパケットを指定することができ、該当するパケットをFPGA111に送ることができる。
【0043】
Alt-SIM202は、FPGA111内のmodules120と同等の処理を行う代替モジュール(コンピュータプログラム)である。FPGA111内のmodules120が動作できないときに、切り替えて利用できる。ただし、Alt-SIM202の処理性能は、FPGA111のAlt-SIM202より低いものであってもよい。
【0044】
続いて、本実施形態の動作について図面を参照して詳細に説明する。
図5は、本発明の第1の実施形態の動作を表したフローチャートである。
図5を参照すると、まず、APP201は、FPGA111の回路を更新するため、Alt-SIM202を起動する(ステップS001)。
【0045】
次に、APP201は、FPGA111とのメモリ同期を行う(ステップS002)。このメモリ同期は、最後の同期からの差分を反映することで実施できる。
【0046】
次に、APP201は、Alt-SIM202の起動を確認後、Alt-SIM202に、FPGA111との同期済のメモリ領域を渡す(ステップS003)。以降、Alt-SIM202はmodules120と同等の処理を実行できる状態になる。
【0047】
次に、APP201は、FPGA Driver204経由でN-SW113及びS-SW112をバイパスモードに切り替える(ステップS004)。このとき、メモリ同期用のパケットを通すために、APP201は、N-SW113及びS-SW112に対し、メモリ同期用の例外パケットを特定するためのルールを指定する。
【0048】
次に、APP201は、NIC Driver203から受信したパケットをAlt-SIM202を用いてパケット処理するように動作を切り変える(ステップS005)。具体的には、NIC Driver203から受信したパケットをAlt-SIM202に渡し、Alt-SIM202から出力されたパケットをN-SW113側に送る処理を行う。
【0049】
次に、APP201は、FPGA Driver204に対し、FPGA111の更新を指示する(ステップS006)。以降、FPGA111側で回路情報の更新が行われる。
【0050】
図6は、本実施形態におけるFPGA111の更新処理の詳細を表したフローチャートである。FPGA Driver204は、APP201からFPGA111の更新指示を受信すると(ステップS101)、新しい回路情報をダウンロードし、FLASH119に配置する(ステップS102)。
【0051】
次に、FPGA Driver204は、FPGA111に再起動を指示する(ステップS103)。
【0052】
次に、FPGA111は再起動し、FLASH119から新しい回路情報をロードする(ステップS104)。
【0053】
以降、FPGA111は、新しい回路情報にて動作を開始する(ステップS105)。FPGA Driver204は、FPGA111の起動完了をAPP201に通知する(ステップS106)。
【0054】
再度、
図5を参照して、上記FPGA111の起動完了後の動作を説明する。APP201は、前記FPGA111の起動完了通知を受け取ると(ステップS008)、Alt-SIM202とFPGA111間のメモリ同期を行う(ステップS009)。
【0055】
メモリ同期の完了後、APP201は、FPGA Driver204に対し、S-SW112及びN-SW113をFPGAモードに切り替えるよう指示する(ステップS010)。
【0056】
最後に、APP201は、Alt-SIM202を停止する(ステップS011)。
【0057】
以上説明したとおり、本実施形態によれば、FPGA111の回路情報の更新中もS-SW112、N-SW113にパケットの転送を継続させ、代替モジュールにてパケットの処理を行わせ、サービスを継続することができる。具体的には、上記
図6に示したFPGA111更新時においても、代替モジュールとして、Alt-SIM202が処理を続けることで、サービスの完全停止を防ぐことができる。また、上記した説明からも明らかなように、本実施形態は、背景技術に記載した特許文献記載の手法との対比においても、FPGA111の書き変え可能な領域116を十分に利用できるという利点がある。
【0058】
なお、上記した実施形態では、メモリ同期のために、S-SW112、N-SW113のバイパスモードで例外パケットの設定を行っているが、SNIC100とAPP201との間には仮想スイッチが介在する場合も想定される。この場合、仮想スイッチにも例外パケットが通るように適切な設定を行えばよい。例えば、仮想スイッチを制御するSDN(Software Defined Network)コントローラに適切な指示を出せばよい。この場合においても、メモリ同期用のパケットを他のパケットとは独立するように扱うことで、メモリの同期を実施することができる。
【0059】
[第2の実施形態]
続いて、メモリ同期を行う構成に変更を加えた本発明の第2の実施形態について図面を参照して詳細に説明する。
図7は、本発明の第2の実施形態の構成を示す図である。
図4に示した第1の実施形態との相違点は、DRAM118とFPGA111との間にD-CTRL121というモジュールが追加されている点である。また、これに伴い、PCIE Controller115aと、APP201aに変更が加えられている。その他の構成は、基本的に第1の実施形態と同様であるので、以下、その相違点を中心に説明する。
【0060】
本実施形態では、DRAM118が、FPGA111の再起動中でも通電しており、内部の記憶情報が消えない特性を利用する。すなわち、FPGA111の再起動中においてもAlt-SIM202からDRAM118を直接参照させることで、メモリ同期自体を省略可能としている。そして、FPGA111起動完了後は、DRAM118をFPGAに再アタッチしてやることで、FPGA111は処理を継続できる。
【0061】
D-CTRL121は、FPGA111又はAlt-SIM202からDRAM118へのアクセスを制御するモジュール(メモリ制御部)である。D-CTRL121は、PCIE Controller115aとも結線されている。D-CTRL121は、通常時においては、FPGA111からのアクセスのみを許容する。PCIE Controller115aからの指示があった場合、D-CTRL121は、Alt-SIM202に代表されるOS上のアプリケーションに、DRAM118の一部もしくは全領域を割り当てる制御を行う。
【0062】
PCIE Controller115aは、FPGA111を制御するためのハードウェアモジュールである。具体的には、PCIE Controller115aは、FPGA Driverからの制御に従い、FPGA111に対し、FPGA111の再起動やその回路情報の更新を命令する。また、PCIE Controller115aは、FPGA Driver経由でAPP201a側に、FPGA111の状態を通知する。また、PCIE Controller115aは、APP201aからの指示に従い、S-SW112、N-SW113を切り替えるスイッチ制御回路(スイッチ制御回路15参照)としても機能する。
【0063】
さらに、本実施形態のPCIE Controller115aは、D-CTRL121に対して、DRAMへのアクセス主体の切り替えを指示する。具体的には、PCIE Controller115aは、DRAM118にアクセスできる主体を、FPGA111からAlt-SIM202に変更する。また、PCIE Controller115aは、DRAM118にアクセスできる主体を、Alt-SIM202からFPGA111に変更する。
【0064】
APP201aは、FPGA Driver204経由で指示を出して、DRAM118のメモリ領域をアプリケーションから参照できる状態にする。これにより、Alt-SIM202が、DRAM118を直接参照できるようになる。また、APP201aは、FPGA Driver204経由で、DRAM118のメモリ領域をFPGA111から参照できる状態に戻す処理を行う。
【0065】
続いて、本実施形態の動作について図面を参照して詳細に説明する。
図8は、本発明の第2の実施形態の動作を表したフローチャートである。
図8を参照すると、まず、APP201aは、FPGA111の回路を更新するため、Alt-SIM202を起動する(ステップS201)。
【0066】
次に、APP201aは、DRAM118のアクセス主体をアプリケーションに切り替える(ステップS202)。この指示は、FPGA Driver204、PCIE Controller115a及びD-CTRL121を経由して指示される。
【0067】
次に、APP201aは、Alt-SIM202の起動を確認して、Alt-SIM202にDRAM118のアクセス権を渡す(ステップS203)。以降、Alt-SIM202は、modules120と同等の処理を実行できる状態になる。
【0068】
次に、APP201aは、FPGA Driver204経由でN-SW113及びS-SW112をバイパスモードに切り替える(ステップS204)。
【0069】
次に、APP201aは、NIC Driver203から受信したパケットをAlt-SIM202を用いてパケット処理するように動作を切り変える(ステップS205)。具体的には、NIC Driver203から受信したパケットをAlt-SIM202に渡し、Alt-SIM202から出力されたパケットをN-SW113側に送る処理を行う。
【0070】
次に、APP201aは、FPGA Driver204に対し、FPGA111の更新を指示する(ステップS206)。以降、FPGA111側で回路情報の更新が行われる。FPGA111側における回路情報の更新は、第1の実施形態と同様であるため、説明を省略する。
【0071】
APP201aは、前記FPGA111の起動完了通知を受け取ると(ステップS208)、DRAM118のアクセス主体を、Alt-SIM202からFPGA111に戻す(ステップS209)。これにより、以降、FPGA111はDRAM118を参照できるようになる。
【0072】
その後、APP201aは、FPGA Driver204に対し、S-SW112及びN-SW113をFPGAモードに切り替えるよう指示する(ステップS210)。
【0073】
最後に、APP201aは、Alt-SIM202を停止する(ステップS211)。
【0074】
以上、説明したように、第2の実施形態でも、FPGA111の回路情報の更新中もS-SW112、N-SW113にパケットの転送を継続させ、代替モジュールにてパケットの処理を行わせ、サービスを継続することができる。具体的には、上記
図6に示したFPGA111更新時においても、代替モジュールとして、Alt-SIM202が処理を続けることで、サービスの完全停止を防ぐことができる。さらに、第1の実施形態との対比においても、メモリ同期のための例外パケットの処理を省略できるという利点がある。
【0075】
以上、本発明の各実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、各図面に示したネットワーク構成、各要素の構成、メッセージの表現形態は、本発明の理解を助けるための一例であり、これらの図面に示した構成に限定されるものではない。
【0076】
例えば、本発明は、NICチップの機能もFPGAで実現したタイプのSNICにも適用可能である。この場合、S-SW112a及びN-SW113aは、
図9に示すように、FPGA111内の書き換え可能領域(Writable FPGA)116の入出力端に配置されることになる(第3の実施形態)。
【0077】
また、上記した各実施形態のFPGA111に実装する機能は、通信の暗号化や、パケットのオーダリング等の通信処理に限られない。例えば、下記のような、より上位レイヤの処理をFPGA111に担わせることもできる。
【0078】
(1)Webサービス
本発明は、例えば、動的なWebコンテンツをFPGA111上の回路で生成し、静的なコンテンツをIAサーバ200側のAPP201で応答する形態のWebサービスを実現するSNICにも適用可能である。
【0079】
一般的に動的Webコンテンツ作成の方がCPUのリソースを使用するため、FPGA111に動的なWebページを生成する回路を実装することで、レスポンスを早くすることが可能になり、ユーザエクスペリエンス向上を期待できる。
例えば、動的Webページ作成は、外部のDB(データベース)にアクセスしてユーザ登録情報(購入履歴など)を取得したり、外部サービスのAPI(Application Programming Interface)を呼び出すことが行われる。このように動的なWebページの生成には、ネットワークを経由して他サービスを介することが多い。SNIC内のFPGA111で、こうした機能を実装することで、さらなる性能向上を期待することができる。
【0080】
このとき、WebサービスのセッションはSSL/TLS等のセキュリティレイヤのコンテキスト情報だけではなく、ユーザセッションのコンテキストも管理している(例えば、ブラウザの戻るボタンを押しても、そのユーザセッションとして、ありえない画面遷移のため、Webサービスが以前と同じWebページを生成できないことがある)。なお、SSL、TLSは、それぞれSecure Sockets Layer、Transport Layer Securityの略である。
【0081】
本発明のSNICの場合、これらのコンテキスト情報は、SNIC100内のDRAM118上で保持される。このコンテキスト情報を、代替動的Webページ生成を行う代替モジュール(上記Alt-SIM202相当)と同期するように構成することで、FPGA111内の回路更新時も、ユーザセッション断を避けることができることになる。また、これにより、ユーザとしても、Webサービスへ再ログインする煩わしさが無くなるという利点がある。
【0082】
(2)画像認識アプリケーション
運転支援サービスとして、車載のカメラで撮影した動画をモバイルエッジのデータセンターで解析処理して、危険物を認識し、近傍の自動車に通知するサービスが想定される。本発明は、このようなサービスを実現するSNICにも適用可能である。
【0083】
この時、画像の解析処理をFPGA111で実装することで性能(例えば、認識件数/秒)を向上することができる。この画像認識エンジンを向上するには日々アップデートが必要になるが、本発明を適用することで、サービスを止めずに、画像認識エンジンの更新を行うことが可能となる。なお、その際に、サービスの特性を考慮して、画像認識エンジンの更新タイミングを決定することも好ましい。例えば、自動車の場合、夜間のユーザ数(自動車数)が少ないという特性がある。これを利用して、性能の縮退が許容される夜間に、サービス断を避けつつ解析エンジンを更新することができる。
【0084】
また、上記した第1~第3の実施形態のIAサーバは、
図10のCPU(Central Processing Unit)9010、通信インタフェース9020、メモリ9030、補助記憶装置9040を備える構成に例示される。
【0085】
最後に、本発明の好ましい形態を要約する。
[第1の形態]
(上記第1の視点によるネットワークインタフェースカード参照)
[第2の形態]
上記したネットワークインタフェースカードの1対のスイッチは、
前記第2のモードにおいて、前記プログラム可能論理回路に、前記コンピュータ側とのメモリ同期用のパケットを送るよう動作する構成を採ることができる。
[第3の形態]
上記したネットワークインタフェースカードの1対のスイッチは、前記プログラム可能論理回路内部の可変領域の入力端と、出力端にそれぞれ配置されている構成を採ることができる。
[第4の形態]
上記したネットワークインタフェースカードは、さらに、
前記アプリケーションプログラム側から、プログラム可能論理回路が一時的に情報を記憶するために用いるメモリへのアクセスを許容するメモリ制御部を備える構成を採ることができる。
[第5の形態]
上記したネットワークインタフェースカードの前記プログラム可能論理回路は、前記メモリ制御部から前記メモリの情報を引き継ぐことで、前記回路情報の書き換え後、前記コンピュータで実施させていた処理を引き継ぎ可能に構成されていることが好ましい。
[第6の形態]
(上記第2の視点によるコンピュータ参照)
[第7の形態]
(上記第3の視点による回路情報の書き換え方法参照)
[第8の形態]
(上記第4の視点によるプログラム参照)
なお、上記第6~第8の形態は、第1の形態と同様に、第2~第5の形態に展開することが可能である。
【0086】
なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし選択(部分的削除を含む)が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。さらに、上記引用した文献の各開示事項は、必要に応じ、本発明の趣旨に則り、本発明の開示の一部として、その一部又は全部を、本書の記載事項と組み合わせて用いることも、本願の開示事項に含まれるものと、みなされる。
【符号の説明】
【0087】
10 ネットワークインタフェースカード
11 プログラム可能論理回路
12、13 スイッチ
14 コンピュータ側インタフェース(IF)
15 スイッチ制御回路
20 コンピュータ
100、100a、100b SNIC
111 FPGA
112、112a S-SW
113、113a N-SW
114 Ether Network Controller
115、115a PCIE Controller
116 書き換え可能な領域(Writable FPGA)
117 QSFP
118 DRAM
119 FLASH
120 modules
121 D-CTRL
200 IAサーバ
201、201a APP
202 Alt-SIM
203 NIC Driver
204 FPGA Driver
205 CPU/RAM
210 プログラム群(APL/OS)
9000 コンピュータ
9010 CPU
9020 通信インタフェース
9030 メモリ
9040 補助記憶装置