(57)【特許請求の範囲】
【請求項１】
所定の順序で入力される複数のデータの各々を複数の処理部のいずれかに順次割り当てる割当部と、
割り当てられた前記データを、全体として前記所定の順序で出力する前記複数の処理部と、
前記複数の処理部の故障の有無の検出結果を前記割当部に通知する検出部と、を備え、
前記処理部は、割り当てられた前記データを出力すると、前記複数の処理部と接続する第１のメモリのリードポインタ値を１つ増やし、
前記検出部は、前記割当部が前記処理部に前記データを割り当てた後、一定時間経過後に前記リードポインタ値が前記処理部によって変更されていないことを検出したときには、前記データが割り当てられた前記処理部の故障を示す前記検出結果を通知し、
前記割当部は、前記複数の処理部のうち前記検出結果が故障ありを示すものには前記割り当てを行わない転送装置。
【請求項２】
装置に入力された前記データを、自身に備わる第２のメモリに一時格納する入出力ポートを備え、
前記入出力ポートと接続される前記割当部は、前記入出力ポートにより前記データが前記第２のメモリに格納されたとき、前記第２のメモリのアドレスを含む転送情報を、前記検出結果が前記故障なしを示す前記処理部のいずれかに出力し、
前記処理部は、入力された前記転送情報に含まれる前記アドレスを基にＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送を行い、接続する前記第２のメモリに格納された前記データを、接続する第３のメモリに格納する、ことを特徴とする請求項１に記載の転送装置。
【請求項３】
所定の順序で装置に入力される複数のデータの各々が割り当てられ、割り当てられた前記データを、全体として前記所定の順序で出力する複数の処理部を備えた転送装置の方法であって、
前記複数の処理部の故障の有無の検出結果を出力する検出ステップと、
前記検出ステップにより出力される前記検出結果が故障なしを示す前記処理部のいずれかに、前記複数のデータの各々を順次割り当てる割当ステップと、
割り当てられた前記データが出力されると、前記複数の処理部と接続する第１のメモリのリードポインタ値を１つ増やす変更ステップとを有し、
前記検出ステップにおいては、前記割当ステップによって前記処理部に前記データが割り当てられた後、一定時間経過後に前記リードポインタ値が前記変更ステップによって変更されないときには、前記データが割り当てられた前記処理部の故障を示す前記検出結果を出力する、ことを特徴とする転送方法。
【請求項４】
前記処理部は、入力された転送情報に含まれるアドレスを基にＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送を行い、接続する第２のメモリに格納された前記データを、接続する第３のメモリに格納する取得ステップを有し、
前記割当ステップにおいては、装置に入力された前記データを前記第２のメモリに一時格納し、さらに、前記第２のメモリのアドレスを含む前記転送情報を、前記検出結果が前記故障なしを示す前記処理部のいずれかに出力する、ことを特徴とする請求項３に記載の転送方法。
【請求項５】
所定の順序で装置に入力される複数のデータの各々が割り当てられ、割り当てられた前記データを、全体として前記所定の順序で出力する複数の処理部を備えた転送装置に実装されたプロセッサに、
前記複数の処理部の故障の有無の検出結果を出力する検出処理と、
前記検出処理により出力される前記検出結果が故障なしを示す前記処理部のいずれかに、前記複数のデータの各々を順次割り当てる割当処理と、
割り当てられた前記データを出力すると、前記複数の処理部と接続する第１のメモリのリードポインタ値を１つ増やす変更処理と、
前記割当処理によって前記処理部に前記データが割り当てられた時から一定時間経過しても、第１のメモリの値が前記処理部によって変更されないときには、前記データが割り当てられた前記処理部の故障を示す前記検出結果を出力する前記検出処理
を行わせるためのプログラム。
【請求項６】
装置に入力された前記データを第２のメモリに一時格納する一時格納処理と、
前記一時格納処理により前記データが前記第２のメモリに格納されたとき、前記第２のメモリのアドレスを含む転送情報を、前記検出結果が前記故障なしを示前記処理部のいずれかに出力する前記割当処理と、
を前記プロセッサに行わせるための請求項５に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、転送装置、転送方法、及びプログラムに関し、特に、データを転送する転送装置、転送方法、及びプログラムに関する。
【背景技術】
【０００２】
一般的に、データを転送する転送装置が知られている。データを転送する転送装置は、以下の特許文献１に開示されている。図１は、特許文献１の転送装置の構成図である。
【０００３】
特許文献１の転送装置は、図１に示されるように、複数のパケット処理エレメント８０＿１〜８０＿Ｎ（Ｎは、装置に備わるパケット処理エレメントの数）と、入力側カウンタ８１と、出力側カウンタ８２と、を備える。パケット処理エレメント８０＿１〜８０＿Ｎは、各々、シーケンス番号付与部８５＿１〜８５＿Ｎと、シーケンス番号比較部８６＿１〜８６＿Ｎと、を備える。入力側カウンタ８１と出力側カウンタ８２は、同じ初期値（例えば値０）からカウントアップされるカウンタである。
【０００４】
特許文献１の転送装置は、パケットが入力されると、入力されたパケットをパケット処理エレメント８０＿１〜８０＿Ｎのいずれかに入力する。パケット処理エレメント８０＿１〜８０＿Ｎのシーケンス番号付与部８５＿１〜８５＿Ｎは、パケットが入力されると、入力されたパケットにシーケンス番号を付与する。シーケンス番号は、入力側カウンタ８１の値である。シーケンス番号付与部８５＿１〜８５＿Ｎは、パケットにシーケンス番号を付与したときは、入力側カウンタ８１の値を１つインクリメントする。シーケンス番号付与部８５＿１〜８５＿Ｎは、装置にパケットが入力される毎に、入力されたパケットにシーケンス番号を付与していく。
【０００５】
次に、パケット処理エレメント８０＿１〜８０＿Ｎのシーケンス番号比較部８６＿１〜８６＿Ｎは、パケットに付与されたシーケンス番号と出力側カウンタの値を比較する。出力側カウンタは、シーケンス番号通りにパケットを出力する為のカウンタである。シーケンス番号比較部８６＿１〜８６＿Ｎは、シーケンス番号と出力側カウンタの値が一致しないときには、一定時間後に上述のシーケンス番号と出力側カウンタの値を再度比較する。シーケンス番号比較部８６＿１〜８６＿Ｎは、シーケンス番号と出力側カウンタの値が一致したときに、そのシーケンス番号が付与されたパケットを出力する。パケットを出力したときには、シーケンス番号比較部８６＿１〜８６＿Ｎは、出力側カウンタ値の値を１つインクリメントする。シーケンス番号比較部８６＿１〜８６＿Ｎは、シーケンス番号が付与されたパケットをシーケンス番号通りに（すなわち、装置に入力された順）に出力していく。
【０００６】
上述の構成や動作の通り、特許文献１の転送装置は、装置に入力されたパケットを並列処理するとともに、装置に入力されたパケットを、装置に入力された順に出力することができる。
【０００７】
パケットを並行して処理する転送装置は、以下の特許文献２にも開示されている。
【０００８】
特許文献２の転送装置は、バッファと、パケットを並列処理する複数のパケット処理エレメントと、を備える。特許文献２の転送装置は、入力されたパケットを、その優先度毎にバッファに格納し、パケット処理エレメント各々が、それぞれ対応する優先度のパケットをバッファから取得して、フォワーディング処理を実行する。パケット処理エレメント各々は、バッファにパケットが所定数以上滞留しているときには、フォワーディング処理を所定回数実行するごとに１回、優先度の最も低いパケットをバッファから廃棄する。輻輳を回避する為である。
【０００９】
上述の構成や動作の通り、特許文献２の転送装置は、装置に入力されたパケットをパケット処理エレメントで並行して処理するとともに、輻輳回避の為のパケット廃棄処理を、複数のパケット処理エレメントで分散して行うことができる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００８−１８７５８０号公報
【特許文献２】特開２０１２−１９５７２３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかし、特許文献１、２の転送装置は、パケットを並行処理する機能部（具体的には、パケット処理エレメント）のいずれかが故障し、動作を停止したときには、装置に入力されるパケットを、装置に入力された順に出力できないという課題があった。
【００１２】
なぜなら、特許文献１、２の転送装置は、パケットを並行処理する機能部（パケット処理エレメント）が故障したときであっても、故障した機能部にパケットを構わず割り当ててしまうからである。故障した機能部にパケットを割り当てても、動作が停止しているので、何も出力されない。その為、特許文献１、２の転送装置は、装置に入力されたパケットの一部を出力できない状態となってしまう。その結果、特許文献１、２の転送装置は、装置に入力されるパケットを、装置に入力された順に出力できなくなってしまっていた。
【００１３】
本発明は、上記課題を解決する転送装置、転送方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記目的を達成するために、本発明の転送装置は、
所定の順序で入力される複数のデータの各々を複数の処理部のいずれかに順次割り当てる割当部と、割り当てられた前記データを、全体として前記所定の順序で出力する前記複数の処理部と、前記複数の処理部の故障の有無の検出結果を前記割当部に通知する検出部と、を備え、前記割当部は、前記複数の処理部のうち前記検出結果が故障ありを示すものには前記割り当てを行わない。
【００１５】
上記目的を達成するために、本発明の転送方法は、所定の順序で装置に入力される複数のデータの各々が割り当てられ、割り当てられた前記データを、全体として前記所定の順序で出力する複数の処理部を備えた転送装置の方法であって、前記複数の処理部の故障の有無の検出結果を出力する検出ステップと、前記検出ステップにより出力される前記検出結果が故障なしを示す前記処理部のいずれかに、前記複数のデータの各々を順次割り当てる割当ステップと、を有する。
【００１６】
上記目的を達成するために、本発明のプログラムは、所定の順序で装置に入力される複数のデータの各々が割り当てられ、割り当てられた前記データを、全体として前記所定の順序で出力する複数の処理部を備えた転送装置に実装されたプロセッサに、前記複数の処理部の故障の有無の検出結果を出力する検出処理と、前記検出処理により出力される前記検出結果が故障なしを示す前記処理部のいずれかに、前記複数のデータの各々を順次割り当てる割当処理と、を行わせるためのプログラムである。
【発明の効果】
【００１７】
本発明によれば、転送装置は、データを並行処理する機能部のいずれかが故障し、動作を停止したときであっても、装置に入力されるデータを、装置に入力された順に出力することができる。
【図面の簡単な説明】
【００１８】
【図１】特許文献１の転送装置の構成図である。
【図２】本発明の第１の実施の形態における転送装置の構成例を示す図である。
【図３】本発明の第１の実施の形態における転送装置の送信キューメモリに係る構成例を示す図である。
【図４】本発明の第１の実施の形態における転送装置に備わる受信キューメモリを説明する為の図である。
【図５】本発明の第１の実施の形態における転送装置に備わるシーケンス番号配列メモリを説明する為の図である。
【図６】本発明の第１の実施の形態における転送装置に備わる故障コア情報格納メモリを説明する為の図である。
【図７】本発明の第１の実施の形態における転送装置に備わる送信キューメモリを説明する為の図である。
【図８】本発明の第１の実施の形態における転送装置の動作（パケットを割り当てる動作）を説明する為の図である。
【図９】本発明の第１の実施の形態における転送装置の動作（故障コアを検出する動作）を説明する為の図である。
【図１０】本発明の第１の実施の形態における転送装置の動作（パケットを送信する動作）を説明する為の図（その１）である。
【図１１】本発明の第１の実施の形態における転送装置の動作（パケットを送信する動作）を説明する為の図（その２）である。
【図１２】本発明の第２の実施の形態における転送装置の構成例を示す図である。
【発明を実施するための形態】
【００１９】
次に本発明の実施形態について、図面を参照して詳細に説明する。
【００２０】
≪第１の実施の形態≫
［概要］
本実施形態の転送装置は、特許文献１の転送装置と同様、パケット処理エレメントを複数備え、装置に入力されるパケットを各パケット処理エレメントに割り当てる。パケット処理エレメントは、割り当てられたパケットを、装置に入力された順番通りに出力する機能部である。
【００２１】
本実施形態の転送装置は、パケット処理エレメントの一部が故障したとき、故障したエレメント以外のパケット処理エレメントに、装置に入力されたパケットを割り当てる。本実施形態の転送装置は、故障したパケット処理エレメントを避け、その機能を発揮するパケット処理エレメントにパケットを割り当てるので、それまでと同様に、装置に入力されたパケットを、装置に入力された順に出力することができる。
【００２２】
以下に、本発明の第１の実施の形態における転送装置の構成や機能、動作について説明する。
【００２３】
［構成の説明］
まず、本発明の第１の実施の形態における転送装置の構成と機能について説明する。図２は、本発明の第１の実施の形態における転送装置の構成例を示す図である。
【００２４】
（１）本発明の第１の実施の形態における転送装置の構成
本実施形態の転送装置は、図２に示されるように、ＰＨＹ／ＭＡＣデバイス１と、順序制御監視コア２と、パケット処理コア３＿１〜３＿Ｎと、を備える。Ｎは、本実施形態の転送装置に備わるパケット処理コアの数である。ＰＨＹは、Ｐｈｙｓｉｃａｌ  Ｌａｙｅｒの略称であり、ＭＡＣは、Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌの略称である。順序制御監視コア２とパケット処理コア３＿１〜３＿Ｎは、マルチコアプロセッサのマルチコアである。
【００２５】
さらに、本実施形態の転送装置は、図２に示されるように、パケットバッファメモリ１０と、受信キューメモリ１１＿１〜１１＿Ｎと、シーケンス番号配列メモリ１２と、故障コア情報格納メモリ１３と、を備える。
【００２６】
図２には図示していないが、本実施形態の転送装置は、パケット処理コア３＿１〜３＿Ｎ各々と接続される送信キューメモリ１４＿１〜１４＿Ｎを備える。図３は、本実施形態の転送装置の送信キューメモリ１４＿１〜１４＿Ｎに係る構成例を示す図である。図３に示されるように、本実施形態の転送装置においては、パケット処理コア３＿１〜３＿Ｎ各々に、送信キューメモリ１４＿１〜１４＿Ｎが接続される。
【００２７】
ＰＨＹ／ＭＡＣデバイス１は、図示していないが、メモリと３つのレジスタ(以下、「レジスタＡ、Ｂ、Ｃ」という)を備える。レジスタＡ、Ｂ、Ｃは、順序制御監視コア２と情報を共有する為のレジスタであり、順序制御監視コア２とも接続される。また、順序制御監視コア２とパケット処理コア３＿１〜３＿Ｎもメモリとレジスタを備えるものとする。パケット処理コア３＿１〜３＿Ｎは、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラを備える。
【００２８】
（２）本実施形態の転送装置に備わる各種メモリ
本実施形態の転送装置の各機能部は、各種メモリを使用してパケットや情報のやり取りをする。その為、本実施形態の転送装置の各種メモリ（具体的には、パケットバッファメモリ１０、受信キューメモリ１１＿１〜１１＿Ｎ、シーケンス番号配列メモリ１２、故障コア情報格納メモリ１３、及び送信キューメモリ１４＿１〜１４＿Ｎ）について説明しておく。
【００２９】
図４〜図７は、本実施形態における転送装置に備わるメモリを説明する為の図である。
【００３０】
（２−１）パケットバッファメモリ１０について
パケットバッファメモリ１０は、装置に入力されたパケットを一時的に格納するバッファである。
【００３１】
パケットバッファメモリ１０は、図２の下方に示されるように、情報領域と、パケットを格納するデータ領域と、を備える。情報領域とデータ領域は、対応づけられている。情報領域は、データ領域が未使用か否かを示す値が書き込まれる領域である。情報領域は、装置の起動直後のパケット処理コア３＿１〜３＿Ｎによって、未使用を示す値（値０ｘ５５５５）が初期値として書き込まれる。
【００３２】
なお、パケットバッファメモリ１０はメモリであるので、そのデータ領域各々にはメモリアドレスが対応づけられている。
【００３３】
（２−２）受信キューメモリ１１＿１〜１１＿Ｎについて
受信キューメモリ１１＿１〜１１＿Ｎは、各々、図２に示されるように、パケット処理コア３＿１〜３＿Ｎと接続される。受信キューメモリ１１＿１〜１１＿Ｎは、図４に示されるように、複数のデータ領域を備える。
【００３４】
各データ領域には、ＤＭＡ転送元アドレス情報やシーケンス番号が書き込まれる。ＤＭＡ転送元アドレス情報やシーケンス番号は、パケット処理コア３＿１〜３＿Ｎが、割り当てられたパケットをＤＭＡ転送により引き取るときに使用する情報である。ＤＭＡ転送元アドレス情報は、引き取りを待つパケットが格納されたメモリのメモリアドレスである。
【００３５】
受信キューメモリ１１＿１〜１１＿Ｎは、図示していないが、各々、情報領域を備える。情報領域には、データ領域を示すライトポインタ値とリードポインタ値が格納される。ライトポインタ値とリードポインタ値の初期値は同じ値である。
【００３６】
ライトポインタ値とリードポインタ値の初期値は、起動直後のパケット処理コア３＿１〜３＿Ｎによって情報領域に書き込まれる。パケット処理コア３＿１〜３＿Ｎは、各々、起動直後に、接続する受信キューメモリ１１＿１〜１１＿Ｎのデータ領域を示すポインタ値のうち、最小のポインタ値を、ライトポインタ値とリードポインタ値の初期値として情報領域に書き込む。最小のポインタ値は、本実施形態の転送装置の製造者によって予めパケット処理コア３＿１〜３＿Ｎに設定される。
【００３７】
（２−３）シーケンス番号配列メモリ１２について
シーケンス番号配列メモリ１２は、図５に示されるように、複数のデータ領域を備える。データ領域は、パケット処理コア３＿１〜３＿Ｎを示す番号（以下、「コア番号」という）が書き込まれる領域である。各データ領域には、連続する番号（以下、「シーケンス番号」という）が割り当てられている。
【００３８】
シーケンス番号配列メモリ１２は、図示していないが、情報領域も備える。情報領域は、データ領域を示すライトポインタ値とリードポインタ値が格納される情報領域である。ライトポインタ値とリードポインタ値の初期値は、シーケンス番号０が割り当てられたデータ領域を示す値であり、実施形態の転送装置の製造者によって情報領域に設定される。
【００３９】
（２−４）故障コア情報格納メモリ１３について
故障コア情報格納メモリ１３は、パケット処理コア３＿１〜３＿Ｎの故障有無を示すメモリである。故障コア情報格納メモリ１３は、パケット処理コア３＿１〜３＿Ｎ分のビットマップ構造となっており、各ビットがパケット処理コア３＿１〜３＿Ｎの故障有無を示す。
【００４０】
各ビットには、故障は未発生であることを示す値０と、故障が発生していることを示す値１と、がパケット処理コア３＿１〜３＿Ｎにより書き込まれる。故障コア情報格納メモリ１３の各ビットの初期値は０である。シーケンス番号配列メモリ１２は、図示していないが、パケット処理コア３＿１〜３＿Ｎと接続される。
【００４１】
（２−５）送信キューメモリ１４＿１〜１４＿Ｎ
送信キューメモリ１４＿１〜１４＿Ｎは、受信キューメモリ１１＿１〜１１＿Ｎと同様、各々、図３に示されるように、パケット処理コア３＿１〜３＿Ｎと接続される。送信キューメモリ１４＿１〜１４＿Ｎは、図７に示されるように、複数のデータ領域を備える。
【００４２】
各データ領域には、パケットバッファメモリ１０に格納されたパケットを送信する為の情報が書き込まれる。
パケットを送信する為の情報とは、パケットが格納されているパケットバッファメモリ１０のアドレス、パケット送信先のメモリのメモリアドレス（以下、「送信先デバイス情報」という）、及びシーケンス番号のことである。パケットが格納されているパケットバッファメモリ１０のアドレスは、以下、「送信パケットメモリアドレス」という。
【００４３】
さらに、図示していないが、送信キューメモリ１４＿１〜１４＿Ｎは、各々、情報領域を備える。情報領域には、送信キューメモリのデータ領域を示すライトポインタ値とリードポインタ値が格納される。ライトポインタ値とリードポインタ値の初期値は同じである。
【００４４】
ライトポインタ値とリードポインタ値の初期値は、起動直後のパケット処理コア３＿１〜３＿Ｎによって情報領域に書き込まれる。パケット処理コア３＿１〜３＿Ｎは、各々、起動直後に、接続する送信キューメモリ１４＿１〜１４＿Ｎのデータ領域を示すポインタ値のうち、最小のポインタ値を、ライトポインタ値とリードポインタ値の初期値として情報領域に書き込む。最小のポインタ値は、本実施形態の転送装置の製造者によって予めパケット処理コア３＿１〜３＿Ｎに設定される。
【００４５】
（３）各機能部の実現手段について
ＰＨＹ／ＭＡＣデバイス１は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリと、一般的なレジスタと、一般的なＰＨＹチップと、一般的なＦＰＧＡと、を用いて実現することができる。ＰＨＹ／ＭＡＣデバイス１内において、一般的なＦＰＧＡは、ＰＨＹチップ、ＲＡＭ等のメモリ、及びレジスタと接続される。ＦＰＧＡは、Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略称である。
【００４６】
順序制御監視コア２は、一般的なプロセッサと、ＲＡＭ等のメモリと、一般的なレジスタと、一般的なカウンタと、を用いて実現することができる。順序制御監視コア２内において、一般的なプロセッサは、ＲＡＭ等のメモリ、一般的なレジスタ、及び一般的なカウンタと接続される。
【００４７】
パケット処理コア３＿１〜３＿Ｎは、一般的なプロセッサと、ＲＡＭ等のメモリと、一般的なレジスタと、一般的なＤＭＡコントローラと、を用いて実現することができる。パケット処理コア３＿１〜３＿Ｎ内において、一般的なプロセッサは、ＲＡＭ等のメモリ、一般的なレジスタ、及び一般的なＤＭＡコントローラと接続される。ＤＭＡコントローラは、ＰＨＹ／ＭＡＣデバイス１のメモリ及びパケットバッファメモリ１０と接続される。
【００４８】
［動作の説明］
図８〜図１１は、本実施形態の転送装置の動作を説明する為の図である。図８は、パケット処理コア３＿１〜３＿Ｎにパケットを割り当てる動作を説明する為の図であり、図９は、故障したパケット処理コア３＿１〜３＿Ｎを検出する動作を説明する為の図である。図１０と図１１は、パケット処理コア３＿１〜３＿Ｎがパケットを送信する動作を説明する為の図である。図８〜図１１を用いて、本実施形態の転送装置の動作を説明する。
【００４９】
（１）装置に入力されたパケットをパケット処理コア３＿１〜３＿Ｎのいずれかに割り当てる動作
（動作概要）
まず、本実施形態の転送装置は、パケットが入力されると、入力されたパケットを、シーケンス番号と共にパケット処理コア３＿１〜３＿Ｎのいずれかに割り当てる。シーケンス番号は、パケットの入力順を示す番号である。具体的には、本実施形態の転送装置の各機能部が、以下の（動作詳細）に示すＳ１〜Ｓ８の動作を行う。
【００５０】
（動作詳細）
まず、本実施形態の転送装置にパケットが入力されたとする。そのとき、図２に示されるように、ＰＨＹ／ＭＡＣデバイス１にパケットが入力される。
【００５１】
ＰＨＹ／ＭＡＣデバイス１は、入力されたパケットを、自身に備わる一時格納メモリに一旦格納する。
【００５２】
さらに、ＰＨＹ／ＭＡＣデバイス１は、パケットを受信したことを順序制御監視コア２に知らせる。具体的には、ＰＨＹ／ＭＡＣデバイス１は、自身に備わるレジスタＡに値１１１を書き込み、レジスタＢに一時格納メモリのメモリアドレスを書き込む。一時格納メモリのメモリアドレスは、本実施形態の転送装置の製造者によって予めＰＨＹ／ＭＡＣデバイス１に設定されている。
【００５３】
次に、順序制御監視コア２は、所定のタイミングになると、図８に示されるように、ＰＨＹ／ＭＡＣデバイス１がパケットを受信しているか否かを判別する（Ｓ１）。具体的には、順序制御監視コア２は、レジスタＡの値が値１１１か否かを判別する。
【００５４】
所定のタイミングは、一定間隔毎のタイミングであり、本実施形態の転送装置の製造者によって、順序制御監視コア２に設定される。本実施形態の転送装置の製造者は、パケットが入力される間隔よりも短い間隔のタイミングを所定のタイミングとして順序制御監視コア２に設定する。本実施形態の転送装置の製造者は、パケットが入力される間隔を、ネットワークアナライザ等の測定器を用いて事前に計測してもよい。
【００５５】
次に、順序制御監視コア２は、レジスタＡの値が値１１１であり、ＰＨＹ／ＭＡＣデバイス１がパケットを受信している場合（Ｓ１でＹｅｓの場合）、装置に入力されたパケットを割り当てるパケット処理コア３＿１〜３＿Ｎを選択する（Ｓ２）。装置に入力されたパケットを割り当てる為である。
【００５６】
具体的には、順序制御監視コア２は、自身に備わるレジスタ（以下、「コア番号保持レジスタ」という）の値を読み出す。コア番号保持レジスタは、パケット処理コア３＿１〜３＿Ｎを示すコア番号１〜Ｎを保持するレジスタであり、その初期値は１である。順序制御監視コア２は、コア番号保持レジスタからコア番号１を読み出す。
【００５７】
次に、順序制御監視コア２は、コア番号１を読み出すと、読み出したコア番号１が示すパケット処理コア３＿１が故障しているのか否かを判別する（Ｓ３）。
【００５８】
具体的には、順序制御監視コア２は、図６に示される故障コア情報格納メモリ１３において、パケット処理コア３＿１の故障有無を示すビットの値が値１であるか否かを判別する。
【００５９】
ここでは、パケット処理コア３＿１に故障は発生しておらず、該コアの故障有無を示すビットの値が値０であったものとして説明を続ける。パケット処理コア３＿１に故障が発生したとき（Ｓ３でＹｅｓの場合）の動作については、後述の「（７）パケット処理コア３＿１に故障が発生した時の動作」で詳細に説明する。
【００６０】
順序制御監視コア２は、パケット処理コア３＿１の故障有無を示すビットが値０である場合、すなわち、パケット処理コア３＿１に故障が発生していない場合（Ｓ３でＮｏの場合）には、以下のＳ４〜Ｓ８の処理を行う。以下のＳ４〜Ｓ８の処理は、パケット処理コア３＿１に、装置に入力されたパケットとシーケンス番号を割り当てる処理である。
【００６１】
まず、順序制御監視コア２は、シーケンス番号配列メモリ１２の情報領域からライトポインタ値を読み出し、該ライトポインタ値が示すデータ領域に割り当てられているシーケンス番号を保持する（Ｓ４）。順序制御監視コア２は、自身に備わるメモリにシーケンス番号を保持してもよい。ここでは、シーケンス番号１を保持したとして説明を続ける。
【００６２】
次に、順序制御監視コア２は、Ｓ２で読み出したコア番号１が示すパケット処理コア３＿１と接続される受信キューメモリ１１＿１に対し、ＤＭＡ転送元アドレス情報と、保持するシーケンス番号と、を書き込む（Ｓ５）。
【００６３】
ＤＭＡ転送元アドレス情報は、装置に入力されたパケットが格納された一時格納メモリのメモリアドレスであり、順序制御監視コア２は、ＤＭＡ転送元アドレス情報を、接続するレジスタＢから取得した上で受信キューメモリ１１＿１に書き込む。この後、ＤＭＡ転送元アドレス情報を基にパケットをパケット処理コア３＿１が一時格納メモリから引き取るので、Ｓ５の処理は、パケット処理コア３＿１にパケットを割り当てる処理である。シーケンス番号は、該パケットに割り当てた番号である。
【００６４】
なお、Ｓ５の処理において、順序制御監視コア２は、受信キューメモリ１１＿１の情報領域に記憶されるライトポインタ値が示すデータ領域に、ＤＭＡ転送元アドレス情報とシーケンス番号を書き込む。ＤＭＡ転送元アドレス情報とシーケンス番号は、以下、「パケットを引き取る為の情報」というものとする。
【００６５】
次に、Ｓ５の後、順序制御監視コア２は、Ｓ２で読み出したコア番号を、図５に示されるシーケンス番号配列メモリ１２に書き込む（Ｓ６）。パケットが割り当てられたパケット処理コアを示すコア番号をシーケンス番号配列メモリ１２に記憶し、後述のＳ４０〜Ｓ５１の処理にてパケット処理コア３＿１が、割り当てられたパケットを、装置に入力された順に送信できるようにするためである。
【００６６】
具体的には、順序制御監視コア２は、シーケンス番号配列メモリ１２の情報領域からライトポインタ値を読み出し、該ライトポインタ値が示すシーケンス番号配列メモリ１２のデータ領域に、Ｓ２で読み出したコア番号を書き込む。
【００６７】
次に、順序制御監視コア２は、再度、Ｓ１〜Ｓ６を実施する準備として、以下のＳ７、Ｓ８の処理を行う。
【００６８】
まず、順序制御監視コア２は、シーケンス番号配列メモリ１２の情報領域のライトポインタ値（以下、「シーケンス番号配列メモリ１２のライトポインタ値」という）を１つインクリメントした値に書き換える（Ｓ７）。次にＳ４の処理をおこなったときに、１つ値の大きいシーケンス番号２をパケットに割り当てられるようにする為である。
【００６９】
さらに、順序制御監視コア２は、レジスタＡ、Ｂに値０を書き込んで初期化し、コア番号保持レジスタの値を１つインクリメントする（Ｓ８）。次にＳ２を行ったときに、順序制御監視コア２が次のパケット処理コア３＿２を選択できるようにする為である。
【００７０】
（２）故障したパケット処理コア３＿１〜３＿Ｎを検出する動作
（動作概要）
次に、本実施形態の転送装置は、故障したパケット処理コア３＿１〜３＿Ｎを検出する。本実施形態の転送装置は、故障したパケット処理コア３＿１〜３＿Ｎを検出した場合は、故障したパケット処理コアの故障有無を示すビット（故障コア情報格納メモリ１３のビット）の値を値１とする。
【００７１】
（動作詳細）
まず、順序制御監視コア２は、Ｓ２で選択したパケット処理コア３＿１に故障が発生しているかを確認する。
【００７２】
その為に、まず、順序制御監視コア２は、図９に示されるように、シーケンス番号配列メモリ１２の情報領域内のリードポインタ値（以下、「シーケンス番号配列メモリ１２のリードポインタ値」という）が示すデータ領域に記憶されるコア番号１を読み出す（Ｓ１１）。
【００７３】
次に、順序制御監視コア２は、読み出したコア番号１に対応するパケット処理コア３＿１に故障が発生しているのか否かを判別する（Ｓ１２）。
【００７４】
具体的には、順序制御監視コア２は、図６に示される故障コア情報格納メモリ１３において、（読み出したコア番号１が示す）パケット処理コア３＿１の故障有無を示すビットが値１であるか否かを判別する。
【００７５】
ここでは故障が発生していない。その為、順序制御監視コア２は、パケット処理コア３＿１の故障を示すビットが値０であると判別したものとして説明を続ける。なお、故障が発生していた場合（Ｓ１２でＹｅｓの場合）の順序制御監視コア２の動作は、後述の「（７）パケット処理コア３＿１に故障が発生した時の動作」で詳細に説明する。
【００７６】
次に、順序制御監視コア２は、パケット処理コア３＿１に故障が発生していない場合（Ｓ１２でＮｏの場合）、パケット処理コア３＿１が故障していないか、改めて確認する。
【００７７】
具体的には、順序制御監視コア２は、Ｓ１２でＮｏと判別した時から一定時間経過後に再度、シーケンス番号配列メモリ１２からリードポインタ値を読み出し、読み出した値が、Ｓ１１で読み出したリードポインタ値と異なっているか否かを判別する（Ｓ１３）。
【００７８】
後述のＳ５４で説明するが、パケット処理コア３＿１は動作しているときにはリードポインタ値を変更する。Ｓ１３の処理は、パケット処理コア３＿１が動作しており、故障していないことを確認している。上述の一定時間は、パケット処理コア３＿１の動作間隔（後述のＳ２０で説明する一定間隔）よりも長い時間である。
【００７９】
ここでは、パケット処理コア３＿１が、故障しておらず、リードポインタ値を変更しているものとして説明を続ける。
【００８０】
順序制御監視コア２は、上述のＳ１３において、各リードポインタ値が異なる場合（Ｓ１３でＹｅｓの場合）、パケット処理コア３＿１が動作しており、故障していないものとして、次の所定のタイミング（Ｓ１に示したＳ１〜Ｓ１３を行うタイミング）を待つ。
【００８１】
なお、順序制御監視コア２は、上述のＳ１３において、各リードポインタ値が同じである場合（Ｓ１３でＹｅｓの場合）、パケット処理コア３＿１が故障し、動作が停止している。
【００８２】
その場合、順序制御監視コア２は、故障したパケット処理コア３＿１を検出したものとして、故障コア情報格納メモリ１３における、当該パケット処理コア３＿１に対応するビットの値を値１に変更する（Ｓ１４）。
【００８３】
次に、Ｓ１４の後、順序制御監視コア２は、シーケンス番号配列メモリ１２のリードポインタ値を１つ増やし（Ｓ１５）、次の所定のタイミングになるのを待つ。
【００８４】
シーケンス番号配列メモリ１２のリードポインタ値は、パケット処理コア３＿１〜３＿Ｎが変更するものである。しかし、パケット処理コア３＿１は、故障してリードポインタ値を変更できないので、順序制御監視コア２が、パケット処理コア３＿１に代わって変更し、それまでと同様に、本実施形態の転送装置が動作を継続できるようにする。
【００８５】
上述のＳ１５の後、順序制御監視コア２は、所定のタイミングになる毎に、上述のＳ１〜Ｓ１５の処理を繰り返す。Ｓ１〜Ｓ１５の処理を繰り返す中で、他のパケット処理コア３＿２〜３＿Ｎの故障を検出していく。順序制御監視コア２は、故障したパケット処理コア３＿２〜３＿Ｎを検出したときは、検出したパケット処理コアに対応する故障コア情報格納メモリ１３のビットの値を値１とする。
【００８６】
（３）割り当てられたパケットをパケット処理コア３＿１〜３＿Ｎが引き取る動作
（動作概要）
次に、パケット処理コア３＿１〜３＿Ｎは、割り当てられたパケットとシーケンス番号を引き取り、引き取ったパケットをパケットバッファメモリ１０に格納する。また、パケットバッファメモリ１０に格納したパケットに、パケット処理コア３＿１〜３＿Ｎは、引き取ったシーケンス番号を対応づけて記憶する。
【００８７】
以下に動作の詳細を説明するが、パケット処理コア３＿１〜３＿Ｎは、それぞれ同じ動作を行うので、代表してパケット処理コア３＿１について説明を行う。
【００８８】
（動作詳細）
まず、パケット処理コア３＿１は、所定のタイミングになると、図１０に示されるように、割り当てられたパケットを引き取る為の情報が、接続されている受信キューメモリ１１＿１に書き込まれているのか否かを判別する（Ｓ２０）。
【００８９】
具体的には、パケット処理コア３＿１は、所定のタイミングになると、受信キューメモリ１１＿１の情報領域に記載されているリードポインタ値とライトポインタ値が異なっているのか否かを判別する。パケットを引き取る為の情報が書き込まれたとき、Ｓ７の処理によりライトポインタ値がリードポインタ値より１つ大きな値となっているからである。
【００９０】
上述の所定のタイミングは、一定間隔毎のタイミングであり、本実施形態の転送装置の製造者によって、順序制御監視コア２に設定される。本実施形態の転送装置の製造者は、任意の一定間隔毎のタイミングを、所定のタイミングとして順序制御監視コア２に設定する。
【００９１】
引き取る為の情報が受信キューメモリ１１＿１に書き込まれていない場合、具体的には、リードポインタ値とライトポインタ値が同じ場合（Ｓ２０でＮｏの場合）には、パケット処理コア３＿１は、図１０、図１１に示されるように、後述のＳ４０の判別を行う。Ｓ４０の判別は、後述の「（５）引き取ったパケットを、装置に入力された順に送信する動作」にて詳細に説明する。
【００９２】
ここでは、受信キューメモリ１１＿１に、パケットを引き取る為の情報が書き込まれているもの（すなわち、受信キューメモリ１１＿１の情報領域に格納されているリードポインタ値とライトポインタ値は異なるもの）として説明を行う。
【００９３】
パケット処理コア３＿１は、パケットを引き取る為の情報が受信キューメモリ１１＿１に書き込まれている場合（Ｓ２０でＹｅｓの場合）は、図１０に示されるように、未使用のパケットバッファメモリ１０のデータ領域を１つ確保する（Ｓ２１）。
【００９４】
具体的には、パケット処理コア３＿１は、未使用を示す所定値（０ｘ５５５５）が書き込まれているパケットバッファメモリ１０の情報領域を１つ探し、該当する領域があれば、該領域に、使用を示す所定値（０ｘａａａａ）を書き込む。また、パケット処理コア３＿１は、自身に備わるレジスタ（以下、「確保確認レジスタ」という）に、確保を示す値１を書き込む。さらに、パケット処理コア３＿１は、所定値（０ｘａａａａ）を書き込んだ情報領域に対応するデータ領域のメモリアドレスを、自身に備わるメモリ（以下、「確保領域アドレス保持メモリ」という）に記憶する。パケット処理コア３＿１は、該当する領域がなければ、確保確認レジスタに、データ領域の確保失敗を示す値０を書き込む。
【００９５】
次に、パケット処理コア３＿１は、パケットバッファメモリ１０のデータ領域の確保に成功したか否かを判別する（Ｓ２２）。
【００９６】
具体的には、パケット処理コア３＿１は、確保確認レジスタの値が値１か否かを判別する。確保確認レジスタの値が値１の場合は、パケットバッファメモリ１０のデータ領域の確保に成功している。確保確認レジスタの値が値０の場合は、パケットバッファメモリ１０のデータ領域の確保に失敗している。
【００９７】
確保確認レジスタの値が値０の場合、つまり、パケットバッファメモリ１０の確保に失敗した場合（Ｓ２２でＮｏの場合）、パケット処理コア３＿１は、以下のＳ２３〜Ｓ２７の処理を行わず、後述するＳ４０の処理を行う。すなわち、パケット処理コア３＿１は、割り当てられたパケットをＰＨＹ／ＭＡＣデバイス１から引き取る処理を行わず、Ｓ４０の処理を行う。Ｓ４０の処理は、送信するパケットがあるか否か判別する次の処理であり、後述する「（５）引き取ったパケットを、装置に入力された順に送信する動作」にて詳細に説明する。
【００９８】
ここでは、確保確認レジスタの値が値１であり、パケット処理コア３＿１は、パケットバッファメモリ１０のデータ領域の確保に成功したものとして説明を続ける。
【００９９】
次に、パケット処理コア３＿１は、パケットバッファメモリ１０の確保に成功した場合（Ｓ２２でＹｅｓの場合）、受信キューメモリ１１＿１に格納されるリードポインタ値を取得し、該ポインタ値が示すデータ領域に格納されている情報を取得する（Ｓ２３）。
【０１００】
取得した情報は、図４に示されている通り、ＤＭＡ転送元アドレス情報やシーケンス番号（すなわち、パケットを引き取る為の情報）である。ＤＭＡ転送元アドレス情報は、パケットを記憶しているＰＨＹ／ＭＡＣデバイス１に備わる一時格納メモリのアドレスである。
【０１０１】
次に、パケット処理コア３＿１は、ＤＭＡ転送元アドレス情報に基づいて、ＰＨＹ／ＭＡＣデバイス１の一時格納メモリに記憶されているパケットを、パケットバッファメモリ１０にＤＭＡ転送により格納する（Ｓ２４）。
【０１０２】
具体的には、パケット処理コア３＿１は、自身に備わるＤＭＡコントローラに、ＤＭＡ転送元アドレス情報と、確保領域アドレス保持メモリに記憶されているアドレスと、を設定する。確保領域アドレス保持メモリに記憶されているアドレスは、転送先であるパケットバッファメモリ１０のアドレスである。その結果、ＤＭＡコントローラが、ＰＨＹ／ＭＡＣデバイス１のメモリに記憶されているパケットを、パケットバッファメモリ１０のデータ領域にＤＭＡ転送し、格納を行う。
【０１０３】
上述のＳ２０〜２４の処理により、パケット処理コア３＿１は、割り当てられたパケットをパケットバッファメモリ１０に引き取ることとなる。
【０１０４】
次に、Ｓ２４の後、パケット処理コア３＿１は、確保確認レジスタの値を初期値０に戻し、さらに、受信キューメモリ１１＿１の情報領域に記載されているリードポインタ値を１つ増やして、該リードポインタ値が示す領域を１領域ずらす（Ｓ２５）。リードポインタ値を１つ増やすのは、次にＳ２０を実施したときに、受信キューメモリ１１＿１から新たな情報を取得できるようにする為である。
【０１０５】
次に、パケット処理コア３＿１は、割り当てられたパケットに対して周知の処理を行う。
【０１０６】
具体的には、パケット処理コア３＿１は、Ｓ２４の処理で、パケットバッファメモリ１０に格納されたパケットを取得し、取得したパケットに対して周知のプロトコル処理を実施する（Ｓ２６）。
【０１０７】
周知のプロトコル処理は、周知のＩＰヘッダチェック処理、周知のパケットフィルタリング処理、及び周知のルーティング処理である。
【０１０８】
周知のＩＰヘッダチェック処理は、取得したパケットのＩＰヘッダに含まれるチェックサム値が正しい値か否かを判別する処理である。パケット処理コア３＿１は、チェックサム値が誤りと判別したときには、取得したパケットは廃棄するパケットとみなし、パケット廃棄を示す値１を、自身に備わるレジスタ（以下、「処理結果レジスタＡ」という）に書き込む。パケット処理コア３＿１は、チェックサム値が正しいと判別したときには、パケット廃棄なしを示す値２を処理結果レジスタＡに書き込む。
【０１０９】
周知のパケットフィルタリング処理は、取得したパケットが所定のパケットか否かを判別する処理である。具体的には、パケット処理コア３＿１は、取得したパケットからＫｅｙ情報（例えば、送信元アドレスや宛先アドレス）を抽出し、該Ｋｅｙ情報が、自身に予め定められたＫｅｙ情報と一致するものか否かを判別する。パケット処理コア３＿１は、抽出したＫｅｙ情報が、自身に予め定められたＫｅｙ情報と一致していれば、このまま通過させるパケットとみなす。パケット処理コア３＿１は、抽出したＫｅｙ情報が、予め定められたＫｅｙ情報と一致してなければ、廃棄するパケットとみなし、処理結果レジスタＡに値１（パケット廃棄を示す値１）を書き込む。パケット処理コア３＿１は、抽出したＫｅｙ情報が、予め定められたＫｅｙ情報と一致していれば、処理結果レジスタＡに値２（パケット廃棄なしを示す値）を書き込む。
【０１１０】
周知のルーティング処理は、取得したパケットから抽出される宛先アドレスに対応する転送先装置のＭＡＣアドレスをルーティングテーブルから求める処理である。パケット処理コア３＿１は、ルーティングテーブルからＭＡＣアドレスを求められたときには、自身に備わるレジスタ（以下、「処理結果レジスタＢ」という）に、パケットが転送可能を示す値２を設定する。パケット処理コア３＿１は、ルーティングテーブルからＭＡＣアドレスを求められなかったときには、処理結果レジスタＢに、パケット転送不可を示す値１を設定する。
【０１１１】
次に、パケット処理コア３＿１は、プロトコル処理を行ったパケットを一度、パケットバッファメモリ１０に戻す（Ｓ２７）。
【０１１２】
具体的には、パケット処理コア３＿１は、プロトコル処理を行ったパケットを、０ｘａａａａ値を記憶する情報領域に対応するパケットバッファメモリ１０のデータ領域に書き込む。
【０１１３】
（４）引き取ったパケットが廃棄すべきパケットかを確認する動作
（動作概要）
次に、パケット処理コア３＿１〜３＿Ｎは、パケットバッファメモリ１０に格納したパケットが、廃棄すべきパケットか否かを確認する。廃棄すべきパケットであれば、その旨を示す無効値を、パケットバッファメモリ１０に格納したパケットに対応づける。
【０１１４】
以下に動作の詳細を説明するが、パケット処理コア３＿１〜３＿Ｎは、各々、同じ処理を行うので、代表してパケット処理コア３＿１について説明を行う。
【０１１５】
（動作詳細）
まず、パケット処理コア３＿１は、Ｓ２７の後、処理結果レジスタＡの値が値２（パケット廃棄なしを示す値）か否かを判別する（Ｓ２８）。
【０１１６】
次に、パケット処理コア３＿１は、処理結果レジスタＡの値が値２（パケット廃棄なしを示す値）の場合（Ｓ２８でＹｅｓの場合）には、処理結果レジスタＢの値が値２、すなわち、パケットが転送可能を示す値か否かを判別する（Ｓ２９）。
【０１１７】
次に、パケット処理コア３＿１は、処理結果レジスタＢの値が値２（すなわち、転送可能を示す値）の場合（Ｓ２９でＹｅｓの場合）は、パケットバッファメモリ１０に格納されたパケットを送信する為の情報を、送信キューメモリ１４＿１に記憶する（Ｓ３０）。
【０１１８】
上述の「パケットを送信する為の情報」は、図７に示されるように、送信パケットメモリアドレスと、送信先デバイス情報と、シーケンス番号と、である。送信パケットメモリアドレスは、割り当てられたパケットが格納されたパケットバッファメモリ１０のメモリアドレスであり、Ｓ２１で確保領域アドレス保持メモリに記憶されている。送信先デバイス情報は、パケット送信先のＰＨＹ／ＭＡＣデバイス１に備わる一時格納メモリのアドレスであり、本実施形態の転送装置の製造者によって予めパケット処理コア３＿１に設定される。シーケンス番号は、Ｓ２３で受信キューメモリ１１＿１から取得した情報に含まれているシーケンス番号である。なお、パケット処理コア３＿１は、Ｓ３０において、パケットを送信する為の情報を送信キューメモリ１４＿１に記憶するが、送信キューメモリ１４＿１の情報領域に記憶されているライトポインタ値が示すデータ領域に記憶する。
【０１１９】
次に、Ｓ３０の後、パケット処理コア３＿１は、送信キューメモリ１４＿１の情報領域に記憶されているライトポインタ値（以下、「送信キューメモリ１４＿１のライトポインタ値」という）を１つ増やし、該ポインタ値が示すデータ領域を１領域ずらす（Ｓ３１）。次に、Ｓ３０を実施したときに、送信キューメモリ１４＿１の別のデータ領域に送信する為の情報を書き込めるようにする為である。
【０１２０】
一方、パケット処理コア３＿１は、Ｓ２８において処理結果レジスタＡの値が値１である場合（Ｓ２８でＮｏの場合）、「パケットを送信する為の情報」を送信キューメモリ１４＿１に記憶するが、送信先デバイス情報を無効値とした上で記憶する（Ｓ３２）。無効値は、値０ｘＦＦＦＦである。
【０１２１】
次に、パケット処理コア３＿１は、Ｓ３１を実施し、送信キューメモリ１４＿１のライトポインタ値を１つ増やす（Ｓ３１）。
【０１２２】
また、パケット処理コア３＿１は、上述のＳ２９の判別において、処理結果レジスタＢの値が値１（転送不可を示す値）である場合（Ｓ２９でＮｏの場合）にも、Ｓ２８でＮｏの場合と同様に、Ｓ３２及びＳ３１の処理を行う。
【０１２３】
（５）引き取ったパケットを、装置に入力された順に送信する動作
（動作概要）
次に、パケット処理コア３＿１〜３＿Ｎは、パケットバッファメモリ１０に格納されたパケットを、装置に入力された順番通りに送信する。具体的には、パケット処理コア３＿１〜３＿Ｎは、シーケンス番号順に、パケットバッファメモリ１０に格納されたパケットを送信する。
【０１２４】
以下、パケット処理コア３＿１〜３＿Ｎの動作の詳細を説明するが、それぞれ同じ動作を行うので、代表してパケット処理コア３＿１について説明を行う。
【０１２５】
（動作詳細）
まず、パケット処理コア３＿１は、図１１に示されるように、接続する送信キューメモリ１４＿１に「パケットを送信する為の情報」が書き込まれているのか否かを判別する（Ｓ４０）。
【０１２６】
具体的には、パケット処理コア３＿１は、送信キューメモリ１４＿１の情報領域に記載されているリードポインタ値とライトポインタ値が異なっているのか否かを判別する。Ｓ４０の処理は、送信するパケットがあるか否か判別する処理に等しい。
【０１２７】
パケット処理コア３＿１は、リードポインタ値とライトポインタ値が同じ場合（Ｓ４０でＮｏの場合）、「パケットを送信する為の情報」が書き込まれていないので、パケットを送信する処理を行わず、次に起動する所定のタイミングを待つ。
【０１２８】
ここでは、送信キューメモリ１４＿１に「パケットを送信する為の情報」が書き込まれており、送信キューメモリ１４＿１の情報領域に記載されているリードポインタ値とライトポインタ値が異なっているものとして説明を続ける。
【０１２９】
パケット処理コア３＿１は、リードポインタ値とライトポインタ値が異なる場合（Ｓ４０でＹｅｓの場合）、シーケンス番号配列メモリ１２の情報領域に記憶されるリードポインタ値を読み出す（Ｓ４１）。
【０１３０】
次に、パケット処理コア３＿１は、Ｓ４１で読み出したリードポインタ値が示すシーケンス番号配列メモリ１２のデータ領域に割り当てられているシーケンス番号と、該データ領域に記憶されているコア番号と、を取得する（Ｓ４２）。
【０１３１】
上述のＳ４２の処理は、シーケンス番号を払い出し、払いだしたシーケンス番号に対応するパケットが割り当てられたコアのコア番号を取得する処理である。
【０１３２】
次に、パケット処理コア３＿１は、Ｓ４２で取得したコア番号が、自分を示すコア番号か否かを判別する（Ｓ４３）。すなわち、パケット処理コア３＿１は、自分が、払いだされたシーケンス番号に対応するパケット（以下、「処理パケット」という）が割り当てられたコアか否かを判別する。
【０１３３】
次に、パケット処理コア３＿１は、Ｓ４２で取得したコア番号が自分を示すコア番号である場合（Ｓ４３でＹｅｓの場合）、送信キューメモリ１４＿１から「パケットを送信する為の情報」を取得する（Ｓ４４）。払い出されたシーケンス番号に対応するパケットをパケットバッファメモリ１０から送信する為である。
【０１３４】
Ｓ４４の処理は、具体的には、パケット処理コア３＿１が、送信キューメモリ１４＿１の情報領域に格納されるリードポインタ値で示される送信キューメモリ１４＿１のデータ領域から「パケットを送信する為の情報」を取得することで実現される。
【０１３５】
なお、パケット処理コア３＿１は、上述のＳ４３の処理において、取得したコア番号が自分のコア番号でない場合（Ｓ４３でＮｏの場合）、自分が処理する番ではないとみなし、パケットを送信する処理を行わずに、次に起動する所定のタイミングを待つ。ここでは、取得したコア番号がパケット処理コア３＿１を示すコア番号であったものとして説明を続ける。
【０１３６】
次に、Ｓ４４の後、パケット処理コア３＿１は、Ｓ４４で取得した「パケットを送信する為の情報」に含まれるシーケンス番号と、Ｓ４２で取得したシーケンス番号と、が一致しているか否かを判別する（Ｓ４５）。取得した「パケットを送信する為の情報」が、確実に、払い出されたシーケンス番号に対応するパケットの情報か確認する為である。
【０１３７】
上述のＳ４５の処理において各シーケンス番号が一致しない場合（Ｓ４５でＮｏの場合）、取得した「パケットを送信する為の情報」は、払い出されたシーケンス番号に対応するパケットの情報ではない。
【０１３８】
その場合、「パケットを送信する為の情報」が壊れており、その原因として送信キューメモリ１４＿１や受信キューメモリ１１＿１が故障している可能性がある。送信キューメモリ１４＿１や受信キューメモリ１１＿１が使用されないよう、パケット処理コア３＿１は、自コアに対応する故障コア情報格納メモリ１３のビットに値１を書き込む（Ｓ４６）。さらに、パケット処理コア３＿１は、自身の全ての機能を停止する（Ｓ４７）。
【０１３９】
ここでは、上述のＳ４５の処理において各シーケンス番号は一致しており、取得した「パケットを送信する為の情報」が、払い出されたシーケンス番号に対応するパケットの情報であるとパケット処理コア３＿１によって判別されたものとして説明を続ける。すなわち、Ｓ４５でＹｅｓの場合であったものとして説明を続ける。
【０１４０】
パケット処理コア３＿１は、Ｓ４５の処理において各シーケンス番号が一致していた場合（Ｓ４５でＹｅｓの場合）、払い出されたシーケンス番号に対応するパケットが、廃棄すべきパケットなのか否かを判別する（Ｓ４８）。
【０１４１】
具体的には、パケット処理コア３＿１は、Ｓ４４で取得した「パケットを送信する為の情報」に含まれる送信先デバイス情報が無効値（０ｘＦＦＦＦ）か否かを判別する。上述のＳ３２において、パケット処理コア３＿１は、廃棄するパケットについては、送信先デバイス情報を無効値（０ｘＦＦＦＦ）とした。
【０１４２】
パケット処理コア３＿１は、送信先デバイス情報が無効値（０ｘＦＦＦＦ）の場合（Ｓ４８でＹｅｓの場合）は、払い出されたシーケンス番号に対応するパケットを廃棄する（Ｓ４９）。具体的には、パケット処理コア３＿１は、Ｓ２１で確保したパケットバッファメモリ１０のデータ領域に記憶されるパケットを削除する処理を行う。
【０１４３】
以下、Ｓ４４で取得した「パケットを送信する為の情報」に含まれる送信先デバイス情報が無効値（０ｘＦＦＦＦ）ではないものとして説明を続ける。
【０１４４】
パケット処理コア３＿１は、上述のＳ４８の処理において、送信先デバイス情報が無効値（０ｘＦＦＦＦ）でない場合（Ｓ４８でＮｏの場合）、払い出されたシーケンス番号に対応するパケットをＰＨＹ／ＭＡＣデバイス１のメモリにＤＭＡ転送する（Ｓ５０）。
【０１４５】
具体的には、パケット処理コア３＿１は、Ｓ４４で取得した「パケットを送信する為の情報」から送信パケットメモリアドレスと送信先デバイス情報を抽出する。そして、パケット処理コア３＿１は、抽出した送信パケットメモリアドレスを転送元アドレスとし、抽出した送信先デバイス情報を転送先アドレスとしてＤＭＡコントローラに設定する。送信パケットメモリアドレスは、払いだされたシーケンス番号に対応するパケットが格納されているパケットバッファメモリ１０のデータ領域のメモリアドレスである。送信先デバイス情報は、ＰＨＹ／ＭＡＣデバイス１の一時格納メモリのアドレスである。
【０１４６】
Ｓ５０の処理により、ＤＭＡコントローラが、払いだされたシーケンス番号に対応するパケットを、そのパケットが格納されるパケットバッファメモリ１０のデータ領域からＰＨＹ／ＭＡＣデバイス１の一時格納メモリへ転送する。
【０１４７】
ＰＨＹ／ＭＡＣデバイス１は、自身に備わるメモリにパケットが転送されると、転送されたパケットを送信する（Ｓ５１）。
【０１４８】
次に、パケット処理コア３＿１は、Ｓ２１以降確保していたパケットバッファメモリ１０のデータ領域を解放する（Ｓ５２）。
【０１４９】
具体的には、パケット処理コア３＿１は、確保していたパケットバッファメモリ１０のデータ領域にＡＬＬ０を書き込み、さらに、確保していたパケットバッファメモリ１０のデータ領域に対応する情報領域に、未使用を示す所定値を書き込む。未使用を示す所定値は、値０ｘ５５５５である。
【０１５０】
次に、パケット処理コア３＿１は、使用していた各種レジスタやメモリを初期化する（Ｓ５３）。具体的には、パケット処理コア３＿１は、Ｓ２６で使用した処理結果レジスタＡと処理結果レジスタＢに値０を書き込む。
【０１５１】
次に、パケット処理コア３＿１は、シーケンス番号配列メモリ１２のリードポインタ値を１つ増やして、該リードポインタ値が示す領域を１領域ずらす（Ｓ５４）。また、パケット処理コア３＿１は、送信キューメモリ１４＿１の情報領域に記憶されるリードポインタ値についても１つ増やして、該リードポインタ値が示す領域を１領域ずらす。
【０１５２】
その後、パケット処理コア３＿１は、処理を一旦終了し、次にＳ２０の処理を行う所定のタイミングになるのを待つ。
【０１５３】
パケット処理コア３＿１は、所定のタイミングになれば、上述のＳ２０〜Ｓ５４を実施する。また、パケット処理コア３＿２〜３＿Ｎも、所定のタイミングになれば、上述のＳ２０〜Ｓ５４を実施する。すなわち、パケット処理コア３＿１〜３＿Ｎは、割り当てられたパケットを引き取り、引き取ったパケットをシーケンス番号順に送信する処理を行う。
【０１５４】
（６）ここまでの動作のまとめ
本実施形態の転送装置の順序制御監視コア２は、上述のＳ１〜Ｓ７を行い、装置に入力されるパケットを、シーケンス番号と共に、パケット処理コア３＿１〜３＿Ｎのいずれかに割り当てる。パケット処理コア３＿１〜３＿Ｎは、上述のＳ２０〜Ｓ５３を行い、割り当てられたパケットを、装置に入力された順番で送信する。具体的には、パケット処理コア３＿１〜３＿Ｎは、割り当てられたパケットをシーケンス番号順に送信する。
【０１５５】
また、順序制御監視コア２は、Ｓ１１〜Ｓ１５の処理を行うことにより、故障したパケット処理コア３＿１〜３＿Ｎを検出する動作を行うことも説明した。
【０１５６】
（７）パケット処理コア３＿１に故障が発生した時の動作
ここで、パケット処理コア３＿１が故障し、動作を停止したとする。
【０１５７】
（動作概要）
順序制御監視コア２は、故障したパケット処理コア３＿１を避け、故障していないパケット処理コア３＿２〜３＿Ｎにパケットを割り当てる動作を行う。以下に動作の詳細を説明する。
【０１５８】
（動作詳細）
まず、パケット処理コア３＿１が故障して、動作を停止したとき、パケット処理コア３＿１は上述のＳ２０〜Ｓ５４を実施しなくなる。Ｓ５４の処理が実施されないので、シーケンス番号配列メモリ１２のリードポインタ値が変化せず、常に同じ値となる。その為、順序制御監視コア２は、上述のＳ１３の判別において、シーケンス番号配列メモリ１２のリードポインタ値が常に同じ値と判別する。
【０１５９】
順序制御監視コア２は、リードポインタ値が常に同じ値と判別した場合（Ｓ１３でＹｅｓの場合）には、（Ｓ１１で読み出されるコア番号１が示す）パケット処理コア３＿１に対応するビット（故障コア情報格納メモリ１３のビット）の値を値１とする（Ｓ１４）。
【０１６０】
その後、順序制御監視コア２は、Ｓ１５を実施した後、再度Ｓ１〜Ｓ１５の処理を繰り返し、再度Ｓ２の処理でパケット処理コア３＿１を選択したとき（具体的には、コア番号保持レジスタからコア番号１を読み出したとき）、以下のＳ３、Ｓ９、Ｓ１０の処理を行う。
【０１６１】
まず、順序制御監視コア２は、図８に示されるように、選択したパケット処理コア３＿１に故障が発生しているのか否かを判別する（Ｓ３）。
【０１６２】
具体的には、順序制御監視コア２は、故障コア情報格納メモリ１３において、読み出したコア番号１（すなわち、パケット処理コア３＿１）に対応するビットが値１であるか否かを判別する。ここでは、パケット処理コア３＿１に対応するビットが値１である。
【０１６３】
次に、順序制御監視コア２は、パケット処理コア３＿１に対応するビットが値１である場合、すなわち、パケット処理コア３＿１に故障が発生している場合（Ｓ３でＹｅｓの場合）には、以下のＳ９、Ｓ１０の処理を行う。
【０１６４】
順序制御監視コア２は、パケット処理コア３＿１〜３＿Ｎ全てについて、Ｓ３の判別を実施したか否かを判別する（Ｓ９）。
【０１６５】
具体的には、順序制御監視コア２は、自身に備わるカウンタ（以下、「コア数確認カウンタ」という）の値が値Ｎか否かを判別する。コア数確認カウンタの初期値は値１である。
【０１６６】
上述のＳ９の判別は、上述のＳ３と後述のＳ１０によってなされるループが永遠に繰り返されないようにする為の処理である。順序制御監視コア２は、コア数確認カウンタの値が値Ｎの場合（Ｓ９でＹｅｓの場合）、パケット処理コア３＿１〜３＿Ｎ全てについてＳ３の判別を実施したものとして、次に動作する所定のタイミングを待つ。ここでは、パケット処理コア３＿１〜３＿Ｎ全てについて、Ｓ３の判別を実施しておらず、コア数確認カウンタの値が値Ｎより小さい値であったとして説明を続ける。
【０１６７】
順序制御監視コア２は、コア数確認カウンタの値が値Ｎでない場合、すなわち、パケット処理コア３＿１〜３＿Ｎ全てについてＳ３の判別を実施していない場合（Ｓ９でＮｏの場合）、コア番号保持レジスタの値を１つインクリメントする（Ｓ１０）。
【０１６８】
コア番号保持レジスタ値（すなわち、コア番号）は、パケット処理コア３＿２を示すコア番号２となる。その後、順序制御監視コア２は、Ｓ４〜Ｓ８の処理を行い、コア番号２のパケット処理コア３＿２に、装置に入力されたパケットを割り当てる。順序制御監視コア２は、Ｓ８の処理でコア番号保持レジスタ値（すなわち、コア番号）を１つインクリメントする。コア番号は３となる。その後、順序制御監視コア２は、Ｓ１〜Ｓ１５を繰り返し、Ｓ４〜Ｓ８の処理によりパケット処理コア３＿３〜３＿Ｎにパケットを割り当てていく。順序制御監視コア２は、故障したパケット処理コア３＿１を避け、それ以外のパケット処理コア３＿２〜３＿Ｎにパケットを割り当てることができる。
【０１６９】
なお、順序制御監視コア２は、Ｓ１〜Ｓ１５を繰り返していく中で、Ｓ１２においてもコア番号１に対応するパケット処理コア３＿１に故障が発生していると判別する。順序制御監視コア２は、Ｓ１２において、パケット処理コア３＿１に故障が発生していると判別した場合（Ｓ１２でＹｅｓの場合）には、シーケンス番号配列メモリ１２のリードポインタ値を１つ増やし（Ｓ１６）、次の所定のタイミングになるのを待つものとする。故障したパケット処理コア３＿１に代わってリードポインタ値を変更し、それまでと同様に本実施形態の転送装置が動作を継続できるようにする為である。
【０１７０】
（８）リードポインタ値、ライトポインタ値、及びレジスタ値の初期化
（８−１）コア番号保持レジスタ値の初期化
Ｓ８の処理によりコア番号保持レジスタの値が値Ｎより大きい値となったとき、順序制御監視コア２は、コア番号保持レジスタの値を値１に戻すものとする。その結果、順序制御監視コア２は、パケット処理コア３＿１からパケットを割り当てることができる。但し、パケット処理コア３＿１が故障しているときには、順序制御監視コア２は、故障した該パケット処理コア３＿１にパケットを割り当てないことは、上述の「（７）パケット処理コア３＿１に故障が発生した時の動作」で説明した通りである。
【０１７１】
（８−２）シーケンス番号配列メモリ１２のポインタ値の初期化
上記では、順序制御監視コア２が、シーケンス番号配列メモリ１２のライトポインタ値を増やすことを説明した。順序制御監視コア２は、シーケンス番号Ｎが割り当てられたデータ領域を示す値（以下、「上限値」という）までライトポインタ値を増やしたときには、該ライトポインタ値を初期値に戻す。初期値は、シーケンス番号０が割り当てられたデータ領域を示す値である。
【０１７２】
同様に、順序制御監視コア２とパケット処理コア３＿１〜３＿Ｎは、シーケンス番号配列メモリ１２のリードポインタ値を上限値まで増やしたときには、該リードポインタ値を初期値に戻す。
【０１７３】
（８−３）受信キューメモリ１１＿１〜１１＿Ｎのポインタ値の初期化
上記では、順序制御監視コア２が、受信キューメモリ１１＿１〜１１＿Ｎのライトポインタ値を増やすことを説明した。順序制御監視コア２は、受信キューメモリのデータ領域を示す値のうち、最も大きい値までライトポインタ値を増やしたときには、該ライトポインタ値を初期値に戻す。
【０１７４】
同様に、パケット処理コア３＿１〜３＿Ｎは、受信キューメモリ１１＿１〜１１＿Ｎのリードポインタ値を上限値まで増やしたときには、該リードポインタ値を初期値に戻す。
【０１７５】
（８−４）送信キューメモリ１４＿１〜１４＿Ｎのポインタ値の初期化
上記では、パケット処理コア３＿１〜３＿Ｎが、送信キューメモリ１４＿１〜１４＿Ｎのライトポインタ値を増やすことを説明した。順序制御監視コア２は、送信キューメモリのデータ領域を示す値のうち、最も大きい値までライトポインタ値を増やしたときには、該ライトポインタ値を初期値に戻す。
【０１７６】
同様に、パケット処理コア３＿１〜３＿Ｎは、送信キューメモリ１４＿１〜１４＿Ｎのリードポインタ値を上限値まで増やしたときには、該リードポインタ値を初期値に戻す。
【０１７７】
（９）動作のバリエーション
（９−１）受信キューメモリ１１＿１が満杯かどうかを確認する動作
順序制御監視コア２は、図８に示されるように、Ｓ５の処理で受信キューメモリ１１＿１に「パケットを引き取る為の情報」を書き込むが、書き込む前に、受信キューメモリ１１＿１が満杯でないことを確認してから書き込んでもよい。
【０１７８】
その場合、受信キューメモリ１１＿１は、書き込まれている情報の数が格納される領域（以下、「書き込み数保持領域」という）を備えるものとする。書き込み数保持領域には、初期値として値０が、起動した順序制御監視コア２により書き込まれる。
【０１７９】
初期値０を書き込んだ順序制御監視コア２は、以下の（処理Ａ）〜（処理Ｃ）を行うものとする。
【０１８０】
（処理Ａ）
順序制御監視コア２は、Ｓ４の処理の後、書き込み数保持領域の値が所定値以上であるか否かを判別する。上述の所定値は、受信キューメモリ１１＿１のデータ領域の数であり、本実施形態の転送装置の製造者によって設定される。
【０１８１】
（処理Ｂ）
順序制御監視コア２は、書き込み数保持領域の値が所定値以上であれば、受信キューメモリ１１＿１が満杯であるので、「パケットを引き取る為の情報」を書き込むＳ５の処理を行わず、次にＳ９の処理を行う。
【０１８２】
（処理Ｃ）
順序制御監視コア２は、書き込み数保持領域の値が所定値より小さければ、受信キューメモリ１１＿１が満杯でないので、Ｓ５の処理を行って、受信キューメモリ１１＿１に「パケットを引き取る為の情報」を書き込む。さらに、順序制御監視コア２は、「パケットを引き取る為の情報」を受信キューメモリ１１＿１に書き込むと、書き込み数保持領域の値を１つ大きな値とする。
【０１８３】
順序制御監視コア２は、上述の（処理Ａ）〜（処理Ｃ）を行うことで、受信キューメモリ１１＿１が満杯でないことを確認してから「パケットを引き取る為の情報」を書き込むことができる。なお、パケット処理コア３＿１は、Ｓ２３の処理で受信キューメモリ１１＿１から情報を取得したときには、書き込み数保持領域の値を１つ小さな値とする。
【０１８４】
上記では、受信キューメモリ１１＿１について説明したが、順序制御監視コア２は、受信キューメモリ１１＿２〜１１＿Ｎについても満杯でないことを確認してから書き込んでもよい。その場合、受信キューメモリ１１＿２〜１１＿Ｎ毎に、書き込み数保持領域を備え、順序制御監視コア２は、受信キューメモリ１１＿２〜１１＿Ｎ毎に、上述の（処理Ａ）〜（処理Ｃ）を行う。
【０１８５】
（９−２）優先度に基づいてパケットを送信する動作
本実施形態の転送装置は、輻輳回避の為、優先度に応じてパケットを送信する動作を行ってもよい。その場合、受信キューメモリ１１＿１は、上述の「（９−１）受信キューメモリ１１＿１が満杯かどうかを確認する動作」で説明した「書き込み数保持領域」を備えるものとする。書き込み数保持領域は、受信キューメモリ１１＿１に書き込まれている「パケットを引き取る為の情報」の数を保持する為の領域である。
【０１８６】
また、ＰＨＹ／ＭＡＣデバイス１と順序制御監視コア２が、以下の（処理ａ）〜（処理ｅ）の処理を行うものとする。
【０１８７】
（処理ａ）
まず、ＰＨＹ／ＭＡＣデバイス１は、パケットを受信したとき、受信したパケットからパケットの優先度を示すＣｏＳ（Ｃｌａｓｓ  ｏｆ  Ｓｅｒｖｉｃｅ）値を取得する。ＣｏＳ値は、ＴｏＳ（Ｔｙｐｅ  ｏｆ  Ｓｅｒｖｉｃｅ）値であってもよい。ＰＨＹ／ＭＡＣデバイス１は、取得したＣｏＳ値をレジスタＣに書き込む。
【０１８８】
（処理ｂ）
順序制御監視コア２は、Ｓ４の処理の後、Ｓ５を実施する前に、書き込み数保持領域の値(すなわち、受信キューメモリ１１＿１に書き込まれている情報の数)が、以下の（値イ）、（値ロ）、（値ハ）のいずれかに該当するのかを判別する。
【０１８９】
（値イ）０以上で所定値Ｘより小さい値
（値ロ）所定値Ｘ以上で所定値Ｚより小さい値
（値ハ）所定値Ｚ以上の値
所定値Ｘ、Ｚは、本実施形態の転送装置の製造者によって設定される。所定値Ｚは、パケット処理コア３＿１が輻輳すると本実施形態の転送装置の製造者が考える数である。所定値Ｘは、パケット処理コア３＿１が輻輳しないと本実施形態の転送装置の製造者が考える数である。
【０１９０】
（処理ｃ）
順序制御監視コア２は、書き込み数保持領域の値が（値イ）の値であるとき、レジスタＣに記憶しているＣｏＳ値に関わらず、次のＳ５の処理を行う。その結果、パケット処理コア３＿１が、どのような優先度のパケットでもＰＨＹ／ＭＡＣデバイス１の一時格納メモリから引き取り、処理を行うこととなる。
【０１９１】
（処理ｄ）
順序制御監視コア２は、書き込み数保持領域の値が（値ロ）の値であるとき、レジスタＣに記憶しているＣｏＳ値が所定値Ｗ以上であるときに、次のＳ５の処理を行う。その結果、パケット処理コア３＿１が、所定値Ｗ以上の優先度のパケット(以下、「中優先度以上のパケット」という)をＰＨＹ／ＭＡＣデバイス１の一時格納メモリから引き取り、処理を行うこととなる。順序制御監視コア２は、レジスタＣに記憶しているＣｏＳ値が所定値Ｗより小さいときには、次のＳ５の処理を行わず、Ｓ９以降の処理を行う。
【０１９２】
（処理ｅ）
順序制御監視コア２は、書き込み数保持領域の値が（値ハ）の値であるとき、レジスタＣに記憶しているＣｏＳ値が所定値Ｖ以上であるときに、次のＳ５の処理を行う。所定値Ｖは、所定値Ｗよりも優先度が高いＣｏＳ値である。その結果、パケット処理コア３＿１が、所定値Ｖ以上の優先度のパケット(以下、「高優先度のパケット」という)をＰＨＹ／ＭＡＣデバイス１の一時格納メモリから引き取り、処理を行うこととなる。順序制御監視コア２は、レジスタＣに記憶しているＣｏＳ値が所定値Ｖより小さいときには、次のＳ５の処理を行わず、Ｓ９の処理を行う。
【０１９３】
本実施形態の転送装置は、（処理ａ）〜（処理ｅ）の処理を行うことで、全てのパケット、中優先度以上のパケット、及び高優先度のパケットと、優先度に応じたパケットの送信を行うことができる。
【０１９４】
上述の所定値Ｖや所定値Ｗは、本実施形態の転送装置の製造者によって設定される。本実施形態の転送装置の製造者は、ＣｏＳ値がとりうる範囲ならば、任意の値を所定値Ｖや所定値Ｗとして順序制御監視コア２に設定してよい。
【０１９５】
また、上記では、受信キューメモリ１１＿１について説明した。順序制御監視コア２は、受信キューメモリ１１＿２〜１１＿Ｎ毎に上述の（処理ａ）〜（処理ｅ）の処理を行ってもよい。その場合、受信キューメモリ１１＿２〜１１＿Ｎは、書き込み数保持領域を備えるものとする。
【０１９６】
（９−３）ＰＨＹ／ＭＡＣデバイス１の数について
上記では、本実施形態の転送装置にＰＨＹ／ＭＡＣデバイス１が１つ備わる場合を説明したが、これに限らない。本実施形態の転送装置は、複数のＰＨＹ／ＭＡＣデバイス１を備えてもよい。その場合、複数のＰＨＹ／ＭＡＣデバイス１は、各々、順序制御監視コア２に接続される。順序制御監視コア２は、複数のＰＨＹ／ＭＡＣデバイス１毎にＳ１の判別を行い、パケットを受信しているＰＨＹ／ＭＡＣデバイス１についてはＳ２〜Ｓ１６の処理を行う。
【０１９７】
［効果の説明］
本実施形態によれば、転送装置は、パケットを並行処理する機能部（具体的には、パケット処理コア３＿１〜３＿Ｎ）のいずれかが故障し、動作が停止したときであっても、装置に入力されるデータを、装置に入力された順に出力することができる。
【０１９８】
なぜならば、本実施形態の転送装置は、パケット処理コアのいずれかが故障したときには、故障したパケット処理コア以外のパケット処理コアに、装置に入力されたパケットを割り当てるからである。本実施形態の転送装置は、故障したパケット処理コアを避け、その機能を発揮できるパケット処理コアにパケットを割り当てるので、それまでと同様、装置に入力されたパケットを、装置に入力された順に出力することができる。パケット処理コアは、割り当てられたパケットを、装置に入力された順番通りに出力する機能を備えた機能部である。
【０１９９】
≪第２の実施の形態≫
次に、本発明の第２の実施の形態について説明する。
【０２００】
まず、第２の実施の形態の転送装置の構成について説明する。図１２は、第２の実施形態の転送装置の構成例を示す図である。
【０２０１】
［構成の説明］
（１）本実施形態の転送装置の構成
第２の実施形態の転送装置１００は、図１２に示されるように、割当部１１０と、複数の処理部１２０、１２１、１２２と、検出部１３０と、を備える。
【０２０２】
（２）本実施形態の転送装置における各機能部の機能
割当部１１０は、所定の順序で入力される複数のデータの各々を複数の処理部１２０、１２１、１２２のいずれかに順次割り当てる。但し、割当部１１０は、複数の処理部１２０、１２１、１２２のうち検出結果が故障ありを示すものには割り当てを行わない。検出結果は、検出部１３０から通知される情報である。
【０２０３】
複数の処理部１２０、１２１、１２２は、割り当てられたデータを、全体として上述の所定の順序で出力する。所定の順序は、割当部１１０に入力される順序である。
【０２０４】
検出部１３０は、複数の処理部１２０、１２１、１２２の故障の有無の検出結果を割当部１１０に通知する。
【０２０５】
割当部１１０は、第１の実施形態では、Ｓ２〜Ｓ１０の処理を実施する順序制御監視コア２に相当する機能部である。処理部１２０、１２１、１２２は、第１の実施形態では、データ処理コア３＿１〜３＿Ｎに相当する機能部である。検出部１３０は、第１の実施形態では、Ｓ１３〜Ｓ１５の処理を実施する順序制御監視コア２に相当する機能部である。
【０２０６】
[動作の説明]
次に、本実施形態の転送装置の動作を説明する。
【０２０７】
まず、本実施形態の転送装置の割当部１１０に、図１２に示されるように、データａ→データｂ→データｃの順序でデータａ、ｂ、ｃが繰り返し入力されているとする。
【０２０８】
そのとき、割当部１１０は、所定の順序（すなわち、データａ→データｂ→データｃの順序）で入力される複数のデータａ、ｂ、ｃの各々を複数の処理部１２０、１２１、１２２のいずれかに順次割り当てる。
【０２０９】
例えば、割当部１１０は、データａを処理部１２０に割り当て、データｂを処理部１２１に割り当て、データｃを処理部１２２に割り当てる。
【０２１０】
処理部１２０、１２１、１２２は、割り当てられたデータａ、ｂ、ｃを、データ全体として所定の順序（割当部１１０に入力される順序）で出力する。具体的には、処理部１２０、１２１、１２２は、割り当てられたデータａ、ｂ、ｃを、データａ→データｂ→データｃの順序で出力する。
【０２１１】
上述の各機能部の動作によって、本実施形態の転送装置は、装置に入力されるデータａ、ｂ、ｃを、装置に入力された順（データａ→データｂ→データｃの順）に出力することなる。
【０２１２】
その後、処理部１２０が故障し、動作を停止したとする。
【０２１３】
検出部１３０は、複数の処理部１２０、１２１、１２２の故障の有無の検出結果を割当部１１０に通知する。
【０２１４】
割当部１１０は、複数の処理部１２０、１２１、１２２のうち検出結果が故障ありを示すものにはデータの割り当てを行わない。すなわち、割当部１１０は、検出結果が故障なしを示す処理部１２１、１２２のいずれかにデータを割り当てる。
【０２１５】
例えば、割当部１１０は、処理部１２１にデータａを割り当て、処理部１２２にデータｂを割り当てた後、処理部１２１にデータｃを割り当てる。割当部１１０は、故障した処理部１２０には、データを割り当てない。動作が停止しており、その機能を発揮できないからである。割当部１１０は、機能を発揮する処理部１２１、１２２にデータを割り当てる。
【０２１６】
処理部１２１、１２２は、割り当てられたデータａ、ｂ、ｃを、データ全体として所定の順序（割当部１１０に入力される順序）で出力する。具体的には、処理部１２１、１２２は、割り当てられたデータａ、ｂ、ｃを、データａ→データｂ→データｃの順序で出力する。
【０２１７】
上述の各機能部の動作によって、本実施形態の転送装置は、処理部１２０が故障し、動作が停止したときであっても、装置に入力されるデータａ、ｂ、ｃを、装置に入力された順（データａ→データｂ→データｃの順）に出力することができる。
【０２１８】
上記では処理部１２０が故障した場合を例に説明したが、処理部１２１、１２２のいずれかが故障したときも本実施形態の転送装置の各機能部は同様の動作を行う。すなわち、検出部１３０は、故障した処理部について故障ありを示す検出結果を割当部１１０に通知する。割当部１１０は、検出結果が故障ありを示す処理部以外の処理部、すなわち、その機能を発揮する処理部のいずれかにデータの割り当てを行う。その結果、本実施形態の転送装置は、処理部１２１、１２２のいずれかが故障し、動作を停止したときであっても、装置に入力されるデータを、装置に入力された順に出力することができる。
【０２１９】
［効果の説明］
本実施形態によれば、転送装置は、データを並行処理する処理部１２０、１２１、１２２のいずれかが故障し、動作が停止したときであっても、装置に入力されるデータを、装置に入力された順に出力することができる。
【０２２０】
なぜならば、本実施形態の転送装置は、処理部１２０、１２１、１２２のいずれかが故障したときには、検出結果が故障ありを示す処理部以外の処理部に、装置に入力されたデータを割り当てるからである。本実施形態の転送装置は、故障した処理部を避け、その機能を発揮できる処理部にデータを割り当てるので、それまでと同様に、装置に入力されたデータを、装置に入力された順に出力することができる。各処理部１１０、１１１、１１２は、割り当てられたデータを、データ全体として割当部１１０に入力される順に出力する機能を備えた機能部である。
【０２２１】
なお、上述した実施の形態は、その形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々変更可能である。また、図２、図３、図１２の矢印の向きは、一例を示すものであり、機能部間におけるデータの流れの向きを限定するものではない。
【符号の説明】
【０２２２】
１    ＰＨＹ／ＭＡＣデバイス
２    順序制御監視コア
３＿１〜３＿Ｎ    パケット処理コア
１０    パケットバッファメモリ
１１＿１〜１１＿Ｎ    受信キューメモリ
１２    シーケンス番号配列メモリ
１３    故障コア情報格納メモリ
１４＿１〜１４＿Ｎ    送信キューメモリ
８０＿１〜８０＿Ｎ    パケット処理エレメント
８１    入力側カウンタ
８２    出力側カウンタ
８５＿１〜８５＿Ｎ    シーケンス番号付与部
８６＿１〜８６＿Ｎ    シーケンス番号比較部
【図１】
0006666759.tif 000002
【図２】
0006666759.tif 000003
【図３】
0006666759.tif 000004
【図４】
0006666759.tif 000005
【図５】
0006666759.tif 000006
【図６】
0006666759.tif 000007
【図７】
0006666759.tif 000008
【図８】
0006666759.tif 000009
【図９】
0006666759.tif 000010
【図１０】
0006666759.tif 000011
【図１１】
0006666759.tif 000012
【図１２】
0006666759.tif 000013