(57)【要約】      （修正有）【課題】通信回線上のトラヒック特性やプロトコルの種類が変動しても、受信処理部が、適合しない受信処理方式で動作することによる受信性能の低下を起こさずに、回線上のトラヒック特性やプロトコルの種類に適合した受信処理方式を選択して動作することによって、高い受信性能を維持することが可能なパケット処理装置を提供する。【解決手段】通信回線上からデータを受信する回線対応部と、受信データのプロトコル処理を実行するプロトコル処理部と、前記回線対応部で受信したデータを記憶するパケットメモリとを備えるパケット処理装置において、前記プロトコル処理部及び前記パケットメモリのリソースの使用状況、あるいは、受信トラフィック特性に応じて、前記回線対応部がデータを受信してからプロトコル処理部を駆動するまでの時間を切り替える手段を備える。【選択図】図１３
2006238477.tif 000002
【特許請求の範囲】
【請求項１】
通信回線上からデータを受信する回線対応部と、
受信データのプロトコル処理を実行するプロトコル処理部と、
前記回線対応部で受信したデータを記憶するパケットメモリとを備えるパケット処理装置において、
前記プロトコル処理部及び前記パケットメモリのリソースの使用状況、あるいは、受信トラフィック特性に応じて、前記回線対応部がデータを受信してからプロトコル処理部を駆動するまでの時間を切り替える手段を備えることを特徴とするパケット処理装置。
【請求項２】
通信回線上からデータを受信する回線対応部と、
前記回線対応部で受信したデータを記憶するパケットメモリと、
前記回線対応部で受信したデータのプロトコル処理を行うプロトコル処理部と、
前記プロトコル処理部を強制的に起動する強制同期処理部と、
前記回線対応部から前記パケットメモリヘのデータ転送が終了した後に各々異なる遅延時間後に前記強制同期処理部を起動する複数の受信処理部と、
前記パケットメモリの消費量を観測するリソース消費量取得部と、
前記リソース消費量取得部で観測された前記パケットメモリのリソース消費量を保持するカウンタと、
前記カウンタのカウント値に対して、前記各々異なる遅延時間後に前記強制同期処理部を起動する複数の受信処理部を対応させる受信処理部テーブルと、
前記カウンタのカウント値と前記受信処理部テーブルを比較する比較部と、
前記比較部の結果に基づき、前記複数の受信処理部の中から１つの受信処理部を選択する受信処理部セレクタと、
前記受信処理部セレクタの指示に基づき、前記受信処理部を切替える受信処理部切替器とを備えることを特徴とするパケット処理装置。
【請求項３】
通信回線上からデータを受信する回線対応部と、
前記回線対応部で受信したデータを記憶するパケットメモリと、
前記回線対応部で受信したデータのプロトコル処理を行うプロトコル処理部と、
前記プロトコル処理部を強制的に起動する強制同期処理部と、
前記回線対応部から前記パケットメモリヘのデータ転送が終了した後に各々異なる遅延時間後に前記強制同期処理部を起動する複数の受信処理部と、
パケット処理装置の計算処理能力を観測する計算処理能力取得部と、
前記計算処理能力取得部で観測された前記パケット処理装置の計算処理能力の使用率を保持するカウンタと、
前記カウンタのカウント値に対して、前記各々異なる遅延時間後に前記強制同期処理部を起動する複数の受信処理部を対応させる受信処理部テーブルと、
前記カウンタのカウント値と前記受信処理部テーブルを比較する比較部と、
前記比較部の結果に基づき、前記複数の受信処理部の中から１つの受信処理部を選択する受信処理部セレクタと、
前記受信処理部セレクタの指示に基づき、前記受信処理部を切替える受信処理部切替器とを備えることを特徴とするパケット処理装置。
【請求項４】
通信回線上からデータを受信する回線対応部と、
前記回線対応部で受信したデータを記憶するパケットメモリと、
前記回線対応部で受信したデータのプロトコル処理を行うプロトコル処理部と、
前記プロトコル処理部を強制的に起動する強制同期処理部と、
前記回線対応部から前記パケットメモリヘのデータ転送が終了した後に各々異なる遅延時間後に前記強制同期処理部を起動する複数の受信処理部と、
パケット処理装置が受信したデータのプロトコルを判別する受信プロトコル取得部と、
前記受信プロトコル取得部で判別された受信データ数を受信プロトコル毎に保持するカウンタと、
前記カウンタのカウント値から受信プロトコルの分布を推定する統計処理部と、
前記統計処理部の出力値に対して、前記各々異なる遅延時間後に前記強制同期処理部を起動する複数の受信処理部を対応させる受信処理部テーブルと、
前記統計処理部の出力値と前記受信処理部テーブルを比較する比較部と、
前記比較部の結果に基づき、前記複数の受信処理部の中から１つの受信処理部を選択する受信処理部セレクタと、
前記受信処理部セレクタの指示に基づき、前記受信処理部を切替える受信処理部切替器とを備えることを特徴とするパケット処理装置。
【請求項５】
通信回線上からデータを受信する回線対応部と、
前記回線対応部で受信したデータを記憶するパケットメモリと、
前記回線対応部で受信したデータのプロトコル処理を行うプロトコル処理部と、
前記プロトコル処理部を強制的に起動する強制同期処理部と、
前記回線対応部から前記パケットメモリヘのデータ転送が終了した後に各々異なる遅延時間後に前記強制同期処理部を起動する複数の受信処理部と、
パケット処理装置が受信したデータのデータ長、データの到着時間間隔を計測するトラヒックパターン取得部と、
前記トラヒックパターン取得部で計測された前記データ長とデータの到着時間間隔を保持するカウンタと、
前記カウンタのカウント値から通信回線上のトラヒック特性を推定する統計処理部と、
前記統計処理部の出力値に対して、前記各々異なる遅延時間後に前記強制同期処理部を起動する複数の受信処理部を対応させる受信処理部テーブルと、
前記統計処理部の出力値と前記受信処理部テーブルを比較する比較部と、
前記比較部の結果に基づき、前記複数の受信処理部の中から１つの受信処理部を選択する受信処理部セレクタと、
前記受信処理部セレクタの指示に基づき、前記受信処理部を切替える受信処理部切替器とを備えることを特徴とするパケット処理装置。
【請求項６】
請求項２に記載のパケット処理装置をコンピュータで実行させるためのプログラムであって、
前記プログラムは、コンピュータに、請求項２に記載のプロトコル処理部、強制同期処理部、複数の受信処理部、リソース消費量取得部、カウンタ、比較部、受信処理部セレクタ、および、受信処理部切替器の処理を実行させることを特徴とするプログラム。
【請求項７】
請求項３に記載のパケット処理装置をコンピュータで実行させるためのプログラムであって、
前記プログラムは、コンピュータに、請求項３に記載のプロトコル処理部、強制同期処理部、複数の受信処理部、計算処理能力取得部、カウンタ、比較部、受信処理部セレクタ、および、受信処理部切替器の処理を実行させることを特徴とするプログラム。
【請求項８】
請求項４に記載のパケット処理装置をコンピュータで実行させるためのプログラムであって、
前記プログラムは、コンピュータに、請求項４に記載のプロトコル処理部、強制同期処理部、複数の受信処理部、受信プロトコル取得部、カウンタ、統計処理部、比較部、受信処理部セレクタ、および、受信処理部切替器の処理を実行させることを特徴とするプログラム。
【請求項９】
請求項５に記載のパケット処理装置をコンピュータで実行させるためのプログラムであって、
前記プログラムは、コンピュータに、請求項５に記載のプロトコル処理部、強制同期処理部、複数の受信処理部、トラヒックパターン取得部、カウンタ、統計処理部、比較部、受信処理部セレクタ、および、受信処理部切替器の処理を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット処理装置およびプログラムに係わり、特に、通信システムの中で通信データのプロトコル処理や、経路情報に基づきパケットデータの転送処理を行なうパケット処理装置に関する。
【背景技術】
【０００２】
通信回線に接続されているパケット処理装置は、データを回線上に送出するために、データをパケットメモリに格納した後、プロトコル処理部でデータをパケット化し、プロトコル処理を行う。その後、回線対応部に対して、ＤＭＡ（Direct Memory Access）を用いたデータ転送を行う。
ＤＭＡにより回線対応部に転送されたパケットは、通信回線上に順次送出される。通信回線上ヘパケットが送出されたのち、送出されたパケットの保持に使用されていたパケットメモリ領域は開放される。
前記パケット転送からパケットメモリの開放に至る処理は、パケット処理装置の送信中において、固定の処理方式で行われる。
また、パケットを通信回線から受信するためには、通信回線からのパケット到着を契機として、回線対応部からＤＭＡを用いたデータ転送を行い、到着したパケットをパケットメモリに格納する。
同時に、回線対応部は、パケット受信を通知するハードウェア割り込みを発生し、強制同期処理の起動要求を行う。その後、パケット処理装置のプロセッサは、パケットメモリ内の受信パケットを強制的にプロトコル処理部へ受渡す強制同期処理を起動し、パケットの受信処理を行う。
パケット処理装置のプロセッサは全ての受信処理が完了した後、パケットの保持に使用されていたパケットメモリの領域を開放する。前記パケットの到着からパケットメモリの開放に至る処理は、パケット処理装置の受信中において、固定の処理方式で行われる。
【０００３】
なお、本願発明に関連する先行技術文献としては以下のものがある。
【非特許文献１】佐島 隆博 著，「Ｓｏｌａｒｉｓ デバイスドライバ」，オライリージャパン，      第３章，ＩＳＢＮ ４−８７３１１−１４３−９
【非特許文献２】Ilhwan Kim,Junghwan Moon,and Heon Y.Yeom,"Timer-Based Interrupt Mitigation for High Performance Packet Processing", 5th International Conference on High-Performance Computing in the Asia-Pacfic Region, September,2001,(Gold Coast, Australia)
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来のパケット処理装置では、パケットの送出は図１、パケットの受信は図２に示す構成で実現されるのが一般的である。
パケットの送出処理を表す図１では、パケット入力部１１から入力されたパケットは、パケットメモリ１２に格納され、送信処理部１３において特定の送信処理方式で処理された後、回線対応部１４にＤＭＡ転送される。
また、送信処理部１３は、パケットが回線対応部１４から送出された後に、送信されたパケットを保持していたパケットメモリ１２の領域を開放する。
本構成において、データの送出からメモリの領域開放に至るまでの処理は、パケット処理装置の送信中で固定の送信処理方式で行われるために以下のような問題点がある。
（１）パケット処理装置のリソース消費量（プロセッサ時間、パケットメモリ）はデータの送信中に動的に変化する。
この変化に応じて、パケット処理装置のパケット処理能力が変化する一方、送信処理部１３の送信処理方式はデータの送信中で固定であるため、動作中の送信処理方式が、パケット処理装置のパケット処理能力に対して適合しない場合、送信性能が低下する。
特に、パケットメモリの消費量は、プロセッサの処理速度によって、大きく変動し、プロセッサの処理能力が高い場合は、回線対応部１４へのデータ転送速度が間に合わずに、パケットメモリ１２を多く消費する。そのため、パケットメモリ１２が不足し、送信性能を低下させる。
（２）パケット処理装置は、複数のサービスを提供する事が一般的であるが、サービス毎に送信処理部の動作で必要な特性が異なる。例えば、データ送信が、パケット処理装置の送信要求に対して、即時行われるか否か、つまりデータ送信のリアルタイム性である。
また、送信処理部１３を起動するために、パケット処理装置で必要とされるリソース量の特性も提供するサービスの動作へ影響を与える。しかし、送信処理部１３の送信処理方式は、データの送出中で固定であるため、動作中の送信処理方式が、サービス毎に必要とされる送信特性を満足できないことがある。
【０００５】
パケットの受信処理を表す図２では、回線対応部１４において受信したパケットは、パケットメモリ１２ヘＤＭＡ転送される。その後、回線対応部１４は、強制同期処理の起動要求を行う。
受信処理部２９は、前記起動要求を検知すると、強制同期処理部２９ａを起動しパケットメモリ内のパケットを、プロトコル処理部３０に渡す。プロトコル処理部３０での処理が完了した後に、受信処理部２９は受信したパケットを保持していたパケットメモリ１２の領域を開放する。
本構成において、データの到着からメモリの領域開放に至るまでの処理は、パケット処理装置の受信中で固定の受信処理方式で行われるために以下のような問題点がある。
（３）パケット処理装置のリソース消費量（プロセッサ時間、パケットメモリ）はデータの受信処理中に動的に変化する。
この変化に応じて、パケット処理装置のパケット処理能力が変化する一方、受信処理部２９の受信処理方式はデータの受信中で固定であるため、動作中の受信処理方式が、パケット処理装置のパケット処理能力に適合しない場合、受信性能が低下する。
特に、パケットメモリ１２の消費量は、通信回線上のトラヒック特性や、プロセッサの処理速度によって、大きく変動し、パケットの到着時間間隔が短い場合、パケット処理装置におけるパケットメモリ１２の開放処理が間に合わず、パケットメモリ１２を多く消費するため、パケットメモリ１２が不足し、受信性能が低下する。
【０００６】
（４）通信回線上を流れるパケットのトラヒック特性は、パケット処理装置のパケット受信中にも動的に変化する。
その一方、パケット処理装置は、パケットの受信中で、特定の受信処理方式をもつ受信処理部２９で処理を行うために、受信処理方式が通信回線上のトラヒック特性に適合しない場合、パケットの受信性能が低下する。
特に、パケットサイズが数バイトから数十キロバイトまでの広範囲で変化したり、パケットの到着時間間隔の変化が大きい場合には、パケットの到着を契機として起動される強制同期処理の起動回数が広範囲に変化する。このとき、プロセッサの処理能力がボトルネックとなり、受信性能が低下する。
（５）パケット処理装置は、複数のサービスを提供する場合があるが、サービス毎に受信処理部２９の受信処理方式へ要求される特性が異なる。
例えば、パケットの受信に対する応答の即時性や、その受信処理方式を動作させるのに必要なパケット処理装置のリソース等である。
しかし、パケット処理装置は、パケットの受信中で特定の受信処理方式で動作する受信処理部を用いる為に、動作中の受信処理方式が提供しているサービスに適合していない場合、サービス毎に求められる受信特性を満足できないことがある。
【０００７】
本発明は、前記従来技術の問題点を解決するためになされたものであり、本発明の目的は、通信回線上のトラヒック特性やプロトコルの種類が変動しても、受信処理部が、適合しない受信処理方式で動作することによる受信性能の低下を起こさずに、回線上のトラヒック特性やプロトコルの種類に適合した受信処理方式を選択して動作することによって、高い受信性能を維持することが可能なパケット処理装置を提供することにある。
また、本発明の他の目的は、前述のパケット処理をコンピュータに実行させるためのプログラムを提供することにある。
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述及び添付図面によって明らかにする。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、下記の通りである。
即ち、本発明は、通信回線上からデータを受信する回線対応部と、受信データのプロトコル処理を実行するプロトコル処理部と、前記回線対応部で受信したデータを記憶するパケットメモリとを備えるパケット処理装置において、前記プロトコル処理部及び前記パケットメモリのリソースの使用状況、あるいは、受信トラフィック特性に応じて、前記回線対応部がデータを受信してからプロトコル処理部を駆動するまでの時間を切り替える手段を備えることを特徴とする。
【０００９】
本願の第２の発明では、パケット処理装置の受信処理において以下の処理を行う。
（１）パケット処理装置に設けられた、リソース消費量取得部で、パケットメモリの消費量を取得し、カウンタに記憶する。
（２）カウンタのカウント値に対して、回線対応部からパケットメモリヘのデータ転送が終了した後、各々異なる遅延時間後に強制同期処理部を起動する複数の受信処理部を対応させる受信処理部テーブルをあらかじめ設定しておく。ただし、各々異なる遅延時間後に強制同期処理部を起動する複数の受信処理部の代わりに、任意の遅延時間後に強制同期処理部を起動する事が可能な単一の受信処理部と、前記遅延時間を異ならせることが可能な設定部によっても構成する事が可能である。
（３）前記カウンタのカウント値と前記受信処理部テーブルとを比較部において比較処理を行い、その結果に基づき、受信処理部セレクタは、パケットをプロトコル処理部へ受け渡す受信処理部の選択を行う。
（４）選択された受信処理部に対して、受信処理部切替器はパケットの送り先を設定する。
【００１０】
本願の第３の発明では、本願の第２の発明のリソース消費量取得部で、パケット処理装置のパケットメモリの消費量を取得する代わりに、計算処理能力取得部で、パケット処理装置のプロセッサ使用率を取得し、保持する事で以下のような処理を行う。
（１）パケット処理装置に設けられた、計算処理能力取得部で、パケット処理装置のプロセッサ使用率を取得し、カウンタに保持する。
（２）カウンタのカウント値に対して、回線対応部からパケットメモリヘのデータ転送が終了した後、各々異なる遅延時間後に強制同期処理部を起動する複数の受信処理部を対応させる受信処理部テーブルをあらかじめ設定しておく。ただし、各々異なる遅延時間後に強制同期処理部を起動する複数の受信処理部の代わりに、任意の遅延時間後に強制同期処理部を起動する事が可能な単一の受信処理部と、前記遅延時間を異ならせることが可能な設定部によっても構成する事が可能である。
（３）前記カウンタのカウント値と前記受信処理部テーブルとを比較部において比較処理を行い、その結果に基づき、受信処理部セレクタは、パケットをプロトコル処理部へ受け渡す受信処理部の選択を行う。
（４）選択された受信処理部に対して、受信処理部切替器はパケットの送り先を設定する。
【００１１】
本願の第４の発明では、本願の第２の発明のリソース消費量取得部で、パケット処理装置のパケットメモリの消費量を取得する代わりに、受信プロトコル取得部で、パケット処理装置が受信したデータのプロトコルを判別し、プロトコル毎に受信数をカウンタに保持することで以下のような処理を行う。
（１）パケット処理装置に設けられた受信プロトコル取得部で、パケット処理装置が受信したデータのプロトコルを判別し、プロトコル毎の受信数をカウンタに保持する。
（２）統計処理部では、（１）で得られたプロトコル毎のパケット受信数から、ある一定期間に受信したパケットのプロトコルの分布を算出する。算出された分布から、ある割合以上受信したプロトコルを選び出し出力する。
（３）パケット処理装置で提供しているサービスのプロトコルに対して、回線対応部からパケットメモリヘのデータ転送が終了した後、各々異なる遅延時間後に強制同期処理部を起動する複数の受信処理部を対応させる受信処理部テーブルをあらかじめ設定しておく。ただし、各々異なる遅延時間後に強制同期処理部を起動する複数の受信処理部の代わりに、任意の遅延時間後に強制同期処理部を起動する事が可能な単一の受信処理部と、前記遅延時間を異ならせることが可能な設定部によっても構成する事が可能である。
（４）選択されたプロトコル分布と前記受信処理部テーブルとを比較部において比較処理を行い、その結果に基づき、受信処理部セレクタは、パケットをプロトコル処理部へ受け渡す受信処理部の選択を行う。
（５）選択された受信処理部に対して、受信処理部切替器はパケットの送り先を設定する。
【００１２】
本願の第５の発明では、本願の第２の発明のリソース消費量取得部で、パケット処理装置のパケットメモリの消費量を取得する代わりに、トラヒックパターン取得部で、パケット処理装置が受信したデータのデータ長、データの到着時間間隔を計測し、計測値をカウンタに保持することで以下のような処理を行う。
（１）パケット処理装置に設けられたトラヒックパターン取得部で、パケット処理装置が受信したデータのデータ長、データの到着時間間隔を計測し、計測値をカウンタに保持する。
（２）統計処理部において、（１）で得られたデータ長およびデータの到着時間間隔から、ある一定期間に到着したデータの平均データ長、および平均到着時間間隔を算出し、この平均データ長と平均到着時間間隔を組み合わせて出力する。ここで、平均データ長と平均到着時間間隔をトラヒック特性とする。
（３）（２）で出力されたトラヒック特性の平均データ長と平均到着時間の値の範囲に対して、回線対応部からパケットメモリヘのデータ転送が終了した後、各々異なる遅延時間後に強制同期処理部を起動する複数の受信処理部を対応させる受信処理部テーブルをあらかじめ設定しておく。ただし、各々異なる遅延時間後に強制同期処理部を起動する複数の受信処理部の代わりに、任意の遅延時間後に強制同期処理部を起動する事が可能な単一の受信処理部と、前記遅延時間を異ならせることが可能な設定部によっても構成する事が可能である。
（４）前記トラヒック特性と前記受信処理部テーブルとを比較部において比較処理を行い、その結果に基づき、受信処理部セレクタは、パケットをプロトコル処理部へ受け渡す受信処理部の選択を行う。
（５）選択された受信処理部に対して、受信処理部切替器はパケットの送り先を設定する。
【発明の効果】
【００１３】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば、下記の通りである。
本発明によれば、パケット処理装置のリソース消費量や、提供するサービス、また通信回線上を流れるパケットのトラヒックパターンやプロトコルの種類が変動しても、適切な送受信処理を実行する送受信処理部を選択することによって、パケット処理装置が高い送受信特性を提供することを可能となる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して本発明の実施例を詳細に説明する。
なお、実施例を説明するための全図において、同一機能を有するものは同一符号を付け、その繰り返しの説明は省略する。
［参考例１］
図３は、本発明の参考例１のパケット処理装置の概略構成を示すブロック図である。図３では、各々異なる送信処理方式で動作する送信処理部が２つの場合を示す。
同図において、１４は回線対応部、１５，１６は、各々異なる送信処理方式で動作する送信処理部、１７は送信処理部を切替える送信処理部切替器、１８は送信処理部セレクタ、１２はパケットメモリ、１９は比較部、１１はパケット入力部、２０は送信処理部テーブル、２１はカウンタ、２２はリソース消費量取得部である。
ここで、送信処理部１５は、強制メモリ開放送信処理部であり、送信処理部１６は、非強制メモリ開放送信処理部であり、送信処理部（１５，１６）は、汎用パソコンやワークステーション上で動作するプログラムや、通信ボード上でプログラムと協調して動作するＤＭＡコントローラ等のハードウェアで構成可能である。
【００１５】
また、送信処理部（１５，１６）を、単一の送信処理部と、送信処理部の動作を異ならせることが可能な設定部によっても構成することも可能である。この場合の設定部は、汎用パソコン上で動作し、通信ボード等のレジスタを設定するプログラムや、変数の値を設定するプログラムで構成可能である。
パケット入力部１１、送信処理部切替器１７、送信処理部セレクタ１８、および比較部１９は、汎用パソコン上で動作するプログラムで記述することで構成することが可能である。
パケットメモリ１２は、汎用パソコンや、通信機器、通信ボード上のメモリとして構成可能である。
送信処理部テーブル２０、カウンタ２１は、汎用パソコン上で動作するプログラムの変数の値として、メモリ上に保持することで実現する事が可能である。また、カウンタ２１は、一般的なアップダウンカウンタ等でも構成する事ができる。
リソース消費量取得部２２は、ハードウェアのレジスタ読み出しや、メモリ上に保持されたカウンタ変数の読み出しを行うプログラムとして構成する事が可能である。
【００１６】
次に、本参考例のパケット処理装置の動作を図４を参照しながら示す。
図４は、パケット処理装置Ａ２３からパケット処理装置Ｂ２４に対して、回線２５と回線２６をそれぞれ送信回線、受信回線として使用し、データを転送しようとしている。２つのパケット処理装置には、それぞれユニークなアドレスが付与される。
使用するアドレスは、ＩＰ（Intenet Protoco1）準拠の３２ｂｉｔのアドレス体系を持つものとし、パケット処理装置Ａ２３が、10.1.2.3であるとする。またデータ転送先のパケット処理装置Ｂ２４は、アドレス10.1.2.4を持っている。
図５は、図３の構成において、実際の動作の様子を示す図である。
【００１７】
［具体的な実装例と、論理構成図との対応］
まず、本参考例の発明を、汎用パソコン上で動作しているオペレーティングシステムのネットワークドライバ部分に実装した具体例を図６に示し、本ネットワークドライバの動作を解説するとともに、その動作と図５との対応を明らかにする。
本ネットワークドライバは、汎用パソコンの拡張バスに搭載された通信カードを駆動する。
図中の番号に従い、ネットワークドライバおよび通信カードは以下の用に動作する。
（１）ステップ１
オペレーティングシステムのカーネルは、アプリケーションから送信要求のあったデータを、カーネル領域のバッファヘコピーした後、プロトコル処理、およびパケット化処理を行い、その後、ネットワークドライバの送信処理を起動する。
（２）ステップ２
ドライバは、カーネル領域で管理されている変数から、送信パケット用に確保されているバッファ量の値を読み出す。
（３）ステップ３
ドライバは、ステップ２で得た値にもとづいて、送信が終わったパケットの為に確保していたメモリの開放を行う方法を切替える。
【００１８】
方法としては、以下の２種類が一般的に行われている。
（Ａ）ステップ７で、ＴｘＢＤアドレスＦＩＦＯ（First In First Out）に、ＴｘＢＤ（Buffer Descriptor for transmission）が登録されていない場合に発行されるＮｏ ＴｘＢＤ割り込みを契機として開放を行う。
（Ｂ）ステップ４の前に、以前に送出したパケットの内、既に通信回線上に送出されたパケットを確保しているメモリを算出し、開放する。
以上の２種類の方法の切替えは、通信カード上の割り込みマスクレジスタをドライバから操作し、またドライバ中でどちらの方法を有効にするか指定するフラグ変数を用いる事で行われる。
（４）ステップ４
ドライバは、送信パケットを管理するＴｘＢＤ（Buffer Descriptor for transmission）に、送信要求のあったパケットのアドレスを設定する。
（５）ステップ５
ドライバは、ＴｘＢＤのアドレスを、通信カード上のＴｘＢＤアドレスＦＩＦＯにキューイングする。この時、ＴｘＢＤアドレスＦＩＦＯの空き領域がなければ、ＴｘＢＤｆｕ１１割り込みを発行する。
（６）ステップ６
通信カード上のＤＭＡコントローラの送信可能レジスタを有効にする。
カーネル、およびドライバは、アプリケーションからデータの送信要求がある限りは、上記ステップ１からステップ６の動作を繰り返し行う。
【００１９】
以降は、通信カードが行う動作である。
（７）ステップ７
通信カードは、送信可能レジスタが有効にされると、ＴｘＢＤアドレスＦＩＦＯからＴｘＢＤのアドレスを取り出す。この時、ＴｘＢＤアドレスＦＩＦＯにＴｘＢＤが登録されていない場合、ＮｏＴｘＢＤ割り込みを発行する。
（８）ステップ８
ステップ７で取得したＴｘＢＤに設定されている送信パケットのアドレスを元に、パケットを、パソコンのメインメモリから通信カード上のＦＩＦＯメモリヘとＤＭＡ転送を行う。
（９）ステップ９
ＤＭＡ転送が完了すると、フレーマに対して送信パケットがＦＩＦＯに転送された事が通知される。その後、フレーマは、ＦＩＦＯメモリから通信回線上にパケットを送出する。
【００２０】
前述（３）でのべた２種類のメモリ開放の方法は、以下のような特徴がある。
（Ａ）の方式では、割り込みで駆動されるために、確実にメモリ開放が行われるが、ショートパケットをバースト的に送出する場合は、割り込みが頻繁に発生するため、それに付随するスケジューリングの処理等の為にプロセッサヘの負荷が高くなり送信性能が低下する。
（Ｂ）の方式では、割り込みを用いないために、プロセッサヘの負荷が少なく、ショートパケットであっても、（Ａ）の方式と比較して高速にパケットを送出する事が出来る。
ただし、高速なプロセッサを用いた場合、プロセッサから通信カードヘのパケット送信要求のスピードに対して、ＤＭＡ転送のスピードが追い付かなくなり、バッファの開放が間に合わなくなる。この結果バッファが不足しはじめ、遂には１のステップでバッファの確保が出来なくなる。
（Ｂ）の方式では、このような状況ではバッファの開放ステップが実行されなくなるため、送信が完全に停止するデッドロックが発生するが、（Ａ）の方式では、このような状況でも、割り込みによりバッファ開放が駆動されるため、パケットの送信を継続する事ができる。
以上の２種類の方式のそれぞれ有利な点を生かすために、本参考例では、ステップ３で、バッファの消費量を元に、２種類のメモリ開放の方法を切替えている。
図６のうち、カーネル、およびドライバという四角で囲われている部分は、パソコンのプロセッサで動作する。
図５との対応関係は、以下のようになる。
【００２１】
【表１】
2006238477.tif 000003
【００２２】
図５において、パケット入力部１１から入力されたパケットは、パケットメモリ１２に転送される。パケットメモリ内で、転送されるデータはプロトコルのヘッダ部分とコンテンツ部分の両方が入っているものとする。
リソース消費量取得部２２では、パケットメモリ１２の使用量を取得する。取得された値は、カウンタ２１に保持される。
前記カウンタ２１の値がとり得る範囲は、あらかじめ特定の範囲毎に分割されており、送信処理部テーブル２０には、これらの分割された範囲に対して、強制メモリ開放送信処理部１５、非強制メモリ開放送信処理部１６が対応づけられて記述されている。
強制メモリ開放送信処理部１５、非強制メモリ開放送信処理部１６は、それぞれ以下のような送信処理方式で動作する。
【００２３】
強制メモリ開放送信処理部１５と、回線対応部１４の動作のフローチャートを図７に示す。
パケット入力部１１からのパケット入力があると（ステップ１０１）、当該パケットをメモリ１２に保持した後（ステップ１０２）、即時、パケットをパケットメモリ１２から回線対応部１４へＤＭＡ転送する（ステップ１０３）。
回線対応部１４は、パケットを通信回線上への送出が完了すると（ステップ１１１）、強制メモリ開放送信処理部１５の強制同期処理部１５ａを用いてハードウェア割り込みを発生させる。（ステップ１１２）
強制メモリ開放送信処理部１５は、この割り込みを検知すると（ステップ１０４）、パケットメモリ１２内の送出済パケットを確保していた領域の開放を行う（ステップ１０５）。
【００２４】
本送信処理は、強制同期処理部１５ａにより、パケットメモリ１２の開放を起動するために、通信回線上へのパケット送信完了後、確実にメモリ開放を行うことが出来る。
その半面、強制同期処理は、パケット処理装置のプロセッサで、高い処理優先度で動作するため、頻繁に強制同期処理部１５ａが起動される場合、パケット処理装置のプロセッサへの負荷が高くなり、送信性能が低下する欠点がある。
なお、一般的なパケット処理装置は、パケットを通信回線上から受信する処理も行う。その際、パケットが到着した事をパケット処理装置のプロセッサヘ通知する為にも同様の強制同期処理を行う。
この性質を利用して、パケット処理装置の受信処理における強制同期処理部１５ａの起動と協調して送信用のパケットメモリ１２を開放する強制メモリ開放処理方式も考えられる。
具体的には、プロセッサヘの負荷を軽減するために、通信回線上へのパケットの送信が完了した事を通知する割り込みが発生しないようにしている場合においても、通信回線上からパケットを受信した時は、プロセッサでの受信処理を起動する為に割り込みが発生する。このパケット受信時の割り込みの検知と同時に送信パケットを保持するパケットメモリを開放することによって、送信完了時の割り込みを用いなくてもパケットメモリの開放を行う契機とすることができる。
また、複数の送受信インターフェースを備えるパケット処理装置では、その他のインターフェースにおいて観測された強制同期処理部１５ａの起動と協調してパケットメモリ１２を開放する強制メモリ開放処理方式も考えられる。
具体的には、プロセッサヘの負荷を軽減するために、通信回線上へのパケットの送信が完了した事を通知する割り込みが発生しないようにしている場合においても、他の送受信インターフェースにおいて送信処理が完了したり、パケットを受信したりした場合は割り込みが発生する。この他の送受信インターフェースにおける割り込みの検知と同時に送信パケットを保持するパケットメモリを開放することによって。送信完了時の割り込みを用いなくてもパケットメモリの開放を行う契機とすることができる。
【００２５】
非強制メモリ開放送信処理部１６の動作のフローチャートを、図８に示す。
パケット入力部１１からのパケット入力があると（ステップ１２１）、当該パケットをメモリ１２に保持し（ステップ１２２）、回線対応部１４ヘパケットを転送する前に、パケットメモリ１２内の送出済パケットを確保していた領域を算出し（ステップ１２３）、パケットメモリ１２の領域を開放する（ステップ１２４）。
その後、パケットをパケットメモリ１２から回線対応部１４へＤＭＡ転送する（ステップ１２５）。
本送信処理は、強制同期処理部１５ａを用いないので、強制メモリ開放送信処理部１５と比較して、パケット処理装置のプロセッサヘの負荷を大幅に軽減させることができる。しかし、本送信処理は、メモリリソースを多く消費してしまうという欠点がある。
各送信処理部の特徴を図９に示す。
【００２６】
この状態で、比較部１９、送信処理部セレクタ１８の動作は以下のようになる。
（１）比較部１９は、カウンタ２１のカウント値と、あらかじめ設定された送信処理部テーブル２０のエントリとの比較を行う。
（２）カウンタ２１のカウント値は、パケットメモリ１２の使用量を保持しており、ここでは、その値が全パケットメモリ１２領域の５０％以上とする。
（３）比較部１９は、強制メモリ開放送信処理部１５を選択する。
（４）送信処理部セレクタ１８は、送信処理部切替器１７に対して、強制メモリ開放送信処理部１５を選択するように指示する。
パケット入力部１１によって入力されたパケットは、強制メモリ開放送信処理部１５を用いて、回線対応部１４にＤＭＡ転送される。
回線対応部１４は、パケットの通信回線上への送出が完了した後、強制同期処理部１５ａを起動し、パケットメモリ１２の開放を行う。
その後、（５）カウント値が、全パケットメモリ１２領域の５０％未満となる。
（６）比較部１９は、非強制メモリ開放送信処理部１６を選択する。
（７）送信処理部セレクタ１８は、送信処理部切替器１７に対して、非強制メモリ開放送信処理部１６を選択するように指示する。
パケット入力部１１によって入力されたパケットは、非強制メモリ開放送信処理部１６を用いて、送信済パケットのパケットメモリ領域を開放した後、パケットを回線対応部１４にＤＭＡ転送する。
【００２７】
図１０に本参考例における動作例を示す。
図１０において、縦方向が経過する時間を示しており、それぞれの縦線が各部の動作処理時間の経過を示す。
なお、図１０は、パケット入力部１１から連続してパケットメモリ１２に入力されたデータパケットを、次々にパケットメモリ１２から回線対応部１４に出力する場合である。
パケット入力部１１からのパケット送出要求の後、比較、送信処理部の切替えが行われる。
パケットメモリ１２の使用率が５０％以上の時、強制メモリ開放送信処理部１５において送信され、回線対応部１４にＤＭＡ転送される。
続くパケットのパケットメモリ１２からの送出の際、再度パケットメモリ１２の使用率をカウント値から読み出し、比較、送信処理部の切替えが行われる。
パケットメモリ１２の使用率が５０％未満となると非強制メモリ開放送信処理部１６が選択され、送信が行われる。
【００２８】
［参考例２］
図１１は、本発明の参考例２のパケット処理装置の概略構成を示すブロック図である。なお、図１１では、図５と同様に各々送信処理方式が異なる送信処理部が２つの場合を示す。
同図において、４８は計算処理能力取得部である。計算処理能力取得部４８は、汎用ＰＣ上で動作するプログラムや、プロセッサ上のレジスタで構成可能である。
カウンタ２１は、プログラム中のカウンタ変数の値として、メモリ上に保持することで実現する事が可能である。また、一般的なアップダウンカウンタ等でも構成する事ができる。
その他の構成要素は、図５と同様である。
図１１において、パケット入力部１１から入力されたデータパケットは、パケットメモリ１２に転送される。パケットメモリ１２内で転送されるデータは、プロトコルのヘッダ部分とコンテンツ部分の両方が入っているものとする。
計算処理能力取得部４８では、パケット処理装置のプロセッサの使用率を取得する。取得された値は、カウンタ２１に保持される。
前記カウンタ２１の値がとり得る範囲は、あらかじめ特定の範囲毎に分割されており、送信処理部テーブル４９には、これらの分割された範囲に対して、強制メモリ開放送信処理部１５、非強制メモリ開放送信処理部１６が対応づけられて記述されている。
また、強制メモリ開放送信処理部１５、非強制メモリ開放送信処理部１６は、それぞれ前述の参考例１で示したものと同等のものであるとする。
【００２９】
この状態で、比較部１９、送信処理部セレクタ１８の動作は以下のようになる。
（１）カウンタ２１のカウント値と、あらかじめ設定された送信処理部テーブル４９のエントリとの比較を行う。
（２）カウント値は、パケット処理装置のプロセッサの使用率を保持しており、ここでは、その値が５０％以上とする。
（３）比較部１９は、非強制メモリ開放送信処理部１６を選択する。
（４）送信処理部セレクタ１８は、送信処理部切替器１７に対して、非強制メモリ開放送信処理部１６を選択するように指示する。
パケット入力部１１によって入力されたパケットは、非強制メモリ開放送信処理部１６を用いて、回線対応部１４にＤＭＡ転送される。
その後、（５）カウント値が、５０％未満となる。
（６）比較部１９は、強制メモリ開放送信処理部１５を選択する。
（７）送信処理部セレクタ１８は、送信処理部切替器１７に対して、強制メモリ開放送信処理部１５を選択するように指示する。
パケット入力部１１によって入力されたパケットは、強制メモリ開放送信処理部１５を用いて、回線対応部１４にＤＭＡ転送される。
回線対応部１４は、パケットの通信回線上への送出が完了した後、強制同期処理部１５ａを起動し、パケットメモリ１２の開放を行う。
【００３０】
［参考例３］
図１２は、本発明の参考例３のパケット処理装置の概略構成を示すブロック図である。なお、図１２では、図５と同様に各々送信処理方式が異なる送信処理部が２つの場合を示す。
同図において、２８は送出プロトコル取得部、２７は送信処理部テーブル、５１は統計処理部である。
送出プロトコル取得部２８は、汎用ＰＣ上で動作するパターンマッチングを行なうプログラムや、パターンマッチング回路で構成可能であり、統計処理部５１は、汎用ＰＣ上で動作するプログラムで構成可能である。
カウンタ２１は、プログラム中のカウンタ変数の値として、メモリ上に保持することで実現する事が可能である。また、一般的なアップダウンカウンタ等でも構成する事ができる。
その他の構成要素は、図５と同様である。
図１２において、パケット入力部１１から入力されたデータパケットは、パケットメモリ１２に転送される。パケットメモリ１２内で転送されるデータは、プロトコルのヘッダ部分とコンテンツ部分の両方が入っているものとする。
送出プロトコル取得部２８は、送信パケットの宛先ポート番号、または、送信元ポート番号、または、宛先ポート番号と送信元ポート番号の組合せによってプロトコルを判別し、カウンタ２１において、プロトコル毎の送信パケット数を保存する。
【００３１】
統計処理部５１は、一定期間に送信した全パケット数に対する特定のプロトコルのパケット数の割合を算出し、この割合に対して閾値をあらかじめ設けている。
そして、前記カウンタ２１のカウント値に基づき、ある一定期間に閾値以上の割合をしめるプロトコルを出力する。また、このとき、全てのプロトコルが閾値に満たない場合は、もっとも送出したパケット数が多いプロトコルを出力する。
送信処理部テーブル２７には、各プロトコルに対応して、強制メモリ開放送信処理部１５、非強制メモリ開放送信処理部１６が対応づけられて記述されている。
図中のプロトコルＡとプロトコルＢは、それぞれ以下のような通信特性への要求条件を持つ。
プロトコルＡは、送信要求に対して、即時に、パケットをパケットメモリ１２から回線対応部１４に送出する事が必要である。ただし、パケットメモリ１２のリソースはあまり多く消費することはない。よって、非強制メモリ開放送信処理部１６が適している。
プロトコルＢは、送信要求に対して、即時に、パケットをパケットメモリ１２から回線対応部１４に送出する必要はない。ただし、パケットメモリ１２のリソースを多く消費する。よって、強制メモリ開放送信処理部１５が適している。
また、強制メモリ開放送信処理部１５、非強制メモリ開放送信処理部１６は、それぞれ前述の参考例１で示したものと同等のものであるとする。
【００３２】
この状態で、比較部１９、送信処理部セレクタ１８の動作は以下のようになる。
（１）プロトコル毎のパケット送出数を保持するカウンタ２１のカウント値に基づいて、統計処理部５１の出力と、送信処理部テーブル２７のエントリとの比較を行う。
（２）統計処理部５１は、カウンタ２１に保持されている値に基づいて、プロトコルＢのパケットが、最近の１分間に送出した全パケット数の５０％以上をしめると算出し、プロトコルＢを出力する。
（３）比較部１９は、強制メモリ開放送信処理部１５を選択する。
（４）送信処理部セレクタ１８は、送信処理部切替器１７に対して、強制メモリ開放送信処理部１５を選択するように指示する。
パケット入力部１１によって入力されたパケットは、強制メモリ開放送信処理部１５を用いて、回線対応部１４にＤＭＡ転送される。回線対応部１４は、パケットの通信回線上への送出が完了した後、強制同期処理部１５ａを起動し、パケットメモリ１２の開放を行う。
その後、（５）統計処理部５１は、カウンタ２１に保持されているカウント値に基づいて、プロトコルＡのパケットが、最近の１分間に送出した全パケット数の５０％以上をしめると算出し、プロトコルＡを出力する。
（６）比較部１９は、非強制メモリ開放送信処理部１６を選択する。
（７）送信処理部セレクタ１８は、送信処理部切替器１７に対して、非強制メモリ開放送信処理部１６を選択するように指示する。
パケット入力部１１によって入力されたパケットは、非強制メモリ開放送信処理部１６を用いて、回線対応部１４にＤＭＡ転送される。
【００３３】
［実施例１］
図１３は、本発明の実施例１のパケット処理装置の概略構成を示すブロック図である。なお、図１３では、各々異なる受信処理方式で動作する受信処理部が２つの場合を示す。
同図において、１４は回線対応部、３１は受信処理部テーブル、４７はパケット処理装置のリソース消費量を取得するリソース消費量取得部、４６はカウンタ、３４はカウンタ４６の値と受信処理部テーブル３１を比較する比較部、３５は比較部３４の結果を元に受信処理部を選択する受信処理部セレクタ、３６は受信処理部を切替える受信処理部切替器、４０，４４が各々異なる受信処理方式で動作する受信処理部、１２はパケットメモリ、３０はプロトコル処理部である。
受信処理部テーブル３１は、汎用なパソコンやワークステーション上で動作するプログラム上の変数として保持することで実現することが出来る。
リソース消費量取得部４７は、汎用なパソコン上で動作するプログラムで実現することができる。
カウンタ４６は、汎用なパソコンやワークステーション上で動作するプログラム上の変数や、一般的なアップダウンカウンタを用いて実現することが出来る。その他の構成要素は、図５と同様である。
【００３４】
比較部３４、受信処理部セレクタ３５、受信処理部切替器３６は、汎用なパソコン上で動作するプログラムで記述することが可能である。
受信処理部（４０，４４）は、汎用パソコン上で動作するプログラムや、通信ボード上でプログラムと協調して動作するＤＭＡコントローラ等のハードウェアで構成可能である。
また、受信処理部（４０，４４）を単一の受信処理部と、受信処理部の動作を異ならせることが可能な設定部によっても構成することも可能である。この場合の設定部は、汎用パソコンで動作し、通信ボード等のレジスタを設定するプログラムや、変数の値を設定するプログラムで構成可能である。
パケットメモリ１２は、汎用パソコンや、通信機器、通信ボード上のメモリとして構成可能である。
図１４は、図１３の構成において、実際の動作の様子を示す図である。
【００３５】
［具体的な実装例と、論理構成図との対応］
まず、本実施例の発明を、汎用パソコン上で動作しているオペレーティングシステムのネットワークドライバ部分に実装した具体例を図１５に示し、本ネットワークドライバの動作を解説するとともに、その動作と図１４との対応を明らかにする。
本ネットワークドライバは、汎用パソコンの拡張バスに搭載された通信カードを駆動する。図中の番号に従い、ネットワークドライバおよび通信カードは以下のように動作する。
（１）ステップ１
オペレーティングシステムのカーネルは、受信したパケットを格納するバッファ領域を確保すると共に、受信パケットの受信状態を管理するＲｘＢＤ（Buffer Descriptor for transmission）に、確保したバッファのアドレスをセットする。ＲｘＢＤは、ドライバの初期化時に一定数確保され、その後、通信カードのＲｘＢＤアドレスＦＩＦＯに、一定の数だけキューイングされる。
（２）ステップ２
ドライバは、カーネル領域で管理されている変数から、受信パケット用に確保されているバッファ量の値を読みだす。
【００３６】
（３）ステップ３
ドライバは、ステップ２で得た値にもとづいて、パケットを受信してから、そのパケットに対してパケット処理装置のプロトコル処理を開始するまでの遅延時間を異らせる。
前記遅延時間を異らせるためには、通信カード上のハードウェアで実現されているタイマーの時間を単位時間として、何周期分の時間を遅延させるかを、ドライバが通信カードのレジスタに設定する。
通信カードは、通信回線上からパケットが到着してから、設定された時間分だけタイマーを起動し、タイマー終了後に、割り込みを発生する。
ドライバは、前記割り込みを検知すると、プロセッサに対してプロトコル処理を開始するよう要求する。
（４）ステップ４
通信カード上のＤＭＡコントローラの受信可能レジスタを有効にする。
ドライバは、通信回線上からパケットが到着するのに先立って、前記ステップ１からステップ４の動作を行なう。
【００３７】
以降は、通信カードが行なう動作である。
（５）ステップ５
通信回線上からパケットが到着する。
（６）ステップ６
パケットは、パケットのフレーミング処理を行なうフレーマに処理され通信カード上のＦＩＦＯメモリに格納される。また、フレーマは同時にＤＭＡコントローラに対して、受信したパケットがＦＩＦＯに転送した事を通知する。
（７）ステップ７
ＤＭＡコントローラは、受信可能レジスタが有効にされていると、ＲｘＢＤアドレスＦＩＦＯからＲｘＢＤのアドレスを取り出す。
（８）ステップ８
ステップ７で取得したＲｘＢＤに設定されている受信パケット格納用バッファのアドレスを元に、パケットを、通信カード上のＦＩＦＯメモリからパソコンのメインメモリヘとＤＭＡ転送を行なう。
また、ＤＭＡコントローラは同時に、ＲｘＢＤに受信したパケットの長さや受信状態を表すフラグを書き込む。
（９）ステップ９
通信カードは、ステップ３で設定された遅延時間だけタイマーを起動し、タイマーの終了と同時に、ＲｘＢＤに受信処理に必要な情報を書き込んだ事を示すＲｘＢＤ  Ｍｏｄｉｆｙ割り込みを発行する。
通信カードは、通信回線上からパケットが到着するたびに、前述のステップ６からステップ９の動作をくり返し行なう。
【００３８】
ステップ９で発行された割り込みは、ドライバによって検知される。
以降は、割込み検知の後のドライバで行なう動作である。
（１０）ステップ１０
前述のＲｘＢＤ  Ｍｏｄｉｆｙ割り込みを検知した後、ドライバは、受信したパケットのバッファ領域のアドレスと、ＲｘＢＤとの関連付けを解除する。同時に、受信パケットのバッファアドレスは、カーネルでプロトコル処理を行なう為の所定の管理構造体にセットされる。
また、バッファ領域が切り放されたＲｘＢＤには、あらたに確保されたバッファ領域のアドレスがセットされる。このとき、受信パケットとは、ステップ９の遅延時間中にメインメモリに転送された全てのパケットを指す。
その結果、一度の割込みで、遅延時間中に到着した複数のパケットに対する処理を一括して行えるため、割込み処理が頻繁に起動することによるプロセッサヘの負荷を大幅に軽減することができる。
（１１）ステップ１１
その後、ドライバは、カーネルに対して、プロトコル処理を開始を要求する。プロトコル処理された受信パケットのバッファ領域は、アプリケーションのバッファ領域ヘコピーされるか、必要な処理が終了すると開放される。
【００３９】
前述のステップ３で設定される遅延時間の長短によって、以下のような特徴がある。
遅延時間が長い場合には、頻繁にパケットが到着する通信回線上では、より多くのパケットが一度の割込みで処理されるため、プロセッサ負荷の削減効果が大きい。
その半面、ステップ１０において、あらたな受信バッファが割り当てられるまでの遅延時間も長くなるために、メモリの消費量が大きくなり、メモリが不足する場合は受信性能が低下する。特に、到着するパケットのサイズが大幅に変化する場合、短いパケットを想定して遅延時間を長く設定すると、長いパケットが頻繁に到着した場合、メモリの不足を引き起こす。
遅延時間が短い場合には、ステップ１０において、あらたな受信バッファが割り当てられるまでの遅延時間が短いので、メモリの消費量が少なく、メモリの不足による受信性能の低下は起こりにくい。
ただし、一度の割込みで処理されるパケットの数が比較的すくなくなるために、頻繁にパケットが到着する通信回線上では、プロセッサヘの負荷が高く、受信性能が低下する。特に、到着するパケットのサイズが大幅に変化する場合、長いパケットの到着を想定して、遅延時間を短く設定すると、短いパケットが頻繁に到着した場合、プロセッサヘの負荷が高くなる。
遅延時間の長短それぞれに有利な点を生かすために、本実施例では、ステップ３で、バッファの消費量を元に、遅延時間の長さを異らせている。
図１５のうち、カーネル、およびドライバという四角で囲われている部分と、ステップ４は、パソコンのプロセッサで動作する。
図１４との対応関係は、以下のようになる。
【００４０】
【表２】
2006238477.tif 000004
【００４１】
図１４において、回線対応部１４から受信したデータパケットは、パケットメモリ１２に転送される。回線対応部１４から受信するデータは、プロトコルのヘッダ部分とコンテンツ部分の両方が入っているものとする。
リソース消費量取得部４７では、パケットメモリ１２の使用量を取得する。取得されたパケットメモリの使用量はカウンタ４６に保持される。
前記カウンタ４６の値がとり得る範囲は、あらかじめ特定の範囲毎に分割されており、受信処理部テーブル３１には、これらの分割された範囲に対して、受信処理部Ａ（４１）、受信処理部Ｂ（４２）、および受信処理部Ｃ（４３）の各々の受信処理部が対応づけられて記述されている。
受信処理部Ａ（４１）、受信処理部Ｂ（４２）、受信処理部Ｃ（４３）は、それぞれ以下のような受信処理方法の違いがある。
【００４２】
受信処理部の動作のフローチャートを、図１６に示す。
回線対応部１４にパケットが到着すると（ステップ１３１）、当該パケットは、パケットメモリ１２にＤＭＡ転送される（ステップ１３２）。
その後、受信処理部へ強制同期処理部の起動要求を行う（ステップ１３３）。
受信処理部は、前記強制同期処理部の起動要求が行われたことを検知すると（ステップ１４１）、一定時間の遅延処理を施した後（ステップ１４２）、強制同期処理を起動し（ステップ１４３）、パケットメモリ１２内のパケットが記憶された領域のアドレスをプロトコル処理部３０へ渡す（ステップ１４４）。
しかし、パケットの到着時間間隔が短い高速回線上では、強制同期処理の起動が頻繁に行われる為、パケット処理装置のプロセッサヘの負荷が高くなり受信性能が低下する。
この問題に対して、強制同期処理部の起動を行うまで一定時間の遅延処理を行い、遅延時間中に届いたパケットの受信を、一度の強制同期処理でまとめて行うという方法がとられる。
しかし、前記遅延時間は、到着するパケットの長さが数十バイトから数十キロバイトの様に広い範囲で変化する場合は、以下の理由より、パケットサイズの長さに応じて、適合した遅延時間が変化する。
【００４３】
パケット長が短い場合には、割り込みが頻繁に発生するため、プロセッサの負荷が特に高くなるが、パケットメモリ１２の消費量は多くないので遅延時間が長い方が良い。
パケット長が長い場合には、パケットメモリ１２の消費量が大きいため、遅延時間を長くしてしまうと、パケットメモリ１２が不足してしまう。よって、プロセッサの負荷が高くなっても遅延時間を長くすることが出来ない。ただし、パケット長が長い場合、もともとプロセッサの負荷は低いので遅延時間は短くてもよい。
受信処理部Ａ（４１）、受信処理部Ｂ（４２）、受信処理部Ｃ（４３）は異なる長さの遅延時間が設定してあり、受信処理部Ａ（４１）がもっとも短く、受信処理部Ｃ（４３）になるに従い徐々に遅延時間が長くなるように設定されている。
各遅延時間の長さによって決まる受信処理部の特徴を図１７に示す。
【００４４】
この状態で、比較部３４、受信処理部セレクタ３５の動作は、以下のようになる。
（１）カウンタ４６のカウント値と、受信処理部テーブル３１のエントリとの比較を行う。
（２）カウンタ４６は、リソース消費量取得部４７で取得されたパケットメモリ１２の使用量を保持しており、ここでは、パケットメモリ１２の使用量が、全パケットメモリ１２の６０％以上とする。
（３）比較部３４は、受信処理部Ｂ（４２）を選択する。
（４）受信処理部セレクタ３５は、受信処理部切替器３６に対して、受信処理部Ｂ（４２）を選択するように指示する。
回線対応部１４に到着したパケットは、パケットメモリ１２にＤＭＡ転送される。受信処理部Ｂ（４２）は、設定された遅延時間が経過した後に強制同期処理部４２ａを起動し、パケットメモリ１２内のパケットが記憶された領域のアドレスを、プロトコル処理部３０へ渡す。
その後、（５）カウンタ４６の値において、パケットメモリ１２使用量が４０％となる。（６）比較部３４は、受信処理部Ｃ（４３）を選択する。
（７）受信処理部セレクタ３５は、受信処理部切替器３６に対して、受信処理部Ｃ（４３）を選択するように指示する。
この後、回線対応部１４に到着したパケットは、パケットメモリ１２にＤＭＡ転送され、受信処理部Ｃ（４３）に設定された遅延時間が経過した後に強制同期処理部４３ａが起動される。
【００４５】
図１８に本実施例における動作例を示す。
図１８において、縦方向が経過する時間を示しており、それぞれの縦線が各部の動作処理時問の経過を示す。また、図１８は、回線対応部１４から連続して到着したデータパケットを、次々にパケットメモリ１２ヘＤＭＡ転送し、プロトコル処理部３０においてプロトコル処理を行う場合である。
回線対応部１４からのパケット入力の際、前記比較、受信処理部切替えが行われる。
パケットメモリの使用率が８０％の時、受信処理部Ａ（４１）において設定された時間が経過したのちに受信処理され、プロトコル処理部３０ヘパケットが渡される。
続くパケット入力の際に、再度パケットメモリ１２の使用率の算出が行われ、使用率が４０％に変化すると同時に、受信処理部Ｃ（４３）が選択され受信処理が行われる。
【００４６】
［実施例２］
図１９は、本発明の実施例２のパケット処理装置の概略構成を示すブロック図である。なお、図１９では、図１４と同様に各々異なる受信処理方式で動作する受信処理部が３つの場合を示す。
同図において、４８は計算処理能力取得部である。計算処理能力取得部４８は、プロセッサのレジスタ読み出しや、一般的なパソコン上で動作するプログラムとして構成する事が可能である。
カウンタ４６は、プログラム中のカウンタ変数の値として、メモリ上に保持することで実現する事が可能である。また、一般的なアップダウンカウンタ等でも構成する事ができる。
その他の構成要素は、図１４と同様である。
図１９において、回線対応部１４から受信したデータパケットは、パケットメモリ１２に転送される。回線対応部１４から受信するデータは、プロトコルのヘッダ部分とコンテンツ部分の両方が入っているものとする。
計算処理能力取得部４８では、パケット処理装置のプロセッサの使用率を取得する。取得された値は、カウンタ４６に保持される。
前記カウンタ４６の値がとり得る範囲は、あらかじめ特定の範囲毎に分割されており、受信処理部テーブル３１には、これらの分割された範囲に対して、受信処理部Ａ（４１）、受信処理部Ｂ（４２）、および受信処理部Ｃ（４３）の各々の受信処理部が対応づけられて記述されている。
また、受信処理部Ａ（４１）、受信処理部Ｂ（４２）、受信処理部Ｃ（４３）は、それぞれ前述の実施例１と同様のものである。
【００４７】
この状態で、比較部３４、受信処理部セレクタ３５の動作は、以下のようになる。
（１）カウンタ４６のカウント値と、受信処理部テーブル３１のエントリとの比較を行う。
（２）ここでは、プロセッサの使用率が、６０％以上とする。
（３）比較部３４は、受信処理部Ｂ（４２）を選択する。
（４）受信処理部セレクタ３５は、受信処理部切替器３６に対して、受信処理部Ｂ（４２）を選択するように指示する。
回線対応部１４に到着したパケットは、パケットメモリ１２にＤＭＡ転送される。受信処理部Ｂ（４２）は、設定された遅延時間が経過した後に強制同期処理部４２ａを起動し、パケットメモリ１２内の受信したパケットが記憶された領域のアドレスを、プロトコル処理部３０へ渡す。
その後、（５）プロセッサの使用率が４０％となるものとする。
（６）比較部３４は、受信処理部Ｃ（４３）を選択する。
（７）受信処理部セレクタ３５は、受信処理部切替器３６に対して、受信処理部Ｃ（４３）を選択するように指示する。
この後、回線対応部１４に到着したパケットは、パケットメモリ１２にＤＭＡ転送され、受信処理部Ｃ（４３）に設定された遅延時間が経過した後に強制同期処理部４３ａが起動される。
【００４８】
［実施例３］
図２０は、本発明の実施例３のパケット処理装置の概略構成を示すブロック図である。なお、図２０では、図１４と同様に各々異なる受信処理方式で動作する受信処理部が３つの場合を示す。
同図において、４５は受信プロトコル取得部、５０は統計処理部である。
受信プロトコル取得部４５は、汎用ＰＣ上で動作するパターンマッチングを行なうプログラムや、パターンマッチング回路で構成可能であり、統計処理部５１は、汎用ＰＣ上で動作するプログラムで構成可能である。
カウンタ４６は、プログラム中のカウンタ変数の値として、メモリ上に保持することで実現する事が可能である。また、一般的なアップダウンカウンタ等でも構成する事ができる。その他の構成要素は、図１４と同様である。
図２０において、回線対応部１４から受信したデータパケットは、パケットメモリ１２に転送される。回線対応部１４から受信するデータは、プロトコルのヘッダ部分とコンテンツ部分の両方が入っているものとする。
受信プロトコル取得部４５は、受信パケットの宛先ポート番号、または、送信元ポート番号、または、宛先ポート番号と送信元ポート番号の組合せによってプロトコルを判別し、カウンタ４６で、プロトコル毎の受信パケット数を記憶する。
【００４９】
統計処理部５０は、一定期間に受信した全パケット数に対する特定のプロトコルのパケット数の割合を算出し、この割合に対して閾値をあらかじめ設けている。
そして、前記カウンタ４６の値に基づき、ある一定期間に閾値以上の割合をしめるプロトコルを出力する。また、このとき、全てのプロトコルが閾値に満たない場合は、もっとも受信したパケット数が多いプロトコルを出力する。
受信処理部テーブル３１には、登録されている各プロトコルに対して受信処理部が対応づけられて記述されている。
プロトコルＡ、プロトコルＢはそれぞれ以下のような受信特性への要求条件を持つ。
プロトコルＡは、受信パケットに対する即時応答性が要求される。プロセッサでの処理は少ない。よって、遅延処理時間が短い受信処理部Ａ（４１）が適する。
プロトコルＢは、受信パケットに対して即時応答性は要求しないが、プロセッサで行う処理が多い。よって、遅延処理時間が長い受信処理部Ｃ（４３）が適する。
また、受信処理部Ａ（４１）、受信処理部Ｂ（４２）、受信処理部Ｃ（４３）は、それぞれ前述の実施例１と同様のものである。
【００５０】
この状態で、比較部３４、受信処理部セレクタ３５の動作は、以下のようになる。
（１）プロトコル毎のパケット受信数を保持するカウンタ４６のカウント値に基づいて、統計処理部５０の出力と、受信処理部テーブル３１のエントリとの比較を行う。
（２）統計処理部５０は、カウンタ４６に保持されている値に基づいて、プロトコルＡのパケットが、最近の１分間に受信した全パケット数の５０％以上をしめると算出し、プロトコルＡを出力する。
（３）比較部３４は、受信処理部Ａ（４１）を選択する。
（４）受信処理部セレクタ３５は、受信処理部切替器３６に対して、受信処理部Ａ（４１）を選択するように指示する。
回線対応部１４に到着したパケットは、パケットメモリ１２にＤＭＡ転送される。受信処理部Ａ（４１）は、設定された遅延時間が経過した後に強制同期処理部４１ａを起動し、パケットメモリ１２内の受信したパケットが記憶された領域のアドレスを、プロトコル処理部３０へ渡す。
その後、（５）統計処理部５０は、カウンタ４６に保持されているカウント値に基づいて、プロトコルＢのパケットが、最近の１分間に受信した全パケット数の５０％以上をしめると算出し、プロトコルＢを出力する。
（６）比較部３４は、受信処理部Ｂ（４２）を選択する。
（７）受信処理部セレクタ３５は、受信処理部切替器３６に対して、受信処理部Ｂ（４２）を選択するように指示する。
この後、回線対応部１４に到着したパケットは、パケットメモリ１２にＤＭＡ転送され、受信処理部Ｂ（４２）に設定された遅延時間が経過した後に強制同期処理部４２ａが起動される。
【００５１】
［実施例４］
図２１は、本発明の実施例４のパケット処理装置の概略構成を示すブロック図である。なお、図２１では、図１４と同様に各々異なる受信処理方式で動作する受信処理部が３つの場合を示す。
同図において、３９はトラヒックパターン情報取得部である。トラヒックパターン情報取得部３９は、通信ボードの持つパケット到着時間解析機能や、受信パケット長解析機能により実現する事ができる。また、汎用的なパソコンで動作するプログラムにおいて変数を調査することでも実現することが出来る。
カウンタ４６は、プログラム中のカウンタ変数の値として、メモリ上に保持することで実現する事が可能である。また、一般的なアップダウンカウンタ等でも構成する事ができる。その他の構成要素は、図１４と同様である。
図２１において、回線対応部１４から受信したデータパケットは、パケットメモリ１２に転送される。回線対応部１４から受信するデータは、プロトコルのヘッダ部分とコンテンツ部分の両方が入っているものとする。
トラヒックパターン情報取得部３９では、回線対応部１４から受信したデータパケットの到着時間間隔とパケットの長さを取得し、カウンタ４６に記憶される。
統計処理部５０は、トラヒック特性をいくつかのトラヒックパターンにあらかじめ分類しておき、前記カウンタ４６の値に基づきトラヒック特性（ここでは、平均パケット長、平均到着時間間隔）を算出し、トラヒックパターンのいずれかに当てはめて、このパターンの値を出力する。
受信処理部テーブル３１には、登録されている各トラヒック特性に対して適用する受信処理部が対応づけられて記述されている。
また、受信処理部Ａ（４１）、受信処理部Ｂ（４２）、受信処理部Ｃ（４３）は、それぞれ前述の実施例１と同様のものである。
【００５２】
この状態で、比較部３４、受信処理部セレクタ３５の動作は、以下のようになる。
（１）統計処理部５０の出力と、受信処理部テーブル３１のエントリとの比較を行う。
（２）統計処理部５０は、カウンタ４６に保持されているカウント値に基づいて、最近１分間の受信パケットの平均パケット長が１５００ｂｙｔｅ、平均到着時間間隔が２００ｍｓｅｃであると算出し、この値はトラヒックパターンＡに相当すると判断する。
（３）比較部３４は、受信処理部Ａ（４１）を選択する。
（４）受信処理部セレクタ３５は、受信処理部切替器３６に対して、受信処理部Ａ（４１）を選択するように指示する。
回線対応部１４に到着したパケットは、パケットメモリ１２にＤＭＡ転送される。受信処理部Ａ（４１）は、設定された遅延時間が経過した後に強制同期処理部４１ａを起動し、パケットメモリ１２内の受信したパケットが記載された領域のアドレスを、プロトコル処理部３０へ渡す。
その後、（５）統計処理部５０は、最近１分問の受信パケットの平均パケット長が２５０ｂｙｔｅ、平均到着時間間隔が１０ｍｓｅｃであると算出し、この値はトラヒックパターンＢに相当すると判断する。
（６）比較部３４は、受信処理部Ｂ（４２）を選択する。
（７）受信処理部セレクタ３５は、受信処理部切替器３６に対して、受信処理部Ｂ（４２）を選択するように指示する。
この後、回線対応部１４に到着したパケットは、パケットメモリ１２にＤＭＡ転送され、受信処理部Ｂ（４２）に設定された遅延時間が経過した後に強制同期処理部４２ａが起動される。
以上、本発明者によってなされた発明を、前記実施例に基づき具体的に説明したが、本発明は、前記実施例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは勿論である。
【図面の簡単な説明】
【００５３】
【図１】従来のパケット処理装置の送信処理を説明するための図である。
【図２】従来のパケット処理装置の受信処理を説明するための図である。
【図３】本発明の参考例１のパケット処理装置の概略構成を示すブロック図である。
【図４】本発明の参考例１のパケット処理装置の接続構成を説明するための図である。
【図５】図３の構成において、実際の動作の様子を示す図である。
【図６】本発明の参考例１のパケット処理装置を汎用のコンピュータ上で構成した場合を示す図である。
【図７】図５に示す強制メモリ開放送信処理部の動作を説明するフローチャートである。
【図８】図５に示す非強制メモリ開放送信処理部の動作を説明するフローチャートである。
【図９】図５に示す各送信処理部の特徴を説明する図である。
【図１０】本発明の参考例１のパケット処理装置の動作例を示す図である。
【図１１】本発明の参考例２のパケット処理装置の概略構成を示すブロック図である。
【図１２】本発明の参考例３のパケット処理装置の概略構成を示すブロック図である。
【図１３】本発明の実施例１のパケット処理装置の概略構成を示すブロック図である。
【図１４】図１３の構成において、実際の動作の様子を示す図である。
【図１５】本発明の実施例１のパケット処理装置を汎用のコンピュータ上で構成した場合を示す図である。
【図１６】図１４に示す受信処理部の動作を説明するフローチャートである。
【図１７】図１４に示す各受信処理部の特徴を説明する図である。
【図１８】本発明の実施例１のパケット処理装置の動作例を示す図である。
【図１９】本発明の実施例２のパケット処理装置の概略構成を示すブロック図である。
【図２０】本発明の実施例３のパケット処理装置の概略構成を示すブロック図である。
【図２１】本発明の実施例４のパケット処理装置の概略構成を示すブロック図である。
【符号の説明】
【００５４】
１１  パケット入力部
１２  パケットメモリ
１３  送信処理部
１４  回線対応部
１５  強制メモリ開放送信処理部
１５ａ，２９ａ，４０ａ，４１ａ，４２ａ，４３ａ，４４ａ  強制同期処理部
１６  非強制メモリ開放送信処理部
１７  送信処理部切替器
１８  送信処理部セレクタ
１９，３４  比較部
２０，２７，４９  送信処理部テーブル
２１，４６  カウンタ
２２，４７  リソース消費量取得部
２３  パケット処理装置Ａ
２４  パケット処理装置Ｂ
２５  送信用回線
２６  受信用回線
２８  送出プロトコル取得部
２９，４０，４４  受信処理部
３０  プロトコル処理部
３１  受信処理部テーブル
３５  受信処理部セレクタ
３６  受信処理部切替器
３９  トラヒックパターン情報取得部
４１  受信処理部Ａ
４２  受信処理部Ｂ
４３  受信処理部Ｃ
４５  受信プロトコル取得部
４８  計算処理能力取得部
５０，５１  統計処理部
【図１】
2006238477.tif 000005
【図２】
2006238477.tif 000006
【図３】
2006238477.tif 000007
【図４】
2006238477.tif 000008
【図５】
2006238477.tif 000009
【図６】
2006238477.tif 000010
【図７】
2006238477.tif 000011
【図８】
2006238477.tif 000012
【図９】
2006238477.tif 000013
【図１０】
2006238477.tif 000014
【図１１】
2006238477.tif 000015
【図１２】
2006238477.tif 000016
【図１３】
2006238477.tif 000017
【図１４】
2006238477.tif 000018
【図１５】
2006238477.tif 000019
【図１６】
2006238477.tif 000020
【図１７】
2006238477.tif 000021
【図１８】
2006238477.tif 000022
【図１９】
2006238477.tif 000023
【図２０】
2006238477.tif 000024
【図２１】
2006238477.tif 000025