(57)【特許請求の範囲】
【請求項１】
データ・パケットの入力をうけつけ、前記入力されたデータ・パケットを処理し、前記処理されたデータ・パケットを出力するデータ処理装置と、前記データ処理装置を制御する制御装置と、をふくむデータ・パケット通信装置を制御する方法であって、
前記データ処理装置は、複数のベアメタル・コアと、前記複数のベアメタル・コア間において共有されるデータ共有装置と、をふくみ、
前記方法は、
前記複数のベアメタル・コアにおけるすくなくともひとつが、入力されたデータ・パケットを受信し、当該受信したデータ・パケットを処理し、
前記制御装置が、制御要求メッセージを受信すると、前記制御要求メッセージから制御データをふくむ制御要求パケットを作成し、前記データ処理装置に対して前記制御要求パケットを送信し、
前記複数のベアメタル・コアにおけるすくなくともひとつが、前記制御要求パケットを受信し、前記データ共有装置を介して、他のベアメタル・コアに、前記制御要求パケットにふくまれる前記制御データを送信する、ことをふくむことを特徴とする方法。
【請求項２】
請求項１に記載の方法であって、
前記複数のベアメタル・コアは、制御要求パケットとデータ・パケットとを処理するすくなくともひとつの第１ベアメタル・コアをふくみ、
前記すくなくともひとつの第１ベアメタル・コアが、受信したパケットの種類がデータ・パケットであると判定すると、前記受信したデータ・パケットを処理し、
前記すくなくともひとつの第１ベアメタル・コアが、受信したパケットの種類が制御要求パケットであると判定すると、
前記データ共有装置を介して、他のベアメタル・コアに、前記制御要求パケットにふくまれる前記制御データを送信する、ことを特徴とする方法。
【請求項３】
請求項２に記載の方法であって、
前記複数のベアメタル・コアは、前記すくなくともひとつの第１ベアメタル・コアをふくむ、制御パケットを処理する複数の制御パケット処理コアを含み、
前記制御装置により生成された制御要求パケットは、前記複数の制御パケット処理コアにふりわけられる、ことを特徴とする方法。
【請求項４】
請求項３に記載の方法であって、
前記データ処理装置は、制御要求パケットを格納する制御パケット用キューと、データ・パケットを格納するデータ・パケット用キューと、をふくみ、
前記すくなくともひとつの第１ベアメタル・コアが、前記制御パケット用キューから前記制御要求パケットを受信し、
前記すくなくともひとつの第１ベアメタル・コアが、前記データ・パケット用キューから前記データ・パケットを受信する、ことを特徴とする方法。
【請求項５】
請求項１に記載の方法であって、
前記複数のベアメタル・コアはデータ・パケットを処理することなく制御要求パケットを処理する、すくなくともひとつの第２ベアメタル・コアをふくみ、
前記データ処理装置は、制御要求パケットを格納する制御パケット用キューをふくみ、
前記すくなくともひとつの第２ベアメタル・コアが、前記制御パケット用キューから前記制御要求パケットを受信する、ことを特徴とする方法。
【請求項６】
請求項１に記載の方法であって、
前記制御装置が、前記制御要求メッセージを、複数の基本指令に翻訳し、それぞれが前記複数の基本指令におけるすくなくともひとつの基本指令をふくむ複数の制御要求パケットを作成する、ことを特徴とする方法。
【請求項７】
請求項６に記載の方法であって、
前記複数のベアメタル・コアが、複数の種類の制御プログラムを実行し、
前記制御装置が、基本制御プログラムと前記基本制御プログラムに対するプラグイン制御プログラムを実行し、
前記制御装置が、前記制御要求メッセージに含まれる指令に応じて前記基本制御プログラムおよび前記プラグイン制御プログラムから選択されたプログラムを実行する、ことを特徴とする方法。
【請求項８】
請求項７に記載の方法であって、
前記制御装置は、第１ボード上に実装される第１コアと、第２ボード上に実装される第２コアとをふくみ、
前記第１コアが、基本制御プログラムを実行して前記制御要求メッセージにふくまれる基本制御プログラム用指令を処理し、
前記第１コアが、前記制御要求メッセージにふくまれ、基本制御プログラム用指令とはことなる拡張指令を、ネットワークを介して前記第２コアへ転送し、
前記第２コアが、前記基本制御プログラムに対するプラグイン制御プログラムを実行して前記拡張指令を処理する、ことを特徴とする方法。
【請求項９】
請求項６に記載の方法であって、
前記複数のベアメタル・コアのうちの１つが、前記複数の基本指令を逐次受信する、ことを特徴とする方法。
【請求項１０】
請求項６に記載の方法であって、
前記複数のベアメタル・コアのうちの複数のベアメタル・コアのそれぞれが、前記複数の基本指令のすくなくともひとつを受信する、ことを特徴とする方法。
【請求項１１】
請求項６に記載の方法であって、
前記制御要求メッセージが、選択型制御指令をふくむとき、前記制御装置が、前記選択型制御指令における条件判定をおこない、前記条件判定において真と判定したとき、第１の部分指令を翻訳し、前記条件判定において偽と判定したとき、第２の部分指令を翻訳する、ことを特徴とする方法。
【請求項１２】
データ・パケットの入力をうけつけ、前記入力されたデータ・パケットを処理し、前記処理されたデータ・パケットを出力するデータ処理装置と、前記データ処理装置を制御する制御装置と、をふくみ、
前記データ処理装置は、複数のベアメタル・コアと、前記複数のベアメタル・コア間において共有されるデータ共有装置と、をふくみ、
前記複数のベアメタル・コアにおけるすくなくともひとつは、入力されたデータ・パケットを受信し、当該受信したデータ・パケットを処理し、
前記制御装置は、
制御要求メッセージを受信すると、前記制御要求メッセージから制御データをふくむ制御要求パケットを作成し、前記データ処理装置に対して前記制御要求パケットを送信し、
前記複数のベアメタル・コアにおけるすくなくともひとつは、
前記制御要求パケットを受信し、前記データ共有装置を介して、他のベアメタル・コアに、前記制御要求パケットにふくまれる前記制御データを送信することを特徴とするデータ・パケット通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ・パケット通信装置を制御する方法、およびデータ・パケット通信装置に関する。
【背景技術】
【０００２】
本発明の背景技術として、非特許文献１がある。非特許文献１においては、オペレーティング・システム（ＯＳ）が搭載されていない高速データ処理用（ベアメタル、ファストパスなどともいう）のＯｃｔｅｏｎ（登録商標）プロセッサ・コア上で動作するアプリケーションの統計情報を、制御用プロセッサ・コアから制御するために、両者のあいだで共有メモリを使用して、情報をやりとりしている。
【０００３】
制御用プロセッサ・コアへの管理指示は、コマンドライン・インターフェース（ＣＬＩ）があたえている。制御用プロセッサ・コアは、複雑な管理メッセージをあつかうことができる汎用性をもたせる必要があるため、ＯＳを動作させている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Schmidt, A., "Profiling Bare-Metal Cores in AMP Systems", System, Software, SoC and Silicon Debug Conference (S4D), pp. 1-4, September 2012.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、ネットワーク・プロセッサ等で構成され、ベアメタルの制御用コアとデータ処理用コアとをふくむデータ処理装置における、データ処理の管理に関する課題を解決する。
【０００６】
第１の課題は、制御・管理系とデータ系との間における情報わたしの単純化である。従来の方法においては、制御用コアとデータ処理用コアとのあいだで制御情報や処理パラメータをやりとりするとき、とくに両者のあいだで排他制御等の複雑な制御を必要とするときは、当該制御情報や当該処理パラメータのやりとりが複雑で困難になるという課題がある。
【０００７】
当該制御情報や当該処理パラメータのやりとりが複雑になる理由を以下に述べる。第１の理由は、データ処理用コアと制御用コアとで、ソフトウェアがことなることがあげられる。すなわち、データ処理用コアは高速処理に適したベアメタルで使用されるのに対して、制御用プロセッサ・コアは複雑な管理メッセージをあつかうことができる汎用性をもたせる必要があるため、ＯＳを搭載していることである。そのため、データ処理用コアと制御用コアとのあいだでデータを共有するための共有メモリや、ネットワーク等のインターフェースの制御方法がことなる。
【０００８】
第２の理由は、データ処理用コアと制御用コアとのハードウェア・アーキテクチャがことなることである。とくに、制御用コアにおいては記憶が完全に仮想化されているのに対して、データ処理用コアにおいては記憶が仮想化されていないか、仮想化機構が単純化されているために、情報を共有するのが困難になっている場合がある。すなわち、上述のような制御・管理を、単純で低コストな方法にもとづいて、さらに疑念のない並列処理セマンティクスにもとづいて、実現することがひとつの課題である。
【０００９】
第２の課題は、制御・管理の高速化である。従来の方法においては、制御用コアにおける制御・管理処理、および制御用コアからデータ処理用コアへの制御・管理情報わたしにおいて、制御用コアのＯＳが介在する。それゆえ、それらの処理が遅延したり、速度が低下したりするという問題がある。たとえば、ネットワーク上のサーバ等がサービス妨害攻撃（ＤｏＳ）などの攻撃をうけた際等に、高速な制御が要求されるため、このような制御・管理を高速化することがひとつの課題である。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明は、たとえば、以下のような構成を採用する。すなわち、データ・パケットの入力をうけつけ、前記入力されたデータ・パケットを処理し、前記処理されたデータ・パケットを出力するデータ処理装置と、前記データ処理装置を制御する制御装置と、をふくむデータ・パケット通信装置を制御する方法であって、前記データ処理装置は、複数のベアメタル・コアと、前記複数のベアメタル・コア間において共有されるデータ共有装置と、をふくみ、前記方法は、前記複数のベアメタル・コアにおけるすくなくともひとつが、入力されたデータ・パケットを受信し、当該受信したデータ・パケットを処理し、前記制御装置が、制御要求メッセージを受信すると、前記制御要求メッセージから制御データをふくむ制御要求パケットを作成し、前記データ処理装置に対して前記制御要求パケットを送信し、前記複数のベアメタル・コアにおけるすくなくともひとつが、前記制御要求パケットを受信し、前記データ共有装置を介して、他のベアメタル・コアに、前記制御要求パケットにふくまれる前記制御データを送信する、ことをふくむことを特徴とする方法。
【発明の効果】
【００１１】
本発明によれば、制御・管理系−データ系間の情報わたしを単純化することができるとともに、制御・管理を高速化することができる。上述した以外の課題、構成および効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１２】
【図１】実施例１において、コンピュータ・システムの概要例をしめす説明図である。
【図２】実施例１において、物理ノードの構成例をしめすブロック図である。
【図３】実施例１において、ネットワーク・プロセッサの構成例をしめすブロック図である。
【図４Ａ】実施例１において、制御ボードが受信する単純な制御要求メッセージの例である。
【図４Ｂ】実施例１において、単純な制御要求メッセージに対応する制御要求パケット、および制御応答パケットの例である。
【図５】実施例１において、単純な制御要求メッセージによる、データ処理用コアの制御例をしめすシーケンス図である。
【図６】実施例１において、ＭＡＣアドレス対応表の例である。
【図７Ａ】実施例１において、データ処理用コアにおけるプログラム選択の処理の例をしめすフローチャートである。
【図７Ｂ】実施例１において、入力プロセッサが受信した制御要求パケットを、複数のキューにふりわける処理の例をしめすフローチャートである
【図８Ａ】実施例２において、制御ボードが受信する連接型制御要求メッセージの例である。
【図８Ｂ】実施例２において、連接型制御要求メッセージに対応する制御要求パケット、および制御応答パケットの例である。
【図９】実施例２において、連接型制御要求メッセージによる、データ処理用コアの制御例をしめすシーケンス図である。
【図１０Ａ】実施例３において、制御ボードが受信する選択型制御要求メッセージの例である。
【図１０Ｂ】実施例３において、選択型制御要求メッセージに対応する制御要求パケット、および制御応答パケットの例である。
【図１１Ａ】実施例４において、制御ボードが受信する反復型制御要求メッセージの例である。
【図１１Ｂ】実施例４において、反復型制御要求メッセージに対応する制御要求パケット、および制御応答パケットの例である。
【図１２】実施例６において、プラグイン制御プログラムを使用するときの、制御ボードの構成例をしめすブロック図である。
【図１３】実施例６において、プラグイン制御プログラムを使用するときの、制御ボードと汎用コアの構成例をしめすブロック図である。
【図１４】実施例６において、プラグイン制御プログラムが存在し、制御ボードが制御要求メッセージを受信したときの処理の例をしめすフローチャートである。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照して本発明の実施形態を説明する。本実施形態は本発明を実現するための一例にすぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。各図において共通の構成については同一の参照符号が付されている。
【００１４】
本実施形態においては、制御用コアとデータ処理用コアを、ベアメタルで使用することで、ベアメタルによる制御・管理を実現する。これにより、制御用コアとデータ処理用コアのハードウェア（すなわちコアの構造）およびソフトウェア（ＯＳやベアメタルのランタイム・ルーティン）が異質であることに起因する上述した課題を解決することができる。
【００１５】
すなわち、本実施形態においては第１に、制御用コアにもベアメタル・コアを使用し、制御情報をベアメタルで処理する。データ処理用プロセッサが制御要求パケットを受信したときは、データ処理用プロセッサがそなえている負荷分散機構を使用して、複数のデータ処理用コアのうちのいずれかに制御要求パケットの処理をわりあてることによって、負荷配分を実現することができる。なお、１つのベアメタル・コアが制御処理とデータ処理との両方をおこなうこともできるし、制御処理のみ、またはデータ処理のみをおこなうこともできる。あるベアメタル・コアが制御処理とデータ処理とをおこなうか、制御処理のみをおこなうか、またはデータ処理のみをおこなうかは、当該ベアメタル・コアが実行するプログラムの種類をかえることにより変更できる。
【００１６】
またデータ処理装置が、制御処理とデータ処理との両方をおこなうコアをふくむ場合は、制御処理をおこなうコアとデータ処理をおこなうコアの個数の比率を動的に変化させることができる。つまり、動的な負荷配分が実現でき、ひいては制御処理の遅延を減少させ、ボトルネックを解消することができる。
【００１７】
制御用コアにベアメタル・コアを使用することにより、データ処理を記述するために移植可能な高級言語を用意すれば制御用プログラムも他のネットワーク・プロセッサ等に移植できるようになる。また、制御用プログラムの開発者が負荷配分法を高級言語によって記述することが容易になり、制御用プログラムとともに負荷配分のプログラムを移植することが容易になる。また、従来の制御用コアをなくすこともできるため、制御用コアのない単純な構造のＬＳＩを使用できるようになり、開発コストを低下させることができる。
【００１８】
第２に、制御用コアをベアメタルで使用するため、制御処理をベアメタル・コアに適合させる必要がある。データ処理用コアは、パケット等のデータ処理を高速実行することに特化したアーキテクチャをもつ。また、データ処理用コアにおいては、１個のＬＳＩ内に多数のデータ処理用コアを集積させることによって、多並列の高速処理を実現すると同時に、コストダウンがはかられている。そのため、制御用に使用される汎用コアと比較すると機能が限定され、高速化のために汎用コアより特殊なハードウェアや命令がつかわれていて、複雑な制御処理をおこなうことを困難にしている。
【００１９】
そのため、本実施形態においては、データ処理用コアを使用して複雑な制御処理を実現するために、外部からの複雑な制御指令（ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）にもとづく制御プロトコルなど）を処理する汎用ＣＰＵ（中央処理装置）、あるいはＰＣのような汎用コンピュータを使用する。
【００２０】
この汎用ＣＰＵにおいて、制御プレーン上でやりとりされる前記の制御指令を基本指令に変換し、分解して、個々の指令をデータプレーン上のパケットに翻訳してベアメタル・コアとのあいだで通信することにより、複雑な制御を実現する。汎用ＣＰＵは、データ処理用コアのアーキテクチャや、データ処理用コアがもつ機能に応じた粒度で、指令の分解をおこなうことにより、最適な制御を実現する。汎用ＣＰＵは、指令を変換することにより、複雑な処理を要する可変長の制御要求メッセージを、単純に処理できる固定長の制御要求パケットに変換する。また、汎用ＣＰＵは、指令を分解することにより再帰的な構造や反復構造をもつ指令を個別の指令に分解する。
【００２１】
第３に、本実施形態においては、ベアメタルの制御用コアと、ベアメタルのデータ処理用コアとのあいだで制御・管理情報をやりとりする際には、データ処理において複数のデータ処理用コア間で使用するベアメタル用のデータわたし手段を使用する。このような手段として共有メモリ、バス、コア間のネットワーク（たとえばＬＳＩ上のネットワークであるチップ内ネットワークやＳＡＮ）などがある。制御用に使用するコアとデータ処理用のコアとは同一のアーキテクチャをもち、記憶仮想化機構も同一であるから、単純で疑念のないセマンティクスにもとづくデータわたしが実現される。このデータわたし手段は共有メモリ、バス、ネットワークなど、ひろく使用されセマンティクスが確立されたものであるから、高級言語によって記述することができる。高級言語によって記述されたプログラムは、他の種類のネットワーク・プロセッサ等に容易に移植することができる。
【００２２】
第４に、ベアメタルの制御用コアに外部から指示をあたえるには、データ処理用コアにおいてＩ／Ｏに使用されるのと同一のネットワーク・インターフェースを使用する。また、パケット・ヘッダ中の識別子によって、パケットがデータ・パケットであるか制御要求パケットであるかを判定する。同一のネットワーク・インターフェースを使用することにより、データ・パケットと制御要求パケットとを、ひとつのスケジューラによってあつかうことができるようになり、自由な負荷配分を容易に実現することが可能になる。また、ハードウェア依存やベンダ依存の負荷配分の方法を使用する必要がなくなるため、負荷配分法を高級言語によって記述すれば高い移植性を実現することができる。
【実施例１】
【００２３】
図１は、本実施例におけるコンピュータ・システムの概要の一例をしめす。本実施例のコンピュータ・システムは、ネットワーク仮想化機能をもち、データ・パケットを転送する物理ノード１１２−１〜１１２−４、ネットワーク管理装置１１１、オペレータ・コンソール１０２、エンド・ユーザのＰＣ１１８−１、１１８−２をふくむ。ネットワーク１２１は、データ・パケット通信装置の一例である物理ノード１１２−１〜１１２−４によって構成される。エンド・ユーザのＰＣ１１８−１、１１８−２は、ネットワーク１２１に接続されている。
【００２４】
ネットワーク管理装置１１１は、ネットワーク全体の管理をおこなう。ネットワーク管理装置１１１は、ＣＰＵ１４２、主記憶装置１４３をふくむ。オペレータは、オペレータ・コンソール１０２を経由して、ネットワーク管理装置１１１に、仮想ネットワークを生成するための指令をあたえることができる。
【００２５】
なお、ネットワーク管理装置１１１は、ひとつのネットワーク１２１上に複数個の仮想ネットワークを生成することができる。ネットワーク管理装置１１１は、それにしたがって物理ノード１１２−１〜１１２〜４に仮想ネットワークの構成要素を生成する指令をあたえる。仮想ネットワークの構成要素としては、仮想ノードおよび仮想リンク（リンクスリバーとよばれる）がある。
【００２６】
以下、物理ノード１１２−１〜１１２−４、エンド・ユーザのＰＣ１１８−１、１１８−２を特に区別しない場合、それぞれ物理ノード１１２、エンド―ユーザのＰＣ１１８と記載する。なお、本実施例の機能を実現できる範囲であれば、物理ノード１１２、およびエンド―ユーザのＰＣ１１８の個数に制限はない。
【００２７】
図２は、図１における物理ノード１１２の構成例をしめす。物理ノード１１２は、パケット処理ボード２１１−１〜２１１―ｌ、制御ボード２４１、ネットワーク・インターフェース（ＮＩＦ）２５１−１〜２５１―ｎ、装置内ネットワーク２８１をふくむ。制御装置の一例である制御ボード２４１は、物理ノード１１２内の各要素を制御する。
【００２８】
パケット処理ボード２１１−１〜２１１−ｌ、制御ボード２４１、ネットワーク・インターフェース２５１は、それぞれ装置内ネットワーク２８１によってむすばれている。パケット処理ボード２１１−ｉ（ｉは１からｌまでの任意数）はネットワーク・プロセッサ（ＮＰＵ）２１２−ｉｊ（ｊは１からｍまでの任意数）をふくむ。
【００２９】
物理ノード１１２に入力されたデータ・パケットは、ネットワーク・プロセッサ２１２−１〜２１２−ｌのうちのいずれかで処理されて、物理ノード１１２から出力される。また、物理ノード１１２が、これらのネットワーク・プロセッサ２１２−１〜２１２−ｌを制御するためのメッセージを受信すると、通常はこれを制御ボード２４１が処理していずれかのネットワーク・プロセッサ２１２−ｉｊに送信する。なお、制御ボード２４１を制御のために使用しなくてもよい。この場合、各ネットワーク・プロセッサ２１２−１１〜２１２−ｌｍ内に存在する汎用コアが制御ボード２４１の役割をになう。汎用コアについては、後述する。
【００３０】
仮想ノードは、物理ノード１１２上に生成される。１個の物理ノード１１２上に複数個の仮想ノードを生成することができる。また、仮想リンク（リンクスリバー）は仮想ノード間（物理ノード間）に生成される。仮想リンクの端点となる物理ノード１１２は物理的に隣接している必要はない（物理リンクで直接むすばれている必要はない）。すなわち、遠隔の物理ノード１１２間に仮想リンクを生成することができる。
【００３１】
以下、パケット処理ボード２１１−１〜２１１〜ｌ、ネットワーク・プロセッサ２１２−１１〜２１２−ｌｍ、ネットワーク・インターフェース２５１−１〜２５１〜ｎを特に区別しない場合、それぞれパケット処理ボード２１１、ネットワーク・プロセッサ２１２、ネットワーク・インターフェース２５１と記載する。なお、本実施例の機能を実現できる範囲であれば、パケット処理ボード２１１、ネットワーク・プロセッサ２１２、およびネットワーク・インターフェース２５１の個数に制限はない。
【００３２】
図３は、図２におけるネットワーク・プロセッサ２１２の構成例をしめす。ネットワーク・プロセッサ２１２は、入力プロセッサ３０２、出力プロセッサ３０３、汎用コア３１１、Ｌ１キャッシュ３１２、Ｌ２キャッシュ３１３、データ処理用コア３２１−１〜３２１−ｎ、主記憶装置３２２−１〜３２２−ｎ、共有メモリ３３１、メモリコントローラ３４１、バス３６１をふくむ。
【００３３】
入力プロセッサ３０２は、入力キュー３０４−１〜３０４−ｌをふくむ。装置内ネットワーク２８１から出力されたパケットは、入力プロセッサ３０２に転送される。入力プロセッサ３０２に転送されたパケットは、入力キュー３０４−１〜３０４−ｌのうちのいずれかと、バス３６１と、を経由して、データ処理用コア３２１−１〜３２１−ｎのうちのいずれかに転送される。
【００３４】
出力プロセッサ３０３は、出力キュー３０５−１〜３０５−ｍをふくむ。データ処理用コア３２１−１〜３２１−ｎのいずれかから出力されたパケットは、バス３６１と、出力キュー３０５−１〜３０５−ｍのうちのいずれかと、を経由し、さらにネットワーク・インターフェース２５１を経由して、物理ノード１１２の外部に転送される。
【００３５】
なお、バス３６１は、チップ内ネットワークとしてもよい。また、ネットワーク・プロセッサ２１２の構成によっては入力キュー３０４−１〜３０４−ｌ、および出力キュー３０５−１〜３０５−ｍが、入力プロセッサ３０２内に存在せず、各データ処理用コア３２１−１〜３２１−ｎ内に存在してもよい。また、各入力キュー３０４−１〜３０４−ｌには、制御要求パケット、データ・パケットの双方を入力することができるが、制御要求パケットのみが入力される制御パケット用キューや、データ・パケットのみが入力されるデータ・パケット用キューが存在してもよい。
【００３６】
データ共有装置の一例である共有メモリ３３１は、たとえば、後述する制御パケット処理コアと、パケット・データ処理をおこなうデータ処理用コア３２１−１〜３２１−ｎとのあいだにおける、制御データやデータ処理中に生成された情報の共有や、制御信号のやりとり等に使用される。データ処理用コア３２１−１〜３２１−ｎには、それぞれ主記憶装置３２２−１〜３２２ｎが付属する。なお、共有メモリ３３１、および主記憶装置３２２−１〜３２２−ｎには、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような汎用的なメモリを使用してもよいし、ＣＡＭ（ｃｏｎｔｅｎｔ  ａｄｄｒｅｓｓａｂｌｅ  ｍｅｍｏｒｙ）やＴＣＡＭ（ｔｅｒｎａｒｙ  ｃｏｎｔｅｎｔ  ａｄｄｒｅｓｓａｂｌｅ  ｍｅｍｏｒｙ）のような限定された用途にしか使用できないがより高速なメモリを使用してもよい。また、データ共有装置の一例として、バス３６１を使用することもできる。
【００３７】
データ処理用コア３２１−１〜３２１−ｎは、単純なパケット・データ処理のために最適化された小規模なＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）アーキテクチャのコアである。したがって、データ処理用コア３２１−１〜３２１−ｎは、複雑な分岐高速化の機能や、並列演算等の高度な機能はもたない一方で、特殊化されたマルチスレッドなど、高速にパケット処理を実行するための機構をそなえている。データ処理用コア３２１−１〜３２１−ｎは、マルチスレッドの制御などのために、汎用のプログラミング言語においては対応していない特殊な命令を実行する必要が生じることがありうる。
【００３８】
汎用コア３１１は、当該ネットワーク・プロセッサ２１２内の各要素、すなわちデータ処理用コア３２１−１〜３２１−ｎ、入力プロセッサ３０２、出力プロセッサ３０３等を制御する。汎用コア３１１は、ＬｉｎｕｘやＷｉｎｄｏｗｓなどのＯＳが効率よく実行できるように最適化された、比較的大規模なアーキテクチャのコアである。汎用コア３１１は、複数のコアで構成されていてもよい。
【００３９】
メモリコントローラ３４１は、ネットワーク・プロセッサ２１２の外部に存在する主記憶装置３４２に接続されている。主記憶装置３４２として、たとえば、ＤＲＡＭを主要な媒体とする。汎用コア３１１は通常、この主記憶を仮想化するので、Ｌ１キャッシュ３１２、Ｌ２キャッシュ３１３などのハードウェアが付属する。主記憶装置３４２には、データ処理用コア３２１において実行されるプログラム３５１が格納され、必要に応じて共有メモリ３３１またはデータ処理用コア３２１−１〜３２１−ｎに付随する主記憶装置３２２−１〜３２２−ｎにキャッシュされる。
【００４０】
本実施例においては主記憶装置３４２へのプログラム３５１のロードのために汎用コア３１１を使用するが、後述するように、データ処理用コア３２１−１〜３２１−ｎの動作中には、汎用コア３１１による制御はおこなわない。そのため、本実施例においても、汎用コア３１１を使用して処理するプログラム３５１のロードと、データ処理用コアの起動・停止等の処理とを、汎用コア３１１を使用せずに処理できるようにネットワーク・プロセッサ２１２を構成すれば、汎用コア３１１をもうけない構成も可能である。
【００４１】
汎用コア３１１をもうけない構成をとるときは、プログラム３５１のロードはネットワーク・プロセッサ２１２の外部からの直接メモリ・アクセス（ＤＭＡ）によっておこなえばよい。また、データ処理用コア３２１の起動・停止も、入出力命令やＤＭＡによるプログラム３５１や、データのかきかえによってネットワーク・プロセッサ２１２の外部からおこなえばよい。このようにして汎用コア３１１をなくすことにより、ＬＳＩの構造を単純化し、開発コストを低下させることが可能になる。
【００４２】
以下、入力キュー３０４−１〜３０４−ｌ、出力キュー３０５−３０５−ｍ、データ処理用コア３２１−１〜３２１−ｎ、主記憶装置３２２−１〜３２２−ｎを特に区別しない場合、それぞれ入力キュー３０４、出力キュー３０５、データ処理用コア３２１、主記憶装置３２２と記載する。なお、本実施例の機能を実現できる範囲であれば、入力キュー３０４、出力キュー３０５、汎用コア３１１、データ処理用コア３２１、および主記憶装置３２２の個数に制限はない。
【００４３】
（単純なデータ処理制御におけるメッセージの内容）
以下、制御要求メッセージによるデータ処理の制御法を説明する。まず、図４Ａ、図４Ｂを使用して単純な制御要求メッセージ、および単純な制御要求メッセージを変換した制御要求パケットの内容を説明する。物理ノード１１２は、物理ノード１１２外部の通信、および物理ノード１１２内部の通信を、イーサネット（登録商標、以下同）によっておこなう。物理ノード１１２は、物理ノード１１２外部から到着したパケットのうち、特定のアドレスをもつものだけを内部にとりこみ、当該パケットにふくまれる外部のＭＡＣアドレスを内部のＭＡＣアドレスにかきかえる。
【００４４】
このような処理は、ＶＬＡＮを使用して実装されたネットワークを仮想化する際に必要になる。このような方法によって生成された仮想のリンクを、ＶＬＡＮリンクスリバーとよぶ。ＶＬＡＮリンクスリバーおよび後述するＧＲＥリンクスリバー（ＩＥＴＦ標準であるＧｅｎｅｒｉｃ  Ｒｏｕｔｉｎｇ  Ｅｎｃａｐｓｕｌａｔｉｏｎ（ＧＲＥ）プロトコルを使用する仮想リンク）については、たとえばつぎの文献に記述されている。
Yasusi Kanada, Kei Shiraishi, and Akihiro Nakao, "Network-virtualization Nodes that Support Mutually Independent Development and Evolution of Node Components", 13th IEEE International Conference on Communication Systems (ICCS 2012), 2012-11-23.
【００４５】
図４Ａは、ＶＬＡＮリンクスリバーを生成する制御指令４２１をふくむ制御要求メッセージ４１１の一例をしめす。制御指令４２１は、物理ノード１１２の外部のＭＡＣアドレス００−０３−ｂ０−００−００−１１と、物理ノード１１２の内部のＭＡＣアドレス００−０４−ｂ０−００−００−０１とを対応させて、ＶＬＡＮリンクスリバーを生成することを指令する。
【００４６】
なお、制御指令４２１のように、データ処理用コア３２１による処理が可能な状態に分解された指令を基本指令とよぶ。＜ＣＮＰＵＭＡＣ＞は後述する制御要求パケットをうけとる制御用インターフェース（データ処理用コア３２１など）のＭＡＣアドレスである。＜ＮｅＭＩＦ＞は制御指令を送信するインターフェースの識別子である。
【００４７】
図４Ｂは、制御指令４２１に対応する制御要求パケット４１２と、制御要求パケット４１２に対応する制御応答パケット４１７の一例をしめす。制御要求パケット４１２は、制御指令４２１にふくまれる上記３個のＭＡＣアドレスをふくむ。制御要求パケット４１２は、イーサネットのパケットであり、先頭に格納されたＣＮＰＵＭＡＣが当該制御要求パケット４１２の転送先、すなわち後述する制御パケット処理コアを指示している。なお、当該制御要求パケット４１２の転送先の決定方法として、たとえばラウンドロビン等がある。
【００４８】
ＮｅＭＭＡＣは当該制御要求パケット４１２の送信元のＭＡＣアドレスを表す。ｔｙｐｅはイーサネットのタイプ・フィールドを表す。このイーサネット・パケットは専用の形式をしていて、ｖｌｉｎｋ＿ａｄｄ（２バイトの数値）はこの当該制御要求パケット４１２の内容がＶＬＡＮリンクスリバー生成指令であることをあらわしている。そして、それにつづく２個のＭＡＣアドレスがＶＬＡＮリンクスリバー生成指令のパラメータである。制御要求パケット４１２に対する制御応答パケット４１７は、ＮｅＭＭＡＣ、ＣＮＰＵＭＡＣ、ｔｙｐｅ、および応答結果（図４ＢではＯＫ）をふくむ。
【００４９】
なお、制御要求メッセージ４１１にはＸＭＬなどの、可変長のデータが使用されることがおおい。制御要求メッセージ４１１に、可変長のデータが使用される場合は、複数のパケットに分割されることもある。また、制御要求メッセージ４１１は、文字列として記述され、その文法を解析するには、構文および意味の解析処理という複雑な処理が必要であり、データ処理用コア３２１において実行するには適していない。
【００５０】
これに対して制御要求パケット４１２は固定長であり、１個のパケットが１個の指令に対応する。そのため、制御要求パケット４１２は、複雑なプロトコル機能を実装していないベアメタルのデータ処理用コア３２１においても、容易にあつかうことができる。
【００５１】
（単純なデータ処理制御法）
図５は、図４Ａでしめした単純な制御要求メッセージ４１１による制御シーケンスの一例をしめす。図５では、オペレータによって制御シーケンスがオペレータ・コンソール１０２によって起動される例をしめしているが、ネットワーク管理装置１１１によって制御シーケンスが起動されてもよい。
【００５２】
オペレータがオペレータ・コンソール１０２にコマンドを投入すると、オペレータ・コンソール１０２は、ネットワーク管理装置１１１にネットワーク１２１全体に対して、当該コマンドに対応する制御要求メッセージ４１０を送信する（Ｓ４５０）。
【００５３】
ネットワーク管理装置１１１は、制御要求メッセージ４１０を受信すると、制御要求メッセージ４１０に対応する制御要求メッセージ４１１作成し、配下の各物理ノード１１２の制御ボード２４１に送信する（Ｓ４５１）。
【００５４】
なお、ネットワーク管理装置１１１は、制御の対象とならない物理ノード１１２に対しては、制御要求メッセージ４１１を送信しないようにすることもできる。また、物理ノード１１２に対して送信された制御要求メッセージ４１１は、物理ノード１１２内にある制御ボード２４１が受信するが、ネットワーク・プロセッサ２１２内にある汎用コア３１１が受信してもよい。
【００５５】
制御ボード２４１は、制御要求メッセージ４１１を、翻訳することで、制御要求パケット４１２を作成し、制御要求パケット４１２を、当該物理ノード１１２内にあるネットワーク・プロセッサ２１２の入力プロセッサ３０２に転送する（Ｓ４５２）。入力プロセッサ３０２に転送された制御要求パケット４１２は、いずれかのデータ処理用コア３２１において処理可能になるまでの間、いずれかの入力キュー３０４に保管される。
【００５６】
なお、ステップＳ４５２において、制御ボード２４１が制御要求メッセージ４１１を処理しているが、物理ノード１１２の外部にあるプロセッサ（ＰＣ等）が当該処理をしてもよい。また、制御要求メッセージ４１１には、当該物理ノード１１２内のすべてのパケット処理ボード２１１に関するものと、当該物理ノード１１２内の特定のパケット処理ボード２１１だけに関するものとがあり、ステップＳ４５２では、それぞれについてことなる処理が必要になる。
【００５７】
制御要求メッセージ４１１が、当該物理ノード１１２内のすべてのパケット処理ボード２１１に関するものであるときは、制御ボード２４１は、当該物理ノード１１２内のすべてのパケット処理ボード２１１にあてて制御要求パケット４１２を送信すればよい。また、ネットワーク管理装置１１１が、当該物理ノード１１２内のパケット処理ボード２１１にふくまれるすべての汎用コア３１１にあてて制御要求メッセージ４１１を送信してもよい。
【００５８】
制御要求メッセージ４１１が、当該物理ノード１１２内の特定のパケット処理ボード２１１に関するときは、たとえば、制御ボード２４１は、制御するべきパケット処理ボード２１１を選択し、１個の制御要求パケット４１２を選択されたパケット処理ボード２１１にあてて送信すればよい。また、ネットワーク管理装置１１１が制御するべきパケット処理ボード２１１を選択し、選択されたパケット処理ボード２１１にふくまれる汎用コア３１１にあてて１個の制御要求メッセージ４１１を送信してもよい。
【００５９】
なお、ステップＳ４５１で、汎用コア３１１が制御要求メッセージ４１１を受信した場合は、ステップＳ４５２において汎用コア３１１が制御要求パケット４１２を送信する。このとき、汎用コア３１１は、当該制御要求パケット４１２を、入力プロセッサ３０２内の入力キュー３０４に一旦もどす。入力キュー３０４が各データ処理用コア３２１内に存在するときは、汎用コア３１１は、当該制御要求パケット４１２を、各データ処理用コア３２１に転送する。
【００６０】
さらに、いずれかのデータ処理用コア３２１において処理が可能になったら、当該データ処理用コア３２１は、入力プロセッサ３０２に処理が可能な旨を通知する。入力プロセッサ３０２は、当該通知を送信したデータ処理用コア３２１から、制御処理のために使用するデータ処理用コア３２１を選択し、制御要求パケット４１２を転送する（Ｓ４５３）。以下、制御処理を行う当該データ処理用コア３２１を、制御パケット処理コア４０１とよぶ。入力プロセッサ３０２が、制御パケット処理コア４０１を選択する方法については後述する。
【００６１】
制御パケット処理コア４０１は共有メモリ３３１を使用して、パケット・データ処理をおこなうデータ処理用コア３２１と、制御要求パケット４１２にふくまれる制御信号、および制御データ等をやりとりする。以下、パケット・データ処理を行う当該データ処理用コアをデータ・パケット処理コア４０２とよぶ。
【００６２】
制御パケット処理コア４０１は、データ処理において必要なパラメータなどの、制御要求パケット４１２にふくまれるデータをデータ・パケット処理コア４０２にわたす必要があるときは、当該データを共有メモリ３３１にかきこむ（Ｓ４５４）。データ・パケット処理コア４０２は、共有メモリ３３１にかきこまれた当該データが必要になったときに、当該データをよみだす（Ｓ４５５）。
【００６３】
また、データ・パケット処理コア４０２は、データ処理中に生成された統計情報などを共有メモリ３３１にかきこむ（Ｓ４５６）。制御パケット処理コア４０１は、ネットワーク管理装置１１１にわたすべきデータをデータ・パケット処理コア４０２からうけとる必要があるときは、データ・パケット処理コア４０２が共有メモリにかきこんだデータをよみだす（Ｓ４５７）。
【００６４】
制御パケット処理コア４０１は、よみだした値を挿入した、制御応答パケット４１７を作成し、出力プロセッサ３０３に送信する（Ｓ４５８）。出力プロセッサ３０３に転送された制御応答パケット４１７は、制御ボード２４１が制御応答パケット４１７を受信できる状態になるまでの間、いずれかの出力キュー３０５に保管される。出力プロセッサ３０３は、制御応答パケット４１７を制御ボード２４１に送信する（Ｓ４５９）。制御ボード２４１は、受信した制御応答パケット４１７を、制御応答メッセージ４１８に翻訳し、ネットワーク管理装置１１１に送信する（Ｓ４６０）。ネットワーク管理装置１１１は、制御応答メッセージ４１８に対応する制御応答メッセージ４１９を作成し、オペレータ・コンソール１０２に送信する（Ｓ４６１）。
【００６５】
（このデータ処理制御法の利点）
本実施例におけるデータ処理制御法には、以下のような３つの利点がある。第１に、本実施例におけるデータ交換は、制御パケット処理コア４０１とデータ・パケット処理コア４０２とが、同一アーキテクチャでかつ、ともにベアメタルで動作する。さらに、データ交換に使用する手段も並列処理セマンティクスが確立された、共有メモリ３３１、バス３６１等の汎用の手段であるため、データ交換のただしさを容易に保証することができるという利点がある。
【００６６】
第２に、本実施例におけるデータ処理制御法は、データ交換インターフェースとして汎用の手段を使用するため、データ交換手続きを汎用のプログラミング言語によって記述することが可能である。つまり、プログラム３５１を、容易に他のネットワーク・プロセッサ２１２等に移植することができるという利点がある。
【００６７】
第３に、本実施例におけるデータ処理制御法では、制御パケット処理コア４０１は、データ・パケット処理コア４０２における情報を高速に把握することができる。したがって、サービス妨害攻撃（ＤｏＳ）などの攻撃をうけた際に、制御パケット処理コア４０１は、当該攻撃を即座に検知し、対応することができるという利点がある。
【００６８】
たとえば、制御パケット処理コア４０１は、共有メモリ３３１にかきこまれたデータ・パケット処理コア４０２からの統計情報を収集し、１個のポートに対するアクセスが集中するときには攻撃の特徴を把握する。制御パケット処理コア４０１は、当該攻撃の特徴をもつパケットを廃棄するようにデータ・パケット処理コア４０２に指示することができる。
【００６９】
制御パケット処理コア４０１は、当該攻撃の特徴を単純な計算により把握することはできないが、ネットワーク・プロセッサ２１２のなかには、このような計算をハードウェアでおこなうものもある。また、本実施例においては、攻撃特徴把握処理専用のデータ・パケット処理コア４０２をわりあてることも可能である。
【００７０】
データ・パケット処理コア４０２は、データ・パケット本来の処理と、このような攻撃に対するそなえと、を並列に実行することができる。そのためには、同一のパケットをミラーして両者にわたせばよい。入力プロセッサ３０２等が、このようなミラーリングをおこなうことができる。
【００７１】
（ＭＡＣアドレス対応表の内容）
図６は、本実施例におけるデータ処理制御法において使用される、ＭＡＣアドレス対応表４２２の構成例をしめす。ＭＡＣアドレス対応表４２２は、たとえば、制御パケット処理コア４０１とデータ・パケット処理コア４０２とのあいだで共有される。また、データ・パケット処理コア４０２が単独でＭＡＣアドレス対応表４２２にアクセスし、両者のあいだのインターフェースを介して、制御パケット処理コア４０１からのかきこみ要求、およびよみだし要求が処理されてもよい。
【００７２】
ＭＡＣアドレス対応表４２２の共有のための手段およびデータ・パケット処理コア４０２からの単独アクセスのための手段として、たとえば、ＳＲＡＭ、ＤＲＡＭ、ＣＡＭ、ＴＣＡＭ等が使用される。
【００７３】
前述した制御要求メッセージ４１１は、物理ノード１１２の外部のＭＡＣアドレス００−０３−ｂ０−００−００−１１と、物理ノード１１２の内部のＭＡＣアドレス００−０４−ｂ０−００−００−０１とを対応させて、ＶＬＡＮリンクスリバーを生成する指令である。つまり行７１１は、制御パケット処理コア４０１が、制御要求パケット４１２を受信した際に生成されたものである。他の行も同様に、制御パケット処理コア４０１が、他の制御要求パケットを受信した際に生成されたものである。
【００７４】
データ・パケットが物理ノード１１２の外部からとどいたときは、データ・パケット処理コア４０２は、ＭＡＣアドレス対応表４２２を参照し、ＭＡＣアドレス対応表４２２からのよみだしをおこなう。このとき、データ・パケット処理コア４０２は、データ・パケットの送信元のＭＡＣアドレスが登録された外部アドレスにマッチするかどうかを検索し、マッチすれば当該外部アドレスを対応する内部アドレスにかきかえる。これによって、当該物理ノード１１２の外部からとどいた仮想リンク上のパケットが当該物理ノード１１２の内部に入力される。
【００７５】
また、データ・パケットが当該物理ノード１１２の内部からとどいたときは、当該物理ノード１１２の外部からとどいたときと同様に、データ・パケット処理コア４０２は、ＭＡＣアドレス対応表４２２を参照し、ＭＡＣアドレス対応表４２２からのよみだしをおこなう。データ・パケット処理コア４０２は、当該データ・パケットの送信元のＭＡＣアドレスが、ＭＡＣアドレス対応表４２２に登録された内部アドレスにマッチするかどうかを検索し、マッチすれば当該内部アドレスを対応する外部アドレスにかきかえる。これによって、当該物理ノード１１２の内部からとどいた仮想リンク上のパケットが、当該物理ノード１１２の外部に出力される。
【００７６】
なお、データ・パケットが物理ノード１１２の外部からとどいた場合、内部からとどいた場合の双方において、データ・パケットに含まれる外部アドレス、または内部アドレスにマッチする行が存在しないデータ・パケットは、不正なパケットとして廃棄される。すなわち、対応する仮想リンクが存在しないパケットは廃棄される。
【００７７】
パケットが当該物理ノード１１２の外部からとどいたか、内部からとどいたかは、当該物理ノード１１２のどのインターフェースにとどいたかで識別するか、またはＶＬＡＮ番号によって識別する。ＶＬＡＮリンクスリバー生成においては、データ・パケット処理コア４０２は、原則的に共有メモリ３３１へのかきこみをおこなわない。
【００７８】
しかし、処理の内容によっては、ステップＳ４５６において、データ・パケット処理コア４０２は、共有メモリ３３１へのかきこみをおこなう。ステップＳ４５７において、制御パケット処理コア４０１は、共有メモリ３３１にかきこまれた結果をよみだす。制御パケット処理コア４０１は、当該結果を制御応答パケット４１７にのせ、出力プロセッサ３０３を経由して、制御ボード２４１に応答する。
【００７９】
ステップＳ４６０において、制御ボード２４１は、当該制御応答パケット４１７の内容を、制御応答メッセージ４１８にとりこみ、ネットワーク管理装置１１１に報告している。これによって、データ・パケット処理コア４０２がもつ情報を、ネットワーク管理装置１１１につたえることができる。
【００８０】
パケットをワイヤレートで処理するためにはＭＡＣアドレス対応表４２２は高速なメモリ上に存在する必要がある。汎用のメモリとしては、データ処理用コア３２１に付属した主記憶装置３２２や共有メモリ３３１に、たとえばＳＲＡＭを使用することができるが、このような単純な表を表現するにはＣＡＭが適している。ＭＡＣアドレス対応表４２２はＳＲＡＭにおいてはハッシュやツリーなどのデータ構造によって表現する必要があるが、ＣＡＭを使用すればより直接的に表現することができるため、はるかに高速にアクセスすることができる。
【００８１】
（データ処理用コアにおける処理プログラムの選択）
本実施例において、１つのデータ処理用コア３２１が、データ・パケットと制御要求パケットとをともにあつかうことがあるため、当該データ処理用コア３２１は、受信したパケットの種類によってデータ処理用プログラム、または制御用プログラムのどちらを実行するかを選択する必要がある。
【００８２】
図７Ａは、データ処理用コア３２１におけるプログラム選択の処理をしめすフローチャートである。当該処理は、データ処理用コア３２１がパケットを受信するたびに、くりかえし実行される。
【００８３】
まず、データ処理用コア３２１は、パケット受信待機状態にある（Ｓ１６６０）。データ処理用コアがパケットを受信する（Ｓ１６６１）。データ処理用コア３２１は、パケットのヘッダの一部の値を参照することによってパケットの種類を判定する（Ｓ１６６２）。データ処理用コア３２１は、受信したパケットの種類が制御要求パケットであると判定したとき（Ｓ１６６２：制御パケット）、制御用プログラムを実行する（Ｓ１６６３）。データ処理用コア３２１は、受信したパケットの種類がデータ・パケットであると判定したとき（Ｓ１６６２：データ・パケット）、データ処理用プログラムを実行する（Ｓ１６６４）。
【００８４】
この処理を可能にするために、制御ボード２４１は、制御要求パケット４１２を生成する際に、データ・パケットから識別可能なタグを、制御要求パケット４１２のヘッダに格納しておく必要がある。これは、制御要求パケットとデータ・パケットとが、同一のネットワーク・インターフェース２５１から到着することがあるためである。したがって、両者がことなるネットワーク・インターフェース２５１から到着する場合には、たとえば制御要求パケットにネットワーク・インターフェース２５１のアドレスを付加すれば、ステップＳ１６６２における判定を省略できる。上述した処理により、データ処理用コア３２１は、制御要求パケットと、データ・パケットの双方について処理をおこなうことができる。したがって、たとえば後述する混合処理の方法等を使用すれば、制御パケット処理コア４０１と、データ・パケット処理コア４０２の比率を動的に変更することができ、制御処理とデータ処理とのあいだでの動的な負荷配分が実現される。
【００８５】
なお、本実施例では、制御用プログラムとデータ処理用プログラムは同一のプログラミング言語によって記述することができる。また、当該同一のプログラミング言語では、共有メモリ３３１等のデータわたし手段を使用して、両者のあいだのデータわたしを実現することができる。これにより、制御用プログラムとデータ処理用プログラムとにおけるデータわたしを、統一されたセマンティクスにしたがって記述することができる。そのため、セマンティクス上、疑念のないデータわたしが実現される。
【００８６】
また、制御用プログラムとデータ処理用プログラムとを同一のプログラミング言語によって記述することができるため、移植可能なデータ処理用プログラムを開発することにより、制御用プログラムも同時に移植可能になる。
【００８７】
（制御要求パケット転送先コアの選択）
以下、データ処理用コア３２１のなかから、制御要求パケットを転送するべき制御パケット処理コア４０１を選択する方法について説明する。上述したようにデータ処理用コア３２１は、データ処理と単純な制御処理とを実行することができる。
【００８８】
つまり、データ処理用コア３２１は、すべてのデータ処理用コア３２１に共通なプログラム、すなわちデータ処理機能と制御処理機能の両方をふくむプログラムを実行することができる。さらに、データ処理用コア３２１は、データ処理機能だけをもつプログラムや、制御処理機能だけをもつプログラムを実行することもできる。
【００８９】
データ処理用コア３２１は、データ処理機能と制御処理機能の両方をふくむプログラムを実行するときは、パケットの処理開始時にパケット・ヘッダを参照し、パケットの種類を判定する。データ処理用コア３２１が、受信したパケットはデータ・パケットであると判定した場合、データ処理機能を実行する。データ処理用コア３２１が、受信したパケットは制御要求パケットであると判定した場合、制御処理機能を実行する。
【００９０】
図７Ｂは、入力プロセッサ３０２が受信した制御要求パケットを、複数の入力キュー３０４にふりわける処理をしめすフローチャートである。ここでは入力キュー３０４として、制御パケット用キューと、データ・パケット用キューとの双方が存在する場合を説明する。まず、入力プロセッサ３０２は、パケット受信待機状態にある（Ｓ１６００）。入力プロセッサ３０２がパケットを受信すると（Ｓ１６１１）、パケットのヘッダの一部の値を参照することによってパケットの種類を判定する（Ｓ１６１２）。
【００９１】
入力プロセッサ３０２は、受信したパケットの種類が、制御要求パケットであると判定したとき（Ｓ１６１２：制御パケット）、当該パケットを、１個または複数個の制御パケット用の入力キュー３０４にいれる（Ｓ１６１３）。入力プロセッサ３０２は、受信したパケットの種類がデータ・パケットであると判定したとき（Ｓ１６１２：データ・パケット）、当該パケットを１個、または複数個のデータ・パケット用の入力キュー３０４にいれる（Ｓ１６１４）。
【００９２】
この処理を可能にするために、制御ボード２４１は、制御要求パケット４１２を生成する際に、データ・パケットから識別可能なタグを、制御要求パケット４１２のヘッダに格納しておく必要がある。したがって、両者がことなるネットワーク・インターフェース２５１から到着する場合には、たとえば制御要求パケットにネットワーク・インターフェース２５１のアドレスを付加すれば、ステップＳ１６６２における判定を省略できる。上記処理によって、パケットを制御パケット用キューとデータ・パケット用キューとにわけて蓄積することで、データ処理と制御処理とを独立に制御できる。つまり、後述する制御専用処理やデータ専用処理の方法を使用できるようになる。
【００９３】
入力プロセッサ３０２は、いずれかの入力キュー３０４から、データ処理用コア３２１へ、制御要求パケット、またはデータ・パケットを送信し、当該パケットを受信したデータ処理用コア３２１は当該パケットを処理する。この一連の処理をくりかえす。この一連の処理の方法として制御専用処理、データ専用処理、混合処理という３種類の処理方法がある。
【００９４】
第１は制御専用処理の方法である。すなわち、データ処理用コア３２１が、制御処理機能だけをふくむプログラムを実行しているときは、データ処理用コア３２１は、あらたな制御要求パケットを処理する準備がととのったとき、制御パケット用キューに制御要求パケットを送信するよう要求すればよい。これによって、あやまってデータ・パケットを入力することがなくなる。また、これによって制御処理のためのデータ処理用コア３２１が常に確保されるため、データ処理の負荷がたかいときでも制御処理のためのリソースが確保され、迅速に実行されるという利点がある。
【００９５】
第２はデータ専用処理の方法である。すなわち、データ処理用コア３２１が、データ処理機能だけをふくむプログラムを実行しているときは、データ処理用コア３２１は、あらたなデータ・パケットを処理する準備がととのったとき、データ・パケット用キューにデータ・パケットを送信するよう要求すればよい。これによって、あやまって制御要求パケットを入力することがなくなる。これによって制御処理の負荷がたかいときでもデータ処理のためのリソースが確保される。
【００９６】
第３は混合処理の方法である。すなわち、データ処理用コア３２１が、データ処理機能と制御処理機能の両方をふくむプログラムを実行しているときには、あらたなパケットを処理する準備がととのったとき、制御パケット用キューから制御要求パケット、またはデータ・パケット用キューからからデータ・パケットを送信するよう要求すればよい。たとえば、データ処理用コア３２１が、制御パケット用キューとデータ・パケット用キューのうち蓄積されているパケットの数がおおい方にパケットを送信するよう要求すれば、制御処理とデータ処理とのあいだでの負荷配分が実現される。すなわち、制御処理の負荷が相対的にたかいときは、制御処理によりおおくのコアが使用されるようになり、データ処理の負荷が相対的にたかいときは、データ処理によりおおくのコアが使用されるようになる。また、データ処理用コア３２１は、制御要求パケット、データ・パケットのいずれかを優先的に処理してもよい。
【００９７】
なお、入力キュー３０４の中に制御パケット用キュー、およびデータ・パケット用キューが存在しない場合、すなわち全ての入力キュー３０４に制御要求パケット、およびデータ・パケットの双方が入力される場合を考える。このとき、混合処理の方法によれば、データ処理用コア３２１は、制御要求パケットとデータ・パケットの双方を処理することができるので、あらたなパケットを処理する準備がととのったとき、いずれかの入力キュー３０４からパケットを送信するよう要求することができる。つまり混合処理の方法によれば、入力キュー３０４の中に制御パケット用キュー、およびデータ・パケット用キューが存在しなくても、同様の処理をおこなうことができる。
【実施例２】
【００９８】
（連接型データ処理制御法とメッセージの内容）
制御指令は基本的に連接、選択、反復という３種類の構造のくみあわせによって構成される。この点は、プログラムやプログラミング言語の制御構造と同様である。連接型、選択型、反復型のいずれかの制御指令をふくむ制御指令を、複雑な指令とよぶ。前述したとおり、複雑な指令を、データ処理用コア３２１において実現するのは困難がともなう。したがって、制御ボード２４１は、制御要求パケット生成の際に、複雑な指令を、複数の基本指令に分解する。
【００９９】
本実施例では、制御ボード２４１は、複数の基本指令をならべた連接型の複雑な指令をふくむ制御要求メッセージ８１１を処理することができる。
【０１００】
図８Ａは、連接型制御要求メッセージの一例として、ＶＬＡＮリンクスリバーを生成する２個の制御指令８２１、８２２と、ＶＬＡＮリンクスリバーを削除する１個の制御指令８２３と、をふくむ制御要求メッセージ８１１をしめす。制御指令８２１、８２２、８２３はいずれも基本指令である。
【０１０１】
制御指令８２１は、物理ノード外部のＭＡＣアドレス００−０３−ｂ０−００−００−１１と、内部のＭＡＣアドレス００−０４−ｂ０−００−００−０１と、を対応させてＶＬＡＮリンクスリバーを生成することを指令する。制御指令８２２は、物理ノード外部のＭＡＣアドレス００−０３−ｂ０−００−００−１０と、内部のＭＡＣアドレス００−０４−ｂ０−００−００−０４と、を対応させてＶＬＡＮリンクスリバーを生成することを指令する。制御指令８２３は、物理ノード外部のＭＡＣアドレス００−０３−ｂ０−００−００−２１と、内部のＭＡＣアドレス００−０４−ｂ０−００−００−２１とが対応するＶＬＡＮリンクスリバーを削除することを指令する。
【０１０２】
図８Ｂは制御指令８２１〜８２３のそれぞれに対応する制御要求パケット８１２ａ〜８１２ｃと、制御要求パケット８１２ａ〜８１２ｃのそれぞれに対する制御応答パケット８１７ａ〜８１７ｃと、をしめす。制御要求パケット８１２ａには制御指令８２１にふくまれる３個のＭＡＣアドレスがふくまれる。
【０１０３】
制御要求パケット８１２ａ〜８１２ｃはイーサネット・パケットである。制御要求パケット８１２ａ、８１２ｂにおけるｖｌｉｎｋ＿ａｄｄは、当該パケットの内容がＶＬＡＮリンクスリバー生成指令であることをあらわす。そして、それにつづく２個のＭＡＣアドレスがＶＬＡＮリンクスリバー生成指令のパラメータである。制御パケット処理コア４０１は、これらの指令を受信するとＭＡＣアドレス対応表４２２の行７１１および行７１２を生成する。
【０１０４】
制御要求パケット８１２ｃにおけるｖｌｉｎｋ＿ｒｅｍは当該パケットの内容がＶＬＡＮリンクスリバー削除指令であることをあらわす。そして、それにつづく２個のＭＡＣアドレスは、ＶＬＡＮリンクスリバー削除指令のパラメータをあらわす。また、制御要求パケット８１２ｃにふくまれる物理ノード外部のＭＡＣアドレスと、物理ノード内部のＭＡＣアドレスは、ＭＡＣアドレス対応表４２２の行７１３の値のそれぞれとおなじである。したがって、制御パケット処理コア４０１は、制御要求パケット８１２ｃを受信すると、ＭＡＣアドレス対応表４２２の行７１３を削除する。
【０１０５】
制御要求パケット８１２ａ〜８１２ｃに対する制御応答パケット８１７ａ〜８１７ｃは、ＮｅＭＭＡＣ、ＣＮＰＵＭＡＣ、ｔｙｐｅ、および応答結果（図９（ｂ）ではＯＫ）をふくむ。
【０１０６】
図９は、図８Ａにしめした連接型データ処理の制御シーケンスの一例をしめす。オペレータ・コンソール１０２は３つの制御指令８２１〜８２３をふくむ制御要求メッセージ８１０をネットワーク管理装置１１１に送信する（Ｓ８５０）。制御要求メッセージ８１０を受信したネットワーク管理装置１１１は、制御要求メッセージ８１０に対応する制御要求メッセージ８１１を作成し、制御要求メッセージ８１１を各物理ノード１１２の制御ボード２４１に送信する（Ｓ８５１）。
【０１０７】
制御要求メッセージ８１１を受信した制御ボード２４１は、当該制御要求メッセージ８１１を翻訳し、３個の制御要求パケット８１２ａ〜８１２ｃに分解する。すなわち、当該制御ボード２４１は、当該制御要求メッセージ８１１を翻訳し、第１のＶＬＡＮリンクスリバー生成指令を制御要求パケット８１２ａと、第２のＶＬＡＮリンクスリバー生成指令を制御要求パケット８１２ｂと、第３のＶＬＡＮリンクスリバー消去指令を制御要求パケット８１２ｃと、に分解する。
【０１０８】
ステップＳ８５２〜Ｓ８５９は、図４のステップＳ４５２〜４５９と同様であり、制御要求パケット８１２ａについて、ステップＳ４５２〜Ｓ４５９の動作をおこなう。制御要求パケット８１２ａについてステップＳ８５２〜Ｓ８５９が終了したら、制御要求パケット８１２ｂ、８１２ｃについても、順次ステップＳ８５２〜Ｓ８５９と同様の動作をおこなう。
【０１０９】
制御ボード２４１は、制御応答パケット８１７ａ〜８１７ｃをひとまとめにしたうえで翻訳することで制御応答メッセージ８１８を作成し、ネットワーク管理装置１１１に送信する（Ｓ８６０）。ネットワーク管理装置１１１は、制御応答メッセージ８１８に対応する制御応答メッセージ８１９を作成し、制御応答メッセージ８１９をオペレータ・コンソール１０２に送信する（Ｓ８６１）。
【０１１０】
以上のように、制御ボード２４１が、連接型の制御要求メッセージ８１１を翻訳、分解することにより、それまでは１個のパケットに格納することができない制御要求メッセージ８１１を１個のパケットに格納できるようになる。したがって、データ処理用コア３２１は、制御要求パケット８１２ａ〜８１２ｃを、容易に処理できるようになるという利点がある。また、当該制御要求メッセージ８１１による制御処理が、データ処理と同程度の実行時間で終了するため、パケットが適切にスケジュールされるようになるという利点がある。
【０１１１】
なお、本実施例においては、制御指令を１個ずつことなる制御要求パケットに分解した。しかし、データ処理用コア３２１が、同時に複数の制御指令を処理できれば、複数個の制御パケットをまとめて送信したほうが、効率がよいこともある。制御ボード２４１は、データ処理用コア３２１の種類や処理能力を考慮して分解の方法を変更することができる。
【０１１２】
また、図９においては、制御ボード２４１は、分解した制御指令を１個のデータ処理用コア３２１に逐次的に送信しているため、制御パケット処理コア４０１として使用するデータ処理用コア３２１の数を減らすことができ、データ処理のためのリソースを確保することができる。なお、制御ボード２４１は、分解した制御指令を１つずつ別々のデータ処理用コア３２１に並列に送信することもできる。すなわち、制御指令を並列に実行することもできる。ただし、この場合には制御指令間に依存関係がないことが制御要求メッセージ８１１においてしめされるか、または物理ノード１１２において判定されなければならない。制御指令を並列に実行することにより、処理速度が向上する。
【実施例３】
【０１１３】
（選択型データ処理制御法とメッセージの内容）
本実施例では、制御ボード２４１は、選択型の制御指令をふくむ制御要求メッセージ４１１ａと、その処理することができる。
【０１１４】
図１０Ａは、選択型制御要求メッセージの一例として、ＶＬＡＮリンクスリバーを生成する制御指令１１２２と、ＧＲＥリンクスリバーを消去する制御指令１１２４とをふくむ制御要求メッセージ４１１ａをしめす。制御指令１１２２、１１２４は、いずれも基本指令である。制御指令１１２１において、リンクスリバーのタイプとしてＶＬＡＮが要求されているときは、制御指令１１２２が実行される。制御指令１１２３において、ＧＲＥが要求されているときは制御指令１１２４が実行される。制御ボード２４１は、自身の静的、または動的な状態によって、どちらの指令を選択するか決定する。
【０１１５】
図１０Ｂは、制御指令１１２２、１１２４にそれぞれに対応する制御要求パケット４１２ａ、４１２ｂと、制御要求パケット４１２ａ、４１２ｂのそれぞれに対する制御応答パケット４１７ａ、４１７ｂの内容をしめす。制御要求パケット４１２ａの内容は、図４Ｂでしめした、制御要求パケット４１２と同様である。
【０１１６】
制御要求パケット４１２ｂは、制御指令１１２４にふくまれるＩＰアドレス、ＧＲＥキーおよびＭＡＣアドレスをふくむ。制御要求パケット４１２ｂにおけるｇｌｉｎｋ＿ａｄｄは、制御要求パケット４１２ｂの内容がＧＲＥリンクスリバー生成指令であることをあらわす。そして、それにつづく３個のパラメータがＧＲＥリンクスリバー生成指令のパラメータである。制御パケット処理コア４０１は、これらの指令を受信するとＧＲＥアドレス対応表の行を生成する。
【０１１７】
選択型データ処理制御のシーケンスは図５と同様である。ただしステップＳ４５１において、制御要求メッセージ４１１のかわりに４１１ａが使用される。また、ステップＳ４５１において、制御ボード２４１は、制御要求メッセージ４１１ａのどちらの分岐を選択するかを決定し、当該決定に応じて制御要求パケット４１２ａ、制御要求パケット４１２ｂのいずれかを作成する。また、ステップＳ４５２、Ｓ４５３において、制御要求パケット４１２のかわりに、制御要求パケット４１２ａ、４１２ｂのうち、Ｓ４５１で作成されたものが使用される。
【０１１８】
以上のように、制御ボード２４１が、選択型の制御要求メッセージ４１１ａを翻訳、分解することによって分岐処理が削除される。したがって、高度な分岐最適化機能をもたないＲＩＳＣアーキテクチャのデータ処理用コアにおいて、パイプラインがみだされずに処理できるようになるという利点がある。また、制御処理がデータ処理と同程度の実行時間で終了するようになるため、パケットが適切にスケジュールされるようになるという利点がある。
【実施例４】
【０１１９】
（反復型データ処理制御法とメッセージの内容）
本実施例では、制御ボード２４１は、制御要求メッセージの一例として、反復型の制御指令をふくむ制御要求メッセージ１３１１を処理することができる。
【０１２０】
図１１Ａは、反復型制御要求メッセージの一例として、ＶＬＡＮリンクスリバーを生成する制御指令１３２２をくりかえし適用する制御要求メッセージ８１１ｄをしめす。制御指令１３２１において、制御指令１３２２を３回反復することが指定されている。制御指令１３２２は基本指令である。ここでは、制御指令１３２１は固定回数の反復を指定しているが、可変回数の反復を指定することも可能である。
【０１２１】
図１１Ｂは、制御指令１３２２の３回の反復にそれぞれ対応する制御要求パケット８１２ｄ〜８１２ｆと、制御要求パケット８１２ｄ〜８１２ｆのそれぞれ対する制御応答パケット８１７ｄ〜８１７ｆの内容をしめす。制御要求パケット８１２ｄの内容は、図４（ｂ）でしめした、制御要求パケット４１２と同様である。
【０１２２】
反復型データ処理制御のシーケンスは図９と同様である。ただし、ステップＳ８５１において、制御要求メッセージ８１１のかわりに制御要求メッセージ８１１ｄが使用される。また、ステップＳ８５２、Ｓ８５３において、制御要求パケットの８１１ａ〜８１１ｃのかわりに制御要求パケット８１２ｄ〜８１２ｆが使用される。また、ステップＳ８５８、Ｓ８５９において、制御応答パケット８１７ａ〜８１７ｃのかわりに制御応答パケット８１７ｄ〜８１７ｆが使用される。
【０１２３】
以上のように、反復型の制御要求メッセージ８１１ｄを分解することによって反復処理が削除される。したがって、高度な分岐最適化機能をもたないＲＩＳＣアーキテクチャのデータ処理用コア３２１において、パイプラインがみだされずに処理ができるようになるという利点がある。また、制御処理がデータ処理と同程度の実行時間で終了するようになり、無限ループの危険がなくなる。したがって、パケットが適切にスケジュールされるようになるとともに、強制停止の必要がなくなるという利点がある。
【０１２４】
また、図９においては、制御ボード２４１は、分解した制御指令を１個のデータ処理用コア３２１に逐次的に送信したが、連接型の制御メッセージと同様、分解した制御指令をその数だけのデータ処理用コア３２１に並列に送信することもできる。ただし、この場合には制御指令間に依存関係がないことが制御要求メッセージ８１１においてしめされるか、または物理ノード１１２において判定されなければならない。
【実施例５】
【０１２５】
（一般のデータ処理制御法とメッセージの内容）
制御指令は、連接、選択、反復のくみあわせからなる。したがって、制御ボード２４１は、上述した連接型データ処理制御法、選択型データ処理制御法、反復型データ処理制御法をくみあわせることにより、どのような複雑な制御要求メッセージも、部分指令をふくむ制御要求パケットに分解することができる。なお、制御指令のうち連続した一部の指令を部分指令とよぶ。
【０１２６】
すなわち、制御ボード２４１は、制御要求メッセージを受信したときは、制御要求メッセージにふくまれる指令の種類ごとに、ことなる処理をおこなう。すなわち、第１に、制御要求メッセージが基本指令をふくむとき、制御ボード２４１は単純なデータ処理制御法によって処理する。第２に、制御要求メッセージが連接型の制御指令をふくむとき、制御ボード２４１は連接型データ処理制御法によって処理する。第３に、制御要求メッセージが選択型の制御指令をふくむとき、制御ボード２４１は選択型データ処理制御法によって処理する。第４に、制御要求メッセージが反復型の制御指令をふくむとき、制御ボード２４１は反復型データ処理制御法によって処理する。
【０１２７】
第５に、制御要求メッセージがより複雑な制御指令をふくむとき、制御ボード２４１は、トップレベルの制御構造によって、すなわち連接型か選択型か反復型かによって、上記のいずれかの方法による指令の分解をおこなう。さらに、再帰的に下位の制御構造によって指令を分解する。この方法は、プログラミング言語のコンパイラやインタプリタにおける分解の方法にひとしい。
【０１２８】
また、上述したように、制御ボード２４１は、制御要求メッセージがふくむすべての制御指令について、それを分解して制御パケット処理コア４０１に実行させることができるわけではない。たとえば、制御パケット処理コア４０１の動作を制御する指令、すなわち制御パケット処理コア４０１への（記憶装置への）プログラムのロード、制御パケット処理コア４０１の起動と停止などの指令は、制御パケット処理コア４０１に実行させることができない場合がある。
【０１２９】
このような場合には、制御ボード２４１が、当該処理を実行する必要がある。したがって、制御ボード２４１は、データ処理用コア３２１によって処理できる指令をふくまない制御要求メッセージ４１１を受信したときは、制御ボード２４１が当該処理をおこなう。また、制御ボード２４１は、データ処理用コアによって処理できる指令とデータ処理用コアによって処理できない指令とをふくむ制御要求メッセージ４１１を受信したときは、前者を制御要求パケットとして制御パケット処理コア４０１に送信し、後者は制御ボード２４１が処理する。
【実施例６】
【０１３０】
（データ処理用プログラムのロードと制御プロセッサの構成・処理）
データ処理用コア３２１が実行するプログラム３５１は主記憶装置３４２に格納される。データ処理用コア３２１は、プログラム３５１をパケット・データ処理の停止中または動作中にロードすることができる。
【０１３１】
データ・パケット処理コア４０２が、プログラム３５１をロードする際には、ロード中のプログラムまたはローディングによってかきかえられるプログラム３５１を実行することがないように停止させるか、または他のプログラム３５１を実行するようにする。プログラム３５１は複数のプログラムによって構成することもでき、複数のデータ・パケット処理コア４０２がことなるプログラム３５１を実行するようにすることもできる。
【０１３２】
このように複数のプログラムが実行されるときに、それに対応した制御をおこなうための制御ボード２４１の構成および処理方法を図１２〜１４を使用して説明する。ことなるプログラムを実行するデータ・パケット処理コア４０２に対してはことなる制御が必要な場合がある。そのため、制御要求メッセージを受信する制御ボード２４１には基本制御プログラム１７１１のほかにプラグイン制御プログラム１７１２、１７１３を使用する。
【０１３３】
図１２は、プラグイン制御プログラムを使用するときの、制御ボード２４１の構成の一例をしめす。制御ボード２４１は、ＣＰＵ１７０１、ネットワーク・インターフェース１７０３、メモリ１７０２をふくむ。基本制御プログラム１７１１とプラグイン制御プログラム１７１２、１７１３は、メモリ１７０２にロードされる。つまり、基本制御プログラム１７１１とプラグイン制御プログラム１７１２、１７１３とを、１つの制御ボード２４１に共存させる構成をとっている。
【０１３４】
図１３は、プラグイン制御プログラムを使用するときの、制御ボード２４１と汎用コア３１１の構成の一例をしめす。図１３においては、基本制御プログラム１７１１のみが、制御ボード２４１のメモリ１７０２にロードされ、プラグイン制御プログラム１７１２、１７１３は、パケット処理ボード２１１に実装された汎用コア３１１のメモリ１７０２ｂにロードされている。なお、プラグイン制御プログラム１７１２、１７１３を、たとえば複数の制御ボード２４１、制御ボード２４１と別筐体内にある制御ボード、制御ボード２４１と別筐体内にあるパケット処理ボードに実装された汎用コア等にロードすることもできる。
【０１３５】
また、図１２、図１３においては２個のプラグイン制御プログラム１７１２、１７１３を使用しているが、本実施例の機能を実現できる範囲であれば、その数に制限はない。また、プログラム３５１によっては、基本制御プログラム１７１１だけで処理可能である。
【０１３６】
図１４は、プラグイン制御プログラム１７１２、１７１３が存在し、制御ボード２４１が制御要求メッセージを受信したときの処理をしめすフローチャートである。制御ボード２４１は、受信した制御要求メッセージがふくむ部分指令をとりだして（Ｓ１９１１）、各部分指令について以下の処理をおこなう。
【０１３７】
制御ボード２４１は、とりだした部分指令が基本制御プログラム用指令かどうか、すなわち基本制御プログラム１７１１において処理できるものであるかどうかを判定する（Ｓ１９１２）。当該部分指令が基本制御プログラム用指令であれば（Ｓ１９１２：Ｙｅｓ）、制御ボード２４１は、基本制御プログラム１７１１によって当該部分指令を処理する（Ｓ１９１３）。当該部分指令が基本制御プログラム用指令でなく、拡張指令の場合（Ｓ１９１２：Ｎｏ）、制御ボード２４１は、プラグイン制御プログラム１７１２、１７１３のうち、当該拡張指令の対応するプラグイン制御プログラムによって部分指令を処理する。
【０１３８】
プラグイン制御プログラム１７１２、１７１３が同一プロセッサ内にあるときは、制御ボード２４１は、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）等によってプラグイン制御プログラム１７１２、１７１３をよびだす。一方、プラグイン制御プログラム１７１２、１７１３がことなるプロセッサにあるときは、制御ボード２４１は、ソケット通信などによってプラグイン制御プログラム１７１２、１７１３をよびだす。本実施例によれば、データ処理用コア３２１において複数のプログラム３５１が実行されるとき、制御ボード２４１は、基本制御プログラム１７１１、またはプラグイン制御プログラム１７１２、１７１３により、対応した処理をおこなうことができる。
【０１３９】
汎用コア３１１がプラグイン制御プログラム１７１２、１７１３を実行する場合、汎用コア３１１はネットワークを介して制御ボード２４１から拡張指令を受信し、当該拡張指令の対応するプログラムによって部分指令を処理する。汎用コア３１１が基本制御プログラム１７１１とプラグイン制御プログラム１７１２、１７１３とを実行してもよい。このように、汎用コア３１１は、データ・パケット通信装置における制御装置に含まれる。また、図１３において汎用コア３１１のかわりに、複数の制御ボード２４１、制御ボード２４１と別筐体内にある制御ボード、制御ボード２４１と別筐体内にあるパケット処理ボードに実装された汎用コア等を使用した場合、これらは、データ・パケット通信装置における制御装置に含まれる。
【０１４０】
なお、本発明は上述した実施例に限定されるものではなく、様々な変形例が含まれる。たとえば、上述した実施例は本発明をわかりやすく説明するために詳細に記載したものであり、かならずしも説明した全ての構成をそなえるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成におきかえることが可能であり、また、ある実施例の構成に他の実施例の構成をくわえることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１４１】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、たとえば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体におくことができる。
【符号の説明】
【０１４２】
１０２  オペレータ・コンソール、１１１  ネットワーク管理装置、  １１２  物理ノード、２１１  パケット処理ボード、２１２  ネットワーク・プロセッサ、２４１  制御ボード、２５１  ネットワーク・インターフェース、３０２  入力プロセッサ、３０３  出力プロセッサ、３０４  入力キュー、３０５  出力キュー、３１１  汎用コア、３２１  データ処理用コア、３３１  共有メモリ、４０１  制御パケット処理コア、４０２  データ・パケット処理コア、４２２  ＭＡＣアドレス対応表、１７１１  基本制御プログラム、１７１２  プラグイン制御プログラム
【図１】
0006037978.tif 000002
【図２】
0006037978.tif 000003
【図３】
0006037978.tif 000004
【図４Ａ】
0006037978.tif 000005
【図４Ｂ】
0006037978.tif 000006
【図５】
0006037978.tif 000007
【図６】
0006037978.tif 000008
【図７Ａ】
0006037978.tif 000009
【図７Ｂ】
0006037978.tif 000010
【図８Ａ】
0006037978.tif 000011
【図８Ｂ】
0006037978.tif 000012
【図９】
0006037978.tif 000013
【図１０Ａ】
0006037978.tif 000014
【図１０Ｂ】
0006037978.tif 000015
【図１１Ａ】
0006037978.tif 000016
【図１１Ｂ】
0006037978.tif 000017
【図１２】
0006037978.tif 000018
【図１３】
0006037978.tif 000019
【図１４】
0006037978.tif 000020