WO2009157067A1 - 試験装置及び方法 - Google Patents
試験装置及び方法 Download PDFInfo
- Publication number
- WO2009157067A1 WO2009157067A1 PCT/JP2008/061570 JP2008061570W WO2009157067A1 WO 2009157067 A1 WO2009157067 A1 WO 2009157067A1 JP 2008061570 W JP2008061570 W JP 2008061570W WO 2009157067 A1 WO2009157067 A1 WO 2009157067A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- address
- adapter
- packet
- network adapter
- data
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/50—Testing arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2596—Translation of addresses of the same type other than IP, e.g. translation from MAC to MAC addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/618—Details of network addresses
- H04L2101/622—Layer-2 addresses, e.g. medium access control [MAC] addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/10—Mapping addresses of different types
- H04L61/103—Mapping addresses of different types across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Maintenance And Management Of Digital Transmission (AREA)
Abstract
1台の試験装置でネットワークアダプタ又はネットワークドライバの試験を行う技術を提供する。少なくとも一つのネットワークアダプタが接続された試験装置が、仮想アドレスを送信先アドレスとしてデータの送信を指示し、試験モードが設定されている場合、前記データの送信先アドレスを自装置と接続された前記ネットワークアダプタに割り当てられたアドレスに変換して、該ネットワークアダプタ或は自装置に接続された他のネットワークアダプタに当該データを送って送信させ、前記変換後の送信先アドレスが割り当てられたネットワークアダプタを介して前記データを受信し、前記データの送信結果に基づいて試験結果を算出する。
Description
本発明は、ネットワークアダプタ(通信制御部)やネットワークドライバの試験を行う技術に関する。
ネットワークアダプタは、コンピュータに装着或は実装され、コンピュータ間の通信に用いられる。ネットワークアダプタは、コンピュータの拡張スロットに挿入するカード状のものが多いため、ネットワークカード、ネットワークボード、ネットワークインタフェースカード等とも称される。
ネットワークアダプタの試験としては、高負荷テストや性能測定が挙げられる。
ネットワークアダプタの高負荷テストとは、そのネットワークアダプタに可能な限りのバイト数またはパケット数のデータを送信または受信させるテストのことである。
ネットワークアダプタの性能測定とは、そのネットワークアダプタに可能な限りのバイト数またはパケット数のデータを送信または受信させた時、単位時間あたりにどれだけのデータが流れたのかを計算して求めることである。
性能測定時は、可能な限り高速な送受信を行うため、性能測定が高負荷テストにもなっている。
しかし、一つのTCPコネクションでは必ずしもネットワークアダプタの能力を最大限に使いきれない場合もあるため、高負荷テストは性能測定ツールを複数同時に起動したり、双方向に起動したりといった手法を採ることが多い。
また、本願発明に関連する先行技術として、例えば、下記の特許文献1に開示される技術がある。
性能測定や高負荷テストは、図53に示すように、ネットワークアダプタを設けたコンピュータ2台をネットワークケーブルで接続し、netperfといった既存のアプリケーションソフトウェアによりTCP/IPを用いて通信することで行う。
しかし、コンピュータは、一般に高価であるため、高負荷テストや性能測定のたびにマシンが2台必要となると、それらにかかる費用が高くなってしまう。
また、最近のコンピュータは、複数のCPUを備えるものが多く、且つCPUの高速化が図られ、メモリ容量も1ギガバイト以上と大容量化されているため、処理能力が高く、ネットワークアダプタの試験のために2台のコンピュータを占有するのは無駄が多い。
例えば、図54に示すように、ネットワークアダプタ2枚をマシン1台に挿して、そのネットワークアダプタ間で通信を行わせた場合であっても、処理能力が不足することは少ない。
しかしながら、コンピュータの処理能力に不足がないにも関わらず、図54のようにコンピュータ1台の構成で、高負荷テストや性能測定を行うことは、次の理由により出来なかった。
(1)IP層を経由して通信すると、1台のコンピュータではパケットがIP層で折り返してしまい、ネットワークアダプタにはデータが流れない。
例えば、図53のように2台のコンピュータ(ホスト)間で通信する場合、ホストHAにおいてアプリケーションソフトウェア91Aから送出されたパケットは、ストリームヘッド92A、TCP層93A、IP層94Aそしてドライバ95Aを介してネットワークアダプタ96Aに送られる。
そして、ホストHAのネットワークアダプタ96Aは、ネットワークケーブルを介してパケットをホストHBのネットワークアダプタ96Bに送信する。
ホストHBにおいて、ネットワークアダプタ96Bで受信されたパケットは、ドライバ95B、IP層94B、TCP層93Bそしてストリームヘッド92Bを介してアプリケーションソフトウェア91Bに送られる。
これに対し、図54のように1台のコンピュータに装着したネットワークアダプタ96A,96B間で通信する場合、アプリケーションソフトウェア91から送出されたパケットは、ストリームヘッド92及びTCP層93を介してIP層94に送られる。そして、パケットは、IP層94で折り返し、TCP層93及びストリームヘッド92を介してアプリケーションソフトウェア91に戻る。
即ち、ホストHA上で、同じホストHAに装着されているネットワークアダプタ96A或はネットワークアダプタ96BのIPアドレス宛てにパケットを送信すると、送信元IPアドレスと送信先IPアドレスが同じとなり、IP層94で折り返してしまい、ネットワークドライバやネットワークアダプタにパケットは流れない。
図55の例では、ネットワークアダプタ96AにIPアドレス10.20.1.1が割りつけてあり、ネットワークアダプタ96BにIPアドレス10.20.2.1が割りつけられている。
そして、アプリケーションソフトウェアとしてnetperfを用いてネットワークアダプタ96Bへパケットを送る場合、次のように入力する。
> netperf -H 10.20.2.1
この場合、パケットは、ネットワークアダプタ96Aが送信元となってネットワークアダプタ96Bへ送信するのではなく、IP層94で送信元としてネットワークアダプタ96BのIPアドレスが選択されるので、送信先のIPアドレスと同じになってしまう。
この場合、パケットは、ネットワークアダプタ96Aが送信元となってネットワークアダプタ96Bへ送信するのではなく、IP層94で送信元としてネットワークアダプタ96BのIPアドレスが選択されるので、送信先のIPアドレスと同じになってしまう。
このようになる理由は、IPの送信のルールが以下のようになっているからである。
(1-1)送信元IPアドレスは、送信先IPアドレスと同じIPサブネットに属しているネットワークアダプタ96A,96Bが、そのホスト内に装着されていれば、当該IPサブネットに属するネットワークアダプタのIPアドレスとなる。図55の例の場合、送信先が10.20.2.1なので、送信元も10.20.2.1となる。
(1-2)送信先IPアドレスが、同じホスト内に存在すれば、下位のドライバにパケットを渡すことはせずに、IP層で折り返して上位にデータ(パケット)を渡す。
(2)IPを使わないでユーザ空間から送受信するとパケットロストが多発する。
IP以外のプロトコル、例えばioctlを使用すれば、ユーザ空間からストリームヘッドを経て、TCP層およびIP層を通さずに、ドライバへパケットを送信すること、またネットワークアダプタを経てドライバからパケットを受信することが可能である。
しかし、ストリームヘッド91およびドライバ95は、データをキューイングしておく機能を実装していないことが多いため、ある受信パケットをストリームヘッドで処理中であれば、ドライバは次のパケットをストリームヘッドへは送らずロストさせる場合が多い。
(2-1)受信時パケットロストする理由
一般に、高負荷送受信時の、送受信パケット間隔は、相対的に短い時間が何個か続いた後、相対的に長い時間の間隔となる場合が多い。
一般に、高負荷送受信時の、送受信パケット間隔は、相対的に短い時間が何個か続いた後、相対的に長い時間の間隔となる場合が多い。
例えば、パケット1、パケット2、パケット3、....の順に受信したとして、
パケット1~パケット10までは、各パケット同士の間隔が10マイクロ秒、
パケット10とパケット11の間隔が、100マイクロ秒、
パケット11~パケット20までは、各パケット同士の間隔が10マイクロ秒、
パケット20とパケット21の間隔が、100マイクロ秒、
のようになることがある。(*1)
一方、カーネル空間からユーザ空間に1かたまりのデータを渡すのにかかる時間は、その中間くらい(例えば、15マイクロ秒)であることが多い。
パケット1~パケット10までは、各パケット同士の間隔が10マイクロ秒、
パケット10とパケット11の間隔が、100マイクロ秒、
パケット11~パケット20までは、各パケット同士の間隔が10マイクロ秒、
パケット20とパケット21の間隔が、100マイクロ秒、
のようになることがある。(*1)
一方、カーネル空間からユーザ空間に1かたまりのデータを渡すのにかかる時間は、その中間くらい(例えば、15マイクロ秒)であることが多い。
この場合、あるパケットがストリームヘッドに到着して、10マイクロ秒が経過した時、ストリームヘッドは、まだパケットをユーザ空間にまだ渡せていない。このため、ドライバ2は、ストリームヘッドがまだ処理中であると判定して、次のパケットを破棄する(パケットロストさせる)。
なお、(*1)のようになる理由は以下の2点である。
(2-1-1)ホストのCPU割当は、TSS(Time sharing system)で行われている。パケットを送信する側において、一度CPUが割りつけられると、その期間に複数個パケットを連続して送信するが、TSSであるためにどこかで送信が一度中断になる。その後またCPUが割りつけられて送信を再開し、複数個のパケットを連続して送信するが、その間、時間がかかる場合がある。
(2-1-2)ハードウェアのキューが満杯ならば、ドライバは送信を待つが、送信完了通知は、その通知処理(割込み)によるCPU使用率向上を避けるために、何十パケットかに一度しか上がらないようにしてあることが多い。そのため、ドライバは何十パケットかを短い時間間隔で送信処理したあと、ハードウェアからの送信完了通知を相対的に長い時間待つような動作をすることになる。
一方、TCP/IPを使用すると、以下の仕組みのため、パケットロストが発生しない。
ストリームヘッドが処理中の場合、TCP層93はパケットを破棄せず待機する。
IP層94は、TCP層93が待機状態、または、既にIP層94のキューのデータが溜まっている場合は、キューにデータを登録する。
IP層94は、TCP層93の待機状態が解除されると、データをTCP層93に渡す。
このように、パケットが溜まっている場合でもキューイングによりパケットを待機させることにより、パケットロストを防止している。
なお、TCP/IPと同様にキューイングを行い、且つ宛先IPアドレスが自装置内であるパケットをドライバの手前で折り返さない通信プロトコルを新たに作成すれば、上記問題を回避することも可能である。しかし、インターネットやイントラネットといったネットワークではTCP/IPがデファクトスタンダードとなっているので、TCP/IP以外のプロトコルを用いたのでは、実態に則した試験が行えないという問題があった。
また、図56に示すように、1台のマシンに1枚のネットワークアダプタを挿し、送信したパケットを、そのアダプタ自身が受信するアダプタ内折り返し機能を持つネットワークアダプタもある。
この方式では、ホスト1台、アダプタ1枚、ケーブル無しでアダプタやドライバのテストが可能である。
しかし、上記(1)の理由でTCP/IPは使用できず、そのため(2)の問題が発生する。
そこで本発明は、1台の試験装置でネットワークアダプタ又はネットワークドライバの試験が行える技術を提供する。
上記課題を解決する本発明の一形態として、試験装置や、試験方法、試験プログラムが挙げられる。
試験装置は、
少なくとも一つのネットワークアダプタが接続され、
仮想アドレスを送信先アドレスとしてデータの送信を指示する送信アプリケーション部と、
試験モードの場合に前記データの送信先アドレスを自装置と接続された前記ネットワークアダプタに割り当てられたアドレスに変換して該ネットワークアダプタ或は自装置に接続された他のネットワークアダプタに当該データを送って送信させるアドレス変換部と、
前記変換後の送信先アドレスが割り当てられたネットワークアダプタを介して前記データを受信する受信アプリケーション部と、
前記データの送信結果に基づいて試験結果を算出する算出部と、
を備える。
少なくとも一つのネットワークアダプタが接続され、
仮想アドレスを送信先アドレスとしてデータの送信を指示する送信アプリケーション部と、
試験モードの場合に前記データの送信先アドレスを自装置と接続された前記ネットワークアダプタに割り当てられたアドレスに変換して該ネットワークアダプタ或は自装置に接続された他のネットワークアダプタに当該データを送って送信させるアドレス変換部と、
前記変換後の送信先アドレスが割り当てられたネットワークアダプタを介して前記データを受信する受信アプリケーション部と、
前記データの送信結果に基づいて試験結果を算出する算出部と、
を備える。
また、試験方法は、
少なくとも一つのネットワークアダプタが接続された試験装置が、
仮想アドレスを送信先アドレスとしてデータの送信を指示するステップと、
試験モードの場合に前記データの送信先アドレスを自装置と接続された前記ネットワークアダプタに割り当てられたアドレスに変換して該ネットワークアダプタ或は自装置に接続された他のネットワークアダプタに当該データを送って送信させるステップと、
前記変換後の送信先アドレスが割り当てられたネットワークアダプタを介して前記データを受信するステップと、
前記データの送信結果に基づいて試験結果を算出するステップと、
を実行する。
少なくとも一つのネットワークアダプタが接続された試験装置が、
仮想アドレスを送信先アドレスとしてデータの送信を指示するステップと、
試験モードの場合に前記データの送信先アドレスを自装置と接続された前記ネットワークアダプタに割り当てられたアドレスに変換して該ネットワークアダプタ或は自装置に接続された他のネットワークアダプタに当該データを送って送信させるステップと、
前記変換後の送信先アドレスが割り当てられたネットワークアダプタを介して前記データを受信するステップと、
前記データの送信結果に基づいて試験結果を算出するステップと、
を実行する。
また、本発明は、上記試験方法をコンピュータに実行させるプログラムであっても良い。更に、本発明は、このプログラムをコンピュータが読み取り可能な記録媒体に記録したものであっても良い。コンピュータに、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
ここで、コンピュータが読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータから読み取ることができる記録媒体をいう。このような記録媒体の内コンピュータから取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD-ROM、CD-R/W、DVD、DAT、8mmテープ、メモリカード等がある。
また、コンピュータに固定された記録媒体としてハードディスクやROM(リードオンリーメモリ)等がある。
本発明によれば、1台の試験装置でネットワークアダプタ又はネットワークドライバの試験を行う技術を提供できる。
〈概略構成〉
図1は、本実施例に係る試験装置の機能ブロック図、図2は本実施例に係る試験装置のハードウェア構成図である。
図1は、本実施例に係る試験装置の機能ブロック図、図2は本実施例に係る試験装置のハードウェア構成図である。
図2に示すように、試験装置1は、本体11内にCPU(central processing unit)12やメインメモリ13、入出力ポート(I/O)14等を備えた一般的なコンピュータである。
入出力ポート14には、キーボードやマウスといったユーザの指示を入力する入力部15や、演算処理の為のデータやソフトウェアを記憶したハードディスクなどの記憶部16、他のコンピュータとの通信を制御する通信制御部として機能するネットワークアダプタ17A,17Bが接続される。
記憶部16には、オペレーティングシステム(OS)やnetperfなどのアプリケーションソフト、ネットワークドライバがインストールされている。
CPU12は、メインメモリ13を介して前記OSやアプリケーションプログラム、ネットワークドライバを記憶部16から適宜読み出して実行し、ネットワークアダプタ(以下単にアダプタとも称す)17や記憶部16から読み出した情報を演算処理することにより、図1に示すようにアプリケーション部21、ストリームヘッド22、TCP部(TCP層)23、IP部(IP層)24、ドライバ部(駆動制御部)25A,25B、試験結果算出部26、試験結果出力部27としても機能する。なお、図1において、カーネル空間とは、OSがカーネルやデバイスドライバの動作のために確保するメモリ領域であり、ユーザ空間とは、OSがユーザプロセスの動作のために確保するメモリ領域である。
アプリケーション部21は、送信アプリケーション部と受信アプリケーション部を有する。
送信アプリケーション部として機能する場合、CPU12は、アダプタ17A,17B及びネットワークドライバの試験を行うため、アダプタ17A,17Bが送信可能な最大量或は最高速でパケットをストリームヘッド22に送出する。
送信アプリケーション部として機能する場合、CPU12は、アダプタ17A,17B及びネットワークドライバの試験を行うため、アダプタ17A,17Bが送信可能な最大量或は最高速でパケットをストリームヘッド22に送出する。
また、受信アプリケーション部としてのCPU12は、アダプタ17A,17Bで受信したパケットを、パケットを受信したアダプタに対応するドライバ部25A,25B、IP層24、TCP層23、ストリームヘッダ22を介して受信する。
試験結果算出部26としてのCPU12は、送信したパケットの量や速度、受信したパケットの量や速度、エラー数などを測定し、単位時間当りの送信速度やエラー率などの試験結果としての値を算出する。
試験結果出力部27としてのCPU12は、算出した試験結果について、記録媒体への記録、表示部への表示、印刷、他のコンピュータへの送信といった出力処理を行う。
試験結果出力部27としてのCPU12は、算出した試験結果について、記録媒体への記録、表示部への表示、印刷、他のコンピュータへの送信といった出力処理を行う。
ストリームヘッド22としてのCPU21は、ユーザ空間とカーネル空間との間のデータ(パケット)の受け渡しの処理を行う。
TCP層23としてのCPU12は、ストリームヘッド22からの送信するデータにTCPヘッダを付加してパケット(TCPセグメント)を生成してIP層24へ渡す。また、TCP層23としてのCPU12は、IP層から受信したパケットからTCPヘッダを外してストリームヘッダ22へ渡す等、TCP(Transmission Control Protocol)に従う処理を行う。
IP層24としてのCPU12は、TCP層23からの送信するパケットにIPヘッダを付加してパケット(IPデータグラム)を生成してドライバ部25A,25Bへ渡す。また、いずれかのドライバから受信したパケットからIPヘッダを外してTCP層23へ渡す等、IP(Internet Protocol)に従う処理を行う。また、IP層24は、パケットを送信する際、送信先アドレスと同じサブネットに属するアダプタ17A或はアダプタ17Bを選択し、選択したアダプタに対応するドライバ25A/25Bへ送信パケットを渡して送信させる。本実施例のパケット生成部は、インターネットプロトコルに従って、前記データに前記送信先アドレスを付加したパケットを生成するものであり、前記TCP層23とIP層24を備えている。本実施例のIP層24は、ドライバ25A,アダプタ17AにアドレスIP11=10.20.1.1、ドライバ25B,アダプタ17BにアドレスIP21=10.20.2.1を割り当てている。
ドライバ部25A,25BとしてのCPU12は、コンピュータ1側からのデータ(例えばパケット)を、それぞれのドライバ部に対応するアダプタ17A,17Bへ渡して送信させる処理を行う。また、ドライバ部25A、25BとしてのCPU12は、それぞれのドライバ部に対応したアダプタ17A,17Bで受信したパケットをIP層24へ受け渡す処理を行う。
アダプタ17A,17Bは、それぞれに対応するドライバ部25A,25Bから受けたデータをインターネット等のネットワークへ送出し、また該ネットワークを介して受信したデータをそれぞれに対応するドライバ部25A,25Bへ渡すことで、他のコンピュータとの通信を可能にする。
本実施例のコンピュータでは、ドライバ部25A,25B或はアダプタ17A,17Bがアドレス変換部を有している。即ち、ドライバ部25A,25BとしてのCPU12や、アダプタ17A,17Bの処理部や一部の回路が、アドレス変換部の機能を実現する。
アドレス変換部は、ドライバ或はアダプタの試験を行うモードである試験モードが選択された場合には、前記データの送信先アドレスを、自装置と接続された前記ネットワークアダプタに割り当てられたアドレスに変換して、当該ネットワークアダプタ或は自装置に接続された他のネットワークアダプタに当該データを送って送信させる。
アドレス変換部は、ドライバ或はアダプタの試験を行うモードである試験モードが選択された場合には、前記データの送信先アドレスを、自装置と接続された前記ネットワークアダプタに割り当てられたアドレスに変換して、当該ネットワークアダプタ或は自装置に接続された他のネットワークアダプタに当該データを送って送信させる。
本実施例のコンピュータ1は、自装置内に備えた2つのアダプタ間で試験のための通信である試験通信を行う場合に、ユーザまたはアプリケーション部21が送信先のIPアドレスとして仮想マシンのIPアドレスを指定する。これにより、データの送信先が自装置内にならず、アプリケーション部21が送出したパケットはIP層24で折り返されず、IP層24から例えばドライバ部25Aへ送られる。
そして、コンピュータ1は、IP層24を越えたアダプタ17Aまたはドライバ部25Aで、パケットの送信先を自装置内に装着された他方のアダプタ17BのIPアドレスに変換する。これにより、アダプタ17Aからパケットを送信し、ネットワークケーブルを介して自装置内のアダプタ17Bで受信する試験通信を可能にしている。
ここで、コンピュータ1は、アダプタ17Aまたはドライバ部25Aで送信先IPアドレスを自装置内のIPアドレスに変換すると共に、送信元IPアドレスも仮想マシン上のものに変換してパケットを送信している。これにより、パケットを受信したアプリケーション部21は、仮想マシンからの通信として認識し、仮想マシンに対して応答する。なお、上記はアダプタ17Aからアダプタ17Bへの試験通信の例を示したが、ドライバ25B或はアダプタ17Bが上記ドライバ25A或はアダプタ17Aと同様に動作することで、アダプタ17Bからアダプタ17Aへの試験通信も行うことができる。
即ち、本実施例のコンピュータ1は、自装置内のアダプタ17A/17Bの一方から仮想マシンに対してパケットを送信するようにIP層24に見せかけることでIP層24でのパケットの折り返しを防止し、実際には送信先アドレスを変換して他方のアダプタに送信する。このときコンピュータ1は、パケットの送信元アドレスを仮想マシンのアドレスに変換するので、このパケットを仮想マシンからのパケットであるものとして他方のアダプタ17A/17Bで矛盾なく受信する。
これにより、1台の試験装置上で、2つのアダプタ間で、TCP/IPを用いて試験を行うことができる。
また、TCP/IPを用いるので、パケットロストが発生せず、高負荷テストや性能測定を行うことが可能となる。
〈実施例1〉
-1台のマシンに2枚のカードを挿す場合-
図1,図2に示した試験装置1に、2枚のアダプタ(ネットワークカード)17A,17Bを搭載した例を以下に詳述する。
-1台のマシンに2枚のカードを挿す場合-
図1,図2に示した試験装置1に、2枚のアダプタ(ネットワークカード)17A,17Bを搭載した例を以下に詳述する。
本実施例では、アダプタ17AのIPアドレスIP11を10.20.1.1、アダプタ17BのIPアドレスIP21を10.20.2.1と割り当てている。
図3は、本実施例1の試験方法の概念図である。図3に示すように、IPアドレスが10.20.1.1のアダプタ17Aの通信相手が、IPアドレスが10.20.1.2の第一の仮想マシンであるようにIP層に見せかけて通信を行う。また、IPアドレスが10.20.2.1のアダプタ17Bの通信相手がIPアドレス10.20.2.2の第二の仮想マシンであるようにIP層24に見せかけて、通信を行う。
仮想マシン上のIPアドレスは、試験装置1上に存在しないものを選択する。これは、仮想マシン上のIPアドレスが試験装置1上に存在するものであると、そのIPアドレスを送信先アドレスとしたときにパケットがIP層24で折り返してしまうためである。
また、第一の仮想マシンへのパケット送信が第一のアダプタ17Aから行われるように、アダプタ17Aと同じIPサブネットに属するIPアドレスを第一の仮想マシンに割り当てている。同じく、第二の仮想マシンへのパケット送信が第二のアダプタ17Bから行われるように、アダプタ17Bと同じIPサブネットに属するIPアドレスを第二の仮想マシンに割り当てている。
仮想マシン上のMACアドレスは、試験装置上および他の仮想マシンとは異なるものとする。即ち第一の仮想マシンのMACアドレスMAC11と,第二の仮想マシンのMACアドレスMAC21とが,アダプタ17AのMACアドレスMAC12,アダプタ17BのMACアドレスMAC22とそれぞれ別のアドレスになるようにする。
上記のように、あたかも仮想マシンと通信しているようにIP層にみせかけるため、本実施例では、アダプタなどのハードウェアまたはドライバでIPアドレスおよびMACアドレスを変換して通信する試験方法を採用する。
図4は本実施例のコンピュータ1による試験方法の説明図、図5はアダプタ17Aからアダプタ17Bへ通信を開始する際の手順を示す図、図6はアダプタ17Bからアダプタ17Aへ通信を開始する際の手順を示す図、図7~図12は、図4の送信処理を図5,図6の各手順において示した図、図13~18は図7~図12の各手順で変換するアドレスの説明図である。
ユーザが試験モードへの移行指示、例えば試験モードへ移行するためのコマンドとして後述の”addrtrans -s”を入力すると、コンピュータ1は試験モードを設定する。なお、本実施例では、ユーザが試験モードへ移行のコマンドを入力する際に、アダプタ17Aの通信相手である第一の仮想マシンのIPアドレス及びアダプタ17Bの通信相手である第二の仮想マシンのIPアドレスを図3に示すように指定する。仮想マシンのアドレスは、ユーザによる入力に限らず、コンピュータ1が各アダプタ17A,17Bに割り当てられたIPアドレスと同じサブネットに属するアドレスを自動生成しても良い。例えばアダプタ17AのIPアドレスを同じサブネット内で所定の値だけ増減させて第一の仮想マシンのIPアドレスとする。
そして、ユーザが送信の指示、例えば試験を行うためのコマンドとして後述の”netperperf”を入力すると、コンピュータ1は該コマンドを実行して試験を開始(S1)し、前記コマンドに応じた送信処理を行う(S2)。具体的には、以下の(1)~(6)の処理を行う。
先ず、前記試験を行うためのコマンドの入力によって、図5に示すようにアダプタ17Aからアダプタ17Bへの通信が指定された場合について説明する。
(1)前記試験用を行うためのコマンドに応じ、アプリケーション部21は、第一の仮想マシン宛てのパケットの送信を開始しようとする。ここで第一の仮想マシンのIPアドレスは、前述のように自装置内のアダプタとは異なるIPアドレスが指定されている。このためIP層24は、図7に示すように、送信先IPアドレスと対応するMACアドレスを求めるアドレス解決要求を行う(S101)。
ユーザが試験モードへの移行指示、例えば試験モードへ移行するためのコマンドとして後述の”addrtrans -s”を入力すると、コンピュータ1は試験モードを設定する。なお、本実施例では、ユーザが試験モードへ移行のコマンドを入力する際に、アダプタ17Aの通信相手である第一の仮想マシンのIPアドレス及びアダプタ17Bの通信相手である第二の仮想マシンのIPアドレスを図3に示すように指定する。仮想マシンのアドレスは、ユーザによる入力に限らず、コンピュータ1が各アダプタ17A,17Bに割り当てられたIPアドレスと同じサブネットに属するアドレスを自動生成しても良い。例えばアダプタ17AのIPアドレスを同じサブネット内で所定の値だけ増減させて第一の仮想マシンのIPアドレスとする。
そして、ユーザが送信の指示、例えば試験を行うためのコマンドとして後述の”netperperf”を入力すると、コンピュータ1は該コマンドを実行して試験を開始(S1)し、前記コマンドに応じた送信処理を行う(S2)。具体的には、以下の(1)~(6)の処理を行う。
先ず、前記試験を行うためのコマンドの入力によって、図5に示すようにアダプタ17Aからアダプタ17Bへの通信が指定された場合について説明する。
(1)前記試験用を行うためのコマンドに応じ、アプリケーション部21は、第一の仮想マシン宛てのパケットの送信を開始しようとする。ここで第一の仮想マシンのIPアドレスは、前述のように自装置内のアダプタとは異なるIPアドレスが指定されている。このためIP層24は、図7に示すように、送信先IPアドレスと対応するMACアドレスを求めるアドレス解決要求を行う(S101)。
そしてIP層24は、アドレス解決要求パケットの送信先IPアドレスと同じIPサブネットに属するドライバ部25Aを選択して該ドライバ部25Aにアドレス解決要求パケットを送出する(S102)。
パケットを受信したアダプタ17Aまたはドライバ部25Aは、設定されているモードがアドレス変換モード(試験モード)か否かを判定する(S103)。判定の結果、設定されているモードがアドレス変換モードであれば、図13のように送信先のIPアドレスを10.20.1.2から10.20.2.1に変更し、送信元のIPアドレスを10.20.1.1から10.20.2.2に、送信元MACアドレスをMAC11からMAC22に変換する(S104)。そしてアダプタ17Aは、アドレスが変換されたパケットを外部に送信する(S105)。
なお、S103で、設定されているモードがアドレス変換モードで無いと判定された場合、即ち試験用のコマンドでない通信が指示され、通常モードが設定されている場合、アダプタ17Aあるいはドライバ25Aはアドレスを変換せずにパケットを送信する(S106)。
また、S104におけるアドレスの変換では、パケットの送信先が自装置内の他方のアダプタ17Bとなるように、アダプタ17Aまたはドライバ25Aが送信するパケットの送信先アドレスを図13に示すように変換する。但し、図13の例では、アドレス解決要求のパケットなので、このパケットの送信先MACアドレスはブロードキャスト用のff.ff.ff.ff.ff.ffとする。
更に、S104におけるアドレスの変換では、パケットの送信元が所定の仮想マシンとなるように、送信するパケットの送信元IPアドレス及び送信元MACアドレスを図13に示すように変換する。例えば、アダプタ17Aは、図3に示したようにアダプタ17Bに対して通信相手を第二の仮想マシンと見せかけるため、図13の例では送信するパケットの送信元IPアドレスを10.20.2.2、送信元MACアドレスをMAC22と変換して送信している。
アダプタ17Aから送信されたパケットは、ネットワークケーブルを介してアダプタ17Bに受信される。アダプタ17Bは、受信したパケットをドライバ部25B、IP層24、TCP層23、ストリームヘッダ22を介してアプリケーション部21へ送る。即ち、アプリケーション部21は、送信元である第二の仮想マシンからのパケットとして受信する。
(2)アダプタ17Bまたはドライバ部25Bにおいて、アドレス解決応答(ARP reply)を送信時、図14のようにMACアドレスおよびIPアドレスを変換する。以下、アダプタ17Bまたはドライバ25Bにおけるアドレス変換処理の詳細を図8を用いて説明する。
即ち、アプリケーション部21は、第二の仮想マシンに対してアドレス解決応答を返す(S201)
この場合も送信先IPアドレスが第二の仮想マシンであり、図3に示すとおり自装置内ではないため、IP層24は、送信先IPアドレスと同じIPサブネットに属するドライバ部25Bにパケットを送出する(S202)。
IP層24からパケットを受信したアダプタ17Bまたはドライバ部25Bは、設定されたモードがアドレス変換モード(試験モード)か否かを判定する(S203)。アダプタ17Bまたはドライバ部25Bは、設定されたモードがアドレス変換モードであれば、図14のように送信先IPアドレスを10.20.2.2から10.20.1.1に、送信先MACアドレスをMAC22からMAC11に、送信元IPアドレスを10.20.2.1から10.20.1.2に、送信元MACアドレスをMAC21からMAC12に変換する(S204)。そして、アダプタ17Bは、アドレスを変換したパケットを外部へ送信する(S205)。
なお、S203で、設定されたモードがアドレス変換モードでない、即ち通常モードと判定された場合、アダプタ17Bあるいはドライバ25Bはアドレスを変換せずにパケットを送信する(S206)。
なお、S203で、設定されたモードがアドレス変換モードでない、即ち通常モードと判定された場合、アダプタ17Bあるいはドライバ25Bはアドレスを変換せずにパケットを送信する(S206)。
S204におけるアドレスの変換では、送信先が第二の仮想マシンから自装置内の他方のアダプタ17Aとなるように、アダプタ17Bまたはドライバ部25Bが送信するパケット上の送信先IPアドレス及び送信先MACアドレスを図14に示すように変換する。
また、S204におけるアドレスの変換では、送信元がアダプタ17Bから第一の仮想マシンとなるように、送信するパケットの送信元IPアドレス及び送信元MACアドレスを図14に示すように変換する。図3に示したように、アダプタ17Aに対して通信相手を第一の仮想マシンと見せかけるため、図14の例では送信元IPアドレスを10.20.1.2、送信元MACアドレスをMAC12としている。
アダプタ17Bから送信されたパケットは、ネットワークケーブルを介してアダプタ17Aに受信される。アダプタ17Aは、受信したパケットをドライバ部25A、IP層24、TCP層23、ストリームヘッダ22を介してアプリケーション部21へ送る。即ち、アプリケーション部21は、送信元である第一の仮想マシンからのパケットとして受信する。
(3)アダプタ17Aまたはドライバ部25Aにおいて、TCP/IPパケットを送信時、図15のようにMACアドレスとIPアドレスとを変換する。以下、アダプタ17Aまたはドライバ部25Aによるアドレス変換処理の詳細を図9を用いて説明する。
アドレス解決によって第一の仮想マシンのMACアドレスを認識したアプリケーション部21は、第一の仮想マシン宛にパケットを送出する(S301)。
送信先IPアドレスが第一の仮想マシンであり、図3に示すように自装置内ではないため、IP層24は、宛先IPアドレスと同じIPサブネットに属するドライバ部25Aにパケットを送出する(S302)。
IP層24からパケットを受信したアダプタ17Aまたはドライバ部25Aは、設定されたモードがアドレス変換モード(試験モード)か否かを判定する(S303)。設定されたモードがアドレス変換モードであれば、図15のように送信先のIPアドレスを10.20.1.2から10.20.2.1に、送信先のMACアドレスをMAC12からMAC21に、送信元のIPアドレスを10.20.1.1から10.20.2.2に、送信元MACアドレスをMAC11からMAC22に変換する(S304)。そしてアダプタ17Aは、アドレスが変換されたパケットを外部に送信する(S305)。なお、S303で、アドレス変換モードでないと判定されればアドレスを変換せずにパケットを送信する(S306)。
S304におけるアドレスの変換では、送信先が自装置内の他方のアダプタ17Bとなるように、送信するパケットの送信先IPアドレス及び送信先MACアドレスを図15に示すように変換する。
また、S304におけるアドレスの変換では、送信元が所定の仮想マシンとなるように、送信するパケットの送信元IPアドレス及び送信元MACアドレスを図15に示すように変換する。即ち、図3に示したように、アダプタ17Bに対して通信相手を第二の仮想マシンと見せかけるため、図15のように、パケットの送信元IPアドレスを10.20.2.2、送信元MACアドレスをMAC22としている。
アダプタ17Aから送信されたパケットは、ネットワークケーブルを介してアダプタ17Bに受信される。アダプタ17Bは、受信したパケットをドライバ部25B、IP層24、TCP層23、ストリームヘッダ22を介してアプリケーション部21へ送る。即ち、アプリケーション部21は、送信元である第二の仮想マシンからのパケットとして受信する。
次に、前記試験を行うためのコマンドの入力によって、図6に示すようにアダプタ17Bからアダプタ17Aへの通信が指定された場合について説明する。
(4)前記試験を行うためのコマンドに応じ、アプリケーション部21は、第二の仮想マシン宛てのパケットの送信を開始しようとする。ここで第二の仮想マシンのIPアドレスは、前述のように自装置内のアダプタとは異なるIPアドレスが指定されている。このためIP層24は、図10に示すように、送信先IPアドレスと対応するMACアドレスを求めるアドレス解決要求を行う(S401)。
(4)前記試験を行うためのコマンドに応じ、アプリケーション部21は、第二の仮想マシン宛てのパケットの送信を開始しようとする。ここで第二の仮想マシンのIPアドレスは、前述のように自装置内のアダプタとは異なるIPアドレスが指定されている。このためIP層24は、図10に示すように、送信先IPアドレスと対応するMACアドレスを求めるアドレス解決要求を行う(S401)。
そしてIP層24は、アドレス解決要求パケットの送信先IPアドレスと同じIPサブネットに属するドライバ部25Bを選択して該ドライバ部25Bにアドレス解決要求パケットを送出する(S402)。
パケットを受信したアダプタ17Bまたはドライバ部25Bは、設定されているモードがアドレス変換モード(試験モード)か否かを判定する(S403)。判定の結果、設定されているモードがアドレス変換モードであれば、図16のように送信先IPアドレスを10.20.2.2から10.20.1.1に、送信元IPアドレスを10.20.2.1から10.20.1.2に、送信元MACアドレスをMAC21からMAC12に変換する(S404)。そして、アダプタ17Bは、アドレスを変換したパケットを外部へ送信する(S405)。
なお、S403で、設定されたモードがアドレス変換モードでない、即ち通常モードと判定された場合、アダプタ17Bあるいはドライバ25Bはアドレスを変換せずにパケットを送信する(S406)。
また、S404におけるアドレスの変換では、パケットの送信先が自装置内の他方のアダプタ17Aとなるように、アダプタ17Bまたはドライバ25Bが送信するパケットの送信先アドレスを図16に示すように変換する。但し、図16の例では、アドレス解決要求のパケットなので、このパケットの送信先MACアドレスはブロードキャスト用のff.ff.ff.ff.ff.ffとする。
なお、S403で、設定されたモードがアドレス変換モードでない、即ち通常モードと判定された場合、アダプタ17Bあるいはドライバ25Bはアドレスを変換せずにパケットを送信する(S406)。
また、S404におけるアドレスの変換では、パケットの送信先が自装置内の他方のアダプタ17Aとなるように、アダプタ17Bまたはドライバ25Bが送信するパケットの送信先アドレスを図16に示すように変換する。但し、図16の例では、アドレス解決要求のパケットなので、このパケットの送信先MACアドレスはブロードキャスト用のff.ff.ff.ff.ff.ffとする。
更に、S404におけるアドレスの変換では、パケットの送信元が所定の仮想マシンとなるように、送信するパケットの送信元IPアドレス及び送信元MACアドレスを図16に示すように変換する。例えばアダプタ17Bは、図3に示したように、アダプタ17Aに対して通信相手を第一の仮想マシンと見せかけるため、図16の例では送信するパケットの送信元IPアドレスを10.20.1.2、送信元MACアドレスをMAC12としている。
アダプタ17Bから送信されたパケットは、ネットワークケーブルを介してアダプタ17Aに受信される。アダプタ17Aは、受信したパケットをドライバ部25A、IP層24、TCP層23、ストリームヘッダ22を介してアプリケーション部21へ送る。即ち、アプリケーション部21は、送信元である第一の仮想マシンからのパケットとして受信する。
(5)アダプタ17Aまたはドライバ部25Aにおいて、アドレス解決応答(ARP reply)を送信時、図17のようにMACアドレス及びIPアドレスを変換する。以下、アダプタ17A又はドライバ25Aにおけるアドレス変換処理の詳細を図11を用いて説明する。
即ち、アプリケーション部21は、第一の仮想マシンに対してアドレス解決応答を返す(S501)
この場合も送信先IPアドレスが第一の仮想マシンであり、図3に示すとおり自装置内ではないため、IP層24は、送信先IPアドレスと同じIPサブネットに属するドライバ部25Aにパケットを送出する(S502)。
IP層24からパケットを受信したアダプタ17Aまたはドライバ部25Aは、設定されたモードがアドレス変換モード(試験モード)か否かを判定する(S503)。アダプタ17Aまたはドライバ部25Aは、設定されたモードがアドレス変換モードであれば、図17に示すように送信先のIPアドレスを10.20.1.2から10.20.2.1に、送信先のMACアドレスをMAC12からMAC21に、送信元のIPアドレスを10.20.1.1から10.20.2.2に、送信元MACアドレスをMAC11からMAC22に変換する(S504)。
そしてアダプタ17Aは、アドレスが変換されたパケットを外部に送信する(S505)。なお、S503で、アドレス変換モードでないと判定されればアドレスを変換せずにパケットを送信する(S506)。
S504におけるアドレスの変換では、送信先が第一の仮想マシンから自装置内の他方のアダプタ17Bとなるように、アダプタ17Aまたはドライバ部25Aが、送信するパケット上の送信先IPアドレス及び送信先MACアドレスを図17に示すように変換する。
また、S504におけるアドレスの変換では、送信元がアダプタ17Aから第二の仮想マシンとなるように、送信するパケットの送信元IPアドレス及び送信元MACアドレスを図17に示すように変換する。即ち、図3に示したように、アダプタ17Bに対して通信相手を第二の仮想マシンと見せかけるため、図17の例では送信元IPアドレスを10.20.2.2、送信元MACアドレスをMAC22としている。
アダプタ17Aから送信されたパケットは、ネットワークケーブルを介してアダプタ17Bに受信される。アダプタ17Bは、受信したパケットをドライバ部25B、IP層24、TCP層23、ストリームヘッダ22を介してアプリケーション部21へ送る。即ち、アプリケーション部21は、送信元である第二の仮想マシンからのパケットとして受信する。
(6)アダプタ17Bまたはドライバ部25Bにおいて、TCP/IPパケットを送信時、図18のようにMACアドレスとIPアドレスとを変換する。以下、アダプタ17Bまたはドライバ部25Bによるアドレス変換処理の詳細を図12を用いて説明する。
アドレス解決によって第二の仮想マシンのMACアドレスを認識したアプリケーション部21は、第二の仮想マシン宛にパケットを送出する(S601)。
この場合、送信先IPアドレスが第二の仮想マシンであり、図3に示すとおり自装置内ではないため、IP層24は、送信先IPアドレスと同じIPサブネットに属するドライバ部25Bにパケットを送出する(S602)。
IP層24からパケットを受信したアダプタ17Bまたはドライバ部25Bは、設定されたモードがアドレス変換モード(試験モード)か否かを判定する(S603)。アダプタ17Bまたはドライバ部25Bは、設定されたモードがアドレス変換モードであれば、図18のように送信先IPアドレスを10.20.2.2から10.20.1.1に、送信先MACアドレスをMAC22からMAC11に、送信元IPアドレスを10.20.2.1から10.20.1.2に、送信元MACアドレスをMAC21からMAC12に変換する(S604)。そして、アダプタ17Bは、アドレスを変換したパケットを外部へ送信する(S605)。
なお、S603で、設定されたモードがアドレス変換モードでない、即ち通常モードと判定された場合、アダプタ17Bあるいはドライバ25Bはアドレスを変換せずにパケットを送信する(S606)。
なお、S603で、設定されたモードがアドレス変換モードでない、即ち通常モードと判定された場合、アダプタ17Bあるいはドライバ25Bはアドレスを変換せずにパケットを送信する(S606)。
S604におけるアドレスの変換では、送信先が第二の仮想マシンから自装置内の他方のアダプタ17Aとなるように、アダプタ17Bまたはドライバ部25Bが送信するパケット上の送信先IPアドレス及び送信先MACアドレスを図18に示すように変換する。
また、S604におけるアドレスの変換では、送信元がアダプタ17Bから第一の仮想マシンとなるように、送信するパケットの送信元IPアドレス及び送信元MACアドレスを図18に示すように変換する。即ち、図3に示したようにアダプタ17Aに対して通信相手を第一の仮想マシンと見せかけるため、図18の例では送信元IPアドレスを10.20.1.2、送信元MACアドレスをMAC12としている。
アダプタ17Bから送信されたパケットは、ネットワークケーブルを介してアダプタ17Aに受信される。アダプタ17Aは、受信したパケットをドライバ部25A、IP層24、TCP層23、ストリームヘッダ22を介してアプリケーション部21へ送る。即ち、アプリケーション部21は、送信元である第一の仮想マシンからのパケットとして受信する。
上記のように、コンピュータ1は、図4のS2を図7-図13の手順でアダプタ17Aの通信相手が第一の仮想マシン、アダプタ17Bの通信相手が第二の仮想マシンであるように見せかけて、アダプタ17A,17B間の通信を繰り返して試験を行う(S3)。
そして、アプリケーション部21は、送受信したデータ量や単位時間当たりの速度を求めて試験結果とし(S4)、記録媒体への書き出しや表示装置への表示、他のコンピュータへの送信、印刷などの出力処理を行う(S5)。
-ユーザインタフェース-
アドレス変換を行うモード、つまり試験モードに移行すること、および、そのモードを解除することは、ユーザがコマンドで指定するようにする。
アドレス変換を行うモード、つまり試験モードに移行すること、および、そのモードを解除することは、ユーザがコマンドで指定するようにする。
ここで、コンピュータ1は、図1の状態、即ち1台の試験装置上で、アダプタ17A,17Bがケーブルで直結してあり、ドライバ部25Aがアダプタ17AのIPアドレスIP11=10.20.1.1と対応付けられ、ドライバ部25Bがアダプタ17BのIPアドレスIP21=10.20.2.1と対応付けられている状態であるとする。
例えば、アドレス変換モードへ移行するコマンドとして、「addrtrans-s」を用いる。また、このコマンドの入力時には、通信方向や仮想マシンのアドレスを指定するため、ユーザが入力部15から、次のように指定する。
> addrtrans -s ドライバ#1 10.20.1.2 ドライバ#2 10.20.2.2
> addrtrans -s ドライバ#1 10.20.1.2 ドライバ#2 10.20.2.2
ここで、「ドライバ#1」はドライバ部25Aのドライバ名、「ドライバ#2」はドライバ部25Bのドライバ名、「10.20.1.2」は第一の仮想マシンのIPアドレス、「10.20.2.2」は第二の仮想マシンのIPアドレスである。
一方、アドレス変換モードを解除する、即ち通常モードを設定するコマンドとして、例えば「addrtrans -d」を用いる。このコマンドの入力時にアドレス変換モードを解除するドライバを指定するため、ユーザが入力部15から、以下のように指定する。
> addrtrans -d ドライバ#1 ドライバ#2
> addrtrans -d ドライバ#1 ドライバ#2
図19は、試験モード時のアダプタ17Aからアダプタ17Bへ通信する際の送信経路を示す図である。
アドレス変換モードへ移行後、送信先アドレスとして第一の仮想マシンのIPアドレス(IP12=10.20.1.2)を指定してパケットを送信すると、前述の(1)~(3)の変換処理により、図19のように、netperfコマンド21→ストリームヘッド22→TCP23→IP24→ドライバ25A→アダプタ17A→アダプタ17B→ドライバ25B→IP24→TCP23→ストリームヘッド22→netserverデーモン21を経由したパケットの送信が実行できる。
アドレス変換モードへ移行後、送信先アドレスとして第一の仮想マシンのIPアドレス(IP12=10.20.1.2)を指定してパケットを送信すると、前述の(1)~(3)の変換処理により、図19のように、netperfコマンド21→ストリームヘッド22→TCP23→IP24→ドライバ25A→アダプタ17A→アダプタ17B→ドライバ25B→IP24→TCP23→ストリームヘッド22→netserverデーモン21を経由したパケットの送信が実行できる。
例えば、試験を行うためパケットを送信するコマンドとして「netperperf」を用いる。アドレス変換モードへ移行後に次のようにコマンドを実行する。
> netperperf -H 10.20.1.2
> netperperf -H 10.20.1.2
また、図20は、試験モード時のアダプタ17Aからアダプタ17Bへ通信する際の送信経路を示す図である。
アドレス変換モード移行後、送信先アドレスとして第二の仮想マシンのIPアドレス(=IP12=10.20.2.2)を指定してパケット送信すると、前述の(4)~(6)の変換処理により、図20のように、netperfコマンド21→ストリームヘッド22→TCP23→IP24→ドライバ25B→アダプタ17B→アダプタ17A→ドライバ25A→IP24→TCP23→ストリームヘッド22→netserverデーモン21を経由した送信が実行できる。
アドレス変換モード移行後、送信先アドレスとして第二の仮想マシンのIPアドレス(=IP12=10.20.2.2)を指定してパケット送信すると、前述の(4)~(6)の変換処理により、図20のように、netperfコマンド21→ストリームヘッド22→TCP23→IP24→ドライバ25B→アダプタ17B→アダプタ17A→ドライバ25A→IP24→TCP23→ストリームヘッド22→netserverデーモン21を経由した送信が実行できる。
例えば、アドレス変換モードへ移行後に次のようにコマンドを実行する。
> netperperf -H 10.20.2.2
> netperperf -H 10.20.2.2
-アダプタでアドレス変換する場合のコマンドの実装-
図21はアドレス変換レジスタの説明図、図22はアドレス変換レジスタの更新処理の説明図、図23はアダプタ17Aのアドレス変換レジスタに書き込まれる値の一例を示す図、図24はアダプタ17Bのアドレス変換レジスタに書き込まれる値の一例を示す図、図25はアドレス変換レジスタの値をクリアして通常モードとした例を示す図である。
アダプタ17A,17B上のメモリ空間における所定の場所に図21に示す領域、つまりアドレス変換レジスタを確保しておく。
図21はアドレス変換レジスタの説明図、図22はアドレス変換レジスタの更新処理の説明図、図23はアダプタ17Aのアドレス変換レジスタに書き込まれる値の一例を示す図、図24はアダプタ17Bのアドレス変換レジスタに書き込まれる値の一例を示す図、図25はアドレス変換レジスタの値をクリアして通常モードとした例を示す図である。
アダプタ17A,17B上のメモリ空間における所定の場所に図21に示す領域、つまりアドレス変換レジスタを確保しておく。
図21のアドレス変換レジスタは、現在設定されているモード、自分側の仮想マシンのIPアドレス、自分側の実マシン上のIPアドレス、自分側の仮想マシン上のMACアドレス、自分側のアダプタ上のMACアドレス、対向側の仮想マシンのIPアドレス、対向側の実マシン上のIPアドレス、対向側の仮想マシン上のMACアドレス、対向側のアダプタ上のMACアドレス等の項目を記憶する。
なお、現在設定されているモードは、例えばアドレス変換モードであれば1、通常モードであれば0のように設定する。また、例えばアダプタ17Aのアドレス変換レジスタであれば、自分側の仮想マシンは第一の仮想マシン、対向側の仮想マシンは第二の仮想マシン、自分側の実マシン上のアドレスがアダプタ17Aのアドレス、対向側の実マシン上のアドレスがアダプタ17Bのアドレスである。
なお、現在設定されているモードは、例えばアドレス変換モードであれば1、通常モードであれば0のように設定する。また、例えばアダプタ17Aのアドレス変換レジスタであれば、自分側の仮想マシンは第一の仮想マシン、対向側の仮想マシンは第二の仮想マシン、自分側の実マシン上のアドレスがアダプタ17Aのアドレス、対向側の実マシン上のアドレスがアダプタ17Bのアドレスである。
そして、addrtrans -sコマンドを実行した場合に、CPU12が以下の動作を行うこととする。
まず、OSに備わっている既存のインタフェースで、アダプタ17A及びアダプタ17BのMACアドレスおよびIPアドレスを調べ、アドレス変換レジスタの自分側の実マシン上のIPアドレス、自分側のアダプタ上のMACアドレス、対向側の実マシン上のIPアドレス、対向側のアダプタ上のMACアドレスを記憶する。なお、MACアドレスやIPアドレスは、OSにより、各アダプタ17A,17Bに係るドライバ名と対応付けられてメモリ中に格納されている。
次に、第一の仮想マシンおよび第二の仮想マシンにMACアドレスを割り当て、アドレス変換レジスタの自分側の仮想マシン上のMACアドレス及び対向側の仮想マシン上のMACアドレスとして記憶する。その値をMAC21,MAC22とする。ここで、第一の仮想マシンのMACアドレスMAC21及び第二の仮想マシンのMACアドレスMAC22と、アダプタ17AのMACアドレスMAC11と,アダプタ17BのMACアドレスMAC12とが、それぞれユニークな値となるように、MAC21、MAC22を割り当てる。
第一の仮想マシンおよび第二の仮想マシンのIPアドレスは、上記のようにaddrt rans-sコマンドの引数で与えられているため、この引数をアドレス変換レジスタ の自分側の仮想マシンのIPアドレス及び対向側の仮想マシンのIPアドレスとして記憶す る。
次に、図22のようにドライバを制御するコマンド、例えばioctlによって、アプリケーション部21は、ドライバ部25Aおよびドライバ部25Bのそれぞれに、アダプタ17Aおよびアダプタ17Bのアドレス変換レジスタに書きこむべき値を渡す。
ドライバ部25A,25Bは、ioctlを受けると、各ドライバ部に対応するアダプタ17A,17B上のアドレス変換レジスタに該ioctlで受けた前記各項目の値を書きこむ。
例えば、”addrtrans -s ドライバ#1 10.20.1.2 ドライバ#2 10.20.2.2” が実行された場合、ドライバ部25Aはアダプタ17Aのアドレス変換レジスタに図23のように各情報を書きこむ。
即ち、モードが1、自分側の仮想マシンのIPアドレスが10.20.1.2、自分側の実マシン上のIPアドレスが10.20.1.1、自分側の仮想マシン上のMACアドレスがMAC12、自分側のアダプタ上のMACアドレスがMAC11、対向側の仮想マシンのIPアドレスが10.20.2.2、対向側の実マシン上のIPアドレスが10.20.2.1、対向側の仮想マシン上のMACアドレスがMAC22、対向側のアダプタ上のMACアドレスがMAC21となる。
即ち、モードが1、自分側の仮想マシンのIPアドレスが10.20.1.2、自分側の実マシン上のIPアドレスが10.20.1.1、自分側の仮想マシン上のMACアドレスがMAC12、自分側のアダプタ上のMACアドレスがMAC11、対向側の仮想マシンのIPアドレスが10.20.2.2、対向側の実マシン上のIPアドレスが10.20.2.1、対向側の仮想マシン上のMACアドレスがMAC22、対向側のアダプタ上のMACアドレスがMAC21となる。
同様に、ドライバ部25Bは、アダプタ17Bのアドレス変換レジスタに図24のように各情報を書きこむ。
そして、”addrtrans -d ドライバ#1 ドライバ#2” が実行されてアドレス変換モードが解除された場合、ドライバ部25Aからアダプタ17Aに対して、また、ドライバ部25Bからアダプタ17Bに対して、図25に示すようにアドレス変換レジスタの全ての値を0にクリアする指示を発する。
-ドライバでアドレス変換する場合のコマンドの実装-
図26はアドレス変換情報の更新処理の説明図である。
ドライバ部25A,25Bは、アダプタの状態や、上位の要素から指示された情報を保存しておくために、“制御構造体”と呼ばれるデータの構造体をコンピュータ1上のメモリ13に保持している。
図26はアドレス変換情報の更新処理の説明図である。
ドライバ部25A,25Bは、アダプタの状態や、上位の要素から指示された情報を保存しておくために、“制御構造体”と呼ばれるデータの構造体をコンピュータ1上のメモリ13に保持している。
制御構造体内に、図21のアドレス変換レジスタと同等な情報を取り込む。これを“アドレス変換情報”と呼ぶことにする。
ioctlによって、ドライバ部25Aおよびドライバ部25Bのそれぞれにアドレス変換情報に書きこむべき値を渡す処理までは、図22においてアドレス変換レジスタに書きこむべき値を渡す処理と同様である。以下、アドレス変換情報の書き込み処理の詳細を説明する。
ドライバ部25A,25Bはioctlを受けると、図26に示すように制御構造体の値を更新する。例えば、”addrtrans -s ドライバ#1 10.20.1.2 ドライバ#2 10.20.2.2” が実行された場合、ドライバ部25Aは、制御構造体のアドレス変換情報として図23の値を書きこむ。また、ドライバ部25Bは、制御構造体のアドレス変換情報として図24の値を書きこむ。
一方、”addrtrans -d ドライバ#1 ドライバ#2” が実行されてアドレス変換モードが解除された場合、ドライバ部25A,25Bはそれぞれ制御構造体のアドレス変換情報を図25に示すようにクリアする。
-アダプタでアドレス変換する場合のアダプタの実装例-
図27は、通常モード時、即ち通常の通信を行う場合の状態を示したアダプタの機能ブロック図である。なお、アダプタ17A,17Bは同じ構成を有し、それぞれ送信時と受信時で対照的に同じ処理を行うので、便宜上アダプタ17Aについて説明し、アダプタ17Bについての説明を省略する。また、ドライバ部25A,25Bについても同様であり、ドライバ部25Bについての説明を省略する。
図27は、通常モード時、即ち通常の通信を行う場合の状態を示したアダプタの機能ブロック図である。なお、アダプタ17A,17Bは同じ構成を有し、それぞれ送信時と受信時で対照的に同じ処理を行うので、便宜上アダプタ17Aについて説明し、アダプタ17Bについての説明を省略する。また、ドライバ部25A,25Bについても同様であり、ドライバ部25Bについての説明を省略する。
図27のようにアダプタ17Aは、送信キュー71、送受信器72、データ変換器73、受信キュー74を有する。
ドライバ部25Aが、アダプタ17Aにパケットの送信依頼を行うと、送信パケットはまず送信キュー71に登録され、FIFO(first in, first out)で送受信器72へ送られる。
送受信器72は、送信キュー71から送られたパケットに、伝送路でのエラーを検出するためのエラー検出ビットを付与して、そのパケットの送信を指定する。この段階までは、パケットは0と1のビット列の形式である。
そして送受信器72で送信の指定を受けたパケットは、データ変換器73に届き、電気信号または光信号の形式に変換されて、LANケーブルなどの伝送路へ送出される。
受信パケットは、電気信号または光信号の形で伝送路から、データ変換器73に入る。
データ変換器73は、そのパケットを0と1のビット列に変換する。
送受信器72は、受信したパケットのエラー検出ビットと、エラー検出ビット以外のデータの内容を比較して、伝送路でエラーが発生していないかどうかを確認する。受信パケットにエラーが発生していれば受信したデータを破棄し、ドライバ部25Aにエラーの発生を通知する。エラーが発生していなければ、送受信器72はエラー検出ビットを除去して、受信キュー74に受信パケットを登録し、ドライバ部25Aに対して受信が発生したことを、割込みなどで通知する。
送受信器72は、受信したパケットのエラー検出ビットと、エラー検出ビット以外のデータの内容を比較して、伝送路でエラーが発生していないかどうかを確認する。受信パケットにエラーが発生していれば受信したデータを破棄し、ドライバ部25Aにエラーの発生を通知する。エラーが発生していなければ、送受信器72はエラー検出ビットを除去して、受信キュー74に受信パケットを登録し、ドライバ部25Aに対して受信が発生したことを、割込みなどで通知する。
ドライバ部25Aは、受信キュー74から、先に到着した順に受信パケットを取りだす。
一方、図28は、アドレス変換を行う場合の状況を示したアダプタ17Aの機能ブロック図である。
試験モード時、即ち、アドレス変換して通信する場合、本実施例では、図28に示すように、アドレス変換器75を用いて、送信キュー71と送受信器72の間でパケットのアドレスを変換する。
ドライバ部25Aによって本体上のメモリ13からアダプタ17Aへ送られたパケットは、アダプタ17A上のメモリ、つまり送信キュー71に書き込まれる。この段階のパケットは、本体上のメモリ13上に書かれているのか、アダプタ17A上のメモリに書かれているかの違いだけで、どちらも0と1のビットで表されたものであり、内容も本体メモリ上に存在していた時と同じである。また、パケットは、送受信器72に入る前までエラー検出ビットも付けられていない。
試験変換器75は、送信キュー71からパケットを読み出し、パケットのアドレスを前述の(1)~(3)のように変換して送受信器72へ送る。送受信器72及びデータ変換器73を介してパケットを送信する処理は、図27の処理と同じである。また、試験モードであってもパケットの受信処理は通常モードと同じである。
図29は、試験変換器75の構成図である。図29に示すように、試験変換器75は、アドレス変換レジスタ50、モード判定器51、アドレス変換部76を備えている。また、アドレス変換部76は、パケット種別判定器52、ARPパケット変換器53、TCP/IPパケット変換器54、チェックサム計算器55を有している。
アドレス変換レジスタ50は、図21に示した内容を記憶しており、モード判定器51や、ARPパケット変換器53、TCP/IPパケット変換器54に参照される。
試験変換器75の各要素51-55は、図30,31に示す処理を行う。図30,31はアドレス変換処理の説明図である。
先ず、モード判定器51は、アドレス変換レジスタ50を参照し、モードが1、即ち試験モードか否かを判定する(S21)。モード判定器51は、モードが1であれば(s21 Yes)、送信キュー71から最先のパケットを読み出してパケット種別判定器52へ送る。一方、モードが0であれば(S21 No)、モード判定器51は送信キュー71から読み出したパケットを変換せずに、つまりアドレス変換部76を介することなく送受信器72へ送る。この場合、処理はX2へ移行する。
モード判定器51からパケットを受信したパケット種別判定器52は、パケットのイーサタイプが0x806であるか否かを判定する(S22)。イーサタイプが0x806であれば、当該パケットがARPリクエスト又はARPリプライであることを示している。従って、パケット種別判定器52は、イーサタイプが0x806であれば(S22 Yes)パケットをARPパケット変換部53へ送る。この場合、処理はX1へ移行する。
また、パケット種別判定器52は、イーサタイプが0x806でなければ(S22 No)、イーサタイプが0x800か否かを判定する(S23)。イーサタイプが0x800であれば(S23 Yes)、当該パケットがIPパケットであることを示している。従って、パケット種別判定器52は、イーサタイプが0x800でなければ(S23 No)当該パケットを変換せずに直接送受信器72へ送る。この場合、処理はX2へ移行する。
そして、パケット種別判定器52は、イーサタイプが0x800であれば(S23 Yes)IPヘッダ中のPRTフィールドの値が6、即ちTCPであるか否かを判定する(S24)。ここでPRTフィールドの値が6であれば(S24 Yes)、パケット種別判定器52は、当該パケットをTCP/IPパケット変換部54に送る。一方、PRTフィールドの値が6でなければ(S24 No)、当該パケットを変換せず直接送受信器72へ送る。この場合、処理はX2へ移行する。
パケット種別判定器52からARPパケットを受信したARPパケット変換器53は、パケット中の送信先MACアドレスがブロードキャストアドレス、即ちff.ff.ff.ff.ff.ffか否かを判定する(S25)。
ARPパケットのMACアドレスがブロードキャストアドレスでなければ(S25 No)、ARPパケット変換器53は、アドレス変換レジスタ50を参照して対向側のネットアダプタのMACアドレスを求め、求めたMACアドレスでパケット中の送信先MACアドレスを書き換える(S26)。
S26での送信先MACアドレスの書き換え後、或はS25で送信先MACアドレスがブロードキャストアドレスであった場合(S25 Yes)、ARPパケット変換器53は、アドレス変換レジスタ50を参照し、以下のアドレスについて書き換える(S27)。
1.送信元MACアドレスを、対向側の仮想マシン上のMACアドレスで書き換える。
2.送信元IPアドレスを、対向側の仮想マシン上のIPアドレスで書き換える。
3.送信先IPアドレスを、対向側のアダプタのIPアドレスに書き換える。
そして、ARPパケット変換器53は、変換後のパケットを送受信器72へ送る(S28)。
なお、上記ARPパケット変換器53で変換するARPパケットにおいて、送信元MACアドレスとは、図32に示すMACヘッダ中の送信元MAC、及び図34に示すフォーマットのSHAdのことである。上記の書換えは、この送信元MAC、SHAdの両方に対して行っている。
図32は、MACヘッダを含むパケットのフォーマットを示す図、図33は図32の各フィールドの説明図、図34はARPパケットのフォーマットを示す図、図35は図34の各フィールドの説明図である。
また、送信先MACアドレスとは、図32に示すMACヘッダ中の送信先MAC、および、図34に示すフォーマットのTHAdのことであり、上記の書換えはこの送信先MAC、THAdの両方に対して行っている。
更に、送信元IPアドレスとは、図34に示すフォーマットのSPAdのことであり、送信先IPアドレスとは、図34に示すフォーマットのTPAdのことである。
また、パケット種別判定器52からTCP/IPパケットを受信したTCP/IPパケット変換器54は、アドレス変換レジスタ50を参照し、以下のアドレスについて書き換える(S29)。
1.送信元MACアドレスを、対向側の仮想マシン上のMACアドレスで書き換える。
2.送信先MACアドレスを、対向側のアダプタのMACアドレスで書き換える。
3.送信元IPアドレスを、対向側の仮想マシン上のIPアドレスで書き換える。
4.送信先IPアドレスを、対向側のアダプタのIPアドレスに書き換える。
1.送信元MACアドレスを、対向側の仮想マシン上のMACアドレスで書き換える。
2.送信先MACアドレスを、対向側のアダプタのMACアドレスで書き換える。
3.送信元IPアドレスを、対向側の仮想マシン上のIPアドレスで書き換える。
4.送信先IPアドレスを、対向側のアダプタのIPアドレスに書き換える。
そして、TCP/IPパケット変換器54は、変換後のパケットをチェックサム計算器55へ送る(S30)。
なお、上記TCP/IPパケット変換器54で変換するTCP/IPパケットについて、送信元MACアドレスとは、図32に示すMACヘッダ中の送信元MACのことである。
同様に送信先MACアドレスとは、図32に示すMACヘッダ中の送信先MACのことである。
更に、送信元IPアドレスとは、図36に示すIPヘッダのFROM、送信先IPアドレスとは、図36に示すIPヘッダのTOのことである。図36はIPヘッダのフォーマットを示す図、図37は図36のIPヘッダの各フィールドの説明図である。
なお、本実施例において、各アダプタは、アドレス変換レジスタ中の自身のアドレスを変換処理には用いなかったが、アドレス変換(上書き)前のパケットの正当性チェックに用いても良い。
例えば、変換前の送信元アドレスや送信先アドレスが、図3に示すように送信元がアダプタ自身のアドレス、送信先が対向する仮想マシンのアドレスと一致しているか否かをアダプタがチェックする。
ここで正当でなかった、つまりアドレスが一致しなかった場合には、アダプタがドライバにエラーを通知し、ドライバがそれを受けてエラーメッセージを出力するなどの処置を行う。また、正当でなかったパケットについては、送信せずに破棄する、または、変換せずに送信する、などの処置を行う。
この正当性チェックは、想定外のパケットが送信依頼された場合に、正しくない性能測定値となることを防ぐ。なお、想定外のパケットは、マシンがIPルータの設定になっていて、IPのフォワード機能によって、他のネットワークのパケットが混入した場合などに発生することがある。
上記TCP/IPパケット変換器54によってアドレスの上書を行うと、IPヘッダ中のチェックサム値(図36,37のSUM)、および、図38,39に示すTCPヘッダ中のチェックサム値(SUM)が正しい値ではなくなる。そこで、アドレス変換後のパケットをチェックサム計算器55に入力して、IPヘッダ中のチェックサム値及びTCPヘッダ中のチェックサム値をそれぞれ再計算して該IPヘッダ中のチェックサム値及びTCPヘッダ中のチェックサム値を上書する。なお、アダプタ中でIPヘッダ中のチェックサム値及びTCPヘッダ中のチェックサム値を計算すること自体は、“チェックサムオフロード”あるいは“ハードウェアチェックサム”と呼ばれる既存の技術を用いて行うことができる。
チェックサム計算器55は、TCP/IPパケット変換器54から変換後のパケットを受信すると、該パケットのIPヘッダ中の各フィールドの値、例えばVER、IHL、ST、LEN、ID、FC、TTL、PRT、FROM、TO、OPTの値を読み出してチェックサム値を再計算し、算出した値で当該パケットのチェックサム(SUM)の値を上書きする。同様に、チェックサム計算器55は、TCPヘッダ中の各フィールドの値を読み出してチェックサム値を再計算し、算出した値でチェックサム(SUM)の値を上書きする(S31)。
そして、チェックサム計算器55は、チェックサムを改めたパケットを送受信器72へ送信する(S32)。
-ドライバでアドレス変換する場合のドライバの実装例-
ドライバ部25A,25Bは送信時、上位、つまり送信処理の流れの上流側の要素から、送信パケットの他に、送信元MACアドレス、送信先MACアドレス、EthertypeといったMACヘッダを構成する要素を、パケット送信のたびに受取る。以降、送信パケット+送信元MACアドレス+送信先MACアドレス+Ethertypeのセットのことを、送信ストリームメッセージと称す。
ドライバ部25A,25Bは送信時、上位、つまり送信処理の流れの上流側の要素から、送信パケットの他に、送信元MACアドレス、送信先MACアドレス、EthertypeといったMACヘッダを構成する要素を、パケット送信のたびに受取る。以降、送信パケット+送信元MACアドレス+送信先MACアドレス+Ethertypeのセットのことを、送信ストリームメッセージと称す。
図40は、ドライバ部25A或は25Bによるパケット送信時の処理の説明図である。以下、便宜上ドライバ25Aについて説明するが、ドライバ25Bについても同様である。
ドライバ部25Aは、送信ストリームメッセージや送信完了通知といった送信に係る情報の受信を待つ(S41)。送信ストリームメッセージを受信した場合には、ドライバ部25A,25Bの送信キュー61に、既に送信ストリームメッセージが存在するか否かを判定する(S42)。
ここで、送信キュー内61に既に送信ストリームメッセージが存在する場合(S42 Yes)、ドライバ部25A,25Bは、受信した送信ストリームメッセージを送信キュー61の末尾に登録して(S43)、次の情報の受信を待つ(S41)。
一方、S41において、送信キュー61に送信ストリームメッセージが登録された状態で、送信完了通知を受信した場合、ドライバ部25A,25Bは送信キュー61から先頭の送信ストリームメッセージを1つ取り出す(S44)。
S44の後、或はドライバ部25A,25Bの送信キュー61に送信ストリームメッセージが存在しないと判定した場合(S42 No)、ドライバ部25A,25Bは、アダプタ17A,17Bの送信キュー71が満杯か否かを判定する(S45)。
ここでアダプタ17A,17Bの送信キュー71が満杯であれば(S45 Yes)、ドライバ部25A,25Bは、受信した送信ストリームメッセージを送信キュー61の末尾に登録して(S43)、次の情報の受信を待つ(S41)。また、アダプタ17A,17Bの送信キュー71が満杯でなければ(S45 No)、ドライバ部25A,25Bは、アドレスを変換するステップ46へ移行する。
S46では、図30,31で示したアドレス変換処理をドライバ部25A,25Bが行う。即ち、モード判定器51、アドレス変換部56に換わりCPU12が図22,23と同様の処理を行う。
そしてドライバ部25A,25Bは、アドレス変換後のパケットにMACヘッダを付加して(S47)、アダプタ17A,17Bに送って送信を依頼し(S48)、S41へ戻る。
-試験モード時の動作-
性能測定アプリケーションとしてnetperfを用い、netperfに従って実行するアプリケーション部21の動作について説明する。
性能測定アプリケーションとしてnetperfを用い、netperfに従って実行するアプリケーション部21の動作について説明する。
netperfは、netperfコマンドで実行される送信用アプリケーションと、受信用アプリケーションとしてのnetserverデーモンで構成されている。送信用アプリケーションにより、CPU12は、前述の送信アプリケーション部として機能し、性能測定のためにパケットを送信する。また、受信用アプリケーションにより、CPU12は前述の受信アプリケーション部として機能し、送信用アプリケーションによって送信されたパケットを受信する。
先ずnetserverコマンドが入力されると、CPU12はnetserverデーモンを起動させる。これによりユーザ空間にデーモンが生成され、netperfコマンドに対する受信側の処理を行えるようにする。
また、上述のようにaddrtrans -sが入力されると、CPU12は該コマンドを実行して試験モードに移行する。
そして、次のnetperfコマンドが入力されるとアプリケーション部21は、オプションで指定したアドレス、本例では第一の仮想マシン宛てにデータを送信する。
> netperf -H 10.20.1.2 ...
> netperf -H 10.20.1.2 ...
netperfコマンドに応じアプリケーション21がパケットを送信を指示すると、IP層24は、先ず、送信先のIPアドレス10.20.1.2に対するMACアドレスが不明であるため、図13に示した変換前の設定でARPリクエストを生成する。
変換前状態のARPリクエストは、自装置内に存在しないアドレス宛てであるので、送信先IPアドレスと同じサブネットに属するアダプタ17Aのドライバ部25Aに渡される。
ドライバ部25A或はアダプタ17Aは、該ARPリクエストを図5に示す変換後の設定となるようにアドレスを変換してブロードキャストする。
該ARPリクエストは、ケーブルを介して他方のアダプタ17Bで受信され、ドライバ部25B、IP層24へ順に送られる。
該ARPリクエストは、送信元が図3に示した第二の仮想マシン、送信先がアダプタ17Bである場合に、第二の仮想マシンからブロードキャストされるARPリクエストと同じに変換されている。従ってアダプタ17Aから送信されたARPリクエストであっても第二の仮想マシンからのARPリクエストとして矛盾なくアダプタ17B→ドライバ部25B→IP層24の順に受信される。
そして、IP層24は、該ARPリクエストに応じてARPリプライを生成する。該ARPリプライは、第二の仮想マシンに対するパケットであるため、図14に示した変換前の設定の通りである。
従って、ARPリプライの送信先IPアドレスが10.20.2.2であり、自装置内に存在しないため、IP層24は、ARPリプライの送信先IPアドレスと同じサブネットに属するアダプタ17Bのドライバ部25BにARPリプライを渡す。
ドライバ部25B或はアダプタ17Bは、該ARPリプライを図14に示す変換後の設定となるようにアドレスを変換して変換後の送信先であるアダプタ17Aへ送信する。
該ARPリプライは、ケーブルを介して他方のアダプタ17Aで受信され、ドライバ部25A、IP層24へ順に送られる。
該ARPリプライは、送信元が図3に示した第一の仮想マシン、送信先がアダプタ17Aである場合に、第一の仮想マシンから返信されるARPリプライと同じに変換されている。従って、アダプタ17Bから送信されたARPリプライであっても、第一の仮想マシンからのARPリプライとして矛盾なくアダプタ17A→ドライバ部25A→IP層24に受信される。
従ってIP層24は、送信元IPアドレス=10.20.1.2に対応する送信元MACアドレスがMAC12であると解釈して、アドレス解決が正常に終了する。
アドレス解決後、IP層24は、図15の変換前の設定としたTCP/IPパケットをドライバ部25Aに渡し、ドライバ部25A或はアダプタ17Aが、該TCP/IPパケットを図15に示した変換後の設定のとおり変換してアダプタ17Bへ送信する。
該TCP/IPパケットは、ケーブルを介してアダプタ17Bで第二の仮想マシンからのTCP/IPパケットとして受信される。
このように各アダプタ17Aが、第二の仮想マシンであるようにアダプタ17Bに見せかけることでアダプタ17A,17B間の通信を行う。
また、上記の例では、アダプタ17Aからアダプタ17Bへパケットを送信したが、アダプタ17Bからアダプタ17Aへも同様に送信できる。例えばnetperf -H 10.20.2.2 ...のように第二の仮想マシンのアドレスを指定してコマンドを実行した場合、上記と比べてドライバ部25A及びアダプタ17Aと、ドライバ部25B及びアダプタ17bとを入れ換えた状態で動作する。即ち、図13~15の変換処理に換えて図16~18の変換処理を行いアダプタ17B,17A間の通信を行う。
ここで前記netserverコマンドを実行する場合、次のようなオプションを指定しても良い。
> netserver -p 5000
注1.‐pオプションではTCPポート番号を指定する。
> netserver -p 5000
注1.‐pオプションではTCPポート番号を指定する。
また、netperfコマンドを実行する場合、次のようなオプションを指定しても良い。
> netperf -H 10.20.1.2 -l 10 -p 5000 -s 65536
注1.-Hオプションでは、送信先のIPアドレスを指定する。
注2.-lオプションでは、測定時間を指定している。netperfコマンドは、その時間経過した後復帰する。この場合10秒である。
注3.-pオプションでは、netserverコマンドで指定したのと同じTCPポート番号を指定する。この場合TCPポート番号は5000である。
注4.-sオプションは、TCPウインドウサイズを意味するが、send()関数に渡すデータサイズもこの値とし、送信するパケットのサイズを指定する。
> netperf -H 10.20.1.2 -l 10 -p 5000 -s 65536
注1.-Hオプションでは、送信先のIPアドレスを指定する。
注2.-lオプションでは、測定時間を指定している。netperfコマンドは、その時間経過した後復帰する。この場合10秒である。
注3.-pオプションでは、netserverコマンドで指定したのと同じTCPポート番号を指定する。この場合TCPポート番号は5000である。
注4.-sオプションは、TCPウインドウサイズを意味するが、send()関数に渡すデータサイズもこの値とし、送信するパケットのサイズを指定する。
アプリケーション部21は、前記netperfコマンドの実行により、アダプタ17A,17B間のTCPコネクションが確立されると、可能な限り高速に-Hで指定されたIPアドレスに対してデータを送信しつづける。具体的には、Socket関数send()で送信依頼しつづける(図4のS2)。
また、アプリケーション部21は、netserverデーモンの実行により、Socket関数recv()でデータを受信しつづける。
なお、可能な限りデータを送信する場合に、CPU12の処理速度能力が非常に低いとデータの送信速度がCPU12の処理能力に依存することも考えられる。しかし、通常のCPU12の処理能力は、ネットワークアダプタの送信速度と比べて十分に高い。例えば性能測定ツールを複数同時に起動したり、双方向に起動したりしても測定に支障はない。
具体的には、図27に示すアダプタ17Aの送信キュー71に空きが無くなると、前述のようにドライバ部25Aはアダプタ17Aへの送信依頼をする代りに、ドライバ部25Aの送信キュー61に送信パケットを溜め込むようになる。
そして、ドライバ部25Aの送信キュー61にも空きが無くなると、IP層の送信キューに送信パケットが溜まることになる。
そして更に、IP層の送信キューにも空きが無くなると、該送信キューに空きができるまでの間はsend()関数が復帰しない、即ちsend()関数の復帰遅延が発生する。
また、送信したデータが通信先に届いているか否かは、コンピュータ1のTCP層によってチェックされている。つまり、通信相手からのTCP ACK(データ受信確認パケット)が一定時間後、あるいは、一定データ量送信後に返ってこなければ、送信データが通信先に届いていないと判断し、次の送信を保留するか、あるいは、再送処理を行う。
この現象も、アプリケーション部21からは、send()関数の復帰遅延として観測される。
netperfコマンドの-lオプションで指定された時間になると、アプリケーション部21がデータの送信を打ち切り、試験結果算出部26が送信したデータ量と時間(この場合10秒)から、性能値を算出して(S7)、試験結果出力部27が試験結果を出力する(S8)。
例えば、以下のように性能値を表示する。この場合は、ソケットサイズが65536バイト、送信メッセージサイズ65536バイトで10秒間試験した場合のスループットが782.52Mbpsであったことを示している。
TCP STREAM TEST
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
65536 65536 65536 10.00 782.52
以上のように、本実施例1によれば、一台の試験装置1に搭載したネットワークアダプタ17A,17B間でTCP/IPを用いた通信が行えるので、簡易な構成でネットワークアダプタ17A,17B或はドライバの試験を行うことができる。
TCP STREAM TEST
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
65536 65536 65536 10.00 782.52
以上のように、本実施例1によれば、一台の試験装置1に搭載したネットワークアダプタ17A,17B間でTCP/IPを用いた通信が行えるので、簡易な構成でネットワークアダプタ17A,17B或はドライバの試験を行うことができる。
なお、上記ネットワークアダプタは、拡張スロットに装着するネットワークカードのように試験装置1と別体のものに限らず、試験装置1に内蔵、例えばマザーボードに実装されたものでも良い
〈実施例2〉
-1台の試験装置に1枚のカードを挿す場合-
図41は、実施例2のコンピュータ1を示す図、図42は実施例2の試験方法の概念図、図43はアドレスの変換例を示す図、図44はアドレスの変換例を示す図、図45はアドレスの変換例を示す図、図46は試験モード時の送信経路を示す図、図47はアドレス変換レジスタの説明図、図48はアドレス変換レジスタの更新処理の説明図、図49はアドレス変換レジスタに書き込まれる値の一例を示す図、図50はアドレス変換レジスタの値をクリアして通常モードとした例を示す図、図51は通常モード時のアダプタの機能ブロック図、図52は試験モード時のアダプタの機能ブロック図である。
本実施例2は、実施例1と比べて図1,図2の試験装置1に搭載するネットワークカード(アダプタ)17を1枚とした点が異なっている。その他の構成は実施例1と同じであるので、同一の要素には同符号を付すなどして再度の説明を省略する。
〈実施例2〉
-1台の試験装置に1枚のカードを挿す場合-
図41は、実施例2のコンピュータ1を示す図、図42は実施例2の試験方法の概念図、図43はアドレスの変換例を示す図、図44はアドレスの変換例を示す図、図45はアドレスの変換例を示す図、図46は試験モード時の送信経路を示す図、図47はアドレス変換レジスタの説明図、図48はアドレス変換レジスタの更新処理の説明図、図49はアドレス変換レジスタに書き込まれる値の一例を示す図、図50はアドレス変換レジスタの値をクリアして通常モードとした例を示す図、図51は通常モード時のアダプタの機能ブロック図、図52は試験モード時のアダプタの機能ブロック図である。
本実施例2は、実施例1と比べて図1,図2の試験装置1に搭載するネットワークカード(アダプタ)17を1枚とした点が異なっている。その他の構成は実施例1と同じであるので、同一の要素には同符号を付すなどして再度の説明を省略する。
アダプタ17は、ネットワーク側へ送出するデータをネットワーク側からのデータとして自身で受信するアダプタ内折り返し機能を有している。例えば、図44の送受信器72やネットワークとのインタフェースの送信側から自身の受信側へデータを迂回させる経路19を有している。
本実施例2では、図42に示すようにアダプタ17のIPアドレスを10.20.1.1、通信相手である仮想マシンのIPアドレスが10.20.1.2であるように、IP層に見せかけて通信を行う。
仮想マシン上のIPアドレスは、試験装置1上に存在しないものを選択する。これは、仮想マシン上のIPアドレスが試験装置1上に存在するものであると、送信先アドレスとしたときにパケットがIP層24で折り返してしまうためである。
また、仮想マシンへの送信がアダプタ17から行われるように、仮想マシンにアダプタ17と同じIPサブネットに属するIPアドレスを割り当てている。
仮想マシンには、アダプタ17とは異なるMACアドレスを割り当てている。即ち、仮想マシンMAC2とアダプタ17のMACアドレスMAC1とを別のアドレスとしている。
上記のように、あたかも仮想マシンと通信しているようにIP層にみせかることを実現するため、本実施例では、ハード(アダプタ)またはドライバでIPアドレスおよびMACアドレスを変換して通信する試験方法を採用する。試験方法の流れは、図4と比較して、データを送信も受信も一つのアダプタで行うため、変換するアドレスが以下のように異なっている。
具体的には、以下のような変換を行う。
(1)アダプタ17またはドライバ部25において、アドレス解決要求(ARP request)を送信時、図43のように送信先のIPアドレスを10.20.1.2から10.20.1.1に変更し、送信元のIPアドレスを10.20.1.1から10.20.1.2に、送信元MACアドレスをMAC1からMAC2に変換する。
(1)アダプタ17またはドライバ部25において、アドレス解決要求(ARP request)を送信時、図43のように送信先のIPアドレスを10.20.1.2から10.20.1.1に変更し、送信元のIPアドレスを10.20.1.1から10.20.1.2に、送信元MACアドレスをMAC1からMAC2に変換する。
即ち、先ずアプリケーション部21が、自装置内に存在しないIPアドレスを通信先として送信するデータをストリームヘッド22へ送出する。これにより、IP層24は、図43の変換前の設定でアドレス解決要求のパケットを生成する(S101)。
アドレス解決要求のパケットの送信先IPアドレスが自装置内ではないため、IP層24は、アドレス解決要求の送信先IPアドレスと同じIPサブネットに属するドライバ部25にパケットを送出する(S102)。
IP層24からパケットを受信したアダプタ17またはドライバ部25は、アドレス変換モード(試験モード)か否かを判定し(S103)、アドレス変換モードであれば、図43のようにアドレスを変換し(S104)、パケットを送信する(S105)。なお、S103で、アドレス変換モードでなければアドレスを変換せずにパケットを送信する(S106)。
S104におけるアドレスの変換では、送信先が自装置内のアダプタ17となるように、送信先IPアドレス及び送信先MACアドレスを図43に示すように変換する。但し、図43の例では、アドレス解決要求のパケットなので、送信先MACアドレスはブロードキャスト用のff.ff.ff.ff.ff.ffとする。
また、S104におけるアドレスの変換では、送信元が所定の仮想マシンとなるように、送信するパケットの送信元IPアドレス及び送信元MACアドレスを図43に示すように変換する。例えば、図42に示したように通信相手を仮想マシンと見せかけるため、送信元IPアドレスを10.20.1.2、送信元MACアドレスをMAC2と変換して送信する。
送信パケットは、迂回路19を介してアダプタ17で折り返し受信される。アダプタ17は、受信したパケットをドライバ部25、IP層24、TCP層23、ストリームヘッダ22を介してアプリケーション部21へ送る。即ち、アプリケーション部21は、アダプタ17が折り返し受信したパケットを、送信元である仮想マシンからのパケットとして受信する。
(2)アダプタ17またはドライバ部25において、アドレス解決応答(ARP reply)を送信時、図44のように送信先IPアドレスを10.20.1.2から10.20.1.1に、送信先MACアドレスをMAC2からMAC1に、送信元IPアドレスを10.20.1.1から10.20.1.2に、送信元MACアドレスをMAC1からMAC2に変換する。
即ち、アプリケーション21は、仮想マシンに対してアドレス解決応答を返す(S201)。
この場合も、図44に示す変換前の設定のとおり送信先IPアドレスが自装置内ではないため、IP層24は、同じIPサブネットに属するドライバ部25にパケットを送出する(S202)。
パケットを受信したアダプタ17またはドライバ部25は、アドレス変換モード(試験モード)か否かを判定し(S203)、アドレス変換モードであれば、図44のようにアドレスを変換し(S204)、パケットを送信する(S205)。なお、S203で、アドレス変換モードでなければアドレスを変換せずにパケットを送信する(206)。
S204におけるアドレスの変換では、送信先が自装置内のアダプタ17となるように送信先IPアドレス及び送信先MACアドレスを図44のように変換する。
また、S204におけるアドレスの変換では、送信元が所定の仮想マシンとなるように送信元IPアドレス及び送信元MACアドレスを図44のように変換する。図42に示したように、通信相手を仮想マシンと見せかけるため、送信元IPアドレスを10.20.1.2、送信元MACアドレスをMAC2としている。
送信パケットは、迂回路19を介してアダプタ17で受信される。アダプタ17は、受信したパケットをドライバ部25、IP層24、TCP層23、ストリームヘッダ22を介してアプリケーション部21へ送る。即ち、アプリケーション部21は、送信元である仮想マシンからのパケットとして受信する。
(3)アダプタ17またはドライバ部25において、TCP/IPパケットを送信時、図45のように送信先のIPアドレスを10.20.1.2から10.20.1.1に、送信先のMACアドレスをMAC2からMAC1に、送信元のIPアドレスを10.20.1.1から10.20.1.2に、送信元MACアドレスをMAC1からMAC2に変換する。
アドレス解決によって仮想マシンのMACアドレスを認識したアプリケーション部21は、仮想マシン宛にパケットを送出する(S301)。
図37の変換前の設定のとおりアプリケーション部21が送出したパケットの送信先IPアドレスが自装置内ではないため、IP層24は、送信先IPアドレスと同じIPサブネットに属するドライバ部25にパケットを送出する(S302)。
パケットを受信したアダプタ17Aまたはドライバ部25Aは、アドレス変換モード(試験モード)か否かを判定し(S303)、アドレス変換モードであれば、図45のようにアドレスを変換し(S304)、パケットを送信する(S305)。なお、S303で、アドレス変換モードでなければアドレスを変換せずにパケットを送信する(S306)。
S304におけるアドレスの変換では、送信先が自装置内のアダプタ17となるように、パケット内の送信先IPアドレス及び送信先MACアドレスを図45のように変換する。
また、S304におけるアドレスの変換では、送信元が所定の仮想マシンとなるように、パケットの送信元IPアドレス及び送信元MACアドレスを図45のように変換する。図42に示したように、通信相手を仮想マシンと見せかけるため、送信元IPアドレスを10.20.1.2、送信元MACアドレスをMAC2としている。
送信パケットは、迂回路19を介してアダプタ17で受信される。アダプタ17は、受信したパケットをドライバ部25、IP層24、TCP層23、ストリームヘッダ22を介してアプリケーション部21へ送る。即ち、アプリケーション部21は、送信元である仮想マシンからのパケットとして受信する。
-ユーザインタフェース-
アドレス変換を行うモード、つまり試験モードに移行すること、および、そのモードを解除することは、ユーザがコマンドで指定するようにする。
アドレス変換を行うモード、つまり試験モードに移行すること、および、そのモードを解除することは、ユーザがコマンドで指定するようにする。
ここで、試験装置1は、図34の状態、即ち1台の試験装置1に1つのアダプタ17を搭載し、ドライバ部25がIPアドレスIP1=10.20.1.1と対応付けられている状態であるとする。
この場合、アドレス変換モードへの移行は、ユーザが入力部15から、次のように指定する。
> addrtrans1 -s ドライバ#1 10.20.1.2
> addrtrans1 -s ドライバ#1 10.20.1.2
ここで、ドライバ#1はドライバ部25のドライバ名、10.20.1.2は仮想マシンのIPアドレスである。
アドレス変換モードの解除は以下のように指定する。
> addrtrans1 -d ドライバ#1
> addrtrans1 -d ドライバ#1
アドレス変換モードへ移行後、送信先アドレスとして仮想マシンのIPアドレス(IP2=10.20.1.2)を指定して送信すると、図38のように、netperfコマンド21→ストリームヘッド22→TCP23→IP24→ドライバ25→アダプタ17→ドライバ25→IP24→TCP23→ストリームヘッド22→netserverデーモン21を経由した送信が実行できる。
例えば、アドレス変換モードへ移行後に次のようにコマンドを実行する。
> netperperf -H 10.20.1.2
> netperperf -H 10.20.1.2
-アダプタでアドレス変換する場合のコマンドの実装-
アダプタ17は、メモリ空間における所定の領域に、図47に示すアドレス変換レジスタを確保する。
アダプタ17は、メモリ空間における所定の領域に、図47に示すアドレス変換レジスタを確保する。
図47のアドレス変換レジスタは、現在設定されているモード、仮想マシンのIPアドレス、実マシン上のIPアドレス、仮想マシン上のMACアドレス、アダプタ上のMACアドレス等の項目を記憶する。なお、現在設定されているモードは、例えばアドレス変換モードであれば1、通常モードであれば0のように設定する。また、実マシン上のIPアドレスは、ドライバ25やアダプタ17のIPアドレスである。
そして、addrtrans1 -sコマンドを実行した場合に、CPU12が以下の動作を行うこととする。
まず、OSに備わっている既存のインタフェースで、アダプタ17のMACアドレスおよびIPアドレスを調べる。なお、MACアドレスやIPアドレスは、OSにより該アダプタ17に係るドライバ名と対応付けられてメモリ中に格納されている。
次に仮想マシンにMACアドレスを割り当てる。その値をMAC2とする。ここで、仮想マシンのMACアドレスMAC2と、アダプタ17のMACアドレスMAC1が、それぞれユニークな値となるように割り当てる。
仮想マシンのIPアドレスは、上記のようにaddrtrans1コマンドの引数で与えられているため、これで変換レジスタに書きこむべき値は全てそろったことになる。
次に、アプリケーション部21は、図48のようにioctlによってドライバ部25に、アダプタ17のアドレス変換レジスタに書きこむべき値として、前記アダプタ17のMACアドレス、IPアドレス、および仮想マシンのMACアドレスを渡す。
ドライバ部25は、そのioctlによる前記値を受けると、アダプタ上のアドレス変換レジスタのアダプタ上のMACアドレス、実マシン上のIPアドレス、仮想マシン上のMACアドレスのフィールドにそれぞれ書きこむ。
例えば、”addrtrans1 -s ドライバ#1 10.20.1.2”が実行された場合、ドライバ部25からアダプタ17のアドレス変換レジスタに図49のように書きこむ。
即ち、モードが1、仮想マシンのIPアドレスが10.20.1.2、実マシン上のIPアドレスが10.20.1.1、仮想マシン上のMACアドレスがMAC2、アダプタ上のMACアドレスがMAC1となる。
そして、”addrtrans1 -d ドライバ#1”が実行されてアドレス変換モードが解除された場合、ドライバ部25からアダプタ17に対して、図50に示すように全ての値を0にクリアする。
-ドライバでアドレス変換する場合のコマンドの実装-
ドライバ部25は、アダプタの状態や、上位から指示された情報を保存しておくために“制御構造体”と呼ばれるデータの構造体を試験装置1上のメモリ13に保持している。
ドライバ部25は、アダプタの状態や、上位から指示された情報を保存しておくために“制御構造体”と呼ばれるデータの構造体を試験装置1上のメモリ13に保持している。
この制御構造体内に、図47のアドレス変換レジスタと同等な情報を取り込む。これを“アドレス変換情報”と呼ぶことにする。
ioctlによってドライバ部25へ、アドレス変換情報に書きこむべき値を渡す処理までは、図48においてアドレス変換レジスタに書きこむべき値を渡す処理と同様である。以下、アドレス変換情報の書き込み処理の詳細を説明する。
ドライバ部25はioctlを受けると制御構造体の値を更新する。例えば、”addrtrans1 -s ドライバ#1 10.20.1.2”が実行された場合、ドライバ部25は、制御構造体のアドレス変換情報として図49の値を書きこむ。
一方、”addrtrans1 -d ドライバ#1”が実行されてアドレス変換モードが解除された場合、ドライバ部25は制御構造体のアドレス変換情報を図50に示すようにクリアする。
-アダプタでアドレス変換する場合のアダプタの実装例-
図51は、通常モード時、即ち通常の通信を行う場合の状態を示したアダプタ17の機能ブロック図である。図51のようにアダプタ25は、送信キュー71、送受信器72、データ変換器73、受信キュー74を有する。
図51は、通常モード時、即ち通常の通信を行う場合の状態を示したアダプタ17の機能ブロック図である。図51のようにアダプタ25は、送信キュー71、送受信器72、データ変換器73、受信キュー74を有する。
一方、図52は、アドレス変換を行う場合の状況を示したアダプタ17の機能ブロック図である。
試験モード時、即ち、アドレス変換して通信する場合、本実施例2では、図52に示すように、試験変換器75を用い送信キュー71と送受信器72の間でアドレスを変換する。
本実施例2において、アダプタ17の各部の動作は、前述の実施例1の図28,29と略同じである。例えば、実施例1の図28,29では、一方のアダプタ17Aから送信し、ケーブルを介して他方のアダプタ17Bで受信している。これに対し、本実施例2では、アダプタ17から送信するパケットを迂回路19を介してアダプタ17自身で受信するため、変換するアドレスが異なるだけで、試験変換部75や送受信器72は、同じロジックで送信や受信の処理を行うことができる。
以上のように、本実施例2によれば、試験装置1に搭載した一つのネットワークアダプタ17内で折り返してTCP/IPを用いた通信が行えるので、簡易な構成でネットワークアダプタ或はドライバの試験を行うことができる。
Claims (15)
- 少なくとも一つのネットワークアダプタが接続された試験装置であって、
仮想アドレスを送信先アドレスとしてデータの送信を指示する送信アプリケーション部と、
試験モードが設定されている場合、前記データの送信先アドレスを自装置と接続されたネットワークアダプタに割り当てられたアドレスに変換して、該ネットワークアダプタ或は自装置に接続された他のネットワークアダプタに当該データを送って送信させるアドレス変換部と、
前記変換後の送信先アドレスが割り当てられたネットワークアダプタを介して前記データを受信する受信アプリケーション部と、
前記データの送信結果に基づいて試験結果を算出する算出部と、
を備えた試験装置。 - 前記アドレス変換部が、試験モードの場合に前記データの送信元アドレスを仮想アドレスに変換する請求項1に記載の試験装置。
- インターネットプロトコルに従って、前記データに前記送信先アドレスを付加したパケットを生成するパケット生成部を備えた請求項1又は2に記載の試験装置。
- 前記ネットワークアダプタが、送信するデータを該ネットワークアダプタ内で折り返して受信する機能を有し、試験モードの場合に一つのネットワークアダプタで前記変換後のデータの送信及び受信を行う請求項1から3の何れか1項に記載の試験装置。
- 前記試験装置に第一のネットワークアダプタと第二のネットワークアダプタが接続され、該第一のネットワークアダプタからデータを送信し、ネットワークケーブルを介して第二のネットワークアダプタで受信する場合に、
前記アドレス変換部が、前記データの送信先アドレスを第二のネットワークアダプタに割り当てられたアドレスに変換する請求項1から3の何れか1項に記載の試験装置。 - 少なくとも一つのネットワークアダプタが接続された試験装置が、
仮想アドレスを送信先アドレスとしてデータの送信を指示するステップと、
試験モードの場合に前記データの送信先アドレスを自装置と接続された前記ネットワークアダプタに割り当てられたアドレスに変換して該ネットワークアダプタ或は自装置に接続された他のネットワークアダプタに当該データを送って送信させるステップと、
前記変換後の送信先アドレスが割り当てられたネットワークアダプタを介して前記データを受信するステップと、
前記データの送信結果に基づいて試験結果を算出するステップと、
を実行する試験方法。 - 試験モードの場合に前記データの送信元アドレスを仮想アドレスに変換する請求項6に記載の試験方法。
- インターネットプロトコルに従って、前記データに前記送信先アドレスを付加したパケットを生成するステップを実行する請求項6又は7に記載の試験方法。
- 前記ネットワークアダプタが、送信するデータを該ネットワークアダプタ内で折り返して受信する機能を有し、試験モードの場合に一つのネットワークアダプタで前記変換後のデータの送信及び受信を行う請求項6から8の何れか1項に記載の試験方法。
- 前記試験装置に第一のネットワークアダプタと第二のネットワークアダプタが接続され、該第一のネットワークアダプタからデータを送信し、ネットワークケーブルを介して第二のネットワークアダプタで受信する場合に、
前記データの送信先アドレスを第二のネットワークアダプタに割り当てられたアドレスに変換する請求項6から8の何れか1項に記載の試験方法。 - 少なくとも一つのネットワークアダプタが接続された試験装置に、
仮想アドレスを送信先アドレスとしてデータの送信を指示するステップと、
試験モードの場合に前記データの送信先アドレスを自装置と接続された前記ネットワークアダプタに割り当てられたアドレスに変換して該ネットワークアダプタ或は自装置に接続された他のネットワークアダプタに当該データを送って送信させるステップと、
前記変換後の送信先アドレスが割り当てられたネットワークアダプタを介して前記データを受信するステップと、
前記データの送信結果に基づいて試験結果を算出するステップと、
を実行させるプログラム。 - 試験モードの場合に前記データの送信元アドレスを仮想アドレスに変換する請求項11に記載のプログラム。
- インターネットプロトコルに従って、前記データに前記送信先アドレスを付加したパケットを生成するステップを実行する請求項11又は12に記載のプログラム。
- 前記ネットワークアダプタが、送信するデータを該ネットワークアダプタ内で折り返して受信する機能を有し、試験モードの場合に一つのネットワークアダプタで前記変換後のデータの送信及び受信を行う請求項11から13の何れか1項に記載のプログラム。
- 前記試験装置に第一のネットワークアダプタと第二のネットワークアダプタが接続され、該第一のネットワークアダプタからデータを送信し、ネットワークケーブルを介して第二のネットワークアダプタで受信する場合に、
前記データの送信先アドレスを第二のネットワークアダプタに割り当てられたアドレスに変換する請求項11から13の何れか1項に記載のプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010517632A JP5003821B2 (ja) | 2008-06-25 | 2008-06-25 | 試験装置及び方法 |
PCT/JP2008/061570 WO2009157067A1 (ja) | 2008-06-25 | 2008-06-25 | 試験装置及び方法 |
US12/968,883 US20110085451A1 (en) | 2008-06-25 | 2010-12-15 | Testing device and testing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2008/061570 WO2009157067A1 (ja) | 2008-06-25 | 2008-06-25 | 試験装置及び方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/968,883 Continuation US20110085451A1 (en) | 2008-06-25 | 2010-12-15 | Testing device and testing method |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2009157067A1 true WO2009157067A1 (ja) | 2009-12-30 |
Family
ID=41444144
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2008/061570 WO2009157067A1 (ja) | 2008-06-25 | 2008-06-25 | 試験装置及び方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20110085451A1 (ja) |
JP (1) | JP5003821B2 (ja) |
WO (1) | WO2009157067A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013131476A1 (en) * | 2012-03-07 | 2013-09-12 | Tencent Technology (Shenzhen) Company Limited | Service access method and device for conducting the same |
JP2015039130A (ja) * | 2013-08-19 | 2015-02-26 | 沖電気工業株式会社 | 冗長構成のネットワークインターフェースを備える通信装置及び導通確認方法 |
CN110460492A (zh) * | 2019-07-12 | 2019-11-15 | 苏州浪潮智能科技有限公司 | 一种实现ocpa、ocpc网卡同时测试的装置及测试方法 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9374290B2 (en) * | 2010-12-13 | 2016-06-21 | Verizon Patent And Licensing Inc. | System and method for providing TCP performance testing |
JP6433146B2 (ja) * | 2014-04-22 | 2018-12-05 | キヤノン株式会社 | 情報処理装置、システム、情報処理方法、コンピュータプログラム |
CN109787864A (zh) * | 2019-01-25 | 2019-05-21 | 郑州云海信息技术有限公司 | 一种基于Netperf的网络自动测试方法、装置、终端及存储介质 |
CN116055371B (zh) * | 2021-10-27 | 2024-04-02 | 成都鼎桥通信技术有限公司 | 通信模组性能测试系统及方法、上位机、介质和程序产品 |
CN114124773B (zh) * | 2021-11-24 | 2024-01-23 | 北京天融信网络安全技术有限公司 | 一种端口块地址转换的测试系统及方法 |
US11863441B2 (en) * | 2022-01-03 | 2024-01-02 | Vmware, Inc. | Methods and systems for generating data packets in smart network interface controllers |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1084384A (ja) * | 1996-09-09 | 1998-03-31 | Nec Commun Syst Ltd | パケットデータ通信における負荷試験装置 |
JPH1188330A (ja) * | 1997-09-12 | 1999-03-30 | Nec Eng Ltd | シミュレータ装置及びそれを用いたリモートメンテナンスシステム |
JP2007129534A (ja) * | 2005-11-04 | 2007-05-24 | Digital Design Co Ltd | データ通信方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10271143A (ja) * | 1997-03-25 | 1998-10-09 | Hitachi Ltd | スイッチングhub対応フロー制御方式 |
KR20010057434A (ko) * | 1999-12-23 | 2001-07-04 | 이계철 | 임의 가상망 생성에 기반한 라우팅 시험 방법 |
KR100385996B1 (ko) * | 2001-09-05 | 2003-06-02 | 삼성전자주식회사 | 하나의 NIC(Network InterfaceCard)에 복수개의 IP 어드레스를 할당하는 방법 및이에 적합한 장치 |
US7440415B2 (en) * | 2003-05-30 | 2008-10-21 | Ixia | Virtual network addresses |
US7643431B2 (en) * | 2006-11-10 | 2010-01-05 | Ixia | Distributed packet group identification for network testing |
-
2008
- 2008-06-25 JP JP2010517632A patent/JP5003821B2/ja not_active Expired - Fee Related
- 2008-06-25 WO PCT/JP2008/061570 patent/WO2009157067A1/ja active Application Filing
-
2010
- 2010-12-15 US US12/968,883 patent/US20110085451A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1084384A (ja) * | 1996-09-09 | 1998-03-31 | Nec Commun Syst Ltd | パケットデータ通信における負荷試験装置 |
JPH1188330A (ja) * | 1997-09-12 | 1999-03-30 | Nec Eng Ltd | シミュレータ装置及びそれを用いたリモートメンテナンスシステム |
JP2007129534A (ja) * | 2005-11-04 | 2007-05-24 | Digital Design Co Ltd | データ通信方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013131476A1 (en) * | 2012-03-07 | 2013-09-12 | Tencent Technology (Shenzhen) Company Limited | Service access method and device for conducting the same |
CN103312661A (zh) * | 2012-03-07 | 2013-09-18 | 腾讯科技(深圳)有限公司 | 一种服务访问方法及装置 |
CN103312661B (zh) * | 2012-03-07 | 2016-02-17 | 腾讯科技(深圳)有限公司 | 一种服务访问方法及装置 |
US9407600B2 (en) | 2012-03-07 | 2016-08-02 | Tencent Technology (Shenzhen) Company Limited | Service access method and device for conducting the same |
JP2015039130A (ja) * | 2013-08-19 | 2015-02-26 | 沖電気工業株式会社 | 冗長構成のネットワークインターフェースを備える通信装置及び導通確認方法 |
CN110460492A (zh) * | 2019-07-12 | 2019-11-15 | 苏州浪潮智能科技有限公司 | 一种实现ocpa、ocpc网卡同时测试的装置及测试方法 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2009157067A1 (ja) | 2011-12-01 |
US20110085451A1 (en) | 2011-04-14 |
JP5003821B2 (ja) | 2012-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5003821B2 (ja) | 試験装置及び方法 | |
JP4477613B2 (ja) | AXIプロトコルを適用したNoCシステム | |
JP2003308262A (ja) | ハードウェアプロトコルプロセシングロジックで実現されたインタネット通信プロトコル装置、及びその装置を用いたデータ並列処理方法 | |
US20110106518A1 (en) | System and method of network emlation for test of on-line server processing heavy traffic | |
US10372633B1 (en) | Interconnection of peripheral devices on different electronic devices | |
US20030182440A1 (en) | Network processor with high-speed transceiver | |
JP5091121B2 (ja) | 埋め込み型システムのための高速データ処理・通信方法及び装置 | |
JP4754018B2 (ja) | 経路データ収集方法、レイヤ2装置、キャリア網内装置及び経路データ収集装置 | |
US8885673B2 (en) | Interleaving data packets in a packet-based communication system | |
US6457079B1 (en) | Communication apparatus with means for allocating alternate designation information to each function unit, and communication system with said two communication apparatuses | |
US11106359B1 (en) | Interconnection of peripheral devices on different electronic devices | |
JP5309580B2 (ja) | ネットワーク・プロセッサ | |
US7321938B2 (en) | Data transfer apparatus, network system, and data transfer method | |
JP4519090B2 (ja) | 送信装置、受信装置およびそれらの方法 | |
JP4690294B2 (ja) | Usb通信装置、usb通信装置の通信方法、及びusb通信装置のプログラム | |
JP3719253B2 (ja) | データ受信ノード | |
JP3678238B2 (ja) | データ転送方法 | |
JP2003218887A (ja) | 通信装置およびネットワークシステム | |
US20060104212A1 (en) | Method of dynamically determining optimum size of buffer | |
JP3767578B2 (ja) | データ送信ノード | |
JP3714341B2 (ja) | データ転送方法 | |
JP2004328221A (ja) | 通信制御方式、及び、通信機器、及び、記録媒体 | |
JP2006094509A (ja) | Ieee1394−イーサネット変換が可能な端末用アダプダ装置 | |
JP2005204173A (ja) | データ変換装置およびデータ変換方法 | |
JP2004328220A (ja) | 通信制御方法、ゲートウェイ、および、記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 08777586 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2010517632 Country of ref document: JP |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 08777586 Country of ref document: EP Kind code of ref document: A1 |