以下に添付図面を参照して、開示の通信方法、通信装置、および通信プログラムの実施の形態を詳細に説明する。
図1は、通信システムの動作例を示す説明図である。通信システム100は、本実施の形態1にかかる通信装置となるエンドホストサーバ(End Host Server:以下、「ES」と称する)1を含む。ES1は、内部にVM(Virtual Machine)1を含む。VMとは、コンピュータを仮想化し、複数のOSを実行できるように制御する仮想マシンモニタ上で動作する仮想マシンである。また、ES1は、ネットワーク101に接続しており、ネットワーク101内の装置群に設定されるレイヤ2アドレスとレイヤ3アドレスとの対応関係を記憶するARP_BtoUテーブル102_ES1にアクセス可能である。以下、“_ESx”は、ESxがアクセス可能なテーブルであることを示している。
この状態で、VM1が、レイヤ3アドレスであるIP(Internet Protocol)1に対するレイヤ2アドレスを取得するARPリクエストをブロードキャストで送信する。ES1は、ARP_BtoUテーブル102_ES1から、IP1に対応するMAC(Media Access Control)1を抽出し、ARPリクエストの宛先を、ブロードキャストアドレスからMAC1に変換し、ユニキャスト送信する。
ユニキャスト送信したARPリクエストに対するARPリプライを受信した場合、ES1は、ARP_BtoUテーブル102_ES1を、ARPリプライに含まれるMAC1で更新し、VM1にARPリプライを送信する。
このように、ES1は、ARPリクエストを行うブロードキャストを、記憶されたMACアドレスへのユニキャストに変換して送信し、ARPリプライで得たMACアドレスを更新する。これにより、ES1は、ブロードキャストを抑制し、また、ネットワーク変更に対応できるため、無効なデータの送信を行わないことから、ネットワーク101の負荷を抑制することができる。
図2は、通信システムの接続例を示す説明図である。通信システム100は、VM1〜VM10を含む。図2の例では、VM1、VM10は、ES1上で動作しており、VM2、VM3は、ES2上で動作している。VM4〜VM9についても、図2では図示していないが、何らかのES上で動作している。また、VM1〜VM10は、ネットワーク101を論理的に分離するLNID(Logical Network ID)が付与されている。(下記参考文献1参照)。
(参考文献1:スケーラブルなクラウドネットワークを実現する ホストベース論理分離技術、[online]、[平成23年08月15日検索]、インターネット<URL:http://skdr.dyndns.org/proceedings/sacsis2011/IPSJ−SACSIS2011013.pdf>)
図2の例では、VM1、VM3、VM4、VM5、VM6、VM7に、LNID:1が付与されており、VM2、VM8、VM9、VM10に、LNID:2が付与されている。また、VM2〜VM9には、パケットをフィルタリングするフィルタリング装置を介してネットワーク101に接続されている。このような接続状況の元、たとえば、VM1は、ARPリクエストを、VSW(Virtual Switch)を介してVM2〜VM10にブロードキャストする。また、VM1は、IPアドレスを設定する場合、DHCP(Dynamic Host Configuration Protocol)に従って、DHCPDISCOVERをVM2〜VM10にブロードキャストする。
(ES1のハードウェア)
図3は、ES1のハードウェアの一例を示すブロック図である。図3では、通信装置となるES1のハードウェアについて説明を行う。他のESもES1と同様のハードウェアを有する。図3において、ES1は、CPU(Central Processing Unit)301と、ROM(Read‐Only Memory)302と、RAM(Random Access Memory)303と、を含む。また、ES1は、磁気ディスクドライブ304と、磁気ディスク305と、光ディスクドライブ306と、光ディスク307と、を含む。また、ユーザやその他の機器との入出力装置としてES1は、ディスプレイ308と、I/F(Interface)309と、キーボード310と、マウス311と、を含む。また、各部はバス312によってそれぞれ接続されている。
ここで、CPU301は、ES1の全体の制御を司る。ROM302は、ブートプログラムなどのプログラムを記憶している。RAM303は、CPU301のワークエリアとして使用される。磁気ディスクドライブ304は、CPU301の制御に従って磁気ディスク305に対応するデータのリード/ライトを制御する。磁気ディスク305は、磁気ディスクドライブ304の制御で書き込まれたデータを記憶する。
光ディスクドライブ306は、CPU301の制御に従って光ディスク307に対するデータのリード/ライトを制御する。光ディスク307は、光ディスクドライブ306の制御で書き込まれたデータを記憶したり、光ディスク307に記憶されたデータをコンピュータに読み取らせたりする。なお、ROM302、磁気ディスク305、光ディスク307のいずれかの記憶装置に、本実施の形態1,2にかかる通信プログラムが格納されていてもよい。
ディスプレイ308は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。たとえば、ディスプレイ308は、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
I/F309は、通信回線を通じてLAN、WAN(Wide Area Network)、インターネットなどのネットワーク101に接続され、このネットワーク101を介して他の装置に接続される。そして、I/F309は、ネットワーク101と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F309には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード310は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、キーボード310は、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス311は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。また、ES1は、マウス311の代わりとして、ポインティングデバイスとして同様に機能を有するものであれば、トラックボールやジョイスティックなどであってもよい。
(通信システム100の機能)
次に、通信システム100の機能について説明する。図4は、通信システムの機能例を示すブロック図である。通信システム100は、記憶部410と、抽出部411と、変換部412と、送信部413と、更新部414と、判定部415と、送信部416と、更新部417と、記憶部420と、受信部421と、抽出部422と、生成部423と、送信部424と、を含む。この制御部となる機能(抽出部411〜更新部417、受信部421〜送信部424)は、記憶装置に記憶されたプログラムをCPU301が実行することにより、その機能を実現する。記憶装置とは、具体的には、たとえば、図3に示したROM302、RAM303、磁気ディスク305、光ディスク307などである。または、I/F309を経由して他のCPUが実行することにより、その機能を実現してもよい。
また、ES1は、記憶部410として、ARP_BtoUテーブル102_ES1と、DHCP_BtoUテーブル401_ES1にアクセス可能である。記憶部410は、RAM303、磁気ディスク305、光ディスク307等といった記憶装置内に存在している。同様に、ES2は、記憶部420として、DHCP_BtoUテーブル401_ES1にアクセス可能である。記憶部420は、ES2のRAM、磁気ディスク、光ディスク等といった記憶装置内に存在している。なお、ES2が、ARPリクエストを送信する場合、図4に示していないが、ES2はARP_BtoUテーブル102_ES2にアクセス可能であってもよい。
また、図4では、記憶部410〜更新部417は、ES1の機能であることを示しており、記憶部420〜送信部424は、ES2の機能であることを示している。たとえば、ES1内のVMにDHCPサーバが起動している場合、ES1は、記憶部420〜送信部424を有していてもよい。また、図4では、ES1内にVM1が動作しており、ES2内にVM2、VM3が動作している。また、VM2にはDHCPサーバが起動している。
ARP_BtoUテーブル102は、ネットワーク101内の装置群に設定されるレイヤ2アドレスとレイヤ3アドレスとの対応関係を記憶する。ここで、レイヤ2アドレスとは、データリンク層のアドレスであり、たとえば、MACアドレスである。また、レイヤ3アドレスとは、ネットワーク層のアドレスであり、たとえば、IPアドレスである。なお、ARP_BtoUテーブル102の詳細は、図5にて後述する。
DHCP_BtoUテーブル401_ES1は、割当可能なレイヤ3アドレスを保持する装置のレイヤ2アドレスを記憶する。具体的に、DHCP_BtoUテーブル401_ES1は、割当可能なレイヤ3アドレスを保持するDHCPサーバのMACアドレスを記憶する。
また、DHCP_BtoUテーブル401_ES1は、DHCPサーバのIPアドレスを記憶してもよい。特に、DHCPサーバが、ES1が属するブロードキャストドメインの外側に存在する場合、MACアドレスではES1からDHCPサーバに到達できないため、この場合、DHCP_BtoUテーブル401_ES1にDHCPサーバのIPアドレスを含める。また、DHCPサーバがES1の属するブロードキャストドメインの外側に存在する場合として、たとえば、DHCPリレーエージェントによって、VM1のブロードキャストデータを受けたルーターが、外側のDHCPサーバにデータを転送した場合である。なお、DHCP_BtoUテーブル401の詳細は、図25にて後述する。
抽出部411は、レイヤ2アドレスの取得要求を送信する場合、記憶部410から、取得要求に含まれるレイヤ3アドレスに対応する第1のレイヤ2アドレスを抽出する機能を有する。たとえば、抽出部411は、レイヤ2アドレスの取得要求であるARPリクエストを送信する場合、ARP_BtoUテーブル102_ES1から、ARPリクエストに含まれる宛先プロトコルアドレスに対応するMACアドレスを抽出する。
また、抽出部411は、取得要求が割当可能なレイヤ3アドレスの取得要求であるときに、取得要求を送信する場合、記憶部410から第1のレイヤ2アドレスを抽出してもよい。具体的に、抽出部411は、レイヤ3アドレスの取得要求となるDHCPDISCOVERを送信する場合、DHCP_BtoUテーブル401_ES1から、DHCPサーバのMACアドレスを抽出する。
また、取得要求の取得方法としては、ES1内で生成された取得要求でもよいし、他のESから送信された取得要求を受信してもよい。なお、抽出された第1のレイヤ2アドレスは、RAM303、磁気ディスク305、光ディスク307などの記憶領域に記憶される。
変換部412は、取得要求の宛先を、ネットワーク101内の装置群を示す第2のレイヤ2アドレスから第1のレイヤ2アドレスに変換する機能を有する。第2のレイヤ2アドレスは、たとえば、ブロードキャストMACアドレスであり、“FF−FF−FF−FF−FF−FF”である。または、第2のレイヤ2アドレスは、マルチキャストMACアドレスであってもよく、たとえば、“01−00−5E−”で始まるMACアドレスである。
たとえば、変換部412は、ARPリクエストのヘッダ部分の宛先アドレスを、ブロードキャストMACアドレスから、抽出したMACアドレスに変換する。また、変換部412は、記憶部410に、抽出したレイヤ2アドレスに対応するレイヤ3アドレスが記憶されている場合、宛先IPアドレスを、抽出したレイヤ2アドレスに対応するレイヤ3アドレスに変換してもよい。なお、変換後の取得要求は、RAM303、磁気ディスク305、光ディスク307などの記憶領域に記憶される。
送信部413は、取得要求の宛先が変換された変換後の取得要求を送信する機能を有する。たとえば、送信部413は、変換後となるユニキャストのARPリクエストをVM2に送信する。また、送信部413は、変換後のユニキャストのDHCPDISCOVERをVM2に送信する。
更新部414は、変換後の取得要求に対応する応答を受信した場合、記憶部410の第1のレイヤ2アドレスを、応答に含まれる第1のレイヤ2アドレスで更新する機能を有する。たとえば、更新部414は、ARPリプライを受信した場合、ARP_BtoUテーブル102_ES1のARPリクエストのIPアドレスに対応するMACアドレスを、ARPリプライの送信元ハードウェアアドレスで更新する。また、更新部414は、DHCPOFFERを受信した場合、DHCP_BtoUテーブル401_ES1にDHCPOFFERの送信元のMACアドレス、または、DHCPOFFERのサーバIPアドレスを登録する。
また、更新部414は、変換後の取得要求に対応する応答を受信しなかった場合、記憶部の第1のレイヤ2アドレスを削除してもよい。たとえば、更新部414は、ARPリプライを受信しなかった場合、ARP_BtoUテーブル102_ES1の、ARPリクエストに対応するレコードを削除する。たとえば、抽出部411において、抽出対象となったレコード番号を記憶しておき、ARPリプライを一定時間受信しなかった場合、更新部414は、記憶していたレコードを削除する。
同様に、更新部414は、DHCPDISCOVERに対応するDHCPOFFERを受信しなかった場合、DHCP_BtoUテーブル401_ES1の、DHCPDISCOVERに対応するレコードを削除する。
判定部415は、第1のレイヤ2アドレスで更新した場合、第1のレイヤ2アドレスに対応するレイヤ3アドレスが記憶部410に複数存在するか否かを判定する機能を有する。たとえば、判定部415は、ARP_BtoUテーブル102_ES1が更新された結果、ARPリプライのMACアドレスと同一のMACアドレスとなるレコードが複数存在するか否かを判定する。なお、判定結果は、RAM303、磁気ディスク305、光ディスク307などの記憶領域に記憶される。
送信部416は、第1のレイヤ2アドレスに対応するレイヤ3アドレスが複数存在する場合、取得要求に含まれるレイヤ3アドレス以外となる残余のレイヤ3アドレスに対する擬似取得要求を、第1のレイヤ2アドレス宛てに送信する機能を有する。たとえば、送信部416は、ARPリプライのMACアドレスと同一のMACアドレスとなるレコードが複数存在した場合、ARPリクエストで行ったIPアドレス以外の残余のIPアドレスに対する擬似ARPリクエストを送信する。
更新部417は、擬似取得要求に対応する応答を受信した場合、記憶部410の残余のレイヤ3アドレスに対応する第1のレイヤ2アドレスを擬似取得要求に対応する応答に含まれる第1のレイヤ2アドレスで更新する機能を有する。
たとえば、擬似ARPリクエストに対するARPリプライを受信した場合を想定する。このとき、更新部417は、ARP_BtoUテーブル102_ES1のうち擬似ARPリクエストのIPアドレスに対応するMACアドレスを、ARPリプライの送信元ハードウェアアドレスで更新する。
また、更新部417は、擬似取得要求に対応する応答を受信しなかった場合、記憶部410の残余のレイヤ3アドレスに対応する第1のレイヤ2アドレスを削除してもよい。たとえば、更新部417は、ARP_BtoUテーブル102_ES1のうち擬似ARPリクエストのIPアドレスに対応するレコードを削除する。
受信部421は、レイヤ3アドレスの取得要求を受信する機能を有する。たとえば、受信部421は、DHCPDISCOVERを受信する。なお、受信した取得要求は、ES2のRAM、磁気ディスク、光ディスクなどの記憶領域に記憶される。
抽出部422は、取得要求に対応する第1の応答を送信する場合、記憶部420から第1のレイヤ2アドレスと第1の応答から取得要求の送信元となる第2のレイヤ2アドレスとを抽出する機能を有する。
たとえば、取得要求となるDHCPDISCOVERに対応する第1の応答として、ブロードキャストのDHCPOFFERを送信する場合を想定する。このとき、抽出部422は、DHCP_BtoUテーブル401_ES2からDHCPサーバのVM3のMACアドレスと、送信するDHCPOFFERからDHCPDISCOVERの送信元であるVM1のMACアドレスを抽出する。
また、取得要求となるDHCPREQUESTに対応する第1の応答として、ブロードキャストのDHCPACKを送信する場合を想定する。このとき、抽出部422は、DHCP_BtoUテーブル401_ES2から、DHCPサーバのVM3のMACアドレスと、送信するDHCPACKから、DHCPDISCOVERの送信元であるVM1のMACアドレスを抽出する。なお、抽出したレイヤ2アドレスは、ES2のRAM、磁気ディスク、光ディスクなどの記憶領域に記憶される。
生成部423は、第1の応答に基づいて、宛先が第1のレイヤ2アドレスとなる第2の応答と、宛先が第2のレイヤ2アドレスとなる第3の応答と、を生成する機能を有する。たとえば、生成部423は、ブロードキャストのDHCPOFFERを、宛先がVM3となる他のDPHCサーバへのユニキャストのDHCPOFFERと、宛先がVM1となるユニキャストのDHCPOFFERと、を生成する。また、生成部423は、ブロードキャストのDHCPACKを、宛先がVM3となる他のDPHCサーバとなるユニキャストのDHCPACKと、宛先がVM1となるユニキャストのDHCPACKと、を生成する。なお、生成した応答は、ES2のRAM、磁気ディスク、光ディスクなどの記憶領域に記憶される。
送信部424は、第2および第3の応答を送信する機能を有する。たとえば、送信部424は、第2の応答をVM3に送信し、第3の応答をVM1に送信する。
図5は、ARPキャッシュテーブルとARP_BtoUテーブルの記憶内容の一例を示す説明図である。ARPを発行するVM1は、ARPによって得た、プロトコルアドレスと、ハードウェアアドレスとのマッピング情報を保持するARPキャッシュテーブル501_VM1を有する。プロトコルアドレスとは、ネットワーク層のプロトコルが用いる論理アドレスであり、たとえば、IPアドレスである。ハードウェアアドレスとは、データリンク層の物理アドレスであり、たとえば、MACアドレスである。本実施の形態では、プロトコルアドレスをIPアドレスであると想定し、ハードウェアアドレスをMACアドレスであると想定する。
ARPキャッシュテーブル501は、IP、MACという2つのフィールドを含む。IPフィールドには、IPアドレスが格納される。MACフィールドには、IPアドレスに関連付けられているMACアドレスが格納される。ARP_BtoUテーブル102は、ARPキャッシュテーブル501と同一のフィールドを有するため、説明を省略する。また、ARP_BtoUテーブル102は、LNIDを格納するフィールドを有していてもよい。
たとえば、図5に示すARPキャッシュテーブル501_VM1は、“IP1”と“MAC1”を関連付けて記憶している。また、ARP_BtoUテーブル102は、“IP1”と“MAC1”を関連付けて記憶し、“IP2”と“未特定”を関連付けて記憶する。なお、“未特定”とは、ARPリクエストを送信した場合にMACフィールドに登録される識別子である。
なお、ARPキャッシュテーブル501_VM1は、レコードを保持する有効時間となるaging_timeが存在する。aging_timeを超えると、該当のレコードは削除される。
以下、ARP_BtoUテーブル102を用いて、ES1はARPブロードキャスト通信を抑制する。以下、図6〜図9では、ARPリクエストおよびARPリプライの受信時の動作を説明する。図10〜図14では、たとえば、DHCPのリース期限が切れた結果IPアドレスが再交付されたことにより、IPアドレスが置換される場合についての動作を説明する。図10、図15〜図18では、一つのインターフェースに二つ以上のアドレスを割り当てるIP aliasingが行われたことにより、1つのMACアドレスに新たなIPアドレスが追加された場合についての動作を説明する。
また、図19〜図22では、IPアドレスの割当が更新された結果、IPアドレスに対応するMACアドレスが変更する場合の動作について説明する。図23、図24では、BtoUテーブルへ最も効率よく登録される状態について説明する。
図6は、MACアドレス解決前にARPリクエストを受信した状態を示す説明図である。図6で示す通信システム100にて、ES1上のVM1は、MACアドレスとしてMAC1、IPアドレスとしてIP1が割り当てられている。さらに、ES2上のVM2は、MACアドレスとしてMAC2、IPアドレスとしてIP2が割り当てられており、ES2上のVM3は、MACアドレスとしてMAC3、IPアドレスとしてIP3が割り当てられている。また、ARPキャッシュテーブル501_VM1は何も登録されていない。
この状態で、VM1がIP2に対応するMACアドレスを尋ねるARPリクエストをブロードキャストで送信する。ARPリクエストを受信したES1は、ARPリクエストの送信元プロトコルアドレスと送信元ハードウェアアドレスから、ARP_BtoUテーブル102_ES1に、“IP1”、“MAC1”のレコードを追加する。さらに、ES1は、ARPリクエストの宛先プロトコルアドレスと宛先ハードウェアアドレスから、“IP2”、“未特定”のレコードを追加する。また、ES1は、ARPリクエストをVM2とVM3に送信する。
図7は、MACアドレス解決前にARPリプライを受信した状態を示す説明図である。図7で示す通信システム100では、図6にて送信されたARPリクエストに対応して、VM2がMAC2を設定したARPリプライを送信した状態である。
ARPリプライを受信したES1は、ARPリプライの送信元ハードウェアアドレスから、ARP_BtoUテーブル102_ES1の“IP2”のレコードのMACフィールドを、“MAC2”で更新する。また、ES1は、ARPリプライをVM1に送信する。VM1は、受信したAPRリプライから、ARPキャッシュテーブル501_VM1に“IP2”、“MAC2”のレコードを追加する。
図8は、MACアドレス解決後にARPリクエストを受信した状態を示す説明図である。図8で示す通信システム100では、図7にて受信したARPリプライからAging Timeが経過し、ARPキャッシュテーブル501_VM1から“IP2”、“MAC2”のレコードが削除された状態を示している。
この状態で、VM1がIP2に対応するMACアドレスを尋ねるARPリクエストをブロードキャストで送信する。ARPリクエストを受信したES1は、ARP_BtoUテーブル102_ES1に、IP2に対するMAC2が登録されているため、通信方式をブロードキャストからMAC2に対するユニキャストに変換して、VM2に送信する。
図9は、MACアドレス解決後にARPリプライを受信した状態を示す説明図である。図10で示す通信システム100では、図8にて送信されたARPリクエストに対応して、VM2がMAC2を設定したARPリプライを送信した状態である。
ARPリプライを受信したES1は、ARP_BtoUテーブル102_ES1にIP1に対するMAC1、IP2に対するMAC2が既に登録されているため、新たな登録をせず、ARPリプライをVM1に送信する。VM1は、受信したAPRリプライから、ARPキャッシュテーブル501_VM1に“IP2”、“MAC2”のレコードを追加する。
図10は、IPアドレス置換時における動作とIPアドレス追加時における動作の初期状態を示す説明図である。図10で示す通信システム100では、VM1、VM2、VM3に割り当てられたIPアドレスとMACアドレスは、図6〜図9と同一である。また、ARP_BtoUテーブル102_ES1は、“IP1”と“MAC1”のレコードと、“IP2”と“MAC2”のレコードを記憶している。ARPキャッシュテーブル501_VM1は、“IP2”と“MAC2”のレコードを記憶している。この状態から、図11〜図14では、IPアドレスが置換される場合の動作について説明し、図15〜18では、IPアドレスが追加される場合の動作について説明を行う。
図11は、IPアドレス置換時における動作を示す説明図(その1)である。図11で示す通信システム100では、図10で示した状態から、VM2に割り当てられたIPアドレスがIP2からIP4に置換された状態である。
この状態で、VM1が、IP4に対応するMACアドレスを尋ねるARPリクエストをブロードキャストで送信する。ARPリクエストを受信したES1は、ARP_BtoUテーブル102_ES1に、IP4に対するMACアドレスが登録されていないため、ARPリクエストの通信方式をユニキャストに変換せずにブロードキャストとしてVM2、VM3に送信する。また、ES1は、ARP_BtoUテーブル102_ES1に“IP4”、“未特定”のレコードを追加する。
図12は、IPアドレス置換時における動作を示す説明図(その2)である。図12で示す通信システム100では、図8にて送信されたARPリクエストに対応して、VM2がMAC2を設定したARPリプライを送信した状態である。
ARPリプライを受信したES1は、ARPリプライの送信元ハードウェアアドレスから、ARP_BtoUテーブル102_ES1の“IP4”のレコードのMACフィールドを、“MAC2”で更新する。また、ES1は、ARPリプライをVM1に送信する。VM1は、受信したAPRリプライから、ARPキャッシュテーブル501_VM1に“IP4”、“MAC2”のレコードを追加する。
図13は、IPアドレス置換時における動作を示す説明図(その3)である。図13で示す通信システム100では、図12にてARPリプライを受信した後の状態を示している。MAC2に対するIPがIP2とIP4と、複数あるため、ES1は、IP2に対応するMACが本当にMAC2であるかを確認するために、擬似ARPリクエストをユニキャストで送信する。なお、擬似ARPリクエストとは、通常のARPリクエストと同内容ではあるが、VM1にて生成されたARPリクエストではなく、ES1にて生成されたARPリクエストである。
図14は、IPアドレス置換時における動作を示す説明図(その4)である。図14で示す通信システム100では、図13にて、VM2に擬似ARPリクエストを送信して一定時間が経過した状態である。VM2は、IP2が割り当てられていないため、IP2に対するARPリクエストに応答しない。
この状態で、ES1は、ARPリクエストに対するARPリプライが一定時間経過しても受信しない場合、ARP_BtoUテーブル102_ES1から、ARPリクエストの宛先プロトコルアドレスとなる“IP2”のレコードを削除する。このように、ES1は、IPアドレスが置換された場合、ARP_BtoUテーブル102_ES1のデータを、IPアドレスの割当状況に合わせて更新することができる。
図15は、IPアドレス追加時における動作を示す説明図(その1)である。図15で示す通信システム100では、図10の状態から、VM2のMAC2に新たにIP4が追加された状態である。
この状態で、VM1がIP4に対応するMACアドレスを尋ねるARPリクエストをブロードキャストで送信する。ARPリクエストを受信したES1は、ARP_BtoUテーブル102_ES1に、IP4に対するMACアドレスが登録されていないため、ARPリクエストの通信方式をユニキャストに変換せずにブロードキャストとしてVM2、VM3に送信する。また、ES1は、ARP_BtoUテーブル102_ES1に“IP4”、“未特定”のレコードを追加する。
図16は、IPアドレス追加時における動作を示す説明図(その2)である。図16で示す通信システム100では、図15にて送信されたARPリクエストに対応して、VM2がMAC2を設定したARPリプライを送信した状態である。
ARPリプライを受信したES1は、ARPリプライの送信元ハードウェアアドレスから、ARP_BtoUテーブル102_ES1の“IP4”のレコードのMACフィールドを、“MAC2”で更新する。また、ES1は、ARPリプライをVM1に送信する。VM1は、受信したAPRリプライから、ARPキャッシュテーブル501_VM1に“IP4”、“MAC2”のレコードを追加する。
図17は、IPアドレス追加時における動作を示す説明図(その3)である。図17で示す通信システム100では、図16にてARPリプライを受信した後の状態を示している。MAC2に対するIPがIP2とIP4と、複数あるため、ES1は、IP2に対応するMACが本当にMAC2であるかを確認するために、擬似ARPリクエストをユニキャストで送信する。
図18は、IPアドレス追加時における動作を示す説明図(その4)である。図18で示す通信システム100では、図17にて送信された擬似ARPリクエストに対応して、VM2がMAC2を設定したARPリプライを送信した状態である。
ARPリプライを受信したES1は、ARPリプライの送信元ハードウェアアドレスから、ARP_BtoUテーブル102_ES1の“IP2”のレコードのMACフィールドを、“MAC2”で更新する。
図19は、IPアドレスに対応するMACアドレスが変更する場合の動作を示す説明図(その1)である。図19で示す通信システム100は、IPアドレスの再割当が起こり、IPアドレスに対応するMACアドレスが変更する場合に説明する。図19で示す通信システム100にて、VM1は、MACアドレスとしてMAC1、IPアドレスとしてIP1が割り当てられている。さらに、ES2上のVM2は、MACアドレスとしてMAC2、IPアドレスとしてIP2が割り当てられており、ES2上のVM3は、MACアドレスとしてMAC3が割り当てられており、IPアドレスが割り当てられていない状態である。
また、ARP_BtoUテーブル102_ES1は、“IP1”と“MAC1”のレコードと、“IP2”と“MAC2”のレコードを記憶している。ARPキャッシュテーブル501_VM1は、“IP2”と“MAC2”のレコードを記憶している。
図20は、IPアドレスに対応するMACアドレスが変更する場合の動作を示す説明図(その2)である。図20で示す通信システム100では、図19で示した状態から、VM2のIPアドレスの割当が解除され、VM3にIP2が割り当てられた状態である。
この状態で、VM1がIP2に対応するMACアドレスを尋ねるARPリクエストをブロードキャストで送信する。ARPリクエストを受信したES1は、ARP_BtoUテーブル102_ES1に、IP2に対するMAC2が登録されているため、通信方式をブロードキャストからMAC2に対するユニキャストに変換して、VM2に送信する。また、ES1は、ARP_BtoUテーブル102_ES1に、IP2に対するMACを未特定に設定する。
図21は、IPアドレスに対応するMACアドレスが変更する場合の動作を示す説明図(その3)である。図21で示す通信システム100では、VM2にARPリクエストを送信して一定時間が経過した状態である。VM2は、IP2が割り当てられていないため、IP2に対するARPリクエストに応答しない。
この状態で、ES1は、ARPリクエストに対するARPリプライが一定時間経過しても受信しない場合、IP2に対応するMACアドレスを尋ねるARPリクエストをブロードキャストで送信する。
図22は、IPアドレスに対応するMACアドレスが変更する場合の動作を示す説明図(その4)である。図21で示す通信システム100では、図21にて送信されたAPRリクエストに対応して、VM3がMAC3を設定したARPリプライを送信した状態である。
ARPリプライを受信したES1は、ARPリプライの送信元ハードウェアアドレスから、ARP_BtoUテーブル102_ES1の“IP2”のレコードのMACフィールドを、“MAC3”で更新する。また、ES1は、ARPリプライをVM1に送信する。VM1は、受信したAPRリプライから、ARPキャッシュテーブル501_VM1に“IP2”、“MAC3”のレコードを追加する。このように、ES1は、IPアドレスに対するMACアドレスが変更された場合でも、ARP_BtoUテーブル102_ES1のデータを、IPアドレスの割当状況に合わせて更新することができる。
図23は、ARP_BtoUテーブル使用の一例を示す説明図(その1)である。図23では、ARP_BtoUテーブルの使用例として、一回のARPリクエストによって同一ネットワーク101内のBtoUテーブルのエントリを取得できる例を示している。なお、図23、図24では、ES2内に、VM2、VM3に加えてVM4が存在し、VM4にMACアドレスとしてMAC4が割り当てられており、IPアドレスとしてIP4が割り当てられている。
初めに、処理(1)として、VM1は、IP2に対応するMACアドレスを尋ねるARPリクエストをブロードキャストで送信する。ARPリクエストを受信したES1は、ARP_BtoUテーブル102_ES1に、IP2に対するMACアドレスが登録されていないため、ARPリクエストの通信方式をユニキャストに変換せずにブロードキャストとしてVM2、VM3、VM4に送信する。また、ES1は、ARP_BtoUテーブル102_ES1に“IP1”、“MAC1”のレコードを追加する。また、ARPリクエストを受信したES2は、ARP_BtoUテーブル102_ES2に“IP1”、“MAC1”のレコードを追加する。
次に、処理(2)として、VM2は、MAC2を設定したARPリプライを送信する。ARPリプライを受信したES2は、ARP_BtoUテーブル102_ES2に“IP2”、“MAC2”のレコードを追加する。また、ES2は、ARPリプライをVM1に送信する。ES1は、受信したAPRリプライから、ARP_BtoUテーブル102_ES1に“IP2”、“MAC2”のレコードを追加する。
図24は、ARP_BtoUテーブル使用の一例を示す説明図(その2)である。図24で示す通信システム100は、図23にて、ARPリクエストとARPリプライを送信した状態である。
この状態にて、処理(3)にて、VM3が、IP1に対応するMACアドレスを尋ねるARPリクエストをブロードキャストで送信する。ARPリクエストを受信したES2は、ARP_BtoUテーブル102_ES2に、IP1に対するMAC1が登録されているため、通信方式をブロードキャストからMAC1に対するユニキャストに変換して、VM1に送信する。また、ES2は、APRリクエストから、ARP_BtoUテーブル102_ES2に“IP3”、“MAC3”のレコードを追加する。ARPリクエストを受信したES1は、ARP_BtoUテーブル102_ES1に“IP3”、“MAC3”のレコードを追加する。また、ES1は、ARPリクエストをVM1に送信する。処理(4)にて、VM1は、ARPリプライをVM3に対して送信する。
同様に、処理(5)にて、VM4が、IP1に対応するMACアドレスを尋ねるARPリクエストをブロードキャストで送信する。ARPリクエストを受信したES2は、ARP_BtoUテーブル102_ES2に、IP1に対するMAC1が登録されているため、通信方式をブロードキャストからMAC1に対するユニキャストに変換して、VM1に送信する。また、ES2は、ARPリクエストから、ARP_BtoUテーブル102_ES2に“IP4”、“MAC4”のレコードを追加する。ARPリクエストを受信したES1は、ARP_BtoUテーブル102_ES1に“IP4”、“MAC4”のレコードを追加する。また、ES1は、ARPリクエストをVM1に送信する。処理(6)にて、VM1は、ARPリプライをVM4に対して送信する。
このように、図23、図24では、処理(1)〜(3)、(5)における4つのARPフレームによって、VM1〜VM4に関する情報がBtoUテーブルに含まれたことになる。
図25は、DHCP_BtoUテーブルの記憶内容の一例を示す説明図である。DHCP_BtoUテーブル401は、DHCPサーバに関する情報を記憶する。DHCPサーバに関する情報として、図25で示すDHCP_BtoUテーブル401は、DHCPのMACアドレスを記憶している。また、DHCP_BtoUテーブル401は、各DHCPサーバのLNIDを格納するフィールドを有していてもよい。たとえば、ES1は、DHCP_BtoUテーブル401_ES1を有し、DHCP_BtoUテーブル401_ES1は、DHCPサーバのMACアドレスとして、“MAC1”と“MAC2”を記憶している。
以下、DHCP_BtoUテーブル401を用いて、ES1はARPブロードキャスト通信を抑制する。以下、図26〜図29では、DHCPDISCOVERを受信した場合の動作を説明する。また、図30〜図32では、ネットワーク内にある複数のDHCPサーバのうち、一つのDHCPサーバが停止中にDHCPDISCOVERを受信した場合の動作を説明する。
図26は、DHCPサーバ登録前にDHCPDISCOVERを受信した状態を示す説明図(その1)である。図26で示す通信システム100では、ES1上のVM1は、MACアドレスとしてMAC1、IPアドレスとしてIP1が割り当てられている。また、ES2上のVM2、VM3、VM4は、MACアドレスとして、それぞれMAC2、MAC3、MAC4が割り当てられており、IPアドレスとして、それぞれ、IP2、IP3、IP4が割り当てられている。さらに、VM2、VM3では、それぞれ、DHCPサーバ2、DHCPサーバ3が起動している。また、DHCP_BtoUテーブル401_ES1とDHCP_BtoUテーブル401_ES2は何も登録されていない。
この状態で、VM1のDHCPクライアントがネットワーク内からDHCPサーバを検出するDHCPDISCOVERをブロードキャストで送信する。DHCPDISCOVERを受信したES1は、DHCP_BtoUテーブル401_ES1に何も登録されていないため、DHCPDISCOVERの通信方式をユニキャストに変換せずにブロードキャストのままVM2〜VM4に送信する。
図27は、DHCPサーバ登録前にDHCPDISCOVERを受信した状態を示す説明図(その2)である。図27で示す通信システム100では、図26にて送信されたDHCPDISCOVERに対して、DHCPサーバ2とDHCPサーバ3が、対応するDHCPOFFERを送信した状態である。
この状態で、ES2は、VM2のDHCPサーバ2がDHCPDISCOVERに対するDHCPOFFERを受信する。ES2は、DHCP_BtoUテーブル401_ES2に何も登録されていないため、DHCPOFFERの通信方式をユニキャストに変換せずにブロードキャストのままVM1、VM3、VM4に送信する。また、ES2は、VM2のMACアドレスをDHCP_BtoUテーブル401_ES2に追加する。また、ES2は、VM3からのDHCPOFFERも同様に処理する。
図28は、DHCPサーバ登録後にDHCPDISCOVERを受信した状態を示す説明図(その1)である。図28で示す通信システム100では、図27にてDHCPサーバ2とDHCPサーバ3がDHCPOFFERを送信し、DHCP_BtoUテーブル401_ES1、DHCP_BtoUテーブル401_ES2にDHCPサーバの情報が登録された状態である。
この状態で、VM1のDHCPクライアントが、再びDHCPDISCOVERをブロードキャストで送信する。DHCPDISCOVERを受信したES1は、DHCP_BtoUテーブル401_ES1にDHCPサーバの情報が登録されているため、DHCPDISCOVERの通信方式をブロードキャストからユニキャストに変換してVM2、VM3に送信する。具体的に、ES1は、宛先MACアドレスをブロードキャストアドレスからMAC2に変換したDHCPパケットをVM2に送信し、宛先MACアドレスをブロードキャストアドレスからMAC3に変換したDHCPパケットをVM3に送信する。
図29は、DHCPサーバ登録後にDHCPDISCOVERを受信した状態を示す説明図(その2)である。図29で示す通信システム100では、図28にて送信されたDHCPDISCOVERに対して、VM2、VM3がDHCPOFFERを送信した状態である。
この状態で、ES2は、VM2のDHCPサーバ2がDHCPDISCOVERに対するDHCPOFFERを受信する。ES2は、DHCP_BtoUテーブル401_ES2にDHCPサーバの情報が登録されているため、DHCPOFFERの通信方式をブロードキャストからユニキャストに変換して、DHCPサーバとDHCPDISCOVERの送信元に送信する。
具体的に、ES1は、宛先MACアドレスをブロードキャストアドレスからMAC3に変換したDHCPパケットをVM3に送信する。また、ES1は、DHCPOFFERのクライアントハードウェアアドレスに格納されたDHCPDISCOVERの送信元となるMAC1を取得し、宛先MACアドレスをブロードキャストアドレスからMAC1に変換したDHCPパケットをVM1に送信する。また、ES2は、VM3からのDHCPOFFERも同様に処理する。
図30は、DHCPサーバの停止中にDHCPDISCOVERを受信した状態を示す説明図(その1)である。図30で示す通信システム100では、図29で示した状態から、DHCPサーバ3の動作が停止した状態である。図30の状態では、DHCP_BtoUテーブル401_ES1は、DHCPサーバのMACアドレスとして、MAC2とMAC3を記憶している。
図31は、DHCPサーバの停止中にDHCPDISCOVERを受信した状態を示す説明図(その2)である。図31で示す通信システム100では、図30の状態から、VM1がDHCPDISCOVERをブロードキャストで送信する状態である。
この状態で、ES1は、DHCP_BtoUテーブル401_ES1にDHCPサーバの情報が登録されているため、DHCPDISCOVERの通信方式をブロードキャストからユニキャストに変換してVM2、VM3に送信する。
図32は、DHCPサーバの停止中にDHCPDISCOVERを受信した状態を示す説明図(その3)である。図32で示す通信システム100では、図28にて送信されたDHCPDISCOVERに対して、VM2がDHCPOFFERを送信した状態である。
この状態で、ES1は、VM3からのDHCPOFFERが一定時間に到達しない場合、DHCPサーバが停止したと判断し、DHCP_BtoUテーブル401_ES1内の該当する“MAC3”のレコードを削除する。このように、ES1は、DHCPサーバの停止に合わせて、DHCP_BtoUテーブル401_ES1のデータを更新することができる。
図33は、ブロードキャストデータの破棄例を示す説明図である。たとえば、図6におけるVM1が、定期的にIPアドレスAに対するARPリクエストを送信している場合を想定する。このとき、ES1は、一定周期の間に、閾値より多い数分のIPアドレスに対するブロードキャストを破棄する。図25の例では、一定周期を100[ミリ秒]、閾値を3[回]として、宛先IPアドレスがAであるブロードキャストデータのうち、3個目までのデータを受付許可し、4回目からのデータの破棄を行っている。なお、ブロードキャストデータとして当てはまるのは、前述したARPフレーム、DHCPパケットである。また、ブロードキャストデータは、ARP、DHCP以外の他のプロトコルによって規定された、ブロードキャストを行うデータであってもよい。
また、図33の例では、ES1は、破棄するデータの数え上げを宛先IPアドレスごとに行っているが、送信元IPアドレスごと、または送信元IPアドレスと宛先IPアドレスの組ごとに行ってもよい。また、ES1は、IPアドレスでなく、MACアドレスに基づいて、破棄するデータの数え上げを行ってもよい。これにより、本実施の形態にかかるESは、異なるアドレスに対して初めて送信されるブロードキャストを破棄せずに済む。
続けて、図5〜図33で示した動作を行うフローチャートを説明する。図34〜図39では、ARPフレームに関するフローチャートを示し、図40〜図44では、DHCPパケットに関するフローチャートを示す。また、図34〜図44にて各フローチャートを実行する実行主体は各ESであるが、図34〜図44にて示すフローチャートでは、ES1を実行主体として説明を行う。
図34は、ARPフレーム処理の一例を示すフローチャートである。ES1は、ARPフレームを受信したか否かを判断する(ステップS3401)。ARPフレームを受信した場合(ステップS3401:Yes)、ES1は、一定期間に閾値以上、同一宛先アドレスへのARPフレームを受信したか否かを判断する(ステップS3402)。条件に当てはまらない場合(ステップS3402:No)、ES1は、ARPフレーム受信処理を実行する(ステップS3403)。ARPフレーム受信処理の詳細は、図36で後述する。
ARPフレーム受信処理の終了後、ES1は、ARPフレーム送信処理を実行する(ステップS3404)。ARPフレーム送信処理は、受信したARPフレームを、ARPフレーム受信処理内によって変換された宛先に送信する処理である。なお、ARPフレーム送信処理によって送信された後に応答がなかったフレームについての処理については、図35にて示す。
ARPフレーム送信処理の終了後、ES1は、ステップS3401の処理に移行する。また、条件に当てはまる場合(ステップS3402:Yes)、ES1は、受信したARPフレームを破棄して、ステップS3401の処理に移行する。また、ARPフレームを受信していない場合(ステップS3401:No)、ES1は、一定時間経過後、ステップS3401の処理を再び実行する。
図35は、ARP送信タイムアウト処理の一例を示すフローチャートである。ES1は、ARPリクエストに対応するARPリプライが到達しない状態が一定時間経過したか否かを判断する(ステップS3501)。なお、ステップS3501の処理における一定時間として、たとえば、ARPの仕様にて定められた再送時間等に設定してもよいし、仕様にて定められた再送時間より短くしてもよい。
一定時間経過した場合(ステップS3501:Yes)、ES1は、ARP_BtoUテーブル102_ES1のうち、ARPリプライが到達していないMACアドレスのレコードを削除する(ステップS3502)。なお、ここで削除対象となるレコードは、後述するステップS3904の処理で送信する擬似ARPリクエストに対するレコードも含む。削除後、ES1は、ARPフレーム再送処理を行い(ステップS3503)、ステップS3401の処理に移行する。
なお、ARPフレーム再送処理は、通信方式の変換を行わず、ブロードキャストのまま送信する。また、ES1は、ステップS3503の処理を行わなくてもよい。ステップS3503の処理を行わない場合、ARPリクエストの送信元が、ARPの仕様に従ってARPリクエストを再送するためである。また、一定時間経過していない場合(ステップS3501:No)、ES1は、ステップS3501の処理に移行する。
図36は、ARPフレーム受信処理の一例を示すフローチャートである。ES1は、受信したARPフレームがARPリクエストか否かを判断する(ステップS3601)。ARPリクエストである場合(ステップS3601:Yes)、ES1は、ARPリクエストによるテーブル更新処理を実行する(ステップS3602)。なお、ARPリクエストによるテーブル更新処理の詳細は、図37にて後述する。ARPリクエストによるテーブル更新処理の処理実行後、ES1は、ARPリクエスト通信方式変換処理を実行する(ステップS3603)。なお、ARPリクエスト通信方式変換処理の詳細は、図38にて後述する。ARPフレーム通信方式変換処理の処理終了後、ES1は、ARPフレーム受信処理を終了し、ARPフレーム送信処理を実行する。
ARPリクエストでない場合(ステップS3601:No)、ES1は、ARPフレームがARPリプライか否かを判断する(ステップS3604)。ARPリプライである場合(ステップS3604:Yes)、ES1は、ARPリプライによるテーブル更新処理を実行する(ステップS3605)。ARPリプライによるテーブル更新処理を実行後、またはARPリプライでない場合(ステップS3604:No)、ES1は、ARPフレーム受信処理を終了し、ARPフレーム送信処理を実行する。
図37は、ARPリクエストによるテーブル更新処理の一例を示すフローチャートである。ES1は、送信元プロトコルアドレスがARP_BtoUテーブル102_ES1のIPフィールドに登録されているか否かを判断する(ステップS3701)。登録されている場合(ステップS3701:Yes)、ES1は、さらに、送信元ハードウェアアドレスがARP_BtoUテーブル102_ES1のMACフィールドに登録されているか否かを判断する(ステップS3702)。登録されている場合(ステップS3702:Yes)、ES1は、テーブル更新処理を終了し、ARPリクエスト通信方式変換処理を実行する。
送信元ハードウェアアドレスが登録されていない場合(ステップS3702:No)、ES1は、ARP_BtoUテーブル102_ES1のうち、IPフィールドが送信元プロトコルアドレスに一致するレコードのMACフィールドを送信元ハードウェアアドレスで更新する(ステップS3703)。更新後、ES1は、テーブル更新処理を終了し、ARPリクエスト通信方式変換処理を実行する。
送信元プロトコルアドレスが登録されていない場合(ステップS3701:No)、ES1は、送信元ハードウェアアドレスがARP_BtoUテーブル102_ES1に登録されているか否かを判断する(ステップS3704)。登録されている場合(ステップS3704:Yes)、ES1は、ARP_BtoUテーブル102_ES1のうち、MACフィールドが送信元ハードウェアアドレスに一致するレコードのIPフィールドを送信元プロトコルアドレスで更新する(ステップS3705)。更新後、ES1は、宛先ハードウェアアドレスと宛先プロトコルアドレスとの組を1レコードとしてARP_BtoUテーブル102_ES1に追加する(ステップS3706)。なお、ARPリクエストの宛先ハードウェアアドレスはブロードキャストアドレスであるため、ARP_BtoUテーブル102_ES1には未特定として登録される。
さらに、送信元ハードウェアアドレスが登録されているにも関わらず、送信元プロトコルアドレスが登録されていないことから、ネットワーク内のIPアドレスの割当が変更されている可能性がある。よって、ES1は、ARP_BtoUテーブル102_ES1のうち、IPフィールドが宛先プロトコルアドレスに一致するMACアドレスに対して、ARPリクエストをユニキャストで送信する(ステップS3707)。送信後、ES1は、テーブル更新処理を終了し、ARPリクエスト通信方式変換処理を実行する。
送信元ハードウェアアドレスが登録されていない場合(ステップS3704:No)、ES1は、送信元ハードウェアアドレスと送信元プロトコルアドレスの組を1レコードとしてARP_BtoUテーブル102_ES1に追加する(ステップS3708)。さらに、ES1は、宛先ハードウェアアドレスと宛先プロトコルアドレスとの組を1レコードとしてARP_BtoUテーブル102_ES1に追加する(ステップS3709)。追加後、ES1は、テーブル更新処理を終了し、ARPリクエスト通信方式変換処理を実行する。
図38は、ARPリクエスト通信方式変換処理の一例を示すフローチャートである。ES1は、ARPリクエストの通信方式がブロードキャストか否かを判断する(ステップS3801)。ブロードキャストである場合(ステップS3801:Yes)、ES1は、続けて、ARP_BtoUテーブル102_ES1のうち、IPフィールドが宛先プロトコルアドレスと一致するレコードが存在するか否かを判断する(ステップS3802)。レコードが存在する場合(ステップS3802:Yes)、ES1は、さらに、存在したレコードに、MACアドレスが登録されていたか否かを判断する(ステップS3803)。なお、ステップS3803の処理にて、MACアドレスが登録されている場合とは、“未特定”ではない、ユニキャストアドレスが登録されている場合である。
登録されていた場合(ステップS3803:Yes)、ES1は、ARP_BtoUテーブル102_ES1に登録されているMACアドレスを抽出する(ステップS3804)。続けて、ES1は、通信方式をブロードキャストから、抽出したMACアドレスへのユニキャストに変換し(ステップS3805)、ARPフレーム送信処理によってARPリクエストを送信する。
ブロードキャストでない場合(ステップS3801:No)、ES1は、通信方式をユニキャストのまま、ARPフレーム送信処理によってARPリクエストを送信する。レコードが存在しない場合(ステップS3802:No)、またはMACアドレスが登録されていない場合(ステップS3803:No)、ES1は、通信方式をブロードキャストのまま、ARPフレーム送信処理によってARPリクエストを送信する。
図39は、ARPリプライによるテーブル更新処理の一例を示すフローチャートである。ES1は、ARPリプライの通信方式がブロードキャストか否かを判断する(ステップS3901)。ブロードキャストでない場合(ステップS3901:No)、ES1は、IPフィールドが送信元プロトコルアドレスに一致するレコードのMACフィールドを送信元ハードウェアアドレスで更新する(ステップS3902)。
次に、ES1は、送信元MACアドレスに一致するレコードが複数存在するか否かを判断する(ステップS3903)。一致するレコードが複数ある場合(ステップS3903:Yes)、ES1は、存在したレコードのIPフィールドに対応するMACアドレス宛てに、擬似ARPリクエストを送信し(ステップS3904)、ARPフレーム送信処理によってARPリプライを送信する。
また、ブロードキャストである場合(ステップS3901:Yes)、または一致するレコードが複数でない場合(ステップS3903:No)、ES1は、ARPフレーム送信処理によってARPリプライを送信する。
図40は、DHCPパケット処理の一例を示すフローチャートである。ES1は、DHCPパケットを受信したか否かを判断する(ステップS4001)。DHCPパケットを受信した場合(ステップS4001:Yes)、ES1は、一定期間に閾値以上、同一MACアドレスからのDHCPパケットを受信したか否かを判断する(ステップS4002)。条件に当てはまらない場合(ステップS4002:No)、ES1は、DHCPパケット受信処理を実行する(ステップS4003)。DHCPパケット受信処理の詳細は、図42で後述する。
DHCPパケット受信処理の終了後、ES1は、DHCPパケット送信処理を実行する(ステップS4004)。DHCPパケット送信処理は、受信したDHCPパケットを、DHCPパケット受信処理内によって変換された宛先に送信する処理である。なお、DHCPパケット送信処理によって送信された後に応答がなかったパケットについての処理については、図41にて示す。
DHCPパケット送信処理の終了後、ES1は、ステップS4001の処理に移行する。また、条件に当てはまらない場合(ステップS4002:Yes)、ES1は、受信したDHCPパケットを破棄し、ステップS4001の処理に移行する。また、DHCPパケットを受信していない場合(ステップS4001:No)、ES1は、一定時間経過後、ステップS4001の処理に移行する。
図41は、DHCP送信タイムアウト処理の一例を示すフローチャートである。ES1は、ユニキャストで送信したDHCPDISCOVERに対応するDHCPOFFERが到達しない状態が一定時間経過したか否かを判断する(ステップS4101)。なお、ステップS4101の処理における一定時間として、たとえば、DHCPの仕様にて定められた再送時間等に設定してもよいし、仕様にて定められた再送時間より短くしてもよい。
一定時間経過した場合(ステップS4101:Yes)、ES1は、DHCP_BtoUテーブル401_ES1のうち、DHCPOFFERが到達していないサーバに関するレコードを削除する(ステップS4102)。
ES1は、DHCPOFFERが一つも到達していないか否かを判断する(ステップS4103)。なお、DHCPOFFERの到達数を判断する理由として、DHCP_BtoUテーブル401に複数のDHCPサーバが登録されていれば、ES1は、ユニキャストのDHCPDISCOVERを複数生成して送信することになる。複数のDHCPDISCOVERに対応するDHCPOFFERの一つ以上がES1に到達していれば、DHCPDISCOVERの送信元は、処理を続行することができるため、ES1は、DHCPOFFERの到達数を判断する。
一つも到達していない場合(ステップS4103:Yes)、ES1は、DHCPパケット再送処理を行い(ステップS4104)、ステップS4001の処理に移行する。なお、DHCPパケット再送処理は、通信方式の変換を行わず、ブロードキャストのまま送信する。また、ES1は、ステップS4103:Yesとなった場合に、ステップS4104の処理を行わなくてもよい。ステップS4104の処理を行わない場合、DHCPDISCOVERの送信元が、DHCPDISCOVERを再送するためである。
また、一定時間経過していない場合(ステップS4101:No)、または、DHCPOFFERが到達している場合(ステップS4103:No)、ES1は、ステップS4001の処理に移行する。
図42は、DHCPパケット受信処理の一例を示すフローチャートである。ES1は、受信したDHCPパケットがDHCPOFFERか否かを判断する(ステップS4201)。DHCPOFFERである場合(ステップS4201:Yes)、ES1は、DHCPOFFER通信方式変換処理を実行する(ステップS4202)。なお、DHCPOFFER通信方式変換処理の詳細は、図43にて後述する。DHCPパケット通信方式変換処理の処理終了後、ES1は、DHCPパケット受信処理を終了し、DHCPパケット送信処理を実行する。
DHCPOFFERでない場合(ステップS4201:No)、ES1は、DHCPパケットがDHCPDISCOVERまたはDHCPREQUESTまたはDHCPACKか否かを判断する(ステップS4203)。条件に当てはまる場合(ステップS4203:Yes)、ES1は、DHCP通信方式変換処理を実行する(ステップS4204)。なお、DHCP通信方式変換処理の詳細は、図44にて後述する。DHCPテーブル更新処理を実行後、または条件に当てはまらない場合(ステップS4203:No)、ES1は、DHCPパケット受信処理を終了し、DHCPパケット送信処理を実行する。
図43は、DHCPOFFER通信方式変換処理の一例を示すフローチャートである。ES1は、DHCPOFFERに対応するDHCPDISCOVERを受信していたか否かを判断する(ステップS4301)。DHCPOFFERに対応するDHCPDISCOVERを受信していたかを判断する方法として、たとえば、ES1は、受信したDHCPDISCOVERを記憶しておく。続けて、ES1は、DHCPDISCOVERのトランザクションIDが同一のDHCPOFFERを受信した場合に、DHCPOFFERに対応するDHCPDISCOVERを受信していたと判断する。
受信していた場合(ステップS4301:Yes)、ES1は、DHCP_BtoUテーブル401_ES1を初期化する(ステップS4302)。初期化後、または、受信していない場合(ステップS4301:No)、ES1は、DHCPOFFERの送信元となるDHCPサーバがDHCP_BtoUテーブル401_ES1に登録されているか否かを判断する(ステップS4303)。登録されていない場合(ステップS4303:No)、ES1は、送信元となるDHCPサーバに関する情報をDHCP_BtoUテーブル401_ES1に追加する(ステップS4304)。
追加後、または登録されている場合(ステップS4303:Yes)、ES1は、DHCP_BtoUテーブル401_ES1から、他のDHCPサーバのMACアドレスと、DHCPOFFERからDHCPDISCOVERの送信元のMACアドレスを抽出する(ステップS4305)。次に、ES1は、通信方式がブロードキャストのDHCOFFERから、宛先がDHCPサーバとなるDHCPOFFERと、宛先がDHCPDISCOVERの送信元となるDHCPOFFERを生成する(ステップS4306)。生成後、ES1は、DHCPユニキャストに変換されたDHCPOFFERを、DHCPパケット送信処理を実行することで送信する。
図44は、DHCP通信方式変換処理の一例を示すフローチャートである。DHCP通信方式変換処理は、DHCPDISCOVER、DHCPREQUEST、DHCPACKに対する通信方式変換処理である。ES1は、DHCP_BtoUテーブル401_ES1が空か否かを判断する(ステップS4401)。空である場合(ステップS4401:Yes)、ES1は、続けて、DHCPDISCOVERを受信したか否かを判断する(ステップS4402)。DHCPREQUEST、またはDHCPACKを受信した場合(ステップS4402:No)、ES1は、エラーを出力し(ステップS4403)、DHCP通信方式変換処理を終了する。
DHCPDISCOVERを受信した場合(ステップS4402:Yes)、ES1は、DHCP通信方式変換処理を終了し、通信方式を変換せずにDHCPパケット送信処理を実行する。
DHCP_BtoUテーブル401_ES1が空でない場合(ステップS4401:No)、ES1は、DHCPACKを受信したか否かを判断する(ステップS4404)。DHCPDISCOVERまたはDHCPREQUESTを受信した場合(ステップS4404:No)、ES1は、DHCP_BtoUテーブル401_ES1に登録されている他のDHCPサーバのMACアドレスを抽出する(ステップS4405)。次に、ES1は、通信方式をブロードキャストから、DHCPサーバへのユニキャストに変換する(ステップS4406)。変換後、ES1は、DHCP通信方式変換処理を終了し、通信方式をユニキャストに変換したDHCPパケットに対して、DHCPパケット送信処理を実行する。
DHCPACKを受信した場合(ステップS4404:Yes)、ES1は、DHCP_BtoUテーブル401_ES1から、他のDHCPサーバのMACアドレスと、DHCPACKからDHCPDISCOVERの送信元のMACアドレスを抽出する(ステップS4407)。次に、ES1は、通信方式がブロードキャストのDHCPACKから、宛先がDHCPサーバとなるDHCPACKと、宛先がDHCPDISCOVERの送信元となるDHCPACKを生成する(ステップS4408)。生成後、ES1は、DHCP通信方式変換処理を終了し、生成したDHCPパケットに対して、DHCPパケット送信処理を実行する。
以上説明したように、通信方法、通信装置、および通信プログラムによれば、ARPリクエストを行うブロードキャストを、BtoUテーブルに記憶されたMACアドレスへのユニキャストに変換して送信し、ARPリプライで得たMACアドレスを更新する。これにより、ブロードキャストを抑制し、また、ネットワーク変更に対応できるため、無効なデータの送信を行わないことから、ネットワークの負荷を抑制することができる。また、DHCPに対しても、通信装置は、DHCPサーバへ送信するDHCPDISCOVERのブロードキャスト送信を、記憶されたMACアドレスへのユニキャストに変換して送信し、DHCPOFFERにてMACアドレスを更新する。
また、ARPキャッシュテーブルは、aging_timeにてネットワークの変更に対応している。しかし、aging_timeが長い場合、ブロードキャストの抑制度合いが大きくなるが、ネットワークの変更に伴う対応が遅れてしまっていた。また、aging_timeが短い場合、ネットワークの変更に伴う対応が早くなるが、ブロードキャストの抑制度合いが小さくなってしまっていた。本実施の形態にかかる通信装置は、BtoUテーブルのデータを更新することで、ネットワークの変更に伴う対応が行え、かつ、一定時間によってレコードが削除するものではないため、ブロードキャストの抑制度合いを大きくすることができる。
また、通信装置は、変換後のARPリクエスト、DHCPDISCOVERに対するARPリプライ、DHCPOFFERを受信しなかった場合、BtoUテーブルの対応するレコードを削除してもよい。これにより、通信装置は、ネットワークの変更にも追随することができ、無効な変換先に対するデータを送信せずに済む。また、BtoUテーブルのデータが減少するため変換にかかる検索を高速に行える。
また、通信装置は、ARPリクエストに対応するARPリプライのMACアドレスでBtoUテーブルを更新した後、同一のMACアドレスに対して複数のIPアドレスが存在する場合、複数のIPアドレスに対して擬似ARPリクエストを送信してもよい。続けて、通信装置は、擬似ARPリクエストに対するARPリプライを受信した場合、BtoUテーブルを更新してもよい。また、擬似ARPリクエストは、少なくともARPリクエストのIPアドレス以外の残余のIPアドレスに対して送信する。これにより、通信装置は、IP aliasingに伴うネットワークの変更に対して、BtoUテーブルの記憶内容を追随させることができる。
また、通信装置は、擬似ARPリクエストに対応するARPリプライを受信しなかった場合、BtoUテーブルの対応するレコードを削除してもよい。これにより、DHCP等によるIPアドレスの割当変更に伴うネットワークの変更に対して、BtoUテーブルの記憶内容を追随させることができる。
また、通信装置は、DHCPDISCOVERに対するDHCPOFFERに対して、BtoUテーブルに記憶されたMACアドレスへのユニキャストおよびDHCPDISCOVERの送信元へのユニキャストに変換して送信してもよい。これにより、通信装置は、DHCPOFFERに対するブロードキャストを抑制し、ネットワークの負荷を抑制することができる。
また、通信装置は、一定周期内でブロードキャストを送信する個数を、プロトコルごと、送信、受信アドレスごと、に設定していてもよい。これにより、通信装置は、無効なブロードキャストデータを抑制でき、または、悪意のあるユーザからの多数のブロードキャストを抑制することができる。また、通信装置は、アドレスごとにブロードキャストをカウントすることになるため、異なるアドレスからに対するブロードキャストを破棄しないで済む。
(実施の形態2の概要)
実施の形態1に示す通信システム100では、DHCP_BtoUテーブルにレコードが存在する場合、ESは、DHCPDISCOVERをユニキャストに変換する。したがって、DHCP_BtoUテーブルにレコードが追加された後、DHCPサーバが新たに稼働した場合、新たに稼働したDHCPサーバがDHCP_BtoUテーブルに追加されなかった。実施の形態2に示す通信システム100では、DHCP_BtoUテーブルにレコードが追加された後に、新たに稼働したDHCPサーバをDHCP_BtoUテーブルに追加する方法について説明を行う。
なお、実施の形態2にかかるESのハードウェアは、実施の形態1にかかるESと等しいため、説明を省略する。また、実施の形態2にかかるESの機能について、図45にて説明する。
図45は、実施の形態2にかかる通信システムの機能例を示すブロック図である。通信システム100は、記憶部420と、送信部4501と、追加部4502と、送信部4503と、を含む。この制御部となる機能(送信部4501〜送信部4503)は、記憶装置に記憶されたプログラムをCPU301が実行することにより、その機能を実現する。記憶装置とは、具体的には、たとえば、ES2のROM、RAM、磁気ディスク、光ディスクなどである。または、ES2のI/Fを経由して他のCPUが実行することにより、その機能を実現してもよい。また、実施の形態2にかかる記憶部420は、実施の形態1にかかる記憶部420と同一であるため、説明を省略する。また、ES2内のVM2は、DHCPサーバを新たに起動した状態である。
送信部4501は、装置群のうち、割当可能なレイヤ3アドレスを保持する装置に対して、レイヤ3アドレスの擬似取得要求を送信する機能を有する。たとえば、送信部4501は、通信システム100内の装置群のうち、DHCPサーバに対して、擬似DHCPDISCOVERを送信する。なお、送信対象は、新たに検出したDHCPサーバに送信してもよいし、ES1の管理下のDHCPサーバに送信してもよい。
追加部4502は、擬似取得要求に対応する第4の応答を受信した場合、記憶部420に第4の応答に含まれる割当可能なレイヤ3アドレスを保持する装置のレイヤ2アドレスを追加する機能を有する。たとえば、追加部4502は、擬似DHCPDISCOVERに対応するDHCPOFFERを受信した場合、DHCP_BtoUテーブル401_ES2に、DHCPOFFERの送信元となるVM3のMACアドレスを追加する。なお、追加部4502は、DHCP_BtoUテーブル401_ES2に、DHCPサーバのMACアドレスが既に追加されている場合は追加しなくてよい。
送信部4503は、記憶部420に検出した装置のレイヤ2アドレスが追加された場合、第4の応答を装置群のうち割当可能なレイヤ3アドレスを保持する装置以外の他の装置に送信する機能を有する。たとえば、送信部4503は、DHCP_BtoUテーブル401_ES2にDHCPサーバのMACアドレスを追加した場合、DHCPOFFERをVM1に送信する。
図46は、DHCPサーバが追加された状態を示す説明図(その1)である。図46で示す通信システム100では、ES1上のVM1は、MACアドレスとしてMAC1、IPアドレスとしてIP1が割り当てられている。また、ES2上のVM2、VM3、VM4は、MACアドレスとして、それぞれMAC2、MAC3、MAC4が割り当てられており、IPアドレスとして、それぞれ、IP2、IP3、IP4が割り当てられている。
また、さらに、VM2では、DHCPサーバ2が起動しており、DHCP_BtoUテーブル401_ES1とDHCP_BtoUテーブル401_ES2には、DHCPサーバ2が起動しているVM2のMACアドレスであるMAC2が登録されている。この状態で、新たなDHCPサーバとして、VM3にて、DHCPサーバ3が起動した例について、図47〜図49で説明を行う。
図47は、DHCPサーバが追加された状態を示す説明図(その2)である。図47で示す通信システム100では、ES2がDHCPサーバ3を検出した状態である。このとき、新たなDHCPサーバ3を検出したES2は、管理下にあるVM2〜VM4に対し、擬似DHCPDISCOVERを送信する。なお、擬似DHCPDISCOVERは、VM上のDHCPクライアントが送信するDHCPDISCOVERと違いはない。たとえば、擬似DHCPDISCOVERであると判断できるようにするため、ES2は、ES2は、DHCPDISCOVERのクライアントハードウェアアドレスに、ES2の物理MACアドレスを設定してもよいし、または特別な値を設定してもよい。
図48は、DHCPサーバが追加された状態を示す説明図(その3)である。図48で示す通信システム100では、VM2〜VM4が擬似DHCPDISCOVERを受信した状態である。この状態で、VM2、VM3は、DHCPサーバが動作しているため、擬似DHCPDISCOVERに対応するDHCPOFFERをブロードキャストで送信する。
図49は、DHCPサーバが追加された状態を示す説明図(その4)である。図49で示す通信システム100では、VM2、VM3が、DHCPOFFERをブロードキャストで送信した状態である。
この状態で、ES2は、VM2からのDHCPOFFERと、VM3からのDHCPOFFERを受信する。VM2からのDHCPOFFERについては、DHCP_BtoUテーブル401_ES2にVM2の情報が登録されているため、ES2は、何も行わない。VM3からのDHCPOFFERについては、DHCP_BtoUテーブル401_ES2にVM3の情報が登録されていないため、ES2は、他のESに、DHCPOFFERを送信する。これにより、通信システム100は、新たに稼働したDHCPサーバをDHCP_BtoUテーブルに追加することができる。
続けて、図46〜図49で示した動作を行うフローチャートを説明する。なお、実施の形態2にかかるDHCPパケット処理、DHCP送信タイムアウト処理、DHCPパケット受信処理、DHCP通信方式変換処理の処理については、それぞれ図40〜図42、図44にて説明した各処理と等しいため、説明を省略する。
図50は、擬似DHCPDISCOVER送信処理の一例を示すフローチャートである。なお、実施の形態2にかかるDHCPパケット処理は、実施の形態2にかかるES1にて定期的に起動される処理である。
ES1は、管理下のVMにて、新たなDHCPサーバが起動したか否かを判断する(ステップS5001)。新たなDHCPサーバが起動していた場合(ステップS5001:Yes)、ES1は、管理下のVMに、擬似DHCPDISCOVERをブロードキャストで送信する(ステップS5002)。擬似DHCPDISCOVERを送信した場合、または新たなDHCPサーバが起動していない場合(ステップS5001:No)、ES1は、ステップS5001の処理に移行する。
図51は、実施の形態2にかかるDHCPOFFER受信処理を示すフローチャートである。なお、実施の形態2にかかるDHCPOFFER受信処理について、ステップS5106〜ステップS5111は、ステップS4301〜ステップS4306と等しいため、説明を省略する。
ES1は、DHCPOFFERに対応するDHCPDISCOVERが擬似DHCPDISCOVERか否かを判断する(ステップS5101)。擬似DHCPDISCOVERでない場合(ステップS5101:No)、ES1は、ステップS5106の処理に移行する。擬似DHCPDISCOVERである場合(ステップS5101:Yes)、ES1は、DHCPOFFERの送信元となるDHCPサーバがDHCP_BtoUテーブル401_ES1に登録されているか否かを判断する(ステップS5102)。登録されている場合(ステップS5102:Yes)、ES1は、DHCPOFFERを破棄し(ステップS5103)、DHCPOFFER受信処理を終了する。
登録されていない場合(ステップS5102:No)、ES1は、送信元となるDHCPサーバに関する情報をDHCP_BtoUテーブル401_ES1に追加する(ステップS5104)。続けて、ES1は、他のESにDHCPOFFERを送信し(ステップS5105)、DHCPOFFER受信処理を終了する。
以上説明したように、通信方法、通信装置、および通信プログラムによれば、検出したDHCPサーバに対して、擬似DHCPDISCOVERを送信し、受信したDHCPOFFERを追加して、他の装置にDHCPOFFERを送信してもよい。これにより、通信装置は、BtoUテーブルに既にDHCPサーバが登録されている場合に、新たなDHCPサーバが追加されても、ユニキャストの変換先に新たなDHCPサーバを加えることができる。したがって、通信装置は、新たなDHCPサーバによるサービスを能動的に他の装置に通知することができる。
なお、実施の形態1、2で説明した通信方法では、エンドホストサーバ内の仮想環境について説明を行ったが、エンドホストサーバやネットワークスイッチにも適用することができる。また、対応するプロトコルとしては、ARP、DHCP以外にも、CIFS(Common Internet File System)にも適用することができる。
なお、実施の形態1、2で説明した通信方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本通信プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本通信プログラムは、インターネット等のネットワークを介して配布してもよい。