(57)【要約】【課題】本開示は、プログラミング程の時間と知識を必要とすることなく、自由度の高いパケット処理を可能にすることを目的とする。【解決手段】本開示は、ネットワーク装置９１の解釈可能な言語でパケットに対する処理が記述されたパケット処理ロジックを記憶するパケット処理ロジック格納部１３と、パケット処理ロジックで定められたパケットを選択するフィルタ部１４３と、パケット処理ロジックに従った処理を、フィルタ部１４３から受け取ったパケットに対して実行するパケット処理ロジック実行部１４と、パケット処理ロジックをネットワーク装置９１の動作中に変更するロジック変更処理部１７と、を備えるネットワーク装置９１である。【選択図】図１
2018019312.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク装置の解釈可能な言語でパケットに対する処理が記述されたパケット処理ロジックを記憶するパケット処理ロジック格納部（１３）と、
前記パケット処理ロジック格納部に記憶されているパケット処理ロジックで定められた所定のパケットを選択するフィルタ部（１４３）と、
前記パケット処理ロジック格納部に記憶されているパケット処理ロジックに従った処理を、前記フィルタ部から受け取ったパケットに対して実行するパケット処理ロジック実行部（１４）と、
前記パケット処理ロジック格納部に記憶されている前記パケット処理ロジックを、ネットワーク装置の動作中に変更するロジック変更処理部（１７）と、
を備えるネットワーク装置。
【請求項２】
パケットに対する処理がスクリプト言語で記述されたパケット処理プログラムを、パケット処理ロジック実行部（１４）の実行可能なパケット処理ロジックに翻訳するスクリプト解釈部（１２）と、
前記スクリプト解釈部の翻訳したパケット処理ロジックを記憶するパケット処理ロジック格納部（１３）と、
前記パケット処理ロジック格納部に記憶されているパケット処理ロジックで定められた所定のパケットを選択するフィルタ部（１４３）と、
前記パケット処理ロジック格納部に記憶されているパケット処理ロジックに従った処理を、前記フィルタ部から受け取ったパケットに対して実行するパケット処理ロジック実行部（１４）と、
を備えるネットワーク装置。
【請求項３】
パケットに対する処理がスクリプト言語で記述されたパケット処理プログラムを、パケット処理ロジック実行部（１４）の実行可能なパケット処理ロジックに翻訳するスクリプト解釈部（１２）と、
前記スクリプト解釈部の翻訳したパケット処理ロジックを記憶し、記憶されている前記パケット処理ロジックがネットワーク装置の動作中に変更可能である前記パケット処理ロジック格納部（１３）と、
前記パケット処理ロジック格納部に記憶されているパケット処理ロジックで定められた所定のパケットを選択するフィルタ部（１４３）と、
前記パケット処理ロジック格納部に記憶されているパケット処理ロジックに従った処理を、前記フィルタ部から受け取ったパケットに対して実行するパケット処理ロジック実行部（１４）と、
前記パケット処理ロジック格納部に記憶されている前記パケット処理ロジックを、ネットワーク装置の動作中に変更するロジック変更処理部（１７）と、
を備えるネットワーク装置。
【請求項４】
前記パケット処理ロジックは、アプリケーションレイヤのデータ部分に追加データを挿入する情報付加処理を含み、
前記パケット処理ロジック格納部に前記情報付加処理が記憶されている場合、
前記フィルタ部は、前記所定のパケットからアプリケーションデータを読み出し、
前記パケット処理ロジック実行部は、前記フィルタ部から受け取ったアプリケーションデータに前記追加データを付加し、前記追加データを付加後のアプリケーションデータの情報を用いてパケットを再構成する、
請求項１から３のいずれかに記載のネットワーク装置。
【請求項５】
前記パケット処理ロジック格納部に記憶されているパケット処理ロジックを実行するために用いる一時記憶部（１４１）をさらに備え、
前記フィルタ部は、前記所定のパケットに含まれるデータを前記一時記憶部に格納し、
前記パケット処理ロジック実行部は、前記一時記憶部に格納されているデータを用いて、前記パケット処理ロジック格納部に記憶されているパケット処理ロジックに従った処理を実行する、
請求項１から４のいずれかに記載のネットワーク装置。
【請求項６】
前記パケット処理ロジックは、ネットワーク装置に備わるビルトイン関数保持部に格納されているビルトイン関数を用いた処理を含み、
前記パケット処理ロジック格納部にビルトイン関数を用いた処理が記憶されている場合、
前記パケット処理ロジック実行部は、前記ビルトイン関数保持部に格納されているビルトイン関数を用いて、前記パケット処理ロジック格納部に記憶されているパケット処理ロジックに従った処理を実行する、
請求項１から５のいずれかに記載のネットワーク装置。
【請求項７】
ネットワーク装置（９１）が、ネットワーク装置の解釈可能な言語でパケットに対する処理が記述されたパケット処理ロジックでありかつパケット処理ロジック格納部（１３）に記憶されているパケット処理ロジックで定められた所定のパケットを選択するフィルタステップと、
前記ネットワーク装置が、前記パケット処理ロジック格納部に記憶されているパケット処理ロジックに従った処理を、前記フィルタ部から受け取ったパケットに対して実行するパケット処理ロジック実行ステップと、
前記ネットワーク装置が、前記パケット処理ロジック格納部に記憶されている前記パケット処理ロジックを、ネットワーク装置の動作中に変更するロジック変更処理ステップと、
を実行するネットワーク装置の制御方法。
【請求項８】
ネットワーク装置（９１）が、パケットに対する処理がスクリプト言語で記述されたパケット処理プログラムを、パケット処理ロジック実行部（１４）の実行可能なパケット処理ロジックに翻訳し、パケット処理ロジック格納部（１３）に記憶するスクリプト解釈ステップと、
前記ネットワーク装置が、前記パケット処理ロジック格納部に記憶されているパケット処理ロジックで定められた所定のパケットを選択するフィルタステップと、
前記ネットワーク装置が、前記パケット処理ロジック格納部に記憶されているパケット処理ロジックに従った処理を、前記フィルタ部から受け取ったパケットに対して実行するパケット処理ロジック実行ステップと、
を実行するネットワーク装置の制御方法。
【請求項９】
ネットワーク装置（９１）が、パケットに対する処理がスクリプト言語で記述されたパケット処理プログラムを、パケット処理ロジック実行部（１４）の実行可能なパケット処理ロジックに翻訳し、パケット処理ロジック格納部（１３）に記憶するスクリプト解釈ステップと、
前記ネットワーク装置が、前記パケット処理ロジック格納部に記憶されているパケット処理ロジックで定められた所定のパケットを選択するフィルタステップと、
前記ネットワーク装置が、前記パケット処理ロジック格納部に記憶されているパケット処理ロジックに従った処理を、前記フィルタ部から受け取ったパケットに対して実行するパケット処理ロジック実行ステップと、
前記ネットワーク装置が、前記パケット処理ロジック格納部に記憶されている前記パケット処理ロジックを、ネットワーク装置の動作中に変更するロジック変更処理ステップと、
を実行するネットワーク装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ネットワーク装置及びその制御方法に関する。
【背景技術】
【０００２】
ネットワーク装置は、装置ベンダの提供するハードウェア及びソフトウェアが一体となった製品が主流であり、通信事業者が独自にカスタマイズすることは困難である。このため、通信事業者の提供するサービスは、装置ベンダの提供する製品仕様に従ったものに限定されている。
【０００３】
通信ネットワークの進化に伴い、通信ネットワークを構成するネットワーク装置の配置や特性に応じた機能が求められている。ネットワーク装置に機能を追加する手段として、ホワイトボックススイッチ及びＯｐｅｎＦｌｏｗスイッチが提案されている（例えば、特許文献１参照。）。
【０００４】
ホワイトボックススイッチは、主に学術研究用途のネットワーク装置として利用されるもので、一般に利用可能な通信機能に対し、様々な機能を追加することが出来る。しかし、ホワイトボックススイッチは、Ｌｉｎｕｘ（登録商標）  ＯＳ上で動作し、そのうえで動作するプログラムを利用者自身がプログラム開発する必要がある。このため、プログラミングについての深い専門知識を必要とし、実装に時間を要する。さらに、ネットワーク装置に処理を実行させるためにはプログラム変更によるネットワーク装置の再起動が必要になるため、ネットワーク装置の再起動が困難なサービス提供用には適用が困難である問題がある。
【０００５】
ＯｐｅｎＦｌｏｗスイッチは、サービス提供用のネットワーク装置として開発されたもので、ネットワーク装置の再起動を行うことなく、レイヤＬ２、Ｌ３及びＬ４のパケットヘッダの書き換え処理をネットワーク装置の外部から制御することができる。ＯｐｅｎＦｌｏｗスイッチは、外部のコントローラからパケットヘッダの書き換え動作を指示することにより制御が行えるため、プログラミングについての深い専門知識は必要なく、ネットワークエンジニアによる制御が可能である。しかし、パケットヘッダの書き換え以外の新たな機能がネットワーク装置に要求される場合には対応できない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１５−１７１０８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
そこで、本開示は、ネットワーク装置において、パケットヘッダの書き換え以外の機能追加をネットワーク管理者が容易に可能にすることを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本開示は、パケット処理をスクリプト言語で記述可能にする。これにより、プログラミング程の時間と知識を必要とすることなく、自由度の高いパケット処理を可能にする。
【０００９】
本開示に係るネットワーク装置（９１）は、
ネットワーク装置の解釈可能な言語でパケットに対する処理が記述されたパケット処理ロジックを記憶するパケット処理ロジック格納部（１３）と、
前記パケット処理ロジック格納部に記憶されているパケット処理ロジックで定められた所定のパケットを選択するフィルタ部（１４３）と、
前記パケット処理ロジック格納部に記憶されているパケット処理ロジックに従った処理を、前記フィルタ部から受け取ったパケットに対して実行するパケット処理ロジック実行部（１４）と、
前記パケット処理ロジック格納部に記憶されている前記パケット処理ロジックを、ネットワーク装置の動作中に変更するロジック変更処理部（１７）と、
を備える。
【００１０】
本開示に係るネットワーク装置（９１）は、
パケットに対する処理がスクリプト言語で記述されたパケット処理プログラムを、パケット処理ロジック実行部（１４）の実行可能なパケット処理ロジックに翻訳するスクリプト解釈部（１２）と、
前記スクリプト解釈部の翻訳したパケット処理ロジックを記憶するパケット処理ロジック格納部（１３）と、
前記パケット処理ロジック格納部に記憶されているパケット処理ロジックで定められた所定のパケットを選択するフィルタ部（１４３）と、
前記パケット処理ロジック格納部に記憶されているパケット処理ロジックに従った処理を、前記フィルタ部から受け取ったパケットに対して実行するパケット処理ロジック実行部（１４）と、
を備える。
【００１１】
本開示に係るネットワーク装置（９１）は、
パケットに対する処理がスクリプト言語で記述されたパケット処理プログラムを、パケット処理ロジック実行部（１４）の実行可能なパケット処理ロジックに翻訳するスクリプト解釈部（１２）と、
前記スクリプト解釈部の翻訳したパケット処理ロジックを記憶し、記憶されている前記パケット処理ロジックがネットワーク装置の動作中に変更可能である前記パケット処理ロジック格納部（１３）と、
前記パケット処理ロジック格納部に記憶されているパケット処理ロジックで定められた所定のパケットを選択するフィルタ部（１４３）と、
前記パケット処理ロジック格納部に記憶されているパケット処理ロジックに従った処理を、前記フィルタ部から受け取ったパケットに対して実行するパケット処理ロジック実行部（１４）と、
前記パケット処理ロジック格納部に記憶されている前記パケット処理ロジックを、ネットワーク装置の動作中に変更するロジック変更処理部（１７）と、
を備える。
【００１２】
本開示に係るネットワーク装置（９１）の制御方法は、
ネットワーク装置（９１）が、ネットワーク装置の解釈可能な言語でパケットに対する処理が記述されたパケット処理ロジックでありかつパケット処理ロジック格納部（１３）に記憶されているパケット処理ロジックで定められた所定のパケットを選択するフィルタステップと、
前記ネットワーク装置が、前記パケット処理ロジック格納部に記憶されているパケット処理ロジックに従った処理を、前記フィルタ部から受け取ったパケットに対して実行するパケット処理ロジック実行ステップと、
前記ネットワーク装置が、前記パケット処理ロジック格納部に記憶されている前記パケット処理ロジックを、ネットワーク装置の動作中に変更するロジック変更処理ステップと、
を実行する。
【００１３】
本開示に係るネットワーク装置（９１）の制御方法は、
ネットワーク装置（９１）が、パケットに対する処理がスクリプト言語で記述されたパケット処理プログラムを、パケット処理ロジック実行部（１４）の実行可能なパケット処理ロジックに翻訳し、パケット処理ロジック格納部（１３）に記憶するスクリプト解釈ステップと、
前記ネットワーク装置が、前記パケット処理ロジック格納部に記憶されているパケット処理ロジックで定められた所定のパケットを選択するフィルタステップと、
前記ネットワーク装置が、前記パケット処理ロジック格納部に記憶されているパケット処理ロジックに従った処理を、前記フィルタ部から受け取ったパケットに対して実行するパケット処理ロジック実行ステップと、
を実行する。
【００１４】
本開示に係るネットワーク装置（９１）の制御方法は、
ネットワーク装置（９１）が、パケットに対する処理がスクリプト言語で記述されたパケット処理プログラムを、パケット処理ロジック実行部（１４）の実行可能なパケット処理ロジックに翻訳し、パケット処理ロジック格納部（１３）に記憶するスクリプト解釈ステップと、
前記ネットワーク装置が、前記パケット処理ロジック格納部に記憶されているパケット処理ロジックで定められた所定のパケットを選択するフィルタステップと、
前記ネットワーク装置が、前記パケット処理ロジック格納部に記憶されているパケット処理ロジックに従った処理を、前記フィルタ部から受け取ったパケットに対して実行するパケット処理ロジック実行ステップと、
前記ネットワーク装置が、前記パケット処理ロジック格納部に記憶されている前記パケット処理ロジックを、ネットワーク装置の動作中に変更するロジック変更処理ステップと、
を実行する。
【発明の効果】
【００１５】
本開示によれば、ネットワーク装置（９１）がオブジェクトコードを保持している関数名及び引数を用いて記述されたソースコードを用いてネットワーク装置（９１）の処理を制御することができる。このため、本開示は、サービス提供用のネットワーク装置において、自由度の高いパケット処理を可能にすることができる。
【図面の簡単な説明】
【００１６】
【図１】実施形態１に係るネットワークシステムの一例を示す。
【図２】ネットワークシステムに備わる各構成の第１の配置例を示す。
【図３】ネットワークシステムに備わる各構成の第２の配置例を示す。
【図４】ビルトイン関数保持部に格納されている関数名とその引数の一例を示す。
【図５】パケット処理ロジックエンティティを示す。
【図６】パケット処理ロジック生成のフローを示す。
【図７】ネットワーク装置の動作例を示す。
【図８】実施形態２に係るシステム構成の一例を示す。
【図９】実施形態２に係る実行パケット処理フローの一例を示す。
【図１０】実施形態２に係る詳細な第１のスクリプト記述例を示す。
【図１１】実施形態２に係る詳細な第２のスクリプト記述例を示す。
【図１２】実施形態３に係るシステム構成の一例を示す。
【図１３】実施形態３に係る実行パケット処理フローの一例を示す。
【図１４】実施形態３に係る詳細な第１のスクリプト記述例を示す。
【図１５】実施形態３に係る詳細な第２のスクリプト記述例を示す。
【図１６】実施形態４に係る第１のシステム構成の一例を示す。
【図１７】実施形態４に係る実行パケット処理フローの一例を示す。
【図１８】実施形態４に係るスクリプト記述例及びＶＬＡＮカプセルヘッダの一例を示す。
【図１９】実施形態５に係る詳細な第１のスクリプト記述例を示す。
【図２０】実施形態５に係る詳細な第２のスクリプト記述例を示す。
【図２１】ＶＬＡＮカプセル化したパケット構成の一例を示す。
【図２２】実施形態５に係る第２のシステム構成の一例を示す。
【発明を実施するための形態】
【００１７】
以下、本開示の実施形態について、図面を参照しながら詳細に説明する。なお、本開示は、以下に示す実施形態に限定されるものではない。これらの実施の例は例示に過ぎず、本開示は当業者の知識に基づいて種々の変更、改良を施した形態で実施することができる。なお、本明細書及び図面において符号が同じ構成要素は、相互に同一のものを示すものとする。
【００１８】
（実施形態１）
図１に、本実施形態に係るネットワークシステムの一例を示す。本実施形態に係るネットワークシステムは、スクリプト作成部１１と、スクリプト解釈部１２と、ロジック変更処理部１７と、パケット処理ロジック格納部１３と、パケット処理ロジック実行部１４と、通常スイッチング処理部１５と、パケット送受信部１６と、を備える。
【００１９】
パケット処理ロジック実行部１４は、一時記憶部１４１、フィルタ部１４３、パケットバッファ１４４を備える。パケット処理ロジック実行部１４は、例えば、ネットワークプロセッサ、スイッチングＬＳＩ、ＦＰＧＡ／ＡＳＩＣ回路を用いて構成することができる。
【００２０】
図２及び図３に、各構成の配置例を示す。パケット処理ロジック実行部１４及び通常スイッチング処理部１５は、ネットワーク装置９１に備わる。スクリプト作成部１１は、ユーザ端末９２に備わる。ユーザ端末９２は、ネットワーク管理者の使用端末である。このように、本実施形態では、ネットワークを管理するネットワーク管理者が、スクリプト言語でプログラムを記述する。スクリプト解釈部１２は、制御ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いて構成することが可能であり、ネットワーク装置９１に備わっていてもよいし、ユーザ端末９２又はサーバ（不図示）に備わっていてもよい。
【００２１】
ステップＳ１０１：ネットワーク管理者は、スクリプト作成部１１を利用し、ネットワーク装置９１がパケットを受信した場合のパケットに対する処理を記述したソースコードをスクリプト言語により入力する。これにより、スクリプト作成部１１においてパケット処理プログラムが生成される。
【００２２】
パケット処理プログラムは、パケットに対するデータ参照、比較、書き換え、データの追加などの命令を含み、そのソースコードで全てのパケット処理ロジックを構成可能な形式で記述もできるが、複雑な処理のサイズをコンパクトにまとめ、実行速度が速いビルトイン関数を呼び出し利用することも可能である。
【００２３】
ここで、パケット処理ロジック実行部１４は、ビルトイン関数を保持するビルトイン関数保持部１４２を備えることが好ましい。ビルトイン関数は、ビルトイン関数名及び引数を用いてパケット処理ロジック実行部１４での処理を定義するいわゆるライブラリ関数であり、演算処理などのメイン処理やその初期化関数を含む。この場合、ネットワーク管理者は、ビルトイン関数保持部１４２に保持されているビルトイン関数名とその引数を用いて、ネットワーク装置９１の処理を記述したソースコードを作成することができる。
【００２４】
図４に、ビルトイン関数保持部１４２に格納されているビルトイン関数名とその引数の一例を示す。例えば、メモリ割り当て処理の場合、ビルトイン関数名は「Ｆｕｎｃ＿Ｃｒｅａｔｅ（  ）」、引数はメモリ名称である。本実施形態では、ビルトイン関数保持部１４２に処理Ａ〜処理Ｆが格納されている例を示す。処理Ａは一時記憶部１４１のメモリ割り当て、処理Ｂはパケット検出条件の設定、処理Ｃはデータ抽出及び一時記憶部１４１への格納、処理Ｄは一時記憶部１４１の演算、処理Ｅは廃棄処理、処理Ｆは転送処理を示す。
【００２５】
ステップＳ１０２：スクリプト解釈部１２は、パケット処理プログラムを取得すると、スクリプト言語を解釈・翻訳してパケット処理ロジック実行部１４の解釈可能なパケット処理ロジックを構成し、パケット処理ロジック格納部１３に保存する。このとき、スクリプト解釈部１２は、プログラムに記載されている引数や変数などの情報もパケット処理ロジック格納部１３に保存する。
【００２６】
図５に、パケット処理ロジックを構成するパケット処理ロジックエンティティの構成例を示す。パケット処理ロジックエンティティは、例えば、ロジックＩＤ、実行命令コード、引数、後処理命令コード、後処理引数を含む。ロジックＩＤは他のロジックから相互参照するためのＩＤ番号であり、例えば、０〜６４５５９の数値が割り当てられる。実行命令コードや後処理命令コードは、ロジックで実行される処理コードである。例えば、コード「０ｘ０１」はＧＯＴＯ処理を実行し、コード「０ｘ０２」であればＦＵＮＣＣＡＬＬ（ビルトイン関数実行）処理を実行し、コード「０ｘ０３であればＣＯＭＰ（比較）処理を実行し、コード「０ｘ０４」であればＥＶＡＬ（評価）処理を実行し、コード「０ｘ０５」であればＬＯＡＤ処理を実行し、コード「０ｘ０６」であればＳＴＯＲＥ処理を実行し、コード「０ｘ０７」であればＡＰＰＥＮＤ（データ追加）処理を実行する。引数は、処理に必要な引数である。後処理命令コードは、処理実行後に実行する後処理のための処理コードである。後処理引数は、後処理に必要な引数である。
【００２７】
パケット処理ロジックエンティティは、パケット処理ロジックを構成する部品であり、処理の最小単位である。パケット処理ロジックエンティティは実行パケット処理ロジック記憶部１３２であるメモリに格納され、パケット内部のデータ参照や、データ比較、ビルトイン関数の呼び出しなどをパケット処理ロジック実行部１４に命令する。また、処理実行後の後処理として比較処理後の次のエンティティへのジャンプ命令や、条件ジャンプを命令することが出来る。
【００２８】
図６に、パケット処理プログラムからパケット処理ロジックを生成する過程を例示する。スクリプト解釈部１２は、パケット処理プログラムに記述されたパケットの処理をシーケンスとして処理する内部ロジックとして解釈、翻訳する。スクリプト解釈部１２は、パケット処理ロジック実行部１４が解釈できるよう、内部ロジックをＩＤ番号が付与されたパケット処理エンティティに分割する。
【００２９】
ロジック変更処理部１７は、ＩＤ順にパケット処理ロジック格納部１３に配置し、パケット処理ロジック格納部１３に記憶されているパケット処理ロジックを変更する。最後に、どのパケット処理ロジックエンティティをどのパケットに適用するかの検索条件をフィルタ部１４３に書き込む。これにより、ネットワーク装置９１の動作中にもパケット処理ロジックの書き込みが可能となる。また、パケット処理ロジックエンティティの変更又は削除の際には、先にフィルタ部１４３から該当検索条件を削除し、後からパケット処理ロジック格納部１３に記憶されているパケット処理ロジックを消去することで、ネットワーク装置９１の動作中の変更、削除が可能となる。
【００３０】
ここで、パケット処理ロジック格納部１３は、初期化用の初期化記憶部１３１と、パケット処理用の実行パケット処理ロジックの実行パケット処理ロジック記憶部１３２を備える。このように、パケット処理ロジック格納部１３は、処理に応じた記憶領域に処理を記憶する。例えば、スクリプトに処理Ａ及び処理Ｂが含まれている場合、パケット処理ロジック格納部１３は、処理Ａ及び処理Ｂを初期化記憶部１３１に記憶する。スクリプトに処理Ｃ、処理Ｄ、処理Ｅ、処理Ｆが含まれている場合、パケット処理ロジック格納部１３は、処理Ｃ、処理Ｄ、処理Ｅ、処理Ｆをスクリプト言語の記述に従った実行パケット処理ロジックを実行パケット処理ロジック記憶部１３２に記憶する。ここで、実行パケット処理ロジック記憶部１３２は、パケット転送中に動的にロード／書き換えが可能である。
【００３１】
ステップＳ１０４：初期化処理を実行する。例えば、パケット処理ロジック実行部１４は、初期化記憶部１３１に記憶されている処理Ａ及び処理Ｂに従って、一時記憶部１４１のメモリを割り当て、フィルタ部１４３のパケット検索条件を設定する。
【００３２】
ステップＳ１０５：初期化処理の後にネットワーク装置９１にパケットが入力されると、フィルタ部１４３の設定に従って、パケットを振り分ける。例えば、フィルタ部１４３に通常スイッチング処理条件が設定されている場合、パケット処理ロジック実行部１４は、通常スイッチング処理条件に一致するパケットを通常スイッチング処理部１５へ転送する。例えば、フィルタ部１４３に処理Ｃを行うパケットの条件が設定されている場合、当該条件に一致するパケットをパケットバッファ１４４に転送する。このとき、パケット処理ロジック実行部１４は、スクリプト解釈の実行を判断する。
【００３３】
処理Ｃを行うパケットの条件と一致する場合、パケット処理ロジック実行部１４は、処理Ｃ用のパケット処理ロジックを実行する。パケット処理ロジックがビルトイン関数の実行の指示である場合、パケット処理ロジック実行部１４は、パケット処理ロジックで指示されたビルトイン関数をビルトイン関数保持部１４２から呼び出して実行する。このとき、パケット処理ロジック実行部１４は、実行パケット処理ロジック記憶部１３２に記憶されている引数を用いる。
【００３４】
本実施形態では、パケット処理ロジック格納部１３に、図１に示すような処理Ｃ→処理Ｄ→処理Ｅ／処理Ｆが記憶されている。その場合、パケット処理ロジック実行部１４は、パケットバッファ１４４に格納されたパケットについて、処理Ｃに従ってパケットからデータを抽出して一時記憶部１４１へ格納し、処理Ｄに従って一時記憶部１４１に記憶されているデータを演算する。そして、パケット処理ロジック実行部１４は、処理Ｅに従って廃棄を行うか、又は処理Ｆに従って転送を行う。
【００３５】
通常スイッチング処理部１５は、ネットワーク装置９１の保持するフォワーディングデータベースに従い、パケットの転送処理を行う。
【００３６】
ここで、本実施形態に係るネットワークシステムは、パケット処理ロジックの書き換え後にパケット検索条件の変更を行うため、ネットワーク装置９１の再起動が必要ない。このため、通常転送とスクリプト解釈を切り替え、サービスを中断させることなくスクリプト解釈をリアルタイムに適用することができる。
【００３７】
例えば、図７に示すように、パケット送受信部１６がパケット受信すると、フィルタ部１４３が設定されたパケット検索条件を検索し、一致しない場合は通常スイッチング処理部１５がフォワーディングデータベース検索をして通常スイッチを行う。一方、パケット検索条件に一致した場合、パケット処理ロジック実行部１４は、パケット処理ロジックに従い、パケット廃棄やパケット再構築を行う。パケット再構築を行った場合は、パケット送受信部１６がパケットを送信する。
【００３８】
フィルタ部１４３への登録や削除によって、実行パケット処理ロジックに従った処理の実行と停止を切換えることができるため、ネットワーク装置９１を再起動することなくパケット処理を入れ替えることが可能となる。
【００３９】
（実施形態２）
図８に、本実施形態に係るシステム構成の一例を示す。本実施形態に係るシステムは、複数のクライアント９４がサーバ８２にアクセスし、データを取得するシステムである。
【００４０】
サーバ８２はネットワーク９３を経由し、複数のクライアント９４からアクセスされるため、クライアント９４がウィルスなどに感染し、サーバ８２に対する不正アクセスや、ＤｏＳ攻撃をかける恐れがある。このような場合、サーバ８２を防御するため、ファイアウォール装置をサーバ８２側に設置するが、ネットワーク装置９１が本実施形態によるスクリプトによる機能追加が可能であるため、ネットワーク装置９１にスクリプトによる機能追加を行い、ファイアウォール機能を持たせることが可能である。
【００４１】
図９に、パケット処理ロジック実行部１４の実行する実行パケット処理ロジックの一例を示す。本実施形態では、パケット処理ロジック格納部１３が、ＳＹＮ（ｓｙｎｃｈｒｏｎｉｚｅ）パケット判定処理、ＳＹＮパケットカウント処理、廃棄処理及び転送処理を、パケット処理ロジックとして記憶している。
【００４２】
ネットワーク装置９１がパケットを受信すると、パケット処理ロジック実行部１４がＳＹＮパケット判定処理を実行する（Ｓ２０１）。ＳＹＮパケット判定処理（Ｓ２０１）は、データを取り出す処理と、取り出したデータを用いてＳＹＮパケットかどうかを判定する処理と、を含む。ＳＹＮパケットであれば、パケット処理ロジック実行部１４は、ＳＹＮパケットカウント処理を実行する。ＳＹＮパケットカウント処理は、毎秒のＳＹＮパケット受信カウンタをカウントアップする処理を含む。パケット処理ロジックには、指定時間内にＳＹＮパケット受信カウンタＣＰが予め定められた値ＴＰを超えたか否かを判定する処理を含む（Ｓ２０２）。予め定められた値ＴＰは、例えば、ＤｏＳ攻撃の可能性のある数値１００００である。
【００４３】
ＳＹＮパケット受信カウンタが１００００を超えていれば（Ｓ２０２においてＹｅｓ）、パケットを廃棄する処理を、ビルトイン関数を用いて処理を実行する（Ｓ２０３）。ビルトイン関数は、ビルトイン関数保持部１４２に保持されている。フィルタ部１４３がＳＹＮパケットであると判定すると、パケット処理ロジック実行部１４は、実行パケット処理ロジックに従ってパケット処理ロジックエンティティを読み出し、実行する。パケット処理ロジックエンティティがビルトイン関数の呼び出しを命令している場合、ビルトイン関数保持部１４２からこれらのオブジェクトコードを呼出して実行する。
【００４４】
図１０及び図１１に、セキュリティ対策に関するスクリプト記述例を示す。図１０は初期化処理の一例を示し、図１１はメイン処理の一例を示す。メイン処理では、ＳＹＮパケットが１秒間に１００００パケット以上受信した場合に廃棄する。
【００４５】
（実施形態３）
本実施形態では、図１２に示すセンサデータ収集システムにおいて、ネットワーク装置９１Ａを用いてパケットのアプリケーションデータに時刻情報を付加する例について説明する。
【００４６】
センサ８１の検知したデータをセンサネットワーク８３で収集し、ネットワーク９３を介してからサーバ８２に格納する。このようなネットワーク構成の場合、ネットワーク９３とセンサネットワーク８３の間にネットワーク装置９１Ａを接続する。センサ８１は検知したデータのみ送信する機能を有し、時刻情報を送信する機能を有していないものとする。サーバ８２は検知したデータと時刻情報を必要としている場合、ネットワーク装置９１Ａにスクリプトによる機能追加を行い、センサ８１から送信されるパケットに時刻情報を追加することが可能である。
【００４７】
図１３に、パケット処理ロジック実行部１４の実行する実行パケット処理ロジックの一例を示す。本実施形態では、パケット処理ロジック格納部１３が、フィールド判定処理、情報付加処理及び転送処理を、実行パケット処理ロジックとして記憶している。
【００４８】
フィルタ部１４３がセンサ８１からのパケットであると判定すると、パケット処理ロジック実行部１４は、実行パケット処理ロジックに従ってパケット処理ロジックエンティティを読み出し、実行する。パケット処理ロジックエンティティがビルトイン関数の呼び出しを命令している場合、ビルトイン関数保持部１４２からこれらのオブジェクトコードを呼出して実行する。
【００４９】
フィールド判定処理では、パケットからアプリケーションデータに含まれるセンサ識別子を取り出し、それがセンサ８１と一致するかどうかをチェックする（Ｓ３０１）。一致する場合（Ｓ３０１においてＹｅｓ）、パケット処理ロジック実行部１４はパケットの最後尾に時刻情報を付加する（Ｓ３０５）。事前に取得したＩＰデータ長（Ｓ３０３）、ＵＤＰデータ長から（Ｓ３０４）、時刻情報データ長を追加したそれぞれのデータ長を再計算してパケットを再構成し（Ｓ３０６、Ｓ３０７）、転送する（Ｓ３０８）。一致しない場合（Ｓ３０１においてＮｏ）、パケット処理ロジック実行部１４はそのままパケットを転送する（Ｓ３０８）。
【００５０】
図１４及び図１５に、パケットへの情報付加に関するスクリプト記述例を示す。図１４は初期化処理の一例を示し、図１５はメイン処理の一例を示す。メイン処理では、センサ８１から受信したパケットの最後尾に時刻情報を付加して転送する。
【００５１】
本実施形態ではパケットの最後尾に時刻情報を付加したが、アプリケーションデータの特定位置に時刻情報を挿入することも可能である。また、時刻情報に代えて、アプリケーションレイヤのデータ部分に任意のデータを追加することも可能である。
【００５２】
（実施形態４）
本実施形態では、ネットワーク装置９１にＶＸＬＡＮ（Ｖｉｒｔｕａｌ  ｅＸｔｅｎｓｉｂｌｅ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）トンネル機能を搭載する例について説明する。この場合、パケット処理ロジック格納部１３が、ＶＸＬＡＮトンネル機能を有する処理を、実行パケット処理ロジックとして記憶している。
【００５３】
図１６に、本実施形態に係るネットワーク構成の一例を示す。本実施形態に係るシステムは、ユーザ端末９２−１〜９２−９がネットワーク９３を介してＶＬＡＮ（Ｖｉｒｔｕａｌ  ＬＡＮ）接続されている通信システムである。
【００５４】
ＩＰアドレスが「Ａ」のネットワーク装置９１Ａ、ＩＰアドレスが「Ｂ」のネットワーク装置９１Ｂ、ＩＰアドレスが「Ｃ」のネットワーク装置９１Ｃが、それぞれ、物理ポート番号「４」でネットワーク９３に接続されている。ユーザ端末９２−１，９２−２，９２−３はそれぞれネットワーク装置９１Ａの物理ポート番号１、２、３に接続されている。ユーザ端末９２−４，９２−５，９２−６はそれぞれネットワーク装置９１Ｂの物理ポート番号１、２、３に接続されている。ユーザ端末９２−７，９２−８，９２−９はそれぞれネットワーク装置９１Ｃの物理ポート番号１、２、３に接続されている。
【００５５】
ユーザ端末９２−１，９２−４，９２−７は、ユーザＡの使用端末であり、それぞれ、１０及び２０，１０，２０のＶＬＡＮ  ＩＤが割り当てられている。ユーザ端末９２−２，９２−５，９２−８は、ユーザＢの使用端末であり、それぞれ、１０及び２０，１０，２０のＶＬＡＮ  ＩＤが割り当てられている。ユーザ端末９２−３，９２−６，９２−９は、ユーザＣの使用端末であり、それぞれ、１０及び２０，１０，２０のＶＬＡＮ  ＩＤが割り当てられている。
【００５６】
このようなネットワーク構成において、各ネットワーク装置９１Ａ〜９１Ｃは、入力物理ポートや送信先に応じたＶＬＡＮカプセルヘッダを生成し、生成したＶＬＡＮカプセルヘッダを用いてトンネル終端装置のネットワーク装置９１Ａ〜９１Ｃへ送信する。
【００５７】
図１７に、本実施形態に係るフロチャート、及び図１８にＶＬＡＮカプセルヘッダの一例を示す。フィルタ部１４３は、入力パケットの入力物理ポート番号が条件に一致するか否かを判定する（Ｓ４０１）。例えば、入力物理ポート番号が「１」であるか否かを判定する。
【００５８】
条件に一致する場合、パケット処理ロジック実行部１４は、ＶＬＡＮ  ＩＤ及び送信先のＩＰアドレスが条件に一致するか否かを判定する。例えば、ＶＬＡＮ  ＩＤが１０でありかつ送信先のＩＰアドレスが「９２−４」であるか否かを判定する。条件に一致する場合、パケット処理ロジック実行部１４は、ＶＩＤを取得し（Ｓ４０２）、ＶＮＩを生成し（Ｓ４０３）、ＶＸＬＡＮカプセルのＶＸＬＡＮヘッダを付加し（Ｓ４０４）、ＶＸＬＡＮカプセルのＵＤＰヘッダを付加し（Ｓ４０５）、ＶＸＬＡＮカプセルのＩＰヘッダを付加し（Ｓ４０６）、宛先ＭＡＣアドレスを取得し（Ｓ４０７）、ＶＸＬＡＮカプセルのイーサネット（登録商標）ヘッダを付加し（Ｓ４０８）する。これにより、図１８に示すようなＶＸＬＡＮカプセルヘッダが生成する。
【００５９】
そして、パケット処理ロジック実行部１４は、生成したＶＸＬＡＮのカプセルヘッダを入力パケットに付加して送信する（Ｓ４０９）。このように、本実施形態は、独自プロトコルに対するパケット処理が必要な場合であっても、任意のヘッダを生成し、生成したヘッダを用いてパケットを送信することが可能になる。
【００６０】
図１９及び図２０に、詳細なスクリプト記述例を示す。図１９に示すスクリプト記述例は初期化処理を示し、図２０に示すスクリプト記述例はメイン処理を示す。メイン処理例では、入力ポートの物理ポート番号が「１」の場合、オリジナルフレームのＶＬＡＮ  ＩＤと入力ポートよりＶＸＬＡＮ  Ｈｅａｄｅｒの  ＩＤ（ＶＬＮＩ）を計算し、ＶＸＬＡＮカプセル化し物理ポート番号「４」の物理ポートへ送信する旨を示した。図２１に、ＶＬＡＮカプセル化したパケット構成の一例を示す。
【００６１】
本実施形態に係るヘッダの生成例は、ＶＬＡＮに限定されない。例えば、図２２に示すように、キャリア専用線で構成された商用ネットワーク８４を透過できないパケット（ブロードキャスト、マルチキャスト、ＬＡＣＰ（Ｌｉｎｋ  Ａｇｇｒｅｇａｔｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）、ＢＰＤＵ（Ｂｒｉｄｇｅ  Ｐｒｏｔｏｃｏｌ  Ｄａｔａ  Ｕｎｉｔ）など）を商用ネットワーク８４に透過させたり、泣き別れレイヤ２ネットワークを接続（ＶＸＬＡＮ）したりすることも可能になる。なお、図２２では、企業ネットワーク８５Ａ及び８５Ｂがパケットの送受信を行う例を示したが、本実施形態は商用ネットワーク８４を透過できない任意のパケットの送受信に適用することができる。
【産業上の利用可能性】
【００６２】
本開示は情報通信産業に適用することができる。
【符号の説明】
【００６３】
１１：スクリプト作成部
１２：スクリプト解釈部
１３：パケット処理ロジック格納部
１３１：初期化記憶部
１３２：実行パケット処理ロジック記憶部
１４：パケット処理ロジック実行部
１４１：一時記憶部
１４２：ビルトイン関数保持部
１４３：フィルタ部
１４４：パケットバッファ
１５：通常スイッチング処理部
１６：パケット送受信部
１６Ｒ：パケット受信部
１６Ｔ：パケット送信部
１７：ロジック変更処理部
８１：センサ
８２：サーバ
８３：センサネットワーク
８４：商用ネットワーク
８５Ａ、８５Ｂ：企業ネットワーク
９１、９１Ａ、９１Ｂ、９１Ｃ：ネットワーク装置
９２、９２−１、９２−２、９２−３、９２−４、９２−５、９２−６、９２−７、９２−８、９２−９：ユーザ端末
９３：ネットワーク
９４：クライアント
【図１】
2018019312.tif 000003
【図２】
2018019312.tif 000004
【図３】
2018019312.tif 000005
【図４】
2018019312.tif 000006
【図５】
2018019312.tif 000007
【図６】
2018019312.tif 000008
【図７】
2018019312.tif 000009
【図８】
2018019312.tif 000010
【図９】
2018019312.tif 000011
【図１０】
2018019312.tif 000012
【図１１】
2018019312.tif 000013
【図１２】
2018019312.tif 000014
【図１３】
2018019312.tif 000015
【図１４】
2018019312.tif 000016
【図１５】
2018019312.tif 000017
【図１６】
2018019312.tif 000018
【図１７】
2018019312.tif 000019
【図１８】
2018019312.tif 000020
【図１９】
2018019312.tif 000021
【図２０】
2018019312.tif 000022
【図２１】
2018019312.tif 000023
【図２２】
2018019312.tif 000024