(57)【要約】【課題】同一フローのパケットにおける複製処理を分散して行う。【解決手段】パケット中継装置のパケットのコピー機能ブロックは、複数の複製部と、負荷分散部と、複数の複製部それぞれに対応している複数の蓄積部とを備える。負荷分散部は、パケットを複数の蓄積部それぞれに蓄積されている蓄積パケットのコピー数を元に算出された複数の複製部それぞれに対応している累積残コピー量に基づいて複数の蓄積部のいずれかにパケットを振り分ける。【選択図】図４
2016208195.tif 000002
【特許請求の範囲】
【請求項１】
パケットを複製して送出する複数の複製部と、
前記複数の複製部それぞれに対応し、前記パケットを蓄積する複数の蓄積部と、
各蓄積部の前記パケットの複製数を基に算出された前記複数の複製部それぞれに対応した累積残コピー量を用いて前記複数の蓄積部のいずれかに前記パケットを振り分ける負荷分散部と、
を備えたパケット中継装置。
【請求項２】
前記複数の複製部それぞれに対応する前記累積残コピー量は、前記複数の蓄積部のうち前記パケットが振り分けられた蓄積部に対応する前記累積残コピー量に対して前記パケットの複製数に基づいて加算処理を行い、前記複数の複製部のうち複製パケットを送出した複製部に対応する前記累積残コピー量に対して前記複製パケットに基づいて減算処理を行うことで値を更新することを特徴とした請求項１記載のパケット中継装置。
【請求項３】
前記複数の複製部は、それぞれに対応する蓄積部に蓄積されている前記パケットの情報に基づいて装置内の宛て先情報を付与し、前記パケットを読み出して前記複製パケットを複製することを特徴とする請求項１又は、２に記載のパケット中継装置。
【請求項４】
前記パケットが固定長のパケットであり、前記累積残コピー量は、累積残複製数であることを特徴とする請求項１乃至３のいずれか１項に記載のパケット中継装置。
【請求項５】
前記累積残コピー量は、累積残複製バイト数であることを特徴とする請求項１乃至３のいずれか１項に記載のパケット中継装置。
【請求項６】
前記負荷分散部は、前記複数の複製部のうち前記累積残コピー量が最小の複製部に振り分けることを特徴とする請求項４に記載のパケット中継装置。
【請求項７】
前記パケットのフロー毎の直近パケットの宛て先を示す直近情報と、当該フローの直近パケットが送出を完了する時刻情報の関係を示す第１のテーブルをさらに備え、
前記負荷分散部は、前記直近情報、前記時刻情報と前記累積残コピー量に基づいて、前記パケットを振り分けることを特徴とする請求項５に記載のパケット中継装置。
【請求項８】
前記第１のテーブルは、前記パケットにおけるフロー毎の前記複数の複製部内の前記パケットの有無を示す第１の有効フラグをさらに有し、前記第１の有効フラグが無効のときに、前記累積残コピー量に基づいて前記複数の複製部に振り分けることを特徴とする請求項７に記載のパケット中継装置。
【請求項９】
前記負荷分散部の入力側でパケット本体とメモリアドレスを分割し、前記メモリアドレスの複製に必要な情報を付随して情報パケットにする第１のメモリ管理部と、
前記パケット本体を格納するパケット用メモリ部と、
前記複数の複製部のうちいずれかで複製された前記情報パケットに基づいて格納している前記パケット本体を読み出す第２のメモリ管理部と、を備えることを特徴とする請求項１乃至８のいずれか１項に記載のパケット中継装置。
【請求項１０】
前記複数の複製部は、同一フローの前記パケットに対して前記複製パケットの出力先情報を同一順序で付与されるように複製を行うことを特徴とする請求項１乃至９のいずれか１項に記載のパケット中継装置。
【請求項１１】
複数の宛先情報とそれぞれに対応している累積残コピー量の関係を示す第２のテーブルと、
前記累積残コピー量に基づいて前記複数の宛先情報のいずれかをパケットに付与して送出する負荷分散部と、を備え、
前記累積残コピー量は、前記負荷分散部から前記パケットの送出に伴って付与した前記宛先情報の前記累積残コピー量を前記パケットのコピー数に基づいて加算し、受信した複製パケットの送信元の情報に該当する宛先情報の前記累積残コピー量を前記複製パケットから減算して値を更新することを特徴とするパケット中継装置。
【請求項１２】
ダミーパケットを生成するダミー生成部をさらに備え、
前記第２テーブルは、前記複数の宛先情報それぞれに対して振り分けの可否を示す第２の有効フラグをさらに有し、
前記ダミー生成部は、新規追加した宛先情報が既存の宛先情報のうち前記累積残コピー量が最大の前記既存の宛先情報部より前記新規追加した宛先情報の前記累積残コピー量が大きくなるまで前記ダミーパケットを送出し、前記負荷分散部は、前記第２の有効フラグが振り分け可能を示す前記宛先情報を付与することを特徴とする請求項１１に記載のパケット中継装置。
【請求項１３】
前記複製パケットに対して受信した後に速度調整する前記複数の宛先情報それぞれに対応した複数のバッファ部を備えた請求項１１又は、１２に記載のパケット中継装置。
【請求項１４】
前記バッファ部が有する閾値を前記バッファ部に蓄積している前記複製パケットが超えると、前記バッファ部から、対応する前記宛先情報を付与して一時的に前記複製パケットの送出を停止するように情報を送ることを特徴とする請求項１３に記載のパケット中継装置。
【請求項１５】
前記複製パケットを複合する複合部をさらに備え、
前記複合部は、前記累積残コピー量と前記複数のバッファ部における前記複製パケットの蓄積に基づいて複合していることを特徴とする請求項１３又は、１４に記載のパケット中継装置。
【請求項１６】
前記第２のテーブルが有する前記累積残コピー量は、前記バッファ部から送出するときに該当する前記宛先情報の前記累積残コピー量を減算することを特徴とする請求項１３乃至１５のいずれか１項に記載のパケット中継装置。
【請求項１７】
パケットを複製する複数の複製部それぞれに対応し、前記パケットを蓄積する複数の蓄積部それぞれの前記パケットの複製数を基に算出された前記複数の複製部それぞれに対応した累積残コピー量を用いて前記複数の蓄積部のいずれかに前記パケットを振り分けることを特徴としたパケット中継装置のコピー分散方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット中継装置、パケット中継装置内のコピー分散方法に関する。
【背景技術】
【０００２】
パケット中継装置の機能の１つとして、１つの入力パケットに対して複数の出力リンクに送出するためにパケットを複製する技術としてパケットのコピー機能が知られている。
【０００３】
従来のパケット中継装置におけるコピー機能ブロックは、例えば、宛先が分からない未  学習パケットをマルチキャスト送信（フラッディング）したりする際にこの機能は使われる。
【０００４】
コピー機能を有するパケット中継装置８の例を図２４に示す。図２４のパケット中継装置８は、送信元５８０から送信されたパケットをパケット中継装置８のコピー機能ブロック５００で複製して送信先５９０ａ〜５９０ｃに送出する。コピー機能ブロック５００は、複製部５１０内の蓄積部５１２に蓄積されたパケットに対してコピーテーブル５１１を参照して種類（フロー）に応じて必要数のパケットを複製し送出する。
【０００５】
例えば図２４の場合、マルチキャストフロー＃１に対してコピーテーブル５１１は、送信先５９０ａ、５９０ｂに出力させることを示していることから複製回数は、２回となる。
【０００６】
パケットのコピー機能は、パケット中継装置８の処理の中でも負荷が大きい処理である。なぜなら、宛て先数が増えるにつれてパケットの複製数も多くなるからである。
【０００７】
そのため、従来のパケット中継装置におけるコピー分散技術として、以下の特許文献が提案されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１１−１５３２１号広報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記の特許文献に記載されているパケット中継装置のコピー方法では、パケットの種類（フロー）に基づいて、複数の複製部から複製する複製部を決めることでパケット中継装置における複製の効率化および製造コスト削減等の効果を図ることができる。
【００１０】
しかし単にパケットの種類（フロー）で分けるだけでは、同一種類（フロー）のパケットの処理が多くなると処理数に偏りが生じて、複製の効率化が上がらない問題がある。さらに効率の良い複製を行うには、同一種類（フロー）のパケットの処理を分散化する必要がある。同一種類（フロー）のパケットをなるべく均等に分散して複製を行う場合、同一種類（フロー）のパケットの順序逆転が生じることが問題になる。これは、パケット受信時にパケットに付与する内部ヘッダにシーケンス番号を付与してパケット送信時に順序再配列を行うことも可能だが、順序再配列を行うための手段を追加するための製造コストの増大や順序再配列を実施するための遅延を起こす問題がある。
【００１１】
本発明は、このような点に鑑みてなされたものであり、複数の複製部を用いてパケットの複製を行う時に同一種類（フロー）のパケットにおける順序逆転の防止とパケットの複製処理を分散して処理を行うコピー機能を有するパケット中継装置とパケット中継装置のコピー機能分散方法を提供することである。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、パケットを複製して送出する複数の複製部と、前記複数の複製部それぞれに対応し、前記パケットを蓄積する複数の蓄積部と、各蓄積部の前記パケットの複製数を基に算出された前記複数の複製部それぞれに対応した累積残コピー量を用いて前記複数の蓄積部のいずれかに前記パケットを振り分ける負荷分散部と、を備える。
【発明の効果】
【００１３】
上記構成によると、同一種類（フロー）内のパケットの順序を守りつつ、パケットの複製をできるだけ均等に分散することを可能にする。
【図面の簡単な説明】
【００１４】
【図１】図１は、一般的なパケット中継装置１の機能構成例を示す図である。
【図２】図２は、パケット中継装置１内のインタフェースカード２０の機能構成例を示した図である。
【図３】図３は、パケット中継装置１の全般の処理フロー例を示す図である。
【図４】図４は、実施の形態１にかかるコピー機能ブロック１００の構成例を示す図である。
【図５】図５は、パケットの複製における時間間隔を示す図である。
【図６】図６は、複数の複製部１００を用いた時の順序逆転が生じるときの例を示す図である。
【図７】図７は、コピー機能における見かけのキュー長と実際のキュー長の関係を示す図である。
【図８】図８は、複数の複製部１１０を用いた時の本発明の概念の例を示す図である。
【図９】図９は、同一フローのパケットが連続してきた場合に本発明の概念を用いて負荷分散を行った例を示す図である。
【図１０】図１０は、負荷分散部１２０のフローチャートの例を示す図である。
【図１１】図１１は、複製部１１０のフローチャートの例を示す図である。
【図１２】図１２は、実施の形態１００のコピー機能ブロックを用いた変形例のパケット中継装置５を示す図である。
【図１３】図１３は、実施の形態２にかかるコピー機能ブロック２００の構成例を示す図である。
【図１４】図１４は、パケットごとにキュー長が異なる時に生じる順序逆転が生じる時の例を示す図である。
【図１５】図１５は、負荷分散部２２０のフローチャートの例を示す図である。
【図１６】図１６は、複製部２１０のフローチャートの例を示す図である。
【図１７】図１７は、実施の形態３にかかるコピー機能ブロック３００の構成例を示す図である。
【図１８】図１８は、実施の形態４にかかるコピー機能ブロック４００の構成例を示す図である。
【図１９】図１９は、図１８の複合部３５５の読み出しにおける条件を示したフローチャートの例を示す図である。
【図２０】図２０は、複製部３１０のフローチャートの例を示す図である。
【図２１】図２１は、実施の形態６にかかるコピー機能ブロック５００の構成例を示す図である。
【図２２】図２２は、複製部３１０が新規追加された場合の同一フローのパケットにおける順序逆転が生じる例を示す図である。
【図２３】図２３は、ダミー生成部３６０を用いて新規追加した複製部３１０ｄにダミーパケットを送出している例を示す図である。
【図２４】図２４は、従来のコピー機能８の構成例を示す図である。
【発明を実施するための形態】
【００１５】
以下に添付図面を参照して開示技術の好適な実施の形態を詳細に説明する。
【００１６】
（実施の形態１）
図１は、シャーシ型のパケット中継装置（ルータ／スイッチ等）１の全体構成図である。パケット中継装置１は、インタフェースカード２０ａ、２０ｂ、・・・、２０ｎ、スイッチカード３０、コントロールカード１０等を備える。なお、インタフェースカード２０ａ、２０ｂ、・・・、２０ｎについて区別しない場合は、インタフェースカード２０と記載する。
【００１７】
コントロールカード１０は、ＣＰＵ１１とメモリ１２とを備え、例えば、各インタフェースカード２０やスイッチカード３０に制御等をＣＰＵ１１が行い、装置の状態等をメモリ１２に格納する。
【００１８】
また、インタフェースカード２０は、パケット中継装置１が入出するために光ファイバ等で構成されるリンク４０ａ−１、４０ａ−２、・・・、４０ｎ−２が接続されている。なお、リンク４０ａ−１、４０ａ−２、・・・、４０ｎ−２について区別しない場合は、単にリンク４０と記載する。図１ではインタフェースカード２０毎に２つのリンク４０が接続されているがこれに限定するわけではない。
【００１９】
また、図２にパケット中継装置１のインタフェースカード２０の構成例を示す。リンク４０より入力される信号は光モジュール２１により電気信号に変換され、ＰＨＹ／ＭＡＣ処理機能を持つＰＨＹ／ＭＡＣデバイス２２に送られる。例えば、光モジュール２１は、ＳＦＰ （Ｓｍａｌｌ Ｆｏｒｍ ｆａｃｔｏｒ Ｐｌｕｇｇａｂｌｅ）等の規格化された光トランシーバを用いる。
【００２０】
ＰＨＹ／ＭＡＣデバイス２２では、パケットの抽出処理等が行われ、ＦＰＧＡ／ＡＳＩＣ等２３に渡される。ＦＰＧＡ／ＡＳＩＣ等２３では、トラフィック処理や他のインタフェースカード２０へやり取りをするためにスイッチカード３０にパケットを送ることや、受け取とるといった処理が行われる。また、トラフィック処理を行う際に、パケットデータ用バッファや設定テーブル用のメモリ２５を持つ。さらに、ソフトウェア処理やコントロールカード１０のインタフェースになるＣＰＵ２４を持つ。
【００２１】
ここで、図１のようなパケット中継装置１の論理構成図を用いてマルチキャストパケットにおけるコピーを含んだ処理の流れの一例を図３に示す。図３のインタフェースカード２０は、Ｉｎｇｒｅｓｓ側とＥｇｒｅｓｓ側と分けて記載しているがインタフェースカード２０は、Ｉｎｇｒｅｓｓ側とＥｇｒｅｓｓ側をもつ。また、Ｉｎｇｒｅｓｓ側とＥｇｒｅｓｓ側で別々のインタフェースカードを持つようにしても良い。その場合は、各インタフェースカードは、入力もしくは、出力のどちらか一方のみを行う。
【００２２】
Ｉｎｇｒｅｓｓ側のインタフェースカード２０は、信号の入力からスイッチカード３０に送出するまでのことを示している。Ｅｇｒｅｓｓ側のインタフェースカード２０は、スイッチカード（ＳＷ ｃａｒｄ）３０から送出されてからインタフェースカード２０が出力するまでを示している。また、インタフェースカード２０は、図２に示すように１つのリンク４０で送受信するようにしてＩｎｇｒｅｓｓ側とＥｇｒｅｓｓ側の両方の機能を備えることもできるし、リンク４０の伝送方向を固定して別々にしても良い。
【００２３】
シャーシ型のパケット中継装置１の場合、パケットの複製はスイッチカード３０とＥｇｒｅｓｓ側のインタフェースカード２０の２箇所で行われることが多い。これは、前者がインタフェースカード２０間にまたがる複製を行い、後者がインタフェースカード２０内のポート間にまたがる複製を行うためである。
【００２４】
また、図３のＩｎｇｒｅｓｓ側とＥｇｒｅｓｓ側のインタフェースカード２０に記載している機能は、例えば、図２のＦＰＧＡ／ＡＳＩＣ等２３で行われる。また、インタフェースカード２０等が参照するテーブルは、メモリ２５等に格納されている。
【００２５】
パケットがリンク４０から到着すると、インタフェースカード２０のＩｎｇｒｅｓｓ側のパケット処理を行う。Ｉｎｇｒｅｓｓ側のパケット処理は、Ｆｏｒｗａｒｄｉｎｇ Ｔａｂｌｅを参照し、ヘッダ情報に基づいてパケット中継装置１内におけるパケット処理の情報である装置内のフロー（ｆｌｏｗ）情報（図中Ｍ）を取得する。フロー情報とは、パケットの種類（フロー）に応じてつけられる情報である。以降、パケットの種類について、フローと呼ぶことがある。
【００２６】
装置内フロー情報は、パケットに対してパケット中継装置１内で扱う情報を格納する装置内Ｈｅａｄｅｒに格納される。装置内フロー情報を得たパケットは、スイッチカード３０に送られる。この時、スイッチカード３０では、複数のＩｎｇｒｅｓｓ側のインタフェースカード２０からの入力がある場合は、複合して複数のインタフェースカード２０からの入力をシリアルに処理を行うようにしても良い。
【００２７】
装置内フロー情報とスイッチカード３０内のコピーテーブル１（Ｃｏｐｙ  Ｔａｂｌｅ１）から、Ｅｇｒｅｓｓ側のインタフェースカード２０の宛先分複製して各Ｅｇｒｅｓｓ側のインタフェースカード２０への宛て先情報（図中Ｉ）を付与し、該当のＥｇｒｅｓｓ側のインタフェースカード２０に振り分けされる。インタフェースカード２０への宛先情報（図中Ｉ）は、例えば、装置内ヘッダ（装置内Ｈｅａｄｅｒ）に格納され、装置内ヘッダには、インタフェースカード２０宛の情報（Ｉ）とフロー情報（Ｍ）が格納されている状態になる。
【００２８】
Ｅｇｒｅｓｓ側のインタフェースカード２０は、スイッチカード３０から送られてきたパケットの装置内フロー情報（Ｍ）とＥｇｒｅｓｓ側のインタフェースカード２０内のコピーテーブル２（Ｃｏｐｙ  Ｔａｂｌｅ２）の情報から出力ポートの宛て先情報（図のＱに該当）を得て、該等数のパケットを複製（コピー）する。複製したそれぞれのパケットは該等の出力ポートへのアドレス情報（図のＱに該等）を元にそれぞれ出力ポートに送出される。なお、以降複製のことをコピーと呼ぶことがある。
【００２９】
例えば、パケット中継装置１にパケットが入力されるとインタフェースカード２０でマルチキャストアドレス（図中 ＩＰ＝Ａ）からマルチキャストドメイン情報等に基づいてマルチキャストフローＩＤ（Ｍｕｌｔｉｃａｓｔ  ｆｌｏｗ  ＩＤ：図中 Ｍ＝３）を得て、装置内ヘッダに格納する。Ｍ＝３のパケットは、スイッチカード３０のコピーテーブル１を参照し、宛て先のインタフェースカード２０の情報（Ｉ＝１、３）に基づいて複製を行う。
【００３０】
具体的には、図中において宛て先のインタフェースカード２０の情報（Ｉ＝１、３）から、インタフェースカード２０ａの宛先情報を作成し、その後にパケットを読み出す。ここで図３の宛先（Ｉ）は、１、２、３…＝ａ、ｂ、ｃ、…と対応しているとする。インタフェースカード２０ｃの宛先情報を作成し、その後にパケットを読み出す。また、パケットの複製（読み出し）が終わったら当該パケットを廃棄する。また、インタフェースカード２０の宛先情報の作成とパケットの読み出しは、同時にできることから、１つ目（インタフェースカード２０ａ宛て）のパケットを読み出している時に２つ目（インタフェースカード２０ｃ宛て）の宛先情報の作成が可能となる。
【００３１】
スイッチカード３０からインタフェースカード２０に送出する際に宛て先のインタフェースカード２０への宛先情報（図中Ｉ）をはずすようにしても良い。また、Ｅｇｒｅｓｓ側のインタフェースカード２０で装置内情報として取り除いても良い。
【００３２】
スイッチカード３０からパケットを受け取ったＥｇｒｅｓｓ側のインタフェースカード２０は、インタフェースカード２０のコピーテーブル２を参照して宛て先ポート分（図中のインタフェースカード２０ａだと３）コピーされる。この際、個々のコピー済みパケットに宛て先を示すための情報（例えばＱ＝５）が付与され、シェーパブロック（図中Ｓｈａｐｅｒ  Ｓｃｈｅｄｕｌｅｒ）において所望のバッファに格納される。なお、装置内情報である宛先（Ｑ）やフロー（Ｍ）等は、Ｅｇｒｅｓｓ側のパケット処理部において取り除かれた後、パケットが出力される。
【００３３】
スイッチカード３０での複製と同様なコピー処理が行われる。具体的には、図中のインタフェースカード２０ａにおいてコピーテーブルから出力ポートへの宛て先を示すための情報（図中Ｑ＝５、７、８）を元に行われる。まず、出力ポート（Ｑ＝５）の宛先情報を作成して、次にパケット（Ｐａｙｌｏａｄ＋ＩＰ）を読み出し送出する。その後に出力ポート（Ｑ＝７）の宛先情報を作成して、パケットを読み出し送出し、出力ポート（Ｑ＝８）の宛先情報を作成して、パケットを読み出し送出する。パケットの複製（読み出し）が終わったら当該パケットを廃棄する。また、宛て先情報の作成とパケットの読み出しは、スイッチカード３０の複製と同様に同時にできる。
【００３４】
このような流れで入力パケットを複製して複数の出力ポートに入力パケットと同様なパケットを出力できる。
【００３５】
ここで、本実施の形態のパケット中継装置１内のコピー処理機能について説明する。コピー処理機能は、図３のスイッチカード３０がＥｇｒｅｓｓ側のインタフェースカード２０に振り分けるときや、Ｅｇｒｅｓｓ側のインタフェースカード２０で複数の出力ポートに出力するときの処理に用いられる。本実施の形態にかかるコピー機能ブロック１００の機能構成図を図４に示す。コピー機能ブロック１００は、複数の複製部１１０ａ〜１１０ｃ、負荷分散部１２０、フロー情報テーブル１３０、累積残コピー管理テーブル１４０を備える。なお、図４中において複製部１１０ａ〜１１０ｃについて区別しない場合は、単に複製部１１０と記載する。また、複製部１１０の数は、例として３つの場合を挙げていてこれに限定するものではない。また、実施の形態１は、パケットが固定長の場合である。
【００３６】
フロー情報テーブル１３０は、フロー情報毎のコピー数を保持するテーブルである。フロー情報は、パケットのヘッダ情報を基に装置内ヘッダに格納されている。累積残コピー管理テーブル１４０は、各複製部１１０それぞれに対応した複製部１１０毎の全蓄積パケットの残りコピー量である累積残コピー量を示すカウンタ（累積残コピー量）を示す。なお、図４では、固定長のパケットの複製のため残コピー量は、残コピー数を用いている。フロー情報テーブル１３０と累積残コピー管理テーブル１４０は、例えば、図２のメモリ２５に格納されている。
【００３７】
例えば、負荷分散部１２０で複製部１１０ａにパケットの振り分けが行われると選択された複製部１１０ａの累積残コピー量に当該パケットのコピー量分がまとめて加算され、また複製部１１０ａからパケットが複製され、送出されると当該複製部１１０ａの累積残コピー量から送出したパケットのコピー量を減算する事により、累積残コピー量は常に正しい値を保持する。他の複製部１１０ｂ、１１０ｃでも同様に行われる。
【００３８】
負荷分散部１２０は、フロー情報取得部１２１、複製部選択部１２２、カウンタ加算部１２３により構成される。フロー情報取得部１２１は、到着パケットのヘッダの情報に基づいてつけられた装置内でのパケット処理を行うための装置内フロー情報を用いて、フロー情報テーブル１３０から当該フローのコピー数の情報を取得する。
【００３９】
複製部選択部１２２は累積残コピー管理テーブル１４０から、複製部１１０それぞれの累積残コピー量を取得して、累積残コピー量が最も小さい複製部を選択しパケットの振り分け先を決める。カウンタ加算部１２３は、選択した複製部１１０の累積残コピー量を当該フローのコピー数分だけ加算し、累積残コピー管理テーブル１４０を更新する。
【００４０】
例えば、図４の場合、パケットが入力されると、フロー情報取得部１２１で到着パケットのヘッダ情報に基づいた装置内フロー情報（フロー＝＃２）を用いてフロー情報テーブル１３０から当該フローのコピー数２を取得する。フロー情報取得部１２１でフロー情報を取得すると複製部選択部１２２で累積残コピー管理テーブル１４０から各複製部１１０ａ〜１１０ｃの累積残コピーカウンタが示す累積残コピー量の７、６、５を取得する。累積残コピー量が最小の複製部１１０ｃが振り分け先となり振り分け時にカウンタ加算部１２３で複製部１１０ｃの累積残コピー量にコピー数である３を加算し、複製部１１０ｃの累積残コピー量の値を８（＝５＋３）に更新する。負荷分散の詳しい説明は、後述する。
【００４１】
複数の複製部１１０は、フロー毎の宛先情報とコピー数を管理するコピーテーブル１１１ａ〜１１１ｃ、到着パケットを蓄積する蓄積部１１２ａ〜１１２ｃをそれぞれ有する。なお、コピーテーブル１１１ａ〜１１１ｃと蓄積部１１２ａ〜１１２ｃについて区別しない場合は、単に数字のみを記載する。
【００４２】
複製部１１０は、コピーテーブル１１１の内容に基づいて蓄積部１１２の先頭パケットのコピーならびに宛先情報の付与を行う。また、複数の複製部１１０におけるコピーパケットの宛て先付与順序は各複製部１１０でパケットのフロー毎に同一にしておく。
【００４３】
ここで、負荷分散の方法について詳しく説明する。負荷分散自体は歴史が古く、以前より様々な方法が考えられている。例えば、複数のＷｅｂサーバを仮想的に一つのサーバに見せ、最小コネクション数、最小負荷等の様々な時々刻々と変化する値に基づいて振り分けるサーバ用ロードバランサ等が考えられる。
【００４４】
また、複数のリンクを１つのリンクに見せかけるリンクアグリゲーション（Ｌｉｎｋ Ａｇｇｒｅｇａｔｉｏｎ： ＬＡＧ）や、同じコストの経路にＩＰパケットを振り分けるイコールコストマルチパス（Ｅｑｕａｌ Ｃｏｓｔ Ｍｕｌｔｉ Ｐａｔｈ ： ＥＣＭＰ）といった負荷分散方法がある。これらはいずれも、ＭＡＣアドレスやＩＰアドレスといったアドレス情報等をハッシュ関数にかけ、得られたハッシュ値に基づいて出力ポートを決定する確率的負荷分散が一般的に実施されている。
【００４５】
パケット中継装置における負荷分散の重要要件は、同一フロー（例えばＶＬＡＮ ＩＤ等により識別されるユーザ単位）内においてパケットの順序逆転を起こさないことが挙げられる。なお、これ以降の負荷分散の方法についての説明は、一部機能のみを記載して説明するところもある。
【００４６】
負荷分散について従来のリンクアグリゲーション等で用いられていた様なハッシュ値を用いる方法の場合、同一フローに属するパケットは同じアドレスを持つため、ハッシュ値も同じになり同一の複製部１１０へ必ず振り分けられる。よって、パケット順序性は実現できる。しかし、振り分けが確率に依存することや特定のフローのみのレートが高い場合、一部の複製部１１０に偏る可能性がある。
【００４７】
この場合の問題点について図５を用いて説明する。図５の固定長パケットは、最短（６４バイト）のパケット長として考える。図５（ａ）は、図２４のような従来の複製部５１０が１つの場合を示し、図５（ｂ）には、本発明の図４のような複数の場合（図では、３つ）を示す。また、図５（ａ）、（ｂ）ともにテーブルを検索して宛て先情報を付与するのは、動作クロックの限界から４００ＭＨｚで２ｃｌｏｃｋ分（＝２００ＭＨｚ）とする。
【００４８】
それに対してパケット長が短い場合、例えば図５のようにパケット長が６４バイトの場合、パケットを読み込むのは６００ＭＨｚの動作クロック１ｃｌｏｃｋ分で処理を行うことが可能である。従って、複製にかかる時間は、装置内のフロー番号を元にテーブルから装置内の宛て先情報を検索するのに依存してしまう。
【００４９】
これは、テーブルにアクセスして該当のフロー番号の情報を検索する必要があり、パケットを読み出す複製に比べて処理に時間がかかり４００ＭＨｚで２ｃｌｏｃｋ分（＝２００ＭＨｚ）となる。
【００５０】
従って、装置内のフロー番号を元にテーブルから装置内の宛て先情報を検索することによりパケット長が短い場合に装置内のスループット（ｂｐｓ）の低下が起こる。
【００５１】
図５（ｂ）の場合、各複製部１１０は、コピーテーブル１１１にアクセスしてコピーテーブル１１１の情報を元に装置内の宛て先付与については、図５（ａ）の複製部５１０と同様に４００ＭＨｚで２ｃｌｏｃｋ分（＝２００ＭＨｚ）かかる。
【００５２】
しかし、複数の複製部１１０の出力を複合すると６００ＭＨｚで行えたときと同様の効果が得られる。また、６４バイトのパケットを複製から送出までは、６００ＭＨｚのクロック周波数の１ｃｌｏｃｋ分で読み出すことも可能だが、パケット長が長くなると、（例えば１０２４バイトの固定長）出力のスループット（ｂｐｓ）が大きくなる。そのためパケット中継装置内の処理において複製のみ早くなることが生じてしまいパケット中継装置が処理できないことが起こる。
【００５３】
従って、６４バイトの読みだしを４００ＭＨｚの動作クロックで２ｃｌｏｃｋ分とすることで、パケット長に関係なく４００Ｇｂｐｓの出力が得られる。なぜなら、例えば、１０２４バイトのパケット長を複製すると４００ＭＨｚの動作クロックで２ｃｌｏｃｋ分行うと１６回行うことになる。しかし、パケット中継装置１からの出力は、１６回分まとめて出力されるのでスループットに影響を与えないからである。従って、６４バイトの読みだしを４００ＭＨｚで２ｃｌｏｃｋ分とすることでパケット長に関係なく４００Ｇｂｐｓの出力を得ることが可能となる。また、複数の複製部１１０の出力が複合時に重複しないようにする必要がある。
【００５４】
このとき、複製部単体で見ると処理性能（複製時間）、図５（ａ）の６００ＭＨｚで１ｃｌｏｃｋ分より落とした４００ＧＨｚで２ｃｌｏｃｋ分のクロック速度で図５（ａ）に比べて同等以上の効果が得られる。又、パケット長に関係なく一定のスループット（ｂｐｓ）を得ることが可能になる。又、複製部を複数用いることで動作クロックの限界におけるスループットの限界の対策にもなる。
【００５５】
しかし、３つで１つと同様な性能を出そうとする場合に１つの複製部に偏りが生じると複製性能が１つの時よりも低いために処理性能が劣化したコピー機能になり、パケット中継器装置全体の速度を落としてしまう問題がある。
【００５６】
図５では、複製部が３つの場合を示したが、複製部の数や複製部の動作クロック周波数又は、テーブルの読み出しの動作クロック周波数は、最終出力で求められるスループットに合わせて調整すればいい。
【００５７】
また、「待ち合わせキュー長」＝「負荷状態」とみなし、最もキューの短いコピー機能ブロック（＝最小負荷の複製部）へパケットを送るという、サーバ用ロードバランサの考え方を流用した動的負荷均等化方法を適用した場合を考えると、常に最短キューが選択される為、負荷の均等分散化は最適に実施される可能性が高い。しかし、この方法はコピーパターンにより順序性が守られないことが起きうる。なお、キュー長とは、パケット長を示しており、以降パケット長のことをキュー長と呼ぶことがある。
【００５８】
この理由について図６を用いて説明する。図６では、複製部１１０を２つ用いたコピー機能ブロックで説明している。図６（ａ）の様に、マルチキャストフロー＃１の３番目のパケット到着時は複製部１１０ｂのキュー長が短いため、複製部１１０ｂに振り分けられる。しかし、あるパケット（マルチキャストフロー＃４の７番目パケット）のコピー数が多く処理に時間がかかる様な場合、図６（ｂ）の様に長かったキューの方が早く処理される事もありうる。（図６は、固定長パケットで考える。）なお、図６は、複製部１１０が２つの場合で説明している。
【００５９】
すなわち、図６（ｂ）の様な状態で、マルチキャストフロー＃１の４番目のパケットが到着すると、キューが短い上の複製部に振り分けられるが、その結果、３番目のパケットより先に送出される事になってしまう。すなわち、この方法では、同一フロー内の順序を担保できないことが生じる。
【００６０】
上記のように説明した負荷分散の方法では、同一フローのパケットを１つの複製部１１０に固定してしまえば均等分散を満たせず、複数の複製部１１０に分散させれば同一フロー内の順序性が満たせない。
【００６１】
そこで、パケットコピーの特性に着目した分散の方法を考える必要がある。図６に示すようにパケットコピーとは、１つのパケットを複数に増やす処理であるため、見かけのキュー長と実質的なキュー長が異なるという特性がある。
【００６２】
例えば、図７（ａ）の様に１０００コピーを行うパケットが蓄積部１１２の先頭にいるという状態（ａ１）は、仮想的に１０００個の非コピーパケットが蓄積部１１２に蓄積されている状態（ａ２）と処理時間的に等価と言える。すなわち、コピー対象が固定長である場合１パケットの処理時間はコピー数に比例する。
【００６３】
また、コピー中のパケットについては、そのコピーが何コピー目かによって負荷状況が異なるという特性もある。例えば、図７は（ｂ１）も（ｂ２）も蓄積部１１２の先頭に１０００個のコピーを行うパケットが存在するという状況は同じであるが、それが１コピー目（ｂ１）と１０００コピー目（ｂ２）とでは、後続パケットの処理開始時間が全く異なる。（図７の一部に対して、残コピー数を省略している。）
つまり、コピー数の異なるパケットの到着やコピー処理により時々刻々と変化する残コピー数の累積値こそが実質的なキュー長を表しており、複製部１１０の負荷状態を適切に表す指標と言える。
【００６４】
そこで、複製部１１０毎にキューイングされている全てのパケットの累積残コピー量を動的に管理し、到着パケットをその値が最も小さい複製部１１０へ振り分ける負荷分散方法が必要となる。
【００６５】
また、累積残コピー量の値が同じである場合は分散処理したパケットをより早く送出される複製部１１０へ到着パケットを送るものとする。図８に本方法の概念を示す。図８（ａ）は通常のコピー機能ブロックの見た目のキューの様子であり、各蓄積部１１２の蓄積パケットの上の数字は各パケットの残コピー数を表している。
【００６６】
図８（ｂ）は、蓄積パケットそれぞれの残コピー数に基づいて実質的なキュー長に変換した仮想的な（実質的な）キュー状態の様子を表している。こうすることにより、実質的に負荷が低い複製部１１０を明確化し、その複製部１１０に振り分ける。
【００６７】
また、到着パケットは常に最小実質キューの複製部１１０に送られる為、各複製部１１０のコピー時の宛先順序を同一にしておきさえすれば順序性も担保できる。例えば、図９の様にパケット中継装置１に同一フローのパケット［１］［２］（それぞれ１番目のパケットと２番目のパケットを表すものとする）が続けて到着したとする（状態（Ａ））。なお、図９は、図６と同様に複製部が２つの場合で説明している。また、パケット中継装置は、入力ポート１８０から入力され、出力ポート１９０から出力される。
【００６８】
［１］［２］はそれぞれその時々の最小実質キューへ送られ、例えば、状態（Ｂ）の様に異なるパケット複製部１１０へ送られた場合、前述の原理により［１］の方がコピーは早く始まるが、［１］のコピー中に［２］のコピーが始まりコピー期間の重複が発生する場合が起きうる（状態（Ｃ））。
【００６９】
これらのパケット群が多重されると状態（Ｄ）の様に［１］［２］が混在するパケットストリームとなり、部分的には［２］が［１］より先行している状態になる。ただし、コピー時の宛先順序が同一であれば、宛先単位で見れば［１］［２］の順序性は保たれる為、状態（Ｅ）の様に出力方路毎に振り分けられた後は、各方路の出力（Ｑ＠１、Ｑ＠２、Ｑ＠３）において［１］［２］の順序となる。
【００７０】
累積残コピー管理テーブル１４０の累積残コピー量の保持について負荷分散部１２０と複製部１１０のフローチャートの一例を用いて詳しく説明する。まず、負荷分散部１２０のフローチャートの一例を図１０に示す。パケットが到着するとパケットのヘッダ情報等を元につけられた装置内フロー情報に基づいてフロー情報テーブル１３０より当該フローのコピー数を取得する（Ｓ１０）。
次に累積残コピー管理テーブル１４０から全複製部１１０の累積残コピー量を取得する。（Ｓ１１）累積残コピー量が最小となる複製部１１０にパケットを送出する（Ｓ１２）。
【００７１】
振り分け先にパケットが送出されると同時に当該パケットのコピー数を送出先である複製部１１０の累積残コピー量に加算して累積残コピー管理テーブル１４０の当該複製部１１０の累積残コピー量を更新する（Ｓ１３）。
【００７２】
次に複製部１１０のフローチャートの一例を図１１に示す。複製部１１０内の蓄積部１１２にパケットがあると処理対象パケット（バッファの先頭パケット）の属するフローのコピー数をコピーテーブル１１１にアクセスして取得する（Ｓ２０）。
【００７３】
該当パケットをコピーしてコピーしたパケットに宛先情報を付与し送出する（Ｓ２１）。当該複製部１１０の累積残コピー量からパケットを送出した分だけ減算する（コピー数で管理している場合は、例えば１パケット送出するごとに累積残コピー数カウンタ値から１減算する）（Ｓ２２）。
【００７４】
当該パケットのコピー先が残っているかを確認（Ｓ２３）。残っている場合（Ｓ２３：Ｙｅｓ（有り））、宛先を次の宛先に変更（Ｓ２４）してＳ２１からの動作を繰り返し行う。残っていない場合（Ｓ２３：Ｎｏ（無し））、現在の処理対象パケットを破棄（Ｓ２５）。
【００７５】
以上のように、負荷分散部１２０と複製部１１０から処理毎に各複製部１１０の累積残コピー量を加算、減算することにより各複製部１１０の累積残コピー量を正確に保持する。
【００７６】
また、累積残コピー量の減算方法は、この方法に限らず、例えばある程度まとめて（時間で区切って）減算するようにしても良い。
【００７７】
また、累積残コピー量の加算方法は、この方法に限らず、例えば複製部１１０の蓄積部１１２にパケットが入った時に加算するようにしても良い。
【００７８】
また、複製部１１０内で加算と減算結果をまとめて累積残コピー量を更新するようにしても良い。
【００７９】
上記構成により、パケット中継装置１に入力されたパケットは、負荷分散部１２０でそれぞれの複製部１１０ａ〜１１０ｃの累積残コピー量から最小の累積残コピー量の複製部１１０を選択することで、コピー量の分散ができる事に加えて同一フロー内の順序性を保つことができる。
【００８０】
また、動作クロックの限界による出力のスループットの限界に対して、対応が可能な複製性能をもつことができる。
【００８１】
（実施の形態１の変形例）
図５で説明したとおり従来の複製部が１つの場合、パケット長が短いとパケット中継装置の複製にかかる時間は、装置内のフロー番号を元にテーブルから装置内の宛て先情報を検索し、宛て先情報を付与しているところである。
【００８２】
従って、固定ポインタを用いてテーブルから装置内の宛て先情報の付与を分散する。その場合、パケット本体は、メモリ等に格納し、後で読み出す。この場合、パケット長が長くても６００ＭＨｚの動作クロックを用いて１ｃｌｏｃｋで６４バイトの読み出しが可能なため出力のスループットの低下は、起きない。例えば、２５６バイト（６４×４）のパケット長の読み出しには、４ｃｌｏｃｋ必要となる。しかし、出力も４倍の２５６バイトになるので出力におけるスループットは、低下しない。
【００８３】
図１２にコピー機能ブロック１００を用いて固定ポインタで分散するパケット中継装置５を示す。パケット中継装置５は、コピー機能ブロック１００の前後にメモリ管理部（ｗｒｉｔｅ側）１５０、メモリ管理部（ｒｅａｄ側）１６０を設ける。入力パケットは、メモリ管理部（ｗｒｉｔｅ側）１５０によりパケット本体とメモリアドレスに分けて、パケット本体をパケット用メモリ１７０に格納される。パケット本体は、可変長パケットでも固定長パケットのどちらでも良い。また、パケット中継装置５は、入力ポート１８０から信号が入力され、出力ポート１９０ａ〜１９０ｃから信号を出力する。
【００８４】
格納したパケット本体の代わりにメモリアドレスを示すポインタがコピー機能ブロック１００へ渡される。なお、実際はポインタのみではなくフロー情報など処理に必要な情報を付随してコピー機能ブロック１００へ渡される。この様なポインタを含む情報パケットは通常低いバイト数の固定長であるので、固定長パケットと同様に処理する事ができる。なお、コピー処理や他の処理（シェーピング、スケジューリングなど）を実施した後、メモリ管理部（ｒｅａｄ側）１６０によりポインタの情報に基づいてパケット用メモリ１７０からパケット本体が読み出される。
【００８５】
以上の構成により、テーブルからの情報を取得して付与にかかる時間を分散して処理を行うことができる。
【００８６】
（実施の形態２）
図１３に実施の形態２におけるコピー機能ブロック２００の構成を示す。実施の形態２のコピー機能ブロック２００は、複数の複製部２１０、負荷分散部２２０、累積残コピー管理テーブル２４０、フロー情報テーブル２３０を備える。なお、複製部２１０は、実施の形態１と同様に区別しない場合は、数字のみを記載している。なお、複製部２１０以外の構成要件においても同様に区別しない場合は、数字のみを記載する。
【００８７】
複製部２１０、負荷分散部２２０の構成は、図４の複製部１１０と負荷分散部１２０とほぼ同等である。累積残コピー管理テーブル２４０は、各複製部の累積残コピー量を有する。実施の形態２では、コピー量をバイト（ｂｙｔｅ）数で管理する。バイト数で管理するのは可変長パケットの場合に、（図５のように最小のパケット長がテーブル検索から宛て先与までの時間と同等以上とするときに）パケット長がコピー時間（＝実質キュー長）に影響を与える為、単純な累積コピー数の管理では順序逆転が発生してしまうためである。
【００８８】
例えば、２００バイトのパケットの複製から送出にかかる時間は、１００バイトのパケットのコピーの２倍の時間がかかる。 複製のみを考慮して行える理由については、図５を用いて説明する。最短のパケット長の時にテーブル検索でかかる時間より複製して送出するまでの時間を同じかそれ以上にすればよい。要するに最短のパケット長のパケットに対しての複製におけるクロック周波数とそのクロック数をテーブル検索で用いるクロック周波数とそのクロック数を同等以下にすればよい。例えば図５（ｂ）のように最短パケットが４００ＭＨｚの動作クロックを用いて２ｃｌｏｃｋ分で複製させることでコピーテーブルから装置内の宛て先の情報を取得するよりも同等以上で複製することになる。
【００８９】
フロー情報テーブル２３０は、フロー毎のコピー数に加え、同一フローの直近パケットの送出先複製部情報の直近複製部番号、フロー毎の全コピー完了時刻、複数の複製部２１０内にフロー毎のパケットの有無を示す有効Ｆｌａｇを有する。可変長パケットの場合、上記で述べたように単に累積残コピー量のみで判断すると順序逆転を防げないケースがあるため新たに直近複製部番号、全コピー完了時刻、有効Ｆｌａｇの情報が必要となる。
【００９０】
図１４を用いて可変長パケット時の順序逆転の問題を説明する。分かりやすくするため図１４は、実質キュー（仮想キュー）換算時のキューの様子を示すものとする。図１４はコピー数が３個のマルチキャストフロー＃４の２番目の５００バイトのパケット（以降［２］と表現）と、３番目の１００バイトのパケット（以降［３］と表現）が続けて到着する様子を示している。［２］が到着した時点では下の複製部の実質キュー長が小さいため、［２］は複製部２１０ｂの蓄積部２１２ｂに振り分けられる（ａ）
［２］の１個目のコピーは、現在時刻から２００バイト時間後に始まり７００バイト時間後に完了する。つまり、自パケットが５００バイトの長さを持っているため、一つのパケットコピーに５００バイト分の時間を要する。よって、２個目のコピーが完了する時間は現在時刻から１２００バイト時間後になる（２００＋５００×２）。
【００９１】
一方、［３］到着時には上の実質キューの方が短いため、［３］は複製部２１０ａの蓄積部２１２ａに振り分けられる（ｂ）。［３］は１個目のコピー完了時刻は８５０バイト時間後であり、［２］の１個目より遅い。しかし、自身のパケット長が１００バイトと短いため、２個目のコピー完了時刻は９５０バイト時間後となる（７５０＋１００×２）。つまり、２個目のパケットについては、後で送出されるべき［３］の方が先に送出されてしまう事になる。また、３個目についても［２］は、１７００バイト後、［３］は、１０５０バイト後となり、２個目と同様に順序逆転が起こる。
【００９２】
このような同一フロー内の順序逆転を防ぐためフロー情報テーブル２３０に、フロー毎の直近パケットをどの複製部２１０に送ったかを示す情報（直近複製部番号）と、そのパケットが全コピー完了する予定時刻情報（全コピー完了時刻）とを追加する。
【００９３】
直近の同一フローのパケットを送出した複製部２１０を示す情報（直近複製部番号）と予定時刻情報（全コピー完了時刻）から順序逆転が生じる場合には、図１４（ｃ）のように同じフローにパケットを振り分ける。
【００９４】
負荷分散部２２０は、到着パケットを累積残コピーｂｙｔｅ数カウンタ値が最も小さな複製部２１０へ振り分けた場合の送出完了予定時刻が、フロー情報テーブル２３０に保持されている当該フローの直近パケット送出完了予定時刻より大きい場合、累積残コピー量が最も小さいパケット複製部２１０か、あるいは累積残コピー量が同じ場合はパケット多重時により早く送出されるパケット複製部２１０へ到着パケットを送る。
【００９５】
また小さい場合はフロー情報テーブル２３０に保持されている直近パケットを送った複製部２１０へ到着パケットを送る事とする。
【００９６】
また、複数の複製部２１０内にフロー毎のパケット有無を示す有効Ｆｌａｇを用いることで対比が必要のないフローは、比べずに累積残コピーバイト数カウンタ値が最も小さいパケット複製部２１０に送出することができる。各複製部２１０からのパケット読出しはフェアキューイングアルゴリズムに従い読み出されるものとする。
【００９７】
以上の構成ならびに振り分け方法とすることにより、累積残コピー量がバイト数の場合、最小の複製部２１０に振り分けても順序逆転が発生しないケースは当該複製部２１０に振り分けられ、順序逆転が発生するケースでは同一フローの直前のパケットと同じ複製部２１０に振り分けることにより順序逆転を回避できるので可変長パケットの場合でも同一フロー内の順序性と複製部２１０ごとの従来よりも負荷の均等化を図ることができる。
【００９８】
実施の形態２における累積残コピー管理テーブル２４０内の情報を正しく保持するために値の更新について負荷分散部２２０と複製部２１０のフローチャートの一例を用いて説明する。
【００９９】
負荷分散部２２０のフローチャートの一例を図１５に示す。
【０１００】
パケットが到着すると、フロー情報取得部２２１において、到着パケットのバイト単位のパケット長情報（ＰａｃｋｅｔＬｅｎｇｔｈ：ＰＬ）や、フロー情報テーブル２３０からコピー数情報（ＮｕｍｂｅｒｏｆＣｏｐｙ：ＮＣ）、直近複製部番号、全コピー完了時刻情報（Ｔｉｍｅｏｆｃｏｐｙｃｏｍｐｌｅｔｅ：Ｔｃｃ）、有効Ｆｌａｇ等のフロー情報をそれぞれ取得する（Ｓ３０）。なお、パケットがパディング（短いデータの前や後に無意味なデータを追加して長さを合わせる処理）されている場合は、パディング部も含めた長さがＰＬとなる。
【０１０１】
次に、累積残コピー管理テーブル２４０にアクセスし、全ての複製部２１０の累積残コピー量（累積残コピーｂｙｔｅ数）情報を取得し、累積残コピー量の最小値（ＭｉｎｉｍｕｍＣｏｕｎｔｅｒ：Ｃｔ＿ｍｉｎ）の複製部２１０のカウンタ値と、そのフローの直近複製部番号のカウンタ値（Ｃｏｕｎｔｅｒｏｆｔｈｉｓｆｌｏｗ：Ｃｔ＿ｆｌｏｗ）を割り出す（Ｓ３１）。
【０１０２】
次に、有効Ｆｌａｇの確認をする。（Ｓ３２）有効Ｆｌａｇは到着パケットと同じフローの前のパケットが、まだ複製部２１０内に存在するか否かを表すフラグである。有効Ｆｌａｇ＝０の場合、同一フローのパケットは既にいずれの複製部２１０にも存在しないため、順序逆転を気にする必要がないので逆転を気にせず振り分けることが可能となり、該当するフローの有効Ｆｌａｇを“１”に書き換える（Ｓ３４）。
パケットの振分先複製部がＣｔ＿ｍｉｎの情報を持つ複製部２１０となり、当該複製部２１０の全コピー完了時刻情報、直近複製部情報を更新して振分先の複製部２１０に送出する。（Ｓ３６）
一方、有効Ｆｌａｇ＝１の場合、前のパケットがまだ複製部２１０に対応する蓄積部２１２にある為、順序逆転が起きないような計算を行う必要がある。同一フローの直近のパケットが読出し完了となる時刻はフロー情報テーブルに全コピー完了時刻情報として管理されており、到着したパケットをＣｔ＿ｍｉｎの複製部２１０に振り分けた時、仮にその読出し完了時刻が全コピー完了時刻情報より小さければ、後着の到着パケットの方が先に読出し完了となり、順序逆転が起きることを意味する。この様なケースではＣｔ＿ｍｉｎにパケットを振り分けてはいけない。
【０１０３】
Ｃｔ＿ｍｉｎの複製部２１０にパケットを振り分けた場合、到着パケットが読出し完了となる時刻は以下の式により表すことができる。
（式１）
到着パケット読出し完了時刻= 現在時刻 + Ct_min + (PL×NC)
現在時刻とは、バイトを単位とした時刻カウンタの値である。理論的には１バイト分のデータが読み出される毎に１ずつ加算される。Ｃｔ＿ｍｉｎは最小カウンタのバイトカウンタ値なので、このバッファのパケットが全てコピーされるためには、当然Ｃｔ＿ｍｉｎ分のバイト単位時間がかかる。ここに到着パケットが入るとさらに、パケット長×コピー数（ＰＬ×ＮＣ）分の時間がかかるので、到着パケットの最終的な読出し完了時刻は、現在時刻と振分先複製部２１０の残コピーバイト数、パケット長×コピー数（ＰＬ×ＮＣ）を足し合わせたものになる。
【０１０４】
到着パケット読出し完了時刻＞全コピー完了時刻情報（Ｓ３３：Ｎｏ（順序逆転なし））の場合、順序逆転は起きないので、パケットの振分先複製部がＣｔ＿ｍｉｎの情報を持つ複製部２１０となり、当該フローの全コピー完了時刻情報、直近複製部情報を更新して振分先の複製部２１０に送出する。（Ｓ３６）
一方、到着パケット読出し完了時刻＞全コピー完了時刻情報（Ｓ３３：Ｙｅｓ（逆転有り））の場合、パケットの振分先が直近のパケットを送った複製部２１０となり、当該フローの全コピー完了時刻情報の値を書き換えて送出する。（Ｓ３５）
振り分け先に送出されるとき（Ｓ３５とＳ３６の後）に振分先の累積算コピー量に（ＰＬ×ＮＣ）を加算して、累積算コピー量を更新する。（Ｓ３７）
次に、図１６に実施の形態２の複製部２１０のフローチャートの一例を示す。各複製部２１０は、蓄積部２１２にパケットが有れば先頭パケットを対象にコピー処理を開始する。まず、パケット長（ＰＬ）を取得した後、コピーテーブル２１１にアクセスし、当該パケットの属するフローのコピー情報（宛先情報等）を取得する。（Ｓ４０）
そしてパケットをコピーし、宛先情報を付与してパケットを送出する。（Ｓ４１）パケットを送出すると、当該パケット複製部２１０の累積残コピー量（累積残バイト数）をＰＬ分だけ減算する。（Ｓ４２）
当該パケットの残りコピー先の有無を確認する（Ｓ４３）。コピー先がまだ残っている場合（Ｓ４３：Ｙｅｓ）は、コピーの宛先を次の宛先へ移して（Ｓ４４）、Ｓ４１からの処理を行う。また、コピーが全て完了した場合（Ｓ４３：Ｎｏ）、現在の処理対象パケットを廃棄すると共に、フロー情報テーブル２３０にアクセスし、当該フローの全コピー完了時間（Ｔｃｃ）等の情報を取得する（Ｓ４５）。
【０１０５】
現在時刻と当該フローの全コピー完了時刻情報の大小関係を確認する。（Ｓ４６）現在時刻のほうが大きい場合（Ｓ４６：Ｙｅｓ）、現時点において当該フローのコピーは全て完了し、複製部２１０に対応する蓄積部２１０にはパケットは存在しないので、有効Ｆｌａｇを“０”に更新する。（Ｓ４７）現在時刻が全コピー完了時刻情報以上（Ｓ４６：Ｎｏ）であれば、蓄積部２１２内に、まだ当該フローのコピー待ちパケットがある事を示しているため、特に値の更新は行わず処理を完了する。
【０１０６】
以上の負荷分散部２２０と複製部２１０のフローチャートからそれぞれの処理により累積残コピー管理テーブル２４０の累積残コピー量やフロー情報テーブル２３０の直近複製部、全コピー完了時刻、有効Ｆｌａｇを正確に更新できる。
【０１０７】
なお、負荷分散部２２０で、複製部２１０への振分を最小で出力される複製部２１０のみで考慮したが、考慮する複製部２１０は、いくつでも良い。その場合は、累積残コピー量（累積残バイト数）が小さい複製部順に行うとよい。
また、Ｓ３１とＳ３２を逆にして、有効Ｆｌａｇを確認後に累積残コピー量の最小値（Ｍｉｎｉｍｕｍ Ｃｏｕｎｔｅｒ ： Ｃｔ＿ｍｉｎ）の複製部のカウンタ値と、そのフローの直近複製部番号のカウンタ値（Ｃｏｕｎｔｅｒｏｆｔｈｉｓｆｌｏｗ：Ｃｔ＿ｆｌｏｗ）を割り出すようにしてもよい。
【０１０８】
また、有効Ｆｌａｇを使わなくても良い。その場合、負荷分散部２２０は、複製部に２１０に同一フローのパケットがなくても到着パケット読出し完了時刻（＝現在時刻＋Ｃｔ＿ｍｉｎ＋（ＰＬ×ＮＣ））の計算をして全コピー完了時刻情報と比較して宛て先を決める。（同一フローが残ってないと現在時刻より全コピー完了時刻情報が小さくなるので最小に振分が可能となる。）複製部２１０は、有効Ｆｌａｇがないので有効Ｆｌａｇの更新を行わない。
【０１０９】
また、可変長パケットで例を示してきたが、固定長パケットの場合でも、バイト数で管理するようにしても良い。その場合、同様のワークフローでも良いし、フロー情報テーブル２３０から直近複製部、全コピー完了時刻、有効Ｆｌａｇ等の情報を削除した方法を用いても良い。
【０１１０】
（実施の形態３）
図１７に実施の形態３のコピー機能ブロック３００の構成を示す。図１７は、複製部３１０がパケット中継装置の外部にあり、外部の複製部３１０の例としてＮＦＶ（Ｎｅｔｗｏｒｋ Ｆｕｎｃｔｉｏｎ Ｖｉｒｔｕａｌｉｚａｔｉｏｎ）の場合を示しているがこれに限定するものではない。コピー機能ブロック３００は、パケット中継装置内の負荷分散部３２０、フロー情報テーブル３３０、累積残コピー管理テーブル３４０と外部の複数の複製部３１０を備える。なお、実施の形態３においても構成要件が複数あるものについて区別しない場合は、単に数字のみを記載する。
【０１１１】
フロー情報テーブル３３０は、図４のフロー情報テーブル１３０とほぼ同等である。累積残コピー管理テーブル３４０は、振り分け先のそれぞれの複製部３１０の宛て先情報と累積残コピー量を保持している。宛て先情報は、例えば、複製部３１０の番号として保持している。又、負荷分散部３２０は、累積残コピー管理テーブル３４０の情報を元に振り分け先の外部の複製部３１０をきめて、当該複製部３１０の宛て先情報（ｄｅｓｔｉｎａｔｉｏｎａｄｄｒｅｓｓ）を付与して送出する。
【０１１２】
複数の複製部３１０は、例えば、外部のサーバ又は、バーチャルマシン（Ｖｉｒｔｕａｌ Ｍａｃｈｉｎｅ ： ＶＭ）であり、これらがパケットの複製を行う。複製部３１０ａ〜３１０ｃ（ＶＭ＃１〜ＶＭ＃３）が複製したパケットは、再びパケット中継装置に戻して、各出力ポートで出力される。
【０１１３】
また、累積コピー管理テーブル３４０の各複製部の累積残コピー量は、例えば、複製部３１０に送出すると該当の累積残コピー量に該当のコピー量を加算して、外部複製部３１０からパケットを受け取ったら該当の複製部３１０におけるコピー量を減算するようにして値を保持する。なお、減算する際の複製部３１０の判断として、例えば、複製部３１０からパケット中継装置に複製パケットが送られてくるときの複製パケットについている送信元情報（ｓｏｕｒｃｅ ａｄｄｒｅｓｓ）を基に送信元の複製部３１０を判断する。
【０１１４】
以上の構成により、同一フローの順序性、負荷の均等分散に加えて、負荷がかかるコピー機能を外部の複製部３１０で行うのでパケット中継装置の負荷の軽減が図ることができる。
【０１１５】
（実施の形態４）
実施の形態４は、実施の形態３の構成に各外部の複製部３１０に対してそれぞれの速度調整のバッファ３５０、複合部３５５を備える。図１８は、実施の形態４にかかるコピー機能ブロック４００を示す。なお、実施の形態３と同一の構成要件については、同一の符号を記載する。
【０１１６】
速度調整バッファ３５０は、複製したパケットを遅延させて速度調整やバックプレッシャを有しており、バックプレッシャを複製部にかけることで一時的に複製をとめることができる。なお、速度調整バッファ３５０は、バッファ部３５０と記載することがある。また、累積残コピー量は、バッファ部３５０から出力する時に減算する。バッファ部３５０で調整されたパケットは、複合部３５５の条件に従い読み出す。
【０１１７】
複合部３５５は、条件付Ｆａｉｒ Ｑｕｅｕｉｎｇで各バッファ部３５０からの出力を読み出す。条件については、後述する。
【０１１８】
また、バッファ部３５０の速度調整は、パケットの複製を外部のサーバ等でそれぞれ処理をすると、各サーバの処理性能等（ＣＰＵ性能等）が異なることや、ＣＰＵへの割り込み処理などが起きることがあるため、処理性能が各サーバで不均一かつ不安定になる可能性があることにより、最小実質キューの複製部３１０にパケットを振り分けても期待する順序で出力されず順序逆転の可能性を考慮する必要性が出てくるために用いられている。
【０１１９】
また、複製部３１０の不安定要因に基づく性能差については、前段の負荷分散部３２０において予測する事は難しいため、複製部３１０の後段においてリアクティブに対処する方が良いと考えられるが、前段の段階で考慮できるなら考慮するように振り分けても良い。
【０１２０】
図１９に複製部３１０の性能差分による不安定要因を解消する仕組みである複合部３５５の条件付Ｆａｉｒ Ｑｕｅｕｉｎｇのフローチャートの一例を示す。なお、図１９のフローチャートは、各複製部３１０に対してそれぞれ行う。また、フローチャート中のｋは、複製部３１０（ＶＭ＃ｋ）の番号を示す。
【０１２１】
ＶＭ＃ｋに対応するＦｌａｇ＃ｋに０を格納する（Ｓ５０）。複製部３１０（ＶＭ＃ｋ）に対応する累積残コピー量を取得（Ｓ５１）。複製部ＶＭ＃ｋに対応する残累積残コピー量＝０なのかを調べる（Ｓ５２）。
【０１２２】
累積残コピー量が０の場合（Ｓ５２：Ｙｅｓ）、Ｆｌａｇ＃ｋに２を格納（Ｓ５６）して終了する。累積残コピー量が０でない場合（Ｓ５２：Ｎｏ）、バッファ部３５０のパケットの有無を調べる（Ｓ５３）。
【０１２３】
バッファ部３５５にパケットがある場合（Ｓ５３：Ｙｅｓ）、Ｆｌａｇ＃ｋに１を格納（Ｓ５６）して終了する。バッファ部３５５にパケットがない場合（Ｓ５３：Ｎｏ）、Ｆｌａｇ＃ｋに０を格納（Ｓ５４）して終了する。
【０１２４】
各複製部３１０（ＶＮ＃ｋ）のＦｌａｇ＃ｋに対して、全て２が格納されている場合は、全Ｑがステップするので読み出しができない。（読み出しするパケットがない。）全てのＦｌａｇ＃ｋのうち１つでも０が格納してあると複合部３５５での読み出しを一時停止させる。ただし、残りの複製部３１０（Ｆｌａｇ＃ｋが０を示していない複製部３１０）が残り全て２が格納している場合は、これに限らず、全Ｑがステップするので読み出しができない（読み出しするパケットがない）としても良い。それ以外の（全てのＦｌａｇ＃ｋのうちいずれかに１が格納され、いずれにも２が格納されていない）場合では、ＦａｉｒＱｕｅｕｉｎｇでパケットの読み出しを行う。このような条件の基で行うことで複合部３５５は、各複製部３１０からの出力を待ってから信号の複合を行うことで順序逆転を防ぐようにしている。
【０１２５】
なお、複合部３５５での読み出しを一時停止するさいに、該当バッファ部３５０以外のバッファ部３５０がバックプレッシャの指示を出して該当バッファ部３５０以外のバッファ部３５０に対応する複製部３１０の複製を一時停止するようにしても良い。
【０１２６】
図２０に実施の形態４の複製部３１０のフローチャートの一例を示す。蓄積部３１２にパケットがあり且つバッファ部３５０からのバックプレッシャがないときに複製処理を開始する。
【０１２７】
複製部３１２内のバッファにパケットがあると処理対象パケット（蓄積部３１２の先頭パケット）の属するフローのコピー数をコピーテーブル３１１にアクセスして取得（Ｓ６０）。
【０１２８】
該当パケットをコピーしてコピーしたパケットに宛先情報を付与し送出（Ｓ６１）。
【０１２９】
当該パケットのコピー先が残っているかを確認（Ｓ６２）。残っていない場合（Ｓ６２：Ｎｏ）は、現在の処理対象パケットを破棄（Ｓ６６）。残っている場合（Ｓ６２：Ｙｅｓ）、バッファ部３５０からのバックプレッシャ値の確認を行う（Ｓ６３）。
【０１３０】
バックプレッシャがある場合（Ｓ６３：Ｎｏ）は、バックプレッシャ解除まで待機（Ｓ６４）。バックプレッシャが解除又は、バックプレッシャがない場合（Ｓ６３：Ｙｅｓ）は、宛先を次の宛先に変更（Ｓ６５）してＳ６１に移る。
【０１３１】
なお、負荷分散部３２０は、実施の形態１とほぼ同様であり、振り分け時に宛て先を付与して送出する。
【０１３２】
実施の形態４の構成により、外部の複製部３１０の処理能力が異なっていても同一フローにおける順序を守りつつパケットの複製処理の分散が可能となる。
【０１３３】
（実施の形態５）
実施の形態５は、新規追加した複製部３１０に対応するために累積残コピー管理テーブル３４０に有効Ｆｌａｇの情報を加える。
【０１３４】
外部の複製部３１０を用いる例としてＮＦＶがある。ＮＦＶの特徴として、付加に応じて機能の追加／削除を柔軟に行うというものがある。例えば、現状はＶＭ＃１、２、３という３つの複製部３１０で分散処理をしているが、負荷が高くなってくるとＶＭ＃４を追加、逆に負荷が低くなってくるとＶＭ＃３を削除といった様な処理が簡単に行える。
【０１３５】
複製部３１０が削除される場合は、当該複製部３１０へのパケットの振り分けが無くなるのみであり、特に問題は発生しない。しかし、追加される場合は順序逆転が起きる恐れがある。
【０１３６】
従って、累積残コピー管理テーブル３４０に振り分けの可否を示す有効Ｆｌａｇを追加して、有効Ｆｌａｇが１（振り分け可）の複製部３１０のみをパケット振分の対象とし、また新規に追加した複製部３１０の有効フラグの初期値を０（振り分け不可）とし、累積残コピー量が、既存の複製部の累積残コピー量の最大値以上になった時に有効Ｆｌａｇを１とするような仕組みを設ける。
【０１３７】
これにより、新規追加複製部は正当な状態になった時のみ有効Ｆｌａｇが１となり、振り分け対象となる。例えば、パケットが一時的に到着しなくなり、全ての累積残コピー量が０になった場合、新規累積残コピー量（＝０）は既存の複製部３１０の累積残コピー量の最大値（＝０）以上となるので、有効フラグが１となり振り分け対象となる。
【０１３８】
（実施の形態６）
実施の形態６は、実施の形態３の構成にダミー生成部３６０を備える。図２１は、実施の形態６のコピー機能ブロック５００の構成を示す。なお、図２１では、実施の形態４に実施の形態５で用いた有効Ｆｌａｇを用いているにダミー生成部３６０を加えた構成を示しているがこれに限定するわけでは、ない。また、実施の形態４と同一の構成要件については、同一の符号を記載する。
【０１３９】
ダミー生成部３６０は、ダミーパケットを生成する。
【０１４０】
例えば、図２２（ａ）が示す様な複製部３１０ａ〜３１０ｃ（ＶＭ＃１、２、３）を運用中に複製部３１０ｄ（ＶＭ＃４）を追加した場合、複製部３１０ｄ（ＶＭ＃４）はパケットが存在しないため累積残コピー量＝０であり、振り分け先の候補となる可能性が高い。しかし、これは正当な比較による最小値選択ではないため図２２（ｂ）に示す様な順序逆転が発生しうる。つまり、途中参加ゆえに累積残コピー量が小さい間は正当な比較となり得ない。
【０１４１】
しかし、何らかの手段により累積残コピー量が最大になれば、通常の選択論理に照らし合わせても選択されなくなる。一度この様な状態になれば、次に選択されるのは新規追加された複製部３１０ｄの累積残コピー量が本当に他の既存の複製部３１０ａ〜３１０ｃより小さくなった時であり、途中参加の影響が排除された正当状態と言える。
【０１４２】
そこで、パケット中継装置１内にダミー生成部３６０を持ち、複製部３１０ｄに対してダミーパケットを入力し、強制的に累積残コピー量を上昇させる。図２３にダミーパケットを生成して複製部３１０ｄ（ＶＭ＃４）に送出した状態を示す。図２３の累積残コピー量管理テーブル３３０は、ダミーパケット送信後に累積残コピー量管理テーブル３３０´となる。図２３は、例として複製部３１０ｄに対して１００のダミーパケットを生成して送っているが、複製部３１０ｄの累積残コピー量が既存の複製部３１０ａ〜３１０ｃの累積残コピー量の最大値以上（図２３だと７以上）とすればよい。
【０１４３】
この時、実施の形態５で用いた有効Ｆｌａｇを使ってダミーパケット振分完了後に有効Ｆｌａｇを１にする。
【０１４４】
実施の形態６の構成により、新規追加された複製部３１０ｄに対して、既存の複製部３１０ａ〜３１０ｃとの関係を正確に保ち、パケットの振り分けが可能となる。
【０１４５】
また、バイト数で累積残コピー量を管理している場合は、該当するバイト数をまとめてダミー生成部３６０で生成してコピーするようにしても良い。
【０１４６】
（実施の形態７）
実施の形態７は、新規追加した複製部３１０ｄに既存の複製部３１０ａ〜３１０ｃの累積残コピー量の最大値以上の空読みをさせる。実施の形態７の方法を用いることで、実施の形態６で用いたダミー生成部３６０を用いずに空読みによる累積残コピー量を管理することで既存の複製部との関係を正確に保って、パケットの振り分けが可能となる。
【０１４７】
また、バイト数で累積残コピー量を管理している場合は、該当するバイト数をまとめて  空コピーするようにしても良い。
【０１４８】
（実施の形態８）
実施の形態８は、フローごとの累積残コピー数を管理して、累積残コピー数が０のフローを複製部３１０ｄに振り分けて、既存の複製部３１０ａ〜３１０ｃと同等のコピー数を持たす方法である。この時、複製部３１０ｄに振り分けたフローを記憶し、複製部３１０ｄに振り分けたフローに関しては、全ての複製部３１０で比較して振り分けるようにしても良い。
【０１４９】
実施の形態８の構成により、空読みやダミーパケットに比べて新規追加した複製部３１０ｄで効率的に複製することが可能となる。
【０１５０】
ところで、実施の形態３から実施の形態８までで用いた図等に関しては、コピー量を固定長の場合であるコピー数として説明をした。これに限らず、実施の形態２で示したコピー量をバイト（ｂｙｔｅ）数で管理し、振り分けるように実施しても良い。
【０１５１】
以上説明したようなパケット中継装置によれば、コピー機能を分散して処理する際に同一フローの順序性を守りつつ、なるべく均等な負荷分散を可能にしたパケット中継装置ならびにパケット中継装置のパケットコピー機能分散方法を実現することができる。
【０１５２】
次に、以上述べた実施例を含む実施の形態に関し、更に以下の付記を開示する。以下の
付記に本発明が限定されるものではない。
（付記１）
パケットを複製して送出する複数の複製部と、
前記複数の複製部それぞれに対応し、前記パケットを蓄積する複数の蓄積部と、
各蓄積部の前記パケットの複製数を基に算出された前記複数の複製部それぞれに対応した累積残コピー量を用いて前記複数の蓄積部のいずれかに前記パケットを振り分ける負荷分散部と、
を備えたパケット中継装置。
（付記２）
前記複数の複製部それぞれに対応する前記累積残コピー量は、前記複数の蓄積部のうち前記パケットが振り分けられた蓄積部に対応する前記累積残コピー量に対して前記パケットの複製数に基づいて加算処理を行い、前記複数の複製部のうち複製パケットを送出した複製部に対応する前記累積残コピー量に対して前記複製パケットに基づいて減算処理を行うことで値を更新することを特徴とした付記１に記載のパケット中継装置。
（付記３）
前記複数の複製部は、それぞれに対応する蓄積部に蓄積されている前記パケットの情報に基づいて装置内の宛て先情報を付与し、前記蓄積部から該当の前記パケットを読み出して前記複製パケットを複製することを特徴とする付記１又は、２のいずれか１つに記載のパケット中継装置。
（付記４）
前記パケットが固定長のパケットであることを特徴とする付記１乃至３のいずれか１つに記載のパケット中継装置。
（付記５）  
前記累積残コピー量は、累積残複製数であることを特徴とする付記４に記載のパケット中継装置。
（付記６）
前記累積残コピー量は、累積残複製バイト数であることを特徴とする付記１乃至４のいずれか１つに記載のパケット中継装置。
（付記７）
前記負荷分散部は、前記複数の複製部のうち前記累積残コピー量が最小の複製部に振り分けることを特徴とする付記４又は、５のいずれか１つに記載のパケット中継装置。
（付記８）
前記パケットのフロー毎に複製数を保持する第１のテーブルをさらに備え、
前記負荷分散部は、前記第１のテーブルから前記パケットの複製数を得ることを特徴とする付記１乃至６のいずれか１つに記載のパケット中継装置。
（付記９）
前記第１のテーブルは、フロー毎の直近パケットの宛て先を示す直近情報と、当該フローの直近パケットが送出を完了する時刻情報をさらに有し、
前記負荷分散部は、前記直近情報、前記時刻情報と前記累積残コピー量に基づいて、振り分けることを特徴とする付記８に記載のパケット中継装置。
（付記１０）
前記第１のテーブルは、前記パケットにおけるフロー毎の前記複数の複製部内の前記パケットの有無を示す第１の有効フラグをさらに有し、前記第１の有効フラグが無効のときに、前記累積残コピー量に基づいて前記複数の複製部に振り分けることを特徴とする付記９に記載のパケット中継装置。
（付記１１）
前記負荷分散部の入力側でパケット本体とメモリアドレスを分割し、前記メモリアドレスに複製に必要な情報を付随して情報パケットにする第１のメモリ管理部と、
前記パケット本体を格納するパケット用メモリ部と、
前記複数の複製部のうちいすれかで複製された前記情報パケットに基づいて格納している前記パケット本体を読み出す第２のメモリ管理部と、を備えることを特徴とする付記１乃至１０のいずれか１つに記載のパケット中継装置。
（付記１２）
前記複数の複製部は、同一フローの前記パケットに対して前記複製パケットの出力先情報を同一順序で付与されるように複製を行うことを特徴とする付記１乃至１１のいずれか１つに記載のパケット中継装置。
（付記１３）
複数の宛先情報とそれぞれに対応している累積残コピー量の関係を示す第２のテーブルと
前記累積残コピー量に基づいて前記複数の宛先情報のいずれかをパケットに付与して送出する負荷分散部と、を備え、
前記累積残コピー量は、前記負荷分散部から前記パケットの送出に伴って付与した宛先情報の累積残コピー量を前記パケットのコピー数に基づいて加算し、受信した複製パケットの送信元の情報に該当する宛先情報の前記累積残コピー量を前記複製パケットから減算して値を更新することを特徴とするパケット中継装置。
（付記１４）
前記第２テーブルは、前記複数の宛先情報それぞれに対して振り分けの可否を示す第２の有効フラグをさらに有し、
前記負荷分散部は、前記第２の有効フラグが振り分け可能を示す前記複数の宛先情報からいずれか１つを付与することを特徴とした付記１３に記載のパケット中継装置。
（付記１５）
ダミーパケットを生成するダミー生成部をさらに備え、
前記ダミー生成部は、新規追加した宛先情報が前記複数の前記宛先情報のうち前記累積残コピー量が最大の前記複数の宛先情報部より前記新規追加した宛先情報の累積残コピー量が大きくなるまで前記ダミーパケットを送出し、
前記新規追加された宛先情報の前記第２の有効フラグは、追加時に振り分け不可を示し、前記複数の宛先情報の累積残コピー量のうちの最大値の前記累積残コピー量以上になると振り分け可能に変更することを特徴とする付記１４に記載のパケット中継装置。
（付記１６）
新規追加された宛先情報の前記第２の有効フラグは、新規追加時に振り分け不可を示し、前記累積残コピー量のうち前記既存の宛先情報の前記累積残コピー量の最大値の前記累積残コピー量以上になった時に振り分け可能に変更し、
前記負荷分散部は、前記同一フローの前記パケットを前記既存の宛先情報に送出していない又は、送出して前記複製パケットを全て受信している前記同一フローの前記パケットのみを前記新規追加した複製部への振り分けを可能にする付記１４に記載のパケット中継装置。
（付記１７）
前記複製パケットに対して受信した後に速度調整する前記複数の宛先情報それぞれに対応した複数のバッファ部を備えた付記１３乃至１６のいずれか１つに記載のパケット中継装置。
（付記１８）
前記複数のバッファ部が有する閾値をバッファ部に蓄積している前記複製パケットが超えると、前記バッファ部から、対応する前記宛て先情報を付与して一時的に複製パケットの送出を停止するように情報を送ることを特徴とする付記１７に記載のパケット中継装置。
（付記１９）
前記複製パケットを複合する複合部をさらに備え、
前記複合部は、前記累積残コピー量と前記複数のバッファ部における前記複製パケットの蓄積に基づいて複合していることを特徴とする付記１７又は、１８に記載のパケット中継装置。
（付記２０）
前記第２のテーブルが有する前記累積残コピー量は、前記バッファ部から送出するときに該当する前記宛先情報の前記累積残コピー量を減算することを特徴とする付記１７乃至１９のいずれか１つに記載のパケット中継装置。
（付記２１）
前記パケットが固定長のパケットであることを特徴とする付記１３乃至２０のいずれか１つに記載のパケット中継装置。
（付記２２）
前記累積残コピー量は、累積残複製数であることを特徴とする付記２１に記載のパケット中継装置。
（付記２３）
前記累積残コピー量は、累積残複製バイト数であることを特徴とする付記１３乃至２１のいずれか１つに記載のパケット中継装置。
（付記２４）
前記負荷分散部は、前記複数の宛先情報のうち前記累積残コピー量が最小の宛先情報を付与して送出することを特徴とする付記２１又は、２２のいずれか１つに記載のパケット中継装置。
（付記２５）
前記パケットのフロー毎に複製数を保持する第１のテーブルをさらに備え、
前記負荷分散部は、前記第１のテーブルから前記パケットの複製数を取得することを特徴とする付記１３乃至２３のいずれか１つに記載のパケット中継装置。
（付記２６）
前記第１のテーブルは、フロー毎の直近パケットの宛て先を示す直近情報と、当該フローの直近パケットが送出を完了する時刻情報をさらに有し、
前記負荷分散部は、前記直近情報、前記時刻情報と前記累積残コピー量に基づいて、前記宛先情報を付与することを特徴とする付記２５に記載のパケット中継装置。
（付記２７）
前記第１のテーブルは、フロー毎の前記複製パケットにおける全複製完了の有無を示す第１の有効フラグをさらに有し、前記第１の有効フラグが完了を示す前記パケットを前記累積残コピー量に基づいて前記複数の宛先情報のうちいずれか１つを付与して送出することを特徴とする付記２６に記載のパケット中継装置。
（付記２８）
パケットを複製する複数の複製部それぞれに対応し、前記パケットを蓄積する複数の蓄積部それぞれの前記パケットの複製数を基に算出された前記複数の複製部それぞれに対応した累積残コピー量を用いて前記複数の蓄積部のいずれかに前記パケットを振り分けることを特徴としたパケット中継装置のコピー分散方法。
【０１５３】
以上説明したように、通信モジュールの最も好ましい実施の形態等について説明したが、本発明は上記記載に限定されるものではなく、特許請求の範囲に記載され、又は発明を実施するための形態に開示された発明の要旨に基づき、当業者において様々な変形や変更が可能であることは勿論であり、斯かる変形や変更が、本発明の範囲に含まれることは言うまでもない。
【符号の説明】
【０１５４】
１００  コピー機能ブロック
１１０  複製部
１１１  コピーテーブル
１１２  蓄積部
１２０  負荷分散部
１２１  フロー情報取得部
１２２  複製部選択部
１２３  カウンタ加算部
１３０  フロー情報テーブル
１４０  累積残コピー管理テーブル
１５０  メモリ管理部（ｗｒｉｔｅ）
１６０  メモリ管理部（ｒｅａｄ）
１７０  パケット用メモリ
１８０  入力ポート
１９０  出力ポート
２００  コピー機能ブロック
２１０  複製部
２１１  コピーテーブル
２１２  蓄積部
２２０  負荷分散部
２２１  フロー情報取得部
２２２  複製部選択部
２２３  カウンタ加算部
２３０  フロー情報テーブル
２４０  累積残コピー管理テーブル
３００  コピー機能ブロック
３１０  複製部
３１１  コピーテーブル
３１２  蓄積部
３２０  負荷分散部
３２１  フロー情報取得部
３２２  複製部選択部
３２３  カウンタ加算部
３３０  フロー情報テーブル
３４０  累積残コピー管理テーブル
３５０  速度調整バッファ
３６０  ダミー生成部
【図１】
2016208195.tif 000003
【図２】
2016208195.tif 000004
【図３】
2016208195.tif 000005
【図４】
2016208195.tif 000006
【図５】
2016208195.tif 000007
【図６】
2016208195.tif 000008
【図７】
2016208195.tif 000009
【図８】
2016208195.tif 000010
【図９】
2016208195.tif 000011
【図１０】
2016208195.tif 000012
【図１１】
2016208195.tif 000013
【図１２】
2016208195.tif 000014
【図１３】
2016208195.tif 000015
【図１４】
2016208195.tif 000016
【図１５】
2016208195.tif 000017
【図１６】
2016208195.tif 000018
【図１７】
2016208195.tif 000019
【図１８】
2016208195.tif 000020
【図１９】
2016208195.tif 000021
【図２０】
2016208195.tif 000022
【図２１】
2016208195.tif 000023
【図２２】
2016208195.tif 000024
【図２３】
2016208195.tif 000025
【図２４】
2016208195.tif 000026