(57)【要約】【課題】パケット送信の通信速度が遅くなることを防止するパケット中継装置を提供すること。【解決手段】第１の通信装置と第２の通信装置との間で送受信されるパケットを中継するパケット中継装置において、前記第１の通信装置から受信した第１及び第２のパケットを記憶するメモリと、前記第１及び第２のパケットを前記第２の通信装置に送信するパケット送信部と、前記メモリに記憶した前記第１のパケットを前記パケット送信部に転送する第１の転送処理と、前記メモリに記憶した前記第２のパケットを前記パケット送信部に転送する第２の転送処理を行うプロセッサを備え、前記プロセッサは、前記第１の転送処理を開始してから前記第１の転送処理が終了するまでの時間を示す第１の転送処理時間を測定し、前記第１の転送処理時間に応じて、前記第１の転送処理の終了後、前記第２の転送処理の開始までの待ち時間を決定する。【選択図】図１０
2016219909.tif 000002
【特許請求の範囲】
【請求項１】
第１の通信装置と第２の通信装置との間で送受信されるパケットを中継するパケット中継装置において、
前記第１の通信装置から受信した第１及び第２のパケットを記憶するメモリと、
前記第１及び第２のパケットを前記第２の通信装置に送信するパケット送信部と、
前記メモリに記憶した前記第１のパケットを前記パケット送信部に転送する第１の転送処理と、前記メモリに記憶した前記第２のパケットを前記パケット送信部に転送する第２の転送処理を行うプロセッサを備え、
前記プロセッサは、前記第１の転送処理を開始してから前記第１の転送処理が終了するまでの時間を示す第１の転送処理時間を測定し、前記第１の転送処理時間に応じて、前記第１の転送処理の終了後、前記第２の転送処理の開始までの待ち時間を決定する
ことを特徴とするパケット中継装置。
【請求項２】
前記プロセッサは、前記待ち時間をＳ、前記メモリに記憶されている前記第１のパケットのサイズをＬ、前記第２の通信装置に前記第１のパケットを送信する通信速度をＲ、前記第１の転送処理時間をｔとしたとき、
Ｓ＝Ｌ／Ｒ  −  ｔ
に基づいて、前記待ち時間を算出することを特徴する請求項１記載のパケット中継装置。
【請求項３】
前記第１の転送処理時間は、前記メモリに記憶した前記第１のパケットのサイズの測定を開始してから前記測定が終了するまでの時間を含むことを特徴とする請求項１記載のパケット中継装置。
【請求項４】
前記プロセッサは、前記待ち時間に応じたタイマを起動し、
前記第１の転送処理時間は、前記タイマを起動してから、前記タイマが動作し始めるまでの時間を含むことを特徴とする請求項１記載のパケット中継装置。
【請求項５】
前記プロセッサは、それぞれサイズが異なる第３及び第４のパケットを作成し、前記第３及び第４のパケットを前記メモリに記憶し、前記第３のパケットを前記パケット送信部に転送する第３の転送処理を開始してから前記第３の転送処理が終了するまでの時間を示す第３の転送処理時間と、前記第４のパケットを前記パケット送信部に転送する第４の転送処理を開始してから前記第４の転送処理が終了するまでの時間を示す第４の転送処理時間とを測定し、前記第３及び第４の転送処理時間から、前記第１の転送処理時間を算出する
ことを特徴とする請求項１記載のパケット中継装置。
【請求項６】
メモリと、パケット送信部と、プロセッサを備えるパケット中継装置におけるパケット中継方法であって、
前記プロセッサによって、第１の通信装置から受信した第１及び第２のパケットを前記メモリに記憶し、前記メモリに記憶した前記第１のパケットを、前記パケット送信部に転送する第１の転送処理を開始してから、前記第１の転送処理が終了するまでの時間を示す第１の転送処理時間を測定し、前記第１の転送処理時間に応じて、前記第１の転送処理の終了後、前記メモリに記憶した前記第２のパケットを前記パケット送信部に転送する第２の転送処理の開始までの待ち時間を決定する
ことを特徴とするパケット中継方法。
【請求項７】
メモリと、パケット送信部を備えるパケット中継装置におけるコンピュータに実行させるパケット中継プログラムであって、
第１の通信装置から受信した第１及び第２のパケットを前記メモリに記憶し、前記メモリに記憶した前記第１のパケットを、前記パケット送信部に転送する第１の転送処理を開始してから、前記第１の転送処理が終了するまでの時間を示す第１の転送処理時間を測定し、前記第１の転送処理時間に応じて、前記第１の転送処理の終了後、前記メモリに記憶した前記第２のパケットを前記パケット送信部に転送する第２の転送処理の開始までの待ち時間を決定する処理を、
前記コンピュータに実行させることを特徴とするパケット中継プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット中継装置、パケット中継方法に関する。
【背景技術】
【０００２】
近年、通信ネットワークにおける通信量を制御する技術として、トラフィックシェーピングと呼ばれる技術が注目されている。
【０００３】
トラヒックシェーピングとは、例えば、通信ネットワークのパケットを中継する通信装置が、受信したパケットを内部のメモリに一時記憶し、パケットを送信するタイミングを調整することで、送信側の通信速度を制御する技術である。単にシェーピングとも呼ばれる。
【０００４】
このような技術としては、例えば、以下のような技術がある。
【０００５】
すなわち、特定のトラフィッククラスにおける遅延制約を考慮し、スリープモードとアクティブモードの切り替えを行うタイマ値を調整する、パケット交換ネットワークにおけるトラフィックシェーピングの方法に関する技術がある。
【０００６】
この技術によれば、通信装置が低電力アイドルモードに適切に切り替わることで、通信装置の省電力化が可能となる、とされる。
【０００７】
また、通信装置の送受信するデータの送信元やプロトコル種別などから、シェーピングを行うかどうかをフロー単位で動的に決定する、シェーパー制御方法に関する技術がある。
【０００８】
この技術によれば、通信装置のＯＳのスケジューラーの起動周期や、送信データ量の時間変化に依存しないフロー単位でのシェーピングが可能となる、とされる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１３−１７６０４１号公報
【特許文献２】特開２００７−１３４４９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
通信装置におけるシェーピング処理は、例えば、送信するパケットのサイズに応じて、パケットの送信間隔を算出し、当該送信間隔ごとに、メモリに一時記憶しておいたパケットを順次送信する。しかし、実際のシェーピング処理においては、例えば、パケットを送信するハードウェアにパケットを送信するよう命令したり、メモリに一時記憶しておいたパケットをパケット送信部に出力したりするため、パケットを送信するまでの処理に時間がかかる。そのため、例えば、あるパケットを送信してから次のパケットを送信するまでの時間は、上述した処理にかかる時間分だけ長くなってしまい、パケット送信における通信速度は想定よりも遅くなる場合がある。
【００１１】
上述した、パケット交換ネットワークにおけるトラフィックシェーピングの方法に関する技術では、スリープモードとアクティブモードの切り替えを行うタイマ値を調整している。また、上述したシェーパー制御方法に関する技術では、送信するパケットの種類によってシェーピング処理を行うかどうかを決定している。しかし、これらの技術では、パケットを送信するまでの処理にかかる時間を想定したシェーピング処理は行っておらず、パケット送信の実際の通信速度が、想定した通信速度より遅くなる場合がある。
【００１２】
そこで、一開示は、パケット送信の通信速度が遅くなることを防止するパケット中継装置を提供することにある。
【課題を解決するための手段】
【００１３】
第１の通信装置と第２の通信装置との間で送受信されるパケットを中継するパケット中継装置において、前記第１の通信装置から受信した第１及び第２のパケットを記憶するメモリと、前記第１及び第２のパケットを前記第２の通信装置に送信するパケット送信部と、前記メモリに記憶した前記第１のパケットを前記パケット送信部に転送する第１の転送処理と、前記メモリに記憶した前記第２のパケットを前記パケット送信部に転送する第２の転送処理を行うプロセッサを備え、前記プロセッサは、前記第１の転送処理を開始してから前記第１の転送処理が終了するまでの時間を示す第１の転送処理時間を測定し、前記第１の転送処理時間に応じて、前記第１の転送処理の終了後、前記第２の転送処理の開始までの待ち時間を決定する。
【発明の効果】
【００１４】
一開示によれば、パケット送信の通信速度が遅くなることを防止するパケット中継装置を提供することができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、通信システムの構成例を表す図である。
【図２】図２は、通信システムの構成例を表す図である。
【図３】図３は、通信装置のハードウェア構成例を表す図である。
【図４】図４は、通信装置のＣＰＵの機能ブロックの構成例を表す図である。
【図５】図５は、通信装置の全体の処理フローの例を表す図である。
【図６】図６は、性能測定のシーケンスの例を表す図である。
【図７】図７は、性能測定の処理フローの例を表す図である。
【図８】図８は、Ｌ−ｔテーブルの初期状態を表す図である。
【図９】図９は、Ｌ−ｔテーブルの性能測定後の状態を表す図である。
【図１０】図１０は、実フレーム転送のシーケンスの例を表す図である。
【図１１】図１１は、実フレーム転送の処理フローの例を表す図である。
【図１２】図１２は、通信システムの構成例を表す図である。
【図１３】図１３は、実フレーム転送のシーケンスの例を表す図である。
【図１４】図１４は、実フレーム転送のシーケンスの例を表す図である。
【発明を実施するための形態】
【００１６】
以下、本発明を実施するための形態について説明する。
【００１７】
［第１の実施の形態］
最初に第１の実施の形態について説明する。図１は、第１の実施の形態における通信システム１０の構成例を表す図である。
【００１８】
通信システム１０は、パケット中継装置１００、第１の通信装置２００、及び第２の通信装置３００を備える。
【００１９】
パケット中継装置１００は、例えば、第１の通信装置２００から第１及び第２のパケットを受信し、第２の通信装置３００に第１及び第２のパケットを送信する、中継装置である。また、パケット中継装置１００は、例えば、第１の通信装置から受信したパケットを、すぐに第２の通信装置には送信せず、メモリ１２０に記憶し、一定の時間が経過してから第２の通信装置に送信する。このように、パケットの送信における通信速度を調整することで、シェーピング機能を実行する。パケット中継装置１００は、パケット送信部１１０、メモリ１２０、プロセッサ１３０を備える。
【００２０】
パケット送信部１１０は、例えば、プロセッサ１３０の命令によって、第２の通信装置に、メモリ１２０に記憶している第１及び第２のパケットを送信する。
【００２１】
メモリ１２０は、例えば、第１の通信装置２００から受信した第１及び第２のパケットを記憶する。
【００２２】
プロセッサ１３０は、例えば、第１の通信装置２００から第１及び第２のパケットを受信すると、メモリ１２０に記憶する。また、プロセッサ１３０は、例えば、第１及び第２のパケットを送信するとき、メモリ１２０に記憶している第１及び第２のパケットを、パケット送信部１１０に転送する処理を行う。メモリ１２０に記憶している第１のパケットをパケット送信部１１０に転送する処理を第１の転送処理、メモリ１２０に記憶している第２のパケットをパケット送信部１１０に転送する処理を第２の転送処理と呼ぶ。
【００２３】
プロセッサ１３０は、例えば、第１の転送処理が終了してから、第２の転送処理を開始するまでの待ち時間を、タイマを発行し管理する。発行するタイマのタイマ値は、例えば、第１の転送処理を開始してから、第１の転送処理が終了するまでの時間を測定し、この測定結果に応じて決定する。発行するタイマのタイマ値は、例えば、目標の通信速度とするための第１のパケットと第２のパケットの送信間隔から、測定した第１の転送処理に要する時間を減算したものである。
【００２４】
例えば、第１及び第２のパケットのフレーム長が１５００ｂｙｔｅ、目標の通信速度が５０Ｍｂｐｓであったとすると、第１のパケットと第２のパケットの送信間隔は２４０μｓｅｃであればよい。また、第１の転送処理に要する時間が１００μｓｅｃであったとする。この場合、第１の転送処理に要する時間と、発行するタイマのタイマ値の合計がパケットの送信間隔である２４０μｓｅｃとなるようなタイマ値を算出すると、タイマ値は１４０μｓｅｃとなる。
【００２５】
このように、第１及び第２のパケットの送信間隔を調整するために発行するタイマのタイマ値の算出において、メモリ１２０に記憶しているパケットを、パケット送信部１１０に転送する時間を考慮することで、パケットの送信間隔が計算上の数値より長くなってしまうことを防止する。よって、パケットの通信速度が、目標の数値から遅くなることが防止できる。また、メモリ１２０に記憶しているパケットを、パケット送信部１１０に転送する時間を実測していることで、メモリ１２０やパケット送信部１１０のハードウェアの種類によらず、パケットの通信速度が、目標の数値から遅くなることが防止できる。
【００２６】
［第２の実施の形態］
次に第２の実施の形態について説明する。
【００２７】
＜通信システムの構成例＞
最初に通信システム１０の構成例について説明する。図２は、第２の実施の形態における通信システム１０の構成例を表わす図である。
【００２８】
通信システム１０は、通信装置１００、サーバ２００−１〜３、及びネットワーク３００を備える。
【００２９】
通信装置１００は、例えば、サーバ２００−１〜３からパケットを受信し、ネットワーク３００へ送信するパケット中継装置である。通信装置１００は、例えば、シェーピング機能を備える。通信装置１００におけるシェーピング機能は、例えば、サーバ２００−１〜３から受信したパケットを内部のメモリに一時保存し、目的の通信速度となるように、パケットの送信間隔を制御し、パケットをネットワーク３００へ送信する機能である。
【００３０】
サーバ２００−１〜３は、例えば、特定のサービスを提供しており、ネットワーク３００からサービスに対する要求のパケットを受信し、要求に対する応答のパケットをネットワーク３００に送信する。サーバ２００−１〜３は、例えば、ウェブサーバやファイルサーバである。また、サーバ２００−１〜３は、例えば、スマートフォンやコンピュータなどの通信装置でもよい。
【００３１】
ネットワーク３００は、例えば、通信装置１００を経由し、サーバ２００−１〜３からパケットを受信する。ネットワーク３００は、例えば、受信したパケットを、ネットワーク３００に接続しているユーザに送信する。ネットワーク３００は、例えば、携帯事業者が提供する無線通信ネットワークや、ローカルエリアネットワークである。また、ネットワーク３００は、例えば、スマートフォンやコンピュータなどの通信装置でもよい。
【００３２】
通信システム１０において、例えば、サーバ２００−１〜３がパケット送信する通信速度が８００Ｍｂｐｓであるとし、ネットワーク３００がパケット受信できる通信速度が５０Ｍｂｐｓであったとする。このような場合、例えば、通信装置１００が８００Ｍｂｐｓで受信したパケットを、受信した通信速度のままネットワーク３００に送信してしまうと、ネットワーク３００では、一部のパケットを受信できずに取りこぼしたり、破棄してしまったりすることがある。そこで、通信装置１００は、例えば、シェーピング機能を用いて、８００Ｍｂｐｓで受信したパケットを、５０Ｍｂｐｓまで通信速度を落としてネットワーク３００に送信する。このように、通信装置１００は、シェーピング機能を実行している。
【００３３】
＜通信装置のハードウェア構成例＞
次に通信装置１００のハードウェア構成例について説明する。図３は、第２の実施の形態における通信装置１００のハードウェア構成例をあらわす図である。
【００３４】
通信装置１００は、ＮＩＣ（Network Interface Card）１１０−１〜４、メモリ１２０、ＣＰＵ（Central Processing Unit）１３０、及びバス１４０を備える。
【００３５】
ＮＩＣ１１０−１〜４は、例えば、パケットの送受信を行う装置である。ＮＩＣ１１０−１〜３は、例えば、サーバ２００−１〜３と接続されており、ＮＩＣ１１０−４は、ネットワーク３００と接続されている。ＮＩＣ１１０−１〜４は、例えば、パケットを受信すると、バス１４０を介して、メモリ１２０にパケットを保存し、ＣＰＵ１３０にパケットを受信したことを通知する。また、ＮＩＣ１１０−１〜４は、例えば、ＣＰＵ１３０からの命令によってパケットを送信する。ＮＩＣ１１０−１〜４は、例えば、パケットを送信するとき、メモリ１２０から送信するパケットを内部のメモリに一時的にコピーし、コピーが完了したらパケットを接続先に送信する。
【００３６】
メモリ１２０は、例えば、ＲＡＭ（Random Access Memory）で構成される。メモリ１２０は、通信装置１００が送受信するパケットや、ＣＰＵ１３０が使用する数値などを記憶する。
【００３７】
ＣＰＵ１３０は、例えば、メモリ１２０に展開されたプログラムを実行するプロセッサである。ＣＰＵ１３０は、例えば、ＭＰＵ（Micro Processing Unit）やＦＰＧＡ（Field Programmable Gate Array）などのコントローラであってもよい。
【００３８】
ＣＰＵ１３０の機能ブロックについて説明する。ＣＰＵ１３０に機能ブロックを追記したものを図４に示す。ＣＰＵ１３０は、パケット処理機能部１３１、送信タイミング決定機能部１３２、ダミーフレーム転送時間測定機能部１３３、及びタイマ１３４を備える。
【００３９】
パケット処理機能部１３１は、例えば、パケットの送受信を管理する。パケット処理機能部１３１は、例えば、ＮＩＣ１１０−１〜４にパケットを送信するように命令したり、ＮＩＣ１１０−１〜４からパケットを受信した旨の通知を受けたりする。また、パケット処理機能部１３１は、例えば、送信タイミング決定機能部１３２から、タイマがタイムアウトした旨の通知を受けると、ＮＩＣ１１０−１〜４に、パケットを送信するように命令する。なお、タイマがタイムアウトした通知を受け取っても、例えば、メモリ１２０に保存しているパケットがない場合は、パケットを送信しない。また、パケット処理機能部１３１は、例えば、送信するパケットのフレーム長を測定し、送信側の通信速度に応じたタイマ値を算出する。算出したタイマ値は、送信タイミング決定機能部に出力する。
【００４０】
送信タイミング決定機能部１３２は、例えば、タイマ１３４の管理を行う。送信タイミング決定機能部１３２は、例えば、パケット処理機能部１３１から受信したタイマ値に応じて、タイマ１３４を起動する。送信タイミング決定機能部１３２は、例えば、タイマ１３４がタイムアウトしたことを検出すると、パケット処理機能部１３１に、タイマ１３４がタイムアウトしたことを通知する。
【００４１】
ダミーフレーム転送時間測定機能部１３３は、例えば、転送処理時間の測定、及びＬ−ｔテーブルの更新を行う。Ｌ−ｔテーブルの詳細については、後述する。ダミーフレーム転送時間測定機能部１３３は、例えば、通信装置１００が電源ＯＮされたことを検出すると、転送処理時間の測定を開始する。また、ダミーフレーム転送時間測定機能部１３３は、例えば、定期的に転送処理時間を測定してもよい。
【００４２】
＜全体フロー＞
次に、通信装置１００の処理について説明する。図５は、通信装置１００の全体動作のフローの例を表した図である。
【００４３】
通信装置１００は、例えば、電源ＯＮで起動すると（Ｐ１００）、状態１に遷移する。状態１では、性能測定を行う（Ｐ２００）。性能測定の詳細については後述する。
【００４４】
通信装置１００は、性能測定が終了すると、状態２に遷移する。状態２では、実フレーム転送を行う（Ｐ３００）。実フレーム転送の詳細については後述する。
【００４５】
通信装置１００は、状態２において転送処理時間再測定の契機を検出すると（Ｐ４００）、状態１に遷移し、性能測定を行う。転送処理時間再測定の契機とは、例えば、再測定を行う間隔のタイマのタイムアウトや、ユーザによる再測定の実施要求などがある。また、転送処理時間再測定の契機は、例えば、無くてもよい。
【００４６】
以下において、性能測定及び実フレーム転送の処理について説明する。
【００４７】
＜性能測定＞
状態１において実施する性能測定について説明する。図６は、性能測定のシーケンスである。図７は、性能測定の処理フローである。
【００４８】
通信装置１００は、例えば、電源がＯＮされると、通信装置１００の初期設定が完了するまで待機し（Ｓ１０）、性能測定を開始する（Ｐ２０１）。
【００４９】
性能測定においては、後述するＬ−ｔテーブル（ｔ１）を使用する。ここで、図８を用いてＬ−ｔテーブル（ｔ１）について説明する。Ｌ−ｔテーブル（ｔ１）に記憶される情報としては、例えば、「測定番号」、「フレーム長」、及び「転送処理時間」がある。「測定番号」は、例えば、性能測定における測定回数を示す数値である。「フレーム長」は、例えば、転送処理時間を測定するダミーフレームのサイズであり、単位はbyteである。図８においてはＬ１からＬｎまでが記載されているが、例えば、Ｌ１が１００であり、以降１００刻みで増加し、Ｌ１５が１５００である。「転送処理時間」は、例えば、データ転送処理を開始してから、データ転送処理が終了するまでの時間である。データ転送処理とは、例えば、ＣＰＵ１３０が、メモリ１２０に記憶されているパケットを、ＮＩＣ１１０−１〜４に転送する処理である。また、「転送処理時間」は、例えば、送信するパケットのフレーム長の測定処理にかかる時間や、ｓｌｅｅｐタイマを起動してから実際にｓｌｅｅｐタイマが動作し始めるまでの時間を含んでもよい。送信するパケットのフレーム長の測定処理にかかる時間とは、例えば、ＣＰＵ１３０が、メモリ１２０に記憶されているパケットのフレーム長を測定し始めてから、フレーム長を取得するまでの時間である。「転送処理時間」の単位は、例えば、マイクロ秒（μsec）である。また、「転送処理時間」は、例えば、起動時には初期値ｔ０が記憶されている。図８においては、全てｔ０が記憶されているが、フレーム長に応じて初期値が異なってもよい。
【００５０】
性能測定では、ダミーフレーム転送時間測定機能部１３３が、メモリ１２０上に測定用のダミーフレームを作成する（Ｓ１１、Ｐ２０２）。１回目の測定におけるダミーフレームのサイズは、「Ｌ１」である。
【００５１】
ダミーフレーム転送時間測定機能部１３３は、転送処理時間を測定する（Ｐ２０３）。転送処理時間の測定は、例えば、以下の手順で実施する。
【００５２】
まず、ダミーフレーム転送時間測定機能部１３３は、現在時刻を取得する。次に、ダミーフレームのフレーム長を測定する（Ｓ１３）。ダミーフレーム転送時間測定機能部１３３は、ダミーフレームを作成しているため、ダミーフレームのフレーム長を知っている。しかし、実際にパケットを送信するときは、メモリ１２０上のパケットのフレーム長を測定する処理を行うため、実際のパケット送信の処理と合わせて、ここでもフレーム長を測定する。測定方法は、例えば、ダミーフレームのヘッダに含まれるフレーム長に関する情報から読み出してもよいし、ダミーフレームの最前部のアドレスと最後部のアドレスの差分から算出してもよい。次に、ダミーフレーム転送時間測定機能部１３３は、データ転送処理を行う（Ｓ１４）。なお、ダミーフレームの送信命令を受けてＮＩＣ１１０−４は、例えば、ダミーフレームを実際には送信せずに、破棄してもよい。次に、ダミーフレーム転送時間測定機能部１３３は、データ転送処理が終了すると（Ｓ１５）、タイマ１３４を起動する（Ｓ１６）。タイマ値は、例えば、固定値でもよいし、Ｌ−ｔテーブル（ｔ１）の転送処理時間の初期値ｔ０から計算してもよい。次に、ダミーフレーム転送時間測定機能部１３３は、タイマ１３４がタイムアウトすると（Ｓ１７）、現在時刻を取得する。ダミーフレーム転送時間測定機能部１３３は、転送処理時間の測定開始時に取得した時刻と、測定終了時に取得した時刻の差分から、さらにタイマ値を減算することで、転送処理時間を算出する。なお、第２の実施の形態においては、転送処理時間は、例えば、ダミーフレームのフレーム長の測定処理にかかる時間や、ｓｌｅｅｐタイマを起動してから実際にｓｌｅｅｐタイマが動作し始めるまでの時間を含む。
【００５３】
ダミーフレーム転送時間測定機能部１３３は、測定した転送処理時間を、Ｌ−ｔテーブル（ｔ１）に記憶する（Ｐ２０４）。測定した転送処理時間を記憶したものが、図９に示すＬ−ｔテーブル（ｔ２）である。図９では、「転送処理時間」に、初期値ｔ０ではなく、実際に測定した転送処理時間であるｔ１からｔｎが記載されている。
【００５４】
ダミーフレーム転送時間測定機能部１３３は、測定回数がｎであるかどうかを確認する（Ｐ２０５）。ダミーフレーム転送時間測定機能部１３３は、測定回数がｎに到達していなければ（Ｐ２０５のＮＯ）、測定回数をインクリメントし（Ｐ２０６）、ダミーフレームを作成する（Ｓ１８、Ｐ２０２）。ダミーフレーム転送時間測定機能部１３３は、転送処理時間を測定し（Ｓ１９〜Ｓ２３、Ｐ２０３）、測定結果をＬ−ｔテーブル（ｔ２）に記憶する（Ｐ２０４）。以降、測定回数がｎになるまで、Ｐ２０２〜２０６までの処理を繰りかえす。
【００５５】
ダミーフレーム転送時間測定機能部１３３、測定回数がｎであった場合（Ｐ２０５のＹＥＳ）、フレーム長から転送処理時間を算出するために必要なパラメータを計算する（Ｐ２０７）。パラメータの計算は、例えば、以下のように行う。
【００５６】
例えば、フレーム長と転送処理時間の関係が以下の式（１）で表現できるとする。
【００５７】
ｔ＝ａＬ２  ＋  ｂＬ  ＋  ｃ  ・・・（１）
ｔは、例えば、転送処理時間である。Ｌは、例えば、送信パケットのフレーム長である。ａ、ｂ、及びｃは、例えば、フレーム長から転送処理時間を算出するために必要なパラメータである。
【００５８】
例えば、フレーム長がＬ１、Ｌ２、及びＬ３の場合の、実測した転送処理時間が、それぞれｔ１、ｔ２、及びｔ３であったとする。これを式（１）に代入すると、以下の式（２）〜（４）となる。
【００５９】
ｔ１＝ａＬ１２  ＋  ｂＬ１  ＋  ｃ  ・・・（２）
ｔ２＝ａＬ２２  ＋  ｂＬ２  ＋  ｃ  ・・・（３）
ｔ３＝ａＬ３２  ＋  ｂＬ３  ＋  ｃ  ・・・（４）
上記式（２）〜（４）の方程式を解くことで、ａ、ｂ、及びｃを求めることができる。
【００６０】
ダミーフレーム転送時間測定機能部１３３は、Ｓ２０７の処理が完了すると、性能測定を終了し、状態２へ遷移する（Ｓ２０８）。なお、例えば、後述するｓｌｅｅｐタイマのタイマ値の算出において、フレーム長から転送処理時間を算出するために必要なパラメータを使用しない場合、パラメータの算出は行わなくてもよい。
【００６１】
また、上述した説明においては、ダミーフレームを用いて転送処理時間を測定しているが、例えば、ダミーフレームではなく、実際に送信するパケットを用いて転送処理時間を測定してもよい。実際に送信するパケットを用いて転送処理時間を測定する場合、例えば、送信するパケットのサイズに応じて、Ｌ−ｔテーブル（ｔ２）に測定結果を記憶し、同じパケットサイズのパケットを送信するときは、測定を行わないなどの制御を行ってもよい。
【００６２】
＜実フレーム転送＞
次に、状態２において実施する実フレーム転送の処理について説明する。図１０は、実フレーム転送のシーケンスである。図１１は、実フレーム転送の処理フローである。
【００６３】
通信装置１００は、パケットの送受信を行っていないとき、次のパケットを受信するまで待機している（Ｓ５７）。
【００６４】
通信装置１００のＮＩＣ１１０−１〜３は、例えば、フレーム１を受信すると（Ｓ５１）、メモリ１２０に受信したフレーム１をコピーし（Ｓ５４）、パケット処理機能部１３１に、パケットを受信したことを通知する。フレーム２及びフレーム３を受信した場合についても同様の処理を行う（Ｓ５２、Ｓ５３、Ｓ５５、Ｓ５６）。
【００６５】
通信装置１００のパケット処理機能部１３１は、例えばＮＩＣ１１０−１〜３から、フレーム１を受信したことを通知されると、実フレーム転送を開始する（Ｐ３０１）。
【００６６】
パケット処理機能部１３１は、フレーム１のフレーム長を測定する（Ｓ５８、Ｐ３０２）。フレーム長の測定は、例えば、フレームのヘッダに含まれるフレーム長に関する情報から読み出してもよいし、フレームの最前部のアドレスと最後部のアドレスの差分から算出してもよい。
【００６７】
パケット処理機能部１３１は、フレーム１のデータ転送処理を行う（Ｓ５９、Ｐ３０３）。
【００６８】
通信装置１００は、例えば、シェーピング処理を行うため、受信したパケットをすぐには送信せずに、メモリ１２０にパケットを記憶し、一定の時間が経過した後、メモリ１２０に記憶したパケットを送信している。こうすることで、通信装置１００は、パケット送信の時間間隔を調整し、目的とする通信速度でパケット送信できるようにする。パケット処理機能部１３１は、例えば、パケット送信の時間間隔を調整するため、ｓｌｅｅｐタイマを起動している。ｓｌｅｅｐタイマは、例えば、パケットのデータ転送処理が完了してから、次に送信するパケットのデータ転送処理を開始するまでの時間を示すタイマである。パケット処理機能部１３１は、例えば、ｓｌｅｅｐタイマ起動中は、パケットを受信してもすぐには送信せず、メモリ１２０に記憶する。パケット処理機能部１３１は、例えば、ｓｌｅｅｐタイマがタイムアウトすると、メモリ１２０に記憶しておいたパケットの送信を行うため、パケットの転送処理を開始する。
【００６９】
パケット処理機能部１３１は、フレーム１のデータ転送処理が完了すると、ｓｌｅｅｐタイマのタイマ値を決定する。
【００７０】
ｓｌｅｅｐタイマのタイマ値の決定方法は、例えば、以下の式（５）から算出する。
【００７１】
Ｓ＝Ｌ／Ｒ  −  ｔ  ・・・(５)
Ｓは、例えば、ｓｌｅｅｐタイマのタイマ値である。Ｌは、例えば、送信するパケットのフレーム長である。Ｒは、例えば、ネットワーク３００に送信するパケットの通信速度である。ｔは、例えば、フレーム長がＬのときの転送処理時間である。
【００７２】
例えば、送信するパケットのフレーム長が１５００ｂｙｔｅ、目標とする通信速度が５０Ｍｂｐｓ、及び転送速度が１００μｓｅｃであったとする。この場合、数値を代入すると以下の式（６）のようになる。
【００７３】
Ｓ＝１５００×８（bit）／５０  −  １００  ＝１４０μｓｅｃ  ・・・（６）
式（６）から、パケット処理機能部１３１は、ｓｌｅｅｐタイマのタイマ値は１４０μｓｅｃと算出する。
【００７４】
なお、ｓｌｅｅｐタイマのタイマ値の計算において使用される転送処理時間は、例えば、状態１において算出した、フレーム長から転送処理時間を算出するために必要なパラメータを用いて計算してもよい。また、ｓｌｅｅｐタイマのタイマ値の計算において使用される転送処理時間は、例えば、図９に示すＬ−ｔテーブル（ｔ２）から、送信するパケットのフレーム長を超えない範囲で最大の「フレーム長」に対応する転送処理時間を使用してもよい。
【００７５】
パケット処理機能部１３１は、算出したタイマ値を送信タイミング決定機能部１３２に出力する。送信タイミング決定機能部１３２は、受け取ったタイマ値を用いてタイマ１３４を起動する（Ｓ６０、Ｐ３０５）。
【００７６】
送信タイミング決定機能部１３２は、タイマ１３４のタイムアウトを検出すると（Ｓ６１、Ｐ３０６）、タイムアウトしたことをパケット処理機能部１３１に通知する。パケット処理機能部１３１は、タイムアウトの通知を受け取ると、メモリ１２０に未送信のパケットが残っているかどうかを確認する（Ｐ３０７）。パケット処理機能部１３１は、メモリ１２０に未送信のパケットが残っていない場合（Ｐ３０７のＮＯ）、処理を終了する（Ｐ３０８）。
【００７７】
パケット処理機能部１３１は、メモリ１２０に未送信のパケットが残っている場合（Ｐ３０７のＹＥＳ）、再びパケットのメモリ１２０に残っている未送信のパケットのフレーム長の測定行う（Ｐ３０２、Ｓ６２）。図１０のシーケンスでは、フレーム１に対する処理を行っている間に、フレーム２、３を受信しており、メモリ１２０には、フレーム２、３が未送信のパケットとして残っている。パケット処理機能部１３１、及び送信タイミング決定機能部１３２は、フレーム１と同様に、フレーム２、３に対する処理を行う（Ｓ６２〜Ｓ６９、Ｓ３０２〜Ｓ３０７）。パケット処理機能部１３１は、メモリ１２０に未送信のパケットがなくなるまで処理を繰り返す。
【００７８】
第２の実施の形態においては、通信装置１００は、メモリ１２０に記憶したパケットを、ＮＩＣ１１０−４に転送する時間を考慮にいれてｓｌｅｅｐタイマのタイマ値を決定している。
【００７９】
一方で、転送処理時間を考慮にいれずにｓｌｅｅｐタイマのタイマ値を決定する場合について、図１４のシーケンスを用いて説明する。
【００８０】
図１４のシーケンスにおいては、図１０のシーケンスと同様にＮＩＣ−１１０−１〜３がフレーム１、２、３を受信し、メモリ１２０に記憶する（Ｓ１０１〜Ｓ１０６）。パケット処理機能部１３１は、パケットを受信すると、図１０のシーケンスと同様にフレーム１のフレーム長を測定し（Ｓ１０８）、データ転送処理を行う（Ｓ１０９）。次に、パケット処理機能部１３１は、ｓｌｅｅｐタイマのタイマ値を算出する。ここで、パケット処理機能部１３１は、ｓｌｅｅｐタイマのタイマ値を算出するときに、転送処理時間を考慮に入れない。パケット処理機能部１３１は、例えば、転送処理時間を０μｓｅｃとしてｓｌｅｅｐタイマのタイマ値を算出する。例えば、式（５）の転送処理時間ｔを０とし、それ以外の数値は図１０の説明にて用いた数値と同様の数値である、送信するパケットのフレーム長が１５００ｂｙｔｅ、目標とする通信速度が５０Ｍｂｐｓとすると、式（７）のようになる。
【００８１】
Ｓ＝１５００×８（bit）／５０  ＝２４０μｓｅｃ  ・・・（７）
式（７）から、パケット処理機能部１３１は、ｓｌｅｅｐタイマのタイマ値は２４０μｓｅｃと算出する。以下の処理は、図１０のシーケンスと同様の処理となる（Ｓ１１０〜Ｓ１１９）。
【００８２】
図１４において、実際にＮＩＣ１１０−４からフレーム１〜３が送信される間隔は、ｓｌｅｅｐタイマのタイマ値である２４０μｓｅｃに、実際の処理においては発生する転送処理時間１００μｓｅｃを加算した３４０μｓｅｃとなる。通信装置１００は、１５００ｂｙｔｅのフレームを３４０μｓｅｃ間隔で送信しているので、実際の通信速度は、３５．３Ｍｂｐｓとなり、目標とする通信速度である５０Ｍｂｐｓより遅い速度となる。
【００８３】
図１４で示すように、転送処理時間を考慮しない場合、目標とする通信速度より遅い通信速度となってしまう。しかし、第２の実施の形態における通信装置１００のように、転送処理時間を考慮してｓｌｅｅｐタイマのタイマ値を算出することで、転送処理時間分だけパケットの送信間隔が長くなることがなく、パケット送信の通信速度が目標とする通信速度より遅くなることを防止できる。
【００８４】
また、転送処理時間は、通信装置１００を構成するハードウェアの種別によって、差異があることがある。しかし、状態１で転送処理時間を実測しているため、通信装置１００を構成するハードウェアの種別に影響されずに、通信速度が遅くなることを防止できる。
【００８５】
［第３の実施の形態］
次に第３の実施の形態について説明する。
【００８６】
＜通信システムの構成例＞
最初に通信システム１０の構成例について説明する。図１２は、第３の実施の形態における通信システム１０の構成例を表わす図である。
【００８７】
通信システム１０は、通信装置１００−１〜４、サーバ２００−１〜３、及びネットワーク３００を備える。
【００８８】
通信装置１００−１〜３は、例えば、サーバ２００−１〜３からパケットを受信し、通信装置１００−４に送信する。
【００８９】
通信装置１００−４は、例えば、通信装置１００−１〜３からパケットを受信し、ネットワーク３００に送信する。
【００９０】
通信システム１０において、例えば、サーバ２００−１〜３がパケット送信する通信速度の上限が２００Ｍｂｐｓであるとし、ネットワーク３００がパケットを受信できる通信速度が５０Ｍｂｐｓであったとする。例えば、サーバ２００−１〜３が２００Ｍｂｐｓでパケットを送信した場合、通信装置１００−１〜３は、１００Ｍｂｐｓの通信速度にシェーピングを行い、通信装置１００−４にパケットを送信する。通信装置１００−４は、１００Ｍｂｐｓの通信速度で受信したパケットを、５０Ｍｂｐｓの通信速度にシェーピングを行い、ネットワーク３００にパケットを送信する。
【００９１】
＜シーケンス＞
第３の実施の形態におけるシーケンスについて説明する。図１３は、第３の実施の形態におけるシーケンスの例を表している。
【００９２】
通信装置１００−１〜３は、サーバ２００−１〜３から、フレーム１〜３を受信する（Ｓ８０〜Ｓ８２）。このとき、例えば、通信速度が２００Ｍｂｐｓである場合、フレーム１〜３のサイズは１５００ｂｙｔｅであるとすると、通信装置１００−１〜３が受信する間隔は６０μｓｅｃとなる。通信装置１００−１〜３は、例えば、フレーム１〜３を受信すると、シェーピング処理を行い、通信速度１００Ｍｂｐｓでフレーム１〜３を通信装置１００−４に送信する（Ｓ８３〜８５）。通信装置１００−１〜３は、例えば、通信速度を１００Ｍｂｐｓにするため、フレーム１〜３の送信間隔を１２０μｓｅｃとなるようにｓｌｅｅｐタイマのタイマ値を調整する。
【００９３】
次に、通信装置１００−４は、フレーム１〜３を受信すると、シェーピング処理を行い、通信速度５０Ｍｂｐｓで、フレーム１〜３をネットワーク３００に送信する（Ｓ８６〜Ｓ８８）。通信装置１００−４は、例えば、通信速度を５０Ｍｂｐｓにするため、フレーム１〜３の送信間隔を２４０μｓｅｃとなるようにｓｌｅｅｐタイマのタイマ値を調整する。
【００９４】
第３の実施の形態では、サーバ２００−１〜３とネットワーク３００の間に、通信装置１００−１〜４を階層的配置することで、段階的に通信速度を下げることができる。段階的に通信速度を下げることで、例えば、通信装置１００において一時的にパケットを保存するメモリ１２０がオーバーフローする可能性が低くなり、通信システム１０におけるパケット破棄を少なくすることができる。
【００９５】
また、通信装置１００は、ハードウェアの種別に依存せずにシェーピング処理を行うことができるため、例えば、通信装置１００−１〜４は、全て異なるハードウェアの種別で構成されていてもよい。
【００９６】
以上、まとめると付記のようになる。
【００９７】
（付記１）
第１の通信装置と第２の通信装置との間で送受信されるパケットを中継するパケット中継装置において、
前記第１の通信装置から受信した第１及び第２のパケットを記憶するメモリと、
前記第１及び第２のパケットを前記第２の通信装置に送信するパケット送信部と、
前記メモリに記憶した前記第１のパケットを前記パケット送信部に転送する第１の転送処理と、前記メモリに記憶した前記第２のパケットを前記パケット送信部に転送する第２の転送処理を行うプロセッサを備え、
前記プロセッサは、前記第１の転送処理を開始してから前記第１の転送処理が終了するまでの時間を示す第１の転送処理時間を測定し、前記第１の転送処理時間に応じて、前記第１の転送処理の終了後、前記第２の転送処理の開始までの待ち時間を決定する
ことを特徴とするパケット中継装置。
【００９８】
（付記２）
前記プロセッサは、前記待ち時間をＳ、前記メモリに記憶されている前記第１のパケットのサイズをＬ、前記第２の通信装置に前記第１のパケットを送信する通信速度をＲ、前記第１の転送処理時間をｔとしたとき、
Ｓ＝Ｌ／Ｒ  −  ｔ
に基づいて、前記待ち時間を算出することを特徴する付記１記載のパケット中継装置。
【００９９】
（付記３）
前記第１の転送処理時間は、前記メモリに記憶した前記第１のパケットのサイズの測定を開始してから前記測定が終了するまでの時間を含むことを特徴とする付記１記載のパケット中継装置。
【０１００】
（付記４）
前記プロセッサは、前記待ち時間に応じたタイマを起動し、
前記第１の転送処理時間は、前記タイマを起動してから、前記タイマが動作し始めるまでの時間を含むことを特徴とする付記１記載のパケット中継装置。
【０１０１】
（付記５）
前記プロセッサは、前記パケット中継装置が起動したときに前記第１の転送処理時間の測定を行うことを特徴とする付記１記載のパケット中継装置。
【０１０２】
（付記６）
前記プロセッサは、それぞれサイズが異なる第３及び第４のパケットを作成し、前記第３及び第４のパケットを前記メモリに記憶し、前記第３のパケットを前記パケット送信部に転送する第３の転送処理を開始してから前記第３の転送処理が終了するまでの時間を示す第３の転送処理時間と、前記第４のパケットを前記パケット送信部に転送する第４の転送処理を開始してから前記第４の転送処理が終了するまでの時間を示す第４の転送処理時間とを測定し、前記第３及び第４の転送処理時間から、前記第１の転送処理時間を算出する
ことを特徴とする付記１記載のパケット中継装置。
【０１０３】
（付記７）
メモリと、パケット送信部と、プロセッサを備えるパケット中継装置におけるパケット中継方法であって、
前記プロセッサによって、第１の通信装置から受信した第１及び第２のパケットを前記メモリに記憶し、前記メモリに記憶した前記第１のパケットを、前記パケット送信部に転送する第１の転送処理を開始してから、前記第１の転送処理が終了するまでの時間を示す第１の転送処理時間を測定し、前記第１の転送処理時間に応じて、前記第１の転送処理の終了後、前記メモリに記憶した前記第２のパケットを前記パケット送信部に転送する第２の転送処理の開始までの待ち時間を決定する
ことを特徴とするパケット中継方法。
【０１０４】
（付記８）
メモリと、パケット送信部を備えるパケット中継装置におけるコンピュータに実行させるパケット中継プログラムであって、
第１の通信装置から受信した第１及び第２のパケットを前記メモリに記憶し、前記メモリに記憶した前記第１のパケットを、前記パケット送信部に転送する第１の転送処理を開始してから、前記第１の転送処理が終了するまでの時間を示す第１の転送処理時間を測定し、前記第１の転送処理時間に応じて、前記第１の転送処理の終了後、前記メモリに記憶した前記第２のパケットを前記パケット送信部に転送する第２の転送処理の開始までの待ち時間を決定する処理を、
前記コンピュータに実行させることを特徴とするパケット中継プログラム。
【０１０５】
（付記９）
第１及び第２の通信装置と、
前記第１の通信装置と前記第２の通信装置との間で送受信されるパケットを中継するパケット中継装置とを備える通信システムにおいて、
前記第１の通信装置は、前記パケット中継装置に第１及び第２のパケットを送信し、
前記第２の通信装置は、前記パケット中継装置から前記第１及び第２のパケットを受信し、
前記パケット中継装置は、
前記第１の通信装置から受信した前記第１及び第２のパケットを記憶するメモリと、
前記第１及び第２のパケットを前記第２の通信装置に送信するパケット送信部と、
前記メモリに記憶した前記第１のパケットを前記パケット送信部に転送する第１の転送処理と、前記メモリに記憶した前記第２のパケットを前記パケット送信部に転送する第２の転送処理を行うプロセッサを備え、
前記プロセッサは、前記第１の転送処理を開始してから前記第１の転送処理が終了するまでの時間を示す第１の転送処理時間を測定し、前記第１の転送処理時間に応じて、前記第１の転送処理の終了後、前記第２の転送処理の開始までの待ち時間を決定する
ことを特徴とする通信システム。
【符号の説明】
【０１０６】
１０…通信システム                  １００…パケット中継装置（通信装置）
１１０…パケット送信部（ＮＩＣ）    １２０…メモリ
１３０…プロセッサ（ＣＰＵ）        １３１…パケット処理機能部
１３２…送信タイミング決定機能部    １３３…ダミーフレーム転送時間測定機能部
１３４…タイマ                      １４０…バス
２００…第１の通信装置（サーバ）    ３００…第２の通信装置（ネットワーク）
【図１】
2016219909.tif 000003
【図２】
2016219909.tif 000004
【図３】
2016219909.tif 000005
【図４】
2016219909.tif 000006
【図５】
2016219909.tif 000007
【図６】
2016219909.tif 000008
【図７】
2016219909.tif 000009
【図８】
2016219909.tif 000010
【図９】
2016219909.tif 000011
【図１０】
2016219909.tif 000012
【図１１】
2016219909.tif 000013
【図１２】
2016219909.tif 000014
【図１３】
2016219909.tif 000015
【図１４】
2016219909.tif 000016