以下に添付図面を参照して、この発明にかかる情報処理装置、情報処理方法およびプログラムの最良な実施の形態を詳細に説明する。
(実施の形態1)
図1は、実施の形態1の情報処理装置のプリンタの制御を司るコントローラボード1と印刷部2からなる機能構成を示すブロック図である。
このプリンタのコントローラボード1は、特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)10、DDR−SDRAMを含むメモリ11、ネットワークとの間で各種のパケットデータ(以下「パケット」と略称する)の送受信をするネットワーク用の物理層部(physical layer:PHY、以下「PHY」と略称する)12、PHYクロック生成部13、ASICクロック生成部14、記録媒体15、操作部(Operation Panel:OP、以下「OP」と略称する)16、ハードディスク装置(HDD)17、ボード電力制御部18、外部電力制御部19、不揮発性メモリ(RAM)36、プログラムとデータが格納されている第1ROM37、MACアドレスが格納されている第2ROM38を搭載している。上記記録媒体15は、例えば、メモリカード(Memory Card、登録商標)、セキュアデジタルカード(Secure Digital Card:SDカード、登録商標)を含む各種のメディアが使用可能である。
第1ROM37には、2つのプログラムとデータが格納されている。その2つのプログラムとは、電源ON時に動作する第1のプログラムと、その第1のプログラムから起動する第2のプログラムである。電源ON時に、第1ROM37上の第1のプログラムをCPU20が実行して、第2のプログラムをメモリ11上にロードする。メモリ11上にロードした第2のプログラムは、第1のプログラムを実行後に実行される。
第2のプログラム起動後に、CPU20は第2ROM38に格納してあるMACアドレスをPE24のレジスタ部(後述する図13のレジスタ部51)にある要求元ハードウェアアドレス(SHA)(後述する図13の55)に格納する。
RAM36には、このプリンタのIPアドレスが格納してあり、OP16からの要求によって、IPアドレスを変更することが可能である。その変更されたIPアドレスは、CPU20によってRAM36に格納される。このRAM36は、不揮発性のメモリなので電源をOFFにしても内容を保持できる。また、CPU20によって、RAM36上のIPアドレスをPE24のレジスタ部(後述する図13のレジスタ部51)にある要求元IPアドレス(SIP)(後述する図13の56)に格納しておく。
ASIC10には、主制御部であるCPU20、メモリ11とデータのやり取りをするためのメモリインタフェース部(以下「MEMI/F」と略称する)21、PHY12と通信するメディアアクセス制御部(Media Access Control:MAC、以下「MAC」と略称する)22、MAC22から出力されるパケットを受信して、そのパケットの種類を選別するパケットフィルタ部(以下「PF」と略称する)23、PF23から出力されるパケットを処理するネットワークパケットエンジン処理部(以下「PE」と略称する)24、PE24で処理されたデータと内部バス(インターナルバス:Internal BUS)34からきたデータを受信し、そのいずれか一方をMAC22に送信するセレクタ(SEL)25を搭載している。
また、CG26、PCIインタフェース(I/F)部を含むデータ転送インタフェース(I/F)部(以下「I/F」と略称する)27、記録媒体15に対してデータの読み書きをする記録媒体インタフェース部(以下「メモリカードI/F部」と略称する)記録媒体インタフェース(I/F)部(以下「記録媒体I/F」と略称する)28、OP16の入出力を制御するオペレーションパネルインタフェース部(以下「OPEI/F」と略称する)29、HDD17に対するデータの読み書きを制御するハードディスクドライブインタフェース部(以下「HDDI/F」と略称する)30、汎用インプットアウトプットインタフェース部(以下「I/OI/F」と略称する)31を搭載している。その記録媒体I/F28は、例えば、記録媒体がメモリカードならばメモリカードインタフェース部(Memory Card I/F)部である。
さらに、コントローラボード1の内外の各部への電源(図示を省略)からの給電を制御するパワーマネジメント部(以下「PM」と略称する)32、タイマ(Timer)33を搭載している。
ASIC10の内部には、パワーオフ領域(Power OFF Area)35という、PM32によって電源からの電力の供給を制御することができる領域と、常に電力を供給しているパワーオフ領域35以外の領域とがある。
パワーオフ領域35は、上記I/F27、上記記録媒体I/F28、上記OPEI/F29、上記HDDI/F30、上記I/OI/F31からなり、ネットワーク動作に直接関係しない各部からなる領域である。
コントローラボード1は、バス3を介して印刷部(Plotter)2が接続されており、ASIC10のI/F27を経由して内部バス34と接続されている。
ASIC10のPM32は、このプリンタの電源が投入された後は、後で詳述する電力供給に関する通常動作モードと、異なる種類の省電力モードである省エネルギーモード(「低消費電力モード」ともいう)とコントローラモード(低消費電力モードとコントローラモードは省電力モードの一種である)との3種類のモード中の一つを選択して、CPU20への電力の供給と停止、ASIC10の内部のパワーオフ領域35内の各部への電力の供給と停止、ボード電力制御部18と外部電力制御部19をそれぞれ制御する。
また、PM32は、MEMI/F21に上記3種類のモードのいずれかへの移行を通知することによって、MEMI/F21を介してメモリ11の消費電力も制御する。なお、PM32は、CPU20に対して消費電力が小さいサスペンドモードに移行させる機能も有し、CPU20に対してサスペンドモードにする通知をし、サスペンドモードを解除するようにしてもよい。
この本実施の形態のプリンタでは、省電力モードとして、省エネモードとコントローラモードの異なる2種類のモードを実施する場合を説明するが、その他の異なる種類の省電力モードを実行可能にした場合、それらのモードについても後述の処理を実施できる。
上記メモリ11の消費電力の制御は、省エネギーモードに移行すると、PM32がMEMI/F21を介してメモリ11をセルフリフレッシュモードに移行させ、メモリ11は省エネルギーモードに移行前の状態の情報を保存し、省エネルギーモードに移行する。
また、通常動作モード又はコントローラモードに移行する場合、PM32がMEMI/F21を介してメモリ11を通常動作モードに移行させ、メモリ11に対して内部バス34を介してアクセスが可能になる。その際、メモリ11は、省エネルギーモードから通常動作モードに復帰する場合、省エネルギーモードに移行する前の状態の情報に復帰させる。
次に、このプリンタにおける電力供給に関する各モードへの移行の処理について説明する。図2は、図1に示すプリンタにおける電力供給に関する各モードへの移行の遷移図である。
このプリンタにおける電力供給に関する各モードには、プリンタ全体の電力を供給する通常動作モードM1と、プリンタの一部に電力を供給してその他の各部への電力の供給を停止して消費電力を低減する消費電力モードとして、省エネルギーモード(以下「省エネモード」と略称する)M2とコントローラモードM3がある。
まず、このプリンタの電源ボタン(図示を省略)がオンにされると、ASIC10に電源からの電力が供給されて、PM32が通常動作モードM1を設定する。通常動作M1モードの場合、PM32は、CPU20とメモリ11に通常通り電源からの電力を供給する。さらに、パワーオフ領域35の各部(I/F27、記録媒体I/F28、OPEI/F29、HDDI/F30、I/OI/F31)への電力の供給を開始し、ボード電力制御部18、外部電力制御部19によってコントローラボード1内外の各部へも電力を供給する。そして、ASIC10はこのプリンタ全体の制御を開始する。
また、通常動作モードM1になると、PM32がタイマ33を起動し、PF23はタイマ33の時間が通常動作モードM1の設定から予め設定した所定時間を経過しても、ネットワークからこのプリンタ(自局)宛のパケットの受信が無く、かつ、CPU20上で動作しているアプリケーション全てがアイドル状態になった場合、省エネモードM2に移行する。
このプリンタ(自局)宛のパケットの受信が無いことは、PF23のバッファ(後述する図12のバッファ42)からのエンピティフラグで認識できる。
コントローラモードM3の状態時も同様にして、省エネモードM2に移行する。
PM32は、消費電力モードを省エネモードに移行すると、CPU20とメモリ11を低消費電力モードに設定する。さらに、ASIC10の内部のパワーオフ領域35内の各部への電力の供給を停止し、ボード電力制御部18によって記録媒体15、OP16、及びHDD17への電源からの電力の供給を停止し、外部電力制御部19によってコントローラボード1外の印刷部2を含む各部(印刷部2以外の図示を省略)への電源からの電力の供給を停止する。なお、PHY12とPHYクロック生成部13へはプリンタの電源が投入後は常時給電を行う。
ネットワークからPHY12を介してMAC22がパケットを受信すると、MAC22はそのパケットをPF23へ出力し、PF23はそのパケットの内容を調べて、自プリンタ宛(自局宛)でないパケットは破棄し、自局宛のパケットのうち、PE24で処理すべきパケットの場合はPE24へ送る。
PE24で処理すべきパケットには、例えば、IPパケットのアープリクエスト(Address Resolution Protocol Request、以下「ARPリクエスト」と略称する)がある。上記アープ(ARP)とは、アドレス解決プロトコルである。
PE24は、ARPリクエストを受信すると、そのARPリクエストの内容に基づいてアープレスポンス(ARP Response、以下「ARPレスポンス」と略称する)のパケットを生成して、そのアープレスポンスパケットをSEL25、MAC22を経由して、PHY12からネットワークに転送する。
また、上記PE24で処理すべきパケットとして、他には、ホスト側から送信されるパケット到達確認コマンドの「Pingコマンド」等がある。このPingコマンドをホスト側から受信したときには受信確認のためにホストへ返信をする。
まず、省エネモード中に、ネットワークから受信したパケットが非印刷要求のパケットであった場合、PF23はPM32に通知し、PM32は消費電力モードをコントローラモードに設定し、省エネモードからコントローラモードに移行する。消費電力モードがコントローラモードの場合、PM32はCPU20とメモリ11を通常モードに設定する。
さらに、ASIC10の内部のパワーオフ領域35の各部への電源からの電力の供給を停止し、ボード電力制御部18によって記録媒体15、OP16、HDD17への電源からの電力の供給を停止し、外部電力制御部19によって印刷部2を含む各部への電源からの電力の供給を停止する。
上記非印刷要求のパケットには、http(HyperText Transfer
Protocol)、SNMP(Simple Network Management
Protocol)等がある。SNMPは、UDP(User Datagram Protocol)を利用する。
上記SNMPの内容の詳細については、RFC1155,RFC1157、RFC1213を含むIETF(Internet Engineering Task Force)が規定した標準プロトコルの仕様である規格書に記載されているので、その説明を省略する。
RFC1213で規定されているMIB(Management Information Block)情報は自装置の状態を外部に知らせるために公開する情報であり、上記SNMPを使用して外部から取得が可能である。このプリンタの機器情報(MIB情報)はメモリ11に設定する。
通常動作モードからコントローラモード、もしくは省エネモードに移行する前にメモリ11のMIB情報を更新しておけば、通常時のMIB情報をコントローラモード時にアクセス可能となる。
次に、省エネモード中又はコントローラモード中に、ネットワークから受信したパケットが印刷要求のパケットであった場合、PF23はPM32に通知し、PM32は省エネモード又はコントローラモードから通常動作モードに移行するように制御する。
上記印刷要求のパケットには、例えば、LPD(TCP Port 515)、FTP(TCP Port 21)、HPネットワークプリンタ互換プロトコル(TCP Port 9100)(以上の各プロトコルは登録商標)がある。
なお、通常動作モード時に非印刷要求のパケットを受信してもコントローラモードには移行しない。
次に、このプリンタがネットワークから受信するパケットの種類について説明する。
1.イーサネットパケット(「イーサネット」は登録商標)
図3は、イーサネットパケットのフレームフォーマットの構造の説明図である。図4は、イーサネットフレーム内の各フィールドのデータ内容の一例を示す説明図である。
イーサネットパケットは、プリアンブル、宛先MACアドレス、送信元MACアドレス、タイプ、データ、及びFCSからなる。
図4に示すように、プリアンブルは、データ長が64ビット(8バイト)であるフレームの開始を示す情報であり、「10」を交互に入力して最後の2ビットが「11」になる
宛先MACアドレスと送信元MACアドレスは、それぞれパケットの宛先の装置(例えば、このプリンタを含む通信機器)のアドレスとパケットの送り主の装置のアドレスであり、ともにデータ長は48ビット(6バイト)である。上記MAC(Media Access Control)は、IEEE802−1990で規定されている。
宛先MACアドレスには、ネットワーク内の個々の通信機器を特定するユニキャストアドレス、ネットワーク内のブロードキャストドメイン内全体の通信機器を宛先対象とするブロードキャストアドレス、ネットワーク内の所定の通信機器のグループ内の各通信機器を宛先対象とするマルチキャストアドレスがある。
上記ブロードキャストアドレスの場合は、全てのビットが1になる。上記タイプは、0x0800の時はIPv4プロトコルを、0x0806の時はARPプロトコルを、0x86DDの時はIPv6プロトコルを、0x809Bの時はAppleTalkのプロトコルを、0x8037の時はIPX(NetWare)のプロトコルを、0x8191の時はNetBIOS/NetBEUIのプロトコル(上記各プロトコルは登録商標である)をそれぞれ示す。
図5は、上記イーサネットパケットからARPパケットを構成する場合の両フレームの対応関係を示す図である。図5の(a)に示すように、イーサネットパケットは、プリアンブル、宛先MACアドレス、送信元MACアドレス、タイプ、データ、及びFCSからなり、宛先MACアドレスと送信元MACアドレスとタイプがイーサネットヘッダを構成する。上記データは46〜1500バイト長まで指定可能であり、FCSはチェックサムでCRC−32の多項式で生成されたものである。
図5の(b)に示すように、上記イーサネットパケットからARPパケットを構成する場合、ARPパケットにイーサネットパケットのデータを含め、ARPパケット内のオペレーションコードフィールドに、1が格納された場合はARPリクエストパケットを示し、2が格納された場合はARPレスポンスパケットを示す。また、図中波線で示すように先頭にARPプロトコルを示すデータの0x0806を付加しても良い。
2.ARPパケット
以下の説明でIPと記載してある場合はIPv4のことである。図6は、ARPパケットのフォーマットを示す説明図、図7は、ARPパケット内の各フィールドのデータ内容の一例を示す説明図である。
図6に示すように、ARPパケットは、ハードウェアタイプフィールド、プロトコルタイプフィールド、ハードウェアアドレス長(HLEN)フィールド、プロトコルアドレス長(PLEN)フィールド、オペレーションコードフィールド、送信元ハードウェアアドレスフィールド、送信元IPアドレスフィールド、宛先ハードウェアアドレスフィールド、宛先IPアドレスフィールドからなる。
図7に示すように、ハードウェアタイプフィールドは、16ビットのデータ長であり、イーサネットパケットを示す場合は0x0001が格納される。プロトコルタイプフィールドは、16ビットのデータ長であり、IPアドレスを使用し、IPv4プロトコルを示す場合は0x0800が格納される。
ハードウェアアドレス長フィールドは、8ビットのデータ長であり、MACアドレスを示す6バイトのデータが格納される。例えば、0x06等である。プロトコルアドレス長フィールドは、8ビットのデータ長であり、IPv4プロトコルを示す場合、0x04が格納される。
オペレーションコードフィールドは、16ビットのデータ長であり、1の時はARPリクエスト、2の時はARPリプライを示す。送信元ハードウェアアドレスフィールド、送信元IPアドレスフィールド、宛先ハードウェアアドレスフィールド、宛先IPアドレスフィールドは、それぞれ48,32,48,32の各データ長であり、それぞれ送信元ハードウェアアドレス、送信元IPアドレス、宛先ハードウェアアドレス、宛先IPアドレスが格納される。
3.IPパケット
図8は、IPパケットのフォーマットを示す説明図、図9は、IPパケット内のIPヘッダの各フィールドのデータ内容の一例を示す説明図である。
図8に示すように、IPパケットはヘッダ部(IPヘッダ)とデータ部とからなり、ヘッダ部はバージョン(Version)フィールド、ヘッダ長(IHL)フィールド、サービスタイプ(Type Of Service)フィールド、パケット長(Total
Length)フィールド、識別子(Identification)フィールド、フラグ(Flags)フィールド、フラグメントオフセット(Flagment Offset)フィールド、生存時間(Time To Live)フィールド、プロトコル番号(Protocol)フィールド、ヘッダチェックサム(Header Checksum)フィールド、送信元IPアドレス(Source Address)フィールド、宛先IPアドレス(Destination Address)フィールドからなる。
さらに、オプションが付く場合があり、オプション(Options)とパディング(Padding)を含めたフィールドのデータ長が32ビットの倍数になるようにパディングする。通常はオプションは使用されない。
図9には、上記各フィールドのデータ長と値例とその備考を示している。とくに、バージョンフィールドは、データ長が4ビットであり、IPv4プロトコルの場合は4が、IPv6プロトコルの場合は6がそれぞれ格納される。ヘッダ長フィールドは、データ長が4ビットであり、IPv4プロトコルの場合は20バイトである。
生存時間フィールドは、ネットワーク上でのパケットの生存時間の値が格納され、ルータを通過するたびにその値が1つずつ減らされ、0になったらパケットは破棄される。その詳細はRFC2200に記載されているので、説明を省略する。
サービスタイプはRFC791、プロトコル番号の詳細については、RFC1700にそれぞれ記載されているので、説明を省略する。
識別子フィールドに格納される値は、フラグメントを復元する際の識別子として使用される。フラグフィールドは、パケットの分割に関する制御を示す値が格納される。
4.TCPパケット
図10は、上記イーサネットパケットからIPパケットとTCPパケットを構成する場合の各フレームの対応関係を示す図である。図11は、TCPパケットのフォーマットを示す説明図である。
図10の(a)に示すように、イーサネットパケットは、プリアンブル、宛先MACアドレス、送信元MACアドレス、タイプ、データ、及びFCSからなり、宛先MACアドレスと送信元MACアドレスとタイプがイーサネットヘッダを構成する。上記データは46〜1500バイト長まで指定可能であり、FCSはチェックサムでCRC−32の多項式で生成されたものである。
図10の(b)に示すように、上記イーサネットパケットからIPパケットを構成する場合、IPパケット内にIPヘッダとイーサネットパケットのデータを含める。また、図中波線で示すように先頭にIPプロトコルを示すデータの0x0800を付加しても良い。
図10の(c)に示すように、上記IPパケットからTCPパケットを構成する場合、TCPパケット内にTCPヘッダとIPパケットのデータを含める。TCPヘッダ内にはコードビットとして、0ビット目にFIN、1ビット目にSYN、2ビット目にRST、3ビット目にPSH、4ビット目にACK、5ビット目にURGを含む。また、図中波線で示すように先頭にTCPプロトコルを示すデータの6を付加しても良い。
図11に示すように、TCPパケットはTCPヘッダ部(TCPヘッダ)とデータ部とからなり、送信元ポート番号(Source Port、16ビット)フィールド、宛先ポート番号(Destination Port、16ビット)フィールド、シーケンス番号(Sequence Number、32ビット)フィールド、確認応答番号(Acknowledgement Number、32ビット)フィールド、データオフセット(Data Offset、4ビット)フィールド、予約(Reserved、6ビット)フィールド、コードビット(6ビット)フィールド、ウインドウサイズ(16ビット)フィールド、チェックサム(Checksum、16ビット)フィールド、緊急ポインタ(Urgent Pointer、16ビット)フィールドからなる。
さらに、オプションとパディングがある場合があり、その後にデータがある。上記送信元ポート番号フィールドと宛先ポート番号フィールドに格納される送信元ポート番号と宛先ポート番号のポート番号は、アプリケーションの識別に使用される。また、ウェルノウンポート番号として標準で決められている番号(RFC1700で公開済)がある。TCPの詳細はRFC793に記載されているので、説明を省略する。
5.UDPパケット
図12は、UDPパケットのフォーマットを示す説明図である。
UDPパケットは、送信元ポート番号(16ビット)フィールド、宛先ポート番号(16ビット)フィールド、セグメント長(16ビット)フィールド、チェックサム(16ビット)フィールドとデータからなる。
上記送信元ポート番号フィールドと宛先ポート番号フィールドに格納される送信元ポート番号と宛先ポート番号のポート番号は、アプリケーションの識別に使用される。また、ウェルノウンポート番号として標準で決められている番号(RFC1700で公開済)がある。UDPの詳細はRFC768に記載されているので、説明を省略する。
次に、上記PF23について説明する。図13は、図1に示すPF23の内部構成例を示すブロック図である。PF23は、アドレスフィルタ40、パターンフィルタ41、バッファ42の3つから構成される。
アドレスフィルタ40には、ユニキャストアドレスとマルチキャストアドレスを登録可能である。また、このプリンタ内のアクセス可能な印刷部2を含む機器のアドレスを設定可能である。
アドレスフィルタ40は、MAC22から入力したパケットのタイプを参照し、そのタイプからパケットの種類を判断して、アクセス可能な機器のパケットのみを通過させてパターンフィルタ41へ送り、その他のパケットは破棄する選別を行う。また、アドレスフィルタ40の設定に関係無く、ブロードキャストパケットは通過させてパターンフィルタ41へ送る。
パターンフィルタ41は、マスク領域と非マスク領域からなる。マスク領域は、パケットの値に関係なく一致条件となる。非マスク領域は、バイト単位で比較データを設定できる。また、マスク領域は、バイト単位で設定できる。
マスク領域のデータ長と非マスク領域のデータ長の合計がパターンフィルタ長になる。例えば、パターンフィルタ長は64バイトである。このパターンフィルタ41には、パターンオフセット1の値を設定できる。そのパターンオフセット1はイーサーネットフレームの開始からのオフセット長になる。
このパターンフィルタ41によるフィルタリングをイーサーネットフレームのタイプから開始する場合は、宛先MACアドレス長と送信元MACアドレスを加算した値が、パターンオフセット1の長さになる。
また、パターンオフセット2は、パターンフィルタ41の先頭からのオフセットを示す。パターンオフセットからの1バイトはビットマスク値によって、ビット毎にフィルタリングが可能である。ビットマスク値で1を設定したビットはマスク領域である。
パターンフィルタ41では、アドレスフィルタ40から受信したパケットが非印刷要求のパケットか印刷要求のパケットかを判断し、非印刷要求のパケットの場合はPM32にその旨を通知し、印刷要求のパケットの場合はPM32にその旨を通知し、上述のフィルタリング後のパケットをバッファ42へ出力する。また、アドレスフィルタ40から受信したパケットがARPリクエストパケットの場合は、SEL25にPE_ON信号を送り、PE24へARPリクエストパケットを出力する。
バッファ42は、パターンフィルタ41でフィルタリングされたパケットを一時的に格納し、内部バス34を介して処理を行う各部へ送信する。また、PF23で受信したパケットが無いことは、PF23のバッファ42が空であることを示す空きフラグであるエンプティフラグ(empty flag)がアクティブになったことでわかる。
パターンフィルタ41にARPリクエストパケットのパターンを設定すると、PE_ON信号をアクティブにすることができる。つまり、ARPリクエストパケットを受信すると、PE_ON信号がアクティブとなって、ARPリプライ応答をPE24が行う。
PE_ON信号がアクティブで無い場合は、PF23の通過後、MEMI/F21を経由してメモリ11に蓄積されて、CPU20で処理する。ARPリクエストパケット以外の印刷要求と非印刷要求のパケットを受信した場合、PE_ON信号はアクティブにしない。
次に、上記PE24について説明する。図14は、上記PE24の内部処理の説明に供するブロック図である。PE24は、パケット解析部50、レジスタ部51、パケット生成部52からなる。
パケット解析部50は、PF23からのARPリクエストパケットを入力する。
ARPリクエストパケットは、宛先MACアドレスフィールド60、SHA61、ARP62、ハードウェアタイプフィールド63、プロトコルフィールド64、MACアドレス長フィールド65、プロトコルアドレス長フィールド66、ARPリクエストフィールド67、SHA68、SIP69、DHA70、DIP71からなる。
パケット解析部50は、ARPリクエストパケット内の要求元ハードウェアアドレス(SHA)フィールド68、要求元IPアドレス(SIP)フィールド69の各値を解析して、レジスタ部51の宛先ハードウェアアドレス(DHA)53に要求元ハードウェアアドレス(SHA)を、宛先IPアドレス(DIP)54に要求元IPアドレス(SIP)をそれぞれ設定する。また、予めCPU20から、レジスタ部51の要求元ハードウェアアドレス(SHA)55に、このプリンタのハードウェアアドレスを設定し、要求元IPアドレス(SIP)56に、このプリンタのIPアドレスを設定しておく。
パケット生成部52では、イーサネットヘッダ80とアープリプライ(ARPReply)パケット81からなるARPレスポンスパケットを生成する。イーサネットヘッダ80は、宛先ハードウェアアドレス(DHA)フィールド82、要求元ハードウェアアドレスフィールド(SHA)83とタイプフィールド84から構成され、レジスタ部51の宛先ハードウェアアドレス(DHA)53から読み出した値をDHA82へ、要求元ハードウェアアドレス(SHA)55から読み出した値をSHA83へそれぞれ設定する。また、タイプフィールド84にはARPパケットを示す0x0806を設定する。
データ部として、ARPリプライパケット81を設定する。
ARPリプライパケット81のハードウェアタイプフィールド85には、イーサネットの場合は1を設定する。プロトコルフィールド86には、TCP/IPを使用するので0x0800を設定する。MACアドレス長フィールド87には、6を設定する。プロトコルアドレス長フィールド88には、IPv4を使用するので4を設定する。OPフィールド89には、ARPリプライを示す2を設定する。
要求元ハードウェアアドレスフィールド90には、レジスタ部51のSHA55の値を、要求元IPアドレスフィールド91には、レジスタ部51のSIP56の値を、宛先ハードウェアアドレスフィールド92には、レジスタ部51のDHA53の値を、宛先IPアドレスフィールド93には、レジスタ部51のDIP54の値をそれぞれ設定する。
イーサネットパケットのFCSはMAC22で自動生成されるので、パケット生成部52では生成する必要はない。パケット生成部52で生成されたARPレスポンスパケットをネットワークへ送信するには、PF23から出力されるPE_ON信号がアクティブになると、SEL25がPE24から出力されたARPレスポンスパケットをMAC22へ送信する。PE_ON信号が非アクティブ時は内部バス34からのデータがMAC25に入力される。
以上のように、パケット生成部52で生成されたARPレスポンスパケットはSEL25、MAC22、PHY12を経由してネットワークへ送信される。
次に、上記PF23におけるTCPパケットのフィルタリング処理の一例を説明する。図15は、PF23におけるフィルタリング処理で通過されるTCPパケットの一例の説明図である。図15の(a)はTCPパケットのフォーマットを示し、図15の(b)に示すように、PF23のパターンフィルタ41には、パターンオフセット1として、宛先MACアドレス長と送信元MACアドレス長を加算した値を設定する。
また、パターンフィルタ41は、TCPパケットの先頭の16ビットのタイプを参照する。上記タイプにはTCPパケットの場合、IPプロトコルを示す0x0800が設定されている。
さらに、TCPパケットのIPヘッダとの比較値を設定する。そのIPヘッダのプロトコル番号にはTCPプロトコル番号を、宛先IPアドレスにはこのプリンタのIPアドレスをそれぞれ設定し、その他のIPヘッダはマスク領域(図中に斜線を施した部分)として設定する。さらに、TCPヘッダとの比較値を設定し、そのTCPヘッダの宛先ポート番号に使用するアプリケーションのポート番号を設定し、TCPヘッダのコードビットとの比較値を設定する。
次に、パターンフィルタ41によってコネクション確立要求であるSYNビットが1のTCPパケットを通過させる設定について説明する。TCPパケットでは、コードビットはTCPヘッダの先頭から14バイト目に存在するので、図15の(b)に示すように、パターンフィルタ41に、パターンオフセット2を13に設定する。
そして、パターンフィルタ41の14バイト目に0x02を設定すると、図15の(c)に示すTCPパケットのコードビットのSYNと比較することができる。さらに、ビットマスク値を0xC2に設定すると、コードビットのSYNが1のTCPパケットを通過させることができる。
その他のTCPパケットのヘッダ領域に対応する部分はマスク領域(図中に斜線を施した部分)とする。さらに、図15の(b)に示す、ビットマスク後の部分もマスク領域(図中に斜線を施した部分)に設定する。
また、httpのアプリケーションの場合は、宛先ポート番号を80に設定し、印刷プロトコルであるLPDの場合は宛先ポート番号を515に設定する。SYN以外のビット、例えば、ACKをフィルタリングする場合は、ビットマスク値を0xD0に変更すればよい。
パターンフィルタ41に印刷プロトコルであるLPDアプリケーションの宛先ポート番号515を設定すると、それに対応するTCPを受信した場合は、印刷要求信号をアクティブにして、PM32に通知する。
次に、上記PF23におけるUDPパケットのフィルタリング処理の一例を説明する。図16は、PF23におけるフィルタリング処理で通過されるUDPパケットの一例の説明図である。図16の(a)はUDPパケットの一例を示し、図16の(b)に示すように、PF23のパターンフィルタ41には、パターンオフセット1として、宛先MACアドレス長と送信元MACアドレス長を加算した値を設定する。また、パターンフィルタ41は、UDPパケットの先頭の16ビットのタイプを参照する。上記タイプにはUDPパケットの場合、IPプロトコルを示す0x0800が設定されている。
さらに、UDPパケットのIPヘッダとの比較値を設定する。そのIPヘッダのプロトコル番号にはUDPプロトコル番号を、宛先IPアドレスにはこのプリンタのIPアドレスをそれぞれ設定し、その他のIPヘッダはマスク領域(図中に斜線を施した部分)として設定する。
さらに、UDPヘッダとの比較値を設定し、そのUDPヘッダの宛先ポート番号に使用するアプリケーションのポート番号を設定し、その他のUDPのヘッダ領域はマスク領域(図中に斜線を施した部分)とする。さらに、UDPヘッダ領域後の部分もマスク領域(図中に斜線を施した部分)に設定する。
そして、SNMPプロトコルを使用したMIB情報にアクセスするアプリケーションのポート番号を宛先ポート番号に設定すれば、MIB情報をアクセスしに来たとき、ポートフィルタでフィルタリング可能になる。
次に、上記PF23におけるARPパケットのフィルタリング処理の一例を説明する。図17は、PF23におけるフィルタリング処理で通過されるARPパケットの一例の説明図である。図17の(a)はARPパケットの一例を示し、図17の(b)に示すように、PF23のパターンフィルタ41には、パターンオフセット1として0を設定して、ARPパケットのフレームの開始から比較できるようにする。
パターンフィルタ41には、まずARPパケットのイーサネットヘッダの比較値を設定する。また、フレームの最初の部分である宛先MACアドレスには、ARPプロトコルはブロードキャストなので、全てのビットに1が設定されている。さらに、送信元MACアドレスはマスク領域(図中に斜線を施した部分)として設定する。
イーサネットヘッダのタイプにはARPプロトコルを示す0x0806が設定されているので、パターンフィルタ41にARPパケットのタイプとの比較値を設定する。その後に、ハードウェアタイプを1、プロトコルフィールドをIP、MACアドレス長を6、プロトコルアドレスはIPv4なので4、オペレーションコードにはARP要求を示す1を設定する。
送信元ハードウェアアドレス(SHA)、送信元IPアドレス(SIP)、宛先ハードウェアアドレス領域(DHA)には、それぞれマスク領域(図中に斜線を施した部分)を設定する。宛先IPアドレス(DIP)にはこのプリンタのIPアドレスを設定し、残りの部分はマスク領域(図中に斜線を施した部分)とする。
以上のように設定すると、このプリンタにARPリクエストパケットがブロードキャストされるとフィルタリングすることができる。パターンフィルタ41に、非印刷プロトコルであるhttpアプリケーションの宛先ポート番号80、SNMPプロトコルを設定すると、それに対応するARPリクエストパケットを受信した場合、非印刷要求信号をアクティブにして、PM32に通知する。パターンフィルタ41にARPパケットの設定をすると、ARPリクエストパケットの受信時にSEL25へのPE_ON信号をアクティブにする。
このプリンタは、ネットワークに対するパケット処理の一部を、CPU処理ではなく、ネットワークパケット処理部で行うので、ネットワークパケット処理部以外のCPUを含む各部の消費電力モードを維持したままにできるので、消費電力をより削減することが可能である。
また、パケットに応じて消費電力モードを変更するので、省エネ効果を上げることができる。さらに、CPUをASICに内蔵するので、消費電力をより削減することができる。
(実施の形態2)
図18は、実施の形態2の情報処理装置のプリンタの制御を司るコントローラボード1801と印刷部2からなる機能構成を示すブロック図である。
このプリンタのコントローラボード1801は、実施の形態1と同様に、ASIC1810、DDR−SDRAMを含むメモリ11、ネットワークとの間で各種のパケットの送受信をするネットワーク用のPHY12、PHYクロック生成部13、ASICクロック生成部14、記録媒体15、OP16、ハードディスク装置(HDD)17、ボード電力制御部18、外部電力制御部19、不揮発性メモリ(RAM)36、プログラムとデータが格納されている第1ROM37、MACアドレスが格納されている第2ROM38を搭載している。
ASIC1810には、実施の形態1と同様に、主制御部であるCPU20、MEMI/F21、MAC22、PF1823、PE1824、セレクタ(SEL)25を搭載している。ここで、本実施の形態では、PF1823、PE1824が実施の形態1と異なり、他の構成については実施の形態1と同様である。
PF1823は、ネットワークからPHY12を介してMAC22が受信したパケットの内容を調べて、自プリンタ宛(自局宛)でないパケットは破棄し、自局宛のパケットは、PE1824で処理すべきパケットの場合はPE1824へ送る。
PE1824で処理すべきパケットには、例えば、IPパケットのアープリクエスト(Address Resolution Protocol Request、以下「ARPリクエスト」と略称する)がある。上記アープ(ARP)とは、アドレス解決プロトコルである。
PE1824は、ARPリクエストを受信すると、そのARPリクエストの内容に基づいてARPレスポンスのパケットを生成して、そのアープレスポンスパケットをSEL25、MAC22を経由して、PHY12からネットワークに転送する。
また、上記PE1824で処理すべきパケットとして、他には、ホスト側から送信されるパケット到達確認コマンドの「PINGコマンド」等がある。このPINGコマンドをホスト側から受信したときには受信確認のためにホストへ返信をする。
プリンタがネットワークから受信するイーサネットフレーム、ARPパケット、IPパケット、TCPパケット、UDPパケットのフォーマットについては実施の形態1と同様である。本実施の形態では、さらに、ICMPパケットを受信する。
図19は、イーサネットフレームにおけるIPパケットとICMPパケットのフォーマットを示す図である。図19の(a)に示すように、イーサネットフレームは、プリアンブル、宛先MACアドレス、送信元MACアドレス、タイプ、データ、及びFCSからなり、宛先MACアドレスと送信元MACアドレスとタイプがイーサネットヘッダを構成する。上記データは46〜1500バイト長まで指定可能であり、FCSはチェックサムでCRC−32の多項式で生成されたものである。
IPパケットを構成する場合、図19の(b)に示すように、上記イーサネットフレームのデータに、IPヘッダとデータを含める。また、図中波線で示すように、イーサネットヘッダのタイプは、IPプロトコルを示すデータの0x0800を示している。
ICMPパケットを構成する場合、図19の(c)に示すように、上記IPパケットのデータの部分にICPMパケットをカプセル化しており、ICMPパケットのタイプとICMPヘッダとデータを含める。そのタイプは、ICMPエコーリクエスト(エコー要求)パケットの場合は「8」であり、ICMPエコーリプライ(エコー応答)パケットの場合は「0」である。また、ICMPヘッダ内には、ICMPエコーリクエストパケットとICMPエコーリプライパケットにおけるコードビットとして、常に「0」が格納される。さらに、データは任意の長さであるが、通常は64バイトのデータ長である。また、図中波線で示すように、IPヘッダのプロトコルは、ICMPプロトコルを示すデータの1を示している。
図20は、ICMPエコーリクエストとICMPエコーリプライのパケットのフォーマットを示す説明図である。ICMPエコーリクエストとICMPエコーリプライのパケットは、メッセージタイプフィールド、コードフィールド、チェックサムフィールド、識別子フィールド、シーケンス番号フィールドとデータからなる。
ICMPエコーパケットは、公知記述なのでその詳細な説明は省略するが、メッセージタイプフィールドには、上述したICMPエコーリクエストパケットの場合は「8」を、ICMPエコーリプライパケットの場合は「0」を格納する領域である。コードフィールドには、上述したように、ICMPエコーリクエストパケットとICMPエコーリプライパケットの場合は常に「0」を格納する領域である。
次に、上記PF1823について説明する。図21は、図18に示すPF1823の内部構成例を示すブロック図である。PF1823は、アドレスフィルタ2140、パターンフィルタ2141、バッファ42の3つから構成される。
アドレスフィルタ2140には、ユニキャストアドレスとマルチキャストアドレスを登録可能である。また、このプリンタ内のアクセス可能な印刷部2を含む機器のアドレスを設定可能である。
アドレスフィルタ2140は、MAC22から入力したパケットのタイプを参照し、そのタイプからパケットの種類を判断して、アクセス可能な機器のパケットのみを通過させてパターンフィルタ2141へ送り、その他のパケットは破棄する選別を行う。本実施の形態のアドレスフィルタ2140では、実施の形態1のアドレスフィルタ40で判断するパケットの種類の他、パケットの種類としてICMPパケットか否かをパケットのタイプから判断する。また、アドレスフィルタ2140の設定に関係無く、ブロードキャストパケットは通過させてパターンフィルタ2141へ送る。
パターンフィルタ2141は、実施の形態1と同様に、マスク領域と非マスク領域からなる。このパターンフィルタ2141による処理は、実施の形態1と同様に行われる。パターンフィルタ2141では、実施の形態1と同様に、アドレスフィルタ2140から受信したパケットが非印刷要求のパケットか印刷要求のパケットかを判断するが、本実施の形態では、受信したパケットがICMPパケットである場合には、非印刷要求であると判断する。バッファ42は、実施の形態1と同様の機能を有する。
次に、上記PE1824について説明する。ARPパケットのフィルタリングをする場合のPE1824における内部処理については実施の形態1と同様である。すなわち、PE1824は、パケット解析部50、レジスタ部51、パケット生成部52からなり、それぞれの機能は実施の形態1と同様である。
次に、上記PF1823におけるTCPパケットのフィルタリング処理の一例を説明する。図22は、PF1823におけるフィルタリング処理で通過されるTCPパケットの一例の説明図である。図22の(a)はTCPパケットのネットワークフレームのフォーマットを示し、図22の(b)に示すように、PF1823のパターンフィルタ2141には、パターンオフセット1として、宛先MACアドレス長と送信元MACアドレス長を加算した値を設定する。
また、パターンフィルタ41は、TCPパケットの先頭の16ビットのタイプを参照する。上記タイプにはTCPパケットの場合、先頭の16ビットにはIPプロトコルを示す0x0800が設定されている。
さらに、TCPパケットのIPヘッダとの比較値を設定する。そのIPヘッダのバージョン(Ver)にはIPv4の4を、ヘッダ長には5を、プロトコル番号にはTCPプロトコル番号を、宛先IPアドレスにはこのプリンタのIPアドレス(自局アドレス)をそれぞれ設定し、その他のIPヘッダはマスク領域(図中に斜線を施した部分)として設定する。
さらに、TCPヘッダとの比較値を設定し、そのTCPヘッダの宛先ポート番号に使用するアプリケーションのポート番号を設定し、TCPヘッダのコードビットとの比較値を設定する。
次に、パターンフィルタ2141によってコネクション確立要求であるSYNビットが1のTCPパケットを通過させる設定について説明する。TCPパケットでは、コードビットはTCPヘッダの先頭から14バイト目に存在するので、図22の(b)に示すように、パターンフィルタ2141に、パターンオフセット2を13に設定する。
そして、パターンフィルタ41の14バイト目に0x02を設定すると、図22の(c)に示すTCPパケットのコードビットのSYNと比較することができる。
さらに、ビットマスク値を0xC2に設定すると、コードビットのSYNが1のTCPパケットを通過させることができる。
その他のTCPパケットのヘッダ領域に対応する部分はマスク領域(図中に斜線を施した部分)とする。さらに、図22の(b)に示す、ビットマスク後の部分もマスク領域(図中に斜線を施した部分)に設定する。また、httpのアプリケーションの場合は、宛先ポート番号を80に設定し、印刷プロトコルであるLPDの場合は宛先ポート番号を515に設定する。SYN以外のビット、例えば、ACKをフィルタリングする場合は、ビットマスク値を0xD0に変更すればよい。
パターンフィルタ2141に印刷プロトコルであるLPDアプリケーションの宛先ポート番号515を設定すると、それに対応するTCPを受信した場合は、印刷要求信号をアクティブにして、PM32に通知する。
次に、上記PF1823におけるUDPパケットのフィルタリング処理の一例を説明する。図23は、PF1823におけるフィルタリング処理で通過されるUDPパケットの一例の説明図である。
図23の(a)はUDPパケットのネットワークフレームのフォーマットの一例を示し、図23の(b)に示すように、PF23のパターンフィルタ2141には、パターンオフセット1として、宛先MACアドレス長と送信元MACアドレス長を加算した値を設定する。
また、パターンフィルタ2141は、UDPパケットの先頭の16ビットのタイプを参照する。上記タイプにはUDPパケットの場合、先頭の16ビットにはIPプロトコルを示す0x0800が設定されている。
さらに、UDPパケットのIPヘッダとの比較値を設定する。そのIPヘッダのバージョン(Ver)にはIPv4の4を、ヘッダ長には5を、プロトコル番号にはUDPプロトコル番号を、宛先IPアドレスにはこのプリンタのIPアドレス(自局アドレス)をそれぞれ設定し、その他のIPヘッダはマスク領域(図中に斜線を施した部分)として設定する。
さらに、UDPヘッダとの比較値を設定し、そのUDPヘッダの宛先ポート番号に使用するアプリケーションのポート番号を設定し、その他のUDPのヘッダ領域はマスク領域(図中に斜線を施した部分)とする。
さらに、UDPヘッダ領域後の部分もマスク領域(図中に斜線を施した部分)に設定する。
そして、SNMPプロトコルを使用したMIB情報にアクセスするアプリケーションのポート番号を宛先ポート番号に設定すれば、MIB情報をアクセスしに来たとき、ポートフィルタでフィルタリング可能になる。
なお、PF1823におけるフィルタリング処理で通過されるARPパケットの例は実施の形態1と同様である。
次に、PING応答する場合の上記PE1824の処理について説明する。図24は、ICMPパケットのフィルタリングをする場合のPE1824における内部処理の説明に供するブロック図であり、実施の形態1の図14と共通する部分には同一符号を付している。
この処理の場合のPE1824の内部構成は、パケット解析部2450、レジスタ部51、パケット生成部2552からなる。ここで、レジスタ部51については実施の形態1と同様である。パケット解析部2450には、ここでは、PF1823からのICMPエコーリクエストパケットが入力される。
ICMPエコーリクエストパケットは、100〜118の各フィールドからなる。
パケット解析部2450は、ICMPエコーリクエストパケット内のイーサネットヘッダのフィールド101の要求元ハードウェアアドレス(SHA)と、IPヘッダのフィールド111の要求元IPアドレス(SIP)の各値を解析して、レジスタ部51の宛先ハードウェアアドレス(DHA)53に要求元ハードウェアアドレス(SHA)を、宛先IPアドレス(DIP)54に要求元IPアドレス(SIP)をそれぞれ設定する。
IPデータのタイプのフィールド113には、ICMPエコーリクエストパケットを示す「8」が格納されている。
また、予めCPU20から、レジスタ部51の要求元ハードウェアアドレス(SHA)55に、このプリンタのハードウェアアドレスを設定し、要求元IPアドレス(SIP)56に、このプリンタのIPアドレスを設定しておく。
パケット生成部2452では、ICMPエコーリプライパケットを作成する。まず、そのイーサネットヘッダの作成では、レジスタ部51のDHA53に設定した要求元ハードウェアアドレス(SHA)と、SHA55に設定したハードウェアアドレスを、パケット生成部52のICMPエコーリプライパケットのイーサネットヘッダのDHAのフィールド120と、SHAのフィールド121にそれぞれ設定する。
また、ICMPエコーリクエストパケットのタイプのフィールド102のIPを示す0x800を、パケット生成部2452のICMPエコーリプライパケットのフィールド122にコピーする。
次に、パケット生成部2452のICMPエコーリプライパケットのIPヘッダを作成する。まず、パケット解析部2450のICMPエコーリクエストパケットのフィールド103〜109の各データを、パケット生成部2452のICMPエコーリプライパケットのIPヘッダの各フィールド123〜127,129にそれぞれコピーする。また、フィールド128のTTLには255を設定する。さらに、上記コピー後にチェックサムを計算し、ICMPエコーリプライパケットのフィールド130に設定する。
上記チェックサムの計算は公知技術(例えば、オーム社発行の書籍「マスタリングTCP/IP 応用編」で記載されている1の補数演算方法)を使用すればよい。
さらに、SIPのフィールド131には、レジスタ部51のSIP56のデータを設定し、DIPのフィールド132には、レジスタ部51のDIP54のデータを設定する。
次に、パケット生成部2452のICMPエコーリプライパケットのIPデータを作成する。まず、パケット生成部2452のICMPエコーリプライパケットのタイプのフィールド133には、ICMPエコーリプライパケットを示す「0」を設定する。
また、パケット生成部52のICMPエコーリプライパケットのコードのフィールド134は「0」を設定し、IPデータのチェックサムを計算してチェックサム(CheckSUM)のフィールド135に設定する。上記チェックサムの計算は公知技術(例えば、オーム社発行の書籍「マスタリングTCP/IP 応用編」で記載されている1の補数演算方法)を使用すればよい。
さらに、パケット解析部2450のICMPエコーリクエストパケットのフィールド116の識別子のデータを、パケット生成部2452のICMPエコーリプライパケットのフィールド136にコピーし、パケット解析部2450のICMPエコーリクエストパケットのフィールド117のシーケンス番号のデータを、パケット生成部2452のICMPエコーリプライパケットのフィールド137にコピーし、パケット解析部2450のICMPエコーリクエストパケットのフィールド118のデータを、パケット生成部2452のICMPエコーリプライパケットのフィールド138にコピーする。このように、プリンタの本体のCPU、メモリを使用せずに、ICMPエコーリプライパケットの生成と応答が可能になる。
次に、上記PF1823におけるICMPパケットのフィルタリング処理の一例を説明する。図25は、PF1823のフィルタリング処理で通過されるICMPパケットの一例の説明図である。
図25の(a)は、ICMPエコーリクエストパケットのネットワークフレームのフォーマットを示し、そのデータ中のIPヘッダのフォーマットは、図25の(b)に示すように、バージョン(Ver),ヘッダ長,サービスタイプ,パケット長,識別子,フラグ,フラグメント,生存時間,プロトコル(この場合は、ICMPを示す「01」),ヘッダチェックサム,送信元IPアドレス,宛先IPアドレスの各値をそれぞれ格納する各フィールドからなる。また、IPデータ内のフォーマットは、図25の(c)に示すように、タイプ(この場合は、ICMPエコーリクエストパケットを示すタイプ=8),コード(常に0),チェックサム,識別子,シーケンス番号,ICMPデータをそれぞれ格納する各フィールドからなる。上記タイプは、ICMPエコーリプライパケットを示す場合は0である。
PF1823のパターンフィルタ2141には、図25の(d)に示すように、パターンオフセット1として、宛先MACアドレスのフィールド長と送信元MACアドレスのフィールド長を加算した値を設定する。
また、パターンフィルタ2141は、パターンオフセット1の後の先頭の16ビットに、図25の(a)に示したイーサネットフレームのイーサネットヘッダのタイプに格納されたIPプロトコルを示す「0x0800」を設定する。また、図25の(b)に示したイーサネットフレームのIPヘッダのバージョン(Ver)のフィールドに格納されたIPv4を示す「4」と、上記IPヘッダのヘッダ長のフィールドに格納された「5」を設定する。
さらに、プロトコル番号にはICMPプロトコル番号を、宛先IPアドレスには自局アドレスとしてこのプリンタのIPアドレスを設定し、ICMPのタイプにはICMPエコーリクエストパケットを示す「8」を設定し、その他のIPヘッダはマスク領域(図中に斜線を施した部分)として設定する。
ただし、IPヘッダのパケット長の比較値lenを92バイト以下に設定する。
その92バイトは、ICMPデータのサイズが64バイト、IPヘッダ長が20バイトの場合である。
以上にように設定すれば、PF23でネットワークからのパケットデータを監視することにより、PF1823が64バイト以下のICMPパケットデータを受信した場合、そのパケットがPINGによるICMPエコーリクエストパケットであることを検知するとPE1824に通知可能になる。
そして、省電力モードを維持したままネットワークを介して上記ICMPエコーリクエストパケットに対するICMPエコーリプライパケットを出力し、上記ICMPエコーリクエストパケットの送信元のホスト装置に対してPING応答が可能となる。
また、PF1823は、ICMPパケットデータのサイズが64バイトを超える場合は、非印刷要求パケットを受信したことをPM32に通知して、バッファ42に蓄積する。
この場合は他の省電力モードに遷移して処理を行うことになる。なお、ICMPパケットデータのサイズは通常64バイトなので、ハードウエアを簡略化するために、ICMPパケットデータが64の時のみPINGパケットであることを検知するように回路設計をしても、実用上問題がない。
次に、宛先IPアドレスがアドレスフィルタに登録されたマルチキャストアドレスの場合について説明する。登録されたマルチキャストアドレスの場合、登録された個数分のフィルタを用意して、宛先IPアドレスに登録したマルチキャストアドレスを設定すればよい。また、宛先IPアドレスの設定以外は上記の設定と同じである。
パターンフィルタ2141に、ICMPエコーリクエストパケット(ICMPデータサイズが64バイト以下)の設定をすると、ICMPエコーリクエストパケット(ICMPデータサイズが64バイト以下)パケット受信時にPE_ON信号がアクティブになる。
上述したパケット生成部2452で生成されたパケットを送信するには、PF1823から出力されるPE_ON信号がアクティブになると、セレクタ(SEL)25はPE1824からの出力をMAC22に送信する。上記PE_ON信号が非アクティブ時は、内部バス34からのデータがMAC22に入力される。
まず、PF1823のパターンフィルタ2141に、ARPリクエストパケットのパターンを設定すると、PE_ON信号をアクティブにすることができる。つまり、ARPリクエストパケットを受信すると、PE_ON信号がアクティブとなって、PE1824がARPリプライパケットを生成し、それをARPリクエストパケットの送信元の装置へ出力する。
また、ICMPエコーリクエストパケット(ICMPデータサイズが64バイト以下)を受信すると、PE_ON信号がアクティブになって、PE24がICMPエコーリプライパケットを生成し、それをICMPエコーリクエストパケットの送信元の装置へ出力する。
一方、PE_ON信号がアクティブで無い場合、PF1823の通過後、MEMI/F21を経由してメモリ11に蓄積し、CPU20で処理する。
また、印刷要求パケット、ARPリクエストパケット、ICMPエコーリクエストパケット(ICMPデータサイズが64バイト以下)以外の非印刷要求パケットを受信した場合、PE_ON信号はアクティブにならない。
以上のように、パケット生成部2452で生成された応答用のイーサネットパケットはセレクタ(SEL)25、MAC22、PHY12を経由して上記のようなリクエストパケットの送信元のホスト装置へ送信される。
このようにして、受信したパケットが所定の情報の返送を要求している場合、プリンタのCPUとメモリを使用しないで、受信したパケットの情報の一部を組み込んで応答用のパケットを作成して、応答処理を行うので、プリンタの本体のCPUとメモリの消費電力を削減できる。
また、受信したパケットのサイズが所定サイズ以下の場合に応答するので、プリンタのハードウェアコストを小さくできるため、消費電力を削減し、コストを低減できる。さらに、コントローラモードと省エネエネルギーモード中は、プリンタの本体のCPUとメモリを使用しないで、受信したパケットの情報の一部を組み込んで応答用のパケットを作成して、応答処理を行うので、プリンタの本体のCPUとメモリの消費電力を削減できる。
また、パケットの識別子の生成をプリンタのCPUとメモリを使用しないで行えるので、消費電力の削減が可能である。さらに、パケットのシーケンス番号の生成をプリンタのCPUとメモリを使用しないで行えるので、消費電力の削減が可能である。さらにまた、パケットのICMPヘッダの生成をプリンタのCPUとメモリを使用しないで行えるので、消費電力の削減が可能である。
このプリンタは、ネットワークに対するパケット処理の一部を、CPU処理ではなく、ネットワークパケット処理部で行うので、ネットワークパケット処理部以外のCPUを含む各部の消電力モードを維持したままにできるので、消費電力をより削減することが可能である。また、パケットに応じて消電力モードを変更するので、省エネ効果を上げることができる。
さらに、CPUをASICに内蔵するので、消費電力をより削減することができる。
なお、上述の実施の形態では、省電力モードとして、省エネモードとコントローラモードを有するプリンタについて説明したが、プリンタを含む情報処理装置では、省電力モードとして、省エネモードとコントローラモード以外にも多様なモードが存在するが、この発明は、それらのモードを実施する情報処理装置についても上述と同様にして実施することができる。
(実施の形態3)
図26は、実施の形態3の情報処理装置のプリンタの制御を司るコントローラボード2601と印刷部2からなる機能構成を示すブロック図である。
このプリンタのコントローラボード2601は、実施の形態1と同様に、ASIC2610、DDR−SDRAMを含むメモリ11、ネットワークとの間で各種のパケットの送受信をするネットワーク用のPHY12、PHYクロック生成部13、ASICクロック生成部14、記録媒体15、OP16、ハードディスク装置(HDD)17、ボード電力制御部18、外部電力制御部19、不揮発性メモリ(RAM)36、プログラムとデータが格納されている第1ROM37、MACアドレスが格納されている第2ROM38を搭載している。
ASIC2610には、実施の形態1および2と同様に、主制御部であるCPU20、MEMI/F21、MAC22、PF1823、PE1824、セレクタ(SEL)25を搭載している。ここで、本実施の形態では、PF1823、PE1824が実施の形態1および2と異なり、他の構成については実施の形態1および2と同様である。
PF2623は、ネットワークからPHY12を介してMAC22が受信したパケットの内容を調べて、自プリンタ宛(自局宛)でないパケットは破棄し、自局宛のパケットは、PE2624で処理すべきパケットの場合はPE2624へ送る。
すなわち、PF2623のパターンフィルタでは、実施の形態1および2と同様に、アドレスフィルタから受信したパケットが非印刷要求のパケットか印刷要求のパケットかを判断するが、本実施の形態では、受信したパケットがSNMPプロトコルのMIB(Management Information Block)要求のパケットである場合には、非印刷要求であると判断する。
本実施の形態では、上記PE2624で処理すべきパケットとして、実施の形態1および2で説明した種類のパケットの他に、MIB要求のパケットがある。PF2623のPE2624は、MIB要求のパケットをホスト側から受信したときには受信確認のためにホストへ返信をする。
次に、上記PF2623におけるTCPパケットのフィルタリング処理の一例を説明する。図27は、PF2623におけるフィルタリング処理で通過されるパケットの一例の説明図である。
PF2623のパターンフィルタ(図示せず)には、図27に示すパターンオフセット1として、宛先MACアドレス長と送信元MACアドレス長を加算した値を設定する。また、PF2623のパターンフィルタは、パケットの先頭の16ビットのタイプを参照する。上記タイプにはTCPパケットの場合、先頭の16ビットにはIPプロトコルを示す0x0800が設定されている。
イーサーネットヘッダのタイプの次のフィールドには、IPヘッダの比較値を設定される。IPヘッダのバージョンにはIPv4の4を、ヘッダ長には5を、プロトコル番号にはUDPプロトコル番号を、宛先IPアドレスにはMFP/LPのIPアドレスが設定される。その他のIPヘッダはマスク領域として設定する。
次のフィールドには、UDPヘッダの比較値を設定する。UDPヘッダの宛先ポート番号に使用するアプリケーションのポート番号を設定する。MIB応答の場合は、SNMPプロトコルを使用するのでSNMPのポート番号である161を設定する。その他UDPのヘッダ領域はマスク領域とする。
UDPデータ部にはMIB応答に必要なMIBデータを設定する。設定するMIBデータはSNMPv2の以下の値である。
mib−2.25.3.2.1.5.1
mib−2.25.3.5.1.1.1
mib−2.25.3.5.1.2.1
MIB要求のリクエストIDのデータ長は可変長なのでリクエストID毎に4通りのパターン設定する。MIB要求のリクエストID以外のMIBデータをパターンフィルタに設定し、リクエストID部をマスク領域に設定する。
図28は、PE2623の内部構造を示すブロック図である。PE2623は、図28に示すように、パケット解析部2850と、ARPリプライパケット生成部2853と、PINGリプライパケット生成部2854と、IPパケット生成部2852と、セレクタ2859と、イーサフレームヘッダ生成部2860とを備えている。
ARPリプライパケット生成部2853は、ARPリプライパケットを生成するものであり、具体的には、実施の形態1のパケット生成部52と同様の機能を有する。PINGリプライパケット生成部2854は、PINGパケットを生成するものであり、具体的には、実施の形態2のパケット生成部と同様の機能を有する。
パケット解析部2850は、PF2623からのMIB要求パケットのデータを入力する。図29−1〜図29−4は、MIB要求パケットの詳細を示す説明図である。リクエストID長が1の場合のMIB要求パケットを図29−1、リクエストID長が2の場合のMIB要求パケットを図29−2、リクエストID長が3の場合のMIB要求パケットを図29−3、リクエストID長が4の場合のMIB要求パケットを図29−4にそれぞれ示す。リクエストID部(図の斜線部)をマスク領域である。
パケット解析部2850では、このような4パターンのMIB要求を設定することで、4種類のリクエストID長に対応したMIB要求パケットをフィルタで検出することができる。
PF2623から転送されたパケットはパケット解析部2850によって解析されて、UDPヘッダの送信元ポート番号、リクエストIDをIPパケット生成部2852の識別データ生成部2855に転送する。また、イーサーネットヘッダの送信元ハードウエアアドレス(SHA)をレジスタ部2851のDHAに、IPヘッダの送信元IPアドレス(SIP)をレジスタ部2851のDIPに設定しておく。
ここで、IPパケット生成部2852は、MIB応答のIPパケットを生成するものであり、識別データ生成部2855と、MIB応答パケット生成部2856と、UDPヘッダ生成部2857と、IPヘッダ生成部2858を備えている。
識別データ生成部2855は、UDPヘッダの送信元ポート番号、リクエストIDを受信して、UDPヘッダの送信元ポート番号、リクエストIDの型、長さ(len_reqed)、REQIDをMIB応答パケット生成部2856に転送する。
MIB応答パケット生成部2856は、UDPデータ部となるMIB応答パケットを生成するものである。図30は、MIB応答パケット生成部2856の詳細な処理を示す説明図である。
MIB応答パケット生成部2856は、SNMPメッセージ1に、型、長さ、SNMP Version、コミュニティ名、PDU TYPEを設定する。MIB応答パケット生成部2856は、MIB応答パケットのリクエストIDは可変長なので、長さの初期値は4dを設定しておく。
MIB応答パケット生成部2856は、PDU TYPEの型には、MIB応答であるため、GETリプライである旨を示すA2を設定する。MIB応答パケット生成部2856は、PDU TYPEの長さの初期値として0aを設定しておく。
また、MIB応答パケット生成部2856は、識別データ生成部2855から受信したリクエストIDの型、長さ(len_reqed)、REQIDを設定する。
MIB応答パケット生成部2856は、PDUのエラーステータス、エラーインディックスについてはMIB要求のフィルタ設定と同じ値を設定する。
また、MIB応答パケット生成部2856は、以下に示すPDUのオブジェクトデータをCPUで設定する。
データ1:mib−2.25.3.2.1.5.1
データ2:mib−2.25.3.5.1.1.1
データ3:mib−2.25.3.5.1.2.1
省エネモード中にMIB要求パケットを受信すると、最初のMIB応答時のみコントローラモードに移行してCPUがオブジェクトデータの設定を行う。CPUはオブジェクトデータのデータ1,2,3の型と長さ、オブジェクトデータ全体の型と長さ(len_objid)も設定する。
次に、MIB応答パケット生成部2856は、MIBデータのデータ長の算出を行う。CPUがオブジェクトデータ全体の長さ(len_objid)を設定すると、ADD3においてオブジェクトデータ全体の長さ(len_objid)とリクエストIDの長さ(len_reqed)の合計がlen3と計算する。次に、MIB応答パケット生成部2856は、ADD2において、len3とPDU TYPEの長さの初期値(0a)の合計がlen2と計算するとともに、len2はPDU TYPEの長さに再設定する。さらに、MIB応答パケット生成部2856は、ADD3において、SNMPメッセージ1の長さの初期値(4d)とlen2の合計がlen1と計算するとともに、SNMPメッセージ1の長さにlen1を再設定する。
以上にようにして、MIB応答パケット生成部2856は、MIB応答パケットを生成する。ここで、MIB応答パケットはSNMPのデータであり、上述したようにUDPデータ部となる。
UDPヘッダ生成部2857は、UDPデータ部としてのMIB応答パケットにUDPヘッダを付加するものである。IPヘッダ生成部2858は、UDPヘッダが付加されたMIB応答パケットにさらにIPヘッダを付加してMIB応答のIPパケットを完成させ、IPパケットをセレクタ2859に送出するものである。
図31は、MIB応答のIPパケットを示す説明図である。UDPヘッダ生成部2857は、図31に示すように、送信元ポート番号(SPN)、宛先ポート番号(DPN)、セグメント長(len)、チェックサム(SUM)を生成し、MIB応答パケットのUDPヘッダとして設定する。UDPヘッダ生成部2857は、送信元ポート番号(SPN)にSNMPを示す161を設定する。UDPヘッダ生成部2857は、宛先ポート番号(DPN)に識別データ生成部2855より取得した宛先ポート番号を設定する。UDPヘッダ生成部2857は、セグメント長(len)に、SNMPデータであるMIB応答パケット長(len1+1)を設定する。UDPヘッダ生成部2857は、チェックサム(SUM)にヘッダ、UDPデータであるMIB応答パケットの1の補数を16ビットで示す値を設定する。
IPヘッダ生成部2858は、IPパケットのIPヘッダを生成し、上述のようにUDPヘッダが設定されたMIB応答パケットにIPヘッダを付加する。
IPヘッダ生成部2858は、予め、MFP/LPの自局IPアドレスをレジスタ部2851のSIPに、MFP/LPの自局のハードウエアアドレスをレジスタ部2851のSHAにそれぞれ設定しておく。また、IPヘッダ生成部2858は、レジスタ部2851のTYPEにIPを示す0x800を予め設定しておく。
そして、IPヘッダ生成部2858は、IPヘッドのバージョンには4、ヘッダ長には5を設定する。また、IPヘッダ生成部2858は、IPヘッダのサービスタイプ(TOS)には0を設定する。IPヘッダ生成部2858は、IPヘッドのパケット長(len)に、IPヘッダ長とUDPヘッダ長とUDPデータ長の和を設定する。IPヘッダ生成部2858は、送信元IPアドレス(SIP)はレジスタ部のSIPから、宛先IPアドレス(DIP)はレジスタ部のDIPから設定する。
IPヘッダ生成部2858は、IPヘッダの識別子(ID)に、識別データ生成部2855で生成した識別子を設定する。識別子(ID)は、IPパケットを送信する度に識別データ生成部2855によって新たに生成する。また、パケット解析部2850からのIPのIDを識別データ生成部2855に転送して、IPヘッダ生成部2858で識別子(ID)として使用してもよい。さらに、IPヘッダ生成部2858は、識別子(ID)をユニークに生成することもできる。例えば、電源ON時の初期値を0とし、新識別子(ID)=旧識別子(ID)+1というように生成しても良い。
IPヘッダ生成部2858は、フラグに分割不可、後続フラグメント無しを設定して、フラグメントオフセットは0に設定する。IPヘッダ生成部2858は、生存時間に最大値の255を設定する。IPヘッダ生成部2858は、プロトコルにUDPを示す値である17を設定する。IPヘッダ生成部2858は、ヘッダチェックサム(SUM)にIPヘッダとデータのチェックサムを計算する。なお、ヘッダのオプションは生成しない。
セレクタ2859は、ARPリプライパケット生成部2858から送出されるARPリプライパケット、PINGリプライパケット生成部2854から送出されるPINGリプライパケット、IPパケット生成部2852から送出されるIPパケットのいずれかを選択してイーサフレームヘッダ生成部2860に送出するものである。MIB要求を受信してMIB応答を行う場合には、セレクタ2859で、IPパケット生成部2852から送出されるIPパケットを選択する。
イーサフレームヘッダ生成部2860は、レジスタ部2851に設定してあるDHAから宛先MACアドレス、SHAから送信元MACアドレス、TYPEからタイプを取得してIPパケットに付加することによりイーサフレームヘッダを生成する。
イーサネットパケットのFCSはMAC22で自動生成されるので、イーサフレームヘッダ生成部2860により生成する必要はない。
省エネモード中にMIB要求を受信すると、最初のMIB応答時のみコントローラモードに移行するので、最初のMIB応答はコントローラモードで行われ、PM32からセレクタ(SEL)25に対してPE2624の出力を選択する。最初のMIB応答が完了するとコントローラモードから省エネモードに移行する。
省エネモード中に前回と同じMIB要求があった場合は、省エネモードからコントローラモードに移行せず、省エネモードのままMIB応答を行う。前回と同じMIB要求なので、CPUでPDUの以下のオブジェクトデータであるを再度設定する必要が無くなり、前回生成したMIB応答パケットを使用する。
データ1:mib−2.25.3.2.1.5.1
データ2:mib−2.25.3.5.1.1.1
データ3:mib−2.25.3.5.1.2.1
UDPヘッダ生成部2857、IPヘッダ生成部2858、イーサフレームヘッダ生成部2860で生成するデータも前回と同様に生成可能である。
生成されたイーサフレームパケットはセレクタ(SEL)25を経由してMA22Cに転送されてPHY12より出力される。
このように、2回目以降のMIB要求に対して省エネモードでMIB応答を行うのでMIB要求時の消費電力を削減することができる。
省エネモード時には、PM32からセレクタ(SEL)25に対してPE2624の出力を選択する。PM32では、省エネモードから通常モード、またはコントローラモードに移行するときは、セレクタ(SEL)25は、PE2624の出力ではなく、内部バス34からのデータを選択してMAC22に入力する。
このように実施の形態3にかかるプリンタでは、パケットのUDPヘッダ、すなわちSNMPデータの生成をプリンタのCPUとメモリを使用しないで行えるので、消費電力の削減を行うことができる。
なお、上述の実施の形態1〜3では、省電力モードとして、省エネモードとコントローラモードを有するプリンタについて説明したが、プリンタを含む情報処理装置では、省電力モードとして、省エネモードとコントローラモード以外にも多様なモードが存在するが、この発明は、それらのモードを実施する情報処理装置についても上述と同様にして実施することができる。
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。