(57)【要約】【課題】オペレーティングシステムのスケジューリング機構を変更せずに、過剰なパケット受信によるＣＰＵ時間の消費を防止できるとともに、割込み不可状態の過度な継続を防止することのできるコンピュータシステムを提供する。【解決手段】ＮＩＣ１０からの受信割込みの回数と、受信割込みによるＣＰＵの利用時間を測定する。これらの測定結果は一定の時間周期でリセットする。割込みが発生するごとに、割込み回数の測定結果と閾値とを比較し、測定結果が閾値を超えている場合は受信処理を禁止し、受信パケットを破棄する。同様に、ＣＰＵ利用時間の測定結果と閾値とを比較し、測定結果が閾値を超えている場合はは受信処理を禁止し、受信パケットを破棄する。【選択図】図８
2005347894.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークからのパケットの受信に対して割り込みを発生するネットワーク接続装置と、
前記ネットワーク接続装置からの前記割込みの回数を測定する割込み回数測定手段と、  前記割込み回数測定手段の測定結果を決められた時間周期でリセットするリセット手段と、
前記割込みが発生するごとに、前記割込み回数測定手段の測定結果と閾値とを比較し、測定結果が閾値を超えている場合は受信処理に制限を付与する受信処理制限手段と
を具備することを特徴とするコンピュータシステム。
【請求項２】
ネットワークからのパケットの受信に対して割り込みを発生するネットワーク接続装置と、
前記ネットワーク接続装置からの受信割込みによるＣＰＵの利用時間を測定するＣＰＵ利用時間測定手段と、
前記ＣＰＵ利用時間測定手段の測定結果を決められた時間周期でリセットするリセット手段と、
受信割込みが発生するごとに、前記ＣＰＵ利用時間測定手段の測定結果と閾値とを比較し、測定結果が閾値を超えている場合は受信処理に制限を付与する受信処理制限手段と
を具備することを特徴とするコンピュータシステム。
【請求項３】
前記受信処理制限手段は、今回の受信割込みに対する受信処理を禁止し、受信パケットを破棄することを特徴とする請求項１または２に記載のコンピュータシステム。
【請求項４】
ネットワークからのパケットの受信に対して割り込みを発生するネットワーク接続装置からの前記割込みの回数を測定するステップと、
割込み回数測の測定結果を決められた時間周期でリセットするステップと、
前記割込みが発生するごとに、前記割込み回数の測定結果と閾値とを比較し、測定結果が閾値を超えている場合は前記割込みに対する受信処理を禁止するステップと
を具備することを特徴とするコンピュータシステムの受信割込み処理方法。
【請求項５】
ネットワークからのパケットの受信に対して割り込みを発生するネットワーク接続装置からの受信割込みによるＣＰＵの利用時間を測定するステップと、
ＣＰＵの利用時間の測定結果を決められた時間周期でリセットするステップと、
前記割込みが発生するごとに、前記ＣＰＵの利用時間の測定結果と閾値とを比較し、測定結果が閾値を超えている場合は前記割込みに対する受信処理を禁止するステップと
を具備することを特徴とするコンピュータシステムの受信割込み処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークに接続可能なコンピュータシステム及びネットワーク接続装置からの受信割込みの処理方法に関する。
【背景技術】
【０００２】
近代的なオペレーティングシステムを備えたコンピュータでは、ハードウェアからの割込みが発生した場合は、その時点で実行中のプログラムを可能なところで中断し、割込み処理を優先して実行する。中断されたプログラムについては、割込み処理の終了後に、中断された場所から実行が再開される。ハードウェアからの割込み処理には、即座に実行を行わなければならない優先度の高いものと、そうではなく、割込みによって中断された他のプログラムよりも優先度が低いものもある。そのため、一般に、ハードウェアからの割込みが発生した場合、優先度が高い割込み処理のみを実行し、その他の割込みは、スケジューラに実行のタイミングを任せるようになっている。
【０００３】
ただし、この方法においては、頻繁に割込み処理が発生した場合は、割込み処理によってＣＰＵ時間が消費されてしまい、それ以外の処理、例えばアプリケーションプログラムに割り当てられるＣＰＵ時間が減ってしまう。最悪の場合は、まったくアプリケーションプログラムが動作できない状態が発生してしまう。この場合、ユーザには、実行中のアプリケーションプログラムの動作が止まり、またそのコンピュータ自体が停止しているように見える。
【０００４】
具体例としては、ネットワーク接続装置であるＮＩＣ（Network Interface Card）においてサイズの小さなパケットを頻繁に受信した場合に、受信パケットの処理のみでＣＰＵ時間を消費してしまい、その他のアプリケーションプログラムの動作が非常に遅くなる、あるいは全く動作できなくなる状況が発生する。このような状況を意図的に発生させてコンピュータが提供するサービスを停止させる行為は、ＤｏＳ（Denial of  Services）攻撃と呼ばれている。
【０００５】
また、意図的ではないにしても、ネットワーク機器の設定ミス等によっても、この状況は発生することがあり、コンピュータで本来実行したいアプリケーションが実行できない状況が発生することがある。
【０００６】
このような状況を回避するために、オペレーティングシステムのスケジューリング機構を変更し、アプリケーションの重要度に応じて、ハードウェアからの割込み処理の実行に割り当てるＣＰＵ時間を減らす方法が考えられる。しかし、オペレーティングシステム内部の変更が不可能な場合があり、また可能であっても、多大なコストがかかるという問題がある。
【０００７】
その他に、ネットワークからのデータのバーストの受信中にＣＰＵに過度な負担がかかることを回避するために、最後の割込み以降に十分な数のパケットを受信し、かつ最後の割込み以降に一定時間待機状態が続くことによって割込み可能状態にする技術がある（たとえば特許文献１を参照）。
【特許文献１】特開平９−２２３０９１号公報（段落００１７）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、この公知の技術では、パケット数や時間のしきい値によっては割込み不可状態が過剰に継続するおそれがあり、特にネットワーク機器の設定ミス等により定常的にバースト受信が発生する場合にその傾向が高くなる。
【０００９】
本発明は、オペレーティングシステムのスケジューリング機構を変更せずに、過剰なパケット受信によるＣＰＵ時間の消費を防止できるとともに、割込み不可状態の過度な継続を防止することのできるコンピュータシステムおよびその割込み制御方法を提供することを目的としている。
【課題を解決するための手段】
【００１０】
かかる目的を達成するために、第１の発明のコンピュータシステムは、ネットワークからのパケットの受信に対して割り込みを発生するネットワーク接続装置と、ネットワーク接続装置からの割込みの回数を測定する割込み回数測定手段と、割込み回数測定手段の測定結果を決められた時間周期でリセットするリセット手段と、割込みが発生するごとに、割込み回数測定手段の測定結果と閾値とを比較し、測定結果が閾値を超えている場合は受信処理に制限を付与する受信処理制限手段とを具備することを特徴とする。
【００１１】
また、第２の発明のコンピュータシステムは、ネットワークからのパケットの受信に対して割り込みを発生するネットワーク接続装置と、ネットワーク接続装置からの受信割込みによるＣＰＵの利用時間を測定するＣＰＵ利用時間測定手段と、ＣＰＵ利用時間測定手段の測定結果を決められた時間周期でリセットするリセット手段と、受信割込みが発生するごとに、ＣＰＵ利用時間測定手段の測定結果と閾値とを比較し、測定結果が閾値を超えている場合は受信処理に制限を付与する受信処理制限手段とを具備することを特徴とする。
【００１２】
さらに、第１の発明および第２の発明のコンピュータシステムにおいて、受信処理制限手段は、今回の受信割込みに対する受信処理を禁止し、受信パケットを破棄するようにしてもよい。
【発明の効果】
【００１３】
本発明のコンピュータシステム及び受信割込み処理方法によれば、オペレーティングシステムのスケジューリング機構を変更せずに、過剰なパケット受信によるＣＰＵ時間の消費を防止できるとともに、割込み不可状態の過度な継続を防止することができる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して本発明の実施の形態について説明する。
【００１５】
図１は、本発明の一実施形態にかかるコンピュータシステムの電気的な構成を示すブロック図である。
【００１６】
同図に示すように、このコンピュータシステム１００は、システム全体の制御を行うＣＰＵ（Central Processing Unit)１、ＣＰＵ１の作業領域として用いられるメインメモリ２、プログラムやデータを読み書き可能な記録装置であるＨＤＤ（Hard Disk Drive)などの記録装置３、デジタル放送信号を受信するチューナ４、チューナ４で受信したデジタル放送信号を復号するデコーダ５、デコーダ５によって復号されたデータを記録装置３に効率的に記録できるファイル形式であるＭＰＥＧ（Moving Picture Experts Group）２の圧縮符号化データに符号化するＭＰＥＧエンコーダ６とを備える。ＭＰＥＧエンコーダ６によって符号化されたデータは、ＣＰＵ１の制御により、システムバス７を介してメインメモリ２に蓄積され、ブロック単位にまとめられて記録装置３に記録される。
【００１７】
また、このコンピュータシステム１００は、ＣＰＵ１の制御により、記録装置３から読み出されたデータをシステムバス７を通じて受け取り、モニタ８にて表示可能な形式のデータに復号するＭＰＥＧデコーダ９を有する。さらに、システムバス７には、ネットワークとの接続を処理するネットワーク接続装置（以下「ＮＩＣ」と呼ぶ。）１０が接続されている。
【００１８】
図２は、このコンピュータシステム１００におけるソフトウェアの構成を示す図である。
【００１９】
ＯＳ（オペレーティングシステム）１１は、このコンピュータシステム１００全体のハードウェアの管理や、各アプリケーションプログラム１２、１３の実行を管理する。デバイスドライバ１４、１５はＯＳ１１に各デバイスへのアクセスの手順を提供する。ここでデバイスドライバ１４は、図１のＮＩＣ１０用のデバイスドライバである。以下、これをＮＩＣドライバと呼ぶ。ＮＩＣドライバ１４は、ＮＩＣ１０から割込みの発生を契機にＯＳ１１によって呼び出され、その割込みを処理する割込みハンドラ２１を有する。
【００２０】
図３は、割込みハンドラ２１による基本的な処理の流れを示すフローチャートである。
【００２１】
割込みハンドラ２１は、まず、発生した割り込み要因が処理すべき割込み要因であるかどうかを判定する（ステップ３０１）。処理すべき割込み要因としては、たとえば、送信完了、受信などがある。処理すべき割込み要因が判定された場合（ステップ３０１のＹＥＳ）、割込みハンドラ２１はＮＩＣ１０に対する操作をロックする（ステップ３０２）。続いて、割込みハンドラ２１は、処理すべき割込み要因が具体的に何であるかを判定し（ステップ３０３）、その判定した割込み要因に対応する処理を実行する（ステップ３０４）。割込み要因に対応する処理の実行後、ＮＩＣ１０に対する操作のロックを解除する（ステップ３０５）。
【００２２】
図４は、図３での割込み要因に対応した処理の一つとして実行される受信処理の例を示すフローチャートである。
【００２３】
この受信処理では、まず、受信パケットのサイズに応じたバッファを確保した後（ステップ４０１）、受信パケットをそのバッファにコピーし（ステップ４０２）、その受信パケットの属性をバッファにセットする（ステップ４０３）。続いて、この受信処理の上位のネットワークドライバにバッファを渡し（ステップ４０４）、上位のネットワークドライバでの処理が実行される。
【００２４】
一般に、これらの処理は、ＵＮＩＸ(登録商標）においてカーネルモードと呼ばれる特権モードで実行され、非特権モードで実行されるユーザアプリケーションよりも高い優先度で実行される。そのため、頻繁に受信割込みが発生した場合には、最悪、ユーザアプリケーションが利用できるＣＰＵ時間が全くなくなってしまう可能性があった。
【００２５】
このコンピュータシステム１００では、ＮＩＣドライバ１４に実装された次のような処理手順によって、かかる課題を解決するものである。
【００２６】
図５はＮＩＣドライバ１４の初期化処理の一部を示すフローチャート、図６はＮＩＣドライバ１４の初期化処理においてメインメモリ２上に確保される領域の構成を示す図である。
【００２７】
ＮＩＣドライバ１４は、初期化処理において、メインメモリ２上に、割込み回数格納領域３１を確保し、そこに「割込み回数」として０をセット（ステップ５０１）。この割込み回数格納領域３１は、一定時間内にＮＩＣ１０から受信割込みを受けた回数を格納する領域である。
【００２８】
次に、ＮＩＣドライバ１４は、メインメモリ２上にＣＰＵ利用時間格納領域３２を確保し、そこに「ＣＰＵ利用時間」として０をセットする（ステップ５０２）。このＣＰＵ利用時間格納領域３２は、一定時間内にＮＩＣ１０からの割込み処理の受信処理で利用したＣＰＵ利用時間の合計を格納する領域である。
【００２９】
次に、ＮＩＣドライバ１４は、メインメモリ２上に割込み回数閾値格納領域３３を確保し、そこに「割込み回数閾値」をセットする（ステップ５０３）。割込み回数閾値としては、単位時間当たりに許容できる、ＮＩＣ１０からの受信割込み回数がセットされる。ただし、この割込み回数閾値は、システムや動作させるアプリケーションに応じて最適な値を予め用意しておき、切り替えて使用されるようにしてもよい。
【００３０】
次に、ＮＩＣドライバ１４は、メインメモリ２上にＣＰＵ利用時間閾値格納領域３４を確保し、そこに「ＣＰＵ利用時間閾値」をセットする（ステップ５０４）。ＣＰＵ利用時間閾値としては、受信割込み処理が利用する単位時間当たりのＣＰＵ利用時間の許容値がセットされる。ただし、このＣＰＵ利用時間閾値についても、システムや動作させるアプリケーションに応じて最適な値を予め用意しておき、切り替えて使用されるようにしてもよい。
【００３１】
また、ＮＩＣドライバ１４は、図７に示すように、一定の時間ごとに以下の処理を行う。すなわち、ＮＩＣドライバ１４は、一定の時間が経過する度に、割込み回数格納領域３１の「割込み回数」をクリア（０をセット）し（ステップ７０１）、続いてＣＰＵ利用時間格納領域３２の「ＣＰＵ利用時間」をクリア（０をセット）する（ステップ７０２）。
【００３２】
さらに、ＮＩＣドライバ１４は、ＮＩＣ１０からの割込みにより受信処理が起動された場合に、以下の処理を行う。
【００３３】
図８は、割込みにより受信処理が起動された場合のＮＩＣドライバ１４による処理の流れを示すフローチャートである。
【００３４】
ＮＩＣドライバ１４は、受信処理における「ＣＰＵ利用時間」の計測を開始し（ステップ８０１）、割込み回数格納領域３１の「割込み回数」をインクリメントする（ステップ８０２）。
【００３５】
続いて、ＮＩＣドライバ１４はＣＰＵ利用時間格納領域３２に格納された「ＣＰＵ利用時間」とＣＰＵ利用時間閾値格納領域３４に格納された「ＣＰＵ利用時間閾値」とを比較する（ステップ８０３）。「ＣＰＵ利用時間」が「ＣＰＵ利用時間閾値」より大きい場合は（ステップ８０３のＹＥＳ）、「ＣＰＵ利用時間」の計測を終了し、計測結果をＣＰＵ利用時間格納領域３２の内容に加算して処理を終了する（ステップ８０６）。すなわち、今回の割込みの発生に対する受信処理を行わず、受信パケットを破棄する。このとき必要ならば、受信パケットを破棄するようＮＩＣ１０を制御する。
【００３６】
「ＣＰＵ利用時間」が「ＣＰＵ利用時間閾値」以下の場合は（ステップ８０３のＮＯ）、割込み回数格納領域３１の「割込み回数」と割込み回数閾値格納領域３３の「割込み回数閾値」とを比較する（ステップ８０４）。「割込み回数」が「割込み回数閾値」以下である場合は（ステップ８０４のＮＯ）、図４の受信処理を行う（ステップ８０５）。
【００３７】
また、「割込み回数」が「割込み回数閾値」より大きい場合は（ステップ８０４のＹＥＳ）、「ＣＰＵ利用時間」の計測を終了し、計測結果をＣＰＵ利用時間格納領域３２の内容に加算して処理を終了する（ステップ８０６）。すなわち、図４に示した受信処理を行わず、パケットは破棄する。必要な場合は、受信パケットを破棄するようＮＩＣ１０を制御する。
【００３８】
以上の処理において、「ＣＰＵ利用時間」が「ＣＰＵ利用時間閾値」より大きい場合もしくは「割込み回数」が「割込み回数閾値」より大きい場合は、割込み回数もしくは受信処理に要するＣＰＵ時間が、想定した量の上限を超えていることを意味する。この状態を放置した場合、最悪、アプリケーションプログラム１２、１３の実行ができなくなり、コンピュータシステム１００としてのサービスを提供できなくなる可能性がある。そこで、「ＣＰＵ利用時間」が「ＣＰＵ利用時間閾値」より大きい場合もしくは「割込み回数」が「割込み回数閾値」より大きい場合は、受信処理を行わず、パケットを破棄することで、受信パケットは失ったことになるものの、コンピュータシステム１００としてのサービスの提供は継続することができる。また、受信できなかったパケットは、時間を空けて再送された際に受信処理される問題はない。さらに、ＣＰＵ利用時間格納領域３２および割込み回数格納領域３１の各内容は一定の時間ごとにリセットされるので、割込み不可状態が過度に長く継続することがない。
【００３９】
このように本実施形態のコンピュータシステム１００によれば、ＮＩＣ１０の受信割込みによるＣＰＵ時間の過度の消費を回避できることで、チューナ４で受信したデジタル放送信号の復号からデータ圧縮符号化を経て記録装置３へ記録される処理、および、記録装置３に記録されたデータを読み出し、伸長復号して再生する処理において、ＣＰＵ１の動作がボトルネックとなるのを防止することができる。
【００４０】
なお、本発明は、上述の図示例にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【００４１】
たとえば、上記の実施形態の説明では、一定時間内の受信の「割込み回数」と、そのために利用した「ＣＰＵ利用時間」を判断に利用しているが、単位時間での「割込み回数」、「ＣＰＵ利用時間」の平均値や、移動平均値を利用するようにしてもよい。
【００４２】
また、上記の実施形態の説明では、「ＣＰＵ利用時間」が「ＣＰＵ利用時間閾値」より大きい場合もしくは「割込み回数」が「割込み回数閾値」より大きい場合に、受信処理を行わず、パケットを破棄していたが、以下のようなバリエーションも適用することが可能である。
【００４３】
図４の受信処理において、ステップ４０２の受信パケットをバッファにコピーするまでは行い、以後のステップのパケットの属性をバッファにセットする処理および上位のネットワークドライバにバッファを渡す処理は、所定の複数回の受信割込みを受けた後で、まとめて実行するようにしてもよい。これにより、上位のネットワークドライバの実行回数を減らすことができる。これは、上位のネットワークドライバを実行させるためにスケジューラを起動させる実装の場合に、スケジューラ起動のオーバーヘッドを低減できるという効果に結びつく。
【００４４】
また、「ＣＰＵ利用時間」が「ＣＰＵ利用時間閾値」より大きい場合もしくは「割込み回数」が「割込み回数閾値」より大きいことが判定された場合に、ネットワークが異常な状態であると判断して受信割込みを禁止し、その後ネットワークの状態が回復する可能性を見込んで、一定時間が経過後にＮＩＣ１０の受信割込みを許可するようにしてもよい。
【図面の簡単な説明】
【００４５】
【図１】本発明の一実施形態にかかるコンピュータシステムの電気的な構成を示すブロック図である。
【図２】図１のコンピュータシステムにおけるソフトウェアの構成を示す図である。
【図３】割込みハンドラによる基本的な処理の流れを示すフローチャートである。
【図４】図３での割込み要因に対応した処理の一つとして実行される受信処理の例を示すフローチャートである。
【図５】ＮＩＣドライバの初期化処理の一部を示すフローチャートである。
【図６】図５の初期化処理においてメインメモリ上に確保される領域の構成を示す図である。
【図７】ＮＩＣドライバの一定の時間ごとに行われるリセット処理を示すフローチャートである。
【図８】割込みにより受信処理が起動された場合のＮＩＣドライバによる処理の流れを示すフローチャートである。
【符号の説明】
【００４６】
１…ＣＰＵ、２…メインメモリ、３…記録装置、１０…ネットワーク接続装置（ＮＩＣ）、１４…ＮＩＣドライバ、２１…割込みハンドラ、３１…割込み回数格納領域、３２…ＣＰＵ利用時間格納領域、３３…割込み回数閾値格納領域、３４…ＣＰＵ利用時間閾値格納領域。
【図１】
2005347894.tif 000003
【図２】
2005347894.tif 000004
【図３】
2005347894.tif 000005
【図４】
2005347894.tif 000006
【図５】
2005347894.tif 000007
【図６】
2005347894.tif 000008
【図７】
2005347894.tif 000009
【図８】
2005347894.tif 000010