(57)【特許請求の範囲】
【請求項１】
一つ以上の通信経路に接続される複数のインタフェースと、データを一時的に格納するバッファと、前記バッファを制御するバッファ制御部と、を備えるデータ転送装置であって、
前記複数のインタフェースは、第１インタフェース及び第２インタフェースを含み、
前記複数の通信経路は、前記第１インタフェースに接続される第１通信経路及び前記第２インタフェースに接続される第２通信経路を含み、
前記第１インタフェース及び前記第２インタフェースは、シーケンス番号が付与されたデータを前記第１通信経路及び前記第２通信経路から受信し、
前記データ転送装置が、前記第１通信経路から、第１シーケンス番号が付与された第１データを受信する前に、前記第１シーケンス番号の次のシーケンス番号である第２シーケンス番号が付与された第２データを受信した場合、前記バッファ制御部は、
受信した前記第２データを前記バッファに格納し、
前記データ転送装置が、前記第２通信経路から、前記第１シーケンス番号が付与された前記第１データを受信した場合、受信した前記第１データを前記バッファに格納し、前記第１データ及び前記第２データをそれらに付与された前記シーケンス番号の順に前記バッファから読み出して前記複数のインタフェースの一つに送信させ、
前記データ転送装置が、前記第２通信経路から、前記第１シーケンス番号が付与された前記第１データを受信する前に前記第２シーケンス番号が付与された前記第２データを受信した場合、前記第２データを前記バッファから読み出して前記複数のインタフェースの一つに送信させ、
所定の待ち時間が経過したか否かを判定し、前記所定の待ち時間が経過したと判定された場合、前記第２データを前記バッファから読み出して前記複数のインタフェースの一つに送信させることを特徴とするデータ転送装置。
【請求項２】
前記バッファ制御部は、前記データ転送装置が前記第１通信経路から前記第２データを受信した時点から前記所定の待ち時間が経過した場合、前記所定の待ち時間が経過したと判定することを特徴とする請求項１に記載のデータ転送装置。
【請求項３】
前記所定の待ち時間は、前記第１通信経路におけるデータ転送遅延時間と前記第２通信経路におけるデータ転送遅延時間との差であることを特徴とする請求項２に記載のデータ転送装置。
【請求項４】
前記バッファ制御部は、前記データ転送装置が、前記第１通信経路から、前記第１シーケンス番号の一つ前のシーケンス番号である第３シーケンス番号が付与された第３データを受信した時点から前記所定の待ち時間が経過した場合、前記所定の待ち時間が経過したと判定することを特徴とする請求項１に記載のデータ転送装置。
【請求項５】
前記バッファ制御部は、前記データ転送装置が前記各通信経路から前記データを受信すると、前記受信したデータと、前回受信したデータとの間の時間間隔を計測し、複数の前記計測された時間間隔の平均値を算出し、
前記所定の待ち時間は、前記算出された時間間隔の平均値に、前記第１通信経路におけるデータ転送遅延時間と前記第２通信経路におけるデータ転送遅延時間との差を加算した値であることを特徴とする請求項４に記載のデータ転送装置。
【請求項６】
前記バッファ制御部は、前記データ転送装置が前記各通信経路から前記データを受信すると、前記受信したデータと、前回受信したデータとの間の時間間隔を計測し、複数の前記計測された時間間隔の最大値を算出し、
前記所定の待ち時間は、前記算出された時間間隔の最大値に、前記第１通信経路におけるデータ転送遅延時間と前記第２通信経路におけるデータ転送遅延時間との差を加算した値であることを特徴とする請求項４に記載のデータ転送装置。
【請求項７】
前記データ転送装置は、前記第１通信経路及び前記第２通信経路を介して他のデータ転送装置に接続され、
前記バッファ制御部は、
前記データ転送装置が前記複数の通信経路の一つから前記他のデータ転送装置に送信されるべきデータを受信すると、前記受信したデータの複製を作成し、
前記受信したデータ及びその複製に、同一の前記シーケンス番号を付与し、
前記受信したデータ及びその複製の一方に、前記第１通信経路に接続された前記他のデータ転送装置のインタフェースの識別子を宛先情報として付与し、前記受信したデータ及びその複製のもう一方に、前記第２通信経路に接続された前記他のデータ転送装置のインタフェースの識別子を宛先情報として付与し、
前記シーケンス番号及び前記宛先情報が付与された、前記受信したデータ及びその複製を、前記第１インタフェース及び前記第２インタフェースから前記他のデータ転送装置に送信させることを特徴とする請求項１に記載のデータ転送装置。
【請求項８】
一つ以上の通信経路に接続される複数のインタフェースと、データを一時的に格納するバッファと、前記バッファを制御するバッファ制御部と、を備えるデータ転送装置におけるデータ転送方法であって、
前記複数のインタフェースは、第１インタフェース及び第２インタフェースを含み、
前記複数の通信経路は、前記第１インタフェースに接続される第１通信経路及び前記第２インタフェースに接続される第２通信経路を含み、
前記第１インタフェース及び前記第２インタフェースは、シーケンス番号が付与されたデータを前記第１通信経路及び前記第２通信経路から受信し、
前記方法は、前記データ転送装置が、前記第１通信経路から、第１シーケンス番号が付与された第１データを受信する前に、前記第１シーケンス番号の次のシーケンス番号である第２シーケンス番号が付与された第２データを受信した場合に、受信した前記第２データを前記バッファに格納する手順と、
前記データ転送装置が、前記第２通信経路から、前記第１シーケンス番号が付与された前記第１データを受信した場合、受信した前記第１データを前記バッファに格納し、前記第１データ及び前記第２データをそれらに付与された前記シーケンス番号の順に前記バッファから読み出して前記複数のインタフェースの一つに送信させる手順と、
前記データ転送装置が、前記第２通信経路から、前記第１シーケンス番号が付与された前記第１データを受信する前に前記第２シーケンス番号が付与された前記第２データを受信した場合、前記第２データを前記バッファから読み出して前記複数のインタフェースの一つに送信させる手順と、
所定の待ち時間が経過したか否かを判定する手順と、
前記所定の待ち時間が経過したと判定された場合、前記第２データを前記バッファから読み出して前記複数のインタフェースの一つに送信させる手順と、を含むことを特徴とする方法。
【請求項９】
前記所定の待ち時間が経過したか否かを判定する手順において、前記データ転送装置が前記第１通信経路から前記第２データを受信した時点から前記所定の待ち時間が経過した場合、前記所定の待ち時間が経過したと判定されることを特徴とする請求項８に記載の方法。
【請求項１０】
前記所定の待ち時間は、前記第１通信経路におけるデータ転送遅延時間と前記第２通信経路におけるデータ転送遅延時間との差であることを特徴とする請求項９に記載の方法。
【請求項１１】
前記所定の待ち時間が経過したか否かを判定する手順において、前記データ転送装置が、前記第１通信経路から、前記第１シーケンス番号の一つ前のシーケンス番号である第３シーケンス番号が付与された第３データを受信した時点から前記所定の待ち時間が経過した場合、前記所定の待ち時間が経過したと判定されることを特徴とする請求項８に記載の方法。
【請求項１２】
前記方法は、さらに、前記データ転送装置が前記各通信経路から前記データを受信すると、前記受信したデータと、前回受信したデータとの間の時間間隔を計測する手順と、複数の前記計測された時間間隔の平均値を算出する手順と、を含み、
前記所定の待ち時間は、前記算出された時間間隔の平均値に、前記第１通信経路におけるデータ転送遅延時間と前記第２通信経路におけるデータ転送遅延時間との差を加算した値であることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記方法は、さらに、前記データ転送装置が前記各通信経路から前記データを受信すると、前記受信したデータと、前回受信したデータとの間の時間間隔を計測する手順と、複数の前記計測された時間間隔の最大値を算出する手順と、を含み、
前記所定の待ち時間は、前記算出された時間間隔の最大値に、前記第１通信経路におけるデータ転送遅延時間と前記第２通信経路におけるデータ転送遅延時間との差を加算した値であることを特徴とする請求項１１に記載の方法。
【請求項１４】
前記データ転送装置は、前記第１通信経路及び前記第２通信経路を介して他のデータ転送装置に接続され、
前記方法は、さらに、
前記複数の通信経路の一つから前記他のデータ転送装置に送信されるべきデータを受信すると、前記受信したデータの複製を作成する手順と、
前記受信したデータ及びその複製に、同一の前記シーケンス番号を付与する手順と、
前記受信したデータ及びその複製の一方に、前記第１通信経路に接続された前記他のデータ転送装置のインタフェースの識別子を宛先情報として付与し、前記受信したデータ及びその複製のもう一方に、前記第２通信経路に接続された前記他のデータ転送装置のインタフェースの識別子を宛先情報として付与する手順と、
前記シーケンス番号及び前記宛先情報が付与された、前記受信したデータ及びその複製を、前記第１通信経路及び前記第２通信経路を介して前記他のデータ転送装置に送信する手順と、を含むことを特徴とする請求項８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書で開示される技術は、パケット転送装置に関し、更に詳しくは、プロテクション機能を備え、複数のリンクを介して接続されるパケット転送装置及びシステムに関する。
【背景技術】
【０００２】
政府は、「ｅ−Ｊａｐａｎ戦略」及び「ｅ−Ｊａｐａｎ重点計画」において、高度情報通信ネットワーク社会形成に向けた目標と、これを実現するために重点的に実施する必要がある具体的施策を提示した。その大きなテーマの一つが放送と通信の融合である。現在まで豊富なコンテンツを蓄積してきた放送と、急速に利便性を高めているコンピュータネットワークを融合させた、新たなネットワークサービスに対する期待が高まっている。
【０００３】
放送サービスを現在のネットワーク上で実現するための、最も有力な技術はストリーミング技術である。ストリーミングサービスでは、指定された時間にフレームを再生する必要があるため、数秒先の再生データまで予めアプリケーションバッファに保持しておく仕組みになっている。このバッファに、連続的な再生をするのに十分なデータがないと判断される場合、一定量のデータを蓄えるまで再生が再開されない。このため、放送サービスでは、通信の遅延や揺らぎに加え、フレーム損失が品質に大きな影響を与えるため、ネットワーク上でのフレーム損失を防止することが最も重要である。
【０００４】
現在のＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ネットワークでは、上位層プロトコルであるＴＣＰ（Ｔｒａｎｓｐｏｒｔ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）の再送制御によってフレーム損失を防止している。しかし、再送制御では遅延の増大が懸念される。このため、放送サービスのような大きな遅延を許容しないサービスには適用できない。従って、放送サービスデータを転送する際の上位層プロトコルはＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）が使用される。しかし、ＵＤＰはフレーム損失を防止するための機能を有していない。そこで、通信経路を二重化し、フレーム損失を防止するプロテクションが必要となる。特に、送信側装置から複数経路にフレームのコピーを送信し、受信側装置でそれらを選択し、転送する１＋１プロテクションは、フレーム損失を防止するのに最も有効である。
【０００５】
１＋１プロテクションでは、送信側装置はフレームにシーケンス番号を付与し、そのフレームをコピーして複数の通信経路に送信する。あるフレームと、そのフレームのコピーには、同一のシーケンス番号が付与される。一方、受信側装置は複数経路からのフレームのシーケンス番号を監視し、正常なフレームを選択して転送する。
【０００６】
特許文献１では、送信側装置がＶｏＩＰ（Ｖｏｉｃｅ  ｏｖｅｒ  ＩＰ）トラヒックを複数の経路に送信する。受信側装置は、フレームに付与されているシーケンス番号とアドレスを対応させたフレームバッファに、複数経路からのフレームを格納する。そして、そのフレームバッファから順番にフレームを読み出すことで、シーケンス番号順にフレームを転送することを実現している。これによって、バッファ内のフレーム入れ替えなどの複雑な処理なしに、フレームの損失及び順序逆転を防止できる。
【特許文献１】特開２００６−１００９００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
特許文献１を含む従来の１＋１プロテクションは、ＶｏＩＰやＴＤＭ（Ｔｉｍｅ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅｘ）エミュレーションのような、フレーム送信周期が一定で、かつ固定長フレームの処理を行うサービスが前提であった。このため、複数の論理フローが多重された場合でも、各論理フローにタイムスロットを割当て、受信側装置のフレームバッファからは一定の周期で読み出すことが可能であった。
【０００８】
しかし、放送サービスは上述のように、数秒先の再生データまで予めアプリケーションバッファに保持しておく仕組みになっているため、そのトラヒックはバースト性を帯びており、フレームの到着は一定周期でない。さらに、フレーム長が可変長である。このため、複数フローが多重された場合に各フローにタイムスロットを割当てる方法を用いることができない。これは、可変長フレームにタイムスロットを割当てるには、その最大フレーム長にタイミングを合わせる必要があるため、通信回線の帯域を十分に活用できないことに加え、多重できる論理フロー数が通信回線の帯域によって制限されてしまうためである。また、仮に帯域の上限まで論理フローを多重した場合に、最大フレーム長に合わせたタイミング割り当てでは、バースト的に到着したフレームの転送が間に合わず、バッファオーバフローを発生させる可能性がある。
【０００９】
このため、バッファからのフレーム読み出しは不定期に実行する必要がある。つまり、バッファにフレームがあれば読み出すといった処理が必要になる。しかし、シーケンス番号順にフレームを転送する必要があるため、一つの通信経路（例えば、通信経路０系）で一つのフレームが損失した場合、その次のフレームが正常に受信され、バッファに格納されたとしても、損失したフレームと同一のシーケンス番号が付与されたフレームがもう一方の経路（例えば、通信経路１系）から到着するのを待つ必要がある。
【００１０】
具体的には、例えば、通信経路０系からのシーケンス番号（ＳＮ）：２のフレームが損失し、受信側の転送装置が次のＳＮ：３のフレームを受信した場合である。この場合、両系の転送遅延差の影響で、通信経路０系からのＳＮ：３のフレームを受信した時点で、受信側の転送装置は通信経路１系からのＳＮ：２のフレームを受信していない。このため、通信経路１系からのＳＭ：２のフレームを受信するまで、受信側の転送装置はＳＮ：３のフレームの転送を待つ必要がある。しかし、通信経路１系でも、ＳＮ：２のフレームが損失してしまった場合、受信側の転送装置は、そのフレームをいずれの系からも受信できないため、既にバッファに格納されているＳＮ：３のフレームを転送することができなくなってしまう。
【００１１】
そこで、各通信経路においてフレームの順序逆転は発生しないと仮定して、両系からＳＮ：３のフレームを受信した時点で、ＳＮ：２のフレームは両系で損失したと判断し、ＳＮ：３のフレームを送信してもよい。実際、１＋１プロテクションを行うような高信頼ネットワークでは、同一フロー内での順序逆転は発生しないようにネットワークを構築することは容易であり、そうすることが普通である。しかし、上記の制御では、例えば通信経路１系で回線障害が発生した結果、通信経路１系からＳＮ：３以降のフレームを受信することができなくなった場合、転送装置は、正常な通信経路０系からフレームを受信しても、それらを全く転送できなくなってしまうという課題があった。これでは、１＋１プロテクションを実施している意味がなくなってしまう。
【課題を解決するための手段】
【００１２】
本願で開示する代表的な発明は、一つ以上の通信経路に接続される複数のインタフェースと、データを一時的に格納するバッファと、前記バッファを制御するバッファ制御部と、を備えるデータ転送装置であって、前記複数のインタフェースは、第１インタフェース及び第２インタフェースを含み、前記複数の通信経路は、前記第１インタフェースに接続される第１通信経路及び前記第２インタフェースに接続される第２通信経路を含み、前記第１インタフェース及び前記第２インタフェースは、シーケンス番号が付与されたデータを前記第１通信経路及び前記第２通信経路から受信し、前記データ転送装置が、前記第１通信経路から、第１シーケンス番号が付与された第１データを受信する前に、前記第１シーケンス番号の次のシーケンス番号である第２シーケンス番号が付与された第２データを受信した場合、前記バッファ制御部は、受信した前記第２データを前記バッファに格納し、前記データ転送装置が、前記第２通信経路から、前記第１シーケンス番号が付与された前記第１データを受信した場合、受信した前記第１データを前記バッファに格納し、前記第１データ及び前記第２データをそれらに付与された前記シーケンス番号の順に前記バッファから読み出して前記複数のインタフェースの一つに送信させ、前記データ転送装置が、前記第２通信経路から、前記第１シーケンス番号が付与された前記第１データを受信する前に前記第２シーケンス番号が付与された前記第２データを受信した場合、前記第２データを前記バッファから読み出して前記複数のインタフェースの一つに送信させ、所定の待ち時間が経過したか否かを判定し、前記所定の待ち時間が経過したと判定された場合、前記第２データを前記バッファから読み出して前記複数のインタフェースの一つに送信させることを特徴とする。
【発明の効果】
【００１３】
本発明の一実施形態によれば、放送サービスのような可変長フレームが非定期に到着するサービスに対して、１＋１プロテクションを実施することによってフレーム損失を防止することが可能となるため、ユーザに対して高品質なサービスを提供することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施形態について、図面を参照して説明する。
【００１５】
図１は、本発明の第１の実施形態のパケット転送装置が適用される通信ネットワークの一例を示す説明図である。
【００１６】
パケット転送装置１０Ａは、２つ以上の通信経路（図１の例では、通信経路０系ＮＷ０及び通信経路１系ＮＷ１）を介して、対向のパケット転送装置１０Ｎと接続される。この通信経路０系ＮＷ０及び通信経路１系ＮＷ１は物理回線であってもよいし、一つ以上のパケット転送装置によって構成されるネットワークであってもよい。さらに、パケット転送装置１０Ａは、端末７０−１と接続される。
【００１７】
パケット転送装置１０Ａは、パケット転送装置１０Ｎ及び端末７０−１の間で、フレームの転送処理、すなわち、フレームを受信し、受信したフレームを必要に応じて加工し、そのフレームを送信する処理を実行する。具体的には、端末７０−１がフレーム３０をパケット転送装置１０Ａに出力すると、パケット転送装置１０Ａはフレーム送信順序情報を表すシーケンス番号３２をフレーム３０に付与し、そのフレーム３０をコピーする。そして、パケット転送装置１０Ａは、フレーム３０及びそのコピーを通信経路０系ＮＷ０及び通信経路１系ＮＷ１に送信する。
【００１８】
通信経路０系ＮＷ０及び通信経路１系ＮＷ１に接続される、パケット転送装置１０Ａ及び１０Ｎの各インタフェースには、固有のアドレスが設定されている。パケット転送装置は、フレーム３０を各通信経路に送信する際に、フレーム３０が各通信経路に対応する受信側のパケット転送装置のインタフェースに到着するように、宛先アドレスを含むヘッダ３３をフレーム３０に付与する。
【００１９】
対向のパケット転送装置１０Ｎは、複数の通信経路から受信するフレームのシーケンス番号３２を監視し、シーケンス番号に欠落及び逆転が発生しないように、シーケンス番号の順にフレーム３４を端末７０−ｎに転送する。フレーム３４は、パケット転送装置１０Ｎが、受信したフレームから不要なシーケンス番号３２及びヘッダ３３を削除することによって生成したものである。
【００２０】
ここでは、端末７０−１から端末７０−ｎへの処理の流れを説明したが、逆方向の処理も全く同様に実行される。つまり、パケット転送装置１０Ａと１０Ｎは全く同様の構成となる。
【００２１】
パケット転送装置１０Ａ及びパケット転送装置１０Ｎは、例えば、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）パケットをペイロードとして含むイーサネット（登録商標）フレームを転送してもよい。しかし、本発明は、任意の形式のデータを転送するデータ転送装置に適用することができる。
【００２２】
図２は、本発明の第１の実施形態のパケット転送装置１０Ｎの動作の概要を示す説明図である。
【００２３】
具体的には、図２は、通信経路０系ＮＷ０及び通信経路１系ＮＷ１からパケット転送装置１０Ｎがフレームを受信するタイミングの一例、及び、それらのフレームを受信したパケット転送装置１０Ｎが実行する処理の一例を示す。図２には、それぞれが二つの通信経路に対応する二つの横軸が表示される。これらの横軸は、各通信経路を経由するフレームをパケット転送装置１０Ｎが受信するタイミングを示し、右に表示されるフレームほど早く受信されることを意味する。
【００２４】
パケット転送装置１０Ｎは、二つの通信経路、すなわち通信経路０系ＮＷ０及び通信経路１系ＮＷ１からフレームを受信している。受信するフレームには、フレームの送信順序を示すシーケンス番号（ＳＮ）が付与されている。同じシーケンス番号が付与された複数のフレームは、少なくとも、同一のペイロード４０５（図３参照）を含む。以下の説明において、複数のフレームの内容が同一であることは、それらのフレームが少なくとも同一のペイロード４０５を含むことを意味する。パケット転送装置１０Ｎは、受信したフレームを一度バッファ（図５参照）に格納し、バッファにフレームがあれば即時読み出して端末７０−ｎに転送する。この際、パケット転送装置１０Ｎはシーケンス番号を監視しており、シーケンス番号に欠落及び逆転がないように、シーケンス番号の順にフレームを転送する。
【００２５】
図２の例では、シーケンス番号（ＳＮ）：１のフレームからＳＮ：４のフレームまでが、送信側のパケット転送装置１０Ａから順次送信されている。
【００２６】
図２には、通信経路０系ＮＷ０の転送遅延が通信経路１系ＮＷ１の転送遅延より小さい例を示す。このため、通信経路０系ＮＷ０を経由するフレームは、それと同一内容の、通信経路１系ＮＷ１を経由するフレームよりも常に先にパケット転送装置１０Ｎに到着する。パケット転送装置１０Ｎは、通常、通信経路０系ＮＷ０からのフレームを受信すると、そのフレームを、バッファに格納後、すぐに送信する。
【００２７】
図２の例では、パケット転送装置１０Ｎは、最初に通信経路０系ＮＷ０からＳＮ：１のフレーム３０１を受信する。この場合、パケット転送装置１０Ｎは、受信したフレーム３０１をバッファに格納し、端末７０−ｎに送信する。このときパケット転送装置１０Ｎは、図１において説明したように、端末７０−ｎに送信するフレームからシーケンス番号３２及びヘッダ３３を削除する。
【００２８】
次に、パケット転送装置１０Ｎは、通信経路１系ＮＷ１からＳＮ：１のフレーム３１１を受信する。既にフレーム３０１が送信されていれば、パケット転送装置１０Ｎは、さらにフレーム３１１を送信することはない。
【００２９】
パケット転送装置１０Ｎは、フレーム損失が発生していなければ、ＳＮ：１のフレーム３０１を受信した後、ＳＮ：２のフレーム３０２を受信するはずである。しかし、図２の例では、フレーム３０２が損失している。この場合、パケット転送装置１０Ｎは、通信経路１系ＮＷ１からＳＮ：２のフレーム３１２を受信し、そのフレーム３１２をバッファに格納し、端末７０−ｎに送信する。
【００３０】
しかし、パケット転送装置１０Ｎは、両系の転送遅延差のため、フレーム３１２を受信する前に通信経路０系ＮＷ０からＳＮ：３のフレーム３０３を受信する場合がある。この場合、パケット転送装置１０ＮはＳＮ：３のフレーム３０３を既に受信しているにもかかわらず、通信経路１系ＮＷ１から到着する可能性のあるＳＮ：２のフレーム３１２を待つ必要がある。言い換えると、パケット転送装置１０Ｎは、受信したフレーム３０３をバッファに格納するが、フレーム３１２の受信及び送信が終了するまでフレーム３０３を送信することができない。このため、仮にフレーム３１２も損失した場合、パケット転送装置１０Ｎは、フレーム３０３を正常に受信できたにもかかわらず、それを送信することができなくなる。
【００３１】
そこで、各通信経路において、フレームの順序は逆転しないと仮定することが考えられる。この場合、パケット転送装置１０Ｎは、ＳＮ：２のフレーム３０２及びフレーム３１２を受信する前に、両通信経路からＳＮ：３のフレーム３０３及びフレーム３１３を受信した時点で、ＳＮ：２のフレーム３０２及びフレーム３１２が両通信経路で損失したと判定し、ＳＮ：３のフレーム３０３又はフレーム３１３を送信することができる。
【００３２】
しかし、上記の制御によれば、例えば通信経路に発生した障害のため、通信経路１系ＮＷ１のＳＮ：３のフレーム３１３以降のフレームがさらに損失してしまった場合、パケット転送装置１０Ｎは、通信経路０系ＮＷ０から正常に受信したＳＮ：３のフレーム３０３を送信できず、さらに、それ以降のフレーム送信が全くできなくなってしまう。
【００３３】
このため、本実施形態のパケット転送装置１０Ｎは、上記のようなフレームの損失によるシーケンス番号の欠落を検出した場合、フレームの送信を一時停止する。その際、パケット転送装置１０Ｎは、両系の転送遅延差８１をタイマ（図８参照）に設定し、カウントダウンを開始する。すなわち、タイマに設定された値は、カウントダウンが開始された後、時間の経過とともに減少し、最終的に‘０’になる。そして、このタイマが’０’になった時点、又は、パケット転送装置１０ＮがＳＮ：２のフレームを受信した時点、又は、パケット転送装置１０Ｎが両系からＳＮ：３のフレームを受信した時点で、パケット転送装置１０Ｎは、フレームの送信を再開する。
【００３４】
これによって、仮に図２のように１系ＮＷ１のＳＮ：３のフレーム３１３が損失した場合、及び、片側の通信経路に回線障害が発生した場合にも、フレームの送信が完全に停止することなく、フレームの損失を防止することが可能となる。
【００３５】
なお、上記及びこれから先の説明において、フレームが損失した場合（すなわち、パケット転送装置１０Ｎがフレームを受信できなかった場合）には、パケット転送装置１０Ｎにフレームが到着したが、そのフレームのＦＣＳ４０６又はＦＣＳ４１７（図３及び図４参照）を検査した結果、エラーが検出された場合も含まれる。その場合、フレームが廃棄されるため、パケット転送装置１０Ｎは、到着したフレームを転送することができない。
【００３６】
図３は、本発明の第１の実施形態の端末７０とパケット転送装置１０Ａ及び１０Ｎとの間の通信に使用されるフレーム４０のフォーマットを示す説明図である。
【００３７】
すなわち、フレーム４０は、図１のフレーム３０及びフレーム３４に相当する。
【００３８】
フレーム４０は、宛先ＭＡＣアドレス４０１、送信元ＭＡＣアドレス４０２、ＶＬＡＮタグ４０３、タイプ値４０４、ペイロード４０５及びフレームチェックシーケンス（ＦＣＳ）４０６とからなる。
【００３９】
宛先ＭＡＣアドレス４０１には、フレーム４０の宛先であるパケット転送装置１０Ａ、パケット転送装置１０Ｎ又は端末７０のインタフェース（例えば図５の入出力回線インタフェース１１）のＭＡＣアドレスが設定される。
【００４０】
送信元ＭＡＣアドレス４０２には、フレーム４０を送信したパケット転送装置１０Ａ、パケット転送装置１０Ｎ又は端末７０のインタフェースのＭＡＣアドレスが設定される。
【００４１】
ＶＬＡＮタグ４０３は、フロー識別子となるＶＬＡＮ  ＩＤの値（ＶＩＤ♯）を示している。
【００４２】
タイプ値４０４は、後続ヘッダの種類を示す。
【００４３】
宛先ＭＡＣアドレス４０１からタイプ値４０４までが、ＭＡＣヘッダである。
【００４４】
ペイロード４０５は、フレーム４０によって伝送されるデータ（すなわちペイロード）である。ペイロード４０５には、上位プロトコルのパケット（例えばＩＰパケット）が格納されてもよい。
【００４５】
ＦＣＳ４０６は、フレームのエラーを検出するための検査符号である。受信側のパケット転送装置１０Ｎ等は、到着したフレームのＦＣＳ４０６を検査する。その結果、エラーが検出された場合、パケット転送装置１０Ｎ等は、到着したフレームを破棄する。すなわち、そのフレームは損失したと判定される。
【００４６】
図４は、本発明の第１の実施形態の通信経路０系ＮＷ０及び通信経路１系ＮＷ１における通信に使用されるフレーム４１のフォーマットを示す説明図である。
【００４７】
すなわち、フレーム４１は、図１の例においてパケット転送装置１０Ａからパケット転送装置１０Ｎに転送されるフレームに相当する。
【００４８】
フレーム４１は、宛先ＭＡＣアドレス４１１、送信元ＭＡＣアドレス４１２、タイプ値４１３、ＭＰＬＳヘッダ４１４、シーケンス番号４１５、ペイロード４１６及びフレームチェックシーケンス（ＦＣＳ）４１７からなる。
【００４９】
宛先ＭＡＣアドレス４１１には、フレーム４１の宛先であるパケット転送装置（図１の例では、パケット転送装置１０Ａ）のインタフェースのＭＡＣアドレスが設定される。
【００５０】
送信元ＭＡＣアドレス４１２には、フレーム４１の送信元であるパケット転送装置（図１の例では、パケット転送装置１０Ｎ）のインタフェースのＭＡＣアドレスが設定される。
【００５１】
タイプ値４１３は、後続ヘッダの種類を示す。
【００５２】
宛先ＭＡＣアドレス４１１からタイプ値４１３までが、ＭＡＣヘッダである。
【００５３】
ＭＰＬＳヘッダ４１４は、フロー識別子となるラベルの値（ラベル＃）を示している。
【００５４】
シーケンス番号４１５には、フロー毎のフレーム送信順序を示す連続的な整数が設定される。小さいシーケンス番号４１５が付与されたものほど早く送信されたフレームであることを示す。
【００５５】
ペイロード４１６には、端末７０から送信されたフレーム４０がそのまま格納される。
【００５６】
ＦＣＳ４１７は、フレームのエラーを検出するための検査符号である。ＦＣＳ４１７は、ＦＣＳ４１７と同様、受信側のパケット転送装置１０Ｎ等によって検査される。
【００５７】
図５は、本発明の第１の実施形態のパケット転送装置１０Ｎの構成を示すブロック図である。
【００５８】
なお、パケット転送装置１０Ａの構成は、パケット転送装置１０Ｎの構成と同様であるため、説明を省略する。
【００５９】
パケット転送装置１０Ｎは、複数のネットワークインタフェースボード（ＮＩＦ）１０−１〜１０−ｎ、及び、これらのＮＩＦに接続されたフレーム中継部１５からなる。以下、複数のＮＩＦ１０−１〜１０−ｎに共通する説明をする場合、これらを総称してＮＩＦ１０と記載する。
【００６０】
各ＮＩＦ１０は、通信ポートとなる複数の入出力回線インタフェース１１−１〜１１−２を備え、これらの通信ポートを介して、端末７０通信経路０系ＮＷ０又は通信経路１系ＮＷ１と接続されている。以下、複数の入出力回線インタフェース１１−１〜１１−２に共通する説明をする場合、これらを総称して入出力回線インタフェース１１と記載する。図５には二つの入出力回線インタフェース１１を示すが、各ＮＩＦ１０は、さらに多くの入出力回線インタフェース１１を備えてもよい。本実施形態における入出力回線インタフェース１１は、イーサネット（登録商標）用の回線インタフェースである。
【００６１】
各ＮＩＦ１０は、入出力回線インタフェース１１に接続された入力ヘッダ処理部１２、及び、入力ヘッダ処理部１２に接続された入力フレームバッファ制御部１３を備える。さらに、各ＮＩＦ１０は、フレーム中継部１５に接続された複数のスイッチ（ＳＷ）インタフェース１４−１〜１４−２、これらのＳＷインタフェース１４−１〜１４−２に接続された出力ヘッダ処理部１６、及び、出力ヘッダ処理部１６に接続された出力フレームバッファ制御部１７を備える。以下、複数のＳＷインタフェース１４−１〜１４−２に共通する説明をする場合、これらを総称してＳＷインタフェース１４と記載する。図５には二つのＳＷインタフェース１４を示すが、各ＮＩＦ１０は、さらに多くのＳＷインタフェース１４を備えてもよい。
【００６２】
ここで、ＳＷインタフェース１４−ｉは、入出力回線インタフェース１１−ｉと対応しており、入出力回線インタフェース１１−ｉが受信した入力フレームは、ＳＷインタフェース１４−ｉを介してフレーム中継部１５に転送される。また、フレーム中継部１５からＳＷインタフェース１４−ｉに振り分けられた出力フレームは、入出力回線インタフェース１１−ｉを介して、出力回線に送信される。
【００６３】
なお、図５の例では、ｉは１又は２のいずれかである。例えば、入出力回線インタフェース１１−１が受信した入力フレームは、ＳＷインタフェース１４−１を介してフレーム中継部１５に転送される。フレーム中継部１５からＳＷインタフェース１４−１に振り分けられた出力フレームは、入出力回線インタフェース１１−１を介して、出力回線に送信される。一方、入出力回線インタフェース１１−２が受信した入力フレームは、ＳＷインタフェース１４−２を介してフレーム中継部１５に転送される。フレーム中継部１５からＳＷインタフェース１４−２に振り分けられた出力フレームは、入出力回線インタフェース１１−２を介して、出力回線に送信される。このように、ＳＷインタフェース１４と入出力回線インタフェース１１は１対１に対応付けられる。
【００６４】
図１の例のように、端末７０−１から送信されたフレームがパケット転送装置１０Ａ及び。パケット転送装置１０Ｎを順次経由して端末７０−ｎに到達する場合、パケット転送装置１０Ａに接続された出力回線は、通信経路０系ＮＷ０及び通信経路０系ＮＷ０である。パケット転送装置１０Ｎに接続された出力回線は、端末７０−ｎに至る回線である。
【００６５】
例えば、図１に示すパケット転送装置１０Ａは少なくとも三つの入出力回線インタフェース１１を備え、それらのうち一つは端末７０−１に、別の一つは通信経路０系ＮＷ０に、さらに別の一つは通信経路１系ＮＷ１に接続される。端末７０−１に接続される入出力回線インタフェース１１は、二つの通信経路に接続される二つの入出力回線インタフェース１１とは異なるＮＩＦ１０に属する。このため、パケット転送装置１０Ａが端末７０−１から受信したフレームは、それを受信したＮＩＦ１０から、フレーム中継部１５を介して、二つの通信経路に接続されたＮＩＦ１０に転送される。転送されたフレームは、二つの通信経路に接続されたＮＩＦ１０の入出力回線インタフェース１１から、二つの通信経路に送信される。
【００６６】
入出力回線インタフェース１１−ｉは、入力回線からフレーム４０又は４１を受信すると、受信フレームに、図６に示す装置内ヘッダ４２を付加する。
【００６７】
図１の例において、パケット転送装置１０Ａに接続された入力回線は、端末７０−１からのフレーム３０が通る回線である。パケット転送装置１０Ｎに接続された入力回線は、通信経路０系ＮＷ０及び通信経路０系ＮＷ０である。
【００６８】
各ＮＩＦ１０は、出力フレームバッファ１８、設定レジスタ１９、ヘッダ処理テーブル２０、待ち時間保持テーブル２１、コピー作成テーブル２２、送信シーケンス番号（ＳＮ）テーブル２３及びヘッダ変換テーブル２４をさらに含む。入力フレームバッファ制御部１３は、入力フレームバッファ１３６を含む。設定レジスタ１９及び各バッファは、各ＮＩＦ１０に設けられた記憶領域内に確保された所定の領域であってもよい。各テーブルは、それぞれ、各ＮＩＦに設けられた記憶領域内に確保された所定の領域に保持されてもよい。設定レジスタ１９及び各テーブルについては後述する。
【００６９】
図６は、本発明の第１の実施形態の入出力回線インタフェース１１によって付加される装置内ヘッダ４２の説明図である。
【００７０】
装置内ヘッダ４２は、入力ポートＩＤ４２１、出力ネットワークインタフェースボード識別子（ＮＩＦ  ＩＤ）４２７、出力ポートＩＤ４２２、フローＩＤ４２３、シーケンス番号ＳＮｎｏｗ４２４、コピービット４２５及びフレーム長４２６を示す複数のフィールドからなる。これらのうち、出力ＮＩＦ  ＩＤ４２７及び出力ポートＩＤ４２２は、内部ルーティング情報として使用される。フレーム中継部１５は、これらの内部ルーティング情報に従って、入力フレームを特定のＮＩＦ１０の特定のＳＷインタフェース１４に転送する。
【００７１】
入出力回線インタフェース１１−ｉが入力フレームに装置内ヘッダ４２を付加した時点で、出力ＮＩＦ  ＩＤ４２７、出力ポートＩＤ４２２、フローＩＤ４２３、シーケンス番号ＳＮｎｏｗ４２４及びコピービット４２５の各フィールドは空欄となっている。これらのフィールドには、入力ヘッダ処理部１２によって有効値が設定される。
【００７２】
入力ヘッダ処理部１２は、ヘッダ処理テーブル２０（図７）を参照して、各入力フレームの装置内ヘッダ４２に出力ＮＩＦ  ＩＤ４２７、出力ポートＩＤ４２２、フローＩＤ４２３及びコピービット４２５の値を設定する。さらに、入力ヘッダ処理部１２は、入力フレームのＭＡＣヘッダを解析し、受信したフレームにシーケンス番号４１５が付与されていれば、そのシーケンス番号４１５と同じ値をシーケンス番号ＳＮｎｏｗ４２４として設定する。
【００７３】
図７は、本発明の第１の実施形態のヘッダ処理テーブル２０の説明図である。
【００７４】
ヘッダ処理テーブル２０は、図７の（Ａ）及び（Ｂ）に示すように、二つのテーブル、すなわちヘッダ処理テーブル２０Ａ及びヘッダ処理テーブル２０Ｂからなる。
【００７５】
ヘッダ処理テーブル２０Ａは、ＶＬＡＮ  ＩＤ２０１を検索キーとして、ＭＰＬＳラベル２０２、出力ＮＩＦ  ＩＤ２０８、出力ポートＩＤ２０３、フローＩＤ２０４、送信元ＭＡＣアドレス２０５、宛先ＭＡＣアドレス２０６及びコピーフラグ２０７を含むテーブルエントリを検索するためのものである。
【００７６】
送信元ＭＡＣアドレス２０５は、出力ポートＩＤ２０３によって識別される入出力回線インタフェース１１−ｉに付与されたＭＡＣアドレスである。
【００７７】
宛先ＭＡＣアドレス２０６は、上記の入出力回線インタフェース１１−ｉを介して接続された、フレームの宛先となるパケット転送装置のＭＡＣアドレスを示している。
【００７８】
コピーフラグ２０７は、端末７０から受信した入力フレームを複数の経路（すなわち通信経路０系ＮＷ０及び通信経路１系ＮＷ１）に送信する必要があるか否か、つまり、フレームのコピーを作成する必要があるか否かを示す。図７の例では、コピーフラグ２０７の値‘０’は、コピーの作成が不要であることを示し、値‘１’は、コピーの作成が必要であることを示す。
【００７９】
一方、ヘッダ処理テーブル２０Ｂは、ＭＰＬＳラベル２０２を検索キーとして、ＶＬＡＮ  ＩＤ２０１、出力ＮＩＦ  ＩＤ２０８、出力ポートＩＤ２０３、フローＩＤ２０４、送信元ＭＡＣアドレス２０５及び宛先ＭＡＣアドレス２０６を含むテーブルエントリを検索するためのものである。
【００８０】
送信元ＭＡＣアドレス２０５は、出力ポートＩＤ２０３によって識別される入出力回線インタフェース１１−ｉに付与されたＭＡＣアドレスであり、上記入出力回線インタフェース１１−ｉを介して接続された、フレームの宛先となる端末のＭＡＣアドレスを示している。
【００８１】
入力フレームが、図３に示したフレームフォーマットをもつ端末７０からのフレーム４０である場合、入力ヘッダ処理部１２は、ヘッダ処理テーブル２０Ａから、入力フレームのＶＬＡＮタグ４０３が示すＶＩＤの値（ＶＩＤ♯）がＶＬＡＮ  ＩＤ２０１に格納されたテーブルエントリを検索する。そして、入力ヘッダ処理部１２は、検索されたテーブルエントリが示す値を含むヘッダを入力フレーム４０に新たに付与することによって、入力フレームのフォーマットを図４に示したフレームフォーマットに変換する。この時、変換前の入力フレームの先頭に付与されている内部ヘッダ４２は変換の対象外であり、内部ヘッダはフレームの先頭に付与されたままである。具体的には、入力ヘッダ処理部１２は、検索されたテーブルエントリが示すＭＰＬＳラベル２０２、送信元ＭＡＣアドレス２０５及び宛先ＭＡＣアドレス２０６の値を、それぞれ、ＭＰＬＳヘッダ４１４、送信元ＭＡＣアドレス４１２及び宛先ＭＡＣアドレス４１１として設定する。この時、シーケンス番号４１５フィールドは空欄となっており、入力フレームバッファ制御部１３によって有効値が設定される。
【００８２】
さらに、入力ヘッダ処理部１２は、上記のヘッダ処理テーブル２０Ａから検索されたテーブルエントリが示す出力ＮＩＦ  ＩＤ２０８、出力ポートＩＤ２０３、フローＩＤ２０４及びコピーフラグ２０７の値を、それぞれ、装置内ヘッダ４２の出力ＮＩＦ  ＩＤ４２７、出力ポートＩＤ４２２、フローＩＤ４２３及びコピービット４２５に設定する。そして、入力ヘッダ処理部１２は、装置内ヘッダ４２が付与された入力フレームを入力フレームバッファ制御部１３に転送する。
【００８３】
入力フレームが、図４に示したフレームフォーマットをもつ、通信経路０系ＮＷ０又は通信経路１系ＮＷ１から受信したフレーム４１である場合、入力ヘッダ処理部１２は、ヘッダ処理テーブル２０Ｂから、入力フレームのＭＰＬＳヘッダ４１４が示すＭＰＬＳラベルの値（ラベル♯）がＭＰＬＳラベル２０２に格納されたテーブルエントリを検索する。そして、入力ヘッダ処理部１２は、検索されたテーブルエントリが示す値によって入力フレームのヘッダを書き換える。具体的には、入力ヘッダ処理部１２は、検索されたテーブルエントリが示すＶＬＡＮ  ＩＤ２０１、送信元ＭＡＣアドレス２０５及び宛先ＭＡＣアドレス２０６の値を、それぞれ、ＶＬＡＮタグ４０３、送信元ＭＡＣアドレス４０２及び宛先ＭＡＣアドレス４０１に設定する。その結果、入力フレームのフォーマットが、図３に示したフレームフォーマットに変換される。
【００８４】
さらに、入力ヘッダ処理部１２は、図３に示すフレームフォーマットに変換された入力フレームに、装置内ヘッダ４２を付与する。入力ヘッダ処理部１２は、上記のヘッダ処理テーブル２０Ｂから検索されたテーブルエントリが示す出力ＮＩＦ  ＩＤ２０８、出力ポートＩＤ２０３、フローＩＤ２０４及びコピーフラグ２０７の値を、それぞれ、装置内ヘッダ４２の出力ＮＩＦ  ＩＤ４２７、出力ポートＩＤ４２２、フローＩＤ４２３及びコピービット４２５に設定する。さらに、入力ヘッダ処理部１２は、受信したフレームのシーケンス番号４１５の値を装置内ヘッダ４２のシーケンス番号ＳＮｎｏｗ４２４に設定し、その装置内ヘッダ４２が付与された入力フレームを入力フレームバッファ制御部１３に転送する。
【００８５】
再び図５を参照する。
【００８６】
入力フレームバッファ制御部１３は、入力ヘッダ処理部１２からフレームを受信すると、ＮＩＦ１０毎に設定されている設定レジスタ１９の動作モードに従って、受信したフレームを入力フレームとして入力フレームバッファ１３６に格納する。設定レジスタ１９の動作モード及びその動作モードに従う処理については、後で図９を参照して説明する。さらに、入力フレームバッファ制御部１３は、設定レジスタ１９に設定された動作モードに従って、入力フレームバッファ１３６に蓄積されたフレームを読み出して、各フレームをその装置内ヘッダが示す入力ポートＩＤ４２１と対応するＳＷインタフェース１４に振り分ける。
【００８７】
この設定レジスタ１９に設定されている動作モードは、当該ＮＩＦ１０の入力ポート（すなわち、フレームを受信する入出力回線インタフェース１１）が端末７０に接続されているか、又は、通信経路０系ＮＷ０及び通信経路１系ＮＷ１の一方に接続されているかに依存して、入力フレームバッファ制御部１３の処理を変更するために参照される。
【００８８】
入力ポートが端末７０に接続されている場合、設定レジスタ１９には、動作モードとして「端末接続モード」が設定される。この場合、入力フレームバッファ制御部１３は、入力フレームをコピーして、複数の通信経路に複数のフレーム（すなわちオリジナルの入力フレーム及びそのコピー）を送信する。
【００８９】
一方、入力ポートが通信経路０系ＮＷ０及び通信経路１系ＮＷ１に接続されている場合、設定レジスタ１９には、動作モードとして「通信経路接続モード」が設定される。この場合、入力フレームバッファ制御部１３は、入力フレームのシーケンス番号を監視する。そして、フレームの損失を検出した場合、入力フレームバッファ制御部１３は、フレームの送信を一時停止し、片側の通信経路で損失したフレームが、もう一方の通信経路から到着することを待つ。その後、フレーム送信再開イベントを検知すると、入力フレームバッファ制御部１３は、フレーム送信を再開し、通常動作に復帰する。これらの各動作モードにおける処理の詳細は後述する。
【００９０】
図１の例に示すように、端末７０−１から送信されたフレームがパケット転送装置１０Ａ、通信経路０系ＮＷ０又は通信経路１系ＮＷ１、及びパケット転送装置１０Ｎを順次通過して端末７０−ｎに到達する場合、パケット転送装置１０Ａの複数のＮＩＦ１０のうち、端末７０−１と接続されたＮＩＦ１０の入出力回線インタフェース１１が入力ポートである。また、パケット転送装置１０Ｎの複数のＮＩＦ１０のうち、通信経路０系ＮＷ０に接続されたＮＩＦ１０の入出力回線インタフェース１１、及び、通信経路１系ＮＷ１に接続されたＮＩＦ１０の入出力回線インタフェース１１が入力ポートである。
【００９１】
フレーム中継部１５は、各ＮＩＦ１０のＳＷインタフェース１４−１〜１４−２から入力フレームを受け取り、その入力フレームを、その装置内ヘッダが示す出力ＮＩＦ  ＩＤ４２７及び出力ポートＩＤ４２２によって識別されるＮＩＦ１０のＳＷインタフェース１４−ｉに、出力フレームとして転送する。
【００９２】
各ＳＷインタフェース１４が受信した出力フレームは、次々と出力ヘッダ処理部１６に供給される。本実施形態では、入力ヘッダ処理部１２が、ヘッダ処理テーブル２０を参照して、入力フレームから出力フレームへのフォーマット変換を実行する。しかし、入力ヘッダ処理部１２の代わりに出力ヘッダ処理部１６がヘッダ変換テーブル２４を参照してフォーマット変換を実行してもよい。この場合、ヘッダ変換テーブル２４は、ヘッダ変換に必要な情報（例えば、ヘッダ処理テーブル２０と同様の情報）を保持する。入力ヘッダ処理部１２がフォーマット変換を実行した場合、出力ヘッダ処理部１６は、ＳＷインタフェース１４から受信した出力フレームをそのまま出力フレームバッファ制御部１７に送信する。出力フレームバッファ制御部１７は、出力フレームを出力フレームバッファ１８に蓄積する。
【００９３】
出力フレームバッファ制御部１７は、蓄積された出力フレームを出力フレームバッファ１８から読み出し、その出力フレームの装置内ヘッダ４２の出力ポートＩＤ４２２と対応する入出力回線インタフェース１１にその出力フレームを転送する。入出力回線インタフェース１１は、受信した出力フレームから装置内ヘッダ４２を除去し、図３又は図４に示したフォーマットの出力フレームを出力回線に送信する。
【００９４】
図８は、本発明の第１の実施形態の入力フレームバッファ制御部１３の構成を示すブロック図である。
【００９５】
入力フレームバッファ制御部１３は、各フローＩＤ用のバッファ制御部１３１−１〜１３１−ｎと、これらの各フローＩＤ用バッファ制御部１３１−１〜１３１−ｎに接続されたスケジューリング部１３２と、フローＩＤ用バッファ制御部１３１−１〜１３１−ｎに接続されたフレーム振分け部１３３とからなる。以下、各フローＩＤ用バッファ制御部１３１−１〜１３１−ｎに共通する説明をする場合、これらを総称して各フローＩＤ用バッファ制御部１３１と記載する。
【００９６】
図１には、説明を容易にするため、一つのフローがネットワークを通過する例を示している。しかし、実際には、図１のネットワークは、複数のフローを処理することができる。本実施の形態の入力フレームバッファ制御部１３は、図８に示すように、複数のフローを処理するために、それぞれが各フローに割り当てられる複数のバッファ制御部１３１を備える。各フローＩＤ用バッファ制御部１３１は、それが割り当てられたフローのフレームのみを処理する。例えば、フローＩＤ＃０用バッファ制御部１３１−１は、フローＩＤが‘＃０’であるフローのフレームのみを処理する。しかし、本発明は、一つのバッファ制御部１３１が複数のフローのフレームを処理する場合にも適用することができる。
【００９７】
各フローＩＤ用バッファ制御部１３１は、バッファ書込み処理部１３４、バッファ読出し処理部１３５及び入力フレームバッファ１３６を備える。
【００９８】
さらに、各フローＩＤ用バッファ制御部１３１は、フレーム格納フラグ１３Ａ、読出しカウンタ１３Ｂ、フローＩＤ１３Ｃ、残フレームカウンタ１３Ｄ、読出しタイマ１３Ｅ及び書込みカウンタ１３Ｆを保持する。これらは、パケット転送装置１０Ｎ等が備える記憶領域に保持されてもよい。
【００９９】
フレーム格納フラグ１３Ａは、まだ送信要求されていないフレームが入力フレームバッファ１３６に格納されているか否かを示すフラグである。
【０１００】
読出しカウンタ１３Ｂは、入力フレームバッファ１３６の読出しアドレスとして使用される値を保持するカウンタである。
【０１０１】
フローＩＤ１３Ｃには、各フローＩＤ用バッファ制御部１３１が処理するフローの識別子が保持される。この値は、ハードウェアに固定された値である。例えば、フローＩＤ‘＃０’によって識別されるフローを処理するフローＩＤ＃０用バッファ制御部１３１−１が保持するフローＩＤ１３Ｃの値は、‘＃０’である。フローＩＤ１３Ｃは、パケット転送装置１０Ｎ等が備える不揮発性の記憶領域に保持されてもよい。
【０１０２】
残フレームカウンタ１３Ｄは、入力フレームバッファ１３６に蓄積された、まだ送信要求されていないフレームの数を示す。
【０１０３】
読出しタイマ１３Ｅは、シーケンス番号の欠落が発生した場合に、フレーム送信を再開するまでの時間を計測するために使用される。
【０１０４】
書込みカウンタ１３Ｆは、入力フレームバッファ１３６への書込みアドレスとして使用される値を保持するカウンタである。
【０１０５】
バッファ書込み処理部１３４は、入力ヘッダ処理部１２からフレームを受信すると、受信したフレームの装置内ヘッダ４２のフローＩＤ４２３を参照する。フローＩＤ４２３が、自バッファ制御部１３１が割り当てられたフローの識別子でない場合、バッファ書込み処理部１３４は、受信したフレームを破棄する。フローＩＤ４２３が、自バッファ制御部１３１が割り当てられたフローの識別子である場合、バッファ書込み処理部１３４は、受信したフレームを対象として、設定レジスタ１９の動作モードに従ってバッファ書込み処理Ｓ１００を実行する。その結果、受信したフレームが順次バッファ１３６に格納される。これらの処理の詳細は、後で図９等を参照して説明する。
【０１０６】
例えば、フローＩＤ＃０用バッファ制御部１３１−１は、識別子‘＃０’によって識別されるフローの処理のために割り当てられたものである。フローＩＤ＃０用バッファ制御部１３１−１のバッファ書込み処理部１３４は、受信したフレームに設定されたフローＩＤ４２３を参照する。フローＩＤ４２３の値が‘＃０’である場合、その識別子は、自バッファ制御部１３１（すなわちフローＩＤ＃０用バッファ制御部１３１−１）が割り当てられたフローの識別子である。この場合、バッファ書込み処理部１３４は、受信したフレームを対象としてバッファ書込み処理Ｓ１００を実行し、受信したフレームをバッファ１３６に格納する。
【０１０７】
バッファ読出し処理部１３５は、設定レジスタ１９の動作モードに従ってフレーム送信要求処理Ｓ４００を実行する。その結果自バッファ制御部１３１が割り当てられたフローのＩＤ情報を含む送信要求がスケジューリング部１３２に送信される。この処理の詳細は、後で図１３等を参照して説明する。
【０１０８】
上記送信要求を受信したスケジューリング部１３２は、送信要求を送信要求格納ＦＩＦＯ１３７に一旦格納する。スケジューリング部１３２は、送信要求格納ＦＩＦＯ１３７から順次送信要求を読み出す。そして、スケジューリング部１３２は、読み出された送信要求の送信元であるフローＩＤ用バッファ制御部１３１に対して、送信許可を送信する。
【０１０９】
ＦＩＦＯ１３７は、スケジューリング部１３２によって管理される記憶領域である。ＦＩＦＯ１３７は、入力フレームバッファ１３６と同様、各ＮＩＦ１０に設けられた記憶領域内に確保された所定の領域であってもよい。
【０１１０】
上記送信許可を受信したバッファ読出し処理部１３５は、入力フレームバッファ１３６からフレームを読み出し、フレーム振分け部１３３に出力する。
【０１１１】
フレーム振分け部１３３は、バッファ読出し処理部１３５からフレームを受信すると、装置内ヘッダ４２の中の入力ポートＩＤ４２１を参照し、入力ポートＩＤ４２１に対応するＳＷインタフェース１４を選択し、選択されたＳＷインタフェース１４にフレームを転送する。例えば、図５の例に示すように入出力回線インタフェース１１−１がＳＷインタフェース１４−１に対応する場合において、受信したフレームの入力ポートＩＤ４２１の入力ポートＩＤ４２１の値が‘ポート＃０’（すなわち、入出力回線インタフェース１１−１の識別子）である場合、フレーム振分け部１３３は、入出力回線インタフェース１１−１に対応するＳＷインタフェース１４−１にフレームを転送する。
【０１１２】
図９は、本発明の第１の実施形態のバッファ書込み処理部１３４が実行するバッファ書込み処理Ｓ１００のフローチャートである。
【０１１３】
バッファ書込み処理部１３４は、入力ヘッダ処理部１２から入力フレームを受信すると、受信した入力フレームの装置内ヘッダ４２から入力ポートＩＤ４２１、フローＩＤ４２３、シーケンス番号ＳＮｎｏｗ４２４及びフレーム長４２６の値を取得する（Ｓ１０１）。
【０１１４】
次に、バッファ書込み処理部１３４は、取得したフローＩＤ４２３の値と、各フロー用バッファ制御部１３１が保持している、ハードウェアに固定されたフローＩＤ１３Ｃとを比較する（Ｓ１０２）。
【０１１５】
Ｓ１０２の比較の結果、上記の二つのフローＩＤが一致していると判定された場合、自バッファ制御部１３１（すなわち、図９に示す処理を実行しているバッファ書込み処理部１３４が属するバッファ制御部１３１）は、受信したフレームが属するフローを処理するために割り当てられたものである。この場合、バッファ書込み処理部１３４は、設定レジスタ１９の動作モードを確認する（Ｓ１０３）。
【０１１６】
具体的には、設定レジスタの値が‘０’であれば端末接続モード、‘１’であれば通信経路接続モードであると判定される。
【０１１７】
Ｓ１０３の確認の結果、動作モードが通信経路接続モードである場合、バッファ書込み処理部１３４は、図１０に示すシーケンス番号監視受信処理Ｓ２００の処理を実行し、終了する（Ｓ１０４）。一方、端末接続モードである場合、バッファ書込み処理部１３４は、図１１に示すユーザデータ受信処理Ｓ３００の処理を実行し、バッファ書込み処理を終了する（Ｓ１０４）。
【０１１８】
一方、上記Ｓ１０２において二つのフローＩＤが一致していない場合、自バッファ制御部１３１は、受信したフレームが属するフローを処理するために割り当てられたものでない。この場合、バッファ書込み処理部１３４は、受信したフレームを取り込まないで、バッファ書込み処理を終了する（Ｓ１０４）。すなわち、この場合、バッファ書込み処理部１３４は、受信したフレームに対してシーケンス番号監視受信処理Ｓ２００及びユーザデータ受信処理Ｓ３００のいずれの処理も実行しない。
【０１１９】
図１０は、本発明の第１の実施形態のバッファ書込み処理部１３４が実行するシーケンス番号監視受信処理Ｓ２００のフローチャートである。
【０１２０】
図１０に示すシーケンス番号監視受信処理Ｓ２００が開始されると、バッファ書込み処理部１３４は、受信したフレームの装置内ヘッダ４２から取得したシーケンス番号ＳＮｎｏｗ４２４と、各フロー用バッファ制御部１３１が保持している読出しカウンタ１３Ｂの値とを比較する（Ｓ２０１）。
【０１２１】
読出しカウンタ１３Ｂは、入力フレームバッファ１３６の読出しアドレスを示している。より詳細には、読出しカウンタ１３Ｂは、次に送信要求（図１４のＳ５０５参照）されるべきフレームが格納されている入力フレームバッファ１３６のアドレスを示す。すなわち、読出しカウンタ１３Ｂは、最後に送信要求されたフレームが格納されている入力フレームバッファ１３６のアドレスの次のアドレスを示す。
【０１２２】
バッファ書込み処理部１３４は、シーケンス番号ＳＮｎｏｗ４２４を入力フレームバッファ１３６への書込みアドレスとして使用する。このため、上記読出しカウンタ１３Ｂの値とシーケンス番号ＳＮｎｏｗとを比較することによって、受信したフレームと同一内容のフレーム又はそれより後のフレームが既に送信要求されているか否かを判定することができる。受信したフレームと同一内容のフレームとは、受信したフレームと同一のシーケンス番号が付与されたフレームを意味する。それより後のフレームとは、受信したフレームに付与されたシーケンス番号より大きいシーケンス番号が付与されたフレームを意味する。
【０１２３】
上記Ｓ２０１の比較の結果、シーケンス番号ＳＮｎｏｗ４２４の値が読出しカウンタ１３Ｂの値以上であると判定された場合、受信したフレームと同一内容のフレーム及びそれより後のフレームがまだ送信要求されていない。この場合、受信したフレームがこれから送信要求される可能性がある。このため、受信したフレームと同一内容のフレームがまだ入力フレームバッファ１３６に格納されていない場合、受信したフレームを格納する必要がある。このため、バッファ書込み処理部１３４は、受信したフレームのシーケンス番号ＳＮｎｏｗ４２４の値を読出しアドレスとして、入力フレームバッファ１３６を読み出す（Ｓ２０２）。
【０１２４】
図１２は、本発明の第１の実施形態の入力フレームバッファ１３６の説明図である。
【０１２５】
図１２に示す本実施例の入力フレームバッファ１３６には、アドレス１３６１毎に、通信経路０系ＮＷ０からフレームを受信したか否かを示す０系受信ビット１３６２と、通信経路１系ＮＷ１からフレームを受信したか否かを示す１系受信ビット１３６３と、フレームデータ１３６４とが保持されている。アドレス１３６１の値は、シーケンス番号ＳＮｎｏｗ４２４の値と対応する。
【０１２６】
図１２の例では、０系受信ビット１３６２の値‘１’は、通信経路０系ＮＷ０からフレームを受信したことを示す。１系受信ビット１３６３の値‘１’は、通信経路１系ＮＷ１からフレームを受信したことを示す。例えば、図１２のアドレス１３６１の値‘６’に対応する０系受信ビット１３６２及び１系受信ビット１３６３の値は、それぞれ、‘１’及び‘０’である。これは、図１２に示す入力フレームバッファ１３６を含むパケット転送装置が、シーケンス番号ＳＮｎｏｗ４２４として‘６’が設定されたフレームを、通信経路０系ＮＷ０から既に受信し、通信経路１系ＮＷ１からはまだ受信していないことを示す。この場合、フレームデータ１３６４の値ＤＡＴＡ６には、通信経路０系ＮＷ０から受信したフレームの内容が格納される。
【０１２７】
なお、フレームデータ１３６４に各フレームの内容であるデータ自体を格納する代わりに、そのデータが格納された位置を示すポインタが格納し、データ自体は別のフレームバッファに格納されてもよい。
【０１２８】
再び図１０を参照して、Ｓ２０２以降の処理を説明する。
【０１２９】
Ｓ２０２において、バッファ書込み処理部１３４は、受信したフレームのシーケンス番号ＳＮｎｏｗ４２４と同一のアドレス１３６１に対応する０系受信ビット１３６２、１系受信ビット１３６３及びフレームデータ１３６４を読み出す。
【０１３０】
バッファ書込み処理部１３４は、読み出した０系受信ビット１３６２、又は１系受信ビット１３６３の少なくとも一方が‘１’であるか否かを判定する（Ｓ２０３）。
【０１３１】
Ｓ２０３において、どちらのビットも‘０’であると判定された場合、パケット転送装置は、今回受信したフレームと同一内容のフレームを、今回受信したフレームより前に、いずれの通信経路からも受信していない。例えば、図２の例においてパケット転送装置１０ＮがＳＮ：１であるフレーム３０１を受信した場合、パケット転送装置１０Ｎはフレーム３０１より前にＳＮ：１であるフレームを受信していないため、Ｓ２０３においてどちらのビットも‘０’であると判定される。
【０１３２】
この場合、バッファ書込み処理部１３４は、受信したフレームの装置内ヘッダ４２から取得した入力ポートＩＤ４２１に対応する０系受信ビット１３６２又は１系受信ビット１３６３に‘１’を設定し、受信したフレームを装置内ヘッダ４２とともにフレームデータ１３６４に格納する（Ｓ２０４）。具体的には、受信したフレームが通信経路０系ＮＷ０から受信したものである場合、０系受信ビット１３６２に‘１’が設定される。受信したフレームが通信経路１系ＮＷ１から受信したものである場合、１系受信ビット１３６３に‘１’が設定される。
【０１３３】
その後、バッファ書込み処理部１３４は、各フローＩＤ用のバッファ制御部１３１が保持するフレーム格納フラグ１３Ａに‘１’を設定し（Ｓ２０５）、処理を終了する（Ｓ２０７）。このフレーム格納フラグ１３Ａは、まだ送信要求されていないフレームが入力フレームバッファ１３６に格納されているか否かを示すフラグである。本実施形態では、フレーム格納フラグ１３Ａの値‘１’は、入力フレームバッファ１３６にフレームが格納されていることを示す。
【０１３４】
一方、Ｓ２０３において、どちらかのビットが‘１’であると判定された場合、パケット転送装置１０Ｎは、今回受信したフレームと同一内容のフレームを、今回受信したフレームより前に、いずれかの通信経路から既に受信している。例えば、図２の例においてパケット転送装置１０ＮがＳＮ：１であるフレーム３１１を受信した場合、パケット転送装置１０Ｎはフレーム３１１より前にＳＮ：１であるフレーム３０１を受信しているため、Ｓ２０３においてどちらかのビット（具体的には、０系受信ビット１３６２）が‘１’であると判定される。
【０１３５】
この場合、今回受信したフレームと同一内容のフレームが既に入力フレームバッファ１３６に格納されている。このため、バッファ書込み処理部１３４は、フレームデータ１３６４を更新せず（すなわち、Ｓ２０２で読み出したフレームデータ１３６４の内容をそのまま入力フレームバッファ１３６に書き戻し）、入力ポートＩＤに対応する受信ビットに‘１’を設定し（Ｓ２０６）、シーケンス番号監視受信処理を終了する（Ｓ２０７）。
【０１３６】
上記Ｓ２０１の比較の結果、シーケンス番号ＳＮｎｏｗ４２４の値が読出しカウンタ１３Ｂの値未満であると判定された場合、受信したフレームと同一内容のフレーム又はそれより後のフレームが既に送信要求されたと判定される。すなわち、受信したフレームを入力フレームバッファ１３６に格納する必要はもはやない。このため、バッファ書込み処理部１３４は、受信したフレームを廃棄して、シーケンス番号監視受信処理を終了する（Ｓ２０７）。
【０１３７】
図１１は、本発明の第１の実施形態のバッファ書込み処理部１３４が実行するユーザデータ受信処理Ｓ３００のフローチャートである。
【０１３８】
図１１に示すユーザデータ受信処理Ｓ３００が開始されると、バッファ書込み処理部１３４は、書込みカウンタ１３Ｆの値を書込みアドレスとして、０系受信ビット１３６２及び１系受信ビット１３６３に‘１’を、フレームデータ１３６４に、装置内ヘッダ４２を含む受信したフレームを格納する（Ｓ３０１）。
【０１３９】
次に、バッファ書込み処理部１３４は、書込みカウンタ１３Ｆを‘１’カウントアップし、フレーム格納フラグ１３Ａに‘１’を設定し（Ｓ３０２）、ユーザデータ受信処理を終了する（Ｓ３０３）。
【０１４０】
なお、上記書込みカウンタ１３Ｆは、入力フレームバッファ１３６への書込みアドレスとして使用される値を保持するカウンタであり、ユーザデータ受信処理Ｓ３００においてのみ使用される。
【０１４１】
図１３は、本発明の第１の実施形態のバッファ読出し処理部１３５が実行するフレーム送信要求処理Ｓ４００のフローチャートである。
【０１４２】
バッファ読出し処理部１３５は、フレーム格納フラグ１３Ａが‘０’から‘１’に変化したことを検知すると、設定レジスタ１９の動作モードを確認する（Ｓ４０１）。その結果、動作モードが通信経路接続モードであると判定された場合、バッファ読出し処理部１３５は、図１４及び図１５に示すシーケンス番号順送信要求処理Ｓ５００の処理を実行し、フレーム送信要求処理を終了する（Ｓ４０２）。一方、動作モードが端末接続モードであると判定された場合、バッファ読出し処理部１３５は、図１６に示すユーザデータ送信要求処理Ｓ６００の処理を実行し、フレーム送信要求処理を終了する（Ｓ４０２）。
【０１４３】
図１４及び図１５は、本発明の第１の実施形態のバッファ読出し処理部１３５が実行するシーケンス番号順送信要求処理Ｓ５００のフローチャートである。
【０１４４】
図１４及び図１５に示すシーケンス番号順送信要求処理Ｓ５００が開始されると、バッファ読出し処理部１３５は、フレーム格納フラグ１３Ａをクリア（すなわち‘０’に更新）する（Ｓ５０１）。
【０１４５】
次に、バッファ読出し処理部１３５は、読出しカウンタ１３Ｂの値を読出しアドレスとして入力フレームバッファ１３６からデータを読み出す（Ｓ５０２）。Ｓ５０２と並行して、バッファ読出し処理部１３５は、フローＩＤ１３Ｃを検索キーとして用いて、図１７に示す待ち時間保持テーブル２１を検索する（Ｓ５０３）。
【０１４６】
なお、図１４には、Ｓ５０２とＳ５０３が同時に実行される例を示すが、先にＳ５０２が実行され、その後Ｓ５０３が実行されてもよいし、先にＳ５０３が実行され、その後Ｓ５０２が実行されてもよい。
【０１４７】
図１７は、本発明の第１の実施形態の待ち時間保持テーブル２１の説明図である。
【０１４８】
本実施例では、上記待ち時間保持テーブル２１には、フローＩＤ２１１毎に通信経路０系ＮＷ０と通信経路１系ＮＷ１の両系遅延差２１２が保持されている。この両系遅延差２１２は、フロー毎の通信経路設定時に測定された転送遅延時間の差であり、ネットワークの管理者によって設定される。
【０１４９】
例えば、フローＩＤ＃０用バッファ制御部１３１−１のバッファ読出し処理部１３５がＳ５０３を実行した場合、フローＩＤ２１１の値‘０’に対応する両系遅延差２１２の値‘Ｄｄｉｆ０’がＳ５０３において取得される。
【０１５０】
再び図１４を参照して、Ｓ５０２及びＳ５０３に続く処理を説明する。
【０１５１】
上記Ｓ５０２及びＳ５０３の実行後、バッファ読出し処理部１３５は、Ｓ５０２において入力フレームバッファ１３６から読み出されたフレーム０系受信ビット１３６２及び１系受信ビット１３６３を確認する（Ｓ５０４）。その結果、どちらかの受信ビットに‘１’が保持されている場合、バッファ読出し処理部１３５は、入力フレームバッファ１３６の、読出しカウンタ１３Ｂが示すアドレスにフレームが格納されている（すなわち、読出しカウンタ１３Ｂの値と同じ値がシーケンス番号として付与されたフレームを既に受信している）と判定する。この場合、バッファ読出し処理部１３５は、フローＩＤ１３Ｃ及び読出しカウンタ１３Ｂの値とともに、送信要求をスケジューリング部１３２へ送信する（Ｓ５０５）。
【０１５２】
次に、バッファ読出し処理部１３５は、読出しカウンタ１３Ｂを‘１’カウントアップする（Ｓ５０６）。
【０１５３】
次に、バッファ読出し処理部１３５は、残フレームカウンタ１３Ｄの値がＡｌｌ‘０’であるか否かを判定する（Ｓ５０７）。上記残フレームカウンタ１３Ｄは、フレーム送信が一時的に停止した場合に、入力フレームバッファ１３６に蓄積された、まだ送信要求されていないフレームの数を示す。
【０１５４】
Ｓ５０７において、残フレームカウンタ１３ＤがＡｌｌ‘０’であると判定された場合、入力フレームバッファ１３６にまだ送信要求されていないフレームは蓄積されていないと判定される。この場合、バッファ読出し処理部１３５は、シーケンス番号順送信要求処理を終了する（Ｓ５０９）。
【０１５５】
一方、Ｓ５０７において、残フレームカウンタ１３ＤがＡｌｌ‘０’でないと判定された場合、入力フレームバッファ１３６にまだ送信要求されていないフレームが蓄積されている。この場合、バッファ読出し処理部１３５は、残フレームカウンタ１３Ｄを‘１’カウントダウンする（Ｓ５０８）。これは、入力フレームバッファ１３６に蓄積された、まだ送信要求されていないフレームが、Ｓ５０５の実行の結果、一つ減ったためである。
【０１５６】
その後、バッファ読出し処理部１３５は、再度Ｓ５０２及びＳ５０３以降の処理を実行する。
【０１５７】
一方、Ｓ５０４において、受信ビット１３６２及び１３６３がともに‘０’であった場合、バッファ読出し処理部１３５は、シーケンス番号に欠落が発生したと判定する。すなわち、この場合、二つの通信経路のうち一方で、フレーム損失が発生している。例えば、図２において、ＳＮ：２のフレーム３０２が損失し、パケット転送装置１０Ｎが、ＳＮ：２のフレーム３１２を受信する前にＳＮ：３のフレーム３０３を受信した場合、Ｓ５０４において、受信ビット１３６２及び１３６３の両方が‘０’であると判定される。
【０１５８】
この場合、バッファ読出し処理部１３５は、損失したフレームと同一内容のフレームを残りの通信経路から受信するまで、フレームの送信を停止する。ただし、所定の時間（すなわちＳ５０３において取得された両系遅延差２１２）が経過しても損失したフレームと同一内容のフレームを受信しない場合、バッファ読出し処理部１３５は、二つの通信経路において同一内容のフレームが損失したと判定し、フレームの送信を再開する。そのために、バッファ読出し処理部１３５は、Ｓ５０３で取得した両系遅延差２１２を読出しタイマ１３Ｅに設定し、カウントダウンを開始する（Ｓ５１０）。この読出しタイマ１３Ｅは、シーケンス番号の欠落が発生した場合に、フレーム送信を再開するまでの待ち時間を計測するために使用される。タイマ１３Ｅに設定された値は、カウントダウンが開始された後、時間の経過とともに減少し、最終的に‘０’になる。
【０１５９】
次に、バッファ読出し処理部１３５は、読出しタイマ１３ＥがＡｌｌ‘０’であるか否かを判定する（Ｓ５１１）。
【０１６０】
読出しタイマ１３ＥがＡｌｌ‘０’でないと判定された場合、まだ待ち時間が経過していない。この場合、バッファ読出し処理部１３５は、フレーム格納フラグ１３Ａが‘１’か否かを判定する（Ｓ５１２）。その結果、フレーム格納フラグが‘１’であると判定された場合、読出しタイマ１３Ｅが時間切れとなる（すなわち待ち時間が経過する）前に何らかのフレームが到着したと判定される。この場合、バッファ読出し処理部１３５は、読出しカウンタ１３Ｂの値を読出しアドレスとして、入力フレームバッファ１３６を読み出し（Ｓ５１３）、０系受信ビット１３６２又は１系受信ビット１３６３が‘１’であるか否かを判定する（Ｓ５１４）。
【０１６１】
その結果、０系受信ビット１３６２又は１系受信ビット１３６３の少なくとも一方が‘１’である場合、欠落したシーケンス番号のフレームが到着したと判定される。この場合、バッファ読出し処理部１３５は、フレーム格納フラグ１３Ａをクリアする（Ｓ５２０）。そして、バッファ読出し処理部１３５は、到着したシーケンス番号の送信要求を生成するため、Ｓ５０５以降の処理を実行する。
【０１６２】
Ｓ５１４の結果、受信ビット１３６２及び受信ビット１３６３がともに‘０’である場合、欠落したシーケンス番号以外のシーケンス番号のフレームが到着している。この場合、バッファ読出し処理部１３５は、欠落したシーケンス番号の次のシーケンス番号のフレームが、二つの通信経路の両方から受信されているか否かを確認するため、読出しカウンタ１３Ｂに‘１’を加算した値を読出しアドレスとして、入力フレームバッファ１３６を読み出す（Ｓ５１５）。そして、バッファ読出し処理部１３５は、受信ビット１３６２及び受信ビット１３６３がともに‘１’であるか否かを判定する（Ｓ５１６）。
【０１６３】
その結果、受信ビット１３６２及び受信ビット１３６３がともに‘１’である場合、欠落したシーケンス番号のフレームは、二つの通信経路の両方において欠落したと判定される。この場合、バッファ読出し処理部１３５は、読出しカウンタ値１３Ｂを‘１’カウントアップする（Ｓ５１９）。そして、バッファ読出し処理部１３５は、欠落したシーケンス番号の次のシーケンス番号が付与されたフレームの送信要求を生成するため、Ｓ５２０以降の処理を実行する。
【０１６４】
Ｓ５１６の結果、受信ビット１３６２及び受信ビット１３６３の少なくとも一方が‘０’である場合、欠落したシーケンス番号のフレームを待つ状態が継続される。このため、バッファ読出し処理部１３５は、フレーム格納フラグ１３Ａをクリアし（Ｓ５１７）、残フレームカウンタ１３Ｄを‘１’カウントアップし（Ｓ５１８）、Ｓ５１１以降の処理を実行する。
【０１６５】
Ｓ５１１の結果、読出しタイマ１３ＥがＡｌｌ‘０’である場合、欠落したシーケンス番号のフレームは二つの通信経路の両方において損失したと判定される。この場合、バッファ読出し処理部１３５は、欠落したシーケンス番号の次のシーケンス番号のフレームの送信要求を生成するため、Ｓ５０６以降の処理を実行する。その結果、欠落したシーケンス番号の次以降のシーケンス番号が付与されたフレームの送信が再開される。
【０１６６】
上記Ｓ５１２の結果、フレーム格納フラグが‘０’であると判定された場合、欠落したシーケンス番号のフレームを待つ状態が継続される。このため、バッファ読出し処理部１３５は、Ｓ５１１以降の処理を実行する。
【０１６７】
例えば、図２において、ＳＮ：２のフレーム３０２が損失し、パケット転送装置１０ＮがＳＮ：３のフレーム３０３を受信した後、両系遅延差８１が経過する前にＳＮ：２のフレーム３１２を受信した場合、Ｓ５１１において読出しタイマ１３ＥがＡｌｌ‘０’でないと判定される。そして、Ｓ５１２においてフレーム格納フラグ１３Ａが‘１’であると判定される。そして、Ｓ５１４において、１系受信ビット１３６３が‘１’であると判定される。
【０１６８】
図２の例において、さらにＳＮ：２のフレーム３１２が損失し、両系遅延差８１が経過する前にパケット転送装置１０ＮがＳＮ：３のフレーム３１３を受信した場合、Ｓ５１１において読出しタイマ１３ＥがＡｌｌ‘０’でないと判定される。そして、Ｓ５１２においてフレーム格納フラグ１３Ａが‘１’であると判定される。そして、Ｓ５１４において、０系受信ビット１３６２及び１系受信ビット１３６３がいずれも‘０’であると判定される。そして、Ｓ５１６において、０系受信ビット１３６２及び１系受信ビット１３６３がいずれも‘１’であると判定される。
【０１６９】
図２の例において、パケット転送装置１０ＮがＳＮ：２のフレーム３１２及びＳＮ：３のフレーム３１３のいずれも受信しないうちに両系遅延差８１が経過した場合、Ｓ５１１において読出しタイマ１３ＥがＡｌｌ‘０’であると判定される。
【０１７０】
図１６は、本発明の第１の実施形態のバッファ読出し処理部１３５が実行するユーザデータ送信要求処理Ｓ６００のフローチャートである。
【０１７１】
図１６に示すユーザデータ送信要求処理Ｓ６００が開始されると、バッファ読出し処理部１３５は、フレーム格納フラグ１３Ａをクリアする（Ｓ６０１）。
【０１７２】
次に、バッファ読出し処理部１３５は、フローＩＤ１３Ｃ及び読出しカウンタ１３Ｂの値とともに、スケジューリング部１３２へ送信要求を送信する（Ｓ６０２）。
【０１７３】
次に、バッファ読出し処理部１３５は、読出しカウンタ１３Ｂの値を‘１’カウントアップし（Ｓ６０３）、ユーザデータ送信要求処理を終了する（Ｓ６０４）。
【０１７４】
上記のように、ユーザデータ送信要求処理Ｓ６００は、ユーザデータ受信処理Ｓ３００が入力フレームバッファ１３６に順次格納したフレームを、アドレスの順に読み出すことによって実現することができる。
【０１７５】
フローチャートは図示しないが、スケジューリング部１３２は、バッファ読出し処理部１３５から上記送信要求を受信すると、受信した送信要求を、同時に通知されるフローＩＤ及び読出しカウンタ値とともに送信要求格納ＦＩＦＯ１３７に格納し、各フローＩＤ用バッファ制御部１３１からの送信要求を多重する。そして、スケジューリング部１３２は、送信要求格納ＦＩＦＯ１３７から送信要求を一つずつ読み出し、送信要求格納ＦＩＦＯ１３７から読み出されたフローＩＤに該当するフローＩＤ用バッファ制御部１３１―ｉに対して、送信許可及び読出しカウンタ値を通知する。
【０１７６】
図１８は、本発明の第１の実施形態のバッファ読出し処理部１３５が実行するフレーム送信処理Ｓ７００のフローチャートである。
【０１７７】
バッファ読出し処理部１３５は、スケジューリング部１３２から上記送信許可を受信すると、この送信許可と同時に送信される読出しカウンタ値を取得する（Ｓ７０１）。
【０１７８】
次に、バッファ読出し処理部１３５は、取得した読出しカウンタ値をアドレスとして、入力フレームバッファ１３６からフレームを読み出し、その後、当該アドレスのエントリにＡｌｌ‘０’を上書きする（Ｓ７０２）。
【０１７９】
次に、バッファ読出し処理部１３５は、設定レジスタ１９の動作モードを確認する（Ｓ７０３）。
【０１８０】
動作モードが通信経路接続モードであると判定された場合、Ｓ７０２において読み出されたフレームは、通信経路０系ＮＷ０又は通信経路１系ＮＷ１の少なくとも一方を介して別のパケット転送装置に送信されるべきフレームである。この場合、バッファ読出し処理部１３５は、装置内ヘッダ４２のコピービット４２５を確認する（Ｓ７０４）。
【０１８１】
Ｓ７０４において、コピービット４２５が‘０’であると判定された場合、読み出されたフレームのコピーを生成する必要がない。このため、バッファ読出し処理部１３５は、装置内ヘッダ４２のフレーム長４２６の分だけ、入力フレームバッファ１３６から読み出したフレームデータ１３６４を送信する（Ｓ７０５）。
【０１８２】
次に、バッファ読出し処理部１３５は、スケジューリング部１３２へ送信完了を通知して（Ｓ７０８）、フレーム送信処理を終了する（Ｓ７０９）。
【０１８３】
一方、Ｓ７０４において、装置内ヘッダ４２のコピービット４２５が‘１’であると判定された場合、読み出されたフレームのコピーを作成する必要がある。このため、バッファ読出し処理部１３５は、フローＩＤ１３Ｃを検索キーとして、図１９に示すコピー作成テーブル２２を検索する（Ｓ７０６）。この検索の結果、バッファ読出し処理部１３５は、コピーされたフレームに付与されるヘッダ情報を取得する。
【０１８４】
図１９は、本発明の第１の実施形態のコピー作成テーブル２２の説明図である。
【０１８５】
コピー作成テーブル２２は、コピーしたフレームに付与するヘッダに関する情報を保持する。すなわち、コピー作成テーブル２２は、フローＩＤ２２１を検索キーとして、ＭＰＬＳラベル２２２、出力ＮＩＦ  ＩＤ２２３、出力ポートＩＤ２２４、送信元ＭＡＣアドレス２０５及び宛先ＭＡＣアドレス２２６を示すテーブルエントリを検索するためのものである。ここで、送信元ＭＡＣアドレス２２５は、出力ポートＩＤ２２４によって識別される入出力回線インタフェース１１−ｉに付与されたＭＡＣアドレスである。宛先ＭＡＣアドレス２２６は、上記入出力回線インタフェース１１−ｉを介して接続された、フレームの宛先となるパケット転送装置のＭＡＣアドレスを示す。
【０１８６】
再び図１８を参照して、Ｓ７０６に続く処理を説明する。
【０１８７】
上記Ｓ７０６において、コピーされたフレームに付与するヘッダ情報を取得した後、バッファ読出し処理部１３５は、Ｓ７０５のフレーム送信処理と同様にフレームを送信するとともに、そのフレームのコピーを作成して、作成されたフレームを送信する（Ｓ７０７）。
【０１８８】
具体的には、バッファ読出し処理部１３５は、Ｓ７０５のフレーム送信処理と同様にフレームを送信する。さらに、バッファ読出し処理部１３５は、送信されるフレームのコピーを作成する。バッファ読出し処理部１３５は、コピーとして作成されたフレームのＭＡＣヘッダ中の宛先ＭＡＣアドレス４１１、送信元ＭＡＣアドレス４１２及びＭＰＬＳヘッダ４１４に、Ｓ７０６においてコピー作成テーブルから取得した宛先ＭＡＣアドレス２２６、送信元ＭＡＣアドレス２２５及びＭＰＬＳラベル２２２を上書きする。さらに、バッファ読出し処理部１３５は、コピーとして作成されたフレームの装置内ヘッダ４２の出力ＮＩＦ  ＩＤ４２７及び出力ポートＩＤ４２２に、Ｓ７０６においてコピー作成テーブルから取得した出力ＮＩＦ  ＩＤ２２３及び出力ポートＩＤ２２４を上書きする。さらに、バッファ読出し処理部１３５は、コピーとして作成されたフレームの入力ポートＩＤ４２１を反転させる。そして、バッファ読出し処理部１３５は、装置内ヘッダ４２のフレーム長４２６の分だけ読み出したフレームを送信する。
【０１８９】
Ｓ７０７において入力ポートＩＤ４２１を反転させるのは、オリジナルフレームが使用していない方のポートにコピーフレームを送信する必要があるためである。フレーム振分け部１３３は、入力ポートＩＤ４２１に対応したＳＷインタフェース１４にフレームを送信する。このため、バッファ読出し処理部１３５がＳ７０７において入力ポートＩＤ４２１を反転させると、フレーム振分け部１３３は、コピーとして作成されたフレームを空いているポートに振り分ける。
【０１９０】
その後、バッファ読出し処理部１３５は、スケジューリング部１３２へ送信完了を通知して（Ｓ７０８）、フレーム送信処理を終了する（Ｓ７０９）。
【０１９１】
上記Ｓ７０３において、設定レジスタ１９の動作モードが端末接続モードであると判定された場合、バッファ読出し処理部１３５は、フローＩＤ１３Ｃを用いて図２０に示す送信ＳＮテーブル２３を検索する（Ｓ７１０）。
【０１９２】
図２０は、本発明の第１の実施形態の送信ＳＮテーブル２３の説明図である。
【０１９３】
図２０の送信ＳＮテーブル２３は、フローＩＤ２３１を検索キーとして、送信するフレームのシーケンス番号フィールド４１５に付与される送信シーケンス番号２３２を検索するためのテーブルである。すなわち、送信シーケンス番号２３２には、各フローにおいて次回送信されるフレームに付与されるべきシーケンス番号が保持される。バッファ読出し処理部１３５は、Ｓ７１０を実行することによって、これから送信しようとするフレームに付与すべきシーケンス番号を取得する。
【０１９４】
上記Ｓ７１０の後、バッファ読出し処理部１３５は、送信ＳＮテーブルから取得した送信シーケンス番号２３２を、フレームのシーケンス番号フィールド４１５に上書きする（Ｓ７１１）。そして、バッファ読出し処理部１３５は、テーブルから取得した送信シーケンス番号２３２に‘１’を加算した値を、送信ＳＮテーブル２３の該当エントリに書き戻す（Ｓ７１２）。
【０１９５】
その後、バッファ読出し処理部１３５は、上記シーケンス番号を上書きしたフレームを送信するため、装置内ヘッダ４２のコピービット４２５の判定処理Ｓ７０４以降の処理を実行する。
【０１９６】
以上に説明したように、本発明の第１の実施形態のパケット転送装置は、一つの通信経路においてフレームが損失した場合、損失したフレームと同一内容のフレームを他の通信経路から受信するのを待つ。損失したフレームと同一内容のフレームを受信した場合、そのフレームを転送することによって、フレームの損失を防ぐことができる。さらに、本発明の第１の実施形態のパケット転送装置は、一つの通信経路において損失したフレームと同一内容のフレームを他の通信経路からまだ受信していない場合であっても、所定の条件に基づいて、損失したフレームより後のフレームの転送を再開する。これによって、本発明の第１の実施形態のパケット転送装置は、転送できるフレームを保持しているにもかかわらずフレーム転送を再開できなくなることを防ぐことができる。
【０１９７】
次に、本発明の第２の実施形態について説明する。
【０１９８】
図２１は、本発明の第２の実施形態のパケット転送装置１０Ｎの動作の概要を示す説明図である。
【０１９９】
図２１と、図２との相違は、パケット転送装置１０Ｎが、欠落したシーケンス番号のフレームを待つ時間の設定方法と、設定する値の内容である。以下、図２１が図２と相違する点について説明する。図２１の説明のうち、図２の説明と同様の部分は記載を省略する。
【０２００】
図２１では、パケット転送装置１０Ｎは、まだいずれの通信経路からも受信していないシーケンス番号（ＳＮ）が付与されたフレームを受信する度に、両系遅延差８１及び平均フレーム間隔（すなわちフレーム間隔の平均値）８２をタイマ（図２３参照）に設定し、カウントダウンを開始する。平均フレーム間隔８２は、パケット転送装置１０Ｎが監視する各フローのフレームの受信間隔の平均値である。
【０２０１】
通常、フレームの損失がなければ、このタイマはフレーム受信の度に更新され、受信したフレームは直ちに送信される。しかし、フレーム（例えば、通信経路０系ＭＷ０から受信するはずのＳＮ：２のフレーム３０２）が損失し、シーケンス番号の欠落を検出すると、パケット転送装置１０Ｎは、タイマを更新せず、フレームの送信を一時停止する。そして、上記タイマが‘０’になった時点、又は、片方の系で損失したＳＮ：２のフレーム３１２を受信した時点、又は、両系からＳＮ：３のフレームを受信した時点で、パケット転送装置１０Ｎは、フレームの送信を再開する。
【０２０２】
具体的には、パケット転送装置１０Ｎは、ＳＮ：２のフレーム３０２を受信する前にＳＮ：３のフレーム３０３を受信した場合、通信経路０系ＭＷ０においてフレーム３０２が損失したと判定する。パケット転送装置１０Ｎは、タイマが‘０’になる前に、損失したフレームと同一内容のＳＮ：２のフレーム３１２を通信経路１系ＮＷ１から受信した場合、フレーム３１２を送信する。パケット転送装置１０Ｎは、タイマが‘０’になる前、かつ、ＳＮ：２のフレーム３１２を受信する前に、ＳＮ：３のフレーム３１３を通信経路１系ＮＷ１から受信した場合、ＳＮ：３のフレーム３０３又はフレーム３１３を送信する。パケット転送装置１０Ｎは、ＳＮ：２のフレーム３１２又はＳＮ：３のフレーム３１３のいずれも受信しないうちにタイマが‘０’になった場合、ＳＮ：３のフレーム３０３を送信する。
【０２０３】
図２２は、本発明の第２の実施形態のパケット転送装置１０Ｎの動作の変形例を示す説明図である。
【０２０４】
図２２では、タイマに平均フレーム間隔８２の代わりに、フレーム間隔の最大値（すなわち最大フレーム間隔）８３が設定される。図２２のそれ以外の点は、図２１と同様である。上記最大フレーム間隔８３は、パケット転送装置１０Ｎが監視する各フローのフレームの受信間隔の最大値である。
【０２０５】
図２１に示す方法は、平均値に基づいて待ち時間を決定するため、フレーム揺らぎが小さいＴＤＭエミュレーション又はＶｏＩＰトラヒックと、入り口でシェーパなどの帯域調整を行ったストリーミングトラヒックとの混在ネットワークに適している。
【０２０６】
一方、図２２に示す方法は、フレーム揺らぎが極端に大きいトラヒックにも対応可能である。ただし、いわゆるストリームの切れ目である、トラヒックが到着しない期間が、最大フレーム間隔８３として設定されることを排除する必要がある。そのため、各パケット転送装置が一つの最大値を持ってもよいし、現在の最大値の一定倍以上大きい最大値は許容されなくてもよい。
【０２０７】
以上のように、図２１及び図２２の方式をフロー毎のトラヒックの特性に合わせて適用することによって、異なる特性のトラヒックが混在した場合にも本発明を適用することができる。
【０２０８】
また、図２１及び図２２に示す方法によれば、図２と同様に、仮に通信経路１系ＮＷ１のＳＮ：３のフレーム３１３が損失した場合、及び、片側の通信経路に回線障害が発生した場合にも、フレームの送信が完全に停止することなく、フレームの損失を防止することができる。
【０２０９】
さらに、図２に示す方法によれば、パケット転送装置は、テーブルに設定された固定遅延分だけフレームを待っていた。このため、実際のネットワークの使用状況又は設定による遅延の変動に対応することができなかった。しかし、図２１及び図２２に示す方法によれば、過去のトラヒックの履歴がフレームの待ち時間に反映される。このため、上記のようなネットワーク使用状況の変化に自動的に対応することができる。
【０２１０】
本実施形態のパケット転送装置１０Ｎの構成は、第１の実施形態の図５と同様であるが、入力フレームバッファ制御部１３のみ、その構成と機能が第１の実施形態と異なる。以下、第２の実施形態が第１の実施形態と相違する点について説明する。
図２３は、本発明の第２の実施形態の入力フレームバッファ制御部１３の構成を示すブロック図である。
【０２１１】
入力フレームバッファ制御部１３は、各フローＩＤ用のバッファ制御部１３０１（すなわち１３０１−１〜１３０１−ｎ）、これらの各フローＩＤ用バッファ制御部１３０１に接続されたスケジューリング部１３２、及び、上記各フローＩＤ用バッファ制御部１３０１と接続されたフレーム振分け部１３３を備える。
【０２１２】
各フローＩＤ用バッファ制御部１３０１は、バッファ書込み処理部１３０４、バッファ読出し処理部１３０５及び入力フレームバッファ１３６を備える。
【０２１３】
さらに、各フローＩＤ用バッファ制御部１３０１は、フレーム格納フラグ１３０Ａ、読出しカウンタ１３０Ｂ、フローＩＤ１３０Ｃ、残フレームカウンタ１３０Ｄ、読出しタイマ１３０Ｅ、書込みカウンタ１３０Ｆ、送信停止フラグ１３０Ｇ、送信停止シーケンス番号（ＳＮ）１３０Ｈ及び時刻カウンタ１３０Ｊを保持する。
【０２１４】
フレーム格納フラグ１３０Ａ、読出しカウンタ１３０Ｂ、フローＩＤ１３０Ｃ、残フレームカウンタ１３０Ｄ、読出しタイマ１３０Ｅ及び書込みカウンタ１３０Ｆは、それぞれ、第１の実施形態のフレーム格納フラグ１３Ａ、読出しカウンタ１３Ｂ、フローＩＤ１３Ｃ、残フレームカウンタ１３Ｄ、読出しタイマ１３Ｅ及び書込みカウンタ１３Ｆと同様である。
【０２１５】
送信停止フラグ１３０Ｇは、フレームの送信を停止するか否かを示すフラグである。
【０２１６】
送信停止ＳＮ１３０Ｈは、送信停止ＳＮ１３０Ｈには、欠落したシーケンス番号の一つ前のシーケンス番号（すなわち、送信が停止する以前、最後に送信されたフレームのシーケンス番号）を保持する。
【０２１７】
時刻カウンタ１３０Ｊは、現在の時刻を保持するカウンタである。
【０２１８】
入力フレームバッファ１３６の構成は、第１の実施形態と同様である（図１２参照）。
【０２１９】
バッファ書込み処理部１３０４は、入力ヘッダ処理部１２からフレームを受信すると、受信したフレームの装置内ヘッダ４２のフローＩＤ４２３を参照する。フローＩＤ４２３が、自バッファ制御部１３０１が割り当てられたフローの識別子でない場合、バッファ書込み処理部１３０４は、受信したフレームを破棄する。フローＩＤ４２３が、自バッファ制御部１３０１が割り当てられたフローの識別子である場合、バッファ書込み処理部１３０４は、受信したフレームを対象として、設定レジスタ１９の動作モードに従ってバッファ書込み処理Ｓ１００を実行する。その結果、受信したフレームが順次バッファ１３６に格納される。
【０２２０】
バッファ読出し処理部１３０５は、設定レジスタ１９の動作モードに従ってフレーム送信要求処理Ｓ４００を実行する。その結果、自バッファ制御部１３０１が割り当てられたフローのＩＤ情報を含む送信要求がスケジューリング部１３２に送信される。
【０２２１】
上記送信要求を受信したスケジューリング部１３２は、送信要求を送信要求格納ＦＩＦＯ１３７に一旦格納する。スケジューリング部１３２は、送信要求格納ＦＩＦＯ１３７から順次送信要求を読み出す。そして、スケジューリング部１３２は、読み出された送信要求の送信元であるフローＩＤ用バッファ制御部１３０１に対して、送信許可を送信する。
【０２２２】
上記送信許可を受信したバッファ読出し処理部１３０５は、入力フレームバッファ１３６からフレームを読み出し、フレーム振分け部１３３に出力する。
【０２２３】
フレーム振分け部１３３は、バッファ読出し処理部１３０５からフレームを受信すると、装置内ヘッダ４２の中の入力ポートＩＤ４２１を参照し、入力ポートＩＤ４２１に対応するＳＷインタフェース１４を選択し、選択されたＳＷインタフェース１４にフレームを転送する。入出力回線インタフェース１１とＳＷインタフェース１４の対応関係は、第１の実施形態と同様である（図５の説明参照）。
【０２２４】
第２の実施形態のバッファ書込み処理部１３０４は、第１の実施形態のバッファ書込み処理部１３４と同様、図９に示すバッファ書込み処理Ｓ１００を実行する。ただし、第２の実施形態のバッファ書込み処理部１３０４は、シーケンス番号監視受信処理Ｓ２００の代わりに、図２４に示すシーケンス番号監視受信処理Ｓ８００を実行する。
【０２２５】
図２４は、本発明の第２の実施形態のバッファ書込み処理部１３０４が実行するシーケンス番号監視受信処理Ｓ８００のフローチャートである。
【０２２６】
図２４に示すシーケンス番号監視受信処理Ｓ８００が開始されると、バッファ書込み処理部１３０４は、受信したフレームの装置内ヘッダ４２から取得したシーケンス番号ＳＮｎｏｗ４２４と、各フロー用バッファ制御部１３１が保持している読出しカウンタ１３０Ｂの値とを比較する（Ｓ８０１）。読出しカウンタ１３０Ｂは、入力フレームバッファ１３６の読出しアドレスを示している。
【０２２７】
バッファ書込み処理部１３０４は、シーケンス番号ＳＮｎｏｗ４２４を入力フレームバッファ１３６への書込みアドレスとして使用する。このため、上記読出しカウンタ１３０Ｂの値とシーケンス番号ＳＮｎｏｗとを比較することによって、受信したフレームと同一内容のフレームが既に送信要求されているか否かを判定することができる。
【０２２８】
上記Ｓ８０１の比較の結果、シーケンス番号ＳＮｎｏｗ４２４の値が読出しカウンタ１３０Ｂの値以上であると判定された場合、受信したフレームと同一内容のフレームがまだ送信要求されていない。すなわち、受信したフレームと同一内容のフレームがまだ入力フレームバッファ１３６に格納されていない可能性がある。この場合、バッファ書込み処理部１３０４は、受信したフレームのシーケンス番号ＳＮｎｏｗ４２４の値を読出しアドレスとして、図１２に示す入力フレームバッファ１３６を読み出す（Ｓ８０２）。この読出しの手順は、図１０のＳ２０２と同様である。
【０２２９】
次に、バッファ書込み処理部１３０４は、読み出した０系受信ビット１３６２、又は１系受信ビット１３６３の少なくとも一方が‘１’であるか否かを判定する（Ｓ８０３）。
【０２３０】
Ｓ８０３において、どちらのビットも‘０’であると判定された場合、バッファ書込み処理部１３０４は、受信したフレームの装置内ヘッダ４２から取得した入力ポートＩＤ４２１に対応する０系受信ビット１３６２又は１系受信ビット１３６３に‘１’を設定し、受信したフレームを装置内ヘッダ４２とともにフレームデータ１３６４に格納する（Ｓ８０４）。
【０２３１】
その後、バッファ書込み処理部１３０４は、各フローＩＤ用のバッファ制御部１３０１が保持するフレーム格納フラグ１３０Ａに‘１’を設定する（Ｓ８０５）。
【０２３２】
さらに、バッファ書込み処理部１３０４は、上記フレーム格納処理Ｓ８０４と並行して、待ち時間更新処理Ｓ９００を実行する。図２４には、待ち時間更新処理Ｓ９００がフレーム格納処理Ｓ８０４と並行して実行される例を示すが、待ち時間更新処理Ｓ９００は、Ｓ８０４の前に実行されてもよいし、Ｓ８０４又はＳ８０５の後に実行されてもよい。
【０２３３】
Ｓ８０５及びＳ９００がいずれも終了すると、バッファ書込み処理部１３０４は、シーケンス番号監視受信処理を終了する（Ｓ８０７）。
【０２３４】
一方、Ｓ８０３において、どちらかのビットが‘１’であると判定された場合、今回受信したフレームと同一内容のフレームが既に入力フレームバッファ１３６に格納されている。このため、バッファ書込み処理部１３０４は、フレームデータ１３６４を更新せず（すなわち、Ｓ８０２で読み出したフレームデータ１３６４の内容をそのまま入力フレームバッファ１３６に書き戻し）、入力ポートＩＤに対応する受信ビットに‘１’を設定し（Ｓ８０６）、シーケンス番号監視受信処理を終了する（Ｓ８０７）。
【０２３５】
上記Ｓ８０１の比較の結果、シーケンス番号ＳＮｎｏｗ４２４の値が読出しカウンタ１３０Ｂの値未満であると判定された場合、受信したフレームと同一内容のフレーム又はそれより後のフレームが既に送信要求されたと判定される。すなわち、受信したフレームを入力フレームバッファ１３６に格納する必要はもはやない。このため、バッファ書込み処理部１３０４は、受信したフレームを廃棄して、シーケンス番号監視受信処理を終了する（Ｓ８０７）。
【０２３６】
図２５及び図２６は、本発明の第２の実施形態のバッファ書込み処理部１３０４が実行する待ち時間更新処理Ｓ９００のフローチャートである。
【０２３７】
バッファ書込み処理部１３０４は、フローＩＤ１３０Ｃを用いて、待ち時間保持テーブル２１を検索する（Ｓ９０１）。
【０２３８】
図２７は、本発明の第２の実施形態の待ち時間保持テーブル２１の説明図である。
【０２３９】
本実施形態の待ち時間保持テーブル２１は、フローＩＤ２１１毎に、通信経路０系ＮＷ０と１系ＮＷ１の両系遅延差Ｄｄｉｆ２１２、算出モードＭｏｄｅ２１３、前回シーケンス番号ＳＮｐｒｅ２１４、前回到着時刻Ｔｐｒｅ２１５、フレーム間隔ＩＦＧ２１６及び時刻カウンタ週回数ＴＲａｐ２１７を保持するテーブルである。
【０２４０】
両系遅延差Ｄｄｉｆ２１２は、図１７に示すものと同様のものである。
【０２４１】
算出モードＭｏｄｅ２１３は、フレーム間隔ＩＦＧの算出方法を表す。算出モードＭｏｄｅ２１３の値‘０’は、過去のフレーム間隔の平均値がフレーム間隔ＩＦＧとして算出されることを示す。‘１’は、過去のフレーム間隔の最大値がフレーム間隔ＩＦＧとして算出されることを示す。算出された値は、フレーム間隔ＩＦＧ２１６に保持される。
【０２４２】
前回シーケンス番号ＳＮｐｒｅ２１４、前回到着時刻Ｔｐｒｅ２１５及びフレーム間隔ＩＦＧ２１６は、フレーム受信の度に更新されるフィールドである。前回シーケンス番号ＳＮｐｒｅ：２１４には、受信したフレームのシーケンス番号が上書きされる。前回到着時刻Ｔｐｒｅ２１５には、フレームを受信した時点の時刻カウンタ１３０Ｊの値が上書きされる。フレーム間隔ＩＦＧ２１６には、算出モードＭｏｄｅ２１３に従って算出されたフレーム間隔が上書きされる。
【０２４３】
時刻カウンタ週回数ＴＲａｐ２１７は、前回テーブルを更新してから現在までに何回時刻カウンタ１３０Ｊが最大値から‘０’に戻ったかを示す。ここで、時刻カウンタ１３０Ｊは、現在の時刻を保持するカウンタである。時刻カウンタ１３０Ｊに保持された時刻は、パケット転送装置の動作周波数クロックに従って、クロックごとにカウントアップされる。
【０２４４】
再び図２５を参照して、Ｓ９０１に続く処理を説明する。
【０２４５】
バッファ書込み処理部１３０４は、Ｓ９０１においてテーブル値を検索する。その結果、バッファ書込み処理部１３０４は、そのバッファ書込み処理部１３０４が属するバッファ制御部１３０１が割り当てられたフローの識別子がフローＩＤ２１１に対応するテーブル値を取得する。さらに、バッファ書込み処理部１３０４は、時刻カウンタ１３０Ｊの値を、今回フレームを受信した時刻すなわち今回到着時刻Ｔｎｏｗとして保持する（Ｓ９０２）。
【０２４６】
次に、バッファ書込み処理部１３０４は、受信したフレームの装置内ヘッダ４２のシーケンス番号ＳＮｎｏｗ４２４の値が、Ｓ９０２において取得した前回シーケンス番号ＳＮｐｒｅ２１４に‘１’を加算した値に等しいか否かを判定する（Ｓ９０３）。
【０２４７】
Ｓ９０３において、シーケンス番号ＳＮｎｏｗ４２４の値が前回シーケンス番号ＳＮｐｒｅ２１４に‘１’を加算した値に等しいと判定された場合、バッファ書込み処理部１３０４は、Ｓ９０２において取得した時刻カウンタ週回数ＴＲａｐ２１７の値を確認する（Ｓ９０４）。
【０２４８】
Ｓ９０４からＳ９０８は、今回受信したフレームと前回受信したフレームとのフレーム間隔を算出する処理である。フレーム間隔は、原則として、時刻カウンタ１３０Ｊから取得された今回到着時刻Ｔｎｏｗから、前回到着時刻Ｔｐｒｅ２１５を減算することによって算出することができる。しかし、時刻カウンタ１３０Ｊの桁数は有限であるため、時刻カウンタ１３０Ｊの値は、最大値の次に‘０’に戻り、その後順次カウントアップされる。このとき、時刻カウンタ週回数ＴＲａｐ２１７の値が‘１’加算される。したがって、フレーム間隔は、今回到着時刻Ｔｎｏｗ、前回到着時刻Ｔｐｒｅ２１５及び時刻カウンタ週回数ＴＲａｐ２１７に基づいて算出される必要がある。
【０２４９】
Ｓ９０４において、時刻カウンタ週回数ＴＲａｐ２１７が‘０’であると判定された場合、前回フレームを受信した後、時刻カウンタ１３０Ｊの値は最大値に達していない。この場合、バッファ書込み処理部１３０４は、Ｔｎｏｗから前回到着時刻Ｔｐｒｅ２１５を減算した値をフレーム間隔ＩＦＧｎｏｗとして保持する（Ｓ９０５）。
【０２５０】
Ｓ９０４において、時刻カウンタ週回数ＴＲａｐ２１７が‘１’であると判定された場合、前回フレームを受信した後、時刻カウンタ１３０Ｊの値が一度最大値に達し、‘０’に戻っている。この場合、バッファ書込み処理部１３０４は、時刻カウンタ１３０Ｊの値Ｔｎｏｗが前回到着時刻Ｔｐｒｅ２１５より大きいか否かを判定する（Ｓ９０６）。
【０２５１】
Ｓ９０６において、時刻カウンタ１３０Ｊの値Ｔｎｏｗが前回到着時刻Ｔｐｒｅ２１５以下であると判定された場合、バッファ書込み処理部１３０４は、時刻カウンタ１３０Ｊの最大値Ｔｍａｘから前回到着時刻Ｔｐｒｅ２１５を減算した値を、Ｔｎｏｗに加算する。そして、バッファ書込み処理部１３０４は、その加算の結果得られた値をフレーム間隔ＩＦＧｎｏｗとして保持する（Ｓ９０７）。
【０２５２】
Ｓ９０６において、時刻カウンタ１３０Ｊの値Ｔｎｏｗが前回到着時刻Ｔｐｒｅ２１５より大きいと判定された場合、及び、Ｓ９０４において、時刻カウンタ週回数ＴＲａｐが‘２’以上であると判定された場合、実際のフレーム間隔は、Ｔｍａｘより大きい。この場合、バッファ書込み処理部１３０４は、Ｔｍａｘをフレーム間隔ＩＦＧｎｏｗとして保持する（Ｓ９０８）。ここで、Ｔｍａｘをネットワークとして許容できる最大の遅延時間以上にする必要がある。
【０２５３】
上記Ｓ９０５、Ｓ９０７又はＳ９０８の後、バッファ書込み処理部１３０４は、算出モードＭｏｄｅ２１３を確認する（Ｓ９１１）。
【０２５４】
Ｓ９１１において、算出モードＭｏｄｅ２１３が‘０’であると判定された場合、フレーム間隔の平均値が、フレーム間隔ＩＦＧ２１６として設定される。この場合、バッファ書込み処理部１３０４は、フレーム間隔の平均値を算出するため、（ＩＦＧｎｏｗ＋ＩＦＧ２１６）÷２を、平均フレーム間隔（ＩＦＧａｖｅ）として算出する（Ｓ９１２）。そして、バッファ書込み処理部１３０４は、算出されたＩＦＧａｖｅを、待ち時間保持テーブル２１に書き戻される値ＩＦＧとして保持する（Ｓ９１３）。
【０２５５】
Ｓ９１１において、算出モードＭｏｄｅ２１３が‘１’であると判定された場合、フレーム間隔の最大値が、フレーム間隔ＩＦＧ２１６として設定される。この場合、バッファ書込み処理部１３０４は、フレーム間隔の最大値を算出するため、ｍａｘ（ＩＦＧｎｏｗ、ＩＦＧ２１６）を、最大フレーム間隔（ＩＦＧｍａｘ）として算出する（Ｓ９１４）。ここで、ｍａｘ（Ａ、Ｂ）は、ＡとＢのうち大きい方を選択する、という意味の関数である。さらにこの関数の条件として、ある一定の値以上の値は選択しない、又は、Ｂの一定倍以上の値は選択しない、などの条件を付加してもよい。これによって、トラヒックの切れ目において、ＩＦＧｎｏｗが非常に大きい場合に、そのＩＦＧｎｏｗの値を排除することができる。
【０２５６】
その後、バッファ書込み処理部１３０４は、算出されたＩＦＧｍａｘを、待ち時間保持テーブル２１に書き戻される値ＩＦＧとして保持する（Ｓ９１５）。
【０２５７】
上記Ｓ９０４と並行して、バッファ書込み処理部１３０４は、各フローＩＤ用バッファ制御部１３０１が保持する送信停止フラグ１３０Ｇを確認する（Ｓ９０９）。
【０２５８】
Ｓ９０９において、送信停止フラグ１３０Ｇが‘０’であると判定された場合、バッファ書込み処理部１３０４は、取得したフレーム間隔ＩＦＧ２１６に両系遅延差Ｄｄｉｆ２１２を加算した値を、読出しタイマ１３０Ｅに設定し、読出しタイマ１３０Ｅのカウントダウンを開始する（Ｓ９１０）。送信停止フラグ１３０Ｇは、バッファ書込み処理部１３０４が、シーケンス番号の欠落を検出した際に‘１’に設定するフラグである。送信停止フラグ１３０Ｇが‘１’である間、フレームの送信を停止して、欠落したシーケンス番号が付与されたフレームの受信を待つ処理が必要となる。
【０２５９】
バッファ書込み処理部１３０４は、Ｓ９１０が実行された後、待ち時間更新処理を終了する（Ｓ９１９）。
【０２６０】
上記Ｓ９０９の確認の結果、送信停止フラグ１３０Ｇが‘１’であると判定された場合、バッファ書込み処理部１３０４は、読出しタイマ１３０Ｅを更新せず、待ち時間更新処理を終了する（Ｓ９１９）。
【０２６１】
図２５には、Ｓ９０９からＳ９１０の処理が、Ｓ９０４からＳ９０８及びＳ９１１からＳ９１６の処理と並行して実行される例を示す。しかし、Ｓ９０９からＳ９１０の処理は、Ｓ９０４の前に実行されてもよいし、Ｓ９１６の後に実行されてもよい。すなわち、Ｓ９０９からＳ９１０の処理が実行された後にＳ９０４が実行されてもよいし、Ｓ９１６の処理が実行された後にＳ９０９が実行されてもよい。
【０２６２】
上記Ｓ９０３において、シーケンス番号ＳＮｎｏｗ４２４の値と、前回シーケンス番号ＳＮｐｒｅ２１４に‘１’を加算した値が等しくないと判定された場合、フレームの損失によってシーケンス番号の欠落が発生したと判定される。この場合、バッファ書込み処理部１３０４は、待ち時間保持テーブルに書き戻される値ＩＦＧとして、Ｓ９０２において取得されたフレーム間隔ＩＦＧ２１６を保持する（Ｓ９１７）。
【０２６３】
上記Ｓ９１３、Ｓ９１５又はＳ９１７の処理の後、バッファ書込み処理部１３０４は、待ち時間保持テーブル２１を更新する（Ｓ９１６）。具体的には、バッファ書込み処理部１３０４は、Ｓ９０２において取得されたテーブル値のうち、前回シーケンス番号ＳＮｐｒｅ２１４に、ＳＮｎｏｗ４２４の値を書き戻し、前回到着時刻Ｔｐｒｅ２１５に、現在の時刻カウンタ１３０Ｊの値Ｔｎｏｗを書き戻し、フレーム間隔ＩＦＧ２１６に、書き戻し値ＩＦＧを書き戻し、時刻カウンタ周回数ＴＲａｐに、‘０’を書き戻す。
【０２６４】
Ｓ９１６の処理が終了すると、バッファ書込み処理部１３０４は、待ち時間更新処理を終了する（Ｓ９１９）。
【０２６５】
上記Ｓ９１７の処理と並行して、バッファ書込み処理部１３０４は、送信停止フラグ１３０Ｇに‘１’を設定し、送信停止ＳＮ１３０ＨにＳＮｐｒｅ２１４の値を設定する（Ｓ９１８）。その結果、送信停止ＳＮ１３０Ｈには、欠落したシーケンス番号の一つ前のシーケンス番号（すなわち、送信が停止する以前、最後に送信されたフレームのシーケンス番号）が保持される。
【０２６６】
Ｓ９１８が実行された後、バッファ書込み処理部１３０４は、待ち時間更新処理を終了する（Ｓ９１９）。
【０２６７】
図２６には、Ｓ９１８がＳ９１７と並行して実行される例を示す。しかし、Ｓ９１８が実行された後にＳ９１７が実行されてもよいし、Ｓ９１７が実行された後にＳ９１８が実行されてもよい。
【０２６８】
本実施形態のバッファ読出し処理部１３０５は、図１３に示すフレーム送信要求処理Ｓ４００を実行する。ただし、バッファ読出し処理部１３０５は、シーケンス番号順送信要求処理Ｓ５００の代わりに、図２８に示すシーケンス番号順送信要求処理Ｓ１０００を実行する。
【０２６９】
図２８及び図２９は、本発明の第２の実施形態のバッファ読出し処理部１３０５が実行するシーケンス番号順送信要求処理Ｓ１０００のフローチャートである。
【０２７０】
図２８および図２９に示すシーケンス番号順送信要求処理Ｓ１０００が開始されると、バッファ読出し処理部１３０５は、フレーム格納フラグをクリアする（Ｓ１００１）。
【０２７１】
次に、バッファ読出し処理部１３０５は、読出しカウンタ１３０Ｂの値を読出しアドレスとして入力フレームバッファ１３６からデータを読み出す（Ｓ１００２）。
【０２７２】
次に、バッファ読出し処理部１３０５は、入力フレームバッファ１３６から読み出された０系受信ビット１３６２及び１系受信ビット１３６３を確認する（Ｓ１００３）。その結果、どちらかの受信ビットに‘１’が保持されている場合、バッファ読出し処理部１３０５は、入力フレームバッファ１３６の、読出しカウンタ１３Ｂが示すアドレスにフレームが格納されていると判定する。この場合、バッファ読出し処理部１３０５は、フローＩＤ１３０Ｃ及び読出しカウンタ１３０Ｂの値とともに、送信要求をスケジューリング部１３２へ送信する（Ｓ１００４）。
【０２７３】
次に、バッファ読出し処理部１３０５は、読出しカウンタ１３０Ｂを‘１’カウントアップする（Ｓ１００５）。
【０２７４】
次に、バッファ読出し処理部１３０５は、残フレームカウンタ１３０Ｄの値がＡｌｌ‘０’であるか否かを判定する（Ｓ１００６）。
【０２７５】
Ｓ１００６において、残フレームカウンタ１３０ＤがＡｌｌ‘０’であると判定された場合、入力フレームバッファ１３６にフレームは蓄積されていないと判定される。この場合、バッファ読出し処理部１３０５は、シーケンス番号順送信要求処理を終了する（Ｓ１００７）。
【０２７６】
一方、Ｓ１００６において、残フレームカウンタ１３０ＤがＡｌｌ‘０’でないと判定された場合、入力フレームバッファ１３６にフレームが蓄積されている。この場合、バッファ読出し処理部１３０５は、残フレームカウンタ１３０Ｄを‘１’カウントダウンする（Ｓ１００８）。
【０２７７】
その後、バッファ読出し処理部１３０５は、再度Ｓ１００２以降の処理を実行する。
【０２７８】
一方、Ｓ１００３において、受信ビット１３６２及び１３６３がともに‘０’であった場合、バッファ読出し処理部１３０５は、シーケンス番号に欠落が発生したと判定する。すなわち、この場合、二つの通信経路のうち一方で、フレーム損失が発生している。この場合、フレーム送信待ち状態となるため、バッファ読出し処理部１３０５は、送信停止フラグ１３０Ｇを確認する（Ｓ１００９）。
【０２７９】
Ｓ１００９において、送信停止フラグ１３０Ｇが‘１’であると判定された場合、バッファ読出し処理部１３０５は、読出しカウンタ１３０Ｂに‘１’を加算した値と送信停止ＳＮ１３０Ｈの値とが等しいか否かを判定する（Ｓ１０１０）。
【０２８０】
Ｓ１０１０において、読出しカウンタ１３０Ｂに‘１’を加算した値と送信停止ＳＮ１３０Ｈの値とが等しいと判定された場合、現在の読出しカウンタ１３０Ｂが示すシーケンス番号のフレームが損失していると判定される。この場合、バッファ読出し処理部１３０５は、読出しタイマ１３０Ｅの値がＡｌｌ‘０’か否かを判定する（Ｓ１０１１）。
【０２８１】
Ｓ１０１１において、読出しタイマ１３０Ｅの値がＡｌｌ‘０’でないと判定された場合、フレーム待ち状態が継続中である。このため、バッファ読出し処理部１３０５は、フレーム格納フラグ１３０Ａの値が‘１’か否かを判定する（Ｓ１０１２）。
【０２８２】
Ｓ１０１２において、フレーム格納フラグ１３０Ａの値が‘１’であると判定された場合、読出しタイマ１３０Ｅが時間切れとなる前に何らかのフレームが到着したと判定される。この場合、バッファ読出し処理部１３０５は、読出しカウンタ１３０Ｂの値を読出しアドレスとして、入力フレームバッファ１３６を読み出す（Ｓ１０１３）。
【０２８３】
次に、バッファ読出し処理部１３０５は、受信ビット１３６２又は１３６３が‘１’であるか否かを判定する（Ｓ１０１４）。
【０２８４】
Ｓ１０１４において、受信ビット１３６２又は１３６３のいずれかが‘１’である場合、Ｓ１００３において欠落したと判定されたシーケンス番号のフレームが到着したと判定される。この場合、バッファ読出し処理部１３０５は、フレーム格納フラグ１３０Ａをクリアする（Ｓ１０２０）。そして、バッファ読出し処理部１３０５は、到着したシーケンス番号の送信要求を生成するため、Ｓ１００４以降の処理を実行する。
【０２８５】
Ｓ１０１４において、受信ビット１３６２及び１３６３がともに‘０’であると判定された場合、欠落したシーケンス番号以外のシーケンス番号のフレームが到着している。この場合、バッファ読出し処理部１３０５は、欠落したシーケンス番号の次のシーケンス番号のフレームが、二つの通信経路の両方から受信されているか否かを確認するため、読出しカウンタ１３０Ｂに‘１’を加算した値を読出しアドレスとして、入力フレームバッファ１３６を読み出す（Ｓ１０１５）。そして、バッファ読出し処理部１３０５は、受信ビット１３６２及び受信ビット１３６３がともに‘１’であるか否かを判定する（Ｓ１０１６）。
【０２８６】
その結果、二つの受信ビットがともに‘１’である場合、欠落したシーケンス番号のフレームは、二つの通信経路の両方において欠落したと判定される。この場合、バッファ読出し処理部１３０５は、読出しカウンタ値１３０Ｂを‘１’カウントアップする（Ｓ１０１９）。そして、バッファ読出し処理部１３０５は、欠落したシーケンス番号の次のシーケンス番号が付与されたフレームの送信要求を生成するため、Ｓ１０２０以降の処理を実行する。
【０２８７】
Ｓ１０１６において、受信ビット１３６２及び受信ビット１３６３の少なくとも一方が‘０’である場合、欠落したシーケンス番号のフレームを待つ状態が継続される。このため、バッファ読出し処理部１３０５は、フレーム格納フラグ１３０Ａをクリアし（Ｓ１０１７）、残フレームカウンタ１３０Ｄを‘１’カウントアップし（Ｓ１０１８）、Ｓ１００９以降の処理を実行する。
【０２８８】
Ｓ１００９において、送信停止フラグ１３０Ｇが‘０’であった場合、フレーム送信待ち状態ではない。この場合、次のシーケンス番号が付与されたフレームの送信要求を生成するため、バッファ読出し処理部１３０５は、Ｓ１００５以降の処理を実行する。
【０２８９】
Ｓ１０１０において、読出しカウンタ１３０Ｂに‘１’を加算した値と、送信停止ＳＮ：１３０Ｈとが等しくない場合、送信停止するべきシーケンス番号のフレームが変化したと判定される。この場合、バッファ読出し処理部１３０５は、次のシーケンス番号が付与されたフレームの送信要求を生成するため、Ｓ１００５以降の処理を実行する。
【０２９０】
Ｓ１０１１において、読出しタイマ１３ＥがＡｌｌ‘０’である場合、欠落したシーケンス番号が付与されたフレームは二つの通信経路で損失したと判定される。この場合、バッファ読出し処理部１３０５は、欠落したシーケンス番号の次のシーケンス番号のフレームの送信要求を生成するため、Ｓ１００５以降の処理を実行する。
【０２９１】
Ｓ１０１２において、フレーム格納フラグ１３０Ａが‘０’であると判定された場合、欠落したシーケンス番号の待ち状態が継続される。このため、バッファ読出し処理部１３０５は、Ｓ１００９以降の処理を実行する。
【０２９２】
例えば、図２１において、ＳＮ：２のフレーム３０２が損失したため、パケット転送装置１０Ｎが、ＳＮ：１のフレーム３０１を受信した次にＳＮ：３のフレーム３０３を受信した場合について説明する。この例において、フレーム３０１の受信後、両系遅延差８１と平均フレーム間隔８２の合計である待ち時間が経過する前に、パケット転送装置１０ＮがＳＮ：２のフレーム３１２を受信した場合、Ｓ１０１１において読出しタイマ１３０ＥがＡｌｌ‘０’でないと判定される。そして、Ｓ１０１２においてフレーム格納フラグ１３０Ａが‘１’であると判定される。そして、Ｓ１０１４において、１系受信ビット１３６３が‘１’であると判定される。
【０２９３】
図２１の例において、さらにＳＮ：２のフレーム３１２が損失し、待ち時間が経過する前にパケット転送装置１０ＮがＳＮ：３のフレーム３１３を受信した場合、Ｓ１０１１において読出しタイマ１３０ＥがＡｌｌ‘０’でないと判定される。そして、Ｓ１０１２においてフレーム格納フラグ１３Ａが‘１’であると判定される。そして、Ｓ１０１４において、０系受信ビット１３６２及び１系受信ビット１３６３がいずれも‘０’であると判定される。そして、Ｓ１０１６において、０系受信ビット１３６２及び１系受信ビット１３６３がいずれも‘１’であると判定される。
【０２９４】
図２の例において、パケット転送装置１０ＮがＳＮ：２のフレーム３１２及びＳＮ：３のフレーム３１３のいずれも受信しないうちに待ち時間が経過した場合、Ｓ１０１１において読出しタイマ１３０ＥがＡｌｌ‘０’であると判定される。
【０２９５】
以上、本発明の第２の実施形態によれば、第１の実施形態と同様、転送できるフレームを保持しているにもかかわらずフレーム転送を再開できなくなることを防ぐことができる。さらに、第２の実施形態によれば、フレーム転送を再開するタイミングが、各フローのフレーム間隔に基づいて決定される。このため、トラヒックの特性に適した方法で本発明を適用することが可能になる。
【図面の簡単な説明】
【０２９６】
【図１】本発明の第１の実施形態のパケット転送装置が適用される通信ネットワークの一例を示す説明図である。
【図２】本発明の第１の実施形態のパケット転送装置の動作の概要を示す説明図である。
【図３】本発明の第１の実施携帯の端末とパケット転送装置との間の通信に使用されるフレームのフォーマットを示す説明図である。
【図４】本発明の第１の実施形態の通信経路における通信に使用されるフレームのフォーマットを示す説明図である。
【図５】本発明の第１の実施形態のパケット転送装置の構成を示すブロック図である。
【図６】本発明の第１の実施形態の入出力回線インタフェースによって付加される装置内ヘッダの説明図である。
【図７】本発明の第１の実施形態のヘッダ処理テーブルの説明図である。
【図８】本発明の第１の実施形態の入力フレームバッファ制御部の構成を示すブロック図である。
【図９】本発明の第１の実施形態のバッファ書込み処理部が実行するバッファ書込み処理のフローチャートである。
【図１０】本発明の第１の実施形態のバッファ書込み処理部が実行するシーケンス番号監視受信処理のフローチャートである。
【図１１】本発明の第１の実施形態のバッファ書込み処理部が実行するユーザデータ受信処理のフローチャートである。
【図１２】本発明の第１の実施形態の入力フレームバッファの説明図である。
【図１３】本発明の第１の実施形態のバッファ読出し処理部が実行するフレーム送信要求処理のフローチャートである。
【図１４】本発明の第１の実施形態のバッファ読出し処理部が実行するシーケンス番号順送信要求処理のフローチャートの第１の部分である。
【図１５】本発明の第１の実施形態のバッファ読出し処理部が実行するシーケンス番号順送信要求処理のフローチャートの第２の部分である。
【図１６】本発明の第１の実施形態のバッファ読出し処理部が実行するユーザデータ送信要求処理のフローチャートである。
【図１７】本発明の第１の実施形態の待ち時間保持テーブルの説明図である。
【図１８】本発明の第１の実施形態のバッファ読出し処理部が実行するフレーム送信処理のフローチャートである。
【図１９】本発明の第１の実施形態のコピー作成テーブルの説明図である。
【図２０】本発明の第１の実施形態の送信ＳＮテーブルの説明図である。
【図２１】本発明の第２の実施形態のパケット転送装置の動作の概要を示す説明図である。
【図２２】本発明の第２の実施形態のパケット転送装置の動作の変形例を示す説明図である。
【図２３】本発明の第２の実施形態の入力フレームバッファ制御部の構成を示すブロック図である。
【図２４】本発明の第２の実施形態のバッファ書込み処理部が実行するシーケンス番号監視受信処理のフローチャートである。
【図２５】本発明の第２の実施形態のバッファ書込み処理部が実行する待ち時間更新処理のフローチャートの第１の部分である。
【図２６】本発明の第２の実施形態のバッファ書込み処理部が実行する待ち時間更新処理のフローチャートの第２の部分である。
【図２７】本発明の第２の実施形態の待ち時間保持テーブルの説明図である。
【図２８】本発明の第２の実施形態のバッファ読出し処理部が実行するシーケンス番号順送信要求処理のフローチャートの第１の部分である。
【図２９】本発明の第２の実施形態のバッファ読出し処理部が実行するシーケンス番号順送信要求処理のフローチャートの第２の部分である。
【符号の説明】
【０２９７】
１０Ａ、１０Ｎ  パケット転送装置
１０−１〜１０−ｎ  ネットワークインタフェースボード（ＮＩＦ）
１１−１、１１−２  入出力回線インタフェース
１３  入力フレームバッファ制御部
１４−１、１４−２  スイッチ（ＳＷ）インタフェース
１５  フレーム中継部
１７  出力フレームバッファ制御部
３０、３４、３０１〜３０４、３１１〜３１３  フレーム
３２  シーケンス番号
３３  ヘッダ
７０−１、７０−ｎ  端末
１３１−１〜１３１−ｎ、１３０１−１〜１３０１−ｎ  各フローＩＤ用バッファ制御部
１３４、１３０４  バッファ書込み処理部
１３５、１３０５  バッファ読出し処理部
１３６  入力フレームバッファ
ＮＷ０  通信経路０系
ＮＷ１  通信経路１系
【図２】
0004519159.tif 000002
【図３】
0004519159.tif 000003
【図４】
0004519159.tif 000004
【図５】
0004519159.tif 000005
【図６】
0004519159.tif 000006
【図７】
0004519159.tif 000007
【図８】
0004519159.tif 000008
【図９】
0004519159.tif 000009
【図１０】
0004519159.tif 000010
【図１１】
0004519159.tif 000011
【図１２】
0004519159.tif 000012
【図１３】
0004519159.tif 000013
【図１４】
0004519159.tif 000014
【図１５】
0004519159.tif 000015
【図１６】
0004519159.tif 000016
【図１７】
0004519159.tif 000017
【図１８】
0004519159.tif 000018
【図１９】
0004519159.tif 000019
【図２０】
0004519159.tif 000020
【図２１】
0004519159.tif 000021
【図２２】
0004519159.tif 000022
【図２３】
0004519159.tif 000023
【図２４】
0004519159.tif 000024
【図２５】
0004519159.tif 000025
【図２６】
0004519159.tif 000026
【図２７】
0004519159.tif 000027
【図２８】
0004519159.tif 000028
【図２９】
0004519159.tif 000029
【図１】
0004519159.tif 000030