画像処理装置、その制御方法、及びプログラム
【課題】スリープ状態においてメインCPUの機能の一部を代替するサブCPUにプロトコルスタッフを搭載するとともに、スリープ状態において外部から受信したパケットを解析した後にメインCPUで当該パケットを処理すると判断した場合に、適切な情報をメインCPUに対して転送する画像処理装置、その制御方法、及びプログラムを提供する。
【解決手段】画像処理装置は、第1制御手段と、画像処理装置が省電力制御によるスリープ状態へ移行した際に、第1制御手段の一部の処理を代行する第2制御手段とを備える。第1制御手段は、画像処理装置をスリープ状態へ移行させる。第2制御手段は、外部装置からのパケットをネットワークを介して受信し、受信パケットをコピーして一時記憶領域に保存し、受信パケットの複数のヘッダ部分を順次解析するとともに、解析したヘッダ部分を順次削除し、解析の結果に従って、第1制御手段を起動するとともに保存した受信パケットを第1制御手段へ転送する。
【解決手段】画像処理装置は、第1制御手段と、画像処理装置が省電力制御によるスリープ状態へ移行した際に、第1制御手段の一部の処理を代行する第2制御手段とを備える。第1制御手段は、画像処理装置をスリープ状態へ移行させる。第2制御手段は、外部装置からのパケットをネットワークを介して受信し、受信パケットをコピーして一時記憶領域に保存し、受信パケットの複数のヘッダ部分を順次解析するとともに、解析したヘッダ部分を順次削除し、解析の結果に従って、第1制御手段を起動するとともに保存した受信パケットを第1制御手段へ転送する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、省電力制御を実行する画像処理装置、その制御方法、及びプログラムに関するものである。
【背景技術】
【0002】
近年の画像処理装置には、稼動していない状態が一定時間以上経過した場合は、電力の供給を機器の一部に限定し低電力で動作する「スリープ状態」へ遷移する省電力機能を有しているものがある。また、画像処理装置は、ネットワーク技術の普及に伴い、ネットワークを利用して機器とホスト間で定期的にデータのやりとりを行うことが一般的である。機器が「スリープ状態」である場合にネットワーク経由のデータを処理するためには、機器を「非スリープ状態」に遷移する必要がある。したがって、頻繁にネットワーク上でデータのやり取りが行われる環境では「スリープ状態」時間が短くなってしまう。
【0003】
これを解決する手法として、特許文献1には、機器に複数のCPUを搭載し、非スリープ時にはメインCPUで処理を行うが、スリープ時には、電力消費の小さいサブCPUでメインCPUの処理を代替させる手法が提案されている。さらに、ネットワークプロトコルの多様化、複雑化に伴いサブCPUが代替できる処理を拡充するために、サブCPUにプロトコルスタックを搭載する手法も考えられている。
【0004】
一方、近年、ネットワーク上を流れるデータの改ざん、盗聴を防ぐためのセキュリティ機能の普及に伴い、機器は、通信相手と複雑なネゴシエーションを行い、その結果に基づいて暗号処理、復号化処理を行う方式が用いられている。これに伴い、機器とホスト間で定期的にやりとりされるネットワークデータのやりとりにも、セキュリティ通信が利用される機会が増えている。このようなセキュリティ通信時にも、サブCPUにセキュリティ機能を搭載し、メインCPUとセキュリティ通信に必要な情報を交換することで、メインCPUの処理を代替させる手段も考えられている。これらセキュリティ技術の普及と省電力技術の向上に伴い、機器とネットワーク上のホストとのやりとりがセキュリティ通信で行われていても、機器の低電力状態を保ったまま、データ処理を行うことが望まれている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−259906号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、従来技術には以下に記載する問題がある。上記従来技術のように、サブCPUにプロトコルスタックを搭載する方式では、ネットワークパケットを受信してスリープ状態から復帰した場合、メインCPUがその受信パケットを適切に処理できないという問題が発生する。これは、サブCPUのプロトコルスタックがIPヘッダやEthernetヘッダなどを除去し、パケットのボディ部のみだけをメインCPUへ転送することが主な原因であった。そのためメインCPUでは受信したパケットに必要なヘッダ情報が付加されていないため、適切な処理を行うことができなかった。
【0007】
加えて、セキュリティ通信時においては、サブCPUが正しく受信パケットをメインCPUに転送したとしても、その後のセキュリティ通信で不正なシーケンスとなり正常に通信できない問題がある。これは、セキュリティ通信には通信保証のための情報が存在し、サブCPUで更新した情報をメインCPUに転送していることが主な原因であった。そのためメインCPUでは、受信したパケットとセキュリティ通信に必要な情報に不整合が生じてしまい、その後の通信シーケンスが正常に処理できなくなっていた。
【0008】
本発明は、上述の問題に鑑みて成されたものであり、スリープ状態においてメインCPUの機能の一部を代替するサブCPUにプロトコルスタッフを搭載するとともに、スリープ状態において外部から受信したパケットを解析した後にメインCPUで当該パケットを処理すると判断した場合に、適切な情報をメインCPUに対して転送する画像処理装置、その制御方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明は、第1制御手段と、省電力制御によるスリープ状態へ移行した際に該第1制御手段の一部の処理を代行する第2制御手段とを備える画像処理装置であって、前記第1制御手段は、前記画像処理装置を前記スリープ状態へ移行させるスリープ制御手段を備え、前記第2制御手段は、外部装置からのパケットをネットワークを介して受信する受信手段と、前記受信手段によって受信された受信パケットをコピーして一時記憶領域に保存する保存手段と、前記受信手段によって受信された受信パケットの複数のヘッダ部分を順次解析するとともに、解析したヘッダ部分を順次削除する解析手段と、前記解析手段による解析の結果に従って、前記第1制御手段を起動するとともに前記一時記憶領域に保存された前記受信パケットを該第1制御手段へ転送する処理手段とを備えることを特徴とする。
【発明の効果】
【0010】
本発明は、スリープ状態においてメインCPUの機能の一部を代替するサブCPUにプロトコルスタッフを搭載するとともに、スリープ状態において外部から受信したパケットを解析した後にメインCPUで当該パケットを処理すると判断した場合に、適切な情報をメインCPUに対して転送する画像処理装置、その制御方法、及びプログラムを提供できる。
【図面の簡単な説明】
【0011】
【図1】第1の実施形態におけるネットワーク構成を示す図である。
【図2】第1の実施形態における画像処理装置のH/W構成図を示す図である。
【図3】第1の実施形態における画像処理装置のS/W構成図を示す図である。
【図4】第1の実施形態におけるプロトコルスタックの処理を示す図である。
【図5】第1の実施形態におけるサブCPUの処理を示すフローチャートである。
【図6】第2の実施形態におけるSA情報の属性を示す図である。
【図7】第2の実施形態における画像処理装置の従来技術の課題を示す図である。
【図8】第2の実施形態における画像処理装置の従来技術の課題を示す図である。
【図9】第2の実施形態における画像処理装置の従来技術の課題を示す図である。
【図10】第2の実施形態におけるサブCPUの処理を示すフローチャートである。
【発明を実施するための形態】
【0012】
以下、本発明を実施するための形態について図面を用いて説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでなく、また実施形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
【0013】
<第1の実施形態>
<システム構成>
以下では、図1乃至図5を参照して、第1の実施形態について説明する。本実施形態では、画像処理装置が外部機器とネットワークパケットをやり取りする際に、セキュリティ通信ではなく、平文でネットワークパケットを送受信する場合について説明する。まず、図1を参照して、本実施形態に係る画像処理装置を使用したネットワークシステムの構成について説明する。
【0014】
画像処理装置101とホストコンピュータ102とがネットワーク103を介して接続され、相互に通信可能となっている。画像処理装置101、及びホストコンピュータ102は、共にIPSEC機能が有効になっており、画像処理装置101とホストコンピュータ102との間の通信は、全てIPSECが適用されているものとする。
【0015】
<画像処理装置のハードウェア構成>
次に、図2を参照して、画像処理装置101のハードウェア構成について説明する。画像処理装置101は、図2に示すように、CPU209を有し、装置全体を統括的に制御するユニット220(第1制御手段)と、CPU211を有し、ユニット220が省電力制御によるスリープ状態へ移行した際に、ユニット220の一部の処理を代行するユニット221(第2制御手段)との2つの制御部で構成される。なお、ここでは、画像処理装置101として、複写機を一例に説明する。したがって、ユニット220は複写機のコントローラ部分に相当し、ユニット221は複写機のNIC(Network Interface Card)に相当する。また、画像処理装置101は、省電力機能を有し、「スリープ状態」である場合には、ユニット221のみに電源が供給され、それ以外への電源供給を停止することで、消費電力の低減を実現する。
【0016】
ユニット220は、スキャナI/F201、拡張I/F制御部202、ROM203、RAM204、HDD205、プリンタI/F206、NVRAM207、パネル制御部208、及びCPU209を備える。各コンポーネントは、システムバス210によって相互通信可能に接続される。また、ユニット221は、CPU211、拡張I/F制御部212、ROM213、RAM214、及びネットワークI/F215を備える。各コンポーネントは、システムバス216によって相互通信可能に接続される。
【0017】
ROM203のプログラム用ROMには、CPU209が実行可能な制御プログラム等が記憶される。ROM203のデータ用ROMには、ユニット220上で利用される情報等が記憶される。CPU209は、ROM203のプログラム用ROMに記憶された制御プログラムに基づいてシステムバス210に接続される各種のデバイスとのアクセスを総括的に制御する。また、プリンタI/F206を介して接続されるプリンタ222に出力情報としての画像信号を出力したり、スキャナI/F201を介して接続されるスキャナ218から入力される画像信号を制御する。
【0018】
RAM204は、主としてCPU209の主メモリ,ワークエリア等として機能し、図示しない増設ポートに接続されるオプションRAMによりメモリ容量を拡張することができる。ハードディスクドライブ(HDD)205は、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶したり、プリントジョブを一時的にスプールし、スプールされたジョブを外部から制御するためのジョブ格納領域として使用される。さらに、スキャナ218から読み取った画像データやプリントジョブの画像データをBOXデータとして保持し、ネットワークから参照したり、印刷を行うBOXデータ格納領域としても使用される。207は不揮発性メモリ(NVRAM)であり、操作パネル219を介して設定される各種設定情報をパネル制御部208を経由して記憶している。
【0019】
ROM213のプログラム用ROMには、CPU211が実行可能な制御プログラム等が記憶される。ROM213のデータ用ROMには、ユニット221上で利用される情報等が記憶される。CPU211は、ROM213のプログラム用ROMに記憶された制御プログラムに基づいてシステムバス216に接続される各種のデバイスとのアクセスを総括的に制御する。RAM214は、主としてCPU211の主メモリ,ワークエリア等として機能する。CPU211は、ネットワークI/F215を介して、ネットワーク上のホストコンピュータや他の画像処理装置との通信処理が可能となっている。
【0020】
また、ユニット220とユニット221は、拡張I/F制御部202、212及び拡張I/F217を介して接続される。ユニット220のCPU209は、拡張I/F制御部202を経由して、ユニット221とデータの送受信を行うことができる。同様に、ユニット221のCPU211は、拡張I/F制御部212を経由して、ユニット220とデータの送受信を行うことができる。
【0021】
<画像処理装置のソフトウェア構成>
次に、図3を参照して、画像処理装置101のソフトウェア構成について説明する。画像処理装置のソフトウェア構成は大きく非スリープ状態で動作するメインCPUファーム301とスリープ状態で動作するサブCPUファーム309に分けられる。
【0022】
まず、メインCPUファーム301について説明する。メインCPUファーム301は、プロトコルスタック302、画像処理部307、CPU間通信部308、及びスリープ制御部319を含む。スリープ制御部319は、ユニット220上のCPU209上で動作し、ユニット220へも電力が供給されている「非スリープ状態」から、ユニット221へのみ電力が供給される「スリープ状態」に移行する制御を行う。
【0023】
プロトコルスタック302は、Ethernetヘッダ処理部303と、IPヘッダ処理部304と、TCP/UDPヘッダ処理部305とから構成され、受信パケットのヘッダ部分を各処理部によって順次解析する。なお、各処理部は、解析したヘッダ部分を順次削除する。IPSEC処理部306は、IPヘッダ処理部304のレイヤで動作し、IPSECネゴシエーション処理や、送受信するネットワークパケットのIPSEC処理、IPSEC処理に必要なSA(Secutiry Assosiation)の管理などを行う。
【0024】
CPU間通信部308は、ユニット220上のCPU209上で動作し、拡張I/F制御部202から拡張I/F217を介して、ユニット221上のCPU211で動作するソフトウェアとのデータ送受信を行う。また、メインCPUファーム301は、画像処理部307などのアプリケーションを多く搭載する。
【0025】
次に、サブCPUファーム309について説明する。サブCPUファーム309は、プロトコルスタック310、代理応答処理部316、WOL処理部317、及びCPU間通信部318を含む。CPU間通信部318は、ユニット221上のCPU211上で動作し、拡張I/F制御部202から拡張I/F217を介して、ユニット220上のCPU209で動作するソフトウェアとのデータ送受信を行う。
【0026】
プロトコルスタック310は、Ethernetヘッダ処理部311と、IPヘッダ処理部312と、TCP/UDPヘッダ処理部313とから構成される。IPSEC処理部314は、ユニット221上のCPU211上で動作し、送受信するネットワークパケットのIPSEC処理、SAの管理を行う。また、プロトコルスタック310は、さらに、受信したパケットやSA情報を一時的に保存するための一時記憶領域315を搭載する。
【0027】
代理応答処理部316は、受信したパケットに対してメインCPUを復帰させずに、サブCPUの能力だけで応答可能かを判断して、応答パケットを作成、送信制御を行う。WOL(WakeOnLan)処理部317は、受信したパケットがメインCPUを復帰させるパターンかどうかを判断し、復帰させる場合は、復帰処理を行う。ここで、WOL処理とはLANを介して遠隔の装置を起動する処理を示す。例えば、本実施形態においては、ホストコンピュータ102がネットワーク103を介して画像処理装置101をスリープ状態から起動させる処理を示す。
【0028】
サブCPU309はメインCPUがスリープ状態の場合にのみ起動する。サブCPU309は、受信したネットワークデータを、3種に分類する。ここで、3種とは、「破棄」「メインCPUへ転送」「代理で応答を送信」である。「破棄」は、自装置宛パケットではない場合など無視してよいネットワークデータを受信した場合を示し、これに分類された場合、受信したネットワークデータに対する処理は何も行わず、破棄する。即ち、「破棄」は、ユニット220(メインCPU)の起動が不要である。「本体(メイン)CPUへ転送」は、受信したネットワークデータに対して何らかの処理が必要であるが、電源が供給されているユニット221(サブCPU)だけでは処理を行えないネットワークデータを受信した場合を示す。この場合、サブCPUは、画像処理装置101を「スリープ状態」から「非スリープ状態」へ移行し、受信したネットワークパケットをメインCPU(CPU209)へ転送する。「代理で応答」は、ユニット220(メインCPU)の起動が不要と判断し、受信したネットワークデータに対しての応答を、ユニット221だけで作成し送信する。送受信するパケットがIPSECのパケットであれば、IPSEC処理部314を利用して送受信を制御する。
【0029】
<パケット受信>
次に、図4を参照して、一般的なプロトコルスタックを搭載するパケット受信の挙動について説明する。TCPで通信を行う印刷データのパケットデータ405を画像処理装置が受信した場合、まずはEthernetヘッダ処理部401がEthernetヘッダ部を解析する。実際のパケットパラメータは多くの定義があるが、ここでは、本発明に関連するパラメータのみを対象に記載している。Ethernetヘッダ処理部401は、受信パケットの送信先MACアドレスを参照し、自装置のMACアドレスと一致するか否かを判断し、一致する場合、Ethernetヘッダ部分を除去してIPヘッダ処理部402にパケットを転送する。自装置のMACアドレスに一致しない場合は受信パケットを破棄する。
【0030】
次に、IPヘッダ処理部402は、Ethernetヘッダ部が取り除かれたパケット406を解析する。IPヘッダ処理部402は、宛先IPアドレスが自装置のIPアドレスと一致するか、チェックサム値が正しいかどうか等を判断し、受信すべきと判断したらTCP/UDPヘッダ処理部403にパケットを転送する。受信すべきと判断しない場合は、パケットを破棄するかエラーパケットを送信する。
【0031】
次に、TCP/UDPヘッダ処理部403は、IPヘッダ部が取り除かれたパケット407を解析する。TCP/UDPヘッダ処理部403では、主に宛先ポート番号については機器が開いているポート番号に一致するかどうか、シーケンス番号が正しい値かどうかを判断する。問題ないと判断した場合はヘッダ部分を取り除いて上位のアプリケーション部分である画像処理部404にパケットを転送する。受信すべきと判断しない場合は、パケットを破棄するかエラーパケットを送信する。画像処理部404は、TCPヘッダが取り除かれたパケット408を解析してアプリケーション固有の処理を行う。
【0032】
これらの一連のシーケンスがサブCPUのプロトコルスタック310及びメインCPUのプロトコルスタック302で実施される。サブCPUにプロトコルスタックを搭載する場合、図4で示したように、各ヘッダ部を除去した後にWOLあるいは代理応答の判断を行う。この時、WOLだと判断した場合は、ヘッダ部が除去されたPAYLOAD部しか含まないパケットデータをメインCPUへ転送することになり、メインCPUではヘッダ部がないため正常にパケット処理をできないという問題が発生してしまう。本実施形態では、これらの問題が発生しないようにパケット受信を制御する。
【0033】
<サブCPUにおけるパケット受信>
次に、図5を参照して、本実施形態における、サブCPUファーム309においてスリープ状態中にパケットを受信する際の処理手順について説明する。なお、サブCPUには代理応答パケットパターンやWOLパケットパターンは予めメインCPU側から通知あるいはユーザ設定等で設定されているものとする。また、以下で説明する処理は、CPU211がROM213に格納された制御プログラムをRAM214にロードして実行することにより実現される。
【0034】
メインCPUがスリープ状態に移行し、サブCPU(CPU211)が起動した後、サブCPUはネットワークパケットの受信待ち状態となる。S501において、CPU211は、パケットデータを受信したか否かを判定する。パケットデータを受信していない場合は、S501の判定を定期的に繰り返す。一方、パケットデータを受信した場合はS502に進み、CPU211は、受信したパケットデータを一旦サブCPUファーム内の一時記憶領域315にコピーして保存する。
【0035】
このように、本実施形態では、これ以降の処理における解析処理において使用される受信パケットとは別に、当該受信パケットのコピーを一時記憶領域315へ退避させる。これにより、プロトコルスタックにおいて、受信パケットのヘッダ部分を順次解析しつつ、解析したヘッダ部分を削除する場合であっても、メインCPUへ受信パケットを転送する必要があるときは、一時記憶領域315に退避した元の受信パケットを転送することができる。
【0036】
次に、S503において、CPU211は、受信パケットをEthernetヘッダ処理部311、IPヘッダ処理部312などに転送していき、各解析処理部でヘッダ解析を行い、パケットデータからヘッダ部を除去する。続いて、S504において、CPU211は、ヘッダ解析及びPAYLOAD部分の解析結果に従って、受信したパケットがサブCPUにおいて代理応答可能なパケットパターンであるか否かを判定する。代理応答可能であると判断するとS505に進み、代理応答が不可能であると判断するとS508に進む。
【0037】
S505において、代理応答処理部316は、代理応答パケットを作成する。続いて、S506において、代理応答処理部316は、CPU間通信部318を介して作成された代理応答パケットを送信する。続いて、S507において、CPU211は、受信パケットに対する代理応答が完了した後に、一時記憶領域315に保存した受信パケットを消去して、再びパケット受信待ちに戻る。
【0038】
一方、S504で代理応答パターンではないと判断した場合は、S508において、WOL処理部317は、Wake On LAnで画像処理装置101を起動するべきか否かを判定する。即ち、WOL処理部317は、受信パケットがメインCPUのスリープ状態からの起動を外部装置から指示するパケットであるか否かを判定する。画像処理装置101を起動すべきでないと判断した場合は、S509に進み、受信パケットを破棄して、S507に進み、一時記憶領域315に保存した受信パケットも消去して、再びパケット受信待ちに戻る。
【0039】
一方、S508で画像処理装置101を起動すべき、即ち、メインCPU(CPU209)を起動すべきと判断した場合は、S510に進み、CPU211は、CPU間通信部318を介してメインCPUを起動させる。ここで、WOL処理部317にあるヘッダ部が除去されたパケットをメインCPU側へ転送してしまうと、メインCPUのプロトコルスタックは正常に処理を実行することができない。そこで、本実施形態によれば、S511において、CPU211は、一時記憶領域315に保存されているパケットデータ(受信パケット)をメインCPUに転送する。その後、S512において、CPU211は、一時記憶領域315からパケットデータを消去し、サブCPUの処理を終了する。
【0040】
以上説明したように、本実施形態に係る画像処理装置は、サブCPUファームにプロトコルスタックが搭載されている場合であっても、正しくWOL処理を実施することができる。具体的には、本画像処理装置は、スリープ状態において受信したパケットがメインCPUで処理する必要がある場合に、プロトコルスタックで解析した後のヘッダ部分が消去されたデータではなく、一時記憶領域に退避しておいた受信パケットをメインCPUへ転送する。
【0041】
<第2の実施形態>
次に、図6乃至図10を参照して、第2の実施形態について説明する。本実施形態は、画像処理装置が行うセキュリティ通信としてIPSEC(Internet Protocol Security)を扱った場合について説明する。IPSECは、特定の認証アルゴリズムや暗号アルゴリズムを用いて、ネットワーク上を流れるデータの盗聴や改ざんを防ぐためのプロトコルである。IPSECは、AH(Authentication Header)とESP(Encapsulations Security Payload)の2つのプロトコルで構成され、AHでは認証のみを、ESPでは認証と暗号化を行う。どちらのプロトコルを利用するか、また、その際利用する認証アルゴリズム種別や暗号アルゴリズム種別の決定は、IPSEC通信前のネゴシエーションで行う。さらに、暗号アルゴリズムで利用する鍵についても、IKE(Internet Key Exchange)を利用することによって、IPSEC通信前に、通信機器間で交換する方式が定義されている。パケットフォーマットを含むIPSEC及びIKEの詳細については、RFC(Request For Comment)に定義が行われているため、本実施形態では詳細に記載しない。
【0042】
<Security Association>
機器間でIPSec通信が確立されると、その通信に応じてSA(Security Association)が生成される。ここで、図6を参照して、SAのパラメータ例について説明する。SAは多くのパラメータから構成されるが、ここでは本実施形態に関連のあるパラメータのみを列挙する。
【0043】
SPI(Security Parameter Index)は、SAを識別するための値である。暗号アルゴリズムは、このトラフィックで利用する暗号アルゴリズムの種別を示す。認証アルゴリズムは、このトラフィックで利用する認証アルゴリズムの種別を示す。暗号鍵は、このトラフィックを暗号化する際に利用する鍵情報を示す。認証鍵は、このトラフィックの認証を行う際に利用する鍵情報を示す。
【0044】
有効期間は、SAの有効期間として、時間(秒単位)で設定される。経過時間はSAが作成された時刻(IPSECネゴシエーションが完了した時刻)からの経過時間を示し、SAの有効期間に達していないか、SAの有効性を判断するために用いる。送信データ量は、SA生成から送信したデータ量を示す。シーケンス番号は、リプレイ攻撃から防御するための値で、IPSECヘッダに設定され、パケットを送信するたびに、1ずつ加算される。送信元アドレスは、このSAに対応付けられるIPSECトラフィックの送信元IPアドレスを示す。送信先アドレスは、このSAに対応付けられるIPSECトラフィックの送信先IPアドレスを示す。送信元ポート番号、このSAに対応付けられるIPSECトラフィックの送信元ポート番号を示す。送信先ポート番号は、このSAに対応付けられるIPSECトラフィックの送信先ポート番号を示す。
【0045】
<比較例による制御>
次に、図7乃至図9を参照して、本実施形態における対策を施さない場合の比較例となる実施形態の課題について説明する。図7に示すように、メインCPU702とサブCPU703から構成される機器701と、外部ホスト704の間でIPSEC通信を確立し、メインCPU内におけるIPSEC処理部がSA705を生成したとする。メインCPU702がスリープ状態へ移行し、サブCPU703が起動すると、メインCPU702内のIPSEC処理部からサブCPU703内のIPSEC処理部へSAが転送され、サブCPU703内でSA706を保持する。
【0046】
この状態で、外部ホスト704からIPSECパケット707が送信された場合、サブCPU703内のIPSEC処理部が受信パケットを解析する。この時IPSEC処理部はパケットのシーケンス番号を参照し、期待する値に一致するかどうかを判断する。SA706のシーケンス番号は800なので、期待するシーケンス番号は801である。図7に示すように、受信パケット707のシーケンス番号が801の場合は、IPSEC処理部は受信パケットが正当なパケットだと判断してIPSEC処理を開始する。
【0047】
図8は、サブCPU703のIPSEC処理部がIPSEC処理を実行した後の様子を示す。サブCPU703のIPSEC処理部がデータの復号化を実施したため、保持するSAのシーケンス番号は801となり、データ量は受信したサイズ分だけ更新しSA806となる。この復号化したパケットをサブCPU703内のWOL処理部でWOL処理を実行するかどうかを判断した結果、WOL処理を実行すると判断した場合、サブCPU703はメインCPU702を起動させる。
【0048】
起動後の様子を図9に示す。この時、サブCPU703は一時記憶領域から受信パケット907をメインCPU702に転送し、SAは図8において更新した後のSA806を転送する。メインCPU702は転送されたSA806に対して、メインCPU702のIPSEC処理部で保持するSA情報を更新してSA905とする。その後、パケット907を受信しメインCPU702のIPSEC処理部で復号化処理を実施するが、保持するシーケンス番号801が期待する値は802であるのに対して、パケット907のシーケンス番号は801となる。したがって、IPSEC処理部は、不正なシーケンス番号であるとみなしてIPSEC処理を実施しない。このように比較例の構成においては、IPSECパケットでWOL処理を実行した場合に正しくIPSECパケットを処理できない問題が発生してしまう。
【0049】
<本実施形態による制御>
次に、図10を参照して、本実施形態におけるサブCPUファームの処理手順について説明する。また、以下で説明する処理は、CPU211がROM213に格納された制御プログラムをRAM214にロードして実行することにより実現される。
【0050】
サブCPUファーム309が起動すると、S1001において、CPU211は、メインCPUファーム301からSA情報の転送があるかどうかを判定する。S1002において、CPU211は、SA情報の転送があると判定すると、サブCPUのIPSEC処理部314にSA情報を設定する。続いて、S1003において、サブCPUは、ネットワークパケットの受信待ち状態となる。S1003でネットワークパケットを受信すると、S1004に進み、CPU211は、受信パケットを一時記憶領域315にコピーして保存する。
【0051】
次に、S1005において、CPU211は、受信パケットに対してプロトコルスタック310を利用してヘッダ解析処理を行う。さらに、S1006において、CPU211は、IPレイヤにおいてはIPSEC処理部314を利用して受信パケットがIPSECパケットであるかどうかを判定する。S1007において、CPU211は、受信パケットがIPSECであると判断すると、この時点でIPSEC処理部314に存在している、受信パケットに関するSA情報だけを一時記憶領域315にコピーして保存する。IPSEC処理部314には、複数のセッションに対応付けられている複数のSA情報が存在するが、受信パケットに対応するSAだけを一時記憶領域315に保存する。このように、本実施形態では、受信パケットに加えて、対応するSA情報を一時記憶領域315へ退避する。
【0052】
次に、S1008において、CPU211は、復号鍵を利用して受信パケットの復号化を行い、成功したか否かを判定する。受信パケットの復号化に失敗した場合は、S1009に進み、CPU211は、自装置宛ではない、あるいはエラーシーケンスとみなし、一時記憶領域315のSA情報を消去し、S1010で一時記憶領域315のパケットデータを消去し、処理をS1003に戻す。一方、S1008で復号化に成功した場合は、S1011に進み、CPU211は、IPSEC処理部314に存在するSA情報のシーケンス番号やデータ送信量などを更新し、S1012に進む。また、S1006において、平文パケットを受信した場合もS1012に進む。
【0053】
S1012において、CPU211は、代理応答処理部316で受信パケットが代理応答パケットパターンに合致するかどうかを判定する。代理応答すべきと判断した場合はS1013に進み、CPU211は、代理応答処理部316で応答パケットパターンを作成する。続いて、S1014において、CPU211は、受信パケットがIPSECパケットである否かを判定する。ここでは、IPSECパケットである場合は、応答するパケットもIPSECパケットである必要があるため、送信パケットを暗号化すべきかどうかをIPSEC処理部314で判定している。
【0054】
暗号化すべきと判定すると、S1015に進み、CPU211は、IPSEC処理部314で送信パケットを、暗号化方式に合わせて対応する暗号鍵を用いて暗号化する。続いて、S1016において、CPU211は、一時記憶領域315に保存したSA情報を消去し、S1017に進む。この系の場合は一時記憶領域315に保存したSA情報は使用しない。一方、S1014において平文でパケットを送信すると判断した場合はS1017に進む。
【0055】
S1017において、CPU211は、プロトコルスタック310によって応答パケットを送信する。その後、S1018において、CPU211は、一時記憶領域315に保存してあったパケットデータを消去し、処理をS1003に戻して再びパケットデータ受信待ち状態に戻る。この系の場合は一時記憶領域315に保存したパケットデータは使用しない。
【0056】
S1012で代理応答すべきでないと判断すると、S1019において、CPU211は、WOL処理部317で受信したパケットパターンがWOL処理を実行すべきかどうかを判定する。WOL処理を実行すべきでないと判断すると、S1020に進み、CPU211は、機器に関係のないパケットなのでパケットを破棄する。その後、S1018に進み、CPU211は、一時記憶領域315に保存してあったパケットデータも消去して、処理をS1003に戻して再びパケットデータ受信待ち状態に戻る。
【0057】
一方、S1019でWOL処理を実行すべきと判断すると、S1021において、CPU211は、CPU間通信部を介してメインCPUを起動させる。続いて、S1022において、CPU211は、WOLパケットがIPSECパケットであったかどうかを判定する。IPSECパケットだと判定すると、S1023に進み、CPU211は、一時記憶領域315にコピーしてあったWOLに関連するSA情報と、IPSEC処理部に保存されている残りのSA情報をメインCPUのIPSEC処理部306に転送する。転送後は、S1024に進み、CPU211は、一時記憶領域315からSA情報を消去する。続いて、S1029に進み、CPU211は、IPSec処理部314に残りのSA情報があれば当該情報をメインCPUへ転送する。その後、S1027に進み、CPU211は、一時記憶領域315に保存してあったIPSEC受信パケットをメインCPUに転送し、S1028で転送終了後、一時記憶領域315に保存したパケットデータを消去する。
【0058】
S1022で平文パケットでWOL処理を実行すると判定すると、S1025に進み、CPU211は、サブCPUのIPSEC処理部314にSA情報が保存されてるか否かを判定する。保存されている場合はS1026に進み、CPU211は、メインCPUのIPSEC処理部306へSA情報を転送する。その後、S1027において、CPU211は、一時記憶領域315に保存してあった平文の受信パケットをメインCPUに転送し、転送終了後S1028において、一時記憶領域315に保存したパケットデータを消去する。
【0059】
一方、S1025でIPSEC処理部314にSA情報がなければ、メインCPUへSA情報を転送する必要がないため、S1027に進み、CPU211は、一時記憶領域315に保存してあった平文の受信パケットをメインCPUに転送する。転送終了後S1028に進み、CPU211は、一時記憶領域315に保存したパケットデータを消去する。
【0060】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
【技術分野】
【0001】
本発明は、省電力制御を実行する画像処理装置、その制御方法、及びプログラムに関するものである。
【背景技術】
【0002】
近年の画像処理装置には、稼動していない状態が一定時間以上経過した場合は、電力の供給を機器の一部に限定し低電力で動作する「スリープ状態」へ遷移する省電力機能を有しているものがある。また、画像処理装置は、ネットワーク技術の普及に伴い、ネットワークを利用して機器とホスト間で定期的にデータのやりとりを行うことが一般的である。機器が「スリープ状態」である場合にネットワーク経由のデータを処理するためには、機器を「非スリープ状態」に遷移する必要がある。したがって、頻繁にネットワーク上でデータのやり取りが行われる環境では「スリープ状態」時間が短くなってしまう。
【0003】
これを解決する手法として、特許文献1には、機器に複数のCPUを搭載し、非スリープ時にはメインCPUで処理を行うが、スリープ時には、電力消費の小さいサブCPUでメインCPUの処理を代替させる手法が提案されている。さらに、ネットワークプロトコルの多様化、複雑化に伴いサブCPUが代替できる処理を拡充するために、サブCPUにプロトコルスタックを搭載する手法も考えられている。
【0004】
一方、近年、ネットワーク上を流れるデータの改ざん、盗聴を防ぐためのセキュリティ機能の普及に伴い、機器は、通信相手と複雑なネゴシエーションを行い、その結果に基づいて暗号処理、復号化処理を行う方式が用いられている。これに伴い、機器とホスト間で定期的にやりとりされるネットワークデータのやりとりにも、セキュリティ通信が利用される機会が増えている。このようなセキュリティ通信時にも、サブCPUにセキュリティ機能を搭載し、メインCPUとセキュリティ通信に必要な情報を交換することで、メインCPUの処理を代替させる手段も考えられている。これらセキュリティ技術の普及と省電力技術の向上に伴い、機器とネットワーク上のホストとのやりとりがセキュリティ通信で行われていても、機器の低電力状態を保ったまま、データ処理を行うことが望まれている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−259906号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、従来技術には以下に記載する問題がある。上記従来技術のように、サブCPUにプロトコルスタックを搭載する方式では、ネットワークパケットを受信してスリープ状態から復帰した場合、メインCPUがその受信パケットを適切に処理できないという問題が発生する。これは、サブCPUのプロトコルスタックがIPヘッダやEthernetヘッダなどを除去し、パケットのボディ部のみだけをメインCPUへ転送することが主な原因であった。そのためメインCPUでは受信したパケットに必要なヘッダ情報が付加されていないため、適切な処理を行うことができなかった。
【0007】
加えて、セキュリティ通信時においては、サブCPUが正しく受信パケットをメインCPUに転送したとしても、その後のセキュリティ通信で不正なシーケンスとなり正常に通信できない問題がある。これは、セキュリティ通信には通信保証のための情報が存在し、サブCPUで更新した情報をメインCPUに転送していることが主な原因であった。そのためメインCPUでは、受信したパケットとセキュリティ通信に必要な情報に不整合が生じてしまい、その後の通信シーケンスが正常に処理できなくなっていた。
【0008】
本発明は、上述の問題に鑑みて成されたものであり、スリープ状態においてメインCPUの機能の一部を代替するサブCPUにプロトコルスタッフを搭載するとともに、スリープ状態において外部から受信したパケットを解析した後にメインCPUで当該パケットを処理すると判断した場合に、適切な情報をメインCPUに対して転送する画像処理装置、その制御方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明は、第1制御手段と、省電力制御によるスリープ状態へ移行した際に該第1制御手段の一部の処理を代行する第2制御手段とを備える画像処理装置であって、前記第1制御手段は、前記画像処理装置を前記スリープ状態へ移行させるスリープ制御手段を備え、前記第2制御手段は、外部装置からのパケットをネットワークを介して受信する受信手段と、前記受信手段によって受信された受信パケットをコピーして一時記憶領域に保存する保存手段と、前記受信手段によって受信された受信パケットの複数のヘッダ部分を順次解析するとともに、解析したヘッダ部分を順次削除する解析手段と、前記解析手段による解析の結果に従って、前記第1制御手段を起動するとともに前記一時記憶領域に保存された前記受信パケットを該第1制御手段へ転送する処理手段とを備えることを特徴とする。
【発明の効果】
【0010】
本発明は、スリープ状態においてメインCPUの機能の一部を代替するサブCPUにプロトコルスタッフを搭載するとともに、スリープ状態において外部から受信したパケットを解析した後にメインCPUで当該パケットを処理すると判断した場合に、適切な情報をメインCPUに対して転送する画像処理装置、その制御方法、及びプログラムを提供できる。
【図面の簡単な説明】
【0011】
【図1】第1の実施形態におけるネットワーク構成を示す図である。
【図2】第1の実施形態における画像処理装置のH/W構成図を示す図である。
【図3】第1の実施形態における画像処理装置のS/W構成図を示す図である。
【図4】第1の実施形態におけるプロトコルスタックの処理を示す図である。
【図5】第1の実施形態におけるサブCPUの処理を示すフローチャートである。
【図6】第2の実施形態におけるSA情報の属性を示す図である。
【図7】第2の実施形態における画像処理装置の従来技術の課題を示す図である。
【図8】第2の実施形態における画像処理装置の従来技術の課題を示す図である。
【図9】第2の実施形態における画像処理装置の従来技術の課題を示す図である。
【図10】第2の実施形態におけるサブCPUの処理を示すフローチャートである。
【発明を実施するための形態】
【0012】
以下、本発明を実施するための形態について図面を用いて説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでなく、また実施形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
【0013】
<第1の実施形態>
<システム構成>
以下では、図1乃至図5を参照して、第1の実施形態について説明する。本実施形態では、画像処理装置が外部機器とネットワークパケットをやり取りする際に、セキュリティ通信ではなく、平文でネットワークパケットを送受信する場合について説明する。まず、図1を参照して、本実施形態に係る画像処理装置を使用したネットワークシステムの構成について説明する。
【0014】
画像処理装置101とホストコンピュータ102とがネットワーク103を介して接続され、相互に通信可能となっている。画像処理装置101、及びホストコンピュータ102は、共にIPSEC機能が有効になっており、画像処理装置101とホストコンピュータ102との間の通信は、全てIPSECが適用されているものとする。
【0015】
<画像処理装置のハードウェア構成>
次に、図2を参照して、画像処理装置101のハードウェア構成について説明する。画像処理装置101は、図2に示すように、CPU209を有し、装置全体を統括的に制御するユニット220(第1制御手段)と、CPU211を有し、ユニット220が省電力制御によるスリープ状態へ移行した際に、ユニット220の一部の処理を代行するユニット221(第2制御手段)との2つの制御部で構成される。なお、ここでは、画像処理装置101として、複写機を一例に説明する。したがって、ユニット220は複写機のコントローラ部分に相当し、ユニット221は複写機のNIC(Network Interface Card)に相当する。また、画像処理装置101は、省電力機能を有し、「スリープ状態」である場合には、ユニット221のみに電源が供給され、それ以外への電源供給を停止することで、消費電力の低減を実現する。
【0016】
ユニット220は、スキャナI/F201、拡張I/F制御部202、ROM203、RAM204、HDD205、プリンタI/F206、NVRAM207、パネル制御部208、及びCPU209を備える。各コンポーネントは、システムバス210によって相互通信可能に接続される。また、ユニット221は、CPU211、拡張I/F制御部212、ROM213、RAM214、及びネットワークI/F215を備える。各コンポーネントは、システムバス216によって相互通信可能に接続される。
【0017】
ROM203のプログラム用ROMには、CPU209が実行可能な制御プログラム等が記憶される。ROM203のデータ用ROMには、ユニット220上で利用される情報等が記憶される。CPU209は、ROM203のプログラム用ROMに記憶された制御プログラムに基づいてシステムバス210に接続される各種のデバイスとのアクセスを総括的に制御する。また、プリンタI/F206を介して接続されるプリンタ222に出力情報としての画像信号を出力したり、スキャナI/F201を介して接続されるスキャナ218から入力される画像信号を制御する。
【0018】
RAM204は、主としてCPU209の主メモリ,ワークエリア等として機能し、図示しない増設ポートに接続されるオプションRAMによりメモリ容量を拡張することができる。ハードディスクドライブ(HDD)205は、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶したり、プリントジョブを一時的にスプールし、スプールされたジョブを外部から制御するためのジョブ格納領域として使用される。さらに、スキャナ218から読み取った画像データやプリントジョブの画像データをBOXデータとして保持し、ネットワークから参照したり、印刷を行うBOXデータ格納領域としても使用される。207は不揮発性メモリ(NVRAM)であり、操作パネル219を介して設定される各種設定情報をパネル制御部208を経由して記憶している。
【0019】
ROM213のプログラム用ROMには、CPU211が実行可能な制御プログラム等が記憶される。ROM213のデータ用ROMには、ユニット221上で利用される情報等が記憶される。CPU211は、ROM213のプログラム用ROMに記憶された制御プログラムに基づいてシステムバス216に接続される各種のデバイスとのアクセスを総括的に制御する。RAM214は、主としてCPU211の主メモリ,ワークエリア等として機能する。CPU211は、ネットワークI/F215を介して、ネットワーク上のホストコンピュータや他の画像処理装置との通信処理が可能となっている。
【0020】
また、ユニット220とユニット221は、拡張I/F制御部202、212及び拡張I/F217を介して接続される。ユニット220のCPU209は、拡張I/F制御部202を経由して、ユニット221とデータの送受信を行うことができる。同様に、ユニット221のCPU211は、拡張I/F制御部212を経由して、ユニット220とデータの送受信を行うことができる。
【0021】
<画像処理装置のソフトウェア構成>
次に、図3を参照して、画像処理装置101のソフトウェア構成について説明する。画像処理装置のソフトウェア構成は大きく非スリープ状態で動作するメインCPUファーム301とスリープ状態で動作するサブCPUファーム309に分けられる。
【0022】
まず、メインCPUファーム301について説明する。メインCPUファーム301は、プロトコルスタック302、画像処理部307、CPU間通信部308、及びスリープ制御部319を含む。スリープ制御部319は、ユニット220上のCPU209上で動作し、ユニット220へも電力が供給されている「非スリープ状態」から、ユニット221へのみ電力が供給される「スリープ状態」に移行する制御を行う。
【0023】
プロトコルスタック302は、Ethernetヘッダ処理部303と、IPヘッダ処理部304と、TCP/UDPヘッダ処理部305とから構成され、受信パケットのヘッダ部分を各処理部によって順次解析する。なお、各処理部は、解析したヘッダ部分を順次削除する。IPSEC処理部306は、IPヘッダ処理部304のレイヤで動作し、IPSECネゴシエーション処理や、送受信するネットワークパケットのIPSEC処理、IPSEC処理に必要なSA(Secutiry Assosiation)の管理などを行う。
【0024】
CPU間通信部308は、ユニット220上のCPU209上で動作し、拡張I/F制御部202から拡張I/F217を介して、ユニット221上のCPU211で動作するソフトウェアとのデータ送受信を行う。また、メインCPUファーム301は、画像処理部307などのアプリケーションを多く搭載する。
【0025】
次に、サブCPUファーム309について説明する。サブCPUファーム309は、プロトコルスタック310、代理応答処理部316、WOL処理部317、及びCPU間通信部318を含む。CPU間通信部318は、ユニット221上のCPU211上で動作し、拡張I/F制御部202から拡張I/F217を介して、ユニット220上のCPU209で動作するソフトウェアとのデータ送受信を行う。
【0026】
プロトコルスタック310は、Ethernetヘッダ処理部311と、IPヘッダ処理部312と、TCP/UDPヘッダ処理部313とから構成される。IPSEC処理部314は、ユニット221上のCPU211上で動作し、送受信するネットワークパケットのIPSEC処理、SAの管理を行う。また、プロトコルスタック310は、さらに、受信したパケットやSA情報を一時的に保存するための一時記憶領域315を搭載する。
【0027】
代理応答処理部316は、受信したパケットに対してメインCPUを復帰させずに、サブCPUの能力だけで応答可能かを判断して、応答パケットを作成、送信制御を行う。WOL(WakeOnLan)処理部317は、受信したパケットがメインCPUを復帰させるパターンかどうかを判断し、復帰させる場合は、復帰処理を行う。ここで、WOL処理とはLANを介して遠隔の装置を起動する処理を示す。例えば、本実施形態においては、ホストコンピュータ102がネットワーク103を介して画像処理装置101をスリープ状態から起動させる処理を示す。
【0028】
サブCPU309はメインCPUがスリープ状態の場合にのみ起動する。サブCPU309は、受信したネットワークデータを、3種に分類する。ここで、3種とは、「破棄」「メインCPUへ転送」「代理で応答を送信」である。「破棄」は、自装置宛パケットではない場合など無視してよいネットワークデータを受信した場合を示し、これに分類された場合、受信したネットワークデータに対する処理は何も行わず、破棄する。即ち、「破棄」は、ユニット220(メインCPU)の起動が不要である。「本体(メイン)CPUへ転送」は、受信したネットワークデータに対して何らかの処理が必要であるが、電源が供給されているユニット221(サブCPU)だけでは処理を行えないネットワークデータを受信した場合を示す。この場合、サブCPUは、画像処理装置101を「スリープ状態」から「非スリープ状態」へ移行し、受信したネットワークパケットをメインCPU(CPU209)へ転送する。「代理で応答」は、ユニット220(メインCPU)の起動が不要と判断し、受信したネットワークデータに対しての応答を、ユニット221だけで作成し送信する。送受信するパケットがIPSECのパケットであれば、IPSEC処理部314を利用して送受信を制御する。
【0029】
<パケット受信>
次に、図4を参照して、一般的なプロトコルスタックを搭載するパケット受信の挙動について説明する。TCPで通信を行う印刷データのパケットデータ405を画像処理装置が受信した場合、まずはEthernetヘッダ処理部401がEthernetヘッダ部を解析する。実際のパケットパラメータは多くの定義があるが、ここでは、本発明に関連するパラメータのみを対象に記載している。Ethernetヘッダ処理部401は、受信パケットの送信先MACアドレスを参照し、自装置のMACアドレスと一致するか否かを判断し、一致する場合、Ethernetヘッダ部分を除去してIPヘッダ処理部402にパケットを転送する。自装置のMACアドレスに一致しない場合は受信パケットを破棄する。
【0030】
次に、IPヘッダ処理部402は、Ethernetヘッダ部が取り除かれたパケット406を解析する。IPヘッダ処理部402は、宛先IPアドレスが自装置のIPアドレスと一致するか、チェックサム値が正しいかどうか等を判断し、受信すべきと判断したらTCP/UDPヘッダ処理部403にパケットを転送する。受信すべきと判断しない場合は、パケットを破棄するかエラーパケットを送信する。
【0031】
次に、TCP/UDPヘッダ処理部403は、IPヘッダ部が取り除かれたパケット407を解析する。TCP/UDPヘッダ処理部403では、主に宛先ポート番号については機器が開いているポート番号に一致するかどうか、シーケンス番号が正しい値かどうかを判断する。問題ないと判断した場合はヘッダ部分を取り除いて上位のアプリケーション部分である画像処理部404にパケットを転送する。受信すべきと判断しない場合は、パケットを破棄するかエラーパケットを送信する。画像処理部404は、TCPヘッダが取り除かれたパケット408を解析してアプリケーション固有の処理を行う。
【0032】
これらの一連のシーケンスがサブCPUのプロトコルスタック310及びメインCPUのプロトコルスタック302で実施される。サブCPUにプロトコルスタックを搭載する場合、図4で示したように、各ヘッダ部を除去した後にWOLあるいは代理応答の判断を行う。この時、WOLだと判断した場合は、ヘッダ部が除去されたPAYLOAD部しか含まないパケットデータをメインCPUへ転送することになり、メインCPUではヘッダ部がないため正常にパケット処理をできないという問題が発生してしまう。本実施形態では、これらの問題が発生しないようにパケット受信を制御する。
【0033】
<サブCPUにおけるパケット受信>
次に、図5を参照して、本実施形態における、サブCPUファーム309においてスリープ状態中にパケットを受信する際の処理手順について説明する。なお、サブCPUには代理応答パケットパターンやWOLパケットパターンは予めメインCPU側から通知あるいはユーザ設定等で設定されているものとする。また、以下で説明する処理は、CPU211がROM213に格納された制御プログラムをRAM214にロードして実行することにより実現される。
【0034】
メインCPUがスリープ状態に移行し、サブCPU(CPU211)が起動した後、サブCPUはネットワークパケットの受信待ち状態となる。S501において、CPU211は、パケットデータを受信したか否かを判定する。パケットデータを受信していない場合は、S501の判定を定期的に繰り返す。一方、パケットデータを受信した場合はS502に進み、CPU211は、受信したパケットデータを一旦サブCPUファーム内の一時記憶領域315にコピーして保存する。
【0035】
このように、本実施形態では、これ以降の処理における解析処理において使用される受信パケットとは別に、当該受信パケットのコピーを一時記憶領域315へ退避させる。これにより、プロトコルスタックにおいて、受信パケットのヘッダ部分を順次解析しつつ、解析したヘッダ部分を削除する場合であっても、メインCPUへ受信パケットを転送する必要があるときは、一時記憶領域315に退避した元の受信パケットを転送することができる。
【0036】
次に、S503において、CPU211は、受信パケットをEthernetヘッダ処理部311、IPヘッダ処理部312などに転送していき、各解析処理部でヘッダ解析を行い、パケットデータからヘッダ部を除去する。続いて、S504において、CPU211は、ヘッダ解析及びPAYLOAD部分の解析結果に従って、受信したパケットがサブCPUにおいて代理応答可能なパケットパターンであるか否かを判定する。代理応答可能であると判断するとS505に進み、代理応答が不可能であると判断するとS508に進む。
【0037】
S505において、代理応答処理部316は、代理応答パケットを作成する。続いて、S506において、代理応答処理部316は、CPU間通信部318を介して作成された代理応答パケットを送信する。続いて、S507において、CPU211は、受信パケットに対する代理応答が完了した後に、一時記憶領域315に保存した受信パケットを消去して、再びパケット受信待ちに戻る。
【0038】
一方、S504で代理応答パターンではないと判断した場合は、S508において、WOL処理部317は、Wake On LAnで画像処理装置101を起動するべきか否かを判定する。即ち、WOL処理部317は、受信パケットがメインCPUのスリープ状態からの起動を外部装置から指示するパケットであるか否かを判定する。画像処理装置101を起動すべきでないと判断した場合は、S509に進み、受信パケットを破棄して、S507に進み、一時記憶領域315に保存した受信パケットも消去して、再びパケット受信待ちに戻る。
【0039】
一方、S508で画像処理装置101を起動すべき、即ち、メインCPU(CPU209)を起動すべきと判断した場合は、S510に進み、CPU211は、CPU間通信部318を介してメインCPUを起動させる。ここで、WOL処理部317にあるヘッダ部が除去されたパケットをメインCPU側へ転送してしまうと、メインCPUのプロトコルスタックは正常に処理を実行することができない。そこで、本実施形態によれば、S511において、CPU211は、一時記憶領域315に保存されているパケットデータ(受信パケット)をメインCPUに転送する。その後、S512において、CPU211は、一時記憶領域315からパケットデータを消去し、サブCPUの処理を終了する。
【0040】
以上説明したように、本実施形態に係る画像処理装置は、サブCPUファームにプロトコルスタックが搭載されている場合であっても、正しくWOL処理を実施することができる。具体的には、本画像処理装置は、スリープ状態において受信したパケットがメインCPUで処理する必要がある場合に、プロトコルスタックで解析した後のヘッダ部分が消去されたデータではなく、一時記憶領域に退避しておいた受信パケットをメインCPUへ転送する。
【0041】
<第2の実施形態>
次に、図6乃至図10を参照して、第2の実施形態について説明する。本実施形態は、画像処理装置が行うセキュリティ通信としてIPSEC(Internet Protocol Security)を扱った場合について説明する。IPSECは、特定の認証アルゴリズムや暗号アルゴリズムを用いて、ネットワーク上を流れるデータの盗聴や改ざんを防ぐためのプロトコルである。IPSECは、AH(Authentication Header)とESP(Encapsulations Security Payload)の2つのプロトコルで構成され、AHでは認証のみを、ESPでは認証と暗号化を行う。どちらのプロトコルを利用するか、また、その際利用する認証アルゴリズム種別や暗号アルゴリズム種別の決定は、IPSEC通信前のネゴシエーションで行う。さらに、暗号アルゴリズムで利用する鍵についても、IKE(Internet Key Exchange)を利用することによって、IPSEC通信前に、通信機器間で交換する方式が定義されている。パケットフォーマットを含むIPSEC及びIKEの詳細については、RFC(Request For Comment)に定義が行われているため、本実施形態では詳細に記載しない。
【0042】
<Security Association>
機器間でIPSec通信が確立されると、その通信に応じてSA(Security Association)が生成される。ここで、図6を参照して、SAのパラメータ例について説明する。SAは多くのパラメータから構成されるが、ここでは本実施形態に関連のあるパラメータのみを列挙する。
【0043】
SPI(Security Parameter Index)は、SAを識別するための値である。暗号アルゴリズムは、このトラフィックで利用する暗号アルゴリズムの種別を示す。認証アルゴリズムは、このトラフィックで利用する認証アルゴリズムの種別を示す。暗号鍵は、このトラフィックを暗号化する際に利用する鍵情報を示す。認証鍵は、このトラフィックの認証を行う際に利用する鍵情報を示す。
【0044】
有効期間は、SAの有効期間として、時間(秒単位)で設定される。経過時間はSAが作成された時刻(IPSECネゴシエーションが完了した時刻)からの経過時間を示し、SAの有効期間に達していないか、SAの有効性を判断するために用いる。送信データ量は、SA生成から送信したデータ量を示す。シーケンス番号は、リプレイ攻撃から防御するための値で、IPSECヘッダに設定され、パケットを送信するたびに、1ずつ加算される。送信元アドレスは、このSAに対応付けられるIPSECトラフィックの送信元IPアドレスを示す。送信先アドレスは、このSAに対応付けられるIPSECトラフィックの送信先IPアドレスを示す。送信元ポート番号、このSAに対応付けられるIPSECトラフィックの送信元ポート番号を示す。送信先ポート番号は、このSAに対応付けられるIPSECトラフィックの送信先ポート番号を示す。
【0045】
<比較例による制御>
次に、図7乃至図9を参照して、本実施形態における対策を施さない場合の比較例となる実施形態の課題について説明する。図7に示すように、メインCPU702とサブCPU703から構成される機器701と、外部ホスト704の間でIPSEC通信を確立し、メインCPU内におけるIPSEC処理部がSA705を生成したとする。メインCPU702がスリープ状態へ移行し、サブCPU703が起動すると、メインCPU702内のIPSEC処理部からサブCPU703内のIPSEC処理部へSAが転送され、サブCPU703内でSA706を保持する。
【0046】
この状態で、外部ホスト704からIPSECパケット707が送信された場合、サブCPU703内のIPSEC処理部が受信パケットを解析する。この時IPSEC処理部はパケットのシーケンス番号を参照し、期待する値に一致するかどうかを判断する。SA706のシーケンス番号は800なので、期待するシーケンス番号は801である。図7に示すように、受信パケット707のシーケンス番号が801の場合は、IPSEC処理部は受信パケットが正当なパケットだと判断してIPSEC処理を開始する。
【0047】
図8は、サブCPU703のIPSEC処理部がIPSEC処理を実行した後の様子を示す。サブCPU703のIPSEC処理部がデータの復号化を実施したため、保持するSAのシーケンス番号は801となり、データ量は受信したサイズ分だけ更新しSA806となる。この復号化したパケットをサブCPU703内のWOL処理部でWOL処理を実行するかどうかを判断した結果、WOL処理を実行すると判断した場合、サブCPU703はメインCPU702を起動させる。
【0048】
起動後の様子を図9に示す。この時、サブCPU703は一時記憶領域から受信パケット907をメインCPU702に転送し、SAは図8において更新した後のSA806を転送する。メインCPU702は転送されたSA806に対して、メインCPU702のIPSEC処理部で保持するSA情報を更新してSA905とする。その後、パケット907を受信しメインCPU702のIPSEC処理部で復号化処理を実施するが、保持するシーケンス番号801が期待する値は802であるのに対して、パケット907のシーケンス番号は801となる。したがって、IPSEC処理部は、不正なシーケンス番号であるとみなしてIPSEC処理を実施しない。このように比較例の構成においては、IPSECパケットでWOL処理を実行した場合に正しくIPSECパケットを処理できない問題が発生してしまう。
【0049】
<本実施形態による制御>
次に、図10を参照して、本実施形態におけるサブCPUファームの処理手順について説明する。また、以下で説明する処理は、CPU211がROM213に格納された制御プログラムをRAM214にロードして実行することにより実現される。
【0050】
サブCPUファーム309が起動すると、S1001において、CPU211は、メインCPUファーム301からSA情報の転送があるかどうかを判定する。S1002において、CPU211は、SA情報の転送があると判定すると、サブCPUのIPSEC処理部314にSA情報を設定する。続いて、S1003において、サブCPUは、ネットワークパケットの受信待ち状態となる。S1003でネットワークパケットを受信すると、S1004に進み、CPU211は、受信パケットを一時記憶領域315にコピーして保存する。
【0051】
次に、S1005において、CPU211は、受信パケットに対してプロトコルスタック310を利用してヘッダ解析処理を行う。さらに、S1006において、CPU211は、IPレイヤにおいてはIPSEC処理部314を利用して受信パケットがIPSECパケットであるかどうかを判定する。S1007において、CPU211は、受信パケットがIPSECであると判断すると、この時点でIPSEC処理部314に存在している、受信パケットに関するSA情報だけを一時記憶領域315にコピーして保存する。IPSEC処理部314には、複数のセッションに対応付けられている複数のSA情報が存在するが、受信パケットに対応するSAだけを一時記憶領域315に保存する。このように、本実施形態では、受信パケットに加えて、対応するSA情報を一時記憶領域315へ退避する。
【0052】
次に、S1008において、CPU211は、復号鍵を利用して受信パケットの復号化を行い、成功したか否かを判定する。受信パケットの復号化に失敗した場合は、S1009に進み、CPU211は、自装置宛ではない、あるいはエラーシーケンスとみなし、一時記憶領域315のSA情報を消去し、S1010で一時記憶領域315のパケットデータを消去し、処理をS1003に戻す。一方、S1008で復号化に成功した場合は、S1011に進み、CPU211は、IPSEC処理部314に存在するSA情報のシーケンス番号やデータ送信量などを更新し、S1012に進む。また、S1006において、平文パケットを受信した場合もS1012に進む。
【0053】
S1012において、CPU211は、代理応答処理部316で受信パケットが代理応答パケットパターンに合致するかどうかを判定する。代理応答すべきと判断した場合はS1013に進み、CPU211は、代理応答処理部316で応答パケットパターンを作成する。続いて、S1014において、CPU211は、受信パケットがIPSECパケットである否かを判定する。ここでは、IPSECパケットである場合は、応答するパケットもIPSECパケットである必要があるため、送信パケットを暗号化すべきかどうかをIPSEC処理部314で判定している。
【0054】
暗号化すべきと判定すると、S1015に進み、CPU211は、IPSEC処理部314で送信パケットを、暗号化方式に合わせて対応する暗号鍵を用いて暗号化する。続いて、S1016において、CPU211は、一時記憶領域315に保存したSA情報を消去し、S1017に進む。この系の場合は一時記憶領域315に保存したSA情報は使用しない。一方、S1014において平文でパケットを送信すると判断した場合はS1017に進む。
【0055】
S1017において、CPU211は、プロトコルスタック310によって応答パケットを送信する。その後、S1018において、CPU211は、一時記憶領域315に保存してあったパケットデータを消去し、処理をS1003に戻して再びパケットデータ受信待ち状態に戻る。この系の場合は一時記憶領域315に保存したパケットデータは使用しない。
【0056】
S1012で代理応答すべきでないと判断すると、S1019において、CPU211は、WOL処理部317で受信したパケットパターンがWOL処理を実行すべきかどうかを判定する。WOL処理を実行すべきでないと判断すると、S1020に進み、CPU211は、機器に関係のないパケットなのでパケットを破棄する。その後、S1018に進み、CPU211は、一時記憶領域315に保存してあったパケットデータも消去して、処理をS1003に戻して再びパケットデータ受信待ち状態に戻る。
【0057】
一方、S1019でWOL処理を実行すべきと判断すると、S1021において、CPU211は、CPU間通信部を介してメインCPUを起動させる。続いて、S1022において、CPU211は、WOLパケットがIPSECパケットであったかどうかを判定する。IPSECパケットだと判定すると、S1023に進み、CPU211は、一時記憶領域315にコピーしてあったWOLに関連するSA情報と、IPSEC処理部に保存されている残りのSA情報をメインCPUのIPSEC処理部306に転送する。転送後は、S1024に進み、CPU211は、一時記憶領域315からSA情報を消去する。続いて、S1029に進み、CPU211は、IPSec処理部314に残りのSA情報があれば当該情報をメインCPUへ転送する。その後、S1027に進み、CPU211は、一時記憶領域315に保存してあったIPSEC受信パケットをメインCPUに転送し、S1028で転送終了後、一時記憶領域315に保存したパケットデータを消去する。
【0058】
S1022で平文パケットでWOL処理を実行すると判定すると、S1025に進み、CPU211は、サブCPUのIPSEC処理部314にSA情報が保存されてるか否かを判定する。保存されている場合はS1026に進み、CPU211は、メインCPUのIPSEC処理部306へSA情報を転送する。その後、S1027において、CPU211は、一時記憶領域315に保存してあった平文の受信パケットをメインCPUに転送し、転送終了後S1028において、一時記憶領域315に保存したパケットデータを消去する。
【0059】
一方、S1025でIPSEC処理部314にSA情報がなければ、メインCPUへSA情報を転送する必要がないため、S1027に進み、CPU211は、一時記憶領域315に保存してあった平文の受信パケットをメインCPUに転送する。転送終了後S1028に進み、CPU211は、一時記憶領域315に保存したパケットデータを消去する。
【0060】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
【特許請求の範囲】
【請求項1】
第1制御手段と、省電力制御によるスリープ状態へ移行した際に該第1制御手段の一部の処理を代行する第2制御手段とを備える画像処理装置であって、
前記第1制御手段は、
前記画像処理装置を前記スリープ状態へ移行させるスリープ制御手段を備え、
前記第2制御手段は、
外部装置からのパケットをネットワークを介して受信する受信手段と、
前記受信手段によって受信された受信パケットをコピーして一時記憶領域に保存する保存手段と、
前記受信手段によって受信された受信パケットの複数のヘッダ部分を順次解析するとともに、解析したヘッダ部分を順次削除する解析手段と、
前記解析手段による解析の結果に従って、前記第1制御手段を起動するとともに前記一時記憶領域に保存された前記受信パケットを該第1制御手段へ転送する処理手段と
を備えることを特徴とする画像処理装置。
【請求項2】
前記解析手段による解析の結果、前記第1制御手段の起動が不要と判断した場合、前記処理手段は、前記第1制御手段に代わって前記受信パケットに対する応答を行うか、又は、該受信パケットを破棄することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記処理手段は、前記受信パケットに対する処理が完了すると、前記一時記憶領域に保存された受信パケットを消去することを特徴とする請求項1に記載の画像処理装置。
【請求項4】
前記処理手段は、
前記解析手段による解析の結果が、前記受信パケットが前記スリープ状態からの起動を前記外部装置から指示するパケットであることを示す場合に、前記第1制御手段を起動するとともに前記一時記憶領域に保存された前記受信パケットを該第1制御手段へ転送することを特徴とする請求項1乃至3の何れか1項に記載の画像処理装置。
【請求項5】
前記解析手段は、さらに、前記受信パケットが暗号化されているか否かを解析し、
前記処理手段は、前記第1制御手段に代わって前記受信パケットに対する応答を行う場合であって、かつ、前記解析手段によって前記受信パケットが暗号化されていると解析されると、該受信パケットの暗号化方式に合わせて応答するパケットを暗号化することを特徴とする請求項1乃至4の何れか1項に記載の画像処理装置。
【請求項6】
前記第1制御手段は、
前記外部装置との間でIPSec通信を確立するとともに、SA(Security Association)を生成した場合であって、かつ、前記スリープ状態へ移行する場合に、該SAの情報を前記第2制御手段へ転送する転送手段をさらに備え、
前記保存手段は、さらに、前記転送手段によって転送された前記SAの情報を前記一時記憶領域に保存し、
前記解析手段は、前記受信パケットが暗号化されている場合に、該受信パケットを復号化すると、該解析手段が保持するSAの情報を更新することを特徴とする請求項5に記載の画像処理装置。
【請求項7】
前記処理手段は、
前記受信パケットが暗号化されている場合であって、かつ、前記受信パケットが前記スリープ状態からの起動を前記外部装置から指示するパケットであることを示す場合には、前記第1制御手段を起動するとともに前記一時記憶領域に保存された前記受信パケット及び前記SAの情報を該第1制御手段へ転送し、
前記受信パケットが暗号化されている場合であって、かつ、前記第1制御手段に代わって該受信パケットに対する応答を行う場合には、前記解析手段によって更新された前記SAの情報を用いて該受信パケットに応答することを特徴とする請求項6に記載の画像処理装置。
【請求項8】
第1制御手段と、省電力制御によるスリープ状態へ移行した際に該第1制御手段の一部の処理を代行する第2制御手段とを備える画像処理装置の制御方法であって、
前記第1制御手段は、
スリープ制御手段が、前記画像処理装置を前記スリープ状態へ移行させるスリープ制御ステップを実行し、
前記第2制御手段は、
受信手段が、外部装置からのパケットをネットワークを介して受信する受信ステップと、
保存手段が、前記受信ステップにおいて受信された受信パケットをコピーして一時記憶領域に保存する保存ステップと、
解析手段が、前記受信ステップにおいて受信された受信パケットの複数のヘッダ部分を順次解析するとともに、解析したヘッダ部分を順次削除する解析ステップと、
処理手段が、前記解析ステップにおける解析の結果に従って、前記第1制御手段を起動するとともに前記一時記憶領域に保存された前記受信パケットを該第1制御手段へ転送する処理ステップと
を実行することを特徴とする画像処理装置の制御方法。
【請求項9】
請求項8に記載の画像処理装置の制御方法における各ステップをコンピュータに実行させるためのプログラム。
【請求項1】
第1制御手段と、省電力制御によるスリープ状態へ移行した際に該第1制御手段の一部の処理を代行する第2制御手段とを備える画像処理装置であって、
前記第1制御手段は、
前記画像処理装置を前記スリープ状態へ移行させるスリープ制御手段を備え、
前記第2制御手段は、
外部装置からのパケットをネットワークを介して受信する受信手段と、
前記受信手段によって受信された受信パケットをコピーして一時記憶領域に保存する保存手段と、
前記受信手段によって受信された受信パケットの複数のヘッダ部分を順次解析するとともに、解析したヘッダ部分を順次削除する解析手段と、
前記解析手段による解析の結果に従って、前記第1制御手段を起動するとともに前記一時記憶領域に保存された前記受信パケットを該第1制御手段へ転送する処理手段と
を備えることを特徴とする画像処理装置。
【請求項2】
前記解析手段による解析の結果、前記第1制御手段の起動が不要と判断した場合、前記処理手段は、前記第1制御手段に代わって前記受信パケットに対する応答を行うか、又は、該受信パケットを破棄することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記処理手段は、前記受信パケットに対する処理が完了すると、前記一時記憶領域に保存された受信パケットを消去することを特徴とする請求項1に記載の画像処理装置。
【請求項4】
前記処理手段は、
前記解析手段による解析の結果が、前記受信パケットが前記スリープ状態からの起動を前記外部装置から指示するパケットであることを示す場合に、前記第1制御手段を起動するとともに前記一時記憶領域に保存された前記受信パケットを該第1制御手段へ転送することを特徴とする請求項1乃至3の何れか1項に記載の画像処理装置。
【請求項5】
前記解析手段は、さらに、前記受信パケットが暗号化されているか否かを解析し、
前記処理手段は、前記第1制御手段に代わって前記受信パケットに対する応答を行う場合であって、かつ、前記解析手段によって前記受信パケットが暗号化されていると解析されると、該受信パケットの暗号化方式に合わせて応答するパケットを暗号化することを特徴とする請求項1乃至4の何れか1項に記載の画像処理装置。
【請求項6】
前記第1制御手段は、
前記外部装置との間でIPSec通信を確立するとともに、SA(Security Association)を生成した場合であって、かつ、前記スリープ状態へ移行する場合に、該SAの情報を前記第2制御手段へ転送する転送手段をさらに備え、
前記保存手段は、さらに、前記転送手段によって転送された前記SAの情報を前記一時記憶領域に保存し、
前記解析手段は、前記受信パケットが暗号化されている場合に、該受信パケットを復号化すると、該解析手段が保持するSAの情報を更新することを特徴とする請求項5に記載の画像処理装置。
【請求項7】
前記処理手段は、
前記受信パケットが暗号化されている場合であって、かつ、前記受信パケットが前記スリープ状態からの起動を前記外部装置から指示するパケットであることを示す場合には、前記第1制御手段を起動するとともに前記一時記憶領域に保存された前記受信パケット及び前記SAの情報を該第1制御手段へ転送し、
前記受信パケットが暗号化されている場合であって、かつ、前記第1制御手段に代わって該受信パケットに対する応答を行う場合には、前記解析手段によって更新された前記SAの情報を用いて該受信パケットに応答することを特徴とする請求項6に記載の画像処理装置。
【請求項8】
第1制御手段と、省電力制御によるスリープ状態へ移行した際に該第1制御手段の一部の処理を代行する第2制御手段とを備える画像処理装置の制御方法であって、
前記第1制御手段は、
スリープ制御手段が、前記画像処理装置を前記スリープ状態へ移行させるスリープ制御ステップを実行し、
前記第2制御手段は、
受信手段が、外部装置からのパケットをネットワークを介して受信する受信ステップと、
保存手段が、前記受信ステップにおいて受信された受信パケットをコピーして一時記憶領域に保存する保存ステップと、
解析手段が、前記受信ステップにおいて受信された受信パケットの複数のヘッダ部分を順次解析するとともに、解析したヘッダ部分を順次削除する解析ステップと、
処理手段が、前記解析ステップにおける解析の結果に従って、前記第1制御手段を起動するとともに前記一時記憶領域に保存された前記受信パケットを該第1制御手段へ転送する処理ステップと
を実行することを特徴とする画像処理装置の制御方法。
【請求項9】
請求項8に記載の画像処理装置の制御方法における各ステップをコンピュータに実行させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【公開番号】特開2013−10257(P2013−10257A)
【公開日】平成25年1月17日(2013.1.17)
【国際特許分類】
【出願番号】特願2011−144548(P2011−144548)
【出願日】平成23年6月29日(2011.6.29)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.ETHERNET
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成25年1月17日(2013.1.17)
【国際特許分類】
【出願日】平成23年6月29日(2011.6.29)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.ETHERNET
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]