(57)【要約】【課題】機能モジュールによって機能を追加でき、スループットが高く装置コストが低いパケット通信装置を提供する。【解決手段】  本発明は、ネットワークにおいてパケットを受信し、前記受信したパケットを転送するパケット通信装置において、前記ネットワークと前記パケットを送受信するネットワークインタフェースと、前記ネットワークインタフェースが受信したパケットから転送順序を判定し、前記判定した転送順序を示す識別子を該パケットに付与する経路検索部と、前記パケットに所定の処理を行う機能モジュールと接続する機能モジュールインタフェースと、前記機能モジュールを管理するモジュール管理部と、前記ネットワークインタフェースと前記機能モジュールインタフェースとを接続するスイッチと、を備えることを特徴とする。【選択図】図１０
2006229830.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークにおいてパケットを受信し、前記受信したパケットを転送するパケット通信装置において、
前記ネットワークと前記パケットを送受信するネットワークインタフェースと、
前記ネットワークインタフェースが受信したパケットから転送順序を判定し、前記判定した転送順序を示す識別子を該パケットに付与する経路検索部と、
前記パケットに所定の処理を行う機能モジュールが接続される機能モジュールインタフェースと、
前記機能モジュールを管理するモジュール管理部と、
前記ネットワークインタフェースと前記機能モジュールインタフェースとを接続するスイッチと、を備えることを特徴とするパケット通信装置。
【請求項２】
前記識別子が、固定長であることを特徴とする請求項１に記載のパケット通信装置。
【請求項３】
前記機能モジュールインタフェースを複数備えることを特徴とする請求項１に記載のパケット通信装置。
【請求項４】
前記機能モジュールは、前記経路検索部が前記パケットに付与した識別子に基づいて、パケット通信装置内における転送先を決定する内部転送先検索部を有することを特徴とする請求項１に記載のパケット通信装置。
【請求項５】
前記機能モジュールインタフェースは、前記経路検索部が前記パケットに付与した識別子に基づいて、パケット通信装置内における転送先を決定する内部転送先検索部を有することを特徴とする請求項１に記載のパケット通信装置。
【請求項６】
前記経路検索部が付与した識別子を変更する識別子変換部を備えることを特徴とする請求項１に記載のパケット通信装置。
【請求項７】
前記識別子変換部は、
変更前の識別子と変更後の識別子との関係を示す識別子変更情報を有し、
前記識別子変更情報に基づいて、識別子を変更することを特徴とする請求項６に記載のパケット通信装置。
【請求項８】
前記識別子変換部は、所定の規則に従って、識別子を変更することを特徴とする請求項６に記載のパケット通信装置。
【請求項９】
前記経路検索部は、
前記ネットワークインタフェースが受信したパケットから、前記機能モジュールが該パケットを処理する内容を判定し、
前記判定した処理内容を示す処理内容識別子を該パケットに付与することを特徴とする請求項１に記載のパケット通信装置。
【請求項１０】
ネットワークにおいてパケットを受信し、前記受信したパケットを転送するパケット通信装置において、
前記ネットワークと前記パケットを送受信するネットワークインタフェースと、
前記ネットワークインタフェースが受信したパケットから転送順序を判定し、前記判定した転送順序を示す識別子を該パケットに付与する経路検索部と、
前記パケットに所定の処理を行う機能モジュールと、
前記機能モジュールを管理するモジュール管理部と、
前記ネットワークインタフェースと前記機能モジュールインタフェースとを接続するスイッチと、を備えることを特徴とするパケット通信装置。
【請求項１１】
ネットワークにおいてパケットを受信し、前記受信したパケットを転送するパケット通信装置において、
前記ネットワークと前記パケットを送受信するネットワークインタフェースと、
前記ネットワークインタフェースが受信したパケットから転送順序を判定し、前記判定した転送順序を該パケットに付与する経路検索部と、
前記パケットに所定の処理を行う機能モジュールが接続される機能モジュールインタフェースと、
前記機能モジュールを管理するモジュール管理部と、
前記ネットワークインタフェースと前記機能モジュールインタフェースを接続するスイッチと、を備え、
前記機能モジュールインタフェースは、前記経路検索部が前記パケットに付与した転送順序に基づいて、パケット通信装置内における転送先を決定する内部転送先検索部を有することを特徴とするパケット通信装置。
【請求項１２】
前記機能モジュールインタフェースに接続された機能モジュールを備えることを特徴とする請求項１１に記載のパケット通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットデータを転送するパケット通信装置に関し、特に、ＯＳＩ参照モデルのレイヤ２より上の層におけるルーティング及びスイッチングの技術に関する。
【背景技術】
【０００２】
近年、インターネットや社内網などでＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）パケット通信が普及している。パケット通信のネットワークには、様々なニーズがある。例えば、ネットワークにおける新しい付加価値サービスの導入、ネットワーク利用者の増加への対応、ネットワークのライフライン化に伴う高信頼通信などである。
【０００３】
したがって、ネットワーク上でパケットを転送するパケット通信装置は、高機能、性能拡張性及び高信頼性が求められている。
【０００４】
そこで、これらを実現するパケット通信装置が知られている（例えば、特許文献１参照。）。当該パケット通信装置は、追加機能を提供する機能モジュールを拡張するためのインタフェースを備える。
【０００５】
従来のパケット通信装置は、機能モジュールから受信したパケットに必要な処理を判定し、判定した処理に応じて転送経路を決定する。次に、パケット転送装置は、決定した転送経路上にあるすべての機能モジュールのアドレスを内部ヘッダ部として、パケットに付加する。すると、パケット通信装置に接続された機能モジュールは、パケットに付加された内部ヘッダ部を参照することによって、パケットの転送先を判定する。
【特許文献１】特開２００４−２８９２２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、従来のパケット転送装置は、パケットに付加する内部ヘッダ部のデータ量が大きくなってしまう。そのため、従来のパケット転送装置は、内部のトラフィック量が圧迫されることによって、スループットが減少するという問題があった。
【０００７】
また、従来のパケット転送装置では、パケットに付加する内部ヘッダ部が可変長のデータであった。そのため、機能モジュールがパケットに付加された内部ヘッダ部を取り除く処理が複雑になるという問題があった。
【０００８】
また、従来のパケット転送装置は、可変長の内部ヘッダ部に関する情報を保持しなければならないので、メモリを効率的に利用できないという問題があった。
【０００９】
更に、従来のパケット転送装置に接続する機能モジュールは、パケットの内部ヘッダ部を処理する処理部を備える必要があるので、処理コスト及び製品コストが大きいという問題があった。
【００１０】
本発明は、これらの課題を解決するパケット通信装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、ネットワークにおいてパケットを受信し、前記受信したパケットを転送するパケット通信装置において、前記ネットワークと前記パケットを送受信するネットワークインタフェースと、前記ネットワークインタフェースが受信したパケットから転送順序を判定し、前記判定した転送順序を示す識別子を該パケットに付与する経路検索部と、前記パケットに所定の処理を行う機能モジュールと接続する機能モジュールインタフェースと、前記機能モジュールを管理するモジュール管理部と、前記ネットワークインタフェースと前記機能モジュールインタフェースとを接続するスイッチと、を備えることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、以下の効果を奏する。
（１）パケットに付与する内部ヘッダ部のデータ量を最小限に抑えられる。そのため、パケット通信装置のスループットを向上できる。
（２）パケットに付与する内部ヘッダ部が固定長であり、機能モジュールがパケットの内部ヘッダ部を除いた部分を抽出することが容易となる。そのため、パケット通信装置の実装コストおよび処理コストを軽減できる。
（３）パケットに付与する内部ヘッダ部が固定長である。そのため、内部ヘッダ情報を保持するメモリを効率的に利用できる。また、同一メモリ量でサポート可能な経路表のエントリ数が向上する。
（４）内部転送処理部をパケット通信装置の基本部分である機能モジュールインタフェースに搭載する。そのため、機能モジュールごとに内部転送処理部を実装する必要がなく、機能モジュールを低コストで作成できる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態を図面を参照して説明する。
【００１４】
（第１の実施の形態）
図１は、本発明の第１の実施の形態のパケット通信装置１００のブロック図である。
【００１５】
パケット通信装置１００は、ネットワークインタフェース１１１、１１２、経路検索部１２１、１２２、機能モジュールインタフェース１３１、１３２、機能モジュール２０１、２０２、モジュール制御管理部１４０及びスイッチ１５０を備える。また、パケット通信装置１００は、外部ノード３０１、３０２と接続し、パケットを送受信する。
【００１６】
ネットワークインタフェース１１１、１１２、経路検索部１２１、１２２、機能モジュールインタフェース１３１、１３２及び機能モジュール２０１、２０２は、それぞれ２つを図示しているが、いくつであってもよい。
【００１７】
ネットワークインタフェース１１１は、スイッチ１５０と外部ノード３０１とを接続し、パケットを転送する。また、ネットワークインタフェース１１１は、経路検索部１２１と接続し、受信したパケットの経路を問い合わせる。
【００１８】
同様に、ネットワークインタフェース１１２は、スイッチ１５０と外部ノード３０２とを接続し、パケットを転送する。また、ネットワークインタフェース１１２は、経路検索部１２２と接続し、受信したパケットの経路を問い合わせる。
【００１９】
なお、すべてのネットワークインタフェース１１１、１１２が、一つの経路検索部１２１又は１２２に接続されていてもよい。
【００２０】
経路検索部１２１、１２２は、プロセッサ１２１１及び記憶装置１２１２を備える。プロセッサ１２１１は、記憶措置１２１２に記憶されたプログラムを実行することによって、各種処理を行う。記憶装置１２１２には、経路表１２１３及び経路検索プログラム１２１４が記憶されている。
【００２１】
経路表１２１３は、図３で後述するが、ネットワークインタフェース１１１及び１１２が受信したパケットの転送経路を示す。経路検索プログラム１２１４は、ネットワークインタフェース１１１、１１２が受信したパケットの転送経路を経路表１２１３から検索する。
【００２２】
なお、ネットワークインタフェース１１１、１１２及び経路検索部１２１、１２２が、一つの装置に含まれていてもよい。
【００２３】
スイッチ１５０は、ネットワークインタフェース１１１、１１２及び機能モジュールインタフェース１３１、１３２と接続する。スイッチ１５０は、パケットを受信すると、受信したパケットのヘッダ部に格納された宛先へ当該パケットを転送する。
【００２４】
なお、パケット転送装置１００は、スイッチ１５０を備えなくてもよい。この場合、ネットワークインタフェース１１１、１１２と機能モジュールインタフェース１３１、１３２とが直接接続する。
【００２５】
機能モジュールインタフェース１３１は、スイッチ１５０と機能モジュール２０１とを接続し、パケットを転送する。同様に、機能モジュールインタフェース１３２は、スイッチ１５０と機能モジュール２０２とを接続し、パケットを転送する。
【００２６】
なお、パケット通信装置１００は、機能モジュールインタフェース１３１、１３２を備えなくてもよい。この場合、機能モジュール２０１、２０２とスイッチ１５０とが直接接続する。
【００２７】
機能モジュール２０１、２０２は、プロセッサ２０１１及び記憶装置２０１２を備える。プロセッサ２０１１は、記憶措置２０１２に記憶されたプログラムを実行することによって、各種処理を行う。記憶装置２０１２には、内部転送先表２０１３、機能処理プログラム２０１４及び内部転送先検索プログラム２０１５が記憶されている。
【００２８】
内部転送先表２０１３は、図４で後述するが、機能モジュール２０１、２０２が受信したパケットの転送先を示す。機能処理プログラム２０１４は、機能モジュール２０１、２０２が受信したパケットに各種処理を行う。この各種処理は、例えば、統計処理、ルーティング処理、暗号化処理、ウィルスチェック処理及び／又はファイアウォール処理等である。内部転送先検索プログラム２０１５は、機能モジュール２０１、２０２が受信したパケットの転送先を内部転送先表２０１３から検索する。
【００２９】
なお、機能モジュール２０１、２０２は、パケット通信装置１００の外部にあってもよい。この場合、受信したパケットを処理する内容に応じて機能モジュール２０１、２０２を交換できる。
【００３０】
モジュール制御管理部１４０は、経路検索部１２１、１２２及び機能モジュール２０１、２０２と接続する。また、モジュール管理部１４０は、プロセッサ１４０１及び記憶措置１４０２を備える。プロセッサ１４０１は、記憶装置１４０２に記憶されたプログラムを実行することによって、各種処理を行う。
【００３１】
記憶装置１４０２には、経路処理プログラム１４０３及びフロー定義テーブル１４０４が記憶されている。
【００３２】
フロー定義テーブル１４０４は、図２で後述するが、パケット通信装置１００が受信したパケットの転送経路を示す。経路処理プログラム１４０３は、図６で後述する処理によって、経路検索部１２１、１２２の経路表１２１３及び機能モジュール２０１、２０２の内部転送先表２０１３を作成する。
【００３３】
なお、モジュール制御管理部１４０は、経路検索部１２１、１２２及び機能モジュール２０１、２０２と接続せずに、スイッチ１５０と接続してもよい。この場合、モジュール制御管理部１４０は、スイッチ１５０を介して、経路検索部１２１、１２２及び機能モジュール２０１、２０２にアクセスする。
【００３４】
図２は、本発明の第１の実施の形態のモジュール制御管理部１４０のフロー定義テーブル１４０４の構成図である。
【００３５】
フロー定義テーブル１４０４は、フロー条件１４０４１、フロー識別子１４０４２及び転送経路１４０４３を含む。
【００３６】
フロー条件１４０４１は、ネットワークインタフェース１１１、１１２が受信したパケットの転送経路を判定する条件である。フロー条件１４０４１には、例えば、当該パケットのプロトコル番号、ＴＣＰポート番号、送信元ＩＰアドレス、送信先ＩＰアドレス、送信元ＭＡＣアドレス、送信先ＭＡＣアドレス及び／又は当該パケットを受信したネットワークインタフェース１１１、１１２の識別子等が格納される。
【００３７】
フロー識別子１４０４２は、当該パケットの転送経路を一意に識別する識別子である。
【００３８】
転送経路１４０４３は、当該パケットを転送する経路である。転送経路１４０４３には、パケットが転送される装置のハードウェア識別子が、転送される順に上から格納される。ハードウェア識別子は、ネットワークインタフェース１１１、１１２及び機能モジュール２０１、２０２等を一意に識別する識別子である。
【００３９】
例えば、プロトコル番号が「８０」であるパケットは、フロー条件１４０４１が「プロトコル番号＝８０」であるエントリＥ１１１に一致する。そのため、機能モジュール２０１、機能モジュール２０２、ネットワークインタフェース１１２の順に転送される。
【００４０】
同様に、送信元ＩＰアドレスが「１９２．１６８．１０．０／２４」であるパケットは、機能モジュール２０１、ネットワークインタフェース１１２の順に転送される（エントリＥ１１２）。また、送信先ＩＰアドレスが「１９２．１６８．２０．０／２４」であるパケットは、機能モジュール２０２、ネットワークインタフェース１１２の順に転送される（エントリＥ１１３）。
【００４１】
図３は、本発明の第１の実施の形態の経路検索部１２１、１２２の経路表１２１３の構成図である。
【００４２】
経路表１２１３は、フロー条件１２１３１、フロー識別子１２１３２及び次転送先１２１３３を含む。また、経路表１２１３は、フロー定義テーブル１４０４に対応付けられて作成される。よって、経路表１２１３とフロー定義テーブル１４０４は、同一のエントリ数を有する。
【００４３】
フロー条件１２１３１は、ネットワークインタフェース１１１、１１２が受信したパケットの転送経路を判定する条件である。フロー条件１２１３１には、前述したフロー定義テーブル１４０４（図２）のフロー条件１４０４１と同一の情報が格納される。
【００４４】
フロー識別子１２１３２は、当該パケットの転送経路を一意に識別する識別子である。
【００４５】
次転送先１２１３３には、パケットを受信したネットワークインタフェース１１１、１１２が当該パケットを次に転送する装置のハードウェア識別子が格納される。
【００４６】
図４は、本発明の第１の実施の形態の機能モジュール２０１の内部転送先表２０１３の構成図である。
【００４７】
機能モジュール２０１の内部転送先表２０１３は、フロー識別子２０１３１、次転送先２０１３２を含む。
【００４８】
フロー識別子２０１３１は、パケットの転送経路を一意に識別する識別子である。
【００４９】
次転送先２０１３２には、パケットを受信した機能モジュール２０１が当該パケットを次に転送する装置のハードウェア識別子が格納される。
【００５０】
図５は、本発明の第１の実施の形態の機能モジュール２０２の内部転送先表２０１３の構成図である。
【００５１】
機能モジュール２０２の内部転送先表２０１３は、前述した機能モジュール２０１の内部転送先表（図４）と同一の構成なので、説明は省略する。
【００５２】
ただし、次転送先２０１３２には、機能モジュール２０２がパケットを次に転送する装置のハードウェア識別子が格納される。
【００５３】
図６は、本発明の第１の実施の形態のモジュール制御管理部１４０の経路処理のフローチャートである。
【００５４】
モジュール制御管理部１４０は、パケット通信装置１００が起動されると（Ｓ１０１）、経路処理を開始する。他にも、管理者によってフロー定義テーブル１４０４が変更されると（Ｓ１０２）、経路処理を開始する。
【００５５】
まず、フロー定義テーブル１４０４から経路表１２１３を作成する（Ｓ１０３）。
【００５６】
具体的には、フロー定義テーブル１４０４の一つのエントリを上から順に選択する。そして、選択したエントリから、経路表１２１３の一つのエントリを以下のように作成する。
【００５７】
選択したエントリのフロー条件１４０４１を、経路表１２１３のフロー条件１２１３１に格納する。次に、選択したエントリのフロー識別子１４０４２を、経路表１２１３のフロー識別子１２１３２に格納する。次に、選択したエントリの転送経路１４０４３の最上に格納されているハードウェア識別子を、経路表１２１３の次転送先１２１３３に格納する。
【００５８】
例えば、図２に示すフロー定義テーブル１４０４から、図３に示す経路表１２１３を作成する。
【００５９】
具体的には、フロー定義テーブル１４０４のエントリＥ１１１から、経路表１２１３のエントリＥ１２１を作成する。同様に、フロー定義テーブル１４０４のエントリＥ１１２から、経路表１２１３のエントリＥ１２２を作成する。また、フロー定義テーブル１４０４のエントリＥ１１３から、経路表１２１３のエントリＥ１２３を作成する。
【００６０】
次に、フロー定義テーブル１４０４から内部転送先表２０１３を作成する（Ｓ１０４）。なお、すべての機能モジュール２０１、２０２ごとに異なる内部転送先表２０１３を作成する。
【００６１】
ここでは、ハードウェア識別子がＸである機能モジュール２０１、２０２の内部転送先表２０１３の作成を例として説明する。
【００６２】
まず、フロー定義テーブル１４０４の転送経路１４０４３からハードウェア識別子Ｘを検索する。そして、検索したハードウェア識別子Ｘの一つから、内部転送先表２０１３の一つのエントリを作成する。
【００６３】
具体的には、検索したハードウェア識別子Ｘが格納されているエントリのフロー識別子１４０４２をフロー定義テーブル１４０４から抽出する。次に、抽出したフロー識別子１４０４２を内部転送先表２０１３のフロー識別子２０１３１に格納する。次に、検索したハードウェア識別子Ｘの直下に格納されているハードウェア識別子を、フロー定義テーブル１４０４の転送経路１４０４３から抽出する。次に、抽出したハードウェア識別子を内部転送先表２０１３の次転送先２０１３２に格納する。
【００６４】
例えば、図２に示す内容のフロー定義テーブル１４０４から、図４に示す機能モジュール２０１の内部転送先表２０１３を作成する。具体的には、フロー定義テーブル１４０４のエントリＥ１１１から、内部転送先表２０１３のエントリＥ１３１を作成する。また、フロー定義テーブル１４０４のエントリＥ１１２から、内部転送先表２０１３のエントリＥ１３２を作成する。
【００６５】
また、図２に示す内容のフロー定義テーブル１４０４から、図５に示す機能モジュール２０２の内部転送先表２０１３を作成する。具体的には、フロー定義テーブル１４０４のエントリＥ１１１から、内部転送先表２０１３のエントリＥ１４１を作成する。また、フロー定義テーブル１４０４のエントリＥ１１３から、内部転送先表２０１３のエントリＥ１４２を作成する。
【００６６】
次に、作成した内部転送先表２０１３を、当該内部転送先表２０１３に対応する機能モジュール２０１、２０２に記憶させる（Ｓ１０５）。次に、作成した経路表１２１３を、すべての経路検索部１２１、１２２に記憶させる（Ｓ１０６）。
【００６７】
以上のように、モジュール制御管理部１４０は、内部転送先表２０１３及び経路表１２１３を更新する。
【００６８】
なお、ステップＳ１０３とステップＳ１０４は、順番が入れ替わってもよい。同様に、ステップＳ１０５とステップＳ１０６も、順番が入れ替わってもよい。
【００６９】
図７は、本発明の第１の実施の形態のネットワークインタフェース１１１のパケット転送処理のフローチャートである。
【００７０】
まず、ネットワークインタフェース１１１は、外部ノード３０１からパケットを受信する（Ｓ１１１）。
【００７１】
次に、受信したパケットの全部又は一部を経路検索部１２１に送信する。なお、パケットの一部には、パケットの経路を判定する部分（例えば、ヘッダ部）が含まれていなければならない。
【００７２】
すると、経路検索部１２１は、受信したパケットがフロー条件１２１３１に該当するエントリを経路表１２１３から検索する。次に、経路検索部１２１は、検索したエントリから、フロー識別子１２１３２及び次転送先１２１３３を抽出する。そして、経路検索部１２１は、抽出したフロー識別子１２１３２及び次転送先１２１３３をネットワークインタフェース１１１に送信する。
【００７３】
ネットワークインタフェース１１１は、フロー識別子１２１３２及び次転送先１２１３３を受信する（Ｓ１１２）。
【００７４】
次に、受信したフロー識別子１２１３２及び次転送先１２１３３を内部ヘッダ部として、外部ノード３０１から受信したパケットの先頭に付加する。そして、内部ヘッダ部を付加したパケットをスイッチ１５０に送信する（Ｓ１１３）。
【００７５】
図８は、本発明の第１の実施の形態の機能モジュール２０１のパケット処理のフローチャートである。
【００７６】
まず、機能モジュール２０１は、機能モジュールインタフェース１３１からパケットを受信する（Ｓ１２１）。次に、機能処理プログラム２０１４を実行することによって、受信したパケットに所定の処理を行う（Ｓ１２２）。
【００７７】
次に、受信したパケットに付加されているフロー識別子を抽出する。次に、抽出したフロー識別子と内部転送先表２０１３のフロー識別子２０１３１とが一致するエントリを内部転送先表２０１３から選択する。次に、選択したエントリの次転送先２０１３２を抽出する（Ｓ１２３）。
【００７８】
次に、受信したパケットに付加されている次転送先を、抽出した次転送先２０１３２に付け替える。そして、当該パケットを、機能モジュールインタフェース１３１を介してスイッチ１５０に送信する（Ｓ１２４）。
【００７９】
図９は、本発明の第１の実施の形態のパケット通信装置１００のパケット転送処理の説明図である。
【００８０】
まず、ネットワークインタフェース１１１は、外部ノード３０１からパケットを受信する。ここでは、受信したパケットのプロトコル番号が「８０」である場合で説明する。
【００８１】
次に、ネットワークインタフェース１１１は、受信したパケットのヘッダ部を経路検索部１２１に送信する。すると、経路検索部１２１は、受信したヘッダ部が経路表１２１３のフロー条件１２１３１に該当するエントリを経路表１２１３から検索する。
【００８２】
次に、経路検索部１２１は、検索したエントリから、フロー識別子１２１３２及び次転送先１２１３３を抽出する。そして、経路検索部１２１は、抽出したフロー識別子１２１３２及び次転送先１２１３３をネットワークインタフェース１１１に送信する。
【００８３】
具体的には、経路検索部１２１は、当該パケットのプロトコル番号が「８０」なので、エントリＥ１２１を経路表１２１３から検索する。そして、エントリＥ１２１から、フロー識別子１２１３２の「１」及び次転送先１２１３３の「機能モジュール２０１」を抽出し、ネットワークインタフェース１１１に送信する。
【００８４】
すると、ネットワークインタフェース１１１は、受信したフロー識別子１２１３２及び次転送先１２１３３を当該パケットに付加して、スイッチ１５０に送信する。
【００８５】
スイッチ１５０は、受信したパケットから、次転送先１２１３３を抽出する。そして、スイッチ１５０は、抽出した次転送先１２１３３に対応する装置のインタフェースへ、受信したパケットを転送する。
【００８６】
具体的には、スイッチ１５０は、受信したパケットから、次転送先１２１３３の「機能モジュール２０１」を抽出する。そして、スイッチ１５０は、抽出した次転送先１２１３３の「機能モジュール２０１」が接続されている機能モジュールインタフェース１３１へ、受信したパケットを転送する。
【００８７】
機能モジュールインタフェース１３１は、スイッチ１５０から受信したパケットを、自身が接続されている機能モジュール２０１へ転送する。
【００８８】
すると、機能モジュール２０１は、機能モジュールインタフェース１３１からパケットを受信する。次に、機能モジュール２０１は、機能処理プログラム２０１４を実行することによって、受信したパケットに所定の処理を行う。
【００８９】
次に、機能モジュール２０１は、受信したパケットに付加されているフロー識別子１２１３２を抽出する。次に、機能モジュール２０１は、抽出したフロー識別子１２１３２と内部転送先表２０１３のフロー識別子２０１３１とが一致するエントリを、自身の内部転送先表２０１３から検索する。次に、機能モジュール２０１は、検索したエントリから、次転送先２０１３２を抽出する。そして、機能モジュール２０１は、受信したパケットに付加されている次転送先１２１３３を、抽出した次転送先２０１３２に付け替える。
【００９０】
具体的には、機能モジュール２０１は、受信したパケットに付加されているフロー識別子１２１３２の「１」を抽出する。次に、機能モジュール２０１は、抽出したフロー識別子１２１３２の「１」とフロー識別子２０１３１とが一致するエントリＥ１３１を内部転送先表２０１３から検索する。次に、機能モジュール２０１は、検索したエントリＥ１３１から、次転送先２０１３２の「機能モジュール２０２」を抽出する。
【００９１】
機能モジュール２０１は、受信したパケットに付加されている次転送先１２１３３の「機能モジュール２０１」を、抽出した次転送先２０１３２の「機能モジュール２０２」に付け替える。
【００９２】
そして、機能モジュール２０１は、自身が接続されている機能モジュールインタフェース１３１へ当該パケットを送信する。
【００９３】
すると、機能モジュールインタフェース１３１は、受信したパケットをスイッチ１５０へ転送する。
【００９４】
スイッチ１５０は、前述したネットワークインタフェース１１１からパケットを受信した際の処理と同様に、パケットを転送する。
【００９５】
具体的には、スイッチ１５０は、受信したパケットから、次転送先２０１３２の「機能モジュール２０２」を抽出する。そして、スイッチ１５０は、抽出した次転送先２０１３２の「機能モジュール２０２」が接続されている機能モジュールインタフェース１３２へ、受信したパケットを転送する。
【００９６】
機能モジュールインタフェース１３２は、スイッチ１５０から受信したパケットを、自身が接続されている機能モジュール２０２へ転送する。
【００９７】
機能モジュール２０２は、前述した機能モジュール２０１が行った処理と同様に、パケットを処理する。
【００９８】
具体的には、機能モジュール２０２は、機能処理プログラム２０１４を実行することによって、受信したパケットに所定の処理を行う。次に、機能モジュール２０２は、受信したパケットに付加されているフロー識別子１２１３２の「１」を抽出する。
【００９９】
次に、機能モジュール２０２は、抽出したフロー識別子１２１３２の「１」とフロー識別子２０１３１とが一致するエントリＥ１４１を内部転送先表２０１３から検索する。次に、機能モジュール２０２は、検索したエントリＥ１４１から、次転送先２０１３２の「ネットワークインタフェース１１２」を抽出する。
【０１００】
そして、機能モジュール２０２は、受信したパケットに付加されている次転送先の「機能モジュール２０２」を、抽出した次転送先２０１３２の「ネットワークインタフェース１１２」に付け替える。
【０１０１】
そして、機能モジュール２０２は、自身が接続されている機能モジュールインタフェース１３２へ当該パケットを送信する。
【０１０２】
すると、機能モジュールインタフェース１３２は、受信したパケットをスイッチ１５０へ転送する。
【０１０３】
スイッチ１５０は、前述したネットワークインタフェース１１１からパケットを受信した際の処理と同様に、パケットを転送する。
【０１０４】
具体的には、スイッチ１５０は、受信したパケットから、次転送先２０１３２の「ネットワークインタフェース１１２」を抽出する。そして、スイッチ１５０は、抽出した次転送先２０１３２の「ネットワークインタフェース１１２」へ、受信したパケットを転送する。
【０１０５】
すると、ネットワークインタフェース１１２は、スイッチ１５０からパケットを受信する。次に、ネットワークインタフェース１１２は、受信したパケットから、フロー識別子１２１３２及び次転送先２０１３２を取り除く。
【０１０６】
そして、ネットワークインタフェース１１２は、これらを取り除いたパケットを、自身が接続されている外部ノード３０２に送信する。
【０１０７】
以上のように、パケット通信装置１００は、パケットを転送する。
【０１０８】
本実施の形態のパケット通信装置１００は、フロー識別子及び次転送先の二つの情報のみをパケットに付加する。つまり、パケット通信装置１００は、パケットに付加する内部ヘッダ部のデータ量を最小限にする。これによって、パケット通信装置１００は、内部のトラフィック量が減少するので、スループットを向上できる。
【０１０９】
また、本実施の形態のパケット通信装置１００は、固定長の内部ヘッダ部をパケットに付加する。これによって、機能モジュールがパケットに付加された内部ヘッダ部を取り除く処理が容易になる。
【０１１０】
また、本実施の形態のパケット通信装置１００は、固定長の内部ヘッダ部に関する情報を保持するので、メモリを効率的に利用できる。
【０１１１】
（第２の実施の形態）
本発明の第２の実施の形態は、機能モジュールインタフェース１３１、１３２が転送先を判定する。
【０１１２】
図１０は、本発明の第２の実施の形態のパケット通信装置１００のブロック図である。
【０１１３】
第２の実施の形態のパケット通信装置１００は、以下の二つの点を除き、第１の実施の形態のパケット通信装置（図１）と同一の構成である。なお、同一の構成には同一の番号を付し、説明を省略する。
【０１１４】
一つ目の差異点は、機能モジュールインタフェース１３１、１３２に含まれる構成である。本実施の形態の機能モジュールインタフェース１３１、１３２は、プロセッサ１３１１及び記憶装置１３１２を備える。
【０１１５】
プロセッサ１３１１は、記憶装置１３１２に記憶されたプログラムを実行することによって、各種処理を行う。
【０１１６】
記憶装置１３１２には、内部転送先表２０１３（図４）及び内部転送先検索プログラム２０１５が記憶されている。
【０１１７】
なお、内部転送先表２０１３及び内部転送先検索プログラム２０１５は、第１の実施の形態の機能モジュール２０１、２０２内の記憶措置２０１２に記憶されているものと同一である。よって、本実施の形態の機能モジュール２０１、２０２内の記憶装置２０１２には、内部転送先表２０１３及び内部転送先検索プログラム２０１５が記憶されていない。
【０１１８】
二つ目の差異点は、モジュール制御管理部１４０の接続である。本実施の形態では、モジュール制御管理部１４０は、機能モジュール２０１、２０２と接続されずに、機能モジュールインタフェース１３１、１３２と接続される。
【０１１９】
よって、モジュール制御管理部１４０は、経路処理（図６）のステップＳ１０５において、機能モジュール２０１、２０２ではなく、機能モジュールインタフェース１３１、１３２に内部転送先表２０１３を記憶させる。モジュール制御管理部１４０のそれ以外の処理は、同一なので、説明は省略する。
【０１２０】
図１１は、本発明の第２の実施の形態の機能モジュール２０１からパケットを受信した機能モジュールインタフェース１３１のパケット転送処理のフローチャートである。
【０１２１】
まず、機能モジュールインタフェース１３１は、機能モジュール２０１からパケットを受信する（Ｓ１３１）。
【０１２２】
次に、受信したパケットに付加されているフロー識別子を抽出する。次に、抽出したフロー識別子と内部転送先表２０１３のフロー識別子２０１３１とが一致するエントリを内部転送先表２０１３から選択する。次に、選択したエントリの次転送先２０１３２を抽出する（Ｓ１３２）。
【０１２３】
次に、受信したパケットに付加されている次転送先を、抽出した次転送先２０１３２に付け替える。そして、当該パケットを、スイッチ１５０に送信する（Ｓ１３３）。
【０１２４】
図１２は、本発明の第２の実施の形態のパケット通信装置１００のパケット転送処理の説明図である。
【０１２５】
本実施の形態のパケット通信装置１００のパケット転送処理は、次転送先を判定する処理を機能モジュールインタフェース１３１、１３２が行う点を除き、第１の実施の形態のパケット転送処理（図９）と同一である。よって、同一の処理の説明は省略し、差異点だけを説明する。
【０１２６】
機能モジュール２０１がパケットに所定の処理を行うまでは、第１の実施の形態のパケット転送処理（図９）と同一である。
【０１２７】
機能モジュール２０１は、受信したパケットに所定の処理をすると、該パケットを機能モジュールインタフェース１３１に送信する。
【０１２８】
機能モジュールインタフェース１３１は、機能モジュール２０１からパケットを受信する。機能モジュールインタフェース１３１は、受信したパケットに付加されているフロー識別子１２１３２を抽出する。
【０１２９】
次に、機能モジュールインタフェース１３１は、抽出したフロー識別子１２１３２と内部転送先表２０１３のフロー識別子２０１３１とが一致するエントリを、自身の内部転送先表２０１３から検索する。次に、機能モジュールインタフェース１３１は、検索したエントリから、次転送先２０１３２を抽出する。
【０１３０】
そして、機能モジュールインタフェース１３１は、受信したパケットに付加されている次転送先１２１３３を、抽出した次転送先２０１３２に付け替える。
【０１３１】
そして、機能モジュールインタフェース１３１は、当該パケットをスイッチ１５０に送信する。
【０１３２】
その後から機能モジュール２０２がパケットに所定の処理を行うまでは、第１の実施の形態のパケット転送処理（図９）と同一である。
【０１３３】
機能モジュール２０２は、受信したパケットに所定の処理をすると、該パケットを機能モジュールインタフェース１３２に送信する。
【０１３４】
機能モジュールインタフェース１３２は、機能モジュール２０２からパケットを受信する。機能モジュールインタフェース１３２は、受信したパケットに付加されているフロー識別子１２１３２を抽出する。
【０１３５】
次に、機能モジュールインタフェース１３２は、抽出したフロー識別子１２１３２とフロー識別子２０１３１とが一致するエントリを内部転送先表２０１３から検索する。次に、機能モジュールインタフェース１３２は、検索したエントリから、次転送先２０１３２を抽出する。
【０１３６】
そして、機能モジュールインタフェース１３２は、受信したパケットに付加されている次転送先を、抽出した次転送先２０１３２に付け替える。
【０１３７】
そして、機能モジュールインタフェース１３２は、当該パケットをスイッチ１５０に送信する。
【０１３８】
その後は、第１の実施の形態のパケット転送処理（図９）と同一である。
【０１３９】
第２の実施の形態では、機能モジュールインタフェース１３１、１３２が内部転送先表２０１３及び内部転送先検索プログラム２０１５を備える。つまり、機能モジュール２０１、２０２は、これらを備える必要がない。よって、機能モジュール２０１、２０２は、処理を軽減できる。更に、機能モジュール２０１、２０２を低コストで作成できる。
【０１４０】
（第３の実施の形態）
本発明の第３の実施の形態は、パケット通信装置１００の内部におけるパケットにカウンタ値を付加する。これによって、同一の機能モジュール２０１、２０２に複数回のパケット転送が可能となる。
【０１４１】
本発明の第３の実施の形態は、第１の実施の形態及び第２の実施の形態のどちらのパケット通信装置１００に対しても適用できる。ここでは、第１の実施の形態に適用する。
【０１４２】
第３の実施の形態のパケット通信装置１００の構成は、機能モジュール２０１に記憶されている内部転送先表２０１３の構成を除き、第１の実施の形態のパケット通信装置（図１）と同一である。よって、パケット通信装置１００の構成の説明は省略する。
【０１４３】
以下、図１３に示すフロー定義テーブル１４０４が作成された場合を例として、説明する。
【０１４４】
図１３は、本発明の第３の実施の形態のモジュール制御管理部１４０のフロー定義テーブル１４０４の構成図である。
【０１４５】
第３の実施の形態のフロー定義テーブル１４０４の構成は、第１の実施の形態のフロー定義テーブル（図２）と同一である。同一の構成には同一の番号を付し、説明を省略する。
【０１４６】
例えば、プロトコル番号が「８０」であるパケットは、機能モジュール２０１、機能モジュール２０２、機能モジュール２０１、ネットワークインタフェース１１２の順に転送される（エントリＥ２１１）。
【０１４７】
送信元ＩＰアドレスが「１９２．１６８．１０．０／２４」であるパケットは、機能モジュール２０１、ネットワークインタフェース１１２の順に転送される（エントリＥ２１２）。また、送信先ＩＰアドレスが「１９２．１６８．２０．０／２４」であるパケットは、機能モジュール２０２、ネットワークインタフェース１１２の順に転送される（エントリＥ２１３）。
【０１４８】
図１４は、本発明の第３の実施の形態の機能モジュール２０１の内部転送先表２０１３の構成図である。
【０１４９】
第３の実施の形態の内部転送先表２０１３は、第１の実施の形態の内部転送先表（図４）と同一の構成を含む。同一の構成には同一の番号を付し、説明を省略する。
【０１５０】
第３の実施の形態の内部転送先表２０１３は、更に、カウンタ値２０１３３を含む。
【０１５１】
カウンタ値２０１３３は、パケットが機能モジュール２０１、２０２を通った回数であり、機能モジュール２０１がパケットに付加されているカウンタの値と比較する。
【０１５２】
次に、ハードウェア識別子がＸである機能モジュール２０１、２０２の内部転送先表２０１３をモジュール制御管理部１４０が作成する処理を説明する。
【０１５３】
まず、モジュール制御管理部１４０は、フロー定義テーブル１４０４の転送経路１４０４３からハードウェア識別子Ｘを検索する。次に、検索したハードウェア識別子Ｘの一つから、内部転送先表２０１３の一つのエントリを作成する。
【０１５４】
具体的には、検索したハードウェア識別子Ｘが格納されているエントリのフロー識別子１４０４２をフロー定義テーブル１４０４から抽出する。次に、抽出したフロー識別子１４０４２を内部転送先表２０１３のフロー識別子２０１３１に格納する。
【０１５５】
次に、検索したハードウェア識別子Ｘの直下に格納されているハードウェア識別子を、フロー定義テーブル１４０４の転送経路１４０４３から抽出する。次に、抽出したハードウェア識別子を内部転送先表２０１３の次転送先２０１３２に格納する。
【０１５６】
次に、検索したハードウェア識別子Ｘが格納されているエントリをフロー定義テーブル１４０４から選択する。次に、検索したハードウェア識別子Ｘの上に格納されているハードウェア識別子の数を、選択したエントリ中で数える。そして、数えた値を内部転送先表２０１３のカウンタ値２０１３３に格納する。
【０１５７】
以上の処理を、検索したハードウェア識別子Ｘのすべてに対して繰り返し、内部転送先表２０１３を作成する。
【０１５８】
モジュール制御管理部１４０は、図１３に示すフロー定義テーブル１４０４から、当該構成図に示す機能モジュール２０１の内部転送先表２０１３を作成する。
【０１５９】
具体的には、モジュール制御管理部１４０は、フロー定義テーブル１４０４のエントリＥ２１１から、内部転送先表２０１３のエントリＥ２３１及びエントリＥ２３２を作成する。また、フロー定義テーブル１４０４のエントリＥ２１２から、内部転送先表２０１３のエントリＥ２３３を作成する。
【０１６０】
図１５は、本発明の第３の実施の形態の機能モジュール２０２の内部転送先表２０１３の構成図である。
【０１６１】
機能モジュール２０２の内部転送先表２０１３は、前述した機能モジュール２０１の内部転送先表（図１４）と同一の構成なので、説明は省略する。
【０１６２】
モジュール制御管理部１４０は、図１３に示すフロー定義テーブル１４０４から、当該構成図に示す機能モジュール２０２の内部転送先表２０１３を作成する。
【０１６３】
具体的には、モジュール制御管理部１４０は、フロー定義テーブル１４０４のエントリＥ２１１から、内部転送先表２０１３のエントリＥ２４１を作成する。また、フロー定義テーブルのエントリＥ２１３から、内部転送先表２０１３のエントリＥ２４２を作成する。
【０１６４】
図１６は、本発明の第３の実施の形態の機能モジュール２０１のパケット処理のフローチャートである。
【０１６５】
まず、機能モジュール２０１は、機能モジュールインタフェース１３１からパケットを受信する（Ｓ１４１）。
【０１６６】
次に、機能処理プログラム２０１４を実行することによって、受信したパケットに所定の処理を行う（Ｓ１４２）。
【０１６７】
次に、受信したパケットに付加されているフロー識別子及びカウンタの値を抽出する。次に、抽出したフロー識別子と内部転送先表２０１３のフロー識別子２０１３１とが一致し、且つ、抽出したカウンタ値と内部転送先表２０１３のカウンタ値２０１３３とが一致するエントリを内部転送先表２０１３から選択する。次に、選択したエントリの次転送先２０１３２を抽出する（Ｓ１４３）。
【０１６８】
次に、受信したパケットに付加されているカウンタの値を増加させる（Ｓ１４４）。
【０１６９】
次に、受信したパケットに付加されている次転送先を、抽出した次転送先２０１３２に付け替える。そして、当該パケットを、機能モジュールインタフェース１３１を介してスイッチ１５０に送信する（Ｓ１４５）。
【０１７０】
図１７は、本発明の第３の実施の形態のパケット通信装置１００のパケット転送処理の説明図である。
【０１７１】
まず、ネットワークインタフェース１１１は、外部ノード３０１からパケットを受信する。ここでは、受信したパケットのプロトコル番号が「８０」である場合で説明する。
【０１７２】
次に、ネットワークインタフェース１１１は、受信したパケットのヘッダ部を経路検索部１２１に送信する。すると、経路検索部１２１は、受信したヘッダ部が経路表１２１３のフロー条件１２１３１に該当するエントリを経路表１２１３（図３）から検索する。
【０１７３】
次に、経路検索部１２１は、検索したエントリから、フロー識別子１２１３２及び次転送先１２１３３を抽出する。そして、経路検索部１２１は、抽出したフロー識別子１２１３２及び次転送先１２１３３をネットワークインタフェース１１１に送信する。
【０１７４】
具体的には、経路検索部１２１は、当該パケットのプロトコル番号が「８０」なので、エントリＥ１２１を経路表１２１３から検索する。そして、エントリＥ１２１からフロー識別子１２１３２の「１」及び次転送先１２１３３の「機能モジュール２０１」を抽出し、ネットワークインタフェース１１１に送信する。
【０１７５】
すると、ネットワークインタフェース１１１は、受信したフロー識別子１２１３２及び次転送先１２１３３を当該パケットに付加する。ネットワークインタフェース１１１は、更に、初期値された（例えば、値が「０」）カウンタ１１１０を当該パケットに付加する。そして、ネットワークインタフェース１１１は、これらを付加したパケットをスイッチ１５０に送信する。
【０１７６】
スイッチ１５０は、受信したパケットから、次転送先１２１３３を抽出する。そして、スイッチ１５０は、抽出した次転送先１２１３３に対応する装置のインタフェースへ、受信したパケットを転送する。
【０１７７】
具体的には、スイッチ１５０は、受信したパケットから、次転送先１２１３３の「機能モジュール２０１」を抽出する。そして、スイッチ１５０は、抽出した次転送先１２１３３の「機能モジュール２０１」が接続されている機能モジュールインタフェース１３１へ、受信したパケットを転送する。
【０１７８】
機能モジュールインタフェース１３１は、スイッチ１５０から受信したパケットを、自身が接続されている機能モジュール２０１へ転送する。
【０１７９】
すると、機能モジュール２０１は、機能モジュールインタフェース１３１からパケットを受信する。次に、機能モジュール２０１は、機能処理プログラム２０１４を実行することによって、受信したパケットに所定の処理を行う。
【０１８０】
次に、機能モジュール２０１は、受信したパケットに付加されているフロー識別子１２１３２及びカウンタ１１１０の値を抽出する。次に、機能モジュール２０１は、抽出したフロー識別子１２１３２と内部転送先表２０１３のフロー識別子２０１３１とが一致し、且つ、抽出したカウンタ１１１０の値と内部転送先表２０１３のカウンタ値２０１３３とが一致するエントリを、自身の内部転送先表２０１３から検索する。
【０１８１】
次に、機能モジュール２０１は、検索したエントリから、次転送先２０１３２を抽出する。次に、機能モジュール２０１は、受信したパケットに付加されている次転送先１２１３３を、抽出した次転送先２０１３２に付け替える。そして、機能モジュール２０１は、受信したパケットに付加されているカウンタ１１１０の値を増加させる。
【０１８２】
具体的には、機能モジュール２０１は、受信したパケットに付加されているフロー識別子１２１３２の「１」及びカウンタ１１１０の値の「０」を抽出する。
【０１８３】
次に、機能モジュール２０１は、抽出したフロー識別子１２１３２の「１」と内部転送先表２０１３のフロー識別子２０１３１とが一致し、且つ抽出したカウンタ１１１０の値の「０」と内部転送先表２０１３のカウンタ値２０１３３とが一致するエントリＥ２３１を、自身の内部転送先表２０１３から検索する。
【０１８４】
次に、機能モジュール２０１は、検索したエントリＥ２３１の次転送先２０１３２の「機能モジュール２０２」を抽出する。
【０１８５】
次に、機能モジュール２０１は、受信したパケットに付加されている次転送先１２１３３の「機能モジュール２０１」を、抽出した次転送先２０１３２の「機能モジュール２０２」に付け替える。次に、機能モジュール２０１は、受信したパケットに付加されているカウンタ１１１０の値の「０」を増加させて、「１」にする。
【０１８６】
そして、機能モジュール２０１は、自身が接続されている機能モジュールインタフェース１３１へ当該パケットを送信する。
【０１８７】
すると、機能モジュールインタフェース１３１は、受信したパケットをスイッチ１５０へ転送する。
【０１８８】
スイッチ１５０は、前述したネットワークインタフェース１１１からパケットを受信した際の処理と同様に、パケットを転送する。
【０１８９】
具体的には、スイッチ１５０は、受信したパケットから、次転送先２０１３２の「機能モジュール２０２」を抽出する。そして、スイッチ１５０は、抽出した次転送先２０１３２の「機能モジュール２０２」が接続されている機能モジュールインタフェース１３２へ、受信したパケットを転送する。
【０１９０】
機能モジュールインタフェース１３２は、スイッチ１５０から受信したパケットを、自身が接続されている機能モジュール２０２へ転送する。
【０１９１】
機能モジュール２０２は、前述した機能モジュール２０１が行った処理と同様に、パケットを処理する。
【０１９２】
具体的には、機能モジュール２０２は、機能処理プログラム２０１４を実行することによって、受信したパケットに所定の処理を行う。
【０１９３】
次に、機能モジュール２０２は、受信したパケットに付加されているフロー識別子１２１３２の「１」及びカウンタ１１１０の値の「１」を抽出する。
【０１９４】
次に、機能モジュール２０２は、抽出したフロー識別子１２１３２の「１」と内部転送先表２０１３のフロー識別子２０１３１とが一致し、且つ、抽出したカウンタ１１１０の値の「１」と内部転送先表２０１３のカウンタ値２０１３３とが一致するエントリＥ２４１を、自身の内部転送先表２０１３から検索する。
【０１９５】
次に、機能モジュール２０２は、検索したエントリＥ２４１の次転送先２０１３２の「機能モジュール２０１」を抽出する。
【０１９６】
次に、機能モジュール２０２は、受信したパケットに付加されている次転送先の「機能モジュール２０２」を、抽出した次転送先２０１３２の「機能モジュール２０１」に付け替える。次に、機能モジュール２０２は、受信したパケットに付加されているカウンタ１１１０の値の「１」を増加させて、「２」にする。
【０１９７】
そして、機能モジュール２０２は、自身が接続されている機能モジュールインタフェース１３２へ当該パケットを送信する。
【０１９８】
すると、機能モジュールインタフェース１３２は、受信したパケットをスイッチ１５０へ転送する。
【０１９９】
スイッチ１５０は、前述したネットワークインタフェース１１１からパケットを受信した際の処理と同様に、パケットを転送する。
【０２００】
具体的には、スイッチ１５０は、受信したパケットから、次転送先２０１３２の「機能モジュール２０１」を抽出する。そして、スイッチ１５０は、抽出した次転送先２０１３２の「機能モジュール２０１」が接続されている機能モジュールインタフェース１３１へ、受信したパケットを転送する。
【０２０１】
機能モジュールインタフェース１３１は、スイッチ１５０から受信したパケットを、自身が接続されている機能モジュール２０１へ転送する。
【０２０２】
すると、機能モジュール２０１は、先ほどと同様に、パケットを処理する。
【０２０３】
具体的には、機能モジュール２０１は、機能処理プログラム２０１４を実行することによって、受信したパケットに所定の処理をする。
【０２０４】
次に、機能モジュール２０１は、受信したパケットに付加されているフロー識別子１２１３２の「１」及びカウンタ１１１０の値の「２」を抽出する。
【０２０５】
次に、機能モジュール２０１は、抽出したフロー識別子１２１３２の「１」と内部転送先表２０１３のフロー識別子２０１３１とが一致し、且つ、抽出したカウンタ１１１０の値の「２」と内部転送先表２０１３のカウンタ値２０１３３とが一致するエントリＥ２３２を、自身の内部転送先表２０１３から検索する。
【０２０６】
次に、機能モジュール２０１は、検索したエントリＥ２３２の次転送先２０１３２の「ネットワークインタフェース１１２」を抽出する。
【０２０７】
次に、機能モジュール２０１は、受信したパケットに付加されている次転送先の「機能モジュール２０１」を、抽出した次転送先２０１３２の「ネットワークインタフェース１１２」に付け替える。次に、機能モジュール２０１は、受信したパケットに付加されているカウンタ１１１０の値の「２」を増加させて、「３」にする。
【０２０８】
そして、機能モジュール２０１は、自身が接続されている機能モジュールインタフェース１３１へ当該パケットを送信する。
【０２０９】
すると、機能モジュールインタフェース１３１は、受信したパケットをスイッチ１５０へ転送する。
【０２１０】
スイッチ１５０は、前述したネットワークインタフェース１１１からパケットを受信した際の処理と同様に、パケットを転送する。
【０２１１】
具体的には、スイッチ１５０は、受信したパケットから、次転送先２０１３２の「ネットワークインタフェース１１２」を抽出する。そして、スイッチ１５０は、抽出した次転送先２０１３２の「ネットワークインタフェース１１２」へ、受信したパケットを転送する。
【０２１２】
すると、ネットワークインタフェース１１２は、スイッチ１５０からパケットを受信する。次に、ネットワークインタフェース１１２は、受信したパケットから、フロー識別子１２１３２及び次転送先２０１３２を取り除く。
【０２１３】
そして、ネットワークインタフェース１１２は、これらを取り除いたパケットを、自身が接続されている外部ノード３０２に送信する。
【０２１４】
（第４の実施の形態）
本発明の第４の実施の形態では、パケット通信装置１００の内部におけるパケットは、転送される回数及び転送される装置のハードウェア識別子を含む。
【０２１５】
図１８は、本発明の第４の実施の形態のパケット通信装置１００のブロック図である。
【０２１６】
パケット通信装置１００は、ネットワークインタフェース１１１、１１２、経路検索部１２１、１２２、機能モジュールインタフェース１３１、１３２、機能モジュール２０１、２０２及びスイッチ１５０を備える。
【０２１７】
ネットワークインタフェース１１１、１１２、機能モジュール２０１、２０２及びスイッチ１５０は、第２の実施の形態のパケット通信装置（図１０）の構成と同一である。よって、同一の構成には同一の番号を付し、説明を省略する。
【０２１８】
経路検索部１２１、１２２は、プロセッサ１２１１及び記憶装置１２１２を備える。
【０２１９】
プロセッサ１２１１は、記憶装置１２１２に記憶されたプログラムを実行することによって、各種処理を行う。記憶装置１２１２には、経路表１２１５及び経路検索プログラム１２１４が記憶されている。
【０２２０】
経路表１２１５は、図１９で後述するが、ネットワークインタフェース１１１及び１１２が受信したパケットの転送経路を示す。経路検索プログラム１２１４は、ネットワークインタフェース１１１及び１１２が受信したパケットの転送経路を経路表１２１５から検索する。
【０２２１】
機能モジュールインタフェース１３１、１３２は、プロセッサ１３１１及び記憶装置１３１２を備える。
【０２２２】
プロセッサ１３１１は、記憶装置１３１２に記憶されたプログラムを実行することによって、各種処理を行う。記憶装置１３１２には、転送プログラム１３１３が記憶されている。
【０２２３】
転送プログラム１３１３は、機能モジュール２０１、２０２又はスイッチ１５０から受信したパケットを処理して転送する。
【０２２４】
図１９は、本発明の第４の実施の形態の経路検索部１２１、１２２の経路表１２１５の構成図である。
【０２２５】
経路表１２１５は、フロー条件１２１５１及び転送経路１２１５２を含む。
【０２２６】
フロー条件１２１５１は、ネットワークインタフェース１１１、１１２が受信したパケットの転送経路を判定する条件である。
【０２２７】
転送経路１２１５２は、当該パケットを転送する経路である。転送経路１２１５２には、パケットが転送される装置のハードウェア識別子が、転送される順に上から格納される。
【０２２８】
例えば、プロトコル番号が「８０」であるパケットは、機能モジュール２０１、機能モジュール２０２、ネットワークインタフェース１１２の順に転送される（エントリＥ３１１）。また、送信元ＩＰアドレスが「１９２．１６８．１０．０／２４」であるパケットは、機能モジュール２０１、ネットワークインタフェース１１２の順に転送される（エントリＥ３１２）。また、送信先ＩＰアドレスが「１９２．１６８．２０．０／２４」であるパケットは、機能モジュール２０２、ネットワークインタフェース１１２の順に転送される（エントリＥ３１３）。
【０２２９】
図２０は、本発明の第４の実施の形態のネットワークインタフェース１１１のパケット転送処理のフローチャートである。
【０２３０】
まず、ネットワークインタフェース１１１は、外部ノード３０１からパケットを受信する（Ｓ１５１）。
【０２３１】
次に、受信したパケットの全部又は一部を経路検索部１２１に送信する。なお、パケットの一部には、パケットの経路を判定する部分（例えば、ヘッダ部）が含まれていなければならない。
【０２３２】
すると、経路検索部１２１は、受信したパケットがフロー条件１２１５１に該当するエントリを経路表１２１５から検索する。次に、経路検索部１２１は、検索したエントリから、転送経路１２１５２を抽出する。なお、転送経路１２１５２にハードウェア識別子が複数含まれている場合には、転送経路１２１５２に含まれるすべてのハードウェア識別子を抽出する。
【０２３３】
そして、経路検索部１２１は、抽出した転送経路１２１５２をネットワークインタフェース１１１に送信する。
【０２３４】
ネットワークインタフェース１１１は、転送経路１２１５２を受信する（Ｓ１５２）。
【０２３５】
次に、受信した転送経路１２１５２に含まれるハードウェア識別子の数を数える。次に、受信した転送経路１２１５２を、外部ノード３０１から受信したパケットの先頭に付加する。更に、数えたハードウェア識別子の数をスタック数カウンタとして、当該パケットに付加する。なお、スタック数カウンタは、パケットに付加されているハードウェア識別子の数を示す。
【０２３６】
これによって、外部ノード３０１から受信したパケットは、後述する図２１のようになる。
【０２３７】
そして、これらを付加したパケットをスイッチ１５０に送信する（Ｓ１５３）。
【０２３８】
図２１は、本発明の第４の実施の形態のパケット通信装置１００の内部におけるパケットの説明図である。
【０２３９】
パケット通信装置１００の内部におけるパケットは、外部ノード３０１から受信したパケット５０１に、内部ヘッダ部５０２が付加されている。
【０２４０】
内部ヘッダ部５０２は、スタック数カウンタ５０３及びハードウェア識別子５０４を含む。
【０２４１】
ハードウェア識別子５０４は、当該パケットを転送する装置を一意に識別する識別子である。当該パケットは、転送される装置が複数ある場合には、転送されるすべての装置のハードウェア識別子５０４を含む。
【０２４２】
スタック数カウンタ５０３は、当該パケットに付加されているハードウェア識別子５０４の数を示す。
【０２４３】
図２２は、本発明の第４の実施の形態の機能モジュール２０１からパケットを受信した機能モジュールインタフェース１３１のパケット転送処理のフローチャートである。
【０２４４】
まず、機能モジュールインタフェース１３１は、機能モジュール２０１からパケットを受信する（Ｓ１６１）。
【０２４５】
次に、受信したパケットの先頭に付加されているハードウェア識別子を削除する（Ｓ１６２）。
【０２４６】
次に、受信したパケットに付加されているスタック数カウンタの値を減少させる（Ｓ１６３）。
【０２４７】
そして、当該パケットをスイッチ１５０に送信する（Ｓ１６４）。
【０２４８】
図２３は、本発明の第４の実施の形態のパケット通信装置１００のパケット転送処理の説明図である。
【０２４９】
まず、ネットワークインタフェース１１１は、外部ノード３０１からパケットを受信する。ここでは、受信したパケットのプロトコル番号が「８０」である場合で説明する。
【０２５０】
次に、ネットワークインタフェース１１１は、受信したパケットのヘッダ部を経路検索部１２１に送信する。
【０２５１】
すると、経路検索部１２１は、受信したヘッダ部が経路表１２１５のフロー条件１２１５１に該当するエントリを経路表１２１５から検索する。
【０２５２】
次に、経路検索部１２１は、検索したエントリから、転送経路１２１５２を抽出する。そして、経路検索部１２１は、抽出した転送経路１２１５２をネットワークインタフェース１１１に送信する。
【０２５３】
具体的には、経路検索部１２１は、当該パケットのプロトコル番号が「８０」なので、エントリＥ３１１を経路表１２１５から検索する。次に、経路検索部１２１は、エントリＥ３１１から、転送経路１２１５２の「機能モジュール２０１」、「機能モジュール２０２」及び「ネットワークインタフェース１１２」を抽出し、ネットワークインタフェース１１１に送信する。
【０２５４】
すると、ネットワークインタフェース１１１は、受信した転送経路１２１５２に含まれるハードウェア識別子の数を数える。
【０２５５】
次に、ネットワークインタフェース１１１は、受信した転送経路１２１５２を、当該パケットに付加する。更に、ネットワークインタフェース１１１は、数えたハードウェア識別子の数をスタック数カウンタ５０３として、当該パケットに付加する。
【０２５６】
具体的には、ネットワークインタフェース１１１は、転送経路１２１５２の「機能モジュール２０１」、「機能モジュール２０２」及び「ネットワークインタフェース１１２」をハードウェア識別子５０４として、パケットに付加する。
【０２５７】
ここでは、パケットに付加した「機能モジュール２０１」を、ハードウェア識別子５０４Ａとする。同様に、「機能モジュール２０２」を、ハードウェア識別子５０４Ｂとする。また、「ネットワークインタフェース１１２」を、ハードウェア識別子５０４Ｃとする。
【０２５８】
更に、ネットワークインタフェース１１１は、転送経路１２１５２に含まれるハードウェア識別子の数の「３」をスタック数カウンタ５０３として、パケットに付加する。
【０２５９】
そして、ネットワークインタフェース１１１は、当該パケットをスイッチ１５０に送信する。
【０２６０】
スイッチ１５０は、受信したパケットから、該パケットの先頭に付加されているハードウェア識別子５０４を抽出する。そして、スイッチ１５０は、抽出した先頭のハードウェア識別子５０４に対応する装置のインタフェースへ、受信したパケットを転送する。
【０２６１】
具体的には、スイッチ１５０は、受信したパケットから、先頭に付加されているハードウェア識別子５０４Ａの「機能モジュール２０１」を抽出する。そして、スイッチ１５０は、抽出したハードウェア識別子５０４Ａの「機能モジュール２０１」が接続されている機能モジュールインタフェース１３１へ、受信したパケットを転送する。
【０２６２】
機能モジュールインタフェース１３１は、スイッチ１５０から受信したパケットを、自身が接続されている機能モジュール２０１へ転送する。
【０２６３】
すると、機能モジュール２０１は、機能モジュールインタフェース１３１からパケットを受信する。次に、機能モジュール２０１は、機能処理プログラム２０１４を実行することによって、受信したパケットに所定の処理を行う。
【０２６４】
そして、機能モジュール２０１は、自身が接続されている機能モジュールインタフェース１３１へ、当該処理したパケットを送信する。
【０２６５】
すると、機能モジュールインタフェース１３１は、受信したパケットから、当該パケットの先頭に付加されているハードウェア識別子５０４を削除する。次に、機能モジュールインタフェース１３１は、当該パケットに付加されているスタック数カウンタ５０３の値を減少させる。
【０２６６】
具体的には、機能モジュールインタフェース１３１は、受信したパケットから、先頭に付加されているハードウェア識別子５０４Ａの「機能モジュール２０１」を削除する。次に、機能モジュールインタフェース１３１は、当該パケットに付加されているスタック数カウンタ５０３の「３」を「２」にする。
【０２６７】
そして、機能モジュールインタフェース１３１は、処理したパケットをスイッチ１５０に送信する。
【０２６８】
スイッチ１５０は、前述したネットワークインタフェース１１１からパケットを受信した際の処理と同様に、パケットを転送する。
【０２６９】
具体的には、スイッチ１５０は、受信したパケットから、先頭に付加されているハードウェア識別子５０４Ｂの「機能モジュール２０２」を抽出する。そして、スイッチ１５０は、抽出したハードウェア識別子５０４Ｂの「機能モジュール２０２」が接続されている機能モジュールインタフェース１３２へ、受信したパケットを転送する。
【０２７０】
機能モジュールインタフェース１３２は、スイッチ１５０から受信したパケットを、自身が接続されている機能モジュール２０２へ転送する。
【０２７１】
すると、機能モジュール２０２は、パケットを受信する。次に、機能モジュール２０２は、機能処理プログラム２０１４を実行することによって、受信したパケットに所定の処理を行う。
【０２７２】
そして、機能モジュール２０２は、自身が接続されている機能モジュールインタフェース１３２へ、当該パケットを送信する。
【０２７３】
すると、機能モジュールインタフェース１３２は、前述した機能モジュールインタフェース１３１の処理と同様に、受信したパケットを処理する。
【０２７４】
具体的には、機能モジュールインタフェース１３２は、受信したパケットから、先頭に付加されているハードウェア識別子５０４Ｂの「機能モジュール２０２」を削除する。次に、機能モジュールインタフェース１３２は、当該パケットに付加されているスタック数カウンタ５０３の「２」を「１」にする。
【０２７５】
そして、機能モジュールインタフェース１３１は、処理したパケットをスイッチ１５０に送信する。
【０２７６】
スイッチ１５０は、前述したネットワークインタフェース１１１からパケットを受信した際の処理と同様に、パケットを転送する。
【０２７７】
具体的には、スイッチ１５０は、受信したパケットから、先頭に付加されているハードウェア識別子５０４Ｃの「ネットワークインタフェース１１２」を抽出する。そして、スイッチ１５０は、抽出したハードウェア識別子５０４Ｃのネットワークインタフェース１１２へ、受信したパケットを転送する。
【０２７８】
すると、ネットワークインタフェース１１２は、スイッチ１５０からパケットを受信する。次に、ネットワークインタフェース１１２は、受信したパケットから、スタック数カウンタ５０３及びハードウェア識別子５０４を取り除く。
【０２７９】
そして、ネットワークインタフェース１１２は、これらを取り除いたパケットを、自身が接続されている外部ノード３０２に送信する。
【０２８０】
（第５の実施の形態）
本発明の第５の実施の形態では、パケット通信装置１００の内部におけるパケットは、転送される装置のハードウェア識別子を含む。
【０２８１】
本発明の第５の実施の形態のパケット通信装置１００は、第４の実施の形態（図１８）と同一なので、説明は省略する。
【０２８２】
図２４は、本発明の第５の実施の形態のパケット通信装置１００の内部におけるパケットの説明図である。
【０２８３】
パケット通信装置１００の内部におけるパケットは、外部ノード３０１から受信したパケット５０１に、内部ヘッダ部５０２が付加されている。
【０２８４】
内部ヘッダ部５０２は、Ｎ個のハードウェア識別子５０４を含む。ハードウェア識別子５０４は、当該パケットを転送する装置を一意に識別する識別子である。なお、内部ヘッダ部５０２に含まれるハードウェア識別子５０４の数（例えば、Ｎ個）は、管理者等によって予め設定される。
【０２８５】
当該パケットは、転送される装置が複数ある場合には、転送されるすべての装置のハードウェア識別子５０４を含む。また、当該パケットは、転送される装置がＮ個以下の場合には、ダミーの識別子が付加されることによって、ハードウェア識別子５０４をＮ個とする。
【０２８６】
なお、当該パケットは、Ｎ個以上のハードウェア識別子５０４を含むことができない。つまり、本実施の形態のパケット転送装置１００では、パケットを転送する機能モジュール２０１、２０２の数は、最大Ｎ個に制限される。
【０２８７】
図２５は、本発明の第５の実施の形態の機能モジュール２０１からパケットを受信した機能モジュールインタフェース１３１のパケット転送処理のフローチャートである。
【０２８８】
まず、機能モジュールインタフェース１３１は、機能モジュール２０１からパケットを受信する（Ｓ１７１）。
【０２８９】
次に、受信したパケットの先頭に付加されているハードウェア識別子を削除する（Ｓ１６２）。次に、受信したパケットの二番目以降に付加されているハードウェア識別子の位置を一つずつ前にずらす（Ｓ１７２）。次に、当該パケットに付加されているハードウェア識別子の最後尾に、ダミーの識別子を付加する。
【０２９０】
そして、当該パケットをスイッチ１５０に送信する（Ｓ１７３）。
【０２９１】
図２６は、本発明の第５の実施の形態のパケット通信装置１００のパケット転送処理の説明図である。
【０２９２】
まず、ネットワークインタフェース１１１は、外部ノード３０１からパケットを受信する。ここでは、受信したパケットのプロトコル番号が「８０」である場合で説明する。
【０２９３】
次に、ネットワークインタフェース１１１は、受信したパケットのヘッダ部を経路検索部１２１に送信する。
【０２９４】
すると、経路検索部１２１は、受信したヘッダ部が経路表１２１５のフロー条件１２１５１に該当するエントリを経路表１２１５（図１９）から検索する。
【０２９５】
次に、経路検索部１２１は、検索したエントリから、転送経路１２１５２を抽出する。そして、経路検索部１２１は、抽出した転送経路１２１５２をネットワークインタフェース１１１に送信する。
【０２９６】
具体的には、経路検索部１２１は、当該パケットのプロトコル番号が「８０」なので、エントリＥ３１１を経路表１２１５から検索する。次に、経路検索部１２１は、エントリＥ３１１から転送経路１２１５２の「機能モジュール２０１」、「機能モジュール２０２」及び「ネットワークインタフェース１１２」を抽出し、ネットワークインタフェース１１１に送信する。
【０２９７】
すると、ネットワークインタフェース１１１は、受信した転送経路１２１５２に含まれるハードウェア識別子の数を数える。次に、ネットワークインタフェース１１１は、パケットに付加するハードウェア識別子５０４の数（例えば、Ｎ＝４）から、数えたハードウェア識別子の数を減算する。これによって、ネットワークインタフェース１１１は、パケットに付加するダミーの識別子の数を求める。
【０２９８】
次に、ネットワークインタフェース１１１は、受信した転送経路１２１５２を、当該パケットに付加する。更に、ネットワークインタフェース１１１は、求めた数のダミー識別子を、当該パケットに付加する。
【０２９９】
具体的には、ネットワークインタフェース１１１は、転送経路１２１５２の「機能モジュール２０１」、「機能モジュール２０２」及び「ネットワークインタフェース１１２」をハードウェア識別子５０４として、パケットに付加する。
【０３００】
ここでは、パケットに付加した「機能モジュール２０１」を、ハードウェア識別子５０４Ａとする。同様に、「機能モジュール２０２」を、ハードウェア識別子５０４Ｂとする。また、「ネットワークインタフェース１１２」は、ハードウェア識別子５０４Ｃとする。
【０３０１】
更に、ネットワークインタフェース１１１は、一つのダミー識別子５０４Ｄをパケットに付加する。
【０３０２】
そして、ネットワークインタフェース１１１は、当該パケットをスイッチ１５０に送信する。
【０３０３】
スイッチ１５０は、受信したパケットから、該パケットの先頭に付加されているハードウェア識別子５０４を抽出する。そして、スイッチ１５０は、抽出した先頭のハードウェア識別子５０４に対応する装置のインタフェースへ、受信したパケットを転送する。
【０３０４】
具体的には、スイッチ１５０は、受信したパケットから、先頭に付加されているハードウェア識別子５０４Ａの「機能モジュール２０１」を抽出する。そして、スイッチ１５０は、抽出したハードウェア識別子５０４Ａの「機能モジュール２０１」が接続されている機能モジュールインタフェース１３１へ、受信したパケットを転送する。
【０３０５】
機能モジュールインタフェース１３１は、スイッチ１５０から受信したパケットを、自身が接続されている機能モジュール２０１へ転送する。
【０３０６】
すると、機能モジュール２０１は、機能モジュールインタフェース１３１からパケットを受信する。次に、機能モジュール２０１は、機能処理プログラム２０１４を実行することによって、受信したパケットに所定の処理を行う。
【０３０７】
そして、機能モジュール２０１は、自身が接続されている機能モジュールインタフェース１３１へ、当該処理したパケットを送信する。
【０３０８】
すると、機能モジュールインタフェース１３１は、受信したパケットから、当該パケットの先頭に付加されているハードウェア識別子５０４を削除する。次に、機能モジュールインタフェース１３１は、受信したパケットの二番目以降に付加されているハードウェア識別子５０４の位置を一つずつ前にずらす。次に、当該パケットに付加されているハードウェア識別子５０４の最後尾に、ダミーの識別子を付加する。
【０３０９】
具体的には、機能モジュールインタフェース１３１は、受信したパケットから、先頭に付加されているハードウェア識別子５０４Ａの「機能モジュール２０１」を削除する。次に、機能モジュールインタフェース１３１は、当該パケットの二番目以降に付加されているハードウェア識別子５０４Ｂ、５０４Ｃ、５０４Ｄの位置を一つずつ前にずらす。次に、当該パケットに付加されているハードウェア識別子５０４の最後尾に、ダミーの識別子５０４Ｄを付加する。
【０３１０】
そして、機能モジュールインタフェース１３１は、処理したパケットをスイッチ１５０に送信する。
【０３１１】
スイッチ１５０は、前述したネットワークインタフェース１１１からパケットを受信した際の処理と同様に、パケットを転送する。
【０３１２】
具体的には、スイッチ１５０は、受信したパケットから、先頭に付加されているハードウェア識別子５０４Ｂの「機能モジュール２０２」を抽出する。そして、スイッチ１５０は、抽出したハードウェア識別子５０４Ｂの「機能モジュール２０２」が接続されている機能モジュールインタフェース１３２へ、受信したパケットを転送する。
【０３１３】
機能モジュールインタフェース１３２は、スイッチ１５０から受信したパケットを、自身が接続されている機能モジュール２０２へ転送する。
【０３１４】
すると、機能モジュール２０２は、パケットを受信する。次に、機能モジュール２０２は、機能処理プログラム２０１４を実行することによって、受信したパケットに所定の処理を行う。
【０３１５】
そして、機能モジュール２０２は、自身が接続されている機能モジュールインタフェース１３２へ、当該パケットを送信する。
【０３１６】
すると、機能モジュールインタフェース１３２は、前述した機能モジュールインタフェース１３１の処理と同様に、受信したパケットを処理する。
【０３１７】
具体的には、機能モジュールインタフェース１３２は、受信したパケットから、先頭に付加されているハードウェア識別子５０４Ｂの「機能モジュール２０２」を削除する。次に、機能モジュールインタフェース１３１は、当該パケットの二番目以降に付加されているハードウェア識別子５０４Ｃ、５０４Ｄ、５０４Ｄの位置を一つずつ前にずらす。次に、当該パケットに付加されているハードウェア識別子５０４の最後尾に、ダミーの識別子５０４Ｄを付加する。
【０３１８】
そして、機能モジュールインタフェース１３１は、処理したパケットをスイッチ１５０に送信する。
【０３１９】
スイッチ１５０は、前述したネットワークインタフェース１１１からパケットを受信した際の処理と同様に、パケットを転送する。
【０３２０】
具体的には、スイッチ１５０は、受信したパケットから、先頭に付加されているハードウェア識別子５０４Ｃの「ネットワークインタフェース１１２」を抽出する。そして、スイッチ１５０は、抽出したハードウェア識別子５０４Ｃの「ネットワークインタフェース１１２」へ、受信したパケットを転送する。
【０３２１】
すると、ネットワークインタフェース１１２は、スイッチ１５０からパケットを受信する。次に、ネットワークインタフェース１１２は、受信したパケットから、ハードウェア識別子５０４を取り除く。
【０３２２】
そして、ネットワークインタフェース１１２は、これらを取り除いたパケットを、自身が接続されている外部ノード３０２に送信する。
【０３２３】
（第６の実施の形態）
本発明の第６の実施の形態では、パケット通信装置１００は、パケットに付加するフロー識別子を付け替える。
【０３２４】
本発明の第６の実施の形態は、第１の実施の形態及び第２の実施の形態のどちらのパケット通信装置１００に対しても適用できる。ここでは、第１の実施の形態に適用する。
【０３２５】
第６の実施の形態のパケット通信装置１００の構成は、機能モジュール２０１に記憶されている内部転送先表２０１３の構成を除き、第１の実施の形態のパケット通信装置（図１）と同一である。よって、パケット通信装置１００の構成の説明は省略する。
【０３２６】
以下、図１３に示すフロー定義テーブル１４０４が作成された場合を例として、説明する。
【０３２７】
図２７は、本発明の第６の実施の形態の機能モジュール２０１の内部転送先表２０１３の構成図である。
【０３２８】
機能モジュール２０１の内部転送先表２０１３は、第１の実施の形態の内部転送先表（図４）と同一の構成を含む。同一の構成には、同一の番号を付し、説明は省略する。内部転送先表２０１３は、更に、転送フロー識別子２０１３４を含む。
【０３２９】
転送フロー識別子２０１３４は、機能モジュール２０１によって処理された後のパケットに付加されたフロー識別子である。つまり、機能モジュール２０１は、パケットを受信すると、当該パケットに付加されているフロー識別子を、転送フロー識別子２０１３４に変更する。
【０３３０】
図２８は、本発明の第６の実施の形態の機能モジュール２０２の内部転送先表２０１３の構成図である。
【０３３１】
機能モジュール２０２の内部転送先表２０１３は、前述した機能モジュール２０１の内部転送先表（図２７）と同一の構成なので、説明は省略する。
【０３３２】
図２９は、本発明の第６の実施の形態のモジュール制御管理部１４０の内部転送先表２０１３の作成処理のフローチャートである。
【０３３３】
この内部転送先表２０１３の作成処理は、モジュール制御管理部１４０の経路処理（図６）のステップＳ１０４で行う。
【０３３４】
まず、モジュール制御管理部１４０は、すべての機能モジュール２０１、２０２に記憶されている内部転送先表２０１３を削除する（Ｓ２０１）。
【０３３５】
次に、フロー定義テーブル１４０４のフロー識別子１４０４２の最大値を特定する。次に、フロー定義テーブル１４０４のフロー識別子１４０４２の最大値に１を加えた値をｍとする（Ｓ２０２）。
【０３３６】
例えば、図１３に示すフロー定義テーブルの場合には、フロー識別子１４０４の最大値１４０４２の「３」に１を加えた「４」をｍとする。
【０３３７】
次に、フロー定義テーブル１４０４の一つのエントリＹを、上から順に選択する（Ｓ２０３）。そして、選択したエントリＹに対して、以下の処理を行う。
【０３３８】
まず、選択したエントリＹのフロー識別子１４０４２の値をｐとする（Ｓ２０４）。
【０３３９】
次に、選択したエントリＹの転送経路１４０４３に格納されている一つのハードウェア識別子を、上から順に選択する（Ｓ２０５）。ここで、エントリＹから選択した一つのハードウェア識別子をＸとする。そして、選択したハードウェア識別子Ｘに対して、以下の処理を行う。
【０３４０】
選択したハードウェア識別子Ｘの直下に格納されているハードウェア識別子を、選択したエントリＹの転送経路１４０４３から抽出する（Ｓ２０６）。
【０３４１】
次に、ハードウェア識別子Ｘの機能モジュール２０１、２０２の内部転送先表２０１３に、新たなエントリを追加する。
【０３４２】
次に、新たなエントリのフロー識別子２０１３１に、ｐを格納する。また、新たなエントリの転送フロー識別子２０１３４に、ｍを格納する。また、新たなエントリの次転送先に、ステップ２０６で抽出したハードウェア識別子を格納する（２０７）。
【０３４３】
次に、ｐをｍの値とする。次に、ｍに１を加算する（Ｓ２０８）。
【０３４４】
次に、選択したエントリＹの転送経路１４０４３に格納されているハードウェア識別子のすべてを選択したか否かを判定する（Ｓ２０９）。
【０３４５】
ハードウェア識別子をすべて選択していないと、当該エントリＹに関する内部転送先表２０１３の作成を完了していないと判定する。よって、ステップＳ２０５に戻り、内部転送先表２０１３の作成処理を繰り返す。
【０３４６】
一方、ハードウェア識別子のすべてを選択していると、当該エントリＹに関する内部転送先表２０１３の作成を完了したと判定する。よって、フロー定義テーブル１４０４のエントリのすべてを選択したか否かを判定する（Ｓ２１０）。
【０３４７】
エントリをすべて選択していないと、内部転送先表２０１３を作成していないエントリが残っていると判定する。よって、ステップＳ２０３に戻り、内部転送先表２０１３の作成処理を繰り返す。
【０３４８】
一方、エントリのすべてを選択していると、当該フロー定義テーブル１４０４に関する内部転送先表２０１３の作成が終了したと判定し、処理を終了する。
【０３４９】
以上のように、モジュール制御管理部１４０は、内部転送先表２０１３を作成する。
【０３５０】
例えば、図１３に示すフロー定義テーブル１４０４から、図２７に示す機能モジュール２０１の内部転送先表２０１３を作成する。具体的には、フロー定義テーブル１４０４のエントリＥ２１１から、内部転送先表２０１３のエントリＥ４３１及びエントリＥ４３２を作成する。また、フロー定義テーブル１４０４のエントリＥ２１２から、内部転送先表のエントリＥ４３３を作成する。
【０３５１】
同様に、図１３に示すフロー定義テーブル１４０４から、図２８に示す機能モジュール２０２の内部転送先表２０１３を作成する。具体的には、フロー定義テーブル１４０４のエントリＥ２１１から、内部転送先表２０１３のＥ４４１を作成する。また、フロー定義テーブル１４０４のエントリＥ２１３から、内部転送先表２０１３のエントリＥ４４２を作成する。
【０３５２】
図３０は、本発明の第６の実施の形態の機能モジュール２０１のパケット処理のフローチャートである。
【０３５３】
まず、機能モジュール２０１は、機能モジュールインタフェース１３１からパケットを受信する（Ｓ２５１）。次に、機能処理プログラム２０１４を実行することによって、受信したパケットに所定の処理を行う（Ｓ２５２）。
【０３５４】
次に、受信したパケットに付加されているフロー識別子を抽出する。次に、抽出したフロー識別子と内部転送先表２０１３のフロー識別子２０１３１とが一致するエントリを内部転送先表２０１３から選択する。
【０３５５】
次に、選択したエントリから、転送フロー識別子２０１３４及び次転送先２０１３２を抽出する（Ｓ２５３）。
【０３５６】
次に、受信したパケットに付加されている次転送先を、抽出した次転送先２０１３２に付け替える。また、受信したパケットに付加されているフロー識別子を、転送フロー識別子２０１３４に付け替える。
【０３５７】
そして、当該パケットを、機能モジュールインタフェース１３１を介してスイッチ１５０に送信する（Ｓ２５４）。
【０３５８】
図３１は、本発明の第６の実施の形態のパケット通信装置１００のパケット転送処理の説明図である。
【０３５９】
まず、ネットワークインタフェース１１１は、外部ノード３０１からパケットを受信する。ここでは、受信したパケットのプロトコル番号が「８０」である場合で説明する。
【０３６０】
次に、ネットワークインタフェース１１１は、受信したパケットのヘッダ部を経路検索部１２１に送信する。すると、経路検索部１２１は、受信したヘッダ部が経路表１２１３（図３）のフロー条件１２１３１に該当するエントリを経路表１２１３から検索する。
【０３６１】
次に、経路検索部１２１は、検索したエントリから、フロー識別子１２１３２及び次転送先１２１３３を抽出する。そして、経路検索部１２１は、抽出したフロー識別子１２１３２及び次転送先１２１３３をネットワークインタフェース１１１に送信する。
【０３６２】
具体的には、経路検索部１２１は、当該パケットのプロトコル番号が「８０」なので、エントリＥ１２１を経路表１２１３から検索する。そして、エントリＥ１２１からフロー識別子１２１３２の「１」及び次転送先１２１３３の「機能モジュール２０１」を抽出し、ネットワークインタフェース１１１に送信する。
【０３６３】
すると、ネットワークインタフェース１１１は、受信したフロー識別子１２１３２及び次転送先１２１３３を当該パケットに付加する。そして、ネットワークインタフェース１１１は、これらを付加したパケットをスイッチ１５０に送信する。
【０３６４】
スイッチ１５０は、受信したパケットから、次転送先１２１３３を抽出する。そして、スイッチ１５０は、抽出した次転送先１２１３３に対応する装置のインタフェースへ、受信したパケットを転送する。
【０３６５】
具体的には、スイッチ１５０は、受信したパケットから、次転送先１２１３３の「機能モジュール２０１」を抽出する。そして、スイッチ１５０は、抽出した次転送先１２１３３の「機能モジュール２０１」が接続されている機能モジュールインタフェース１３１へ、受信したパケットを転送する。
【０３６６】
機能モジュールインタフェース１３１は、スイッチ１５０から受信したパケットを、自身が接続されている機能モジュール２０１へ転送する。
【０３６７】
すると、機能モジュール２０１は、機能モジュールインタフェース１３１からパケットを受信する。次に、機能モジュール２０１は、機能処理プログラム２０１４を実行することによって、受信したパケットに所定の処理を行う。
【０３６８】
次に、機能モジュール２０１は、受信したパケットに付加されているフロー識別子１２１３２を抽出する。次に、機能モジュール２０１は、抽出したフロー識別子１２１３２と内部転送先表２０１３のフロー識別子２０１３１とが一致するエントリを、自身の内部転送先表２０１３から検索する。
【０３６９】
次に、機能モジュール２０１は、検索したエントリから、転送フロー識別子２０１３４及び次転送先２０１３２を抽出する。
【０３７０】
次に、機能モジュール２０１は、受信したパケットに付加されている次転送先１２１３３を、抽出した次転送先２０１３２に付け替える。また、機能モジュール２０１は、受信したパケットに付加されているフロー識別子１２１３２を、抽出した転送フロー識別子２０１３４に付け替える。
【０３７１】
具体的には、機能モジュール２０１は、受信したパケットに付加されているフロー識別子１２１３２の「１」を抽出する。
【０３７２】
次に、機能モジュール２０１は、抽出したフロー識別子１２１３２の「１」と内部転送先表２０１３のフロー識別子２０１３１とが一致するエントリＥ４３１を、自身の内部転送先表２０１３から検索する。
【０３７３】
次に、機能モジュール２０１は、検索したエントリＥ４３１から、転送フロー識別子２０１３４の「４」及び次転送先２０１３２の「機能モジュール２０２」を抽出する。
【０３７４】
次に、機能モジュール２０１は、受信したパケットに付加されている次転送先１２１３３の「機能モジュール２０１」を、抽出した次転送先２０１３２の「機能モジュール２０２」に付け替える。また、機能モジュール２０１は、受信したパケットに付加されているフロー識別子の「１」を、抽出した転送フロー識別子２０１３４の「４」に付け替える。
【０３７５】
そして、機能モジュール２０１は、自身が接続されている機能モジュールインタフェース１３１へ当該パケットを送信する。
【０３７６】
すると、機能モジュールインタフェース１３１は、受信したパケットをスイッチ１５０へ転送する。
【０３７７】
スイッチ１５０は、前述したネットワークインタフェース１１１からパケットを受信した際の処理と同様に、パケットを転送する。
【０３７８】
具体的には、スイッチ１５０は、受信したパケットから、次転送先２０１３２の「機能モジュール２０２」を抽出する。そして、スイッチ１５０は、抽出した次転送先２０１３２の「機能モジュール２０２」が接続されている機能モジュールインタフェース１３２へ、受信したパケットを転送する。
【０３７９】
機能モジュールインタフェース１３２は、スイッチ１５０から受信したパケットを、自身が接続されている機能モジュール２０２へ転送する。
【０３８０】
機能モジュール２０２は、前述した機能モジュール２０１が行った処理と同様に、パケットを処理する。
【０３８１】
具体的には、機能モジュール２０２は、機能処理プログラム２０１４を実行することによって、受信したパケットに所定の処理を行う。
【０３８２】
次に、機能モジュール２０２は、受信したパケットに付加されているフロー識別子の「４」を抽出する。
【０３８３】
次に、機能モジュール２０２は、抽出したフロー識別子の「４」と内部転送先表２０１３のフロー識別子２０１３１とが一致するエントリＥ４４１を、自身の内部転送先表２０１３から検索する。
【０３８４】
次に、機能モジュール２０２は、検索したエントリＥ４４１から、転送フロー識別子２０１３４の「５」及び次転送先２０１３２の「機能モジュール２０１」を抽出する。
【０３８５】
次に、機能モジュール２０２は、受信したパケットに付加されている次転送先の「機能モジュール２０２」を、抽出した次転送先２０１３２の「機能モジュール２０１」に付け替える。次に、機能モジュール２０２は、受信したパケットに付加されているフロー識別子の「４」を、抽出した転送フロー識別子２０１３４の「５」に付け替える。
【０３８６】
そして、機能モジュール２０２は、自身が接続されている機能モジュールインタフェース１３２へ当該パケットを送信する。
【０３８７】
すると、機能モジュールインタフェース１３２は、受信したパケットをスイッチ１５０へ転送する。
【０３８８】
スイッチ１５０は、前述したネットワークインタフェース１１１からパケットを受信した際の処理と同様に、パケットを転送する。
【０３８９】
具体的には、スイッチ１５０は、受信したパケットから、次転送先２０１３２の「機能モジュール２０１」を抽出する。そして、スイッチ１５０は、抽出した次転送先２０１３２の「機能モジュール２０１」が接続されている機能モジュールインタフェース１３１へ、受信したパケットを転送する。
【０３９０】
機能モジュールインタフェース１３１は、スイッチ１５０から受信したパケットを、自身が接続されている機能モジュール２０１へ転送する。
【０３９１】
すると、機能モジュール２０１は、先ほどと同様に、パケットを処理する。
【０３９２】
具体的には、機能モジュール２０１は、機能処理プログラム２０１４を実行することによって、受信したパケットに所定の処理をする。
【０３９３】
次に、機能モジュール２０１は、受信したパケットに付加されているフロー識別子の「５」を抽出する。
【０３９４】
次に、機能モジュール２０１は、抽出したフロー識別子の「５」と内部転送先表２０１３のフロー識別子２０１３１とが一致するエントリＥ４３２を、自身の内部転送先表２０１３から検索する。
【０３９５】
次に、機能モジュール２０１は、検索したエントリＥ４３２から、転送フロー識別子２０１３４の「６」及び次転送先２０１３２の「ネットワークインタフェース１１２」を抽出する。
【０３９６】
次に、機能モジュール２０１は、受信したパケットに付加されている次転送先２０１３２の「機能モジュール２０１」を、抽出した次転送先２０１３２の「ネットワークインタフェース１１２」に付け替える。次に、機能モジュール２０１は、受信したパケットに付加されているフロー識別子の「５」を、抽出した転送フロー識別子２０１３４の「６」に付け替える。
【０３９７】
そして、機能モジュール２０１は、自身が接続されている機能モジュールインタフェース１３１へ当該パケットを送信する。
【０３９８】
すると、機能モジュールインタフェース１３１は、受信したパケットをスイッチ１５０へ転送する。
【０３９９】
スイッチ１５０は、前述したネットワークインタフェース１１１からパケットを受信した際の処理と同様に、パケットを転送する。
【０４００】
具体的には、スイッチ１５０は、受信したパケットから、次転送先２０１３２の「ネットワークインタフェース１１２」を抽出する。そして、スイッチ１５０は、抽出した次転送先２０１３２のネットワークインタフェース１１２へ、受信したパケットを転送する。
【０４０１】
すると、ネットワークインタフェース１１２は、スイッチ１５０からパケットを受信する。次に、ネットワークインタフェース１１２は、受信したパケットから、転送フロー識別子２０１３４及び次転送先２０１３２を取り除く。
【０４０２】
そして、ネットワークインタフェース１１２は、これらを取り除いたパケットを、自身が接続されている外部ノード３０２に送信する。
【０４０３】
（第７の実施の形態）
本発明の第７の実施の形態は、第３の実施の形態の機能モジュール２０１、２０２が機能処理プログラム２０１４を複数備える。
【０４０４】
図３２は、本発明の第７の実施の形態のパケット通信装置１００のブロック図である。
【０４０５】
第７の実施の形態のパケット通信装置１００は、機能モジュール２０１、２０２が機能処理プログラムを複数備える点を除き、第３の実施の形態のパケット通信装置（図１）と同一の構成である。なお、同一の構成には同一の番号を付し、説明を省略する。
【０４０６】
機能モジュール２０１は、機能処理プログラムＡ（２０１４Ａ）及び機能処理プログラムＢ（２０１４Ｂ）を含む。なお、機能モジュール２０１、２０２は、機能処理プログラム２０１４を二つ以上含んでいてもよい。
【０４０７】
以下、図３３に示すフロー定義テーブル１４０４が作成された場合を例として、説明する。
【０４０８】
図３３は、本発明の第７の実施の形態のモジュール制御管理部１４０のフロー定義テーブル１４０４の構成図である。
【０４０９】
第７の実施の形態のフロー定義テーブル１４０４は、第３の実施の形態のフロー定義テーブル（図１３）と同一の構成を含む。同一の構成には、同一の番号を付し、説明を省略する。
【０４１０】
第７の実施の形態のフロー定義テーブル１４０４の転送経路１４０４３には、パケットを転送する経路に加えて、当該パケットの処理内容が格納される。処理内容は、例えば、当該パケットを処理する機能処理プログラム２０１４の識別子である。
【０４１１】
例えば、プロトコル番号が「８０」であるパケットは、機能モジュール２０１に転送され、機能モジュール２０１の機能処理プログラムＡ（２０１４Ａ）によって処理される。次に、当該パケットは、機能モジュール２０２に転送され、機能モジュール２０２の機能処理プログラムＡ（２０１４Ａ）によって処理される。次に、当該パケットは、機能モジュール２０１に転送され、機能モジュール２０１の機能処理プログラムＢ（２０１４Ｂ）によって処理される。そして、当該パケットは、ネットワークインタフェース１１２に転送される（エントリＥ５１１）。
【０４１２】
送信元ＩＰアドレスが「１９２．１６８．１０．０／２４」であるパケットは、機能モジュール２０１に転送され、機能モジュール２０１の機能処理プログラムＡ（２０１４Ａ）によって処理される。そして、当該パケットは、ネットワークインタフェースに転送される（エントリＥ５１２）。
【０４１３】
また、送信先ＩＰアドレスが「１９２．１６８．２０．０／２４」であるパケットは、機能モジュール２０２に転送され、機能モジュール２０２の機能処理プログラムＢ（２０１４Ｂ）によって処理される。そして、当該パケットは、ネットワークインタフェース１１２に転送される（エントリＥ５１３）。
【０４１４】
図３４は、本発明の第７の実施の形態の機能モジュール２０１の内部転送先表２０１３の構成図である。
【０４１５】
機能モジュール２０１の内部転送先表２０１３は、第３の実施の形態の内部転送先表（図１４）と同一の構成を含む。同一の構成には同一の番号を付し、説明を省略する。
【０４１６】
第７の実施の形態の内部転送先表２０１３は、更に、処理内容識別子２０１３５を含む。
【０４１７】
処理内容識別子２０１３５は、当該パケットを処理する機能プログラム２０１４を一意に識別する識別子である。
【０４１８】
次に、ハードウェア識別子がＸである機能モジュール２０１、２０２の内部転送先表２０１３をモジュール制御管理部１４０が作成する処理を説明する。
【０４１９】
まず、フロー定義テーブル１４０４の転送経路１４０４３から、ハードウェア識別子Ｘを検索する。そして、検索した一つのハードウェア識別子Ｘから、内部転送先表２０１３の一つのエントリを作成する。
【０４２０】
検索したハードウェア識別子Ｘが格納されているエントリのフロー識別子１４０４２をフロー定義テーブル１４０４から抽出する。次に、抽出したフロー識別子１４０４２を、内部転送先表２０１３のフロー識別子２０１３１に格納する。
【０４２１】
次に、検索したハードウェア識別子Ｘの直下に格納されているハードウェア識別子を、フロー定義テーブル１４０４の転送経路１４０４３から抽出する。次に、抽出したハードウェア識別子を、内部転送先表２０１３の次転送先２０１３２に格納する。
【０４２２】
次に、検索したハードウェア識別子Ｘが格納されているエントリをフロー定義テーブル１４０４から選択する。次に、検索したハードウェア識別子Ｘの上に格納されているハードウェア識別子の数を、選択したエントリ中で数える。そして、数えた値を内部転送先表２０１３のカウンタ値２０１３３に格納する。
【０４２３】
次に、検索したハードウェア識別子Ｘに対応して格納されている処理内容を、フロー定義テーブルの転送経路１４０４３から抽出する。そして、抽出した処理内容を、内部転送先表２０１３の処理内容識別子２０１３５に格納する。
【０４２４】
モジュール制御管理部１４０は、図３３に示すフロー定義テーブル１４０４から、当該構成図に示す機能モジュール２０１の内部転送先表２０１３を作成する。
【０４２５】
具体的には、モジュール制御管理部１４０は、フロー定義テーブル１４０４のエントリＥ５１１から、内部転送先表２０１３のエントリＥ５３１及びエントリＥ５３２を作成する。また、フロー定義テーブル１４０４のエントリＥ５１２から、内部転送先表２０１３のエントリＥ５３３を作成する。
【０４２６】
図３５は、本発明の第７の実施の形態の機能モジュール２０２の内部転送先表２０１３の構成図である。
【０４２７】
機能モジュール２０２の内部転送先表２０１３は、前述した機能モジュール２０１の内部転送先表（図３４）と同一の構成なので、説明は省略する。
【０４２８】
モジュール制御管理部１４０は、図１３に示すフロー定義テーブル１４０４から、当該構成図に示す機能モジュール２０２の内部転送先表２０１３を作成する。
【０４２９】
具体的には、モジュール制御管理部１４０は、フロー定義テーブル１４０４のエントリＥ５１１から、内部転送先表２０１３のエントリＥ５４１を作成する。また、フロー定義テーブルのエントリＥ５１３から、内部転送先表２０１３のエントリＥ５４２を作成する。
【０４３０】
図３６は、本発明の第７の実施の形態の機能モジュール２０１のパケット処理のフローチャートである。
【０４３１】
まず、機能モジュール２０１は、機能モジュールインタフェース１３１からパケットを受信する（Ｓ２４１）。
【０４３２】
次に、受信したパケットに付加されているフロー識別子及びカウンタの値を抽出する。次に、抽出したフロー識別子と内部転送先表２０１３のフロー識別子２０１３１とが一致し、且つ、抽出したカウンタ値と内部転送先表２０１３のカウンタ値２０１３３とが一致するエントリを内部転送先表２０１３から選択する。
【０４３３】
次に、選択したエントリから、処理内容識別子２０１３５を抽出する。次に、抽出した処理内容識別子２０１３５に対応する機能処理プログラム２０１４を実行することによって、受信したパケットに所定の処理を行う（Ｓ２４２）。
【０４３４】
次に、選択したエントリから、次転送先２０１３２を抽出する（Ｓ２４３）。
【０４３５】
次に、受信したパケットに付加されているカウンタの値を増加させる（Ｓ２４４）。
【０４３６】
次に、受信したパケットに付加されている次転送先を、抽出した次転送先２０１３２に付け替える。そして、当該パケットを、機能モジュールインタフェース１３１を介してスイッチ１５０に送信する（Ｓ２４５）。
【０４３７】
パケット通信装置１００を構成するその他の装置は、第３の実施の形態と同一の処理を行う。よって、説明は省略する。
【０４３８】
（第８の実施の形態）
本発明の第８の実施の形態は、第４の実施の形態の機能モジュール２０１、２０２が機能処理プログラム２０１４を複数備える。
【０４３９】
図３７は、本発明の第８の実施の形態のパケット通信装置１００のブロック図である。
【０４４０】
第８の実施の形態のパケット通信装置１００は、機能モジュール２０１、２０２が機能処理プログラムを複数備える点を除き、第４の実施の形態（図１８）と同一の構成である。なお、同一の構成には同一の番号を付し、説明を省略する。
【０４４１】
機能モジュール２０１は、機能処理プログラムＡ（２０１４Ａ）及び機能処理プログラムＢ（２０１４Ｂ）を含む。なお、機能モジュール２０１、２０２は、機能処理プログラム２０１４を二つ以上含んでいてもよい。
【０４４２】
図３８は、本発明の第８の実施の形態の経路検索部１２１、１２２の経路表１２１５の構成図である。
【０４４３】
第８の実施の形態の経路表１２１５は、第４の実施の形態の経路表（図１９）と同一の構成を含む。同一の構成には同一の番号を付し、説明を省略する。
【０４４４】
第８の実施の形態の経路表１２１５の転送経路１２１５２には、パケットを転送する経路に加えて、当該パケットの処理内容が格納される。処理内容は、例えば、当該パケットを処理する機能処理プログラム２０１４の識別子である。
【０４４５】
図３９は、本発明の第８の実施の形態のネットワークインタフェース１１１のパケット転送処理のフローチャートである。
【０４４６】
まず、ネットワークインタフェース１１１は、外部ノード３０１からパケットを受信する（Ｓ２７１）。
【０４４７】
次に、受信したパケットの全部又は一部を経路検索部１２１に送信する。なお、パケットの一部には、パケットの経路を判定する部分（例えば、ヘッダ部）が含まれていなければならない。
【０４４８】
すると、経路検索部１２１は、受信したパケットがフロー条件１２１５１に該当するエントリを経路表１２１５から検索する。次に、経路検索部１２１は、検索したエントリから、転送経路１２１５２を抽出する。
【０４４９】
なお、転送経路１２１５２には、ハードウェア識別子及び当該ハードウェア識別子に対応する処理内容が含まれる。ハードウェア識別子に対応する処理内容は、例えば、当該ハードウェア識別子の機能モジュール２０１、２０２が実行する機能処理プログラム２０１４を一意に識別する識別子である。
【０４５０】
そして、経路検索部１２１は、抽出した転送経路１２１５２をネットワークインタフェース１１１に送信する。
【０４５１】
ネットワークインタフェース１１１は、転送経路１２１５２を受信する（Ｓ２７２）。
【０４５２】
次に、受信した転送経路１２１５２に含まれるハードウェア識別子の数を数える。次に、受信した転送経路１２１５２を、外部ノード３０１から受信したパケットの先頭に付加する。更に、数えたハードウェア識別子の数をスタック数カウンタとして、当該パケットに付加する。なお、スタック数カウンタは、パケットに付加されているハードウェア識別子の数を示す。
【０４５３】
これによって、外部ノード３０１から受信したパケットは、後述する図４０のようになる。
【０４５４】
そして、これらを付加したパケットをスイッチ１５０に送信する（Ｓ２７３）。
【０４５５】
パケット通信装置１００を構成するその他の装置は、第４の実施の形態と同一の処理を行う。よって、説明は省略する。
【０４５６】
図４０は、本発明の第８の実施の形態のパケット通信装置１００の内部におけるパケットの説明図である。
【０４５７】
パケット通信装置１００の内部におけるパケットは、外部ノード３０１から受信したパケット５０１に、内部ヘッダ部５０２が付加されている。
【０４５８】
内部ヘッダ部５０２は、スタック数カウンタ５０３、ハードウェア識別子５０４及び処理内容５０５を含む。
【０４５９】
ハードウェア識別子５０４は、当該パケットを転送する装置を一意に識別する識別子である。当該パケットは、転送される装置が複数ある場合には、転送されるすべての装置のハードウェア識別子５０４を含む。
【０４６０】
処理内容５０５は、ハードウェア識別子５０４と対応付けられている。処理内容５０５は、対応するハードウェア識別子５０４の装置が実行する機能処理プログラム２０１４を一意に識別する識別子が格納される。
【０４６１】
スタック数カウンタ５０３は、当該パケットに付加されているハードウェア識別子５０４の数を示す。
【０４６２】
なお、本実施の形態は、第５の実施の形態にも適用できる。
【０４６３】
この場合、ネットワークインタフェース１１１のパケット転送処理（図３９）のステップＳ２７３において、パケットにスタック数カウンタを付加しない。
【０４６４】
すると、ネットワークインタフェース１１１は、受信したパケットを、図４１に示す内部パケットとする。
【０４６５】
図４１は、本発明の第８の実施の形態のパケット通信装置１００の内部におけるパケットの説明図である。
【０４６６】
パケット通信装置１００の内部におけるパケットは、外部ノード３０１から受信したパケット５０１に、内部ヘッダ部５０２が付加されている。
【０４６７】
内部ヘッダ部５０２は、ハードウェア識別子５０４及び処理内容５０５をＮ個ずつ含む。ハードウェア識別子５０４及び処理内容５０５は、前述したパケット（図４０）の構成と同一なので、説明を省略する。
【０４６８】
当該パケットは、転送される装置が複数ある場合には、転送されるすべての装置のハードウェア識別子５０４及び処理内容５０５を含む。また、当該パケットは、転送される装置がＮ個以下の場合には、ダミーの識別子が付加されることによって、ハードウェア識別子５０４をＮ個とする。同様に、当該パケットは、ダミーの識別子に対応する数のダミーの処理内容が付加されることによって、処理内容をＮ個とする。
【０４６９】
なお、当該パケットは、Ｎ個以上のハードウェア識別子５０４を含むことができない。つまり、このパケット転送装置１００では、パケットを転送する機能モジュール２０１、２０２の数は、最大Ｎ個と制限される。
【産業上の利用可能性】
【０４７０】
本発明は、ネットワーク上でパケットを転送する通信装置に適用することができる。
【図面の簡単な説明】
【０４７１】
【図１】本発明の第１の実施の形態のパケット通信装置のブロック図である。
【図２】本発明の第１の実施の形態のモジュール制御管理部のフロー定義テーブルの構成図である。
【図３】本発明の第１の実施の形態の経路検索部の経路表の構成図である。
【図４】本発明の第１の実施の形態の機能モジュールの内部転送先表の構成図である。
【図５】本発明の第１の実施の形態の機能モジュールの内部転送先表の構成図である。
【図６】本発明の第１の実施の形態のモジュール制御管理部の経路処理のフローチャートである。
【図７】本発明の第１の実施の形態のネットワークインタフェースのパケット転送処理のフローチャートである。
【図８】本発明の第１の実施の形態の機能モジュールのパケット処理のフローチャートである。
【図９】本発明の第１の実施の形態のパケット通信装置のパケット転送処理の説明図である。
【図１０】本発明の第２の実施の形態のパケット通信装置のブロック図である。
【図１１】本発明の第２の実施の形態の機能モジュールからパケットを受信した機能モジュールインタフェースのパケット転送処理のフローチャートである。
【図１２】本発明の第２の実施の形態のパケット通信装置のパケット転送処理の説明図である。
【図１３】本発明の第３の実施の形態のモジュール制御管理部のフロー定義テーブルの構成図である。
【図１４】本発明の第３の実施の形態の機能モジュールの内部転送先表の構成図である。
【図１５】本発明の第３の実施の形態の機能モジュールの内部転送先表の構成図である。
【図１６】本発明の第３の実施の形態の機能モジュールのパケット処理のフローチャートである。
【図１７】本発明の第３の実施の形態のパケット通信装置のパケット転送処理の説明図である。
【図１８】本発明の第４の実施の形態のパケット通信装置のブロック図である。
【図１９】本発明の第４の実施の形態の経路検索部の経路表の構成図である。
【図２０】本発明の第４の実施の形態のネットワークインタフェースのパケット転送処理のフローチャートである。
【図２１】本発明の第４の実施の形態のパケット通信装置の内部におけるパケットの説明図である。
【図２２】本発明の第４の実施の形態の機能モジュールからパケットを受信した機能モジュールインタフェースのパケット転送処理のフローチャートである。
【図２３】本発明の第４の実施の形態のパケット通信装置のパケット転送処理の説明図である。
【図２４】本発明の第５の実施の形態のパケット通信装置の内部におけるパケットの説明図である。
【図２５】本発明の第５の実施の形態の機能モジュールからパケットを受信した機能モジュールインタフェースのパケット転送処理のフローチャートである。
【図２６】本発明の第５の実施の形態のパケット通信装置のパケット転送処理の説明図である。
【図２７】本発明の第６の実施の形態の機能モジュールの内部転送先表の構成図である。
【図２８】本発明の第６の実施の形態の機能モジュールの内部転送先表の構成図である。
【図２９】本発明の第６の実施の形態のモジュール制御管理部の内部転送先表の作成処理のフローチャートである。
【図３０】本発明の第６の実施の形態の機能モジュールのパケット処理のフローチャートである。
【図３１】本発明の第６の実施の形態のパケット通信装置のパケット転送処理の説明図である。
【図３２】本発明の第７の実施の形態のパケット通信装置のブロック図である。
【図３３】本発明の第７の実施の形態のモジュール制御管理部のフロー定義テーブルの構成図である。
【図３４】本発明の第７の実施の形態の機能モジュールの内部転送先表の構成図である。
【図３５】本発明の第７の実施の形態の機能モジュールの内部転送先表の構成図である。
【図３６】本発明の第７の実施の形態の機能モジュールのパケット処理のフローチャートである。
【図３７】本発明の第７の実施の形態のパケット通信装置のブロック図である。
【図３８】本発明の第８の実施の形態の経路検索部の経路表の構成図である。
【図３９】本発明の第８の実施の形態のネットワークインタフェースのパケット転送処理のフローチャートである。
【図４０】本発明の第８の実施の形態のパケット通信装置の内部におけるパケットの説明図である。
【図４１】本発明の第８の実施の形態のパケット通信装置の内部におけるパケットの説明図である。
【符号の説明】
【０４７２】
１００  パケット通信装置
１１１、１１２  ネットワークインタフェース
１２１、１２２  経路検索部
１３１、１３２  機能モジュールインタフェース
１４０  モジュール制御管理部
１５０  スイッチ
２０１、２０２  機能モジュール
３０１、３０２  外部ノード
１２１１  プロセッサ
１２１２  記憶装置
１２１３  経路表
１２１４  経路検索プログラム
１４０１  プロセッサ
１４０２  記憶装置
１４０３  経路処理プログラム
１４０４  フロー定義テーブル
２０１１  プロセッサ
２０１２  記憶装置
２０１３  内部転送先表
２０１４  機能処理プログラム
２０１５  内部転送先検索プログラム
【図１】
2006229830.tif 000003
【図２】
2006229830.tif 000004
【図３】
2006229830.tif 000005
【図４】
2006229830.tif 000006
【図５】
2006229830.tif 000007
【図６】
2006229830.tif 000008
【図７】
2006229830.tif 000009
【図８】
2006229830.tif 000010
【図９】
2006229830.tif 000011
【図１０】
2006229830.tif 000012
【図１１】
2006229830.tif 000013
【図１２】
2006229830.tif 000014
【図１３】
2006229830.tif 000015
【図１４】
2006229830.tif 000016
【図１５】
2006229830.tif 000017
【図１６】
2006229830.tif 000018
【図１７】
2006229830.tif 000019
【図１８】
2006229830.tif 000020
【図１９】
2006229830.tif 000021
【図２０】
2006229830.tif 000022
【図２１】
2006229830.tif 000023
【図２２】
2006229830.tif 000024
【図２３】
2006229830.tif 000025
【図２４】
2006229830.tif 000026
【図２５】
2006229830.tif 000027
【図２６】
2006229830.tif 000028
【図２７】
2006229830.tif 000029
【図２８】
2006229830.tif 000030
【図２９】
2006229830.tif 000031
【図３０】
2006229830.tif 000032
【図３１】
2006229830.tif 000033
【図３２】
2006229830.tif 000034
【図３３】
2006229830.tif 000035
【図３４】
2006229830.tif 000036
【図３５】
2006229830.tif 000037
【図３６】
2006229830.tif 000038
【図３７】
2006229830.tif 000039
【図３８】
2006229830.tif 000040
【図３９】
2006229830.tif 000041
【図４０】
2006229830.tif 000042
【図４１】
2006229830.tif 000043