(57)【要約】【課題】パケット受信のフィルタリング設定に伴うホストコンピュータへの負担を軽減する。【解決手段】ネットワークアダプタ１が備えるアドレス認識部１２は、ホストコンピュータ２から送信されるパケットの送信元アドレスを認識する。認識したアドレスは、通過アドレスとして、受信パケットフィルタリング部１４に登録される。【選択図】図１
2009071423.tif 000002
【特許請求の範囲】
【請求項１】
仮想コンピュータを提供するホストコンピュータに接続し、ネットワークとの間でパケットを送受信するネットワークアダプタであって、
前記ホストコンピュータから送信されるパケットおよび前記ホストコンピュータにより提供される仮想コンピュータから送信されるパケットの送信元アドレスを認識する認識手段と、
前記ネットワークから受信するパケットをフィルタリングするフィルタリング部と、
前記認識手段によって認識されたアドレスを前記フィルタリング部における通過アドレスとして設定する制御手段、
を有することを特徴とするネットワークアダプタ。
【請求項２】
前記ホストコンピュータから送信されるパケット、もしくは、前記ホストコンピュータにより提供される仮想コンピュータから送信されるパケットを受信することをトリガとして、前記フィルタリング部における通過アドレスの設定を行う
ことを特徴とする請求項１に記載のネットワークアダプタ。
【請求項３】
ホストコンピュータに接続し、ネットワークとの間でパケットを送受信するネットワークアダプタであって、
前記ホストコンピュータから送信される、もしくは、前記ホストコンピュータが受信するマルチキャスト制御パケットに含まれているマルチキャストアドレスから、前記ホストコンピュータの属するマルチキャストグループを識別する、ハードウェアマルチキャストアドレスを算出する算出手段と、
前記ネットワークから受信するパケットをフィルタリングするフィルタリング部と、
前記算出手段によって算出されたハードウェアマルチキャストアドレスを、前記フィルタリング部における通過アドレスとして設定する制御手段、
を有することを特徴とするネットワークアダプタ。
【請求項４】
前記マルチキャスト制御パケットに設定されている制御メッセージを解析する解析手段をさらに有し、
前記制御手段は、マルチキャストグループへの参加を標示した制御メッセージが前記解析手段により検出されたときに、前記ハードウェアマルチキャストアドレスを前記フィルタリング部における通過アドレスとして設定する
ことを特徴とする請求項３に記載のネットワークアダプタ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータに接続されるネットワークアダプタに関し、特に、ネットワークアダプタにおけるパケットのフィルタリングに関連する。
【背景技術】
【０００２】
イーサネット（登録商標）のように同報型の通信モデルを採用するネットワークにおいては、あるコンピュータがパケットを送信すると、基本的に、そのネットワーク内の他の全てのコンピュータにそのパケットが送信される。従って、あるホストコンピュータのネットワークアダプタが受信したパケットの全てがそのホストコンピュータ宛のものとは限らない。ホストコンピュータは不要なパケットを受信した場合には、そのパケットを破棄する。
【０００３】
しかし、高速なネットワークにおいて、不要なパケットを大量に受信した場合に、それをチェックして破棄するホストコンピュータの負荷は大きい。このため、一般に、ネットワークアダプタは、図１４に示すように、受信パケットを選別するフィルタリング機構を有している。一例としてはパケットに含まれている宛先ハードウェアアドレスを用いて、以下のようにフィルタリングが行われる。
【０００４】
（１）ホストコンピュータが、ネットワークアダプタ自身のハードウェアアドレス等のホストコンピュータが受信すべきパケットに付されることが想定されるアドレスを、ネットワークアダプタに登録する。
（２）フィルタリング機構が、ネットワークから受信したパケットの宛先ハードウェアアドレスを認識する。イーサネットの場合はＭＡＣアドレスが認識されることになる。
（３）認識された宛先アドレスが、すでに登録されているアドレスである場合か、ブロードキャストアドレスやマルチキャストアドレスなどの同報アドレスである場合に、受信パケットをホストコンピュータに転送する。転送の対象とならないパケットはネットワークアダプタによって破棄される。
【０００５】
すなわち、ネットワークアダプタのフィルタリング機構へのアドレス登録は、ホストコンピュータによって制御される。
ホストコンピュータによる、ネットワークアダプタへのＭＡＣアドレスの登録を用いた技術は特許文献１にも記載されている。アドレスの登録に関連して、特許文献２には、パケットの送信元端末のＭＡＣアドレスを使用してアクセスポイントに認証要求を行い、認証が成功した場合にそのアドレスを登録する無線ＬＡＮ子局が開示されている。また、特許文献３には、アドレスを格納する学習テーブルを有するブリッジ装置が開示されている。
【特許文献１】特表２００１−５１０９４７号公報
【特許文献２】特開２００５−１９２０５９号公報
【特許文献３】特公平６−２４３６８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来、ホストコンピュータには一つのハードウェアアドレスが割り当てられる構成が一般的であった。従って、前述のようにホストコンピュータがネットワークアダプタのフィルタリング機構へのアドレス登録を制御するシステムであっても、なんらの問題もなく、ホストコンピュータのパケット処理に関する負担を軽減できた。
【０００７】
しかし近年では、仮想環境が広まってきていることにより、ホストコンピュータに複数の仮想的なハードウェアアドレスが割り当てられることがある。すなわち、仮想化技術により、ホストコンピュータ上で仮想コンピュータを動作させ、仮想コンピュータに仮想ネットワークアダプタを設定して仮想ハードウェアアドレスを割り当てることができる。さらに仮想コンピュータを含む仮想ネットワークが構築されることもある。
【０００８】
従来のシステムにおいて仮想環境を実現するときには、物理ホストコンピュータが物理ネットワークアダプタのフィルタリング機構に、パケットの宛先となる仮想ハードウェアアドレスを登録する。従って、物理ホストコンピュータは仮想ハードウェアアドレスを認識して登録する必要がある。物理ホストコンピュータに物理ネットワークアダプタが一つだけ存在している場合においては、仮想ハードウェアアドレスを認識して、認識したアドレスを物理的ハードウェアアドレスと共に登録すればよい。一方、物理ホストコンピュータに複数の物理ネットワークアダプタが存在している場合においては、全ての仮想ネットワークアダプタが個々の物理ネットワークアダプタに接続されているとは限らない。そこで、物理ホストコンピュータは、登録しようとするアドレスが割り当てられている仮想ネットワークアダプタと接続している物理ネットワークアダプタに、ハードウェアアドレスの登録をする必要が生じる。正しく設定されれば、物理ネットワークアダプタは登録されたアドレスへのパケットを破棄せずに転送し、仮想コンピュータや仮想ネットワークは、物理ホストコンピュータの外のネットワークから送信されたパケットを受信できる。
【０００９】
前述のとおり、仮想ハードウェアアドレスをフィルタリング機構に登録するためには、物理ホストコンピュータが仮想ハードウェアアドレスや、仮想ネットワーク構成を認識する必要がある。さらに、物理ホストコンピュータが動作している間に、仮想コンピュータが停止、再起動することがよくあるため、物理ホストコンピュータは初期化の際だけでなく、常に、仮想ネットワーク構成などを認識している必要がある。この認識は、具体的には、物理ホストコンピュータ上で動作する仮想化ソフトウェアが行い、仮想化ソフトウェアはフィルタリング機構への登録も管理している。そのため、仮想アドレス数の増加やネットワーク構成の複雑化に伴って、仮想化ソフトウェア自体も複雑化してきている。仮想化ソフトウェアが複雑化すると、その設計、実装、検証も複雑で困難なものになる。さらに、仮想化ソフトウェアの検証が困難であるために不具合を見つけにくくなれば、ホストコンピュータや仮想コンピュータ等の誤動作の危険性も増大し得る。また、複雑な仮想化ソフトウェアを動作させることは、ホストコンピュータへの負荷を増大させる恐れまで生じ得る。
【００１０】
なお、例えば、ネットワークアダプタに特許文献３に記載の学習型ブリッジと同様の学習機能を設けると、ネットワーク上のほぼ全てのハードウェアアドレスを登録する必要が生じ得る。従って、数千〜数万ものエントリ数を必要とし、実装コストが高くなり、実用的ではない。
【００１１】
本発明の課題は、パケット受信のフィルタリング設定に伴うホストコンピュータへの負担を軽減することである。
【課題を解決するための手段】
【００１２】
本発明にかかるネットワークアダプタは、仮想コンピュータを提供するホストコンピュータに接続し、ネットワークとの間でパケットを送受信するネットワークアダプタであって、前記ホストコンピュータから送信されるパケットおよび前記ホストコンピュータにより提供される仮想コンピュータから送信されるパケットの送信元アドレスを認識する認識手段と、前記ネットワークから受信するパケットをフィルタリングするフィルタリング部と、前記認識手段によって認識されたアドレスを前記フィルタリング部における通過アドレスとして設定する制御手段を有する。
【００１３】
上記ネットワークアダプタにおいて、認識手段は、ホストコンピュータから送信されるパケットの送信元アドレスを認識する。また、認識手段は、ホストコンピュータによって提供されている仮想コンピュータから送信されるパケットについても、送信元アドレスを認識する。制御手段は、認識されたアドレスをフィルタリング部において通過させるアドレスとして設定する。すなわち、送信パケットをネットワークアダプタが受信すると、フィルタリング部の通過アドレス設定がネットワークアダプタによって自立的に行われる。したがって、ホストコンピュータがネットワークアダプタのフィルタリング部の設定を行う必要がなくなる。
【００１４】
本発明にかかる別の形態のネットワークアダプタは、ホストコンピュータに接続し、ネットワークとの間でパケットを送受信するネットワークアダプタであって、前記ホストコンピュータから送信される、もしくは、前記ホストコンピュータが受信するマルチキャスト制御パケットに含まれているマルチキャストアドレスから前記ホストコンピュータの属するマルチキャストグループを識別するハードウェアマルチキャストアドレスを算出する算出手段と、前記ネットワークから受信するパケットをフィルタリングするフィルタリング部と、前記算出手段によって算出されたハードウェアマルチキャストアドレスを前記フィルタリング部における通過アドレスとして設定する制御手段、を有する。
【００１５】
上記ネットワークアダプタにおいて、算出手段は、ホストコンピュータから送信されるマルチキャスト制御パケットに含まれているマルチキャストアドレスから、ホストコンピュータの属するマルチキャストグループを識別するハードウェアマルチキャストアドレスを算出する。制御手段は、算出されたハードウェアマルチキャストアドレスをフィルタリング部に設定する。よって、この形態によればマルチキャスト通信についてのフィルタリング部の設定がネットワークアダプタによって自立的に行われる。したがって、ホストコンピュータは、マルチキャストアドレスについて、フィルタリング条件の設定をする必要がなくなる。
【発明の効果】
【００１６】
本発明によれば、ネットワークアダプタのフィルタリング条件設定をネットワークアダプタが自立的に行う。したがって、ホストコンピュータがフィルタリング条件を設定する必要がなくなり、ホストコンピュータの負荷を軽減させることができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
＜ネットワークアダプタの概要＞
図１は、本発明にかかるネットワークアダプタの一例について概要を示した図である。ネットワークアダプタ１は、ホストコンピュータ２に接続し、ネットワークとの間でパケットを送受信する。ここで、ホストコンピュータ２は、後で詳しく説明するが、１または複数の仮想コンピュータを提供できるものとする。また、ネットワークアダプタ１には、ＲＯＭ１１、アドレス認識部１２、制御部１３、受信パケットフィルタリング部１４が含まれる。受信パケットフィルタリング部１４には、図２に示すようなフィルタテーブル１４１が含まれる。
【００１８】
ＲＯＭ１１にはネットワークアダプタ１のハードウェアアドレスが記録されている。ホストコンピュータ２の初期化時に、ホストコンピュータ２がＲＯＭ１１に格納されたハードウェアアドレスを読み出して、自らの固有ハードウェアアドレスとして使用するためにメモリ上に記録する。
【００１９】
アドレス認識部１２はホストコンピュータ側から送信された送信パケットに含まれるアドレスを認識し、制御部１３に認識したアドレスを通知する。
制御部１３は通知されたアドレスを登録する必要があるかを判断し、必要に応じてフィルタリング条件の設定を行う。また、登録されているアドレスであっても、一定時間以上使用されていないものがあれば登録を削除するなど、制御部１３はフィルタリング条件の設定・変更を行う。フィルタリング条件の設定や変更は、受信パケットフィルタリング部１４に含まれているフィルタテーブル１４１の内容を変更することにより行われる。
【００２０】
受信パケットフィルタリング部１４は、ネットワーク側からパケットを受信したときに、そのパケットを通過させるかの判断を行う。まず、受信パケットフィルタリング部１４は、フィルタテーブル１４１の内容と、受信したパケットの宛先アドレスを比較する。フィルタテーブル１４１に登録されているアドレスを「宛先アドレス」としたパケットは、ホストコンピュータ側に存在するコンピュータが受信する必要があるパケットである。そこで、ネットワークから受信したパケットの宛先アドレスがフィルタテーブル１４１に登録されている場合に、そのパケットを通過させる。ただし、受信パケットフィルタリング部１４は、ブロードキャストパケットについてはフィルタリングせずに全て通過させる。なお、本明細書中では「宛先アドレス」と「送信先アドレス」とは同義である。同様に「送信先ＭＡＣアドレス」と「宛先ＭＡＣアドレス」も同義である。
【００２１】
このように、ネットワークアダプタ１は、ホストコンピュータ２（または、ホストコンピュータ２が提供する仮想コンピュータ）から送信されるパケットに含まれるアドレスを抽出し、その抽出したアドレスを利用して受信パケットフィルタリング部１４の設定を自立的に行う。したがって、ホストコンピュータ２は、ネットワークアダプタ１の受信パケットフィルタリング部１４の設定を行う必要がない。
【００２２】
なお、アドレス認識部１２、制御部１３、受信パケットフィルタリング部１４は、例えば、ハードウェア回路により実現される。ただし、これらの機能の一部または全部をソフトウェアにより実現するようにしてもよい。
【００２３】
以上がネットワークアダプタ１の動作の概要であるが、ユニキャストアドレスのみについて自立的に設定を行う実施形態と、マルチキャストアドレスの設定が可能な実施形態では、ネットワークアダプタ１の構成、動作が異なる。以下、ユニキャストアドレスの設定を行う実施形態と、マルチキャストアドレスの設定が可能な実施形態とに分けて説明する。
【００２４】
＜実施形態のネットワークアダプタの動作（１）＞
〔動作の概要〕
パケット送信時には、ホストコンピュータ２が送信先ハードウェアアドレスと送信元ハードウェアアドレスを設定したパケットを作成し、ネットワークアダプタ１に送信を依頼する。そこで、パケットの送信を依頼されたネットワークアダプタは以下の処理を行う。
【００２５】
（１）アドレス認識部１２が送信されるパケットのヘッダを解析し、送信元ハードウェアアドレスを認識する。
（２）認識した送信元ハードウェアアドレスをアドレス認識部１２が制御部１３に通知する。
（３）制御部１３は、通知されたアドレスが受信パケットフィルタリング部１４の備えるフィルタテーブル１４１に登録されているか確認する。通知されたアドレスがフィルタテーブル１４１に登録されていない場合には、制御部１３がフィルタテーブル１４１に登録を行う。
（４）受信パケットフィルタリング部１４は、受信パケットの送信先ハードウェアアドレスを確認する。受信パケットの送信先アドレスがフィルタテーブル１４１に登録されていた場合には、パケットを通過させてホストコンピュータ側に送信する。受信パケットの送信先ハードウェアアドレスが同報アドレスである場合には、受信パケットフィルタリング部１４は、フィルタテーブル１４１の確認を行わずにパケットを通過させる。
（５）ホストコンピュータ側に送信しないパケットを破棄する。
【００２６】
以上の処理によって、一度、このネットワークアダプタ１を利用して送信を行ったことがあるアドレスに対しては、ホストコンピュータ側からネットワークアダプタ１のフィルタリング機構の設定を一切することなく、パケットのフィルタリングをすることが可能となる。
【００２７】
かかるネットワークカードを用いることによって、仮想コンピュータを含む複雑な仮想ネットワークが構築されていた場合においてもホストコンピュータ側からのフィルタリング機構の設定が不要になる。
【００２８】
図３は、ホストコンピュータによる仮想環境について説明する図である。図３に示す例では、物理ホストコンピュータは、２つのネットワークアダプタ１（１ａ、１ｂ）を収容する。また、この物理ホストコンピュータは、複数の仮想コンピュータ（図３に示す例では、３０、４０、５０）を提供する。
【００２９】
このような仮想環境において従来のネットワークアダプタを利用する場合には、仮想化ソフトウェア２０１は複雑な処理が要求された。図３に示す例では、ホストコンピュータによって提供される三台の仮想コンピュータは、いずれも二つの仮想ネットワークアダプタを有し、各仮想ネットワークアダプタに対してそれぞれ仮想ハードウェアアドレスが割り当てられている。従って、物理ホストコンピュータ２が受信する必要があるパケットは、物理ハードウェアアドレスＰ１、Ｐ２を宛先としているものに加えて、仮想ハードウェアアドレスＶ１１、Ｖ１２、Ｖ２１、Ｖ２２、Ｖ３１およびＶ３２を宛先アドレスとしたものである。そして、仮想化ソフトウェア２０１は、全ての仮想ハードウェアアドレスを把握して、フィルタリング機構への設定を行う必要があった。
【００３０】
また、物理ホストコンピュータが複数の物理ネットワークアダプタを有する場合には、仮想化ソフトウェア２０１による管理処理がさらに複雑になる。例えば、図３に示す物理ホストコンピュータ２は物理ネットワークアダプタを二つ有していて、それぞれの物理ネットワークアダプタに三つずつの仮想ネットワークアダプタが仮想スイッチ（ＳＷ１、ＳＷ２）を介して接続されている。従って、各々の物理ネットワークアダプタには、自らの物理ハードウェアアドレスと、接続されている仮想ネットワークアダプタで用いられている仮想ハードウェアアドレスとが登録される必要がある。例えば、物理ネットワークアダプタ１ａには、物理ハードウェアアドレスＰ１と、仮想ハードウェアアドレスＶ１１、Ｖ２１、Ｖ３１とを登録しなくてはならない。
【００３１】
さらに、物理的なホストコンピュータが運用されている間に仮想コンピュータが停止・再起動することもある。仮想ハードウェアアドレスは、例えば、仮想コンピュータの初期化の際に、乱数などによって生成されるので、仮想コンピュータが再起動することによって、仮想ハードウェアアドレスが変更することが予想される。従って、かかる場合にも対処可能であることが仮想化ソフトウェア２０１に求められてきた。
【００３２】
実施形態のネットワークアダプタは、これらの問題に対処するために、ネットワークへ送出されるパケットの送信元ハードウェアアドレスを自立的に学習してフィルタリングテーブルを設定する。このため、物理ホストコンピュータがフィルタリング条件の設定を行う必要がない。したがって、仮想ハードウェアアドレスや仮想ネットワーク構成を認識する必要が無くなり、仮想化ソフトウェア２０１の簡素化が可能となる。以下、ネットワークアダプタ１の動作を詳しく説明する。
【００３３】
〔アドレス認識部の動作〕
ネットワークアダプタに実装されるアドレス認識部１２の一例を図４に示す。アドレス認識部１２は、入力コントローラ１２１、ラッチ回路１２２を備える。ホストコンピュータから送信されたパケットがアドレス認識部１２に読み込まれると入力コントローラ１２１が、ある一定のビット幅のデータに分割する。図４では、一例として６４ビット幅で区切っているが、分けられるビット幅は任意である。入力コントローラ１２１で区切られたデータはラッチ回路１２２で一旦、記憶されてから送信される。このときに、アドレス認識部１２は、通信プロトコルにより予め決められている領域（すなわち、送信元アドレス領域）からビット列を抽出することにより、アドレスを認識する。
【００３４】
例えば、ネットワークメディアとしてイーサネットが用いられている場合は、パケットのフォーマットは図４に示す通りである。パケットの先頭部分にイーサネットヘッダが付されていて、イーサネットヘッダには、送信先ＭＡＣアドレス、送信元ＭＡＣアドレスなどが含まれる。送信先ＭＡＣアドレスと送信元ＭＡＣアドレスはいずれも４８ビットで構成される。従って、入力コントローラ１２１でパケットを先頭から６４ビットずつに区切った場合には、最初に区切られたラインの最後の１６ビット分と、２ライン目の最初から３２ビット分が送信元ＭＡＣアドレスとなる。そこで、図４に示されているように、１ライン目のＬ４、２ライン目のＬ１、Ｌ２を送信元ＭＡＣアドレスであると認識して、制御部１３に通知する。
【００３５】
仮想コンピュータから送信されるパケットおよび物理ホストコンピュータから送信されるパケットのフォーマットは同じであるため、仮想ハードウェアアドレスについても、同様の処理で送信元ＭＡＣアドレスを認識することができる。図３のように、ホストコンピュータ上に複数の仮想コンピュータと仮想ネットワークアダプタが存在している場合には、管理者があらかじめ設定したアドレスか、または、乱数などによって生成されたアドレスが、仮想ネットワークアダプタに割り当てられる。例えば、仮想コンピュータ１が初期化した際に、乱数によって生成された仮想ＭＡＣアドレスＶ１１が仮想ネットワークアダプタ３１に割り当てられる。仮想コンピュータ３０が仮想ネットワークアダプタ３１を介してパケットを送信するとき、仮想コンピュータ３０は、送信元ＭＡＣアドレスをＶ１１としてイーサネットヘッダを生成する。生成されたパケットは仮想スイッチＳＷ１を介して、物理ネットワークアダプタ１ａが送信パケットを受け取る。仮想コンピュータが仮想ネットワークアダプタを介して送信したパケットであっても、前述のとおり、物理ホストコンピュータから送信されるパケットとフォーマットは同じである。そこで、物理ホストコンピュータから送信されたパケットと同様にアドレスが認識され、制御部１３に通知される。
このように、アドレス認識部１２は、物理ハードウェアアドレスと仮想ハードウェアアドレスとを区別せずに、同様に必要なアドレスを認識することができる。
【００３６】
〔フィルタテーブルへのアドレスの登録処理〕
制御部１３がフィルタテーブル１４１への登録処理を行う際の動作のフローチャートを図５に示す。まず、ネットワークアダプタが初期化される（ステップＳ１）。初期化処理では、制御部１３は、フィルタテーブル１４１の全てのエントリを削除する。そして、フィルタテーブル１４１の初期化を行った後は、ホストコンピュータ側からの送信パケットを受信するまで待機する（ステップＳ２）。フィルタテーブル１４１は、図２に一例を示したように、フィルタリングに係わるハードウェアアドレスと、個々のハードウェアアドレスに対するタイムスタンプとを管理する。ここで、タイムスタンプは、対応するハードウェアアドレスを送信元ハードウェアアドレスとしたパケットが最後に送信された時刻を表す。
【００３７】
送信パケットがアドレス認識部１２により解析され、そのパケットの送信元ハードウェアアドレスが通知されると、制御部１３は、その送信元アドレスがフィルタテーブル１４１に登録されているかを確認する（ステップＳ３、Ｓ４）。フィルタテーブル１４１に登録されていなかった場合には、フィルタテーブル１４１に空きエントリがあるかを制御部１３が確認し、空きエントリがあれば取得したハードウェアアドレスをフィルタテーブル１４１に登録する（ステップＳ５、Ｓ６）。登録が終わるとフィルタテーブル１４１のタイムスタンプを現在時刻に更新する（ステップＳ８）。
【００３８】
フィルタテーブル１４１に空きエントリが存在しなかった場合には、制御部１３はアドレス認識部１２から通知されたハードウェアアドレスを登録することができない。登録されていないハードウェアアドレス宛のパケットは、同報アドレスでない限りネットワークアダプタが破棄してしまい、そのパケットをホストコンピュータ側で受信することができない。そこで、フィルタテーブル１４１に空きエントリが存在しなかった場合には、制御部１３は受信パケットフィルタリング部１４のフィルタリング機能を無効にし、全てのパケットを通すように設定を行う（ステップＳ７）。すると、ネットワークから到着したパケット全てがホストコンピュータに受信されるようになる。この場合にはネットワーク側から到着したパケットをホストコンピュータが全て受信するため、ホストコンピュータに負荷がかかるが通信は可能である。特に仮想コンピュータが一時的に増設された場合などにおいて、一時的にエントリ数が不足したときに効果的な処置である。全てのパケットを通すように設定した場合であっても設定を終えた後に、後述するように、不使用時間が長いなどの理由で優先度の低いアドレスを、制御部１３がフィルタテーブル１４１から削除することによって、空きエントリができた場合には、再度フィルタリング機能を有効にする。
【００３９】
アドレス認識部１２から制御部１３に通知されてきたアドレスが既にフィルタテーブル１４１に登録されていた場合には、フィルタテーブル１４１への登録やフィルタテーブル１４１の空きエントリの確認を行わず、タイムスタンプの更新のみが行われる（ステップＳ８）。
【００４０】
〔フィルタテーブルからのアドレスの削除処理〕
制御部１３は、必要に応じて、フィルタテーブル１４１に登録されているアドレスの削除処理を行う。フィルタテーブル１４１のエントリ数は有限であるため、通信を行っていないハードウェアアドレスの登録を残すことによって、新たなアドレスを登録できない状況を避けるためである。また、一定の期間、通信が行われていない場合には登録されているハードウェアアドレスが既に存在していない可能性があるためである。
【００４１】
図６は、フィルタテーブル１４１からのアドレスの削除処理を説明するフローチャートである。制御部１３は、各フィルタエントリのタイムスタンプを確認する（ステップＳ１１）。次に制御部１３は、現在時刻と各々のタイムスタンプに記録されている時刻とを比較し、各エントリが最後にタイムスタンプの更新がされてから経過した時間が、指定時間を越えているかどうかを確認する（ステップＳ１２）。ここで、「指定時間」は、あらかじめ決められている時間である。指定時間は、数百秒程度が望ましいが、任意に設定することができ、数百秒より長くても短くても良い。指定時間よりも長くタイムスタンプの更新がされていない場合には、制御部１３が、そのタイムスタンプに対応するアドレスを、使用されていないハードウェアアドレスであると判断する。そこで、タイムスタンプの最後の更新時から指定時間を経過したフィルタエントリを、制御部１３が削除する（ステップＳ１３）。
【００４２】
このような処理は特に仮想ネットワークを考慮したときに有効である。仮想ハードウェアアドレスは仮想ネットワークアダプタに対応しているアドレスである。前述のとおり、仮想ハードウェアアドレスは、仮想コンピュータが初期化したときに乱数によって生成されることがある。また、物理ホストコンピュータが動作しているときに、仮想コンピュータが停止、再起動されることもある。従って、物理ホストコンピュータの動作時に仮想コンピュータが再起動して、仮想ネットワークアダプタに割り当てられた仮想ハードウェアアドレスが変更されることもあり得る。従来のフィルタリングにおいては、ホストコンピュータがフィルタリングの制御を行っていたため、使用されている仮想ハードウェアアドレスが変更された場合には、ホストコンピュータはその変更を認識して、フィルタリングの制御を行う必要があった。しかし、本実施形態で示したネットワークアダプタでは、タイムスタンプを用いてフィルタテーブル１４１のエントリを制御しているので、指定時間を経過すれば、制御部１３が不要となった仮想ハードウェアアドレスを削除する。このため、仮想ハードウェアアドレスに変更が生じたとしてもホストコンピュータは、削除処理を行う必要が無い。従って、仮想ハードウェアアドレスの変更がされたときに、ホストコンピュータ上で動作している仮想化ソフトウェアが、アドレスの変更によるフィルタリングの設定を変更する必要がなくなるため、仮想化ソフトウェアの簡素化が可能となる。
【００４３】
〔受信パケットフィルタリング部の動作〕
受信パケットフィルタリング部１４は、図１に示したように、受信したパケットを通過させるか否かの判断を行う。ネットワークアダプタにネットワーク側からパケットが送信されてくると、受信パケットフィルタリング部１４は宛先ハードウェアアドレスを認識する。また、アドレスがユニキャストアドレスであるか、同報アドレスであるかの判断を行う。ユニキャストアドレスであるか、同報アドレスであるかの判断方法の一例としては、アドレスの先頭部分を用いた判断方法が考えられる。例えばイーサネットの場合、ハードウェアアドレスの先頭が「０１：００：５ｅ」や「３３：３３」のように先頭オクテットの最下位ビットが１であればマルチキャストアドレスで、「ｆｆ：ｆｆ：ｆｆ：ｆｆ：ｆｆ：ｆｆ」がブロードキャストアドレスであると判断する。その他のアドレスであれば、ユニキャストアドレスであると認識する。
【００４４】
宛先アドレスがユニキャストアドレスであった場合には、受信パケットフィルタリング部１４はパケットの宛先ハードウェアアドレスをキーとしてフィルタテーブル１４１を検索する。フィルタテーブル１４１のいずれかのエントリと、パケットの宛先ハードウェアアドレスとが一致すればパケットをホストコンピュータ側に送信し、それ以外のパケットを破棄する。
【００４５】
宛先アドレスが、マルチキャストアドレスもしくはブロードキャストアドレスであるときには、受信パケットフィルタリング部１４は、フィルタテーブル１４１を参照することなくパケットを通過させる。
【００４６】
〔フィルタリング条件設定のタイミング〕
図５からも明らかであるように、ネットワークアダプタ１は、初期化後、ホストコンピュータもしくはホストコンピュータが提供する仮想コンピュータから送信パケットを受信するまでの間は、フィルタテーブル１４１の設定を行わない。また、複数のパケットが送信されるときには、第一の送信パケットについて、送信元アドレスの認識、登録などの処理が終わると、第二の送信パケットを受信するまではフィルタテーブルへの登録処理を行わない。すなわち、本実施形態で示したネットワークアダプタ１は、ホストコンピュータもしくはホストコンピュータが提供する仮想コンピュータから、送信パケットを受信することをトリガとして、フィルタテーブル１４１の登録処理を行う。
【００４７】
このように、ネットワークアダプタ１は、ホストコンピュータによる設定なしで、自立的に、そのホストコンピュータ（または、ホストコンピュータが提供する仮想コンピュータ）宛てのパケットを通過させるためのフィルタ条件を設定する。ただし、ホストコンピュータ宛のパケットが受信パケットフィルタリング部１４を通過するためには、そのパケットが相手端末から送信されるより前に、そのホストコンピュータからネットワークアダプタ１を介してパケット送信が行われる必要がある。しかし、通常のパケット通信システムにおいては、ホストコンピュータは、相手端末からパケットを受信する前に、自らのハードウェアアドレスをその相手端末に通知するためのパケットを送信する。従って、ホストコンピュータが受信すべきパケットのアドレスは、そのパケットが相手端末から送信される前にフィルタテーブル１４１に登録されることになる。
【００４８】
一例として、ネットワークメディアとしてイーサネットを用い、ネットワーク層のプロトコルとしてインターネットプロトコル（ＩＰ）を使用する通信システムの場合について述べる。このような通信システムにおいては、通信を行うコンピュータ同士はＩＰアドレスで特定される。しかし、実際にパケットを送信する際には、宛先ハードウェアアドレスとして、宛先のイーサネットアドレス（ＭＡＣアドレス）が必要となる。この送信先ＭＡＣアドレスを知るために、送信元のコンピュータはＡＲＰ（アドレス解決プロトコル）を用いる。
【００４９】
図７は、ＡＲＰによるアドレス解決のシーケンス図である。以下の説明では、このシーケンスにおいて、コンピュータ２ｂに接続するネットワークアダプタのフィルタリング条件が設定される。
【００５０】
先に述べたように、パケットを送信しようとするコンピュータ２ａは、通常、送り先のコンピュータ２ｂのＩＰアドレスを知っていても、ハードウェアアドレスを知らない。そのため、パケットを送信する前に、コンピュータ２ａ自身が存在するサブネット中に、ＡＲＰ要求を送信する。図７にＡＲＰ要求のパケットのフォーマットを示す。ＡＲＰ要求はブロードキャストメッセージであるため、各コンピュータに接続されているネットワークアダプタ１はＡＲＰ要求パケットを廃棄することはない。そのため、コンピュータ２ｂ（応答側コンピュータ）は、ＡＲＰ要求を受信することができる。コンピュータ２ｂは、ＡＲＰ要求に含まれているＩＰアドレスが自分のＩＰアドレスと一致するかどうかを確かめ、一致した場合にはコンピュータ２ａにＡＲＰ応答を送信する。ＡＲＰ応答のパケットのフォーマットは図７に示されたとおりである。イーサネットヘッダ部分に、送信先ＭＡＣアドレス、送信元ＭＡＣアドレスが記載されている。
【００５１】
コンピュータ２ｂがＡＲＰ応答を送信すると、コンピュータ２ｂに接続されているネットワークアダプタ１は、そのＡＲＰ応答を含む送信パケットを受け取ることになる。ここで、ＡＲＰ応答パケットのイーサネットヘッダ部分は、通常のパケットと同様に、送信先ＭＡＣアドレスおよび送信元ＭＡＣアドレスを含む。そこで、ネットワークアダプタ１は、前述のとおりに、イーサネットヘッダに含まれる送信元ＭＡＣアドレスを認識し、フィルタテーブル１４１に登録する。
【００５２】
コンピュータ２ａは、ネットワークアダプタ１を介して送信されてきたＡＲＰ応答を受け取ることにより、コンピュータ２ｂのＭＡＣアドレスを認識する。以降、コンピュータ２ａは、コンピュータ２ｂに対してユニキャスト通信でパケットを送信することができる。このとき、コンピュータ２ｂに接続されるネットワークアダプタ１には、上記ＡＲＰ応答パケットを返送した際に、コンピュータ２ｂのＭＡＣアドレスが登録されている。従って、コンピュータ２ｂは、コンピュータ２ａからのパケットを受け取ることができる。ここで、ＡＲＰ解決を行うコンピュータ２ａおよび／または２ｂが物理ホストコンピュータではなく仮想コンピュータであっても同様の処理がされる。
【００５３】
以上、述べてきたとおり、ネットワークアダプタが自立的に受信パケットフィルタリング部１４のフィルタリング条件を設定するため、ホストコンピュータに負荷をかけることなくフィルタリングが可能である。
【００５４】
また、本実施形態に係るアドレス認識部１２が認識した送信パケットに含まれる送信元ＭＡＣアドレスを、制御部１３がフィルタテーブル１４１に登録することになる。すなわち、物理ホストコンピュータおよび物理ホストコンピュータが提供する仮想コンピュータが、使用するハードウェアアドレスのみがフィルタテーブル１４１に登録される。つまり、ネットワーク側に接続されているノードについてのＭＡＣアドレスを一切登録しないため、フィルタテーブル１４１に必要とされるエントリ数は数十程度で良いことになる。このため、学習型ブリッジなどのように多くのメモリを必要としないため、安価に製造することが可能となる。
【００５５】
＜実施形態のネットワークアダプタの動作（２）＞
〔動作の概要〕
マルチキャスト送信の場合は、マルチキャストアドレスを宛先とするパケットが送信される。したがって、マルチキャストパケットのフィルタリングを行うためには、コンピュータが属するマルチキャストグループを識別するアドレスが、フィルタリング機構に設定される必要がある。一部の既定マルチキャストグループを除き、コンピュータがマルチキャストグループへ参加・離脱する場合には、参加・離脱に先立って、マルチキャスト制御パケットが送信される。その制御パケットの中には、コンピュータが参加もしくは離脱しようとするマルチキャストグループのマルチキャストアドレスが、ネットワーク層のアドレスとして含まれている。ただし、マルチキャスト制御プロトコルによっては、コンピュータが送信する制御パケットだけではなく、コンピュータが受信する制御パケットも解析する必要がある。この場合、アドレス認識部１２が送信パケットだけでなく受信パケットも認識するようにしておく。マルチキャストアドレスを設定する場合には、ネットワークアダプタは以下の処理を行う。
【００５６】
（１）アドレス認識部１２は、ネットワークアダプタ１を介して送受信されるマルチキャスト制御パケットを解析する。このとき、アドレス認識部１２は、パケットの中に含まれているマルチキャストアドレスを認識する。
（２）アドレス認識部１２は、認識したネットワーク層のマルチキャストアドレスからハードウェアマルチキャストアドレスを算出する。さらに、アドレス認識部１２は、制御パケットがマルチキャストグループに参加するためのパケットか、離脱するためのパケットかも認識する。
（３）アドレス認識部１２は、認識したマルチキャストアドレスを制御部１３に通知する。また、パケットがマルチキャストグループへの参加（ｊｏｉｎ）を通知するものか、離脱（ｌｅａｖｅ）を通知するものであるかについても、アドレス認識部１２が制御部１３に通知する。
（４）送受信されたパケットがマルチキャストグループへのｊｏｉｎメッセージであれば、制御部１３は、通知されたアドレスが、受信パケットフィルタリング部１４に存在するフィルタリングテーブルに登録されているか確認する。通知されたアドレスが、フィルタリングテーブルに登録されていないものであった場合には、フィルタテーブル１４１に登録される。
（５）送信されたパケットがマルチキャストグループからのｌｅａｖｅメッセージである場合、制御部１３はそのパケットを無視する。他の仮想コンピュータがそのマルチキャストグループに参加している可能性があるためである。
（６）ネットワークアダプタ１がマルチキャストアドレス宛のパケットを受信すると、受信パケットフィルタリング部１４は、宛先マルチキャストアドレスを確認する。宛先マルチキャストアドレスが既定ですべてのホストが属するマルチキャストアドレスであるかフィルタテーブル１４１に登録されている場合には、パケットを通過させてホストコンピュータ側に送信する。ただし、ブロードキャストパケットについては、フィルタリングを行わずにホストコンピュータ側に転送する。
（７）ホストコンピュータ側に送信しないパケットを破棄する。
【００５７】
以上の動作を行うネットワークカードにおいては、マルチキャストアドレスの設定・削除が自立的に行われる。従って、マルチキャストグループへの参加状況をホストコンピュータが管理して、ネットワークアダプタ１のフィルタリング設定をする必要がないため、ホストコンピュータの負担が軽減される。
【００５８】
ホストコンピュータがマルチキャストアドレスの設定を行わないことは、特に、仮想コンピュータがマルチキャストに参加する場合に大きな意味を持つ。例えば、図３に示すような仮想ネットワークの一部が、マルチキャストグループに参加もしくは離脱するときには、仮想化ソフトウェア２０１はマルチキャストグループへの参加状況と仮想ネットワークの構成を把握する必要があった。例えば、仮想コンピュータ３０および４０が、それぞれ仮想ネットワークアダプタ３１および４１を介して同じマルチキャストに参加するときについて考える。このとき、仮想ネットワークアダプタ３１および４１は、同一の物理ネットワークアダプタ１ａに接続されているので、仮想化ソフトウェア２０１は、物理ネットワークアダプタ１ａのみに、マルチキャストアドレス宛のパケットを通す設定をすればよい。しかし、仮想コンピュータ３０および４０が同じマルチキャストグループに参加する場合であったとしても、仮想コンピュータ３０が仮想ネットワークアダプタ３１を介して参加し、仮想コンピュータ４０が仮想ネットワークアダプタ４２を介して参加することもあり得る。この場合においては、仮想化ソフトウェア２０１は物理ネットワークアダプタ１ａおよび１ｂの両方に対して、マルチキャストアドレス宛のパケットを通す設定をする必要がある。
【００５９】
この構成によれば、ネットワークアダプタがマルチキャストアドレスの解析・学習を行うことにより、ホストコンピュータからマルチキャストアドレスの設定を行う必要がなくなる。そのため、仮想化ソフトウェア２０１の簡素化が可能である。仮想化ソフトウェアが簡素化されると、その設計、実装、検証も容易になり、ひいては、仮想化ソフトウェアの信頼性を向上させることが可能となる。以下、ネットワークアダプタ１の部分ごとに動作内容を説明する。
【００６０】
〔ＩＰｖ４に対応するアドレス認識部〕
｛構成および動作｝
一例として、ネットワークメディアとしてイーサネットを用い、ネットワーク層のプロトコルとしてＩＰｖ４を使用する通信システムの場合について述べる。このような通信システムにおいては、マルチキャストグループへの参加・離脱は、例えば、ＩＧＭＰパケットによって行われる。このＩＧＭＰパケットにはＩＰｖ４マルチキャストアドレスが記載されている。しかし、このＩＰｖ４マルチキャストアドレスは、前述の通りネットワーク層のアドレスであるので、アドレス認識部１２はハードウェアマルチキャストアドレスへのマッピングを行う。なお、この例ではネットワークメディアがイーサネットであるので、「ハードウェアマルチキャストアドレス」を「イーサネットマルチキャストアドレス」と記載することもある。
【００６１】
ＩＧＭＰのプロトコルにおいては、マルチキャストグループへの参加状態を問い合わせるＱｕｅｒｙメッセージをルータが一定間隔（通常６０秒）で送信する。その際の宛先アドレスには、すべてのホストを表すマルチキャストアドレスである２２４．０．０．１を使用する。Ｑｕｅｒｙメッセージを受けたホストは、乱数で決定される時間だけ待ってから、自分が属しているマルチキャストグループを応答する。ただし、その間に他のホストが同じマルチキャストグループに属している旨応答した場合は、自らが応答することを控える。多くのホストからの応答パケットが重複して発生しないようにするためである。このため、本実施形態においてはホストが送信するＩＧＭＰパケットだけではなく、他のホストが送信したＩＧＭＰパケットも解析する必要がある。
【００６２】
ＩＰｖ４を用いた通信システムでのマルチキャストアドレス送受信に対応可能なネットワークアダプタ１のアドレス認識部１２の一例を図８に示す。アドレス認識部１２は、入力コントローラ１２１、イーサネットヘッダ解析部１２３、ＩＰｖ４ヘッダ解析部１２４、および、ＩＧＭＰヘッダ解析部１２５を備える。以下、各部分の動作を図９に示すＩＧＭＰパケットフォーマットの図を参照しながら説明する。
【００６３】
（１）ホストコンピュータから送信されたパケット、もしくは、受信したパケットがアドレス認識部１２に読み込まれると入力コントローラ１２１で、ある一定のビット幅のデータに分けられる。一定の幅に分けられたデータは、イーサネットヘッダ解析部１２３、ＩＰｖ４ヘッダ解析部１２４、ＩＧＭＰヘッダ解析部１２５にそれぞれ送られる。
（２）イーサネットヘッダ解析部１２３は、ＩＧＭＰパケット（図９）のイーサネットヘッダのタイプフィールドの値が０ｘ０８００であるかを判定する。タイプフィールドが０ｘ０８００であれば、ＩＰｖ４プロトコルが使用されていることを意味する。ＩＰｖ４ヘッダの位置はパケットにＶＬＡＮタグが含まれているかどうかによって異なるので、ＩＰｖ４プロトコルであることを確認すると、イーサネットヘッダ解析部１２３は、ＩＰｖ４ヘッダ解析部１２４にＩＰｖ４ヘッダの開始位置を通知する。
（３）ＩＰｖ４ヘッダ解析部１２４は、イーサネットヘッダ解析部１２３によって通知されたＩＰｖ４ヘッダの開始位置に従って、入力コントローラ１２１から受け取ったデータのうちのＩＰｖ４ヘッダ部分を取り出す。次に、ＩＰｖ４ヘッダ解析部１２４はＩＰｖ４ヘッダの正当性を確認した後、ＩＰｖ４ヘッダのプロトコルフィールドが２であるかを判定する。プロトコルフィールドの値が２であれば、ＩＧＭＰパケットであることを示す。ＩＧＭＰヘッダの開始位置はＩＰオプションによって異なるため、プロトコルフィールドが２であれば、ＩＰｖ４ヘッダ解析部１２４はＩＧＭＰヘッダ解析部１２５にＩＧＭＰヘッダの開始位置を通知する。
（４）ＩＧＭＰヘッダ解析部１２５は、ＩＰｖ４ヘッダ解析部１２４からの通知内容にしたがって、入力コントローラ１２１から送られてきたデータからＩＧＭＰヘッダ部分を取り出す。ＩＧＭＰヘッダ解析部１２５は、ＩＧＭＰヘッダの正当性を確認する。その後、ＩＧＭＰヘッダ解析部１２５は、ＩＧＭＰヘッダのＴｙｐｅフィールドを確認して、パケットがマルチキャストグループに参加するためのｊｏｉｎメッセージであるか、離脱するためのｌｅａｖｅメッセージであるかを判定する。Ｔｙｐｅフィールドの値が０ｘ１２（ＩＧＭＰ  ｖ１  Ｒｅｐｏｒｔ）もしくは０ｘ１６（ＩＧＭＰ  ｖ２  Ｒｅｐｏｒｔ）であると、マルチキャストグループへの参加を示す。Ｔｙｐｅフィールドの値が０ｘ１７（ＩＧＭＰ  ｖ２  Ｌｅａｖｅ）であると、マルチキャストグループからの離脱を示す。ＩＧＭＰヘッダ解析部１２５は、判定結果を制御部１３へ通知する。
（５）ＩＧＭＰヘッダ解析部１２５は、ＩＧＭＰヘッダに含まれているＧｒｏｕｐ  Ａｄｄｒｅｓｓフィールドを確認する。Ｇｒｏｕｐ  Ａｄｄｒｅｓｓフィールドに記録されているＩＰｖ４マルチキャストアドレスを取り出し、イーサネットマルチキャストアドレスへのマッピングを行う。ＩＧＭＰヘッダ解析部１２５は、マッピングにより得られたイーサネットマルチキャストアドレスを制御部１３に通知する。マッピングの具体的な方法については後述する。
【００６４】
なお、（４）において、ｌｅａｖｅメッセージの値についてはＩＧＭＰ  ｖ２に対するものしか示していないのは、ＩＧＭＰ  ｖ１では明示的なｌｅａｖｅメッセージが存在しないためである。ＩＧＭＰ  ｖ１では、ルータがＱｕｅｒｙに対する応答が無いときにＱｕｅｒｙに対応するマルチキャストグループの配信を停止する。
【００６５】
｛イーサネットマルチキャストアドレスの算出｝
図１０は、ＩＰｖ４マルチキャストアドレスからイーサネットマルチキャストアドレスへ変換する方法を説明する図である。３２ビットのＩＰｖ４マルチキャストアドレスのうち、第一オクテットの上位４ビットは１１１０で固定された値である。従って下位２８ビットでマルチキャストグループが指定される。一方、イーサネットマルチキャストアドレスは、上位２５ビットが固定されていて、下位２３ビットでマルチキャストグループを指定する。そこで、ＩＰｖ４マルチキャストアドレスからイーサネットマルチキャストアドレスを求める際には、ＩＰｖ４マルチキャストアドレスでグループ指定をしている２８ビットのうち、上位５ビットを無視して、下位２３ビットがマッピングされる。
【００６６】
ＩＧＭＰヘッダ解析部１２５は、ＩＰｖ４マルチキャストアドレスの下位２３ビットをマッピングすることによって、イーサネットマルチキャストアドレスを求め、制御部１３に通知する。
【００６７】
ＩＰｖ４では２２４．０．０．０から２２４．０．０．２５５までの２５６個のマルチキャストアドレスは、既定の（ｗｅｌｌ−ｋｎｏｗｎな）マルチキャストグループを表すものとして予約されている。例えば、２２４．０．０．１はサブネット内のすべてのデバイスに対するマルチキャストアドレスである。これらのマルチキャストグループに関してはＩＧＭＰ等による明示的な参加、離脱が通知されない。そこで、これらに対応するイーサネットアドレス０１：００：５ｅ：００：００：００から０１：００：５ｅ：００：００：ｆｆを宛先とするパケットに関してはブロードキャストアドレスと同様に、受信パケットフィルタリング部１４はフィルタテーブル１４１の内容に関わらずパケットを通過させる。
【００６８】
〔ＩＰｖ６に対応するアドレス認識部〕
｛構成および動作｝
別の形態として、ネットワーク層のプロトコルとしてＩＰｖ６を使用する通信システムの場合について述べる。この形態においても、ネットワークメディアはイーサネットを用いる。ＩＰｖ６を用いた通信システムにおいては、マルチキャストグループへの参加・離脱は、例えば、ＭＬＤパケットによって行われる。ＭＬＤパケットが参加・離脱のいずれのためのメッセージであるかの判断と、イーサネットマルチキャストアドレスのマッピングをアドレス認識部１２が行うのはＩＰｖ４のときと同様である。Ｑｕｅｒｙメッセージに対する他のホストからの応答によって応答を控える仕組みも同様であるため、この形態においてもホストが送信するパケットだけではなく受信するパケットも解析する必要がある。ＩＰｖ６でのマルチキャスト送信に対応可能なアドレス認識部１２の一例を図１１に示す。アドレス認識部１２は入力コントローラ１２１、イーサネットヘッダ解析部１２３、ＩＰｖ６ヘッダ解析部１２６、ＭＬＤヘッダ解析部１２７を備える。以下、各部分の動作を図１２に示すＭＬＤパケットフォーマットの図を参照しながら説明する。
【００６９】
（１）ホストコンピュータから送信された、もしくは、受信されたパケットがアドレス認識部１２に読み込まれると入力コントローラ１２１で、ある一定のビット幅のデータに分けられる。一定の幅に分けられたデータは、イーサネットヘッダ解析部１２３、ＩＰｖ６ヘッダ解析部１２６、ＭＬＤヘッダ解析部１２７にそれぞれ送られる。
（２）イーサネットヘッダ解析部１２３は、ＭＬＤパケット（図１２）のイーサネットヘッダのタイプフィールドの値が０ｘ８６ｄｄであるかを判定する。タイプフィールドが０ｘ８６ｄｄであれば、イーサネットヘッダ解析部１２３はＩＰｖ６プロトコルが使用されていると認識する。ＩＰｖ６ヘッダの位置はパケットにＶＬＡＮタグが含まれているかによって異なるため、イーサネットヘッダ解析部１２３はＩＰｖ６ヘッダ解析部１２６にＩＰｖ６ヘッダの開始位置を通知する。
（３）ＩＰｖ６ヘッダ解析部１２６は、イーサネットヘッダ解析部１２３からの通知内容に基づいて、入力コントローラ１２１から送られてきたデータからＩＰｖ６ヘッダを取り出す。ＩＰｖ６ヘッダ解析部１２６はＩＰｖ６ヘッダの正当性を確認した後、ＩＰｖ６拡張ヘッダチェインをたどって、Ｎｅｘｔ  Ｈｅａｄｅｒフィールドの値を判定する。Ｎｅｘｔ  Ｈｅａｄｅｒフィールドの値が５８であれば、ＩＣＭＰｖ６であることを示す。ＭＬＤヘッダの開始位置はＩＰｖ６拡張ヘッダによって異なるため、ＩＣＭＰｖ６であることを確認した後、ＩＰｖ６ヘッダ解析部１２６は、ＭＬＤヘッダ解析部１２７にＭＬＤヘッダの開始位置を通知する。
（４）ＭＬＤヘッダ解析部１２７は、通知されたＭＬＤヘッダの開始位置に従って、入力コントローラ１２１からのデータのうちＭＬＤヘッダ部分を取り出す。ＭＬＤヘッダ解析部１２７はＭＬＤヘッダの正当性を確認する。その後、ＭＬＤヘッダ解析部１２７は、ＭＬＤヘッダのＴｙｐｅフィールドを確認して、パケットがマルチキャストグループに参加するためのｊｏｉｎメッセージであるか、離脱するためのｌｅａｖｅメッセージであるかを判定する。Ｔｙｐｅフィールドの値が１３１（Ｍｕｌｔｉｃａｓｔ  Ｌｉｓｔｅｎｅｒ  Ｒｅｐｏｒｔ）であれば、マルチキャストグループへの参加を示す。一方、Ｔｙｐｅフィールドの値が１３２（Ｍｕｌｔｉｃａｓｔ  Ｌｉｓｔｅｎｅｒ  Ｄｏｎｅ）であると、マルチキャストグループからの離脱を示す。ＭＬＤヘッダ解析部１２７は、判定結果を制御部１３へ通知する。
（５）ＭＬＤヘッダ解析部１２７は、ＭＬＤヘッダに含まれているＭｕｌｔｉｃａｓｔ  Ａｄｄｒｅｓｓフィールドに記録されているＩＰｖ６マルチキャストアドレスを取り出し、イーサネットマルチキャストアドレスへのマッピングを行う。ＭＬＤヘッダ解析部１２７は、マッピングして得られたイーサネットマルチキャストアドレスを制御部１３に通知する。マッピングの具体的な方法については後述する。
【００７０】
｛イーサネットマルチキャストアドレスの算出｝
図１３は、ＩＰｖ６マルチキャストアドレスからイーサネットマルチキャストアドレスへ変換する方法を説明する図である。ＩＰｖ６マルチキャストアドレスは、上位８ビットが全て１に固定されており、それに続く４ビットがフラグ、次の４ビットはスコープで、下位の１１２ビットがマルチキャストグループを表す。
【００７１】
ＩＰｖ６マルチキャストアドレス用のイーサネットマルチキャストアドレスは、上位１６ビットが「３３：３３」に固定されていて、下位３２ビットでマルチキャストグループが表される。そこで、ＩＰｖ６マルチキャストアドレスからイーサネットマルチキャストアドレスを求める際には、ＩＰｖ６マルチキャストアドレスでグループを表している１１２ビットのうち、下位３２ビットがマッピングされる。
【００７２】
ＭＬＤヘッダ解析部１２７は、ＩＰｖ６マルチキャストアドレスの下位３２ビットをマッピングして得られたイーサネットマルチキャストアドレスを制御部１３に通知する。
ＩＰｖ６ではｆｆ０２：：０１のマルチキャストアドレスはすべてのホスト、ｆｆ０２：：０２のマルチキャストアドレスはすべてのルータを表すものとしてそれぞれ予約されている。これらのマルチキャストグループに関してはＭＬＤ等による明示的な参加、離脱が通知されない。そこで、これらに対応するイーサネットアドレス３３：３３：００：００：００：０１と３３：３３：００：００：００：０２を宛先とするパケットに関してはブロードキャストアドレスと同様に、受信パケットフィルタリング部１４はフィルタテーブル１４１の内容に関わらずパケットを通過させる。
【００７３】
また、ＩＰｖ６ではＳｏｌｉｃｉｔｅｄ−Ｎｏｄｅアドレスと呼ばれるマルチキャストアドレスも使用される。これはユニキャストアドレスから算出されるもので、ｆｆ０２：０：０：０：０：１：ｆｆ００：００００からｆｆ０２：０：０：０：０：１：ｆｆｆｆ：ｆｆｆｆまでの範囲のマルチキャストアドレスである。ユニキャストアドレスの下位２４ｂｉｔをマッピングする。例えば、４０３７：：０１：８００：２００ｅ：８ｃ６ｃというユニキャストアドレスに対応するＳｏｌｉｃｉｔｅｄ−Ｎｏｄｅアドレスはｆｆ０２：：１：ｆｆ０ｅ：８ｃ６ｃである。これをさらにイーサネットアドレスにマッピングすると、３３：３３：ｆｆ：０ｅ：８ｃ：６ｃとなる。アドレス認識部１２は、ホストが送信するＩＰｖ６パケットの送信元ＩＰｖ６アドレスを認識し、それに対応するＳｏｌｉｃｉｔｅｄ−Ｎｏｄｅアドレスのイーサネットマルチキャストアドレスも上述のようにして算出し、制御部１３に通知する必要がある。
【００７４】
〔制御部〕
｛マルチキャストアドレスの登録処理｝
制御パケットがｊｏｉｎメッセージであった場合に、制御部１３は、マルチキャストアドレスをフィルタテーブル１４１に設定する。制御部１３が行うフィルタテーブル１４１の設定は、ＩＰｖ４でもＩＰｖ６でも同じである。
【００７５】
制御部１３は、前述のとおり、アドレス認識部１２からイーサネットマルチキャストアドレスと、制御パケットの種類の通知を受ける。制御パケットがｊｏｉｎメッセージである場合には、制御部１３は図５に示した手順と同様の登録処理を行う。すなわち、制御部１３は、処理しようとするアドレスがフィルタテーブル１４１に未登録であって、空きエントリが存在すればそのアドレスを登録する。処理対象のアドレスが、既にフィルタテーブル１４１に登録されていたとき、および、空きエントリがない場合の処理も、図５に示したのと同様である。
【００７６】
｛マルチキャストアドレスの削除処理｝
制御部１３は、タイムスタンプにより一定時間使用されていないことが認識された場合に、マルチキャストアドレスの削除処理を行う。制御パケットがｌｅａｖｅメッセージであった場合は、他の仮想コンピュータ等がそのマルチキャストグループに参加している可能性があるので削除処理は行わない。
【００７７】
タイムスタンプにより、指定時間の間、使用されなかったと認識されたアドレスの削除がされる場合は、制御部１３は図６に示したとおりに処理を行う。
この処理は仮想コンピュータがマルチキャストグループに参加している場合に特に有意義であると考えられる。先に述べたとおり、仮想コンピュータは物理ホストコンピュータが動作している間に、停止、再起動することがあるし、他の物理ホストコンピュータへ移動することもある。このため、従来は、ホストコンピュータがマルチキャストの参加状況や仮想ネットワーク構成をリアルタイムに把握してフィルタリング条件の設定をする必要があった。また、ホストコンピュータがマルチキャストの参加状況や仮想ネットワーク構成を把握するために、仮想化ソフトウェアは複雑にならざるを得なかった。本実施形態のように、指定時間の間、使用されなかったアドレスをネットワークアダプタが自立的に削除することによって、ホストコンピュータの負担が軽減される。また、ホストコンピュータが、マルチキャスト参加状況やネットワーク構成の把握をする必要がないため、仮想化ソフトウェアを簡素化することが可能になる。
【００７８】
〔受信パケットフィルタリング部の動作〕
受信パケットフィルタリング部１４の動作は、基本的に、上述した実施例の場合と同じである。すなわち、ネットワーク側から受信したパケットについて、受信パケットフィルタリング部１４は宛先イーサネットマルチキャストアドレスを認識する。次に、受信パケットフィルタリング部１４は、パケットの宛先イーサネットマルチキャストアドレスをキーとしてフィルタテーブル１４１を検索する。そして、フィルタテーブル１４１のいずれかのエントリと、パケットの宛先イーサネットマルチキャストアドレスとが一致すれば、パケットをホストコンピュータ側に送信し、それ以外のパケットを破棄する。なお、この場合においても、上述の既定マルチキャストアドレス宛パケットやブロードキャストパケットについては、受信パケットフィルタリング部１４は、フィルタテーブル１４１を参照することなくパケットを通過させる。
【００７９】
以上、述べてきたとおり、ネットワークアダプタ自身が、ハードウェアマルチキャストアドレスを設定するため、ホストコンピュータがマルチキャストグループ参加状況やネットワーク構成を把握しなくても、フィルタリングが可能である。したがって、フィルタリング設定に対するホストコンピュータの負担がなくなる。また、ホストコンピュータ上で動作する仮想化ソフトウェアの簡素化にもつながる。
【００８０】
＜他の実施形態＞
なお、本発明は上記の実施形態に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
【００８１】
マルチキャストアドレスを学習可能なネットワークアダプタでは、前述のとおり、イーサネットヘッダ解析部１２３がタイプフィールドの確認、ＩＰヘッダ解析部へＩＧＭＰヘッダもしくはＭＬＤヘッダの開始部の通知などを行っている。しかし、同時に、イーサネットヘッダ解析部１２３は、入力コントローラ１２１から受け取ったデータのうち、イーサネットヘッダ部分の送信元ＭＡＣアドレス部分を取り出すこともできる。イーサネットヘッダ解析部１２３で送信元ＭＡＣアドレスも認識した場合においては、認識した送信元ＭＡＣアドレスも制御部１３に通知し、制御部１３が通知されたＭＡＣアドレスの処理を行う。かかる形態の場合においては、ユニキャストアドレスと、マルチキャストアドレスの両方をネットワークアダプタが自立的に設定することができる。
【００８２】
ＩＧＭＰパケットを用いてマルチキャストアドレスを認識するアドレス認識部１２について述べた実施形態では、入力コントローラ１２１からイーサネットヘッダ解析部１２３、ＩＰｖ４ヘッダ解析部１２４、ＩＧＭＰヘッダ解析部１２５の全てに並列的に分割したデータが送られている。しかし、これは説明のために記載したに過ぎず、図８に示した形態に限られるものではない。実装によって、様々な形態をとることができる。
【００８３】
ＭＬＤパケットを用いてマルチキャストアドレスを認識するアドレス認識部１２についても同様である。図１１に示したように入力コントローラ１２１からイーサネットヘッダ解析部１２３、ＩＰｖ６ヘッダ解析部１２６、および、ＭＬＤヘッダ解析部１２７に並列的に分割したデータが送られる必要があるわけではなく、実装によって様々な形態をとることができる。
【００８４】
（付記１）仮想コンピュータを提供するホストコンピュータに接続し、ネットワークとの間でパケットを送受信するネットワークアダプタであって、
前記ホストコンピュータから送信されるパケットおよび前記ホストコンピュータにより提供される仮想コンピュータから送信されるパケットの送信元アドレスを認識する認識手段と、
前記ネットワークから受信するパケットをフィルタリングするフィルタリング部と、
前記認識手段によって認識されたアドレスを前記フィルタリング部における通過アドレスとして設定する制御手段、
を有することを特徴とするネットワークアダプタ。
（付記２）前記ネットワークはイーサネットの規格に基づくネットワークであって、
前記認識手段は、前記ホストコンピュータまたは前記仮想コンピュータから送信されたパケットのイーサヘッダの送信元ＭＡＣアドレス領域から前記送信元アドレスを取り出す
ことを特徴とする、付記１に記載のネットワークアダプタ。
（付記３）前記ホストコンピュータから送信されるパケット、もしくは、前記ホストコンピュータにより提供される仮想コンピュータから送信されるパケットを受信することをトリガとして、前記フィルタリング部における通過アドレスの設定を行う
ことを特徴とする、付記１に記載のネットワークアダプタ。
（付記４）前記認識手段は、前記ホストコンピュータから送信されるパケットおよび前記ホストコンピュータにより提供される仮想コンピュータから送信されるパケットの一定部分を抜き出すことにより送信元アドレスを認識することを特徴とする、付記１に記載のネットワークアダプタ。
（付記５）前記認識手段が、前記ホストコンピュータから送信されるパケットを一定のビット幅に区切るための入力コントローラと、
前記入力コントローラから出力された前記一定のビット幅に区切られたパケットを記憶する記憶回路と、
記憶されたパケットのうちの一部分をアドレスとして取り出すアドレス取得手段と
を有することを特徴とする、付記１に記載のネットワークアダプタ。
（付記６）ホストコンピュータに接続し、ネットワークとの間でパケットを送受信するネットワークアダプタであって、
前記ホストコンピュータから送信される、もしくは、前記ホストコンピュータが受信するマルチキャスト制御パケットに含まれているマルチキャストアドレスから、前記ホストコンピュータの属するマルチキャストグループを識別する、ハードウェアマルチキャストアドレスを算出する算出手段と、
前記ネットワークから受信するパケットをフィルタリングするフィルタリング部と、
前記算出手段によって算出されたハードウェアマルチキャストアドレスを、前記フィルタリング部における通過アドレスとして設定する制御手段、
を有することを特徴とするネットワークアダプタ。
（付記７）前記マルチキャスト制御パケットに設定されている制御メッセージを解析する解析手段をさらに有し、
前記制御手段は、マルチキャストグループへの参加を標示した制御メッセージが前記解析手段により検出されたときに、前記ハードウェアマルチキャストアドレスを前記フィルタリング部における通過アドレスとして設定する
ことを特徴とする、付記６に記載のネットワークアダプタ。
（付記８）前記マルチキャスト制御パケットはＩＧＭＰパケットであり、
前記算出手段は、ＩＧＭＰパケットに記されたＩＰｖ４マルチキャストアドレスに対応するハードウェアマルチキャストアドレスを算出することを特徴とする付記６に記載のネットワークアダプタ。
（付記９）前記マルチキャスト制御パケットはＭＬＤパケットであり、
前記算出手段は、ＭＬＤパケットに記されたＩＰｖ６マルチキャストアドレスに対応するハードウェアマルチキャストアドレスを算出することを特徴とする付記６に記載のネットワークアダプタ。
（付記１０）前記ホストコンピュータが仮想コンピュータを提供する仮想化手段を備えて、
前記算出手段は、前記ホストコンピュータにより提供される仮想コンピュータから送信されるパケットに含まれているマルチキャストアドレスからもハードウェアマルチキャストアドレスを算出する
ことを特徴とする付記６に記載のネットワークアダプタ。
（付記１１）仮想コンピュータを提供するホストコンピュータに接続し、ネットワークとの間でパケットを送受信するネットワークアダプタのフィルタリング条件を設定する方法であって、
前記ネットワークアダプタ内で、前記ホストコンピュータから送信されるパケットおよび前記ホストコンピュータにより提供される仮想コンピュータから送信されるパケットの送信元アドレスを認識し、
認識したアドレスを、前記ネットワークから受信するパケットをフィルタリングするためのフィルタリング部における通過アドレスとして設定する
ことを特徴とする、フィルタリング条件の設定方法。
（付記１２）ホストコンピュータに接続し、ネットワークとの間でパケットを送受信するネットワークアダプタのフィルタリング条件を設定する方法であって、
前記ネットワークアダプタ内で、前記ホストコンピュータから送信されるマルチキャスト制御パケットに含まれているマルチキャストアドレスから前記ホストコンピュータの属するマルチキャストグループを識別するハードウェアマルチキャストアドレスを算出し、
算出したハードウェアマルチキャストアドレスを、前記ネットワークから受信するパケットをフィルタリングするためのフィルタリング部における通過アドレスとして設定する
ことを特徴とする、フィルタリング条件の設定方法。
【図面の簡単な説明】
【００８５】
【図１】本発明の概念を説明する図である。
【図２】受信パケットフィルタリング部が備えるフィルタテーブルの構成を示した図である。
【図３】仮想環境の一例を示す図である。
【図４】ユニキャストパケットに対応したアドレス認識部の一例を示す図である。
【図５】フィルタテーブルへの登録処理を示すフローチャートである。
【図６】フィルタテーブルからの削除処理を示すフローチャートである。
【図７】アドレス解決のシーケンスを示す図である。
【図８】ＩＧＭＰ制御パケットを処理するアドレス認識部の実装例を示す図である。
【図９】ＩＧＭＰ制御パケットのフォーマットを示す図である。
【図１０】ＩＰｖ４マルチキャストアドレスからイーサネットマルチキャストアドレスへのマッピングを説明する図である。
【図１１】ＭＬＤ制御パケットを処理するアドレス認識部の実装例を示す図である。
【図１２】ＭＬＤ制御パケットのフォーマットを示す図である。
【図１３】ＩＰｖ６マルチキャストアドレスからイーサネットマルチキャストアドレスへのマッピングを説明する図である。
【図１４】既存のネットワークアダプタの動作を示す概念図である。
【符号の説明】
【００８６】
１  ネットワークアダプタ
１１  ＲＯＭ
１２  アドレス認識部
１２１  入力コントローラ
１２２  ラッチ回路
１２３  イーサネット解析部
１２４  ＩＰｖ４ヘッダ解析部
１２５  ＩＧＭＰヘッダ解析部
１２６  ＩＰｖ６ヘッダ解析部
１２７  ＭＬＤヘッダ解析部
１３  制御部
１４  受信パケットフィルタリング部
１４１  フィルタテーブル
２  ホストコンピュータ
２０１  仮想化ソフトウェア
３０、４０、５０  仮想コンピュータ
３１、３２、４１、４２、５１、５２  仮想ネットワークアダプタ
【図１】
2009071423.tif 000003
【図２】
2009071423.tif 000004
【図３】
2009071423.tif 000005
【図４】
2009071423.tif 000006
【図５】
2009071423.tif 000007
【図６】
2009071423.tif 000008
【図７】
2009071423.tif 000009
【図８】
2009071423.tif 000010
【図９】
2009071423.tif 000011
【図１０】
2009071423.tif 000012
【図１１】
2009071423.tif 000013
【図１２】
2009071423.tif 000014
【図１３】
2009071423.tif 000015
【図１４】
2009071423.tif 000016