特許第6438206号(P6438206)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ キヤノン株式会社の特許一覧

特許6438206通信装置、その制御方法、およびプログラム
<>
  • 特許6438206-通信装置、その制御方法、およびプログラム 図000002
  • 特許6438206-通信装置、その制御方法、およびプログラム 図000003
  • 特許6438206-通信装置、その制御方法、およびプログラム 図000004
  • 特許6438206-通信装置、その制御方法、およびプログラム 図000005
  • 特許6438206-通信装置、その制御方法、およびプログラム 図000006
  • 特許6438206-通信装置、その制御方法、およびプログラム 図000007
  • 特許6438206-通信装置、その制御方法、およびプログラム 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6438206
(24)【登録日】2018年11月22日
(45)【発行日】2018年12月12日
(54)【発明の名称】通信装置、その制御方法、およびプログラム
(51)【国際特許分類】
   H04W 28/14 20090101AFI20181203BHJP
   H04W 80/02 20090101ALI20181203BHJP
   H04L 29/08 20060101ALI20181203BHJP
   H04L 12/861 20130101ALI20181203BHJP
   H04L 12/28 20060101ALI20181203BHJP
【FI】
   H04W28/14
   H04W80/02
   H04L13/00 307Z
   H04L12/861
   H04L12/28 200Z
【請求項の数】7
【全頁数】11
(21)【出願番号】特願2014-62730(P2014-62730)
(22)【出願日】2014年3月25日
(65)【公開番号】特開2015-186154(P2015-186154A)
(43)【公開日】2015年10月22日
【審査請求日】2017年3月15日
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100076428
【弁理士】
【氏名又は名称】大塚 康徳
(74)【代理人】
【識別番号】100112508
【弁理士】
【氏名又は名称】高柳 司郎
(74)【代理人】
【識別番号】100115071
【弁理士】
【氏名又は名称】大塚 康弘
(74)【代理人】
【識別番号】100116894
【弁理士】
【氏名又は名称】木村 秀二
(74)【代理人】
【識別番号】100130409
【弁理士】
【氏名又は名称】下山 治
(74)【代理人】
【識別番号】100134175
【弁理士】
【氏名又は名称】永川 行光
(72)【発明者】
【氏名】佐野 健介
【審査官】 玉木 宏治
(56)【参考文献】
【文献】 特開2003−124993(JP,A)
【文献】 特開2001−177532(JP,A)
【文献】 特開2001−230804(JP,A)
【文献】 特開2000−253056(JP,A)
【文献】 特開2003−218977(JP,A)
【文献】 特表2013−543289(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/00−955
H04L 29/08
H04W 28/14
H04W 80/02
(57)【特許請求の範囲】
【請求項1】
通信装置であって、
他の通信装置への送信データに基づいて、複数のパケットを生成する生成手段と、
前記生成手段により生成された前記複数のパケットのそれぞれについて、後続のパケットが存在するか否かを判定する判定手段と、
前記判定手段より後続のパケットが存在すると判定された場合に、前記生成手段により生成されたパケットを保持する保持手段と、
前記判定手段より後続のパケットが存在しないと判定された場合、および、前記判定手段より後続のパケットが存在すると判定され、かつ、前記保持手段により保持されたパケットの数が所定の数に達した場合に、前記保持手段により保持されたパケットを、前記他の送信装置へ送信する処理を行う送信部に転送する転送手段と、
前記所定の数を更新する更新手段と、
を有し、
前記所定の数は、前記他の通信装置の受信バッファサイズに基づく数であることを特徴とする通信装置。
【請求項2】
前記他の通信装置から、前記送信部が転送したパケットに対する応答を受信する受信手段と、
前記受信手段により受信した前記応答に基づいて、前記所定の数を設定する設定手段と、
を更に有することを特徴とする請求項1に記載の通信装置。
【請求項3】
前記生成手段は、前記送信データを一度に送信可能なサイズに分割し、該分割したデータそれぞれに対してプロトコルヘッダを付加することによってパケットを生成することを特徴とする請求項1または2に記載の通信装置。
【請求項4】
前記判定手段により後続のパケットが存在しないと判定された場合、当該判定を行ったパケットに対して、後続のパケットが存在しないことを示すフラグを付加する付加手段を更に有することを特徴とする請求項1からのいずれか1項に記載の通信装置。
【請求項5】
前記転送手段による転送は、SDIO(Secure Digital Input/Output)プロトコルを利用した転送であることを特徴とする請求項1からのいずれか1項に記載の通信装置。
【請求項6】
通信装置の制御方法であって、
他の通信装置への送信データに基づいて、複数のパケットを生成する生成工程と、
前記生成工程において生成された前記複数のパケットのそれぞれについて、後続のパケットが存在するか否かを判定する判定工程と、
前記判定工程において後続のパケットが存在すると判定された場合に、前記生成工程において生成されたパケットを保持する保持工程と、
前記判定工程において後続のパケットが存在しないと判定された場合、および、前記判定工程において後続のパケットが存在すると判定され、かつ、前記保持工程において保持されたパケットの数が所定の数に達した場合に、前記保持工程において保持されたパケットを、前記他の送信装置へ送信する処理を行う送信部に転送する転送工程と、
前記所定の数を更新する更新工程と、
を有し、
前記所定の数は、前記他の通信装置の受信バッファサイズに基づく数であることを特徴とする通信装置の制御方法。
【請求項7】
請求項1乃至5のいずれか1項に記載の通信装置としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信装置、その制御方法、およびプログラムに関する。
【背景技術】
【0002】
近年、無線LAN通信機能を用いたデータ通信の高速化が求められている。一般的なアプリケーションによってデータが生成されると、そのデータはOSに搭載されているネットワークスタックにより送信データサイズごとに分割される。続いて、それぞれの分割されたデータに各種プロトコルヘッダを付加したパケットが作成される。また、データを無線LANによって送信するためには、このパケットはメモリから無線LANモジュールに転送される必要がある。このときの転送方式は、無線LANモジュールの接続方式に依存している。例えば、転送方式としてSDIO(Secure Digital Input/Output)プロトコルなどが利用される。従来のSDIOプロトコルを利用したSDIO転送では1度の送信命令では1パケットのみ転送可能であった。しかし近年では、1度の送信命令で複数のパケットを転送することが可能となっている(特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許出願公開第2012/0226827号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
無線LANによってデータを送信する場合に、メモリから無線LANデバイスへの転送方式であるSDIO転送を効率的に制御することが望まれる。しかし、そのためには次のような課題がある。すなわち、できるだけ多くのパケットを1度にSDIO転送するために、SDIO転送可能数までSDIO転送を待機してしまうと、パケットが即座に送信されずに余計なレイテンシが発生してしまいスループットが低下する可能性がある。また、場合によっては、ネットワークスタックとSDIO転送処理部の間でデッドロックが発生してしまう可能性がある。具体的には、ネットワークスタックは送信したパケットの応答を待っているため、後続のパケットを処理せず、一方、無線LANドライバはネットワークスタックから後続のパケットが渡されるまで送信しない、という状況が発生する。
【0005】
本発明は上記課題に鑑みてなされたものであり、複数のパケットを効率的に転送することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するための一手段として、本発明の通信装置は以下の構成を備える。すなわち、通信装置であって、他の通信装置への送信データに基づいて、複数のパケットを生成する生成手段と、前記生成手段により生成された前記複数のパケットのそれぞれについて、後続のパケットが存在するか否かを判定する判定手段と、前記判定手段より後続のパケットが存在すると判定された場合に、前記生成手段により生成されたパケットを保持する保持手段と、前記判定手段より後続のパケットが存在しないと判定された場合、および、前記判定手段より後続のパケットが存在すると判定され、かつ、前記保持手段により保持されたパケットの数が所定の数に達した場合に、前記保持手段により保持されたパケットを、前記他の送信装置へ送信する処理を行う送信部に転送する転送手段と、前記所定の数を更新する更新手段と、を有し、前記所定の数は、前記他の通信装置の受信バッファサイズに基づく数であることを特徴とする。

【発明の効果】
【0007】
本発明によれば、複数のパケットを効率的に転送することが可能となる。
【図面の簡単な説明】
【0008】
図1】第1実施形態によるネットワークの構成を表す図。
図2】第1実施形態による通信端末の構成を表すブロック図。
図3】パケット管理構造体の構造を表す図。
図4】第1実施形態による通信端末の送信処理のフローチャート。
図5】第1実施形態による通信端末の送信データフローを示す図。
図6】第2実施形態による通信端末の送信データフローを示す図。
図7】第3実施形態による通信端末の送信データフローを示す図。
【発明を実施するための形態】
【0009】
(第1実施形態)
以下、第1実施形態による通信端末について、図面を参照しながら詳細に説明する。図1は、本実施形態による通信端末(以下、端末)101、通信対向端末(以下、対向端末)102、を含むネットワークシステムの構成を示した図である。端末101と対向端末102はお互いにデータの送受信を行う。
【0010】
図2は、端末101の構成の一例を表す機能ブロック図である。データ生成部201は、対向端末102に送信するデータを生成する。パケットプロトコル処理部202は、TCP/IPプロトコルなどに基づいた通信処理を実施する。パケットプロトコル処理部202は、送信プロトコル処理部203、後続送信パケット判断部204、受信プロトコル処理部205及び受信パケット存在判断部206を含む。送信プロトコル処理部203は、データ生成部201から受け取ったデータに対してプロトコルヘッダを付加するなど、ネットワークを介した送信が可能なパケットを作成する処理を行う。後続送信パケット判断部204は、後続の送信可能なパケットの存在を判定する。受信プロトコル処理部205は、対向端末102から受信した受信確認応答パケットに基づいて、受信されたことを確認し、また、対向端末102の受信バッファの空き状況を確認する。受信パケット存在判断部206は、対向端末102からのパケットが届いているかどうかを判断する。
【0011】
パケット転送部207は、パケットプロトコル処理部202とパケット外部送受信部208の間の転送を制御する。パケット転送部207は、複数のパケットを蓄えて一度に送信することが可能である。本実施形態では、パケット転送部207はSDIO(Secure Digital Input/Output)プロトコルを利用したSDIO転送を行うものとして説明を行うが、必ずしもSDIO転送に限らなくてもよく、複数個のパケットを一度の転送で送る機能を有していれば構わない。
【0012】
パケット外部送受信部208は、端末101とネットワークとの間でパケットの送受信を行う。本実施形態では、パケット外部送受信部208は、無線LANデバイスであるとして説明を行うが、有線LANデバイス、もしくは無線の異なる規格(例えば、Bluetooth(登録商標)やNFC(Near Field Communication)に準拠したデバイスであっても良い。パケット外部送受信部208は、送信パケットバッファ209、パケット送信部210、受信パケットバッファ211及びパケット受信部212を含む。送信パケットバッファ209は、パケット転送部207によって、パケットプロトコル処理部202から渡されたパケットを一時的に格納する。パケット送信部210は、送信パケットバッファ209に格納されているパケットをネットワークに送信する。受信パケットバッファ211は、パケット受信部212から渡された受信パケットを一時的に格納する。パケット受信部212は、ネットワークから到着した受信パケットを受信パケットバッファ211に格納する。
【0013】
図3は、パケットプロトコル処理部202とパケット転送部207において利用されるパケット管理構造体301の構造を表す図である。パケット管理構造体301には、プロトコルヘッダ302、データ303、後続無フラグ304が含まれる。プロトコルヘッダ302は、送信プロトコル処理部203において付加されるヘッダである。データ303は、送信プロトコル処理部203において分割されるデータである。後続無フラグ304は、後続送信パケット判断部204において後続送信パケットがない場合に付加されるフラグである。
【0014】
図4は、アプリケーションによるデータ生成からネットワークにパケットを送信するまでの端末101の動作を表すフローチャートである。まず、アプリケーションにより、データ生成部201は送信データを生成し、送信命令が発行される(S401)。次に、データ生成部201は送信プロトコル処理部203にデータをコピーし、送信プロトコル処理部203は1パケットに収まるサイズにデータを分割する(S402)。なお、本実施形態では、TCP/IPによるデータ送信が仮定されている。すなわち、データ生成部201がソケットを介してデータを送信プロトコル処理部203に渡すときに、送信プロトコル処理部203が1パケットに収まるサイズにデータを分割しながらコピーを行うことが想定されている。なお、S402における送信プロトコル処理部203の実装手法は、コピーされたデータを1パケットに収まるサイズに分割することに限定されない。例えば、送信プロトコル処理部203は、ポインタで、あるバイトからあるバイトまでのデータを指定して一つのパケットを構成しても良く、結果として論理的なパケットに収まるデータが分かるようになっていればよい。
【0015】
次に、送信プロトコル処理部203は、分割されたデータに対してプロトコルヘッダを付加してパケットを作成する(S403)。なお、S403における送信プロトコル処理部203の実装手法は、分割されたデータに対してプロトコルヘッダを付加することに限定されない。例えば、送信プロトコル処理部203は、分割されたデータと一緒にプロトコルヘッダを管理しても良い。各パケットはヘッダを付けられた後、後続送信パケット判断部204に送られる。後続送信パケット判断部204は、後続の送信データの有無を判断する(S404)。後続の送信データが存在しないと判断された場合は(S404のYES)、後続送信パケット判断部204は、パケット管理構造体301に後続無フラグ304を立てる(S405)。その後、後続送信パケット判断部204は、パケットをパケット転送部207に渡し、パケット転送部207は、既に後続送信パケット判断部204から受け取って保持しているパケットを一括してパケット外部送受信部208に転送する(S410)。
【0016】
S404において、後続の送信データが存在すると判断された場合は(S404のNO)、後続送信パケット判断部204は、後続無フラグ304を立てずにパケットをパケット転送部207に渡す。パケット転送部207は、既に後続送信パケット判断部204から受け取って保持しているパケットの数が転送可能な上限数のパケット数に達しているかを確認する(S406)。保持しているパケットの数が転送可能な上限数のパケット数に達していると確認された場合(S406のYES)、パケット転送部207はパケット外部送受信部208にパケットを転送する(S410)。パケット転送部207が保持しているパケットの数が転送可能な上限数のパケット数に達していないと確認された場合(S406のNO)、受信プロトコル処理部205は、パケット転送部207に保持されているパケットを送信することで対向端末102の受信バッファが上限に達するかを判断する(S407)。すなわち、受信プロトコル処理部205は、パケット転送部207に保持されているパケットの数が、対向端末102の受信バッファサイズに基づいて設定した所定の上限数に達するかを判断する。この判断は、TCP/IPプロトコルの場合は、対向端末102のWindowと呼ばれる変数によって行うことが可能である。
【0017】
対向端末102の受信バッファが上限に達しないと判断された場合(S407のYes)、処理は403へ戻る。対向端末102の受信バッファが上限に達すると判断された場合(S407のNO)、受信パケット存在判断部206は、同じ通信フローにおいて前回送信したデータに対する受信確認応答が到着しているかどうかを確認し、このパケットを送信することで受信バッファの上限に達しないかを判断する(S408)。この受信確認応答はTCP/IPプロトコルのAckに相当する。対向端末102のWindowが一杯になっていた場合においても、受信パケット存在判断部206がS408のタイミングでAckの到着(受信)を確認できた場合は、パケット外部送受信部208はパケットを送信することが可能となる。受信確認応答が到着していると判断された場合(S408のYES)、パケット受信部212は受信処理を行い、受信プロトコル処理部205は対向端末102の受信バッファの空き情報を更新し、転送可能なパケットの上限数を設定して、処理はS403へ戻る。受信確認応答が到着していないと判断された場合(S408のNO)、後続送信パケット判断部204は、パケット管理構造体301に後続無フラグ304を立てる(S405)。その後、パケット転送部207は、パケット外部送受信部208にパケットを転送する(S410)。
【0018】
なお、S406の条件に該当しなかった場合には、処理はS407へ進まずにS403に戻っても良い。この場合は、対向端末102のバッファの空き容量が確認されないため、若干効率が落ちる。また、S407の条件に該当した場合には、処理はS408に進まずにS405、S410へ進み転送を行っても良い。この場合も、既に受信しているAckが確認されないため若干効率が落ちる。
【0019】
図5は、図4のフローチャートに従って動作する本実施形態による端末101の送信データフローの一例を示す図である。なお、本実施形態では、1度のアプリケーションからの送信命令によって渡されたデータから生成されるパケット数を3、SDIO転送可能数を4として説明する。まず端末101は、データ生成部201において送信データを生成する(F501)。次に、送信命令が発行されると、送信データは送信プロトコル処理部203にコピーされる(F502)。続いて、送信プロトコル処理部203は、送信データを1パケットで送信可能なサイズで分割し(F503)、パケットごとに、通信に利用するためのプロトコルヘッダを付加する(F504)。このとき、後続送信パケット判断部204は、パケットごとに、後続の送信データの有無を確認し、存在しない場合には後続無フラグ304をパケット管理構造体301に立てる。F504では、1つ目のパケットについては、後続の送信データがまだ存在するため、後続送信パケット判断部204は後続無フラグはセットせずにパケット転送部207へ渡す(F505)。パケット転送部207は、受け取ったパケットに後続無フラグがセットされていないため、パケット外部送受信部208への転送は実施しない。続く2つ目のパケットも同様である。最後の3つ目のパケットについては、後続のデータが存在しないために、後続送信パケット判断部204は後続無フラグ304を立てる(F506)。フラグが立ったパケットを受け取ったパケット転送部207は、今までに受け取って保持している3つのパケットをまとめてパケット外部送受信部208へ転送することにより、SDIO転送を実施する(F507)。
【0020】
このように、第1実施形態では、後続のパケットがなくなったタイミングで複数のパケットをまとめてSDIO転送が実施される。これにより、アプリケーションによる余計な転送命令が減少し転送効率が向上する。
【0021】
(第2実施形態)
第2実施形態では、第1実施形態と比較して、1度のアプリケーションからの送信命令によって渡されたデータから生成されるパケット数と、SDIO転送可能数が異なる。以下、第1実施形態と異なる部分について説明する。図6は、図4のフローチャートに従って動作する本実施形態による端末101の送信データフローの一例を示す図である。本実施形態では、1度のアプリケーションからの送信命令によって渡されたデータから生成されるパケット数を3、SDIO転送可能数を2として説明する。
【0022】
まず端末101は、データ生成部201において送信データを生成する(F601)。次に送信命令が発行されると、送信プロトコル処理部203に送信データがコピーされる(F602)。続いて送信プロトコル処理部203は、送信データを1パケットで送信可能なサイズで分割し(F603)、パケットごとに、通信に利用するためのプロトコルヘッダを付加する(F604)。このとき後続送信パケット判断部204は、後続の送信データの有無を確認し、存在しない場合には後続無フラグ304をパケット管理構造体に立てる。F604では、1つ目のパケットについては、後続の送信データがまだ存在するため、後続送信パケット判断部204は後続無フラグはセットせずにパケット転送部207へ渡す(F605)。パケット転送部207は、受け取ったパケットに後続無フラグ304がセットされていないため、パケット外部送受信部208への転送は実施しない。続く2つ目のパケット(F606)においても同様に、後続無フラグ304はセットされずにパケット転送部207に渡されるが、SDIO転送可能数である2パケットをパケット転送部207が受け取ったために即座にSDIO転送が実施される(F607)。最後の3つ目のパケットの処理では後続データが存在しないため、後続送信パケット判断部204は後続無フラグ304を立てる(F608)。フラグが立ったパケットを受け取ったパケット転送部207は、後続無フラグ304がセットされていることを確認し(F609)、SDIO転送を実施する(F610)。
【0023】
第2実施形態によれば、SDIO転送可能数上限のパケットをパケット転送部207が受け取った時点でSDIO転送が実施される。これにより、余計な転送命令が減少し転送効率が向上する。また、後続のパケットがなくなったタイミングで転送が実施される。これにより、SDIO転送可能数上限までパケットを待ち受けることなく、即座に転送が実施され、余計な待機時間を低減することができる。
【0024】
(第3実施形態)
第3実施形態では、第1実施形態と比較して、1度のアプリケーションからの送信命令によって渡されたデータから生成されるパケット数と、SDIO転送可能数が異なる。以下、第1実施形態と異なる部分について説明する。図7は、図4のフローチャートに従って動作する本実施形態による端末101の送信データフローの一例を示す図である。本実施形態では、1度のアプリケーションからの送信命令によって渡されたデータから生成されるパケット数を3、SDIO転送可能数を3、対向端末102の受信バッファ最大数を3パケットとして説明する。また、端末101は事前に対向端末に対して1パケット送信しており、対向端末102の受信バッファの空き情報は1パケット減少している2パケットの状態である。
【0025】
まず端末101は、データ生成部201において送信データを生成する(F701)。次に送信命令が発行されると送信プロトコル処理部203に送信データがコピーされる(F702)。続いて送信プロトコル処理部203は、送信データを1パケットで送信可能なサイズで分割し(F703)、パケットごとに、通信に利用するためのプロトコルヘッダを付加する(F704)。このとき後続送信パケット判断部204は、後続の送信データの有無を確認し、存在しない場合には後続無フラグ304をパケット管理構造体に立てる。F704は、1つ目のパケットについては、後続の送信データがまだ存在するため、後続送信パケット判断部204は後続無フラグ304はセットせずにパケット転送部207」へ渡す(F705)。パケット転送部207は、受け取ったパケットに後続無フラグ304がセットされていないため、パケット外部送受信部208への転送を実施しない。続く2つ目のパケット(F706)については、このパケットを送信すると対向端末102の受信バッファの空きがなくなるために後続無フラグ304をセットしようとする。しかし事前に送信していたパケットに対する確認応答パケットがパケット転送部207に存在する(707)ため、こちらの処理を先に実施する(F708)。これにより対向端末102の受信バッファの空きがもう1つ空いていることを確認することができるため、706では後続無フラグ304をセットせずにパケット転送部207へパケット管理構造体を渡す(F709)。最後の3つ目のパケット目については、後続のデータが存在しないため、後続送信パケット判断部204は後続無フラグ304を立てる(F710)。フラグが立ったパケットを受け取ったパケット転送部207は、今までに受け取って保持している3つのパケットをまとめて転送する(F711)。
【0026】
第3実施形態によれば、対向端末102からの確認応答パケットを後続無フラグ304を立てるより前に処理することにより、対向端末102の現在の受信バッファの空き情報を更新する。これにより多くのパケットを1度に転送することが可能となり、余計な転送命令が減少し転送効率が向上する。
【0027】
以上の実施形態によれば、ネットワークスタックでデータをパケットに分割して送信する場合において、1度に転送できる無線LANとSDIO転送するパケット数が向上することにより、SDIO転送効率が向上する。またネットワークスタックとSDIO転送を制御する部分におけるデッドロックを解消するとともに、SDIO転送の待機時間を削減することにより通信スループットが向上する。
【0028】
(その他の実施形態)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【符号の説明】
【0029】
101 端末、102 対向端末、201 データ生成部、202 パケットプロトコル処理部、203 送信プロトコル処理部、204 後続送信パケット判断部、205 受信プロトコル処理部、206 受信パケット存在判断部、207 パケット転送部、208 パケット外部送受信部、209 送信パケットバッファ、210 パケット送信部、211 受信パケットバッファ、212 パケット受信部
図1
図2
図3
図4
図5
図6
図7