(57)【要約】【課題】利便性に優れ、安価なネットワークインタフェースカードを実現することができるようにする。【解決手段】フレーム取得部２２１は、通信媒体からイーサネット（登録商標）フレームを取得し、FCS確認部２２２が、「ＦＣＳ」のフィールドに格納された値と、ＣＲＣ計算部２２３が計算したＣＲＣの値とを比較し、取得されたフレームが壊れていないか確認する。また、ＣＲＣ計算部２２３は、取得されたフレームの宛先ＭＡＣアドレスのＣＲＣを計算し、アドレスフィルタリング部２２４に供給する。アドレスフィルタリング部２２４は、当該フレームの宛先ＭＡＣアドレスのＣＲＣの値が、アドレステーブル管理部２２５により記憶されているアドレステーブル存在するか否かを判定してフィルタリング処理を行い、ＤＭＡ制御部２２６にフレームを供給する。本発明は、ネットワークインタフェースカードに適用することができる。【選択図】図６
2007208632.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して送信される信号に基づいて、データの所定の送信単位であるフレームを取得するフレーム取得手段と、
前記フレームに含まれるデータに基づいて、予め定められた方式でチェックシーケンスを演算する演算手段と、
前記演算手段により演算された前記チェックシーケンスと、前記フレームに予め付加されているチェックシーケンスが一致するか否かを確認することで、前記フレームが壊れているか否かを確認する確認手段と、
自分が受信すべきフレームのアドレスを示すデータに基づいて前記方式で予め演算されたチェックシーケンスの一覧をテーブルとして保持する保持手段と、
前記フレーム取得手段により取得された前記フレームの宛先アドレスを示すデータに基づいて前記演算手段により前記方式演算されるチェックシーケンスが、前記保持手段に保持されているテーブルの前記チェックシーケンスのうちのいずれかと一致するか否かを判定することにより、前記フレームを受信するか否かを判定する判定手段と
を備える情報処理装置。
【請求項２】
前記演算手段は、前記フレームに含まれるデータの、ＣＲＣ（Cyclic Redundancy Check）を計算することで前記チェックシーケンスを演算する
請求項１に記載の情報処理装置。
【請求項３】
前記保持手段は、予め定められた方式で抽出される前記チェックシーケンスの一部のデータのみを保持し、前記判定手段は、前記演算手段により演算される前記フレームの宛先アドレスを示すデータのチェックシーケンスの一部を前記方式で抽出することで得られるデータが、前記保持手段に保持されているテーブルのデータのうちのいずれかと一致するか否かを判定する
請求項２に記載の情報処理装置。
【請求項４】
前記フレームを送受信する端末の間でのメッセージ認証を行うために、メッセージダイジェストを生成する生成手段をさらに備える
請求項１に記載の情報処理装置。
【請求項５】
前記保持手段が、自分の受信すべきフレームのアドレスのデータに基づいて予め演算されたメッセージダイジェストの一覧をテーブルとして保持し、
前記判定手段は、前記生成手段により生成される前記フレームの宛先アドレスを示すデータのメッセージダイジェストが、前記保持手段に保持されているテーブルのメッセージダイジェストのうちのいずれかと一致するか否かを判定する
請求項４に記載の情報処理装置。
【請求項６】
前記判定手段により受信すると判定された前記フレームを、ＤＭＡ（Direct Memory Access）の処理により転送する転送手段をさらに備える
請求項１に記載の情報処理装置。
【請求項７】
ネットワークを介して送信される信号に基づいて、データの所定の送信単位であるフレームを取得し、
前記フレームに含まれるデータに基づいて、予め定められた方式でチェックシーケンスを演算し、
演算された前記チェックシーケンスと、前記フレームに予め付加されているチェックシーケンスが一致するか否かを確認することで、前記フレームが壊れているか否かを確認し、
前記フレームが壊れていないことが確認された場合、前記取得されたフレームの宛先アドレスを示すデータのチェックシーケンスを前記方式で演算し、
演算された前記チェックシーケンスが、テーブルとして保持されているチェックシーケンスであって、自分が受信すべきフレームのアドレスを示すデータに基づいて前記方式で予め演算されたチェックシーケンスのうちのいずれかに一致するか否かを判定することにより、前記フレームを受信するか否かを判定するステップ
を含む情報処理方法。
【請求項８】
ネットワークを介して送信される信号に基づいて、データの所定の送信単位であるフレームの取得を制御し、
前記フレームに含まれるデータに基づいて、予め定められた方式でのチェックシーケンスの演算を制御し、
演算された前記チェックシーケンスと、前記フレームに予め付加されているチェックシーケンスが一致するか否かを確認することで、前記フレームが壊れているか否かの確認を制御し、
前記フレームが壊れていないことが確認された場合、前記取得されたフレームの宛先アドレスを示すデータのチェックシーケンスの前記方式での演算を制御し、
演算された前記チェックシーケンスが、テーブルとして保持されているチェックシーケンスであって、自分が受信すべきフレームのアドレスを示すデータに基づいて前記方式で予め演算されたチェックシーケンスのうちのいずれかに一致するか否かを判定することにより、前記フレームを受信するか否かの判定を制御するステップ
を含むコンピュータが読み取り可能なプログラム。
【請求項９】
請求項８に記載のプログラムが記録されている記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法、プログラム、並びに記録媒体に関し、特に、利便性に優れ、安価なネットワークインタフェースカードを実現することができるようにする情報処理装置および方法、プログラム、並びに記録媒体に関する。
【背景技術】
【０００２】
一般的に、ネットワークによるデータ通信システムには、広域通信として代表的なインターネットがあり、他にも同一構内や同一建物内のような狭い範囲で構築されるローカルエリアネットワーク（local area network）、所謂ＬＡＮが知られており、代表的なものにイーサネット（登録商標）やトークンリング（商標）等がある。
【０００３】
例えば、パーソナルコンピュータなど、イーサネット（登録商標）に接続された端末においては、フレーム受信に関する処理が、次のようにして行われる。すなわち、端末がイーサネット（登録商標）フレームを受信する場合、受信したフレームがメモリコントローラを介したDMA（Direct Memory Access）の処理によりメモリに転送される。また、このＤＭＡの処理が終了したことがCPU（Central Processing Unit）に通知されることにより、端末におけるイーサネット（登録商標）フレームの受信処理が終了する。
【０００４】
しかしながら、ケーブルなどの通信媒体に接続されるネットワークインタフェースカードから取得されるフレームを全てDMAにより転送すると、端末の処理能力を著しく悪化させることになる。このため、通常、ネットワークインタフェースカードを介して取得されたフレームのヘッダ情報におけるアドレスと、予め設定されたテーブルに登録されているアドレス情報とを比較して、通信データのアドレスが登録されているか確認する、アドレスのフィルタリング処理が行われる。
【０００５】
近年、ネットワークの高速化などに伴い、上述したアドレスのフィルタリング処理を、CPUなどで実行されるソフトウェアの処理を介することなく、例えば、ネットワークインタフェースカードの内部などに専用の機能を設けて行う技術が普及してきている（例えば、特許文献１参照）。
【０００６】
図１は、アドレスのフィルタリング処理を行うネットワークインタフェースカードの機能的構成例を示すブロック図である。同図において、フレーム取得部２１は、通信媒体からイーサネット（登録商標）フレームを取得し、取得したフレームをＦＣＳ確認部２２に供給する。
【０００７】
FCS確認部２２は、イーサネット（登録商標）フレームの一部であるＦＣＳ（Frame Check Sequence）フィールドに格納されたデータ（値）と、ＣＲＣ計算部２３が計算したＣＲＣ（Cyclic Redundancy Check）の値とを比較し、取得されたフレームが壊れていないか確認する。ＣＲＣ計算部２３は、ＦＣＳフィールドを除くフレームのデータに基づいて３２ビットのＣＲＣを計算する。
【０００８】
FCS確認部２２により、フレームが壊れていないことが確認された場合、アドレスフィルタリング部２４は、当該フレームの宛先ＭＡＣアドレスとアドレステーブル管理部２５により記憶されているアドレステーブルに基づいて、フィルタリング処理を行い、ＤＭＡ制御部２６にフレームを供給する。アドレステーブル管理部２５は、当該ネットワークインタフェースカードに付与されたMACアドレス（ユニキャストのＭＡＣアドレス）、マルチキャストのMACアドレスなどが登録されたアドレステーブルを保持する。
【０００９】
ＤＭＡ制御部２６は、アドレスフィルタリング部２４から供給されたフレームのデータをメモリに転送するＤＭＡの処理を実行する。
【００１０】
図２は、図１に示されるネットワークインタフェースカードにおけるフレーム受信処理の例を説明するフローチャートである。ステップＳ１において、フレーム取得部２１は、通信媒体からイーサネット（登録商標）フレームを取得し、取得したフレームをＦＣＳ確認部２２とＣＲＣ計算部２３に供給する。
【００１１】
ステップＳ２において、ＣＲＣ計算部２３は、ステップＳ１の処理で取得されたフレームのＦＣＳフィールドを除いた部分のデータに基づいて３２ビットのＣＲＣを計算する。
【００１２】
ステップＳ３において、FCS確認部２２は、ステップＳ１の処理で取得されたフレームのＦＣＳフィールドに格納されたデータ（値）と、ステップＳ２の処理で計算されたＣＲＣの値とを比較し、両者が一致したか否かを判定する。両者が一致した場合、ステップＳ１の処理で取得されたフレームが壊れていないと判定され、処理は、ステップＳ４に進む。
【００１３】
ステップＳ４において、アドレスフィルタリング部２４は、当該フレームの宛先ＭＡＣアドレスをチェックする。
【００１４】
ステップＳ５において、アドレスフィルタリング部２４は、ステップＳ４でチェックした宛先ＭＡＣアドレスは、アドレステーブル管理部２５により記憶されているアドレステーブルに存在するか否かを判定する。
【００１５】
図３は、アドレステーブル管理部２５により記憶されているアドレステーブルの例を示す図である。同図においては、３つ（３種類）のＭＡＣアドレスがindex「０」乃至「２」に対応づけられて記憶されている。ここでは、６オクテット（４８ｂｉｔ）のＭＡＣアドレスが、オクテット毎にコロンで区切られて１６進数として表記されている。
【００１６】
図３において、index「０」に対応するMACアドレスは、ユニキャストのＭＡＣアドレスとされ、index「１」またはindex「２」に対応するＭＡＣアドレスは、マルチキャストのMACアドレスとされ、当該ネットワークインタフェースカードが実装される端末においては、index「０」乃至「２」に対応するMACアドレスが宛先ＭＡＣアドレスとして付与されているフレームが受信すべきフレームとされる。
【００１７】
図２のステップＳ５においては、ステップＳ４でチェックした宛先ＭＡＣアドレスが、index「０」乃至「２」に対応するMACアドレスのいずれかに一致するか否かが判定されることになる。
【００１８】
ステップＳ５において、ステップＳ４でチェックした宛先ＭＡＣアドレスは、アドレステーブル管理部２５により記憶されているアドレステーブルに存在すると判定された場合、処理は、ステップＳ６に進み、ＤＭＡ制御部２６によるＤＭＡ転送が行われる。すなわち、ステップＳ１で取得されたフレームのデータがＤＭＡの処理によりメモリに転送される。
【００１９】
一方、ステップＳ３において、ステップＳ１の処理で取得されたフレームのＦＣＳフィールドに格納されたデータ（値）と、ステップＳ２の処理で計算されたＣＲＣの値とが一致しないと判定された場合、または、ステップＳ５において、ステップＳ４でチェックした宛先ＭＡＣアドレスは、アドレステーブルに存在しないと判定された場合、処理は、ステップＳ７に進み、ステップＳ１の処理で取得されたフレームは破棄される。
【００２０】
【特許文献１】特開２００１−２３０８１３号公報
【発明の開示】
【発明が解決しようとする課題】
【００２１】
ところで、近年、マルチキャストなどの用途が増加しており、アドレステーブルに登録すべきＭＡＣアドレスの数も増加する傾向にあるが、ネットワークインタフェースカードのメモリの容量には、限りがあり多数のＭＡＣアドレスを登録させることができない。このため、例えば、ＭＡＣアドレスのハッシュ値を計算し、計算されたハッシュ値のみをアドレステーブルに登録させ、消費されるメモリの容量を抑制することも考えられる。
【００２２】
例えば、６ビットのハッシュ値とすると、４８ビットのＭＡＣアドレスに代えて、６ビットのハッシュ値を登録することにより、アドレステーブルのサイズを小さくすることが可能となる。
【００２３】
しかしながら、ネットワークインタフェースカードにおいて、上述したハッシュ値を演算するためには、そのための機能ブロックを新たに設ける必要がある。
【００２４】
すなわち、ハッシュ値が登録されたアドレステーブルを用いてフィルタリング処理を行う場合、アドレスフィルタリング部２４は、まず、当該フレームの宛先ＭＡＣアドレスに基づくハッシュ値を演算する機能ブロックにおいて演算させ、その演算結果（ＭＡＣアドレスのハッシュ値）とアドレステーブル管理部２５により記憶されているアドレステーブルに基づいて、フィルタリング処理を行うことになるが、この場合、宛先ＭＡＣアドレスに基づくハッシュ値を演算する機能ブロックを新たに設ける必要がある。
【００２５】
このように、従来の技術では、アドレステーブルに登録できるアドレスの数が充分とは言えず、また、登録できるアドレスの数を増やそうとすると、ネットワークインタフェースカードの構成を変更する必要があり、利便性に優れ、安価なネットワークインタフェースカードを実現することは困難であった。
【００２６】
本発明はこのような状況に鑑みてなされたものであり、利便性に優れ、安価なネットワークインタフェースカードを実現することができるようにするものである。
【課題を解決するための手段】
【００２７】
本発明の一側面は、ネットワークを介して送信される信号に基づいて、データの所定の送信単位であるフレームを取得するフレーム取得手段と、前記フレームに含まれるデータに基づいて、予め定められた方式でチェックシーケンスを演算する演算手段と、前記演算手段により演算された前記チェックシーケンスと、前記フレームに予め付加されているチェックシーケンスが一致するか否かを確認することで、前記フレームが壊れているか否かを確認する確認手段と、自分が受信すべきフレームのアドレスを示すデータに基づいて前記方式で予め演算されたチェックシーケンスの一覧をテーブルとして保持する保持手段と、前記フレーム取得手段により取得された前記フレームの宛先アドレスを示すデータに基づいて前記演算手段により前記方式演算されるチェックシーケンスが、前記保持手段に保持されているテーブルの前記チェックシーケンスのうちのいずれかと一致するか否かを判定することにより、前記フレームを受信するか否かを判定する判定手段とを備える情報処理装置である。
【００２８】
前記演算手段は、前記フレームに含まれるデータの、ＣＲＣ（Cyclic Redundancy Check）を計算することで前記チェックシーケンスを演算するようにすることができる。
【００２９】
前記保持手段は、予め定められた方式で抽出される前記チェックシーケンスの一部のデータのみを保持し、前記判定手段は、前記演算手段により演算される前記フレームの宛先アドレスを示すデータのチェックシーケンスの一部を前記方式で抽出することで得られるデータが、前記保持手段に保持されているテーブルのデータのうちのいずれかと一致するか否かを判定するようにすることができる。
【００３０】
前記フレームを送受信する端末の間でのメッセージ認証を行うために、メッセージダイジェストを生成する生成手段をさらに備えるようにすることができる。
【００３１】
前記保持手段が、自分の受信すべきフレームのアドレスのデータに基づいて予め演算されたメッセージダイジェストの一覧をテーブルとして保持し、前記判定手段は、前記生成手段により生成される前記フレームの宛先アドレスを示すデータのメッセージダイジェストが、前記保持手段に保持されているテーブルのメッセージダイジェストのうちのいずれかと一致するか否かを判定するようにすることができる。
【００３２】
前記判定手段により受信すると判定された前記フレームを、ＤＭＡ（Direct Memory Access）の処理により転送する転送手段をさらに備えるようにすることができる。
【００３３】
本発明の一側面は、ネットワークを介して送信される信号に基づいて、データの所定の送信単位であるフレームを取得し、前記フレームに含まれるデータに基づいて、予め定められた方式でチェックシーケンスを演算し、演算された前記チェックシーケンスと、前記フレームに予め付加されているチェックシーケンスが一致するか否かを確認することで、前記フレームが壊れているか否かを確認し、前記フレームが壊れていないことが確認された場合、前記取得されたフレームの宛先アドレスを示すデータのチェックシーケンスを前記方式で演算し、演算された前記チェックシーケンスが、テーブルとして保持されているチェックシーケンスであって、自分が受信すべきフレームのアドレスを示すデータに基づいて前記方式で予め演算されたチェックシーケンスのうちのいずれかに一致するか否かを判定することにより、前記フレームを受信するか否かを判定するステップを含む情報処理方法である。
【００３４】
本発明の一側面は、ネットワークを介して送信される信号に基づいて、データの所定の送信単位であるフレームの取得を制御し、前記フレームに含まれるデータに基づいて、予め定められた方式でのチェックシーケンスの演算を制御し、演算された前記チェックシーケンスと、前記フレームに予め付加されているチェックシーケンスが一致するか否かを確認することで、前記フレームが壊れているか否かの確認を制御し、前記フレームが壊れていないことが確認された場合、前記取得されたフレームの宛先アドレスを示すデータのチェックシーケンスの前記方式での演算を制御し、演算された前記チェックシーケンスが、テーブルとして保持されているチェックシーケンスであって、自分が受信すべきフレームのアドレスを示すデータに基づいて前記方式で予め演算されたチェックシーケンスのうちのいずれかに一致するか否かを判定することにより、前記フレームを受信するか否かの判定を制御するステップを含むコンピュータが読み取り可能なプログラムである。
【００３５】
本発明の一側面においては、ネットワークを介して送信される信号に基づいて、データの所定の送信単位であるフレームが取得され、前記フレームに含まれるデータに基づいて、予め定められた方式でチェックシーケンスが演算され、演算された前記チェックシーケンスと、前記フレームに予め付加されているチェックシーケンスが一致するか否かが確認することで、前記フレームが壊れているか否かが確認され、前記フレームが壊れていないことが確認された場合、前記取得されたフレームの宛先アドレスを示すデータのチェックシーケンスが前記方式で演算され、演算された前記チェックシーケンスが、テーブルとして保持されているチェックシーケンスであって、自分が受信すべきフレームのアドレスを示すデータに基づいて前記方式で予め演算されたチェックシーケンスのうちのいずれかに一致するか否かを判定することにより、前記フレームを受信するか否かが判定される。
【発明の効果】
【００３６】
本発明の一側面によれば、利便性に優れ、安価なネットワークインタフェースカードを実現することができる。
【発明を実施するための最良の形態】
【００３７】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００３８】
本発明の一側面の情報処理装置は、ネットワークを介して送信される信号に基づいて、データの所定の送信単位であるフレームを取得するフレーム取得手段（例えば、図６のフレーム取得部２２１）と、前記フレームに含まれるデータに基づいて、予め定められた方式でチェックシーケンスを演算する演算手段（例えば、図６のCRC計算部２２３）と、前記演算手段により演算された前記チェックシーケンスと、前記フレームに予め付加されているチェックシーケンスが一致するか否かを確認することで、前記フレームが壊れているか否かを確認する確認手段（例えば、図６のFCS確認部２２２）と、自分が受信すべきフレームのアドレスを示すデータに基づいて前記方式で予め演算されたチェックシーケンスの一覧をテーブルとして保持する保持手段（例えば、図６のアドレステーブル管理部２２５）と、前記フレーム取得手段により取得された前記フレームの宛先アドレスを示すデータに基づいて前記演算手段により前記方式演算されるチェックシーケンスが、前記保持手段に保持されているテーブルの前記チェックシーケンスのうちのいずれかと一致するか否かを判定することにより、前記フレームを受信するか否かを判定する判定手段（例えば、図６のアドレスフィルタリング部２２４）とを備える。
【００３９】
この情報処理装置は、前記保持手段が、予め定められた方式で抽出される前記チェックシーケンスの一部のデータ（例えば、下位６ビット）のみを保持し、前記判定手段は、前記演算手段により演算される前記フレームの宛先アドレスを示すデータのチェックシーケンスの一部を前記方式で抽出することで得られるデータが、前記保持手段に保持されているテーブルのデータのうちのいずれかと一致するか否かを判定するようにすることができる。
【００４０】
この情報処理装置は、前記フレームを送受信する端末の間でのメッセージ認証を行うために、メッセージダイジェストを生成する生成手段（例えば、図１３のＭＤ計算部２５２）をさらに備えるようにすることができる。
【００４１】
この情報処理装置は、前記判定手段により受信すると判定された前記フレームを、ＤＭＡ（Direct Memory Access）の処理により転送する転送手段（例えば、図６のＤＭＡ制御部２２６）をさらに備えるようにすることができる。
【００４２】
本発明の一側面の情報処理方法は、ネットワークを介して送信される信号に基づいて、データの所定の送信単位であるフレームを取得し（例えば、図７のステップＳ１０１の処理）、前記フレームに含まれるデータに基づいて、予め定められた方式でチェックシーケンスを演算し（例えば、図７のステップＳ１０２の処理）、演算された前記チェックシーケンスと、前記フレームに予め付加されているチェックシーケンスが一致するか否かを確認することで、前記フレームが壊れているか否かを確認し（例えば、図７のステップＳ１０３の処理）、前記フレームが壊れていないことが確認された場合、前記取得されたフレームの宛先アドレスを示すデータのチェックシーケンスを前記方式で演算し（例えば、図７のステップＳ１０４の処理）、演算された前記チェックシーケンスが、テーブルとして保持されているチェックシーケンスであって、自分が受信すべきフレームのアドレスを示すデータに基づいて前記方式で予め演算されたチェックシーケンスのうちのいずれかに一致するか否かを判定することにより、前記フレームを受信するか否かを判定する（例えば、図７のステップＳ１０５の処理）ステップを含む。
【００４３】
以下、図面を参照して、本発明の実施の形態について説明する。
【００４４】
図４は、本発明を適用した通信システムの一実施形態に係る構成例を示す図である。
【００４５】
図４において、端末１０１は、ネットワーク１０３を介して接続される端末１０２との間で情報の送受信を行うことができるように構成されている。
【００４６】
端末１０１は、例えば、パーソナルコンピュータとして構成され、内部にＣＰＵ（Central Processing Unit）１２１、RAM（Random Access Memory）などで構成されるメモリ１２２、イーサネット（登録商標）など所定のプロトコルで通信を行うネットワークとの接続インタフェースであるネットワークインタフェースカード１２３、およびネットワークインタフェースカード１２３を介して取得されるフレームなどをメモリ１２２に転送する（Direct Memory Access）の処理に関する制御を行うメモリコントローラ１２４を有する構成とされている。そして、ＣＰＵ１２１乃至メモリコントローラ１２４がデータバス１２５を介して相互に接続されている。
【００４７】
ネットワークによるデータ通信システムには、広域通信として代表的なインターネットがあり、他にも同一構内や同一建物内のような狭い範囲で構築されるローカルエリアネットワーク（local area network）、所謂ＬＡＮが知られており、代表的なものにイーサネット（登録商標）やトークンリング等がある。ネットワーク１０３において、端末１０１が接続される部分は、イーサネット（登録商標）の通信が行われる通信媒体により構成されるものとする。
【００４８】
端末１０１においては、イーサネット（登録商標）のフレーム受信に関する処理が、次のようにして行われる。すなわち、端末１０１がイーサネット（登録商標）フレームを受信する場合、受信したフレームがメモリコントローラ１２４を介したDMA（Direct Memory Access）の処理によりメモリ１２２に転送される。また、このＤＭＡの処理が終了したことがCPU１２１に通知されることにより、端末１０１におけるイーサネット（登録商標）フレームの受信処理が終了する。
【００４９】
しかしながら、ケーブルなどの通信媒体に接続されるネットワークインタフェースカード１２３から取得されるフレームを全てDMAにより転送すると、端末の処理能力を著しく悪化させることになる。このため、ネットワークインタフェースカード１２３を介して取得されたフレームのヘッダ情報におけるアドレスと、予め設定されたテーブルに登録されているアドレス情報とを比較して、通信データのアドレスが登録されているか確認する、アドレスのフィルタリング処理が行われる。
【００５０】
図５は、イーサネット（登録商標）フレームの構成を示す図である。同図に示されるようにイーサネット（登録商標）フレームは、６オクテット（４８ビット）の「Destination  Address」のフィールド、６オクテット（４８ビット）の「Source  Address」のフィールド、２オクテット（１６ビット）の「Type」のフィールド、４６乃至１５００オクテット（３６８ビット乃至１２０００ビット）の「Data」のフィールド、および４オクテット（３２ビット）の「ＦＣＳ（Frame Check Sequence）」のフィールドにより構成されている。
【００５１】
「Destination  Address」のフィールドには、宛先ＭＡＣアドレスが格納される。なお、ここでMAC（Media Access Control）アドレスは、イーサネット（登録商標）に接続する各インタフェースに割り当てられる固有の番号である。例えば、ネットワーク１０３が全てイーサネット（登録商標）で構成されている場合、端末１０２から端末１０１にデータが送信されるとき、「Destination  Address」のフィールドには、ネットワークインタフェースカード１２３に付与されたＭＡＣアドレスが格納される。
【００５２】
「Source  Address」のフィールドには、送信元ＭＡＣアドレスが格納される。例えば、ネットワーク１０３が全てイーサネット（登録商標）で構成されている場合、端末１０２から端末１０１にデータが送信されるとき、「Source  Address」のフィールドには、端末１０２に装着されたネットワークインタフェースカードに付与されたＭＡＣアドレスが格納される。
【００５３】
「Type」のフィールドには、フレームのバイト長または上位層のタイプを意味する値が格納される。例えば、「Type」のフィールドに格納される値が「0x800」である場合、このフレームの上位層はIPパケットであることを示す。
【００５４】
「Data」のフィールドには、このフレームにより送信すべき情報が格納される。
【００５５】
「ＦＣＳ」のフィールドには、「Destination  Address」のフィールド乃至「Data」のフィールドに格納された値に基づいて演算された誤り検出用のデータが格納される。イーサネット（登録商標）の場合、「ＦＣＳ」のフィールドには、３２ビットのＣＲＣ（Cyclic Redundancy Check）の値が格納される。なお、イーサネット（登録商標）フレームにおけるＣＲＣの演算については、「ＲＦＣ１９５２  Appendix」などに詳細に規定されている。
【００５６】
上述したアドレスのフィルタリング処理は、「Destination  Address」のフィールドに格納されたＭＡＣアドレスが予め設定されたテーブルに登録されているか否かを判定することにより行われる。本発明においては、このフィルタリング処理を、ネットワークインタフェースカード１２３により実行する。
【００５７】
図６は、アドレスのフィルタリング処理を行うネットワークインタフェースカード１２３の機能的構成例を示すブロック図である。同図において、フレーム取得部２２１は、通信媒体からイーサネット（登録商標）フレームを取得し、取得したフレームをＦＣＳ確認部２２２に供給する。
【００５８】
FCS確認部２２２は、イーサネット（登録商標）フレームの一部である「ＦＣＳ」のフィールドに格納されたデータ（値）と、ＣＲＣ計算部２２３が計算したＣＲＣの値とを比較し、取得されたフレームが壊れていないか確認する。上述したように、「ＦＣＳ」のフィールドには、「Destination  Address」のフィールド乃至「Data」のフィールドに格納された値に基づいて送信端末側で演算されたＣＲＣの値が格納されており、この値が、当該フレームを受信した端末が演算したＣＲＣの値と異なっていれば、当該フレームにビット誤り等が含まれているものと判断できる。一方、送信端末側で演算されたＣＲＣの値と、受信端末側で演算されたＣＲＣの値が一致すれば、当該フレームにビット誤り等はないものと判断できる。
【００５９】
ＣＲＣ計算部２２３は、フレーム取得部２２１により取得されたイーサネット（登録商標）フレームのＦＣＳフィールドを除くデータ（「Destination  Address」のフィールド乃至「Data」のフィールドに格納された値）に基づいて３２ビットのＣＲＣを計算する。また、ＣＲＣ計算部２２３は、必要に応じて、フレーム取得部２２１により取得されたフレームに格納された宛先ＭＡＣアドレスに基づいて３２ビットのＣＲＣを計算し、アドレスフィルタリング部２２４に供給する。
【００６０】
FCS確認部２２２により、当該フレームにビット誤り等がなくフレームが壊れていないことが確認された場合、アドレスフィルタリング部２２４は、当該フレームの宛先ＭＡＣアドレスに基づいてＣＲＣ計算部２２３が計算したＣＲＣの値と、アドレステーブル管理部２２５により記憶されているアドレステーブルに基づいて、フィルタリング処理を行い、ＤＭＡ制御部２２６にフレームを供給する。
【００６１】
アドレステーブル管理部２２５は、ネットワークインタフェースカード１２３に付与されたMACアドレス（ユニキャストのＭＡＣアドレス）、マルチキャストのMACアドレスなどを特定する値が登録されたアドレステーブルを保持する。アドレステーブル管理部２２５は、例えば、ユーザの操作、ＣＰＵ１２１からの指令などに基づいて、図９または図１０を参照して後述するようなアドレステーブルを生成または更新し、記憶する。なお、アドレステーブルに登録されるＭＡＣアドレスを特定するための値の詳細については後述する。
【００６２】
ＤＭＡ制御部２２６は、アドレスフィルタリング部２２４から供給されたフレームをメモリ１２２に転送するＤＭＡの処理を実行する。
【００６３】
図７は、図６に示されるような構成を有するネットワークインタフェースカード１２３におけるフレーム受信処理の例を説明するフローチャートである。ステップＳ１０１において、フレーム取得部２２１は、通信媒体からイーサネット（登録商標）フレームを取得し、取得したフレームをＦＣＳ確認部２２２とＣＲＣ計算部２２３に供給する。
【００６４】
ステップＳ１０２において、ＣＲＣ計算部２２３は、ステップＳ１０１の処理で取得されたフレームのＦＣＳフィールドを除いた部分のデータに基づいて３２ビットのＣＲＣを計算する。
【００６５】
ステップＳ１０３において、FCS確認部２２２は、ステップＳ１０１の処理で取得されたフレームのＦＣＳフィールドに格納されたデータ（値）と、ステップＳ１０２の処理で計算されたＣＲＣの値とを比較し、両者が一致したか否かを判定する。両者が一致した場合、ステップＳ１０１の処理で取得されたフレームが壊れていないと判定され、処理は、ステップＳ１０４に進む。
【００６６】
ステップＳ１０４において、アドレスフィルタリング部２２４は、当該フレームの宛先ＭＡＣアドレスのＣＲＣを、ＣＲＣ計算部２２３に計算させる。
【００６７】
ステップＳ１０５において、アドレスフィルタリング部２２４は、ステップＳ１０４で計算されたＣＲＣの値は、アドレステーブル管理部２２５により記憶されているアドレステーブルに存在するか否かを判定する。
【００６８】
アドレステーブル管理部２２５は、例えば、事前の操作、設定などに基づいて、端末１０１が受信すべきフレームの宛先ＭＡＣアドレスを特定する値が単数または複数登録されたアドレステーブルを記憶している。図８は、端末１０１が受信すべきフレームの宛先ＭＡＣアドレスの例を示す図である。
【００６９】
同図には、「08：00：46：ea：10：be」、「01：00：5e：00：00：0a」、および「01：00：5e：00：00：05」の３つのＭＡＣアドレスが示されている。なお、ここでは、６オクテット（４８ｂｉｔ）のＭＡＣアドレスが、オクテット毎にコロンで区切られて１６進数として表記されている。また、「08：00：46：ea：10：be」は、ユニキャストのＭＡＣアドレスとされ、「01：00：5e：00：00：0a」、および「01：00：5e：00：00：05」は、それぞれマルチキャストのMACアドレスとされ、端末１０１においては、図８に示される３つのMACアドレスのいずれかが宛先ＭＡＣアドレスとして格納されているフレームが受信すべきフレームとされる。
【００７０】
このとき、４８ｂｉｔのＭＡＣアドレスを、そのままアドレステーブルに登録して記憶すると、ネットワークインタフェースカード１２３のメモリの容量には、限りがあるため、多数のＭＡＣアドレスを登録させることができない。特に近年では、マルチキャストなどの用途が増加しており、アドレステーブルに登録すべきＭＡＣアドレスの数も増加する傾向にあり、アドレステーブルのサイズを小さくすることが期待されている。そこで、本発明においては、例えば、ＭＡＣアドレスのＣＲＣを計算し、計算されたＣＲＣの値のみをアドレステーブルに登録させ、アドレステーブルのサイズを小さくし、消費されるメモリの容量を抑制する。
【００７１】
図９は、図８に示されるＭＡＣアドレスのＣＲＣを演算することにより、生成されたアドレステーブルの例を示す図である。同図においては、３つ（３種類）の値（ＭＡＣアドレスのＣＲＣ）がindex「０」乃至「２」に対応づけられて記憶されている。index「０」乃至「２」に対応する値は、それぞれ、図８の「08：00：46：ea：10：be」、「01：00：5e：00：00：0a」、および「01：00：5e：00：00：05」のＭＡＣアドレスから演算されたＣＲＣの値であり、図中の「0x」は、その後に続く値が１６進数であることを表している。
【００７２】
このようにすることで、４８ｂｉｔのＭＡＣアドレスに代えて、３２ｂｉｔのＣＲＣの値がアドレステーブルに登録されるようになるので、記憶されるアドレステーブルのサイズをより小さくすることが可能になる。
【００７３】
アドレステーブルのサイズをさらに小さくしたい場合、それぞれのＭＡＣアドレスから演算された３２ビットのＣＲＣの値のうち、下位６ビットのみを抽出してアドレステーブルに登録させるようにしてもよい。図１０は、図９のアドレステーブルに登録されたＭＡＣアドレスのＣＲＣの値のうち、下位６ビットのみが抽出されて生成されたアドレステーブルの例を示す図である。
【００７４】
このようにすることで、４８ｂｉｔのＭＡＣアドレスに代えて、６ｂｉｔの値がアドレステーブルに登録されるようになるので、記憶されるアドレステーブルのサイズをさらに小さくすることが可能になる。
【００７５】
図７のステップＳ１０５においては、ステップＳ１０４で計算した宛先ＭＡＣアドレスのＣＲＣの値、またはそのＣＲＣの値の下位６ビットに対応する値が、図９または図１０のそれぞれindex「０」乃至「２」に対応する値のいずれかに一致するか否かが判定されることになる。
【００７６】
ステップＳ１０５において、ステップＳ４で計算した宛先ＭＡＣアドレスのＣＲＣの値（またはそのＣＲＣの値の下位６ビットに対応する値）が、アドレステーブル管理部２２５により記憶されているアドレステーブルに存在すると判定された場合、処理は、ステップＳ１０６に進み、ＤＭＡ制御部２２６によるＤＭＡ転送が行われる。すなわち、ステップＳ１０１で取得されたフレームのデータがＤＭＡの処理によりメモリ１２２に転送される。
【００７７】
一方、ステップＳ１０３において、ステップＳ１０１の処理で取得されたフレームのＦＣＳフィールドに格納されたデータ（値）と、ステップＳ１０２の処理で計算されたＣＲＣの値とが一致しないと判定された場合、または、ステップＳ１０５において、ステップＳ１０４で計算した宛先ＭＡＣアドレスのＣＲＣの値（またはそのＣＲＣの値の下位６ビットに対応する値）は、アドレステーブルに存在しないと判定された場合、処理は、ステップＳ１０７に進み、ステップＳ１０１の処理で取得されたフレームは破棄される。
【００７８】
このようにすることで、端末１０１がフレームを受信する際に、ネットワークインタフェースカード１２３において、高速のフィルタリング処理を行わせることが可能となるとともに、ネットワークインタフェースカード１２３のメモリ容量の消費を抑制することができる。
【００７９】
単にアドレステーブルのサイズを小さくし、メモリ容量の消費を抑制するだけが目的であれば、ＭＡＣアドレスのハッシュ値を計算し、計算されたハッシュ値のみをアドレステーブルに登録させることも考えられる。
【００８０】
図１１は、図８に示されるMACアドレスのそれぞれについて、次のような演算を行うことで得られるハッシュ値を、ＭＡＣアドレスに代えてアドレステーブルに記憶する場合の例を示す図である。
【００８１】
まず、次式のように、図８に示される３つのＭＡＣアドレスについて、各オクテットの和を演算する。なお、次式における「0x」は、その後に続く値が１６進数であることを表している。
【００８２】
0x08＋0x00＋0x46＋0xea＋0x10＋0xbe＝0x206
【００８３】
0x01＋0x00＋0x5e＋0x00＋0x00＋0x0a＝0x69
【００８４】
0x01＋0x00＋0x5e＋0x00＋0x00＋0x05＝0x64
【００８５】
上記の演算結果である、「0x206」、「0x69」、「0x64」のそれぞれについて、下位６ビットを抽出し、ハッシュ値とすると、図１０に示されるＭＡＣアドレスと同じ意味をもつ図１１に示されるようなアドレステーブルを生成することができる。すなわち、４８ビットのＭＡＣアドレスに代えて、６ビットのハッシュ値を登録することにより、アドレステーブルのサイズを小さくすることが可能となる。
【００８６】
しかしながら、ネットワークインタフェースカードにおいて、上述したハッシュ値を演算するためには、そのための機能ブロックを新たに設ける必要がある。図１２は、図１１に示されるようなアドレステーブルを用いてフィルタリング処理を行うことができるようにしたネットワークインタフェースカードの機能的構成例を示す図である。
【００８７】
図１２の例では、図６の場合と異なり、ハッシュ関数演算部２２７が設けられている。すなわち、図１１に示されるようなアドレステーブルを用いてフィルタリング処理を行う場合、アドレスフィルタリング部２２４は、まず、当該フレームの宛先ＭＡＣアドレスに基づくハッシュ値をハッシュ関数演算部２２７に演算させ、その演算結果（ＭＡＣアドレスのハッシュ値）とアドレステーブル管理部２２５により記憶されているアドレステーブルに基づいて、フィルタリング処理を行い、ＤＭＡ制御部２２６にフレームを供給することになる。
【００８８】
このような場合、従来のネットワークインタフェースカードの構成を変更する必要があり、利便性に優れ、安価なネットワークインタフェースカードを実現することは困難となる。
【００８９】
そこで本発明においては、宛先ＭＡＣアドレスのＣＲＣを計算する。すなわち、ＣＲＣは、送信経路中のデータの誤りの有無などを検出するためのフレームチェックシーケンスとして利用されることが多いが、ＣＲＣを、任意のビット長のデータから３２ビットのハッシュ値を算出する、一種のハッシュ関数として利用することもできるので、従来のフレームチェックシーケンスの生成に用いられていたＣＲＣ計算部２２３により、宛先ＭＡＣアドレスのＣＲＣも計算するようにすれば、図１２の構成の場合と同様の機能を、従来のネットワークインタフェースカードの構成を大幅に変更することなく実現することが可能となる。
【００９０】
このように本発明においては、図６と図７を参照して上述したように、従来のネットワークインタフェースカードにも含まれる機能ブロックであるＣＲＣ計算部２２３により、宛先ＭＡＣアドレスのＣＲＣを計算するようにしたので、利便性に優れ、安価なネットワークインタフェースカードを実現することが可能となる。
【００９１】
ところで、近年、ネットワークセキュリティに関する技術が普及し、IPsecなどの技術を実装するネットワーク機器も増えている。IPsecでは、暗号、認証のパラメータを動的に生成して交換するIKE(Internet Key Exchange)という自動鍵交換のプロトコルが規定されており、MD５による認証アルゴリズム、DESによる暗号化アルゴリズムなどを最低限実装する必要がある。
【００９２】
IPsecに関する処理を、例えば、ネットワークインタフェースカードにおいて実行させるように構成した場合、ネットワークインタフェースカードの機能的構成例は、図１３に示されるようになる。
【００９３】
図１３のフレーム取得部２２１乃至ＤＭＡ制御部２２７は、それぞれ図６のフレーム取得部２２１乃至ＤＭＡ制御部２２７と同様なので詳細な説明は省略する。図１３の場合、図６の場合と異なり、IPsec実行部２３１が設けられている。IPsec実行部２３１は、アドレスフィルタリング部２２４から供給されるイーサネット（登録商標）フレームに含まれるＩＰパケットのデータについて暗号、認証などIPsecで規定される一連の処理を実行する機能ブロックである。
【００９４】
上述したように、IPsecではMD５による認証アルゴリズム、DESによる暗号化アルゴリズムなどを最低限実装する必要があるため、IPsec実行部２３１には、ＭＤ５のアルゴリズムによるＭＤ（Message Digest）の計算を行うＭＤ計算部２５２、ＭＤ計算部２５２で計算されたＭＤと、IPパケットに含まれるMDとを比較して一致しているか否かを確認するMD確認部２５１が含まれることになる。ここで、MDは、原文のデータに基づいて演算される固定長のハッシュ値である。
【００９５】
例えば、図１３に示されるように構成されるネットワークインタフェースカードにおいては、宛先ＭＡＣアドレスのＭＤ、すなわち宛先ＭＡＣアドレスのハッシュ値をアドレステーブルに登録させるようにしてアドレステーブルのサイズを小さくするようにすることも可能である。
【００９６】
すなわち、図６の例においては、ＣＲＣ計算部２２３が「FCS」のフィールドに格納された値と比較するためのＣＲＣを計算するとともに、宛先ＭＡＣアドレスのＣＲＣを計算するようにしたのに対して、図１３の例では、ＭＤ計算部２５２がメッセージ認証のためのハッシュ値（ＭＤ）を計算するとともに、宛先ＭＡＣアドレスのハッシュ値（ＭＤ）を計算するようにすればよい。
【００９７】
図６のような構成を有するネットワークインタフェースカードにおけるフレーム受信処理の例を、図１４のフローチャートを参照して説明する。
【００９８】
図１４のＳ２０１乃至Ｓ２０３の処理は、図７のＳ１０１乃至Ｓ１０３の処理と同様なので、詳細な説明は省略する。
【００９９】
ステップＳ２０４において、アドレスフィルタリング部２２４は、当該フレームの宛先ＭＡＣアドレスのハッシュ値を、ＭＤ計算部２５２に計算させる。
【０１００】
ステップＳ２０５において、アドレスフィルタリング部２２４は、ステップＳ２０４で計算されたハッシュ値が、アドレステーブル管理部２２５により記憶されているアドレステーブルに存在するか否かを判定する。
【０１０１】
いまの場合、アドレステーブル管理部２２５は、例えば、図８に示されるＭＡＣアドレスのハッシュ値をそれぞれ演算することにより、生成されたアドレステーブルを記憶しており、ＭＡＣアドレスに代えて、ハッシュ値がアドレステーブルに登録されるようになるので、記憶されるアドレステーブルのサイズをより小さくすることが可能になる。
【０１０２】
ステップＳ２０５においては、ステップＳ２０４で計算した宛先ＭＡＣアドレスのハッシュ値が、アドレステーブルに登録された値のいずれかに一致するか否かが判定されることになる。
【０１０３】
ステップＳ２０５において、ステップＳ２０４で計算した宛先ＭＡＣアドレスのハッシュ値が、アドレステーブル管理部２２５により記憶されているアドレステーブルに存在すると判定された場合、処理は、ステップＳ２０６に進み、ＤＭＡ制御部２２６によるＤＭＡ転送が行われる。すなわち、ステップＳ２０１で取得されたフレームのデータがＤＭＡの処理によりメモリ１２２に転送される。
【０１０４】
一方、ステップＳ２０３において、ステップＳ２０１の処理で取得されたフレームのＦＣＳフィールドに格納されたデータ（値）と、ステップＳ２０２の処理で計算されたＣＲＣの値とが一致しないと判定された場合、または、ステップＳ２０５において、ステップＳ２０４で計算した宛先ＭＡＣアドレスのハッシュ値は、アドレステーブルに存在しないと判定された場合、処理は、ステップＳ２０７に進み、ステップＳ２０１の処理で取得されたフレームは破棄される。
【０１０５】
このようにすることで、端末１０１がフレームを受信する際に、ネットワークインタフェースカード１２３において、高速のフィルタリング処理を行わせることが可能となるとともに、ネットワークインタフェースカード１２３のメモリ容量の消費を抑制することができる。また、ネットワークインタフェースカードにすでに実装されているIPsec実行部２３１により、宛先ＭＡＣアドレスのハッシュ値を計算するようにしたので、利便性に優れ、安価なネットワークインタフェースカードを実現することが可能となる。
【０１０６】
なお、上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。すなわち、上述したネットワークインタフェースカードを情報処理装置として構成し、その情報処理装置にインストールされたソフトウェアにより上述した一連の処理を実行させるようにすることも可能である。上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、インターネットなどのネットワークや、リムーバブルメディアなどからなる記録媒体からインストールされる。
【０１０７】
本明細書において上述した一連の処理を実行するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【図面の簡単な説明】
【０１０８】
【図１】従来のネットワークインタフェースカードの機能的構成例を示すブロック図である。
【図２】図１のネットワークインタフェースカードにおけるフレーム受信処理を説明するフローチャートである。
【図３】従来のアドレステーブルの例を示す図である。
【図４】本発明を適用した通信システムの一実施形態に係る構成例を示す図である。
【図５】イーサネット（登録商標）フレームの構成例を示す図である。
【図６】本発明を適用したネットワークインタフェースカードの機能的構成例を示すブロック図である。
【図７】図６のネットワークインタフェースカードにおけるフレーム受信処理を説明するフローチャートである。
【図８】ＭＡＣアドレスの例を示す図である。
【図９】本発明で用いられるアドレステーブルの例を示す図である。
【図１０】本発明で用いられるアドレステーブルの別の例を示す図である。
【図１１】ハッシュ値を用いて生成されたアドレステーブルの例を示す図である。
【図１２】図１１のアドレステーブルに対応して構成されるネットワークインタフェースカードの機能的構成例を示すブロック図である。
【図１３】本発明を適用したネットワークインタフェースカードの別の機能的構成例を示すブロック図である。
【図１４】図１３のネットワークインタフェースカードにおけるフレーム受信処理を説明するフローチャートである。
【符号の説明】
【０１０９】
１０１  端末，  １０２  端末，  １０３  ネットワーク，  １２１  ＣＰＵ，  １２２  メモリ，  １２３  ネットワークインタフェースカード，  ２２１  フレーム取得部，  ２２２  ＦＣＳ確認部，  ２２３  ＣＲＣ計算部，  ２２４  アドレスフィルタリング部，  ２２６  ＤＭＡ制御部，  ２３１  IPsec実行部，  ２５１  ＭＤ確認部，  ２５２  ＭＤ計算部
【図１】
2007208632.tif 000003
【図２】
2007208632.tif 000004
【図３】
2007208632.tif 000005
【図４】
2007208632.tif 000006
【図５】
2007208632.tif 000007
【図６】
2007208632.tif 000008
【図７】
2007208632.tif 000009
【図８】
2007208632.tif 000010
【図９】
2007208632.tif 000011
【図１０】
2007208632.tif 000012
【図１１】
2007208632.tif 000013
【図１２】
2007208632.tif 000014
【図１３】
2007208632.tif 000015
【図１４】
2007208632.tif 000016