(57)【特許請求の範囲】
【請求項１】
複数のフレームを受信する受信手段と、
前記受信手段により受信された受信フレームに含まれるシーケンス番号に基づいて、前記受信フレームの第１の層におけるロス率を算出する算出手段と、
前記受信フレームのシーケンス番号に基づいて、前記第１の層よりも上位層である第２の層におけるフレーム再送の発生頻度である再送率を算出する再送率算出手段と、
前記ロス率および前記再送率がそれぞれ閾値以上である場合に前記受信フレームをリオーダリングすると判断する判断手段と、
前記判断手段により前記受信フレームをリオーダリングすると判断された場合に、前記受信フレームをリオーダリングするリオーダリング手段と、
を備えることを特徴とする通信装置。
【請求項２】
データ種別を指定する指定手段と、
前記受信手段により受信された前記受信フレームが、前記指定手段により指定された前記データ種別であるか否かを識別する識別手段をさらに備え、
前記判断手段は、前記ロス率および前記再送率がそれぞれ閾値以上であり、且つ前記識別手段により前記受信フレームが前記データ種別であると識別された場合に、前記受信フレームをリオーダリングすると判断することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記データ種別は、TCPプロトコルのデータであることを特徴とする請求項２に記載の通信装置。
【請求項４】
前記判断手段により前記受信フレームをリオーダリングすると判断された場合、前記受信フレームをリオーダリングしてから受信フレームをネットワーク上位層に通知し、前記判断手段により前記受信フレームをリオーダリングしないと判断された場合、前記受信フレームをリオーダリングしないで受信フレームを前記ネットワーク上位層に通知する通知手段をさらに備えることを特徴とする請求項１乃至３の何れか１項に記載の通信装置。
【請求項５】
受信手段と、算出手段と、再送率算出手段と、判断手段と、リオーダリング手段とを備える通信装置の制御方法であって、
前記受信手段が、複数のフレームを受信する受信工程と、
前記算出手段が、前記受信工程により受信された受信フレームに含まれるシーケンス番号に基づいて、前記受信フレームの第１の層におけるロス率を算出する算出工程と、
前記再送率算出手段が、前記受信フレームのシーケンス番号に基づいて、前記第１の層よりも上位層である第２の層におけるフレーム再送の発生頻度である再送率を算出する再送率算出工程と、
前記判断手段が、前記ロス率および前記再送率がそれぞれ閾値以上である場合に前記受信フレームをリオーダリングすると判断する判断工程と、
前記リオーダリング手段が、前記判断工程により前記受信フレームをリオーダリングすると判断された場合に、前記受信フレームをリオーダリングするリオーダリング工程と、
を備えることを特徴とする通信装置の制御方法。
【請求項６】
コンピュータに請求項５に記載の通信装置の制御方法の各工程を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、受信フレームのリオーダ処理を行う通信装置、通信装置の制御方法、およびプログラムに関する。
【背景技術】
【０００２】
IEEE802.11n規格では高速化を実現するために、複数のフレームをアグリゲート（連結）して送信するAggregationがサポートされている。MPDU（MAC protocol data unit）単位でフレームをアグリゲートするA-MPDU(aggregation MPDU)では、確認応答に従来のAckではなく、Block Ackが利用される。Block Ackはアグリゲートされた各MPDUサブフレームに対してそれぞれ確認応答をする。また、同時に一部のMPDUサブフレーム受信に失敗した場合には、受信に失敗したMPDUサブフレームをBlock Ackで通知することで再送要求を行う。そのため、A-MPDUで送信された場合、MPDUサブフレームの到着する順序が異なることが頻繁に起こり得る。このとき、TCP等で通信を行っていた場合、途中で抜けたフレームが後から到達しているにも関わらず、TCP層で再送をしてしまい、スループットの低下を招く可能性がある。
【０００３】
TCPのあるバージョンにおけるレート制御アルゴリズムでは、単一のパケットロスでは全体としてのスループットに影響をあたえないものの、連続して続くパケットロスにはネットワークが輻輳をしているとして過敏に反応しスループットを大きく劣化させる。
【０００４】
無線区間の場合、必ずしも輻輳のためにパケットロスが発生するとは限らず、ネットワーク上位層でデータの送信を止めるよりもネットワーク下位層でできるだけ再送やリオーダを実施したほうがよい場合が存在する。
【０００５】
このようなフレームが順序通りに到達しなかった場合に、途中で抜けたフレームを待ってから、フレームの順序を並び直す技術としてリオーダリングがある。データリンク層でリオーダリングを行えばTCP層にフレームが順序通りに通知されるため、スループットの低下を防ぐことができる。そのため、無線通信ではリオーダリングが広く行われている。
【０００６】
しかし、リオーダリング処理を行った場合、順序通りに揃うまで途中のフレームを常に保持する必要があるため、その分必要なバッファが大きくなる。また通信遅延も大きくなるといった問題がある。
【０００７】
またTCPのデータ通信においては、順序どおりにデータが来なかった場合においても、一定期間あるいは一定フレーム数は、再送処理は行われずに当該データを待つ。そのため、下位層においてフレームの中抜けが少ない場合は、下位層でフレームのリオーダリングを行わなくてもスループットはあまり低下しない。
【０００８】
特許文献１では音情報を受信する際に、リアルタイムで再生する場合にはリオーダリングせず受信を行い、受信後に再生する場合にはリオーダリングを行うことが開示されている。
【０００９】
特許文献２では、リオーダリングに必要なバッファの効率化を図っている。QoS情報に基づいてリオーダリングバッファのランク付けを行い、メモリ解放が必要になったときには、そのランクに応じてリオーダリングバッファのメモリを解放することが開示されている。
【００１０】
また、特許文献３、特許文献４では中継装置においてリオーダリングに必要となる制御を行うことが開示されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開2003-101662号公報
【特許文献２】特開2006-33019号公報
【特許文献３】特開2007-81678号公報
【特許文献４】特開2007-300502号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
これらの先行技術におけるリオーダリングは、下位層でフレームの中抜けが発生する頻度によらずに行われていた。そのため、フレームの中抜けが少ない環境においてはリオーダリングを行わなくてもスループットはあまり低下しないにも関わらず、必要なバッファサイズが大きくなってしまったり、通信遅延が必要以上に大きくなったりするといった課題がある。
【００１３】
上記の課題に鑑み、本発明は、フレームの中抜けの発生頻度が低い場合に、リオーダリングに必要なバッファサイズを小さくすることを目的とする。
【課題を解決するための手段】
【００１４】
上記の目的を達成する本発明に係る通信装置は、
複数のフレームを受信する受信手段と、
前記受信手段により受信された受信フレームに含まれるシーケンス番号に基づいて、前記受信フレームの第１の層におけるロス率を算出する算出手段と、
前記受信フレームのシーケンス番号に基づいて、前記第１の層よりも上位層である第２の層におけるフレーム再送の発生頻度である再送率を算出する再送率算出手段と、
前記ロス率および前記再送率がそれぞれ閾値以上である場合に前記受信フレームをリオーダリングすると判断する判断手段と、
前記判断手段により前記受信フレームをリオーダリングすると判断された場合に、前記受信フレームをリオーダリングするリオーダリング手段と、
を備えることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、フレームの中抜けの発生頻度が低い場合に、リオーダリングに必要なバッファサイズを小さくすることができる。また、不要なリオーダリングを抑制できるため、通信遅延を小さくすることができる。
【図面の簡単な説明】
【００１６】
【図１】第1実施形態の無線LAN端末の構成図。
【図２】第1実施形態の受信フレームの構成図。
【図３】第1実施形態のリオーダバッファの構成図。
【図４】第1実施形態の受信フレームの処理のフローチャート。
【図５】第1実施形態のリオーダ判断部のフローチャート。
【図６】第2実施形態の無線LAN端末の構成図。
【図７】第2実施形態の受信フレームの処理のフローチャート。
【図８】第2実施形態のリオーダ判断部のフローチャート。
【図９】第3実施形態の無線LAN端末の構成図。
【図１０】第3実施形態の受信フレームの処理のフローチャート。
【図１１】第3実施形態のTCP再送率測定部のフローチャート。
【図１２】第3実施形態のリオーダ判断部のフローチャート。
【発明を実施するための形態】
【００１７】
（第1実施形態）
以下、図1乃至図5を参照して、本発明の第1実施形態について述べる。図1は、第1実施形態を適用できる無線LAN端末（通信装置）の構成を示している。本実施形態では、図1の無線LAN端末101に本発明を適用する。無線LAN端末101は、IEEE802.11n規格に則った無線LAN通信が可能な端末である。無線LAN端末101は、TCP/IP処理部102と、無線LAN制御部103と、TCP/IP通知部104と、無線LANエラー率測定部105と、リオーダ判断部106と、リオーダ制御部107とを備える。
【００１８】
TCP/IP処理部102は、TCP、UDP、IPといったプロトコルを処理する制御プログラムから構成される。無線LAN制御部103は、無線LAN通信を行うための無線LANチップやアンテナ、そしてそれらの制御プログラムから構成される。図示されない他の端末から、無線LAN端末101にフレームが送信された場合に、無線LAN制御部103でフレームが受信され、最初に受信処理が実施される。TCP/IP通知部104は、無線LAN制御部103で受信されたフレームがTCP/IP処理部102で処理されるべきIPデータであった場合に、TCP/IP処理部102に該フレームを通知するための制御プログラムである。
【００１９】
無線LANエラー率測定部105は、無線LAN上で発生したエラー率を算出するためのプログラムである。無線LANエラー率測定部105は、フレームに抜けが発生した場合にエラーとしてカウントして、最後に受信した100個のフレームから受信フレームのエラー率（ロス率）を測定するものである。
【００２０】
リオーダ判断部106は、フレームに抜けが発生した場合にリオーダリングを実施するか否かを決定するプログラムである。リオーダ制御部107は、受信されたフレームで中抜けが発生した場合に、フレームの順序を整える処理を行うプログラムであり、リオーダリングを実施する際に必要となるリオーダバッファを含んだものである。
【００２１】
図2（a）は、無線LAN端末101で受信されるフレームの構成例を示す。本実施形態で、単にフレームと述べたときは図2（a）のように示されるフレームのことを指すものとし、A-MPDUフレームと区別して表す。一方、A-MPDUフレームは、図2（a）で示されるフレームが複数個連結されたフレームとして表される。無線LAN端末101で、A-MPDUフレームが受信された場合には、無線LAN制御部103がA-MPDUフレームを複数のフレームに分割する。また、図2(b)は、MPDUヘッダの詳細を示す。図2（c）は、シーケンス制御の詳細を示す。各フレームは、MPDUヘッダ（図2（b））内のシーケンス制御（図2（c））のシーケンス番号が連続になるように送信される。そのため、A-MPDUフレームを受信した際にフレームに途中で抜けが発生した場合には、受信されるフレームのシーケンス番号が連続にならずに抜けが生じることになる。また、Block Ack等により途中で抜けたフレームが再送されて無線LAN端末101で受信された場合にも、シーケンス番号は連続にならず、これまで受信したフレームのシーケンス番号よりも小さいシーケンス番号のフレームが受信されることになる。本実施形態、および以降の実施形態では説明を簡便にするために、フラグメントは行われないものとして説明する。
【００２２】
図3（a）は、リオーダバッファの構成例を示す。図3（a）に示されるリオーダバッファのデータは、リオーダ制御部107によってリオーダリングを実施するために保存される。領域301は、最後にTCP/IP処理部102に通知されたシーケンス番号を格納するための領域であり、フレームに抜けが発生したことや、フレームの並びが揃ったことを検出するために使用される。領域302、領域303、および領域304はいずれもフレームのシーケンス番号と、フレームへのポインタとを格納する。これは抜けたフレームが生じた際に、先行して受信したフレームのシーケンス番号とフレームへのポインタを格納するのに使用される。図3（a）では3個分のフレームの領域が図示されているが、領域の数は問わない。各領域は、静的に確保された領域であってもよいが、動的に領域を確保するようにした方がバッファの利用効率化につながる。
【００２３】
図3（b）は、具体的にデータが格納されたときのリオーダバッファの例を示す。図3（b）は、シーケンス番号1000からシーケンス番号1005までのフレームが端末から送信され、シーケンス番号1001およびシーケンス番号1004のフレームが抜けて受信されたときの例である。シーケンス番号1001が抜けて受信されたため、最後にTCP/IP処理部102に通知されたシーケンス番号は1000であり、続いて受信されたシーケンス番号1002、シーケンス番号1003、シーケンス番号1005のフレームのそれぞれのシーケンス番号とフレームへのポインタとが対にして格納される。
【００２４】
図3（b）の状態から、無線LAN制御部103がシーケンス番号1001のフレームを受信すると、シーケンス番号1001からシーケンス番号1003までのフレームが揃う。そこでシーケンス番号1000、シーケンス番号1001、シーケンス番号1002、およびシーケンス番号1003のフレームは、リオーダ制御部107によりフレームの順序を整えられ、TCP/IP通知部104が、TCP/IP処理部102にフレームを通知して処理を依頼する。そして最後にTCP/IP処理部102に通知されたシーケンス番号は、シーケンス番号1003となり、リオーダバッファからシーケンス番号1002およびシーケンス番号1003は削除される。
【００２５】
一方で、図3（b）の状態から、無線LAN制御部103がシーケンス番号1004のフレームを受信した場合は、まだシーケンス番号1001のフレームが抜けたままである。そのため、リオーダ制御部107は、シーケンス番号1004のフレームをリオーダバッファに追加する。TCP/IP通知部104は、シーケンス番号1001のフレームが受信されるまでTCP/IP処理部102への通知を行わない。
【００２６】
図4のフローチャートを参照して、本実施形態における無線LAN端末101のフレーム受信時の処理の手順を説明する。図4のS401、S402、S403、S405、およびS406の各処理は、無線LANエラー率測定部105により実行される。S404およびS411の各処理は、TCP/IP通知部104により実行される。S407の処理は、リオーダ判断部106により実行される。S408、S409、およびS410の各処理は、リオーダ制御部107により実行される。
【００２７】
図示されない端末から無線LAN端末101にフレームが送信されると、まず、無線LAN制御部103が該フレームを受信する。無線LAN制御部103はフレームを受信すると、無線LANエラー率測定部105へ受信したフレームを渡す。また、無線LAN制御部103は、A-MPDUフレームを受信した場合には、無線LAN制御部103はA-MPDUフレームを複数のフレームへ分割した上で、各フレームを一つずつ無線LANエラー率測定部105へ渡して処理を依頼する。
【００２８】
S401において、無線LANエラー率測定部105は、フレームを渡されると、MPDUヘッダのシーケンス制御からシーケンス番号を取得して、この取得されたシーケンス番号と最後にTCP/IP処理部102に通知されたシーケンス番号とを比較する。このとき、取得されたシーケンス番号が、最後にTCP/IP処理部102に通知されたシーケンス番号よりも1大きい場合には順番通りと判断し、S402へ進む。取得されたシーケンス番号が、最後にTCP/IP処理部102に通知されたシーケンス番号よりも2以上大きいと判断された場合には、フレームに抜けが発生したとして、S405へ進む。取得されたシーケンス番号が、最後にTCP/IP処理部102に通知されたシーケンス番号よりも小さい場合には、再送フレームが到達したとして、S408へ進む。
【００２９】
S402において、無線LANエラー測定部105は、受信フレームが順序どおりに到達した場合には、受信フレームを、正常に受信されたパケットであるとしてカウントする。
【００３０】
S405において、無線LANエラー測定部105は、フレームに抜けが発生した場合にはエラーとしてカウントする。
【００３１】
一方で、無線LANエラー測定部105は、再送フレームと判断された場合にはカウントを行わない。
【００３２】
S403およびS406において、無線LANエラー率測定部105は、最後に正常またはエラーとしてカウントされた、最新の100個の受信フレームからそれぞれの場合の無線LANエラー率を算出する。
【００３３】
S402で順序通りだと判断されたフレームは、S403での無線LANエラー率の算出後、S404でTCP/IP通知部104により、TCP/IP処理部102に通知されて、ネットワーク上位層において受信したフレームの処理を依頼する。このとき、何らかのMAC処理を行った後に、TCP/IP処理部102に受信フレームを渡してもよい。例えば、受信フレームがA-MSDU(MAC service data unit)フレームであれば、A-MSDUフレームを複数のMSDUに分割して、TCP/IP処理部102に渡してもよい。
【００３４】
次にS405でエラーとしてカウントされた受信フレームについて述べる。S406で無線LANエラー率測定部105により無線LANエラー率が算出された後にS407が実施される。S407の処理は、リオーダ判断部106により実施され、詳細は図5で示される。図5のフローチャートは、リオーダ判断部106の処理の詳細を示す。
【００３５】
リオーダ判断部106は、無線LANエラー率測定部105によって測定された無線LANエラー率によりリオーダリングするか否かを決定する。無線LANエラー率は、S403またはS406で最後に算出された無線LANエラー率を用いる。
【００３６】
S501において、リオーダ判断部106は、無線LANエラー率が5%以上（閾値以上）であるか否かを判定する。無線LANエラー率が5%以上（閾値以上）であると判定された場合には（S501;YES）、S502へ進む。一方、無線LANエラー率が5%未満（閾値未満）であると判定された場合には（S501;NO）、S503へ進む。S502において、リオーダ判断部106は、リオーダすると決定する。一方、S503において、リオーダ判断部106は、リオーダしないと決定する。なお、閾値として5%を基準としたが、必ずしも5%に限られず、任意の所定値を閾値として設定してもよい。
【００３７】
S502でリオーダすると決定された場合は、図４のフローチャートにおけるS407のYesに該当し、S409へ進む。S409において、リオーダ制御部107は、リオーダリングをすると決定された受信フレームをリオーダバッファに格納する。当該フレームはフレームの順序が揃った後に、TCP/IP処理部102に渡される。そのため、フレームの順序が揃うまではリオーダバッファに格納されたまま保持される。
【００３８】
一方で、S503でリオーダリングしないと判断された場合は、図４のフローチャートにおけるS407のNoに該当し、S404へ進む。
【００３９】
S404において、TCP/IP通知部102は、当該受信フレームをTCP/IP処理部102に通知する。すなわち、フレームに抜けがあるまま、ネットワーク上位層で当該フレームの処理が実施されることになる。
【００４０】
次にS401で再送フレームとして判断された受信フレームの処理を行うS408の処理について述べる。
【００４１】
S408において、受信フレームが再送フレームである場合、リオーダ制御部107は、リオーダバッファに格納された受信フレームのシーケンス番号から、抜けたフレームが揃っているかどうかを判断する。抜けたフレームが揃っていると判断された場合（S408;YES）、S410へ進む。抜けたフレームが揃っていないと判断された場合（S408;NO）、S409へ進む。
【００４２】
S409において、リオーダ制御部107は、当該再送フレームをリオーダバッファに格納する。そして、抜けたフレームが揃うまで当該再送フレームはTCP/IP処理部102には通知されない。
【００４３】
S410において、S408で抜けたフレームが揃ったと判断された場合には、リオーダ制御部106は、リオーダリングを実施し、シーケンス番号に従ってリオーダバッファに格納された受信フレームを並び替える。
【００４４】
S411において、TCP/IP通知部104は、シーケンス番号の順序通りにリオーダリングされた受信フレーム群を、TCP/IP処理部102に通知する。S404、S409、およびS411の各処理の後、図４のフローチャートの処理が終了する。
【００４５】
本実施形態によれば、無線LANレベルでのエラー率に応じて、リオーダ処理を実施するか否かを制御することできる。これにより、フレームの抜けが少ない場合には通信遅延を小さくすることができる。同時に、リオーダバッファの領域を必要に応じて動的に確保すれば、リオーダリングに必要なバッファサイズを小さくできる。一方で、MAC層（無線LANのレベルで）フレームの抜けが多発してTCPのスループットが大きく劣化する可能性があるような場合には、MAC層においてリオーダ処理を実施してTCPのスループット低下を防ぐことができる。
【００４６】
（第２実施形態）
図6乃至8を参照して、本発明の第２実施形態について説明する。図6は、本実施形態を適用できる無線LAN端末601の構成を示している。無線LAN端末601は、TCP/IP処理部602と、無線LAN制御部603と、TCP/IP通知部604と、アプリケーション処理部605と、無線LANエラー率測定部606と、リオーダ判断部607と、リオーダ制御部608と、プロトコル識別部609とを備える。図6の無線LAN端末601は、図1で説明した無線LAN端末101の構成に、アプリケーション処理部605およびプロトコル識別部609が加わったものである。そのため、図1と同様な部分の説明は省略する。  アプリケーション処理部605は、TCP/IP処理部602を介してTCPまたはUDP通信をすることで動作するアプリケーションプログラムである。アプリケーションの例としては、画像データを送信するアプリケーションや、無線LAN端末601の状態の問い合わせに応答するステータス管理アプリケーションなどが挙げられる。
【００４７】
プロトコル識別部609は、受信フレームが指定されたプロトコルであるか否かの識別を行うプログラムである。プロトコル識別部609で識別されたプロトコルのフレームのみをリオーダ対象に含める。プロトコルの指定は、アプリケーション処理部605がポート番号を指定することにより行われる。
【００４８】
例えば、スループットが要求されるような画像データ送信アプリケーションであれば、アプリケーション処理部605は、画像データ送信アプリケーションが使用するポート番号を指定する。一方で、無線LAN端末601のステータスを管理するようなアプリケーションのような、スループットがあまり要求されないアプリケーションであれば、アプリケーション処理部605は、ポート番号の指定を行わない。あるいは、UDPによりリアルタイムでストリーミングが受信されるようなアプリケーションであれば、通信遅延を小さくするためにポート番号による指定を行わない。
【００４９】
図7のフローチャートを参照して、無線LAN端末601がフレームを受信したときの処理を説明する。S701乃至S706の各処理は、図4のS401乃至S406の各処理と同様である。また、S709乃至S712の各処理は、それぞれ、S409、S408、S410、およびS411の各処理と同様である。図4と同様の処理については説明を省略する。図4における処理との相違点は、S707およびS708の処理である。S707の処理はプロトコル識別部609によって実施される。S708の処理はリオーダ判断部607によって実施される。
【００５０】
S701でフレームに抜けがあると判断された場合には第１実施形態と同様に、S705、S706へ進み、S706において、無線LANエラー測定部105は、無線LANエラー率を算出する。その後、S707において、プロトコル識別部609は、プロトコル（データ種別）を識別する。プロトコル識別部609は、受信したフレームが予め指定されたポート番号のデータであるかどうかを識別し、その結果をリオーダ判断部607に通知する。S708において、リオーダ判断部607は、受信したフレームをリオーダ対象に含めるか否か判断する。第２実施形態におけるリオーダリング判断部607のS708の処理を図8に示す。
【００５１】
図8のフローチャートを参照して、リオーダ判断部607の詳細な処理について説明する。まずS801において、リオーダ判断部607は、無線LANエラー率測定部606により算出された無線LANエラー率が5%以上であるか否かを判断する。無線LANエラー率が5%以上であると判断された場合（S801;YES）、S802へ進む。一方、無線LANエラー率が5%未満であると判断された場合（S801;NO）、S804へ進む。S802において、リオーダ判断部607は、プロトコル識別部609によって識別された結果から、予めリオーダ対象として指定されたポート番号であるか否かを判断する。予めリオーダ対象として指定されたポート番号であると判断された場合（S802;YES）、S803へ進む。一方、予めリオーダ対象として指定されたポート番号でないと判断された場合（S802;NO）、S804へ進む。S804において、リオーダ判断部607は、リオーダリングしないと判断する。S805において、リオーダ判断部607は、リオーダリングすると判断する。以上で処理を終了する。
【００５２】
以上のように、リオーダ判断部607は、図8のフローチャートの処理に従って、図７のフローチャートのS708の処理においてリオーダリングするか否かを判断する。本実施形態によれば、アプリケーションやプロトコル毎にリオーダリングを実施するか否かを指定することができる。例えば、TCPでスループットを要求するようなアプリケーションであれば、リオーダリングを実施することにより、無線LANレベルでフレームの抜けが発生した場合においてもスループットの低下を低減させることができる。一方で、UDPで音声やビデオのストリーミングを受信する際には、通信遅延を小さくするためにリオーダリングを実施しないといった指定が可能となる。
【００５３】
（第３実施形態）
図9乃至12を参照して、本発明の第３実施形態について説明する。図9は、本実施形態を適用できる無線LAN端末901の構成を示している。無線LAN端末901は、TCP/IP処理部902と、無線LAN制御部903と、TCP/IP通知部904と、アプリケーション処理部905と、無線LANエラー率測定部906と、リオーダ判断部907と、リオーダ制御部908と、プロトコル識別部909と、TCP再送率測定部910とを備える。図9の無線LAN端末901は、図6の無線LAN端末601にTCP再送率測定部910が加わったものである。そのため、図6と同様な部分の説明は省略する。
【００５４】
TCP再送率測定部910は、受信したTCPデータからTCPで発生した、フレーム再送率を算出するためのプログラムである（再送率算出処理）。TCP再送率測定部910は、受信したTCPデータのTCPシーケンス番号で一番大きいものを基準TCPシーケンス番号として保持する。そして基準TCPシーケンス番号よりも大きいTCPデータを受信した場合には、再送でないとカウントする。一方で、基準TCPシーケンス番号よりも小さいTCPデータを受信した場合には、再送としてカウントする。また、TCPデータでない場合にはカウントしない。そして、TCP再送率測定部910は、最後に受信した100個のTCPデータからTCPの再送率を測定する。基準TCPシーケンス番号は、より大きいTCPシーケンス番号のTCPのデータを受信する度に更新する。
【００５５】
図10のフローチャートを参照して、無線LAN端末901がフレームを受信したときの処理の手順について説明する。S1001乃至S1007の各処理は、図7のS701乃至S707の各処理と同様である。また、S1010乃至S1013の各処理は、S709乃至S712の各処理と同様である。図7と同様の処理については説明を省略する。図7における処理との相違点は、S1008およびS1009の処理である。S1008の処理は、TCP再送率測定部910によって実施される。S1009の処理は、リオーダ判断部907によって実施される。
【００５６】
S1001でフレームに抜けがあると判断された場合には第２実施形態と同様に、S1005、S1006、S1007により無線LANエラー率の算出処理、プロトコルの識別処理が実施される。そして、その後にS1008において、TCP再送率測定部910は、TCPの再送発生率を測定する。S1008の詳細な処理を図11のフローチャートを参照して説明する。
【００５７】
S1101において、TCP再送率測定部910は、受信されたフレームがTCPプロトコルのデータであるか否かを判断する。受信フレームがTCPプロトコルのデータであると判断された場合（S1101;YES）、S1102へ進む。一方、受信フレームがTCPプロトコルのデータではないと判断された場合（S1101;NO）、TCP再送率を更新しないで処理を終了する。
【００５８】
S1102において、TCP再送率測定部910は、受信フレームのTCPシーケンス番号と基準TCPシーケンス番号とを比較する。受信フレームのTCPシーケンス番号が基準TCPシーケンス番号よりも大きいと判断された場合には（S1102;YES）、S1103へ進む。一方、受信フレームのTCPシーケンス番号が基準TCPシーケンス番号以下であると判断された場合には（S1102;NO）、S1104へ進む。
【００５９】
S1103において、TCP再送率測定部910は、受信フレームを再送でないとしてカウントする。また、TCP再送率測定部910は基準TCPシーケンス番号を更新する。S1104において、TCP再送率測定部910は、受信フレームを再送であるとしてカウントする。S1103、S1104で再送であるか否かをカウントした後に、S1105へ進む。
【００６０】
S1105において、TCP再送率測定部910は、TCP再送率を再計算する。TCP再送率は、最後に受信された100個のTCPデータから再送の発生頻度を計算することにより算出される。以上でS1008の処理が終了する。
【００６１】
S1008でTCP再送率を測定した後に、S1009において、リオーダ判断部907は、受信したフレームをリオーダ対象に含めるか否か判断する。第３実施形態におけるリオーダ判断部907によるS1009の処理を図12のフローチャートを参照して説明する。
【００６２】
まずS1201において、リオーダ判断部907は、無線LANエラー率測定部906により算出された無線LANエラー率が5%以上であるか否かを判断する。無線LANエラー率が5%以上であると判断された場合（S1202;YES）、S1202へ進む。一方、無線LANエラー率が5%未満であると判断された場合（S1202;NO）、S1205へ進み、リオーダリングしないと判断する。
【００６３】
S1202において、リオーダ判断部907は、プロトコル識別部909によって識別された結果から、予めリオーダ対象として指定されたポート番号であるか否かを判断する。予めリオーダ対象として指定されたポート番号であると判断された場合（S1202;YES）、S1203へ進む。一方、予めリオーダ対象として指定されたポート番号ではないと判断された場合（S1202;NO）、S1205へ進み、リオーダリングしないと判断する。
【００６４】
S1203において、リオーダ判断部907は、TCP再送率測定部910によって算出されたTCP再送率が3%以上（閾値以上）であるか否かを判断する（再送率判断処理）。TCP再送率が3%以上（閾値以上）であると判断された場合（S1203;YES）、S1204へ進む。一方、TCP再送率が3%未満（閾値未満）であると判断された場合（S1203;YES）、S1205へ進む。S1204において、リオーダ判断部907は、リオーダリングをすると判断する。S1205において、リオーダ判断部907は、リオーダリングをしないと判断する。以上で処理を終了する。なお、閾値として3%を基準としたが、必ずしも3%に限られず、任意の所定値を閾値として設定してもよい。
【００６５】
以上のように、リオーダ判断部907は、図12のフローチャートの処理に従って、図11のフローチャートのS1109の処理においてリオーダリングするか否かを判断する。以降の処理は第２実施形態と同様である。
【００６６】
本実施形態によれば、TCPの再送発生率に応じてリオーダリングを実施するか否かを決定することができる。無線LANレベルでパケット抜けが生じた場合でも、TCPレベルで再送が発生していなければスループットの低下は大きくないことがあり得る。このような場合はバッファの利用効率や、通信遅延からリオーダリングしない。
【００６７】
また、無線LANレベルでのパケット抜けが少ない場合であって、TCPレベルで再送が頻発している場合には、無線LANでの通信ではなく、ネットワークの別の箇所でロスが発生している可能性がある。このような場合にも、リオーダリングを実施してもスループットの低下は避けられないことが起こり得る。
【００６８】
本実施形態により、無線LANレベルでパケット抜けが生じていて、かつTCPのスループットが大きく低下しそうである場合には、リオーダリングを実施してスループットの低下を軽減することできる。一方で、そうでない場合にはリオーダリングを実施せずに、不必要にバッファを使用したり、通信遅延を大きくしてしまったりすることを防ぐことができる。
【００６９】
＜各実施形態について＞
本発明は上述した各実施形態に限定されることなく、様々な形態で実施することが可能である。例えばS408、S710、S1011の各処理において、抜けたフレームが揃ってから、リオーダ制御部はリオーダリングを実施してTCP/IP処理部に通知を行っている。ここで、抜けたフレームが一定期間受信されない場合においては、フレームの一部が抜けたままリオーダを実施し、TCP/IP処理部に通知するようにしてもよい。
【００７０】
第３実施形態では、S1203でTCP再送率からリオーダリングするか否かを決定しているが、受信されたフレームがUDPプロトコルのデータの場合はTCP再送率によらずにリオーダリングするか否かを決定してもよい。すなわち、TCPプロトコルでは第３実施形態のように無線LANエラー率、プロトコル種別、TCP再送率に基づき、リオーダリングするか否かを決定する。一方でUDPプロトコルでは第２実施形態のように無線LANエラー率、プロトコル種別に基づいてリオーダリングするか否かを決定するように、プロトコルに応じて適用方法を変えてもよい。
【００７１】
更には、TCPでも特定のアプリケーションまたはポート番号では、TCP再送率に基づいてリオーダリングするか否かを決定し、別のアプリケーションまたはポート番号はTCP再送率を考慮しないようにしてもよい。
【００７２】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005703048.tif 000002
【図２】
0005703048.tif 000003
【図３】
0005703048.tif 000004
【図４】
0005703048.tif 000005
【図５】
0005703048.tif 000006
【図６】
0005703048.tif 000007
【図７】
0005703048.tif 000008
【図８】
0005703048.tif 000009
【図９】
0005703048.tif 000010
【図１０】
0005703048.tif 000011
【図１１】
0005703048.tif 000012
【図１２】
0005703048.tif 000013