(57)【要約】【課題】  フレームが書き込まれるバッファの使用効率が向上された受信装置及び伝送装置を提供する。【解決手段】  受信装置は、送信順序を示す順序情報が付与されたフレームを受信する受信部と、フレームが書き込まれる複数の領域を有するバッファと、少なくとも１つの領域にフレームを書き込む書き込み処理部と、少なくとも１つの領域からフレームを読み出す読み出し処理部と、順序情報と、順序情報が付与されたフレームの書き込み先の領域を示す識別子との対応関係が登録されるテーブルを記憶する記憶部とを有し、書き込み処理部は、書き込み対象のフレームの順序情報に対応するように、フレームの書き込み先の領域の識別子をテーブルに登録し、読み出し処理部は、テーブルから、読み出し対象のフレームの順序情報に対応する識別子を検索し、検索した識別子が示す領域からフレームを読み出す。【選択図】図６
2018148358.tif 000002
【特許請求の範囲】
【請求項１】
送信順序を示す順序情報が付与されたフレームを受信する受信部と、
前記フレームが書き込まれる複数の領域を有するバッファと、
前記複数の領域の少なくとも１つに前記フレームを書き込む書き込み処理部と、
前記複数の領域の少なくとも１つから前記フレームを読み出す読み出し処理部と、
前記順序情報と、前記複数の領域のうち、前記順序情報が付与された前記フレームの書き込み先の領域を示す識別子との対応関係が登録されるテーブルを記憶する記憶部とを有し、
前記書き込み処理部は、書き込み対象の前記フレームの前記順序情報に対応するように、前記複数の領域のうち、前記フレームの書き込み先の領域の前記識別子を前記テーブルに登録し、
前記読み出し処理部は、前記テーブルから、読み出し対象の前記フレームの前記順序情報に対応する前記識別子を検索し、前記複数の領域のうち、検索した前記識別子が示す領域から前記フレームを読み出すことを特徴とする受信装置。
【請求項２】
前記複数の領域の各々のサイズは前記フレームのサイズの最大値より小さいことを特徴とする請求項１に記載の受信装置。
【請求項３】
前記書き込み処理部は、前記複数の領域の間の接続関係を示す接続情報に基づき、前記複数の領域のうち、２以上の領域に前記フレームを書き込み、
前記読み出し処理部は、前記接続情報に基づき、前記２以上の領域から前記フレームを読み出すことを特徴とする請求項１または２に記載の受信装置。
【請求項４】
前記書き込み処理部は、前記フレームの受信時刻を検出し、
前記読み出し処理部は、読み出し対象の前記フレームの前記送信順序が、前回読み出した前記フレームの前記送信順序に連続しない場合、読み出し対象の前記フレームの前記受信時刻から一定時間の経過後に前記フレームを読み出すことを特徴とする請求項１乃至３の何れかに記載の受信装置。
【請求項５】
前記フレームには、前記順序情報と前記フレームの送信時刻が付与されており、
前記読み出し処理部は、前記送信時刻から一定時間の経過後に前記フレームを読み出すことを特徴とする請求項１乃至３の何れかに記載の受信装置。
【請求項６】
第１ネットワークから第２ネットワークに第１フレームを転送する第１転送処理部と、
前記第２ネットワークから前記第１ネットワークに第２フレームを転送する第２転送処理部とを有し、
前記第１転送処理部は、
送信順序を示す順序情報が付与された前記第１フレームを前記第１ネットワークから受信する受信部と、
前記第１フレームが書き込まれる複数の領域を有するバッファと、
前記複数の領域の少なくとも１つに前記第１フレームを書き込む書き込み処理部と、
前記複数の領域の少なくとも１つから前記第１フレームを読み出す読み出し処理部と、
前記読み出し処理部が読み出した前記第１フレームを前記第２ネットワークに送信する送信部と、
前記順序情報と、前記複数の領域のうち、前記順序情報が付与された前記第１フレームの書き込み先の領域を示す識別子との対応関係が登録されるテーブルを記憶する記憶部とを有し、
前記書き込み処理部は、書き込み対象の前記第１フレームの前記順序情報に対応するように、前記複数の領域のうち、前記第１フレームの書き込み先の領域の前記識別子を前記テーブルに登録し、
前記読み出し処理部は、前記テーブルから、読み出し対象の前記第１フレームの前記順序情報に対応する前記識別子を検索し、前記複数の領域のうち、検索した前記識別子が示す領域から前記第１フレームを読み出すことを特徴とする伝送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、受信装置及び伝送装置に関する。
【背景技術】
【０００２】
例えば、映像伝送やＩＰ（Internet Protocol）ストリーム伝送では、ＲＴＰ（Real-time Transport Protocol）に従い、複数のフレームにデータがそれぞれ収容され、所定の送信順序でネットワークに送信される。このとき、各フレームには、その送信順序を示すシーケンス番号が付与される。しかし、ネットワークの障害や保守作業などによりフレームの経路が切り替えられた場合、切り替え前後の各経路の間の伝送遅延の差分によっては、後発のフレームが先発のフレームを追い抜くことによりフレームの順序が逆転してしまうことがある。
【０００３】
このため、ネットワークに接続されたフレームの受信側エッジノードでは、フレームを元の送信順序に並び替えて出力することが望ましい。フレームの並び替えに関し、例えば特許文献１には、ＩＰリアセンブル及びＴＣＰ（Transport Control Protocol）リオーダリング処理について記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−２２０７１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
例えば、受信側エッジノードにおいて、フレームが書き込まれるバッファをセクタ単位に分割し、各セクタにフレームのシーケンス番号を静的に（つまり固定的に）割り当てておけば、シーケンス番号に基づきフレームを元の送信順序でバッファから読み出すことができる。このとき、フレームが固定長である場合、各セクタのサイズをフレーム長に一致させればバッファの使用効率を高めることができる。
【０００６】
しかし、フレームが可変長である場合、各セクタのサイズをフレームの最大長に一致させると、書き込まれたフレーム長が短いほど、セクタに大きな余剰領域が生ずる。セクタの余剰領域には、シーケンス番号が割り当て値とは異なるフレームを書き込むことができないため、バッファの使用効率が低下する。その結果、フレームを書き込むセクタが不足して、フレームが廃棄されても、フレームの再送は許容されないため、通信品質が低下するおそれがある。
【０００７】
そこで本件は、フレームが書き込まれるバッファの使用効率が向上された受信装置及び伝送装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様では、受信装置は、送信順序を示す順序情報が付与されたフレームを受信する受信部と、前記フレームが書き込まれる複数の領域を有するバッファと、前記複数の領域の少なくとも１つに前記フレームを書き込む書き込み処理部と、前記複数の領域の少なくとも１つから前記フレームを読み出す読み出し処理部と、前記順序情報と、前記複数の領域のうち、前記順序情報が付与された前記フレームの書き込み先の領域を示す識別子との対応関係が登録されるテーブルを記憶する記憶部とを有し、前記書き込み処理部は、書き込み対象の前記フレームの前記順序情報に対応するように、前記複数の領域のうち、前記フレームの書き込み先の領域の前記識別子を前記テーブルに登録し、前記読み出し処理部は、前記テーブルから、読み出し対象の前記フレームの前記順序情報に対応する前記識別子を検索し、前記複数の領域のうち、検索した前記識別子が示す領域から前記フレームを読み出す。
【０００９】
１つの態様では、伝送装置は、第１ネットワークから第２ネットワークに第１フレームを転送する第１転送処理部と、前記第２ネットワークから前記第１ネットワークに第２フレームを転送する第２転送処理部とを有し、前記第１転送処理部は、送信順序を示す順序情報が付与された前記第１フレームを前記第１ネットワークから受信する受信部と、前記第１フレームが書き込まれる複数の領域を有するバッファと、前記複数の領域の少なくとも１つに前記第１フレームを書き込む書き込み処理部と、前記複数の領域の少なくとも１つから前記第１フレームを読み出す読み出し処理部と、前記読み出し処理部が読み出した前記第１フレームを前記第２ネットワークに送信する送信部と、前記順序情報と、前記複数の領域のうち、前記順序情報が付与された前記第１フレームの書き込み先の領域を示す識別子との対応関係が登録されるテーブルを記憶する記憶部とを有し、前記書き込み処理部は、書き込み対象の前記第１フレームの前記順序情報に対応するように、前記複数の領域のうち、前記第１フレームの書き込み先の領域の前記識別子を前記テーブルに登録し、前記読み出し処理部は、前記テーブルから、読み出し対象の前記第１フレームの前記順序情報に対応する前記識別子を検索し、前記複数の領域のうち、検索した前記識別子が示す領域から前記第１フレームを読み出す。
【発明の効果】
【００１０】
１つの側面として、フレームが書き込まれるバッファの使用効率を向上することができる。
【図面の簡単な説明】
【００１１】
【図１】伝送システムの一例を示す構成図である。
【図２】フレームの一例を示すフォーマット図である。
【図３】リングバッファの動作の一例を示す図である。
【図４】伝送システムの他の例を示す構成図である。
【図５】比較例のバッファにおけるセクタの割り当てとフレームの格納を示す図である。
【図６】実施例のバッファにおけるセクタの割り当てとフレームの格納、及びセクタ割り当てテーブルの一例を示す図である。
【図７】受信装置の一例を示す構成図である。
【図８】バッファ及びバッファ管理情報の一例を示す図である。
【図９】セクタ割り当てテーブル及びシリアル番号管理情報の一例を示す図である。
【図１０】書き込みアクセス制御部の処理の一例を示すフローチャートである。
【図１１】書き込み部の処理の一例を示すフローチャートである。
【図１２】読み出しアクセス制御部の処理の一例を示すフローチャートである。
【図１３】読み出し部の処理の一例を示すフローチャートである。
【図１４】初期状態のバッファ及びバッファ管理情報の一例を示す図である。
【図１５】初期状態のセクタ割り当てテーブル及びシリアル番号管理情報の一例を示す図である。
【図１６】フレーム受信の一例を示す図である。
【図１７】シーケンス番号「５」のフレームを受信したときのバッファ及びバッファ管理情報の一例を示す図である。
【図１８】シーケンス番号「５」のフレームを受信したときのセクタ割り当てテーブル及びシリアル番号管理情報の一例を示す図である。
【図１９】シーケンス番号「６」のフレームを受信したときのバッファ及びバッファ管理情報の一例を示す図である。
【図２０】シーケンス番号「６」のフレームを受信したときのセクタ割り当てテーブル及びシリアル番号管理情報の一例を示す図である。
【図２１】シーケンス番号「７」〜「１１」の各フレームを受信したときのバッファ及びバッファ管理情報の一例を示す図である。
【図２２】シーケンス番号「７」〜「１１」の各フレームを受信したときのセクタ割り当てテーブル及びシリアル番号管理情報の一例を示す図である。
【図２３】シーケンス番号「５」のフレームを送信したときのバッファ及びバッファ管理情報の一例を示す図である。
【図２４】シーケンス番号「５」のフレームを送信したときのセクタ割り当てテーブル及びシリアル番号管理情報の一例を示す図である。
【図２５】シーケンス番号「６」のフレームを送信したときのバッファ及びバッファ管理情報の一例を示す図である。
【図２６】シーケンス番号「６」のフレームを送信したときのセクタ割り当てテーブル及びシリアル番号管理情報の一例を示す図である。
【図２７】シーケンス番号「７」のフレームを送信したときのバッファ及びバッファ管理情報の一例を示す図である。
【図２８】シーケンス番号「７」のフレームを送信したときのセクタ割り当てテーブル及びシリアル番号管理情報の一例を示す図である。
【図２９】シーケンス番号「８」のフレームを送信したときのバッファ及びバッファ管理情報の一例を示す図である。
【図３０】シーケンス番号「８」のフレームを送信したときのセクタ割り当てテーブル及びシリアル番号管理情報の一例を示す図である。
【図３１】シーケンス番号「９」〜「１１」の各フレームを送信したときのバッファ及びバッファ管理情報の一例を示す図である。
【図３２】シーケンス番号「９」〜「１１」の各フレームを送信したときのセクタ割り当てテーブル及びシリアル番号管理情報の一例を示す図である。
【図３３】セクタを１周するまでフレームを受信したときのバッファ及びバッファ管理情報の一例を示す図である。
【図３４】セクタを１周するまでフレームを受信したときのセクタ割り当てテーブル及びシリアル番号管理情報の一例を示す図である。
【図３５】シーケンス番号「２１９＋１０」のフレームを送信したときのバッファ及びバッファ管理情報の一例を示す図である。
【図３６】シーケンス番号「２１９＋１０」のフレームを送信したときのセクタ割り当てテーブル及びシリアル番号管理情報の一例を示す図である。
【図３７】書き込みアクセス制御部の処理の他の例を示すフローチャートである。
【図３８】読み出しアクセス制御部の処理の他の例を示すフローチャートである。
【図３９】伝送装置の一例を示す構成図である。
【発明を実施するための形態】
【００１２】
図１は、伝送システムの一例を示す構成図である。符号Ｇ１は、中継ネットワークＮＷのフレームの経路が切り替えられる前の伝送システムを示し、符号Ｇ２は、中継ネットワークＮＷのフレームの経路が切り替えられた後の伝送システムを示す。
【００１３】
伝送システムは、送信装置２、受信装置１ａ、及び中継ネットワークＮＷを含む。送信装置２と受信装置１ａは、中継ネットワークＮＷを介して接続されている。送信装置２は、例えば映像や音楽などのストリーミングデータなどを収容したフレーム＃１〜＃６を受信装置１ａに送信し、受信装置１ａはそのフレーム＃１〜＃６を受信する。
【００１４】
送信装置２は、フレーム＃１〜＃６を、この順に送信する。フレーム＃１〜＃６の送信順序は、例えばストリーミングデータの再生順序に従う。フレーム＃１〜＃６には、順序情報の一例として、送信順序を示すシーケンス番号（SN: Sequence Number）（＃１〜＃６）が付与されている。
【００１５】
図２は、フレームの一例を示すフォーマット図である。フレームは、ＭＡＣ（Media Access Control）ヘッダ、ＩＰ（Internet Protocol）ヘッダ、ＵＤＰ（User Datagram Protocol）ヘッダ、ＲＴＰヘッダ、及びＲＴＰペイロードを有する。
【００１６】
ＭＡＣヘッダには、宛先のＭＡＣアドレスを示すＤＡ（Destination Address）、及び送信元のＭＡＣアドレスを示すＳＡ（Source Address）などが含まれる。ＩＰヘッダには、宛先ＩＰアドレス及び送信元ＩＰアドレスなどが含まれる。ＵＤＰヘッダには、送信元ポート番号及び宛先ポート番号などが含まれる。
【００１７】
ＲＴＰヘッダには、ＲＴＰのバージョン、パディングの有無、拡張ヘッダの有無、寄与送信元（CSRC: Contributing Source）の数、ペイロードタイプ、シーケンス番号（ＳＮ）、タイムスタンプ、ＳＳＲＣ（Synchronization Source）識別子、及びＣＳＲＣ識別子が含まれる。シーケンス番号は、上述したようにフレームの送信順序（＃１〜＃６）を示す。シーケンス番号は、送信装置２において、例えばストリーミングデータの再生順序に従って決定され、そのシーケンス番号に該当するストリーミングデータを収容したフレームに付与される。
【００１８】
タイムスタンプはフレームの送信時刻（つまり送信タイミング）を示す。タイムスタンプは、送信装置２において送信時にフレームに付与される。なお、送信装置２は、フレームの送信タイミングを、ストリーミングデータの再生タイミングに応じて適切に制御する。
【００１９】
再び図１を参照すると、送信装置２から送信されたフレーム＃１〜＃６は、中継ネットワークＮＷにより受信装置１ａまで中継される。中継ネットワークＮＷは、一例として、レイヤ２スイッチなどが設けられたノードＮ１〜Ｎ７を有する。ノードＮ１〜Ｎ７は、メッシュ状の中継ネットワークＮＷを形成しているが、これに限定されず、例えばリング状の中継ネットワークＮＷを形成してもよい。
【００２０】
中継ネットワークＮＷ内のフレーム＃１〜＃６の経路は、例えば経路上の障害や保守作業などの発生に応じて切り替えられる。切り替え前の経路Ｒａは、点線で示されるように、ノードＮ１，Ｎ２，Ｎ５，Ｎ７をこの順に経由する。経路の切り替えは、一例として、フレーム＃１がノードＮ７に到達し、フレーム＃２がノードＮ５に到達し、フレーム＃３がノードＮ２に到達し、フレーム＃４が送信された直後に行われると仮定する。
【００２１】
切り替え後の経路Ｒｂは、点線で示されるように、ノードＮ１，Ｎ４，Ｎ７をこの順に経由する。これにより、フレーム＃１〜＃３は切り替え前の経路Ｒａに沿って中継されるが、フレーム＃４〜＃６は切り替え後の経路Ｒｂに沿って中継される。
【００２２】
ここで、切り替え後の経路ＲｂのノードＮ１からノードＮ７までの伝送遅延Ｄａが、切り替え前の経路ＲａのノードＮ２からノードＮ７までの伝送遅延Ｄｂより小さい場合、各ノードＮ１〜Ｎ７の装置内遅延が同一であれば、先発のフレーム＃３を後発のフレーム＃４が追い抜くことがあり得る。つまり、切り替え前後の各経路Ｒａ，Ｒｂの間の伝送遅延Ｄａ，Ｄｂの差分によっては、後発のフレーム＃４が先発のフレーム＃３を追い抜くことによりフレームの順序が逆転してしまうことがある。
【００２３】
このため、受信装置１ａは、送信装置２における送信順序とは異なり、シーケンス番号が＃１，＃２，＃４，＃３，＃５，＃６の順にフレーム＃１〜＃６を受信する。受信装置１ａは、以下に述べるように、フレーム＃１〜＃６をリングバッファに格納するため、フレーム＃１〜＃６を元の送信順序に並び替えて出力することができない。
【００２４】
図３は、リングバッファの動作の一例を示す図である。リングバッファは、フレーム＃１〜＃６が書き込まれた順に読み出されるように構成されている。リングバッファにおいて、フレーム＃１〜＃６の読み出し位置及び書き込み位置はアドレス空間を一定方向に巡回するため、フレーム＃１〜＃６の入力順序及び出力順序は同一になる。
【００２５】
このため、点線枠で示されるように、順序が逆転したフレーム＃３及びフレーム＃４は、その順序が元の送信順序に訂正されることなく出力される。したがって、ストリーミングデータを処理する上位のアプリケーションでは、フレーム＃３及びフレーム＃４の順序を訂正する処理が必要となる。
【００２６】
しかし、以下の例のように、受信装置が、フレーム＃３及びフレーム＃４の順序を訂正すれば、上位のアプリケーションに順序訂正機能を備える必要がない。
【００２７】
図４は、伝送システムの他の例を示す構成図である。図４において、図１と共通する構成には同一の符号を付し、その説明は省略する。符号Ｇ３は、中継ネットワークＮＷのフレームの経路が切り替えられる前の伝送システムを示し、符号Ｇ４は、中継ネットワークＮＷのフレームの経路が切り替えられた後の伝送システムを示す。
【００２８】
伝送システムは、送信装置２、受信装置１、及び中継ネットワークＮＷを含む。受信装置１は、フレーム＃１〜＃６を格納するバッファの読み出し順序をシーケンス番号の順とすることにより、上記のようにフレーム＃３及びフレーム＃４の受信順序が逆転した場合でも元の送信順序に従ってフレーム＃１〜＃６を出力することができる。
【００２９】
図５は、比較例のバッファにおけるセクタの割り当てとフレームの格納を示す図である。符号Ｇ５はセクタの割り当てを示し、符号Ｇ６は各セクタへのフレームの格納を示す。
【００３０】
受信装置１は、記憶容量のサイズＬの複数のセクタ＃１〜＃ｎ（ｎ：２以上の自然数）に分割されたバッファを有する。セクタ＃１〜＃ｎには、シーケンス番号＃１〜＃ｎが固定的にそれぞれ割り当てられており、フレーム（ｆｒｍ）＃１〜＃ｎがそれぞれ格納される。なお、セクタ＃１〜＃ｎは、フレーム＃１〜＃ｎが書き込まれる複数の領域の一例である。
【００３１】
フレーム＃１〜＃ｎが固定長である場合、各セクタ＃１〜＃ｎのサイズＬをフレーム長（データサイズ）に一致させればバッファの使用効率を高めることができる。しかし、フレーム＃１〜＃ｎが可変長である場合、各セクタ＃１〜＃ｎのサイズをフレーム＃１〜＃ｎの最大長に一致させると、書き込まれたフレーム長Ｌａが短いほど、セクタ＃１〜＃ｎに大きな余剰領域ａ１〜ａｎが生ずるため、バッファの使用効率が低下する。
【００３２】
より具体的には、各セクタ＃１〜＃ｎにフレーム長Ｌａのフレーム＃１〜＃ｎが格納されると、各セクタ＃１〜＃ｎにはサイズＬｂ（＝Ｌ−Ｌａ）の余剰領域ａ１〜ａｎが生ずる。セクタ＃１〜＃ｎの余剰領域ａ１〜ａｎには、シーケンス番号が割り当て値とは異なるフレームを書き込むことができないため、バッファの使用効率が低下する。その結果、フレームを書き込むセクタが不足して、フレームが廃棄されても、フレームの再送は許容されないため、通信品質が低下するおそれがある。
【００３３】
そこで、実施例の受信装置は、１個のフレームを１以上のセクタに分けて書き込むことにより、フレームのサイズに応じた適切な数のセクタをフレームの格納に用いることでセクタの余剰領域を低減する。また、実施例の受信装置は、セクタに動的にシーケンス番号を割り当て、その割り当てをセクタ割り当てテーブルに登録して管理することにより、バッファからフレームをシーケンス番号の順、つまり元の送信順序に従って読み出すことができる。
【００３４】
図６は、実施例のバッファにおけるセクタの割り当てとフレームの格納、及びセクタ割り当てテーブルの一例を示す図である。符号Ｇ７はセクタの割り当てを示し、符号Ｇ８は各セクタへのフレームの格納を示す。また、符号Ｇ９はセクタ割り当てテーブルを示す。
【００３５】
受信装置１は、記憶容量のサイズＬｗの複数のセクタ＃１〜＃ｎに分割されたバッファを有する。各セクタ＃１〜＃ｎのサイズＬｗ（例えば５１２（Byte））は、フレーム（ｆｒｍ）の最大長よりも小さい。このため、バッファは、フレーム＃１〜＃ｎを複数のセクタ＃１〜＃ｎに分けて格納することができ、フレームのサイズに応じた適切な数のセクタ＃１〜＃ｎがフレームの格納に用いることにより、セクタ＃１〜＃ｎの余剰領域ａ１’〜ａ３’が低減される。余剰領域ａ１’〜ａ３’のサイズは、フレーム長をサイズＬｗで除算したときの剰余となる。
【００３６】
各セクタ＃１〜＃ｎには、動的にシーケンス番号が割り当てられる。より具体的には、各セクタ＃１〜＃ｎには、比較例のように特定のシーケンス番号のフレーム＃１〜＃ｎが格納されるのではなく、セクタ＃１〜＃ｎの使用状況に応じて異なるシーケンス番号のフレーム＃１〜＃ｎが格納される。例えば、フレーム＃１はセクタ＃１に格納され、フレーム＃２はセクタ＃４に格納され、フレーム＃３はセクタ＃３，＃８，＃２に分かれて格納されている。なお、セクタ＃５〜＃７，＃ｎは空きである。
【００３７】
受信装置１は、符号Ｇ９で示されるように、シーケンス番号（ＳＮ）と、そのシーケンス番号が付与されたフレーム＃１〜＃ｎの書き込み先のセクタ番号＃１〜＃ｎとの対応関係をセクタ割り当てテーブルに登録する。すなわち、受信装置１は、セクタ＃１〜＃ｎに動的に割り当てたシーケンス番号をセクタ割り当てテーブルにより管理する。本例のセクタ割り当てテーブルには、シーケンス番号＃１にセクタ番号＃１が対応付けられ、シーケンス番号＃２にセクタ番号＃４が対応付けられ、シーケンス番号＃３にセクタ番号＃３，＃８，＃２が対応するように登録されている。なお、セクタ番号は、フレームの書き込み先の領域を示す識別子の一例である。
【００３８】
このため、受信装置１は、セクタ割り当てテーブルのシーケンス番号を順次に参照し、その対応するセクタ番号の示すセクタ＃１〜＃ｎからフレーム＃１〜＃ｎを読み出すことにより、元の送信順序に従ってフレーム＃１〜＃ｎを出力することができる。これにより、バッファの使用効率が比較例よりも向上される。
【００３９】
なお、本例のセクタ割り当てテーブルには、シーケンス番号＃３に対応するように、フレーム＃３の格納先の全てのセクタ＃１〜＃ｎのセクタ番号＃３，＃８，＃２が登録されているが、これに限定されない。以下に述べる実施例において、セクタ割り当てテーブルには、フレーム＃３の格納先のセクタ＃１〜＃ｎのうち、先頭のセクタのセクタ番号（以下、「先頭セクタ番号」と表記）のみが登録され、他のセクタのセクタ番号は、各セクタ間の接続を示すリンクリストを参照することにより取得される。
【００４０】
図７は、受信装置１の一例を示す構成図である。受信装置１は、フレーム処理部１０と、メモリ１１，１２とを有する。
【００４１】
メモリ１１には、フレームが書き込まれる複数のセクタを有するバッファ３１が構成され、メモリ１２にはセクタ割り当てテーブル３２が記憶されている。セクタ割り当てテーブル３２は、ＳＮと、そのＳＮが付与されたフレームの書き込み先のセクタのセクタ番号との対応関係を示すテーブルの一例であり、メモリ１２は、テーブルを記憶する記憶部の一例である。
【００４２】
メモリ１１としては、例えばＤＤＲ（Double Data Rate）などの大容量のメモリが用いられ、メモリ１２としては、例えばＱＤＲ（Quad Data Rate）などの低レイテンシのメモリが用いられる。なお、メモリ１１，１２は、同一のデバイスとして構成されてもよい。
【００４３】
フレーム処理部１０は、例えばＦＰＧＡ（Field Programmable Gate Array）やＡＳＩＣ（Application Specific Integrated Circuit）などのハードウェアにより構成され、フレームの送受信処理を行う。フレーム処理部１０は、受信部１００、書き込み部１０１、バッファ管理情報１０２を記憶する内部メモリ３４、読み出し部１０３、送信部１０４、書き込みアクセス制御部１０５、計時部１０６、読み出しアクセス制御部１０７、テーブルアクセス制御部１０８、及びタイミング制御部１０９を有する。なお、フレーム処理部１０は、ＣＰＵ（Central Processing Unit）を駆動するソフトウェアの機能として形成されてもよい。
【００４４】
受信部１００は、ネットワークＮＷからフレームを受信する。受信部１００は、フレームから、フレームのデータサイズであるフレーム長とＳＮを取得し、フレーム長とＳＮを含むフレーム情報を生成する。受信部１００は、フレーム情報を書き込みアクセス制御部１０５に出力し、フレームを書き込み部１０１に出力する。
【００４５】
書き込みアクセス制御部１０５は、フレーム情報に基づきセクタ割り当てテーブル３２の情報を更新する。書き込みアクセス制御部１０５は、書き込み部１０１に対し、バッファ３１へのフレームの書き込みを指示する。このとき、書き込みアクセス制御部１０５は、書き込み部１０１に書き込み対象のフレームのサイズを通知する。
【００４６】
書き込み部１０１は、書き込みアクセス制御部１０５の指示に従い、バッファ３１の空き領域にフレームを書き込む。このとき、書き込み部１０１は、バッファ管理情報１０２を参照することによりバッファ３１の空き領域を検出する。なお、書き込み部１０１及び書き込みアクセス制御部１０５は、複数のセクタの少なくとも１つにフレームを書き込む書き込み処理部の一例である。
【００４７】
計時部１０６は、例えばカウンタ回路などにより構成され、クロック信号に基づき時刻を計時する。計時部１０６は、現在時刻を書き込みアクセス制御部１０５及び読み出しアクセス制御部１０７に通知する。書き込みアクセス制御部１０５は、計時部１０６から通知される現在時刻に基づきフレームの受信時刻を検出する。
【００４８】
書き込みアクセス制御部１０５は、テーブルアクセス制御部１０８を介してセクタ割り当てテーブル３２にアクセスする。書き込みアクセス制御部１０５は、フレーム情報及び受信時刻に基づきセクタ割り当てテーブル３２を更新する。より具体的には、書き込みアクセス制御部１０５は、セクタ割り当てテーブル３２に、フレームのサイズ、受信時刻、及びフレームの書き込み先の先頭セクタ番号を登録する。
【００４９】
つまり、書き込みアクセス制御部１０５は、書き込み対象のフレームのＳＮに対応するように、そのフレームの書き込み先のセクタ番号をセクタ割り当てテーブル３２に登録する。また、テーブルアクセス制御部１０８は、最後に送信されたフレームのＳＮを示すＳＮ管理情報３０を、メモリなどの記憶領域に記憶する。
【００５０】
タイミング制御部１０９は、フレームの伝送品質が一定のＱｏＳ（Quality Of Service）を満たすように、読み出しアクセス制御部１０７に対しフレームの送信タイミングを指示する。なお、送信タイミングの指示は、例えばクロック割り込み信号としてフレームごとに出力される。
【００５１】
読み出しアクセス制御部１０７は、送信タイミングに従って読み出し部１０３に対し、バッファ３１からのフレームの読み出しを指示する。このとき、読み出しアクセス制御部１０７は、読み出し部１０３に対し、読み出し対象のフレームの格納先の先頭セクタ番号及びサイズを通知する。
【００５２】
読み出し部１０３は、読み出しアクセス制御部１０７の指示に従ってバッファ３１からフレームを読み出す。読み出し部１０３は、読み出し対象のフレームの格納先の先頭セクタからフレームの読み出しを開始し、フレームのサイズ分のデータをバッファ３１から読み出す。なお、読み出し部１０３及び読み出しアクセス制御部１０７は、複数のセクタの少なくとも１つからフレームを読み出す読み出し処理部の一例である。
【００５３】
読み出し部１０３は、バッファ３１から読み出したフレームを送信部１０４に出力する。送信部１０４は、フレームをユーザネットワークに送信する。
【００５４】
読み出しアクセス制御部１０７は、テーブルアクセス制御部１０８を介してセクタ割り当てテーブル３２にアクセスする。読み出しアクセス制御部１０７は、テーブルアクセス制御部１０８のＳＮ管理情報３０に基づき、読み出し対象のフレームの先頭セクタ番号をセクタ割り当てテーブル３２から検索する。読み出し部１０３は、先頭セクタ番号が示すセクタからフレームを読み出す。
【００５５】
また、読み出しアクセス制御部１０７は、読み出し対象のフレームのＳＮが、前回読み出したフレームのＳＮに連続しない場合、読み出し対象のフレームの受信時刻から所定時間の経過後にフレームを読み出す。より具体的には、読み出しアクセス制御部１０７は、セクタ割り当てテーブル３２を検索し、ＳＮ管理情報３０が示すＳＮに連続するＳＮの先頭セクタ番号が未登録である場合、ＳＮ管理情報３０が示すＳＮに最も近いＳＮを検索する。
【００５６】
読み出しアクセス制御部１０７は、そのＳＮの受信時刻をセクタ割り当てテーブル３２から取得し、受信時刻から所定時間の経過後にフレームの読み出しを読み出し部１０３に指示する。読み出しアクセス制御部１０７は、受信時刻から一定時間が経過する前に、ＳＮ管理情報３０が示すＳＮに連続するＳＮのフレームが受信された場合、そのフレームの先頭セクタ番号をセクタ割り当てテーブル３２から検索して読み出し部１０３に通知する。このため、受信装置１は、ＳＮが不連続なフレームを送信しないように、連番となるＳＮのフレームの受信を一定時間だけ待つことができる。
【００５７】
図８は、バッファ３１及びバッファ管理情報１０２の一例を示す図である。バッファ３１には、メモリ１１のアドレスに対応してセクタ番号０〜２１９−１が割り当てられている。各セクタ番号に対応するデータ領域はセクタとして用いられ、少なくとも１以上のセクタにフレームのデータが書き込まれる。
【００５８】
１つのフレームの格納に用いられるセクタ数は、可変長のフレームのサイズに応じて決定される。本例では、１つのセクタのサイズを５１２（Byte）であると仮定する。このため、例えば１０００（Byte）のフレームを書き込む場合、２つのセクタが用いられる。この場合、書き込み部１０１は、バッファ管理情報１０２に基づいて書き込み先の２つのセクタを決定する。
【００５９】
バッファ管理情報１０２には、リンクリスト及び空き領域ポインタが含まれる。リンクリストは、複数のセクタの間の接続関係を示す接続情報の一例である。より具体的には、リンクリストには、アドレスごとのリンク先のアドレス、つまりセクタ番号ごとのリンク先セクタ番号が登録されている。本例では、セクタ番号「０」のセクタはセクタ番号「１」のセクタにリンクし、セクタ番号「１」のセクタはセクタ番号「２」のセクタにリンクしている。
【００６０】
空き領域ポインタは、フレームデータが書き込まれていないバッファ３１の空き領域（つまり未使用のセクタ）の先頭及び末尾のセクタ番号（アドレス）を示す。本例では、セクタ番号「０」〜「２１９−１」の全セクタが空き領域になっている。書き込み部１０１は、空き領域の先頭のセクタにフレームデータを書き込むたびに空き領域ポインタの先頭セクタ番号を更新する。
【００６１】
また、読み出し部１０３は、セクタから１つのフレームの全フレームデータを読み出すと、空き領域ポインタの末尾セクタ番号を更新する。さらに、読み出し部１０３は、空き領域を構成する複数のセクタの間のリンクを再構成するため、リンクリストにおける空き領域ポインタの末尾セクタ番号に対応するリンク先セクタ番号を更新する。
【００６２】
書き込み部１０１は、リンクリストに基づき、２以上のセクタにフレームを書き込む。書き込み部１０１は、例えば１０００（Byte）のフレームを書き込む場合、セクタ番号「０」のセクタにフレームデータを書き込んだ後、リンクリストのセクタ番号「０」のリンク先セクタ番号「１」に基づいて、セクタ番号「１」のセクタに残りのフレームデータを書き込む。
【００６３】
また、読み出し部１０３は、リンクリストに基づき、２以上のセクタからフレームを読み出す。読み出し部１０３は、例えば１０００（Byte）のフレームを読み出す場合、セクタ番号「０」のセクタからフレームデータを読み出した後、リンクリストのセクタ番号「０」のリンク先セクタ番号「１」に基づいて、セクタ番号「１」のセクタから残りのフレームデータを読み出す。
【００６４】
したがって、受信装置１は、フレームのサイズがセクタのサイズより大きい場合でも、バッファ３１に対しフレームデータの書き込み及び読み出しを容易に行うことができる。
【００６５】
図９は、セクタ割り当てテーブル３２及びＳＮ管理情報３０の一例を示す図である。セクタ割り当てテーブル３２には、ＳＮに対応するアドレスごとにフレームのデータサイズ、タイムスタンプ、及び先頭セクタ番号が登録されている。タイムスタンプはフレームの受信時刻であり、先頭セクタ番号は、フレームの書き込み先の先頭セクタの番号である。
【００６６】
書き込みアクセス制御部１０５は、受信部１００から入力されたフレーム情報に基づき、フレームのＳＮに対応するデータサイズを登録する。また、書き込みアクセス制御部１０５は、フレーム情報が入力されたとき、計時部１０６から通知された現在時刻を受信時刻として登録する。さらに、書き込みアクセス制御部１０５は、バッファ管理情報１０２の空き領域ポインタの先頭セクタ番号をセクタ割り当てテーブル３２に登録する。なお、未登録のＳＮについては、データサイズは０（Byte）を示し、タイムスタンプ及び先頭セクタ番号はｎｕｌｌを示す。
【００６７】
ＳＮ管理情報３０は、受信装置１からユーザネットワークに最後に送信されたフレーム（つまり最終出力フレーム）のＳＮを示す。読み出しアクセス制御部１０７は、フレームがバッファ３１から読み出されるごとにＳＮ管理情報３０を更新する。
【００６８】
次に、フレームの書き込み処理について述べる。
【００６９】
図１０は、書き込みアクセス制御部１０５の処理の一例を示すフローチャートである。本処理は例えば周期的に実行される。
【００７０】
書き込みアクセス制御部１０５は、受信部１００からフレーム情報が入力されたか否かを判定する（ステップＳｔ１）。フレーム情報には、フレームのサイズ（フレーム長）及びＳＮが含まれる。書き込みアクセス制御部１０５は、フレーム情報が入力されていない場合（ステップＳｔ１のＮｏ）、処理を終了する。
【００７１】
次に、書き込みアクセス制御部１０５は、フレーム情報が入力された場合（ステップＳｔ１のＹｅｓ）、セクタ割り当てテーブル３２に対し、フレーム情報のＳＮに対応するデータサイズとして０を登録する（ステップＳｔ２）。次に、書き込みアクセス制御部１０５は、セクタ割り当てテーブル３２に対し、フレーム情報のＳＮに対応するタイムスタンプとして、計時部１０６から通知された現在時刻（つまりフレームの受信時刻）を登録する（ステップＳｔ３）。
【００７２】
次に、書き込みアクセス制御部１０５は、セクタ割り当てテーブル３２に対し、空き領域ポインタの先頭セクタ番号を登録する（ステップＳｔ４）。これにより、空き領域の先頭セクタからフレームの書き込みが開始される。また、読み出しアクセス制御部１０７は、セクタ割り当てテーブル３２から読み出し対象のフレームの先頭セクタ番号を検索することができる。
【００７３】
次に、書き込みアクセス制御部１０５は、書き込み部１０１に対し、フレームの書き込み処理の実行を指示する（ステップＳｔ５）。このとき、書き込みアクセス制御部１０５は、書き込み部１０１に対しフレームのサイズを通知する。書き込み部１０１は、書き込み処理が終了すると、書き込みアクセス制御部１０５に書き込み処理の成否を通知する。なお、フレームの書き込み処理については後述する。
【００７４】
次に、書き込みアクセス制御部１０５は、書き込み部１０１からの通知に基づいて書き込み処理の成否を判定する（ステップＳｔ６）。書き込みアクセス制御部１０５は、書き込み処理が成功した場合（ステップＳｔ６のＹｅｓ）、セクタ割り当てテーブル３２に対し、フレームのサイズ（フレーム長）をデータサイズとして登録して（ステップＳｔ７）、処理を終了する。
【００７５】
このように、セクタ割り当てテーブル３２にはフレームのサイズが登録されているため、読み出しアクセス制御部１０７は、セクタ割り当てテーブル３２から読み出し対象のフレームのサイズを検索することができる。
【００７６】
また、書き込みアクセス制御部１０５は、書き込み処理が失敗した場合（ステップＳｔ６のＮｏ）、セクタ割り当てテーブル３２に対し、書き込み済みのフレームのデータ長をデータサイズとして登録して（ステップＳｔ８）、処理を終了する。このようにして、書き込みアクセス制御部１０５は処理を実行する。
【００７７】
図１１は、書き込み部１０１の処理の一例を示すフローチャートである。書き込み部１０１は、書き込みアクセス制御部１０５からの指示に従い書き込み処理（上記のステップＳｔ５）を実行する。このとき、書き込み部１０１は、書き込みアクセス制御部１０５から書き込み対象のフレームのサイズを取得する。
【００７８】
書き込み部１０１は、バッファ管理情報１０２の空き領域ポインタを参照し、空き領域の先頭セクタ番号及び末尾セクタ番号を比較する（ステップＳｔ１１）。書き込み部１０１は、空き領域の先頭セクタ番号及び末尾セクタ番号が一致する場合（ステップＳｔ１１のＮｏ）、フレームを書き込めるセクタが存在しないため、書き込み失敗を書き込みアクセス制御部１０５に通知する（ステップＳｔ１６）。
【００７９】
また、書き込み部１０１は、空き領域の先頭セクタ番号及び末尾セクタ番号が一致しない場合（ステップＳｔ１１のＹｅｓ）、空き領域の先頭セクタにフレームデータを書き込む（ステップＳｔ１２）。より具体的には、書き込み部１０１は、空き領域の先頭セクタ番号に対応するアドレスにフレームデータを書き込む。これにより、５１２（Byte）分のフレームデータがバッファ３１に格納される。
【００８０】
次に、書き込み部１０１は、バッファ管理情報１０２の空き領域ポインタの先頭セクタ番号をリンクリストに基づいて、そのリンク先セクタ番号に更新する（ステップＳｔ１３）。これにより、次のフレームデータの書き込み先の先頭セクタ番号が空き領域ポインタにセットされる。このため、書き込み部１０１は、リンクリストに基づき２以上のセクタにフレームを書き込むことができる。
【００８１】
次に、書き込み部１０１は、フレームの書き込みが完了したか否かを判定する（ステップＳｔ１４）。このとき、書き込み部１０１は、例えば書き込んだフレームデータをカウンタ回路などでカウントしておき、そのカウント値をフレームのサイズと比較することによりフレームの書き込みが完了したか否かを判定する。
【００８２】
書き込み部１０１は、フレームの書き込みが未完了である場合（ステップＳｔ１４のＮｏ）、再びステップＳｔ１１以降の処理を実行する。これにより、更新された空き領域ポインタの先頭セクタ番号に基づき、残ったフレームデータのうち、５１２（Byte）分のフレームデータがバッファ３１に書き込まれる。
【００８３】
書き込み部１０１は、フレームの書き込みが完了した場合（ステップＳｔ１４のＹｅｓ）、書き込みアクセス制御部１０５に書き込み成功を通知する（ステップＳｔ１５）。このようにして、書き込み部１０１は処理を実行する。
【００８４】
次にフレームの読み出し処理について述べる。
【００８５】
図１２は、読み出しアクセス制御部１０７の処理の一例を示すフローチャートである。本処理は例えば周期的に実行される。
【００８６】
読み出しアクセス制御部１０７は、タイミング制御部１０９からの指示に基づいて、ユーザネットワークに対するフレームの送信タイミングが到来したか否かを判定する（ステップＳｔ２１）。読み出しアクセス制御部１０７は、送信タイミングが到来していない場合（ステップＳｔ２１のＮｏ）、処理を終了する。
【００８７】
読み出しアクセス制御部１０７は、送信タイミングが到来した場合（ステップＳｔ２１のＹｅｓ）、ＳＮ管理情報３０のＳＮの次のＳＮ（つまり、前回送信されたフレームのＳＮに１を加算したＳＮ）を先頭としてセクタ割り当てテーブル３２を検索する（ステップＳｔ２２）。より具体的には、読み出しアクセス制御部１０７は、読み出し対象のフレームのＳＮ、その先頭セクタ番号、及びタイムスタンプを検索する。
【００８８】
例えば、ＳＮ管理情報３０のＳＮが「１」である場合、セクタ割り当てテーブル３２のＳＮ「２」から降順に検索が開始される。読み出しアクセス制御部１０７は、フレームのデータサイズ、タイムスタンプ、及び先頭セクタ番号が登録されたＳＮを読み出し対象のフレームのＳＮとする。
【００８９】
次に、読み出しアクセス制御部１０７は、読み出し対象のフレームのＳＮが前回読み出したフレームのＳＮと連続するか否かを判定する（ステップＳｔ２３）。より具体的には、読み出しアクセス制御部１０７は、セクタ割り当てテーブル３２から検索したＳＮがＳＮ管理情報３０のＳＮと連続するか否かを判定する。
【００９０】
読み出しアクセス制御部１０７は、読み出し対象のフレームのＳＮが前回読み出したフレームのＳＮと連続する場合（ステップＳｔ２３のＹｅｓ）、読み出し部１０３にフレームの読み出しを指示する（ステップＳｔ２４）。このとき、読み出しアクセス制御部１０７は、読み出し部１０３に読み出し対象のフレームの先頭セクタ番号及びサイズ（フレーム長）を通知する。なお、フレームの読み出し処理については後述する。
【００９１】
また、読み出しアクセス制御部１０７は、読み出し対象のフレームのＳＮが前回読み出したフレームのＳＮと連続しない場合（ステップＳｔ２３のＮｏ）、セクタ割り当てテーブル３２から読み出し対象のフレームの受信時刻から一定時間が経過したか否かを判定する（ステップＳｔ２８）。より具体的には、読み出しアクセス制御部１０７は、計時部１０６から通知された現在時刻と受信時刻を比較し、その比較結果に基づき受信時刻から一定時間が経過したか否かを判定する。
【００９２】
読み出しアクセス制御部１０７は、読み出し対象のフレームの受信時刻から一定時間が経過した場合（ステップＳｔ２８のＹｅｓ）、読み出し部１０３にフレームの読み出し処理を指示する（ステップＳｔ２４）。また、読み出しアクセス制御部１０７は、読み出し対象のフレームの受信時刻から一定時間が経過していない場合（ステップＳｔ２８のＮｏ）、処理を終了する。この場合、本処理が再実行されたとき、読み出し対象のフレームの受信時刻から一定時間が経過した場合（ステップＳｔ２８のＹｅｓ）、読み出し処理が実行される。
【００９３】
このように、読み出しアクセス制御部１０７は、読み出し対象のフレームのＳＮが、前回読み出したフレームのＳＮに連続しない場合、読み出し対象のフレームの受信時刻から一定時間の経過後にフレームを読み出す。このため、受信装置１は、ＳＮが不連続なフレームを送信しないように、連番となるＳＮのフレームの受信を一定時間だけ待つことができる。例えば、読み出しアクセス制御部１０７は、前回読み出したフレームのＳＮが「１」である場合に読み出し対象のフレームのＳＮが「３」であるとき、ＳＮが「２」であるフレームの受信を一定時間だけ待つことができる。
【００９４】
読み出しアクセス制御部１０７は、読み出し処理（ステップＳｔ２４）が完了した後、フレームを読み出したセクタを開放する（ステップＳｔ２５）。このため、フレームが読み出されたセクタが空き領域として使用可能となる。
【００９５】
次に、読み出しアクセス制御部１０７は、セクタ割り当てテーブル３２の該当ＳＮのデータサイズに０を登録する（ステップＳｔ２６）。このとき、該当ＳＮのタイムスタンプ及び先頭セクタ番号はｎｕｌｌにセットされる。
【００９６】
次に、読み出しアクセス制御部１０７はＳＮ管理情報３０を更新する（ステップＳｔ２７）。より具体的には、読み出しアクセス制御部１０７は、読み出したフレームのＳＮをＳＮ管理情報３０として登録する。このため、読み出しアクセス制御部１０７は、次の読み出し対象のフレームのＳＮをＳＮ管理情報３０から検索することができる。このようにして、読み出しアクセス制御部１０７は処理を実行する。
【００９７】
図１３は、読み出し部１０３の処理の一例を示すフローチャートである。読み出し部１０３は、読み出しアクセス制御部１０７からの指示に従い読み出し処理（ステップＳｔ２４）を実行する。このとき、読み出し部１０３は、読み出しアクセス制御部１０７から読み出し対象のフレームの先頭セクタ番号及びサイズを取得する。
【００９８】
読み出し部１０３は、フレームの未読み出しデータ量Ｄ（Byte）にフレームのサイズ（フレーム長）をセットする（ステップＳｔ３１）。次に、読み出し部１０３は、読み出し対象のセクタ番号「Ｍ」にフレームの先頭セクタ番号をセットする（ステップＳｔ３２）。
【００９９】
次に、読み出し部１０３は、未読み出しデータ量Ｄが５１２（Byte）以下であるか否かを判定する（ステップＳｔ３３）。読み出し部１０３は、読み出しデータ量Ｄが５１２（Byte）以下である場合（ステップＳｔ３３のＹｅｓ）、セクタ番号「Ｍ」のセクタ（セクタＭ）からＤ（Byte）分のフレームデータ（データ）を読み出す（ステップＳｔ３４）。これにより、フレームの読み出しが完了する。
【０１００】
また、読み出し部１０３は、読み出しデータ量Ｄが５１２（Byte）より多い場合（ステップＳｔ３３のＮｏ）、セクタ番号「Ｍ」のセクタから５１２（Byte）分のフレームデータを読み出す（ステップＳｔ３８）。次に、読み出し部１０３は、未読み出しデータ量Ｄから５１２（Byte）を減算する（ステップＳｔ３９）。これにより、未読み出しデータ量Ｄが更新される。
【０１０１】
次に、読み出し部１０３は、読み出し対象のセクタ番号「Ｍ」にバッファ管理情報１０２のリンクリストのリンク先セクタ番号をセットする（ステップＳｔ４０）。より具体的には、読み出し部１０３は、読み出し対象のセクタ番号「Ｍ」をリンクリスト内のそのリンク先セクタ番号に更新する。これにより、次のフレームデータを読み出し先のセクタ番号がセクタ番号にセットされる。
【０１０２】
このため、読み出し部１０３は、リンクリストに基づき、２以上のセクタからフレームを読み出すことができる。したがって、受信装置１は、フレームのサイズがセクタのサイズより大きい場合でも、バッファ３１に対しフレームデータの書き込み及び読み出しを容易に行うことができる。
【０１０３】
その後、ステップＳｔ３３の処理が再び実行される。このようにして、読み出し部１０３は、フレームデータの残りが５１２（Byte）以下となるまでステップＳｔ３８〜Ｓｔ４０を繰り返す。
【０１０４】
フレームデータの読み出しの完了後（ステップＳｔ３４）、読み出し部１０３はフレームデータを送信部１０４に出力する（ステップＳｔ３５）。送信部１０４は、フレームデータからフレームを復元してユーザネットワークに送信する。
【０１０５】
次に、読み出し部１０３は、バッファ管理情報１０２のリンクリストにおいて、空き領域ポインタの末尾セクタ番号のリンク先セクタ番号を、読み出したフレームの先頭セクタ番号に更新する（ステップＳｔ３６）。これにより、フレームを読み出す前の空き領域の末尾セクタに、フレームが格納されていた先頭セクタが接続される。
【０１０６】
次に、読み出し部１０３は、バッファ管理情報１０２の空き領域ポインタの末尾セクタ番号をセクタ番号「Ｍ」に更新する（ステップＳｔ３７）。このとき、セクタ番号「Ｍ」は、読み出したフレームの末尾セクタ番号を示すため、フレームを読み出す前の空き領域に、フレームが格納されていた全セクタが追加されることになる。このようにして、読み出し部１０３は処理を実行する。
【０１０７】
次にフレームの書き込み処理及び読み出し処理の例を挙げる。
【０１０８】
図１４は、初期状態のバッファ３１及びバッファ管理情報１０２の一例を示す図である。初期状態において、バッファ３１にはフレームが全く格納されていないため、空き領域ポインタの先頭セクタ番号は先頭アドレスの「０」を示し、空き領域ポインタの末尾セクタ番号は末尾アドレスの「２１９−１」を示す。また、リンクリストにおいて、各セクタ番号のリンク先セクタ番号は、そのセクタ番号に１を加算した番号がセットされている。なお、リンクリストの末尾セクタ番号「２１９−１」のリンク先セクタ番号は「０」にセットされている。
【０１０９】
図１５は、初期状態のセクタ割り当てテーブル３２及びＳＮ管理情報３０の一例を示す図である。初期状態において、バッファ３１にはフレームが全く格納されていないため、セクタ割り当てテーブル３２の各アドレス（ＳＮ）において、データサイズは０を示し、タイムスタンプ及び先頭セクタ番号はｎｕｌｌを示す。また、ＳＮ管理情報３０には、最終出力フレームのＳＮとして「２２５−１」が登録されている。
【０１１０】
図１６は、フレーム受信の一例を示す図である。本例では、７個のフレームが順次に受信される場合を挙げる。例えば、ＳＮ「５」のフレームは１番目に受信され、その受信時刻は９４７０２１であり、データサイズは５００（Byte）である。
【０１１１】
受信装置１は、ＳＮ「５」，「６」，「７」，「１０」，「８」，「１１」，「９」のフレームを、この受信順序で受信する。「１０」，「８」，「１１」，「９」のフレームは受信順序がＳＮの順序に一致していないため、受信装置１は、ＳＮの順序「８」〜「１１」に従ってバッファ３１からフレームを読み出すことにより、フレームの順序を訂正する。
【０１１２】
まず、ＳＮ「５」のフレームの書き込み処理について述べる。
【０１１３】
図１７は、ＳＮ「５」のフレームを受信したときのバッファ３１及びバッファ管理情報１０２の一例を示す図であり、図１８は、ＳＮ「５」のフレームを受信したときのセクタ割り当てテーブル３２及びＳＮ管理情報３０の一例を示す図である。図１７及び図１８において、点線枠はＳＮ「５」のフレームの書き込み処理により更新された値を示す。以下に、ＳＮ「５」のフレームの書き込み処理を図１０及び図１１を参照して述べる。
【０１１４】
ステップＳｔ１において、書き込みアクセス制御部１０５は、フレーム情報から、フレームのサイズが５００（Byte）であり、ＳＮが「５」であるフレームの受信を検出する。次に、書き込みアクセス制御部１０５は、セクタ割り当てテーブル３２において、ＳＮ「５」に対応するデータサイズに０を登録し、同一ＳＮのタイムスタンプに９４７０２１を登録する（ステップＳｔ２，Ｓｔ３）。
【０１１５】
次に、書き込みアクセス制御部１０５は、セクタ割り当てテーブル３２のＳＮ「５」の先頭セクタ番号に、バッファ管理情報１０２の空き領域ポインタの先頭セクタ番号である「０」を登録する（ステップＳｔ４）。次に、書き込みアクセス制御部１０５は、書き込み部１０１に書き込み処理を指示する（ステップＳｔ５）。
【０１１６】
書き込み部１０１は、空き領域ポインタの先頭セクタ番号及び末尾セクタ番号が不一致であると判定し（ステップＳｔ１１のＹｅｓ）、セクタ番号「０」のセクタに５００（Byte）のフレームを書き込む（ステップＳｔ１２）。次に、書き込み部１０１は、空き領域ポインタの先頭セクタ番号を、その先頭セクタ番号のリンクリストにおけるリンク先セクタ番号である「１」に更新する（ステップＳｔ１３）。
【０１１７】
次に、書き込み部１０１は、フレームの書き込みが完了したと判定し（ステップＳｔ１４のＹｅｓ）、書き込み成功を通知する（ステップＳｔ１５）。次に、書き込みアクセス制御部１０５は、書き込みが成功したと判定し（ステップＳｔ６のＹｅｓ）、セクタ割り当てテーブル３２のＳＮ「５」に対応するデータサイズに５００（Byte）を登録する（ステップＳｔ７）。
【０１１８】
図１９は、ＳＮ「６」のフレームを受信したときのバッファ３１及びバッファ管理情報１０２の一例を示す図であり、図２０は、ＳＮ「６」のフレームを受信したときのセクタ割り当てテーブル３２及びＳＮ管理情報３０の一例を示す図である。図１９及び図２０において、点線枠はＳＮ「６」のフレームの書き込み処理により更新された値を示す。以下に、ＳＮ「６」のフレームの書き込み処理を図１０及び図１１を参照して述べる。
【０１１９】
ステップＳｔ１において、書き込みアクセス制御部１０５は、フレーム情報から、フレームのサイズが１４００（Byte）であり、ＳＮが「６」であるフレームの受信を検出する。次に、書き込みアクセス制御部１０５は、セクタ割り当てテーブル３２において、ＳＮ「６」に対応するデータサイズに０を登録し、同一ＳＮのタイムスタンプに９４７７１４を登録する（ステップＳｔ２，Ｓｔ３）。
【０１２０】
次に、書き込みアクセス制御部１０５は、セクタ割り当てテーブル３２のＳＮ「６」の先頭セクタ番号に、バッファ管理情報１０２の空き領域ポインタの先頭セクタ番号である「１」を登録する（ステップＳｔ４）。次に、書き込みアクセス制御部１０５は、書き込み部１０１に書き込み処理を指示する（ステップＳｔ５）。
【０１２１】
ＳＮ「６」のフレームは、サイズが１４００（Byte）であるため、３つのセクタに分けて書き込まれる。このため、書き込み部１０１は、ステップＳｔ１１〜Ｓｔ１４の各処理を３回繰り返す。
【０１２２】
１回目の書き込みにおいて、書き込み部１０１は、フレームデータの１〜５１２（Byte）の部分をセクタ番号「１」のセクタに書き込む（ステップＳｔ１２）。次に、書き込み部１０１は、空き領域ポインタの先頭セクタ番号を、リンクリストにおけるセクタ番号「１」のリンク先セクタ番号「２」に更新する（ステップＳｔ１３）。
【０１２３】
２回目の書き込みにおいて、書き込み部１０１は、フレームデータの５１３〜１０２４（Byte）の部分をセクタ番号「２」のセクタに書き込む（ステップＳｔ１２）。次に、書き込み部１０１は、空き領域ポインタの先頭セクタ番号を、リンクリストにおけるセクタ番号「２」のリンク先セクタ番号「３」に更新する（ステップＳｔ１３）。
【０１２４】
３回目の書き込みにおいて、書き込み部１０１は、フレームデータの１０２５〜１４００（Byte）の部分をセクタ番号「３」のセクタに書き込む（ステップＳｔ１２）。次に、書き込み部１０１は、空き領域ポインタの先頭セクタ番号を、リンクリストにおけるセクタ番号「３」のリンク先セクタ番号「４」に更新する（ステップＳｔ１３）。
【０１２５】
次に、書き込み部１０１は、フレームの書き込みが完了したと判定し（ステップＳｔ１４のＹｅｓ）、書き込み成功を通知する（ステップＳｔ１５）。次に、書き込みアクセス制御部１０５は、書き込みが成功したと判定し（ステップＳｔ６のＹｅｓ）、セクタ割り当てテーブル３２のＳＮ「６」に対応するデータサイズに１４００（Byte）を登録する（ステップＳｔ７）。
【０１２６】
図２１は、ＳＮ「７」〜「１１」の各フレームを受信したときのバッファ３１及びバッファ管理情報１０２の一例を示す図である。図２２は、ＳＮ「７」〜「１１」の各フレームを受信したときのセクタ割り当てテーブル３２及びＳＮ管理情報３０の一例を示す図である。図２１及び図２２において、点線枠はＳＮ「５」のフレームの書き込み処理により更新された値を示す。
【０１２７】
ＳＮ「７」〜「１１」のフレームは、ＳＮ「５」のフレームの場合と同様の処理によって、バッファ３１のセクタ番号「４」〜「８」のセクタにそれぞれ書き込まれる。次に、この状態からＳＮ「５」及び「６」の各フレームを読み出す処理について述べる。
【０１２８】
図２３は、ＳＮ「５」のフレームを送信したときのバッファ３１及びバッファ管理情報１０２の一例を示す図である。図２４は、ＳＮ「５」のフレームを送信したときのセクタ割り当てテーブル３２及びＳＮ管理情報３０の一例を示す図である。図２３及び図２４において、点線枠はＳＮ「５」のフレームの読み出し処理により更新された値を示す。以下に、ＳＮ「５」のフレームの書き込み処理を図１２及び図１３を参照して述べる。
【０１２９】
読み出しアクセス制御部１０７は、送信タイミングが到来すると（ステップＳｔ２１のＹｅｓ）、ＳＮ管理情報３０のＳＮ「２２５−１」の次のＳＮ「０」からセクタ割り当てテーブル３２の検索を行う（ステップＳｔ２２）。セクタ割り当てテーブル３２のＳＮ「０」〜「４」にはフレームのデータサイズなどが登録されていないため、読み出しアクセス制御部１０７は、読み出し対象のフレームのＳＮとして「５」を検出する。
【０１３０】
読み出しアクセス制御部１０７は、ＳＮ「５」がＳＮ管理情報３０のＳＮ「２２５−１」と連続しないと判定し（ステップＳｔ２３のＮｏ）、セクタ割り当てテーブル３２に登録されているＳＮ「５」のフレームのタイムスタンプ、つまり受信時刻（９４７０２１）から一定時間が経過したか否かを判定する（ステップＳｔ２８）。
【０１３１】
上記の一定時間を６００００とした場合、読み出しアクセス制御部１０７は、現在時刻が１００７０２１（＝９４７０２１＋６００００）となるまで、上記のステップＳｔ２１〜Ｓｔ２８の処理を繰り返す。この間、受信装置１は、ＳＮ「０」〜「４」のフレームの受信を待つが、受信されない。
【０１３２】
このため、読み出しアクセス制御部１０７は、受信時刻から一定時間が経過したと判定し（ステップＳｔ２８のＹｅｓ）、読み出し部１０３にフレームの読み出し処理を指示する（ステップＳｔ２４）。読み出し部１０３は、未読み出しデータ量Ｄに５００（Byte）をセットし（ステップＳｔ３１）、セクタ割り当てテーブル３２のＳＮ「５」の先頭セクタ番号「０」をセクタ番号「Ｍ」にセットする（ステップＳｔ３２）。
【０１３３】
次に、読み出し部１０３は、未読み出しデータ量Ｄが５１２（Byte）以下であると判定し（ステップＳｔ３３のＹｅｓ）、セクタ番号「０」（＝Ｍ）のセクタから５００（Byte）（＝Ｄ）分のフレームデータを読み出す（ステップＳｔ３４）。次に、読み出し部１０３は、フレームデータを送信部１０４に出力し（ステップＳｔ３５）、バッファ管理情報１０２のリンクリストにおいて、空き領域ポインタの末尾セクタ番号「２１９−１」のリンク先セクタ番号をセクタ番号「０」（＝Ｍ）に更新する（ステップＳｔ３６）。
【０１３４】
次に、読み出し部１０３は、空き領域ポインタの末尾セクタ番号を「０」（＝Ｍ）に更新する（ステップＳｔ３７）。次に、読み出しアクセス制御部１０７は、セクタ番号「０」のセクタを開放し（ステップＳｔ２５）、セクタ割り当てテーブル３２のＳＮ「５」のデータサイズを０に更新する（ステップＳｔ２６）。なお、ＳＮ「５」のタイムスタンプ及び先頭セクタ番号はｎｕｌｌに更新される。次に、読み出し部１０３は、ＳＮ管理情報３０のＳＮを「５」に更新する（ステップＳｔ２７）。
【０１３５】
図２５は、ＳＮ「６」のフレームを送信したときのバッファ３１及びバッファ管理情報１０２の一例を示す図である。図２６は、ＳＮ「６」のフレームを送信したときのセクタ割り当てテーブル３２及びＳＮ管理情報３０の一例を示す図である。図２５及び図２６において、点線枠はＳＮ「６」のフレームの読み出し処理により更新された値を示す。以下に、ＳＮ「６」のフレームの書き込み処理を図１２及び図１３を参照して述べる。
【０１３６】
読み出しアクセス制御部１０７は、送信タイミングが到来すると（ステップＳｔ２１のＹｅｓ）、ＳＮ管理情報３０のＳＮ「５」の次のＳＮ「６」からセクタ割り当てテーブル３２の検索を行う（ステップＳｔ２２）。読み出しアクセス制御部１０７は、読み出し対象のフレームのＳＮとして「６」を検出する。
【０１３７】
読み出しアクセス制御部１０７は、ＳＮ「６」がＳＮ管理情報３０のＳＮ「５」と連続すると判定し（ステップＳｔ２３のＹｅｓ）、読み出し部１０３にフレームの読み出し処理を指示する（ステップＳｔ２４）。ＳＮ「６」のフレームのサイズは１４００（Byte）であり、３つのセクタに分かれて格納されているため、読み出し部１０３は、３回に分けてフレームの読み出しを行う。
【０１３８】
読み出し部１０３は、未読み出しデータ量Ｄに１４００（Byte）をセットし（ステップＳｔ３１）、セクタ割り当てテーブル３２のＳＮ「６」の先頭セクタ番号「１」をセクタ番号「Ｍ」にセットする（ステップＳｔ３２）。
【０１３９】
次に、読み出し部１０３は、未読み出しデータ量Ｄ（＝１４００（Byte））が５１２（Byte）より多いと判定し（ステップＳｔ３３のＮｏ）、セクタ番号「１」（＝Ｍ）のセクタから５１２（Byte）（＝Ｄ）分のフレームデータ（０〜５１２（Byte）のフレームデータ）を読み出す（ステップＳｔ３８）。次に、読み出し部１０３は、未読み出しデータ量Ｄから５１２（Byte）を減算して８８８（Byte）（＝１４００−５１２）とする（ステップＳｔ３９）。次に、読み出し部１０３は、セクタ番号「Ｍ」を、リンクリストのそのリンク先セクタ番号「２」に更新する（ステップＳｔ４０）。
【０１４０】
次に、読み出し部１０３は、未読み出しデータ量Ｄ（＝８８８（Byte））が５１２（Byte）より多いと判定し（ステップＳｔ３３のＮｏ）、セクタ番号「２」（＝Ｍ）のセクタから５１２（Byte）（＝Ｄ）分のフレームデータ（１〜５１２（Byte）のフレームデータ）を読み出す（ステップＳｔ３８）。次に、読み出し部１０３は、未読み出しデータ量Ｄから５１２（Byte）を減算して３７６（Byte）（＝８８８−５１２）とする（ステップＳｔ３９）。次に、読み出し部１０３は、セクタ番号「Ｍ」を、リンクリストのそのリンク先セクタ番号「３」に更新する（ステップＳｔ４０）。
【０１４１】
次に、読み出し部１０３は、未読み出しデータ量Ｄ（＝３７６（Byte））が５１２（Byte）以下であると判定し（ステップＳｔ３３のＹｅｓ）、セクタ番号「３」（＝Ｍ）のセクタから３７６（Byte）（＝Ｄ）分のフレームデータを読み出す（ステップＳｔ３４）。次に、読み出し部１０３は、フレームデータを送信部１０４に出力し（ステップＳｔ３５）、バッファ管理情報１０２のリンクリストにおいて、空き領域ポインタの末尾セクタ番号「０」のリンク先セクタ番号をセクタ番号「１」（＝Ｍ）に更新する（ステップＳｔ３６）。
【０１４２】
次に、読み出し部１０３は、空き領域ポインタの末尾セクタ番号を「３」（＝Ｍ）に更新する（ステップＳｔ３７）。次に、読み出しアクセス制御部１０７は、セクタ番号「１」〜「３」のセクタを開放し（ステップＳｔ２５）、セクタ割り当てテーブル３２のＳＮ「６」のデータサイズを０に更新する（ステップＳｔ２６）。なお、ＳＮ「６」のタイムスタンプ及び先頭セクタ番号はｎｕｌｌに更新される。次に、読み出し部１０３は、ＳＮ管理情報３０のＳＮを「６」に更新する（ステップＳｔ２７）。
【０１４３】
図２７は、ＳＮ「７」のフレームを送信したときのバッファ３１及びバッファ管理情報１０２の一例を示す図である。図２８は、ＳＮ「７」のフレームを送信したときのセクタ割り当てテーブル３２及びＳＮ管理情報３０の一例を示す図である。図２７及び図２８において、点線枠はＳＮ「７」のフレームの読み出し処理により更新された値を示す。
【０１４４】
ＳＮ「７」のフレームの読み出し処理は、上記の読み出し処理と同様に実行される。
【０１４５】
図２９は、ＳＮ「８」のフレームを送信したときのバッファ３１及びバッファ管理情報１０２の一例を示す図である。図３０は、ＳＮ「８」のフレームを送信したときのセクタ割り当てテーブル３２及びＳＮ管理情報３０の一例を示す図である。図２９及び図３０において、点線枠はＳＮ「８」のフレームの読み出し処理により更新された値を示す。
【０１４６】
ＳＮ「８」のフレームの読み出し処理は、上記の読み出し処理と同様に実行される。ＳＮ「８」のフレームはＳＮ「１０」のフレームの後に受信されたため、ＳＮ「８」のフレームの書き込み先のセクタ番号「６」は、ＳＮ「１０」のフレームの書き込み先のセクタ番号「５」より大きい。
【０１４７】
このため、バッファ管理情報１０２のリンクリストにおいて、前回読み出されたフレームのセクタ番号「４」のリンク先セクタ番号が、連続するセクタ番号の「５」ではなく、ＳＮ「８」のフレームの書き込み先のセクタ番号「６」に更新される。このようなリンクリスト内のセクタ番号の順序変化は、その後のＳＮ「９」〜「１１」の各フレームの読み出しによっても発生する。
【０１４８】
図３１は、ＳＮ「９」〜「１１」の各フレームを送信したときのバッファ３１及びバッファ管理情報１０２の一例を示す図である。図３２は、ＳＮ「９」〜「１１」の各フレームを送信したときのセクタ割り当てテーブル３２及びＳＮ管理情報３０の一例を示す図である。図３１及び図３２において、点線枠はＳＮ「９」〜「１１」の各フレームの読み出し処理により更新された値を示す。
【０１４９】
バッファ管理情報１０２のリンクリストにおいて、ＳＮ「９」のフレームの読み出が行われると、セクタ番号「６」のリンク先セクタ番号は、ＳＮ「９」のフレームの書き込み先のセクタ番号「８」に更新される。また、ＳＮ「１０」のフレームの読み出しが行われると、セクタ番号「８」のリンク先セクタ番号は、ＳＮ「１０」のフレームの書き込み先のセクタ番号「５」に更新される。さらに、ＳＮ「１１」のフレームの読み出しが行われると、セクタ番号「５」のリンク先セクタ番号は、ＳＮ「１１」のフレームの書き込み先のセクタ番号「７」に更新される。
【０１５０】
このように、フレームの受信順序の入れ替えが発生すると、リンクリストにおける各セクタの間のリンク関係が、セクタ番号の順序とは無関係に変更される。
【０１５１】
図３３は、セクタを１周するまでフレームを受信したときのバッファ３１及びバッファ管理情報１０２の一例を示す図である。図３４は、セクタを１周するまでフレームを送信したときのセクタ割り当てテーブル３２及びＳＮ管理情報３０の一例を示す図である。図３３及び図３４において、点線枠は各フレームの書き込み処理により更新された値を示す。
【０１５２】
本例において、受信装置１は、ＳＮ「１２」のフレームを受信せず、ＳＮ「１３」以降の各フレームを受信したものと仮定する。なお、各フレームのサイズは５００（Byte）とする。この状態において、１０００（Byte）のフレームが受信されると、そのフレームは、セクタ番号が連続しない２つのセクタにフラグメント化されて格納される。
【０１５３】
図３５は、ＳＮ「２１９＋１０」のフレームを受信したときのバッファ３１及びバッファ管理情報１０２の一例を示す図である。図３６は、ＳＮ「２１９＋１０」の各フレームを受信したときのセクタ割り当てテーブル３２及びＳＮ管理情報３０の一例を示す図である。図３５及び図３６において、点線枠はＳＮ「２１９＋１０」のフレームの書き込み処理により更新された値を示す。
【０１５４】
ＳＮ「２１９＋１０」のフレームは、１０００（Byte）であるため、２つのセクタに書き込まれる。フレームの受信前、空き領域の先頭セクタ番号は「８」（図３３参照）であるため、フレームデータの１〜５１２（Byte）はセクタ番号は「８」のセクタに書き込まれる。
【０１５５】
また、リンクリストにおけるセクタ番号「８」のリンク先セクタ番号は「５」であるため、フレームデータの５１３〜１０００（Byte）はセクタ番号は「５」のセクタに書き込まれる。つまり、ＳＮ「２１９＋１０」のフレームは、セクタ番号が連続しない２つのセクタに分けて書き込まれる。
【０１５６】
しかし、読み出し部１０３は、セクタ割り当てテーブル３２の先頭セクタ番号とリンクリストに基づいて、ＳＮ「２１９＋１０」のフレームをセクタ番号「８」及び「５」の各セクタから読み出すことができる。
【０１５７】
なお、本例では、空き領域ポインタの先頭セクタ番号及び末尾セクタ番号がともに「７」である。このため、新たなフレームの書き込みが行われた場合、ステップＳｔ１１の処理により空き領域が不足していると判定され、書き込みに失敗する（ステップＳｔ１６参照）。
【０１５８】
これまで述べたように、書き込みアクセス制御部１０５は、書き込み対象のフレームのＳＮに対応するように、フレームの書き込み先のセクタ番号をセクタ割り当てテーブル３２に登録する。また、読み出しアクセス制御部１０７は、セクタ割り当てテーブル３２から、読み出し対象のフレームのＳＮに対応するセクタ番号を検索し、読み出し部１０３は、検索したセクタ番号が示すセクタからフレームを読み出す。
【０１５９】
このため、受信装置１は、１個のフレームを１以上のセクタに書き込むことにより、フレームのサイズに応じた適切な数のセクタをフレームの格納に用いることができるので、セクタの余剰領域（つまり未使用領域）を低減することができる。また、受信装置１は、セクタに動的にＳＮを割り当て、その割り当てをセクタ割り当てテーブル３２に登録して管理することにより、バッファ３１からフレームをＳＮの順、つまり元の送信順序に従って読み出すことができる。これにより、フレームの送信順序の訂正が可能となる。
【０１６０】
したがって、受信装置１は、フレームが書き込まれるバッファ３１の使用効率を向上することができる。
【０１６１】
上記の実施例において、書き込みアクセス制御部１０５は、フレームの受信時刻をセクタ割り当てテーブル３２のタイムスタンプに登録したが、受信時刻に代えて、フレーム自体に含まれるタイムスタンプ（図２参照）を登録してもよい。フレームのタイムスタンプは送信装置２において生成されているため、受信装置１は、送信装置２の送信時刻に基づきフレームの送信タイミングを適切に制御することができる。
【０１６２】
図３７は、書き込みアクセス制御部１０５の処理の他の例を示すフローチャートである。図３７において、図１０と共通する処理には同一の符号を付し、その説明は省略する。
【０１６３】
書き込みアクセス制御部１０５は、フレームに含まれるタイムスタンプをセクタ割り当てテーブル３２に登録する（ステップＳｔ３ａ）。フレームに含まれるタイムスタンプは、送信装置２におけるフレームの送信時刻である。
【０１６４】
図３８は、読み出しアクセス制御部１０７の処理の他の例を示すフローチャートである。読み出しアクセス制御部１０７は、セクタ割り当てテーブル３２の検索後（ステップＳｔ２２）、検索したタイムスタンプ（ＴＳ）の時刻から一定時間が経過したか否かを判定する（ステップＳｔ２３ａ）。この一定時間には、例えば、送信装置２と受信装置１の間の伝送遅延（タイムスタンプの時刻と受信時刻の差分に相当）、及びバッファ３１の格納時間が含まれる。
【０１６５】
読み出しアクセス制御部１０７は、タイムスタンプの時刻から一定時間が経過していない場合（ステップＳｔ２３ａのＮｏ）、処理を終了する。この場合、再度、ステップＳｔ２３ａの処理が実行されるまでフレームの読み出しは行われない。また、読み出しアクセス制御部１０７は、タイムスタンプの時刻から一定時間が経過している場合（ステップＳｔ２３ａのＹｅｓ）、読み出し部１０３にフレームの読み出しを指示する（ステップＳｔ２４）。
【０１６６】
このため、読み出し部１０３は、フレームに含まれるタイムスタンプから一定時間の経過後にフレームを読み出す。したがって、受信装置１は、送信装置２におけるフレームの送信時刻に基づきフレームの送信タイミングを制御することができる。これにより、フレーム同士の間隔を、送信装置２における送信処理のフレーム間隔に近づけることができるため、フレーム間隔に対する伝送遅延のゆらぎの影響が緩和される。
【０１６７】
また、図１２に示される例では、読み出し対象のフレームのＳＮが前回読み出したフレームのＳＮと不連続である場合（ステップＳｔ２３のＮｏ）、読み出し対象のフレームの受信時刻から一定時間の経過後にフレームが読み出される（ステップＳｔ２８，Ｓｔ２４）。このため、フレームロスやフレームの受信順序の入れ替えが生じた場合、バッファ３１にフレームが滞留することにより、受信装置１からバースト的に複数のフレームが送信されるおそれがある。
【０１６８】
しかし、本実施例において、受信装置１は、送信装置２におけるフレームの送信時刻に基づきフレームの送信タイミングを制御することができるため、バースト的な送信を抑制することができ、伝送品質を向上することが可能となる。もっとも、図１２に示される例においても、タイミング制御部１０９が送信タイミングをより適切に制御することでフレームのバースト性を低減することは可能である。
【０１６９】
これまで述べた受信装置１は、双方向の伝送が可能な伝送装置に適用することが可能である。
【０１７０】
図３９は、伝送装置５の一例を示す構成図である。伝送装置５は、制御ユニット５０と、ネットワークＮＷからユーザネットワークＮＷｕに下り方向のフレームＦＲｄを転送する下り転送ユニット５１と、ユーザネットワークＮＷｕからネットワークＮＷに上り方向のフレームＦＲｕを転送する上り転送ユニット５２とを有する。なお、ネットワークＮＷ（図４参照）は第１ネットワークの一例であり、ユーザネットワークＮＷｕは第２ネットワークの一例である。
【０１７１】
制御ユニット５０、下り転送ユニット５１、及び上り転送ユニット５２は、例えば、複数の電気部品が実装された回路基板により構成され、伝送装置５の筐体に設けられたスロットに実装される。制御ユニット５０、下り転送ユニット５１、及び上り転送ユニット５２は、伝送装置５内に設けられた配線基板と電気コネクタなどを介して接続され、配線基板を介して互いにデータを入出力する。
【０１７２】
制御ユニット５０は、例えばＣＰＵ回路などにより構成され、下り転送ユニット５１及び上り転送ユニット５２の監視制御を行う。下り転送ユニット５１は、受信装置１と同様の構成を有し、下り方向のフレームＦＲｄに対して上記の処理を行うことにより、下り方向のフレームＦＲｄをネットワークＮＷからユーザネットワークＮＷｕに転送する。なお、下り転送ユニット５１は第１転送処理部の一例であり、下り方向のフレームＦＲｄは第１フレームの一例である。
【０１７３】
上り転送ユニット５２は、例えばＦＰＧＡまたはＡＳＩＣなどのハードウェアにより構成され、ユーザネットワークＮＷｕから上り方向のフレームＦＲｕを受信してネットワークＮＷに送信する。上り転送ユニット５２は、送信部５２０と、送信制御部５２１と、タイミング制御部５２２と、フレーム処理部５２３と、受信部５２４と、受信制御部５２５と、計時部５２６とを有する。なお、上り転送ユニット５２は第２転送処理部の一例であり、上り方向のフレームＦＲｕは第２フレームの一例である。
【０１７４】
受信部５２４は、ユーザネットワークＮＷｕから上り方向のフレームＦＲｕを受信してフレーム処理部５２３に出力する。フレーム処理部５２３は、上り方向のフレームＦＲｕにＳＮやタイムスタンプを付与する。フレーム処理部５２３は、上り方向のフレームＦＲｕを送信部５２０に出力する。送信部５２０は上り方向のフレームＦＲｕをネットワークＮＷに送信する。
【０１７５】
計時部５２６は、クロック信号に基づいて現在時刻を送信制御部５２１及び受信制御部５２５に通知する。受信制御部５２５は、フレーム処理部５２３における上り方向のフレームＦＲｕの処理レートなどを現在時刻に基づき制御する。
【０１７６】
タイミング制御部５２２は、クロック割り込みなどにより送信制御部５２１に上り方向のフレームＦＲｕの送信タイミングを通知する。送信制御部５２１は、現在時刻及び送信タイミングに応じて送信部５２０及びフレーム処理部５２３を制御する。
【０１７７】
伝送装置５は、実施例の受信装置１と同様の構成の下り転送ユニット５１を有する。このため、伝送装置５は、上述した受信装置１と同様の作用効果を奏する。
【０１７８】
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【０１７９】
なお、以上の説明に関して更に以下の付記を開示する。
（付記１）  送信順序を示す順序情報が付与されたフレームを受信する受信部と、
前記フレームが書き込まれる複数の領域を有するバッファと、
前記複数の領域の少なくとも１つに前記フレームを書き込む書き込み処理部と、
前記複数の領域の少なくとも１つから前記フレームを読み出す読み出し処理部と、
前記順序情報と、前記複数の領域のうち、前記順序情報が付与された前記フレームの書き込み先の領域を示す識別子との対応関係が登録されるテーブルを記憶する記憶部とを有し、
前記書き込み処理部は、書き込み対象の前記フレームの前記順序情報に対応するように、前記複数の領域のうち、前記フレームの書き込み先の領域の前記識別子を前記テーブルに登録し、
前記読み出し処理部は、前記テーブルから、読み出し対象の前記フレームの前記順序情報に対応する前記識別子を検索し、前記複数の領域のうち、検索した前記識別子が示す領域から前記フレームを読み出すことを特徴とする受信装置。
（付記２）  前記複数の領域の各々のサイズは前記フレームのサイズの最大値より小さいことを特徴とする付記１に記載の受信装置。
（付記３）  前記書き込み処理部は、前記複数の領域の間の接続関係を示す接続情報に基づき、前記複数の領域のうち、２以上の領域に前記フレームを書き込み、
前記読み出し処理部は、前記接続情報に基づき、前記２以上の領域から前記フレームを読み出すことを特徴とする付記１または２に記載の受信装置。
（付記４）  前記書き込み処理部は、前記フレームの受信時刻を検出し、
前記読み出し処理部は、読み出し対象の前記フレームの前記送信順序が、前回読み出した前記フレームの前記送信順序に連続しない場合、読み出し対象の前記フレームの前記受信時刻から一定時間の経過後に前記フレームを読み出すことを特徴とする付記１乃至３の何れかに記載の受信装置。
（付記５）  前記フレームには、前記順序情報と前記フレームの送信時刻が付与されており、
前記読み出し処理部は、前記送信時刻から一定時間の経過後に前記フレームを読み出すことを特徴とする付記１乃至３の何れかに記載の受信装置。
（付記６）  第１ネットワークから第２ネットワークに第１フレームを転送する第１転送処理部と、
前記第２ネットワークから前記第１ネットワークに第２フレームを転送する第２転送処理部とを有し、
前記第１転送処理部は、
送信順序を示す順序情報が付与された前記第１フレームを前記第１ネットワークから受信する受信部と、
前記第１フレームが書き込まれる複数の領域を有するバッファと、
前記複数の領域の少なくとも１つに前記第１フレームを書き込む書き込み処理部と、
前記複数の領域の少なくとも１つから前記第１フレームを読み出す読み出し処理部と、
前記読み出し処理部が読み出した前記第１フレームを前記第２ネットワークに送信する送信部と、
前記順序情報と、前記複数の領域のうち、前記順序情報が付与された前記第１フレームの書き込み先の領域を示す識別子との対応関係が登録されるテーブルを記憶する記憶部とを有し、
前記書き込み処理部は、書き込み対象の前記第１フレームの前記順序情報に対応するように、前記複数の領域のうち、前記第１フレームの書き込み先の領域の前記識別子を前記テーブルに登録し、
前記読み出し処理部は、前記テーブルから、読み出し対象の前記第１フレームの前記順序情報に対応する前記識別子を検索し、前記複数の領域のうち、検索した前記識別子が示す領域から前記第１フレームを読み出すことを特徴とする伝送装置。
（付記７）  前記複数の領域の各々のサイズは前記第１フレームのサイズの最大値より小さいことを特徴とする付記６に記載の伝送装置。
（付記８）  前記書き込み処理部は、前記複数の領域の間の接続関係を示す接続情報に基づき、前記複数の領域のうち、２以上の領域に前記第１フレームを書き込み、
前記読み出し処理部は、前記接続情報に基づき、前記２以上の領域から前記第１フレームを読み出すことを特徴とする付記６または７に記載の伝送装置。
（付記９）  前記書き込み処理部は、前記第１フレームの受信時刻を検出し、
前記読み出し処理部は、読み出し対象の前記第１フレームの前記送信順序が、前回読み出した前記第１フレームの前記送信順序に連続しない場合、読み出し対象の前記第１フレームの前記受信時刻から一定時間の経過後に前記第１フレームを読み出すことを特徴とする付記６乃至８の何れかに記載の伝送装置。
（付記１０）  前記第１フレームには、前記順序情報と前記第１フレームの送信時刻が付与されており、
前記読み出し処理部は、前記送信時刻から一定時間の経過後に前記第１フレームを読み出すことを特徴とする付記６乃至８の何れかに記載の伝送装置。
【符号の説明】
【０１８０】
１       受信装置
５       伝送装置
３１       バッファ
３２       セクタ割り当てテーブル
５１       下り転送ユニット
５２       上り転送ユニット
１００      受信部
１０１      書き込み部
１０２      バッファ管理情報
１０３      読み出し部
１０５      書き込みアクセス制御部
１０７      読み出しアクセス制御部
【図１】
2018148358.tif 000003
【図２】
2018148358.tif 000004
【図３】
2018148358.tif 000005
【図４】
2018148358.tif 000006
【図５】
2018148358.tif 000007
【図６】
2018148358.tif 000008
【図７】
2018148358.tif 000009
【図８】
2018148358.tif 000010
【図９】
2018148358.tif 000011
【図１０】
2018148358.tif 000012
【図１１】
2018148358.tif 000013
【図１２】
2018148358.tif 000014
【図１３】
2018148358.tif 000015
【図１４】
2018148358.tif 000016
【図１５】
2018148358.tif 000017
【図１６】
2018148358.tif 000018
【図１７】
2018148358.tif 000019
【図１８】
2018148358.tif 000020
【図１９】
2018148358.tif 000021
【図２０】
2018148358.tif 000022
【図２１】
2018148358.tif 000023
【図２２】
2018148358.tif 000024
【図２３】
2018148358.tif 000025
【図２４】
2018148358.tif 000026
【図２５】
2018148358.tif 000027
【図２６】
2018148358.tif 000028
【図２７】
2018148358.tif 000029
【図２８】
2018148358.tif 000030
【図２９】
2018148358.tif 000031
【図３０】
2018148358.tif 000032
【図３１】
2018148358.tif 000033
【図３２】
2018148358.tif 000034
【図３３】
2018148358.tif 000035
【図３４】
2018148358.tif 000036
【図３５】
2018148358.tif 000037
【図３６】
2018148358.tif 000038
【図３７】
2018148358.tif 000039
【図３８】
2018148358.tif 000040
【図３９】
2018148358.tif 000041