JP2016134700A - 管理サーバ、通信システム、および、経路管理方法 - Google Patents

管理サーバ、通信システム、および、経路管理方法 Download PDF

Info

Publication number
JP2016134700A
JP2016134700A JP2015007281A JP2015007281A JP2016134700A JP 2016134700 A JP2016134700 A JP 2016134700A JP 2015007281 A JP2015007281 A JP 2015007281A JP 2015007281 A JP2015007281 A JP 2015007281A JP 2016134700 A JP2016134700 A JP 2016134700A
Authority
JP
Japan
Prior art keywords
virtual machine
container
path
transfer
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2015007281A
Other languages
English (en)
Inventor
孝通 西島
Takamichi Nishijima
孝通 西島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015007281A priority Critical patent/JP2016134700A/ja
Priority to US14/960,492 priority patent/US20160212237A1/en
Publication of JP2016134700A publication Critical patent/JP2016134700A/ja
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/22Alternate routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services

Abstract

【課題】サービスチェインにおいて、要求された通信機能の開始までの時間を短縮する。
【解決手段】管理サーバは、ネットワーク中の転送経路を管理し、送信部と制御部を備える。送信部は、転送経路に含まれる仮想マシンを起動させるための要求と、仮想マシンが起動するまでの間、仮想マシンが行う転送処理を代行するアプリケーションを起動させるための要求とを送信する。制御部は、アプリケーションの起動後に、転送経路中にアプリケーションを実行する実行装置を含めた第1の経路を設定する。制御部は、仮想マシンの起動後に、第1の経路を、第1の経路中の実行装置を仮想マシンに置き換えた第2の経路に切り替えるための制御を行う。
【選択図】図4

Description

本発明は、ネットワーク中でのデータの転送経路の管理方法と管理サーバに関する。
ネットワーク機能仮想化(Network Functions Virtualization、NFV)と呼ばれる技術が注目されている。NFVは、ルータ、ゲートウェイ、ロードバランサなどのネットワーク機器によって実現されていた機能をアプリケーションプログラムとして実装し、サーバ上の仮想マシン(Virtual Machine、VM)として動作させる技術である。欧州の標準化団体であるETSI(European Telecommunications Standards Institute)のNFV ISG(Industry Specification Group)では、ファイアウォールやプロキシサーバを経由した通信をNFVで実現することが検討されている。この場合、サーバ上の仮想マシン内で動作している複数の機能を選択的に利用するデータ転送経路(サービスチェイン)が用いられる。
図1は、サービスチェインの例を説明する図である。ファイアウォールやプロキシサーバ(Web Proxy)はアプリケーションプログラムとしてサーバ上20の仮想マシン内で動作している。図1の例では、仮想マシンVMはサーバ20aで動作しており、仮想マシンVMはサーバ20bで動作している。ユーザがインターネットにアクセスする際に送信されるパケットは、全てファイアウォールが動作している仮想マシンVMと、Web Proxyが動作している仮想マシンVMを経由して送信される。なお、サーバ上では他のネットワーク機能も仮想マシンとして動作している場合もある。
ここで、各端末や仮想マシンは、パケットの最終宛先に対応付けて転送先をルーティングテーブルに記憶しているものとする。例えば、図1において端末10Aが端末10Zにパケットを送信する場合、端末10Aから送信されたパケットは、仮想マシンVMに転送され、仮想マシンVMで動作するファイアウォールのアプリケーションにより処理される。同様に、端末10Z宛のパケットは、仮想マシンVMから仮想マシンVMに転送され、仮想マシンVMで動作するWeb Proxyのアプリケーションにより処理される。仮想マシンVMは、端末10Z宛のパケットを、端末10Zに転送する。なお、これらのルーティングテーブルは、各仮想マシンにおいて動作しているオペレーションシステム(OS)により管理されている。
関連する技術として、ネットワーク上を流れるパケットを通信管理装置が処理し、各クライアントは省電力モードに設定されているときには、通信管理装置から送信されたパケット以外に応答しないシステムが提案されている。通信管理装置は任意のクライアントからの接続先への接続要求を受信すると、接続先に省電力モードからの復帰要求を送信すると共に、接続先の代理で接続要求の送信元との通信準備処理を実行する(例えば、特許文献1など)。
特開2004−126959号公報
サービスチェインを用いるシステムでは、ユーザからの要求や負荷状況に応じて、サービスチェイン中の仮想マシンの変更や追加などを伴う通信経路の変更が行われる。仮想マシンの変更や追加の際、通信経路を管理する管理サーバは、新たな経路に含まれる仮想マシンが起動してから、経路の変更処理を行う。ここで、仮想マシン内で動作するOSの起動が完了しないと、仮想マシンの起動は完了しない。仮想マシン内のOSの起動には時間がかかるが、管理サーバは、仮想マシンが起動するまでは、サービスチェインを生成しない。このため、仮想マシンが起動して新たな経路が設定されるまで、要求された機能が提供されない。
本発明は、サービスチェインにおいて、要求された通信機能の開始までの時間を短縮することを目的とする。
ある1つの態様にかかる管理サーバは、ネットワーク中の転送経路を管理し、送信部と制御部を備える。送信部は、前記転送経路に含まれる仮想マシンを起動させるための要求と、前記仮想マシンが起動するまでの間、前記仮想マシンが行う転送処理を代行するアプリケーションを起動させるための要求とを送信する。制御部は、前記アプリケーションの起動後に、前記転送経路中に前記アプリケーションを実行する実行装置を含めた第1の経路を設定する。制御部は、前記仮想マシンの起動後に、前記第1の経路を、前記第1の経路中の前記実行装置を前記仮想マシンに置き換えた第2の経路に切り替えるための制御を行う。
サービスチェインにおいて、要求された通信機能の開始までの時間を短縮できる。
サービスチェインの例を説明する図である。 仮想マシンの動作例を説明する図である。 コンテナを用いた仮想化の例を説明する図である。 実施形態にかかる方法の例を説明するフローチャートである。 管理サーバの構成の例を説明する図である。 管理サーバのハードウェア構成の例を説明する図である。 通信経路の例を説明する図である。 第1の実施形態で行われる処理の例を説明する図である。 起動要求メッセージの例を示す図である。 第1の実施形態で行われる処理の例を説明する図である。 書き換え要求メッセージの例を示す図である。 仮想マシンが起動したときの通信経路の例を示す図である。 第1の実施形態で行われる処理の例を説明する図である。 第1の実施形態で行われる処理の例を説明するフローチャートである。 第1の実施形態で行われる処理の例を説明するフローチャートである。 第2の実施形態で行われる処理の例を説明する図である。 第2の実施形態で行われる処理の例を説明する図である。 第3の実施形態が適用される通信経路の例を説明する図である。 第3の実施形態で行われる処理の例を説明する図である。 第3の実施形態で行われる処理の例を説明するフローチャートである。 第4の実施形態が適用されるネットワークの例を説明する図である。 第4の実施形態で行われる処理の例を説明する図である。 第4の実施形態で行われる処理の例を説明する図である。 第4の実施形態で行われる処理の例を説明する図である。 複数の仮想マシンの追加に用いられるテーブルの例を示す図である。 第5の実施形態が適用されるネットワークの例を説明する図である。 第5の実施形態で行われる処理の例を説明する図である。 第5の実施形態で行われる処理の例を説明する図である。 第5の実施形態で行われる処理の例を説明する図である。 第5の実施形態で行われる処理の例を説明する図である。 第5の実施形態で行われる処理の例を説明する図である。 第5の実施形態で行われる処理の例を説明するフローチャートである。
実施形態にかかる方法では、新たに仮想マシンが起動される際に、仮想マシンが起動するまでの期間に、仮想マシンで行われる処理を代行するコンテナも起動される。図2、図3を参照しながら、仮想マシンとコンテナについて説明する。
図2は、仮想マシン30の動作例を説明する図である。図2の例では、1つのサーバ20で仮想マシン30aと仮想マシン30bが動作している場合を例として示しているが、1つのサーバ20で動作する仮想マシン30の数は任意である。サーバ20では、物理ハードウェア21を用いてOS(Operation System)22が動作している。さらに、ハードウェアエミュレーションを行うプログラム23がOS22上で動作している。ハードウェアエミュレーションを行うプログラム23により、仮想ハードウェア31(31a、31b)が実現される。仮想マシン30aで動作するアプリケーション33aは、仮想ハードウェア31aを用いて動作するOS32a上で動作している。同様に、仮想マシン30bで動作するアプリケーション33bは、仮想ハードウェア31aを用いて動作するOS32b上で動作している。従って、ケースC1に示すように、アプリケーション33bの処理に応じてOS32bが仮想ハードウェア31bに処理を要求すると、ハードウェアエミュレーションを行うプログラム23に処理要求が出される。プログラム23の処理に応じて、OS22から物理ハードウェア21に処理要求が出される結果、仮想マシン30b上で動作するアプリケーション33bでの処理が行われる。すなわち、仮想マシン30の起動が完了するまでには、仮想マシン30上で動作するOS32が起動していることになる。このため、仮想マシン30を用いる場合、仮想マシン30ごとに任意のOS32を起動させることができるという利点はあるが、OS32が起動するまで仮想マシン30の起動が完了しないため、仮想マシン30の起動には時間がかかるという問題がある。
図3は、コンテナ40を用いた仮想化の例を説明する図である。サーバ20では、物理ハードウェア21を用いてOS22が動作しており、OS22上でコンテナ40aとコンテナ40bが動作する。各コンテナではコンテナごとのIDが用いられ、コンテナごとのIDがOS22によるアクセス先を特定するIDに変換されるので、各コンテナ40中のアプリケーション41は、他のコンテナ40や物理ハードウェア21の構成によらずに処理を実行できる。IDテーブル42(42a、42b)は、各コンテナ中のアプリケーション41のアクセス先と、コンテナ内のIDを対応付けている。一方、変換情報テーブル24は、コンテナの識別子とコンテナ内IDの組み合わせごとに、OS22で使用されるIDを対応付けている。
例えば、サーバ20中のCPU(Central Processing Unit)は、CPU1とCPU2であるとする。アプリケーション41aは、IDテーブル42を用いて、コンテナ40a内で使用されるIDがCPU0のCPUに処理を要求したとする。すると、コンテナ40aでのCPU0の指定は、変換情報テーブル24により、CPU1に変換される。このため、アプリケーション41aに関する処理がCPU1により行われる。また、コンテナ40bについても同様に、コンテナ40b中でのCPU0への指定は、CPU2への指定に読み替えられるので、アプリケーション41bに関する処理がCPU2で行われる。
このように、コンテナ40を用いた仮想化では、仮想OSが使用されない。従って、コンテナ40を起動する際には仮想OSの起動を待たなくてよいので、仮想マシン30の起動よりもコンテナ40の起動には時間がかからない。ここで、コンテナ40は仮想OSを用いずに、OS22上で動作するため、コンテナ40は、OS22上で動作するアプリケーションであるということもできる。また、コンテナ40に対する処理要求は、コンテナ40をアプリケーションとして実行しているサーバ20に対する処理の要求であるということもできる。なお、1つのサーバ20で動作するコンテナ40の数も任意である。
図2と図3を参照しながら説明したように、コンテナは、仮想マシン30よりも起動時間が短い。しかし、コンテナ40を用いた仮想化では複数のコンテナ40が同じOS22で動作し、コンテナごとに異なるOS22が使用されることはない。このため、OS22レベルで問題が発生すると全てのコンテナ40に問題が起こってしまい、運用管理や安定性で問題がある。従って、コンテナ40を用いた経路よりは、仮想マシン30を用いた経路を使用する方が望ましい。そこで、実施形態にかかる方法では、仮想マシン30の起動に際して、仮想マシン30の処理を代行するコンテナ40も起動する。起動されるコンテナは、仮想マシンが起動するまで、仮想マシンで行われる処理を代行することにより、仮想マシンを用いた際に行われるサービスと同等のサービスを提供する。
図4は、実施形態にかかる方法の例を説明するフローチャートである。図4は、サーバ20と、ネットワーク中のサーバ20を管理する管理サーバを含むシステムにおいて行われる処理の例を表している。なお、図4は動作の一例であり、実装に応じて変更されうる。例えば、ステップS2とステップS3の処理は並行して行われてもよく、また、ステップS2とステップS3の順序が変更されてもよい。
ステップS1において、管理サーバ50は、新たな仮想マシン30を含む経路の設定の要求を検出する。ここで、管理サーバ50は、新たな仮想マシン30を含む経路の要求を、オペレータが使用している端末から受信してもよい。また、管理サーバ50が入力を受け付けるための入力装置を備えている場合、オペレータは、管理サーバ50に対して、新たな仮想マシン30を含む経路の設定を要求してもよい。この場合、管理サーバ50は、入力装置からの入力を用いて、新たな経路の設定の要求を検出する。管理サーバ50は、新たな経路に設定する仮想マシン30を動作させるサーバ20と、コンテナ40を動作させるサーバ20を決定する。ここで、コンテナ40は、新たに起動させる仮想マシン30が起動するまでの間、その仮想マシン30の起動後に仮想マシン30で行われる処理を代行する。なお、仮想マシン30が動作するサーバ20は、仮想マシン30の処理を代行するコンテナ40が動作するサーバ20と同じであっても異なっていてもよい。
ステップS2において、管理サーバ50は、新たな仮想マシン30を動作させるサーバ20に対して、新経路に含める仮想マシン30の起動を要求する。さらに、管理サーバ50は、新経路に含める仮想マシン30の処理を代行するコンテナ40の起動を、コンテナ40を動作させるサーバ20に要求する(ステップS3)。
ステップS3において起動を要求したコンテナ40が起動すると、起動したコンテナ40を経由する第1の経路が設定される(ステップS4)。その後、仮想マシン30が起動するまで、第1の経路を用いた通信が行われる(ステップS5でNo)。仮想マシン30が起動すると、第1の経路を、仮想マシン30を経由する第2の経路に切り替える処理が行われる(ステップS5でYes、ステップS6)。
このように、実施形態にかかる方法では、起動が高速なコンテナ40を一時的に用いてサービスチェインを構築した後で、仮想マシン30の起動後に仮想マシン30を用いた経路に切り替えている。仮想マシン30を用いた経路は、コンテナ40を用いた経路に比べて、安定的に運用でき、さらに、運用管理も容易である。このため、要求されたサービスを早期に開始するとともに、仮想マシン30を用いて安定的にサービスの提供を行うことができる。
<装置構成>
図5は、管理サーバ50の構成の例を説明する図である。管理サーバ50は、送受信部51、取得部54、制御部60、記憶部70を備える。送受信部51は、送信部52と受信部53を有する。制御部60は、経路変更部61、仮想マシン起動要求部62、コンテナ起動要求部63、起動判定部64を有し、オプションとして、転送要求部65を有してもよい。記憶部70は、要素管理テーブル71、SC管理テーブル72、IPアドレステーブル73を記憶する。
送信部52は、ネットワーク中のサーバ20に制御メッセージを送信する。受信部53は、ネットワーク中のサーバ20から制御メッセージを受信する。取得部54は、新たな仮想マシンを含む経路の設定の要求を取得する。
経路変更部61は、あるサービスチェインについての、新たな仮想マシンを含む経路の設定の要求に応じて、仮想マシン起動要求部62に新たな仮想マシン30の起動を要求する。さらに、経路変更部61は、新たに起動される仮想マシン30の処理を代行するコンテナ40の起動を、コンテナ起動要求部63に要求する。さらに、仮想マシン30やコンテナ40の起動に際して、サービスチェインでの通信経路を変更する。
仮想マシン起動要求部62は、新たな仮想マシン30を起動させるサーバ20を選択し、選択したサーバ20に、仮想マシン30の起動を要求する。コンテナ起動要求部63は、新たなコンテナ40を起動させるサーバ20を選択し、選択したサーバ20に、コンテナ40の起動を要求する。起動判定部64は、仮想マシン30やコンテナ40が起動したかを判定し、仮想マシン30やコンテナ40の起動を、経路変更部61に通知する。転送要求部65は、コンテナ40の処理により、転送パケットの処理に関する情報(状態情報)が生成された場合、コンテナ40で生成されたデータを仮想マシン30に転送させるための処理を行う。状態情報の例として、例えば、Proxyのアドレス変換の対応情報や、Firewallが通過させたパケットの情報などがあげられる。
要素管理テーブル71は、各サービスチェインに含まれる端末10、仮想マシン30、コンテナ40についての情報を格納する。例えば、要素管理テーブル71には、サービスチェインに含まれる装置の識別子、サービスチェインの識別子(SC ID)、IPアドレス、パケットの転送先のIPアドレス、転送先が動作しているサーバ20のIPアドレスなどの情報が含まれる。
SC管理テーブル72は、サービスチェインでのパケットの転送経路を記録する。SC管理テーブル72には、サービスチェインに含まれる装置の識別子、サービスチェインの識別子、サービスチェインにおけるその装置の順番などが含まれている。IPアドレステーブル73は、新たに起動させる仮想マシン30やコンテナ40に割り当て可能なIPアドレスが記録されている。
図6は、管理サーバ50のハードウェア構成の例を説明する図である。管理サーバ50は、プロセッサ81、メモリ82、入力装置83、出力装置84、バス85、ネットワークインタフェース86を備える。プロセッサ81は、CPUを含む任意の処理回路である。プロセッサ81は、メモリ82をワーキングメモリとして使用して、OSやアプリケーションプログラムを実行することにより、様々な処理を実行する。なお、プロセッサ81の数は任意であり、複数のプロセッサ81が搭載されていてもよい。メモリ82は、主記憶装置や補助記憶装置として動作する。メモリ82には、RAM(Random Access Memory)が含まれ、さらに、EPROM(Erasable Programmable ROM)等の不揮発性のメモリも含まれる。入力装置83は、キーボードやマウス等、オペレータが管理サーバ50への入力処理に使用可能な装置である。入力装置83から入力されたデータは、プロセッサ81に出力される。出力装置84は、プロセッサでの処理の結果を出力する装置である。出力装置84には、スピーカ等の音声出力装置、ディスプレイが含まれる。
プロセッサ81は、制御部60として動作する。メモリ82は、記憶部70として動作する。ネットワークインタフェース86は、送受信部51として動作する。取得部54は、ネットワークインタフェース86、または、入力装置83により実現される。
<第1の実施形態>
図7は、通信経路の例を説明する図である。図7は、管理サーバ50に要素管理テーブル71_1とSC管理テーブル72_2が記憶されている場合での、SC ID=SCのサービスチェインで使用される転送経路を示す。以下の説明では、時間の経過に従ってテーブルの内容が変化する場合、符号の最後にアンダースコアと数字を続けて、いつの時点でのテーブルの状態かを示す。
図7に示すSC ID=SCのサービスチェインでは、端末10Aから端末10Zにパケットが送信される。SC ID=SCのサービスチェインで使用される通信経路には、SC管理テーブル72_1に示すように、端末10A、仮想マシン30a、仮想マシン30b、端末10Zが含まれている。パケットの通過順序は、SC管理テーブル72_1の順番が示すとおりに、端末10A、仮想マシン30a、仮想マシン30b、端末10Zとなる。
要素管理テーブル71_1は、SC ID=SCのサービスチェインの生成に使用される要素の情報が含まれている。また、仮想マシン30aの識別子はVMであり、仮想マシン30aはDPI(Deep Packet Inspection)として動作する。仮想マシン30bの識別子はVMであり、仮想マシン30bはWeb Proxy(Proxy)として動作する。要素管理テーブル71_1では、仮想マシン30が動作しているサーバ20の情報は、そのサーバ20に割り当てられたIPアドレス(サーバアドレス)で示されている。ここで、端末10Aに割り当てられたIPアドレスはIP、端末10Zに割り当てられたIPアドレスはIPである。仮想マシン30aはサーバ20aで動作しており、仮想マシン30bはサーバ20bで動作している。また、各装置に割り当てられたIPアドレスは、サーバ20aでIPS1、サーバ20bでIPS2、仮想マシン30aでIP、仮想マシン30bでIPである。なお、ネットワーク中にはサーバ20cが含まれているが、サーバ20cには、端末10Aが端末10Zに宛てて送信したパケットが転送されない。このため、現時点では、サーバ20cの情報は要素管理テーブル71_1に含まれていない。なお、サーバ20cに割り当てられたIPアドレスはIPS3であるものとする。
さらに、各装置はサービスチェインに設定された転送経路を用いるための転送先を記憶している。例えば、端末10Aは、端末10Z宛(IP宛て)のパケットの転送先が仮想マシン30a(VM)であると記憶している。同様に、端末10Z宛のパケットの転送先は、仮想マシン30aでは仮想マシン30b(VM)、仮想マシン30aでは端末10Zである。
図8は、第1の実施形態で行われる処理の例を説明する図である。以下、図7に示したサービスチェインにおいて、DPIとして動作する仮想マシン30aとProxyとして動作する仮想マシン30bの間に、新たに、ファイアウォールとして動作する仮想マシンを追加する場合に行われる処理の例を説明する。なお、第1の実施形態では、管理サーバ50には転送要求部65が備えられていなくてもよい。
まず、経路変更部61は、あるサービスチェインについての、新たな仮想マシンを含む経路の設定の要求が発生したことを検出する。経路変更部61は、仮想マシン起動要求部62に新たな仮想マシン30の起動を要求する(矢印A1)。以下、新たに追加される仮想マシン30を仮想マシン30cとし、仮想マシン30cの識別子をVMnewとする。さらに、経路変更部61は、新たに起動される仮想マシン30cの処理を代行するコンテナ40の起動を、コンテナ起動要求部63に要求する(矢印A2)。以下、起動されるコンテナ40の識別子を、コンテナnewとする。
仮想マシン起動要求部62は、仮想マシン30の配備ポリシに従い、仮想マシン30c(VMnew)を動作させるサーバ20を選択する。サーバ20の選択に用いるポリシは任意であり、処理負荷が小さいサーバ20を優先して選択することなどが考えられる。ここで、仮想マシン起動要求部62は、サーバ20cに仮想マシン30cを動作させることを決定したとする。
矢印A3に示すように、仮想マシン起動要求部62は、IPアドレステーブル73を参照して、VMnewに割り当てることができるIPアドレスを選択する。ここでは、仮想マシン起動要求部62は、VMnewに割り当てるIPアドレスとして、IPを選択したとする。仮想マシン起動要求部62は、選択したIPアドレスを、IPアドレステーブル73から削除する。
矢印A4において、仮想マシン起動要求部62は、要素管理テーブル71に、新たに追加する仮想マシン30cに関する情報を追加する。仮想マシン30cの識別子はVMnewであり、仮想マシン30cが動作するサーバ20cに割り当てられたIPアドレスはIPS3である。また、仮想マシン30cは、ファイアウォール(FW)として、SC ID=SCのサービスチェインに追加される。このため、仮想マシン起動要求部62は、矢印A4の処理により、要素管理テーブル71_1(図7)に、要素管理テーブル71_2中のVMnewのエントリの情報を追加する。
矢印A5において、仮想マシン起動要求部62は、サーバ20cに、仮想マシンの起動を要求するための要求メッセージを送信する。要求メッセージの詳細については後述する。
一方、矢印A2の要求を受けたコンテナ起動要求部63は、コンテナ40の配備ポリシに従い、コンテナ40(コンテナnew)を動作させるサーバ20を選択する。コンテナ40を動作させるサーバ20の選択に用いるポリシは任意であり、コンテナ40を動作させるサーバ20は、新たな仮想マシン30cを動作させるサーバ20と同じであっても異なっていてもよい。図8の例では、コンテナ起動要求部63は、サーバ20cにコンテナ40を動作させることを決定したとする。
矢印A6に示すように、コンテナ起動要求部63は、IPアドレステーブル73を参照して、新たに起動するコンテナ40に割り当てることができるIPアドレスを選択する。ここで、コンテナ起動要求部63は、コンテナ40に割り当てるIPアドレスとして、IPを選択したとする。コンテナ起動要求部63は、選択したIPアドレスを、IPアドレステーブル73から削除する。
矢印A7において、コンテナ起動要求部63は、要素管理テーブル71に、新たに追加するコンテナ40に関する情報を追加する。コンテナ40の識別子はコンテナnewであり、コンテナ40が動作するサーバ20cに割り当てられたIPアドレスはIPS3である。また、コンテナ40は、ファイアウォール(FW)として、SC ID=SCのサービスチェインに追加される。このため、コンテナ起動要求部63は、矢印A7の処理により、要素管理テーブル71_2中のコンテナnewのエントリの情報を追加する。さらに、コンテナ起動要求部63は、サーバ20cに、コンテナ40の起動を要求するための要求メッセージを送信する(矢印A8)。
図9は、起動要求メッセージの例を示す図である。P11は、仮想マシン30の起動の要求に用いられる起動要求メッセージのフォーマットの例である。仮想マシン30の起動の要求に用いられる起動要求メッセージは、ヘッダ、仮想マシン30の起動要求を示す情報(VM起動)、仮想マシン30を起動するサービスチェインの識別子、起動する仮想マシン30に割り当てるIPアドレス、種別情報を含む。種別情報は、新たに起動される仮想マシン30が提供するサービスの種類を示す。P12は、コンテナ40の起動の要求に用いられる起動要求メッセージのフォーマットの例である。コンテナ40の起動の要求に用いられる起動要求メッセージは、ヘッダ、コンテナ40の起動要求を示す情報(コンテナ起動)、コンテナ40を起動するサービスチェインの識別子、コンテナ40に割り当てるIPアドレス、種別情報を含む。種別情報は、コンテナ40が提供するサービスの種類を示す。
例えば、図8の矢印A5では、P13に示す起動要求メッセージが、仮想マシン起動要求部62から送信部52を介して、サーバ20cに送信されている。一方、図8の矢印A8では、P14に示す起動要求メッセージが、コンテナ起動要求部63から送信部52を介して、サーバ20cに送信されている。
サーバ20cは、P13に示す起動要求メッセージの受信に伴って、仮想マシン30cの起動を開始する。さらに、P14に示す起動要求メッセージの受信に伴い、サーバ20cは、コンテナ40の起動を開始する。
起動判定部64は、コンテナ40の起動が完了しているかを、コンテナ40の起動を要求したサーバ20cに、定期的に問い合わせる。問い合わせの例として、サーバ20c上でコンテナ40によるプロセスが実行されているかを調べる方法や、サーバ20cに起動を要求したコンテナ40に対してICMP(Internet Control Message Protocol)エコーを送信する方法が挙げられる。
図10は、コンテナ40の起動の際に行われる処理の例を説明する図である。起動判定部64は、コンテナ40が起動したと判定すると、コンテナ40が起動したことを経路変更部61に通知する。さらに、起動判定部64は、仮想マシン30cの起動が完了しているかを、仮想マシン30cの起動を要求したサーバ20cに、定期的に問い合わせる処理を開始する。なお、サーバ20cへの問い合わせの処理は、コンテナ40の起動が完了しているかを問い合わせる場合の処理と同様である。
経路変更部61は、経路の変更の要求を検出した際に、仮想マシン30a(VM)から仮想マシン30b(VM)に至る経路にコンテナ40が追加されることも併せて認識している。そこで、コンテナ40が起動すると、経路変更部61は、サービスチェイン中のコンテナ40(コンテナnew)の順序が仮想マシン30a(VM)の前で仮想マシン30b(VM)の後になるように、SC管理テーブル72を変更する(矢印A11)。この処理により、SC管理テーブル72_1(図7)は、SC管理テーブル72_2(図10)に示すように変更される。
経路変更部61は、SC管理テーブル72_2を参照することにより、コンテナ40がサービスチェインSCに追加されたときに、パケットの転送先が変更される装置を決定する。IP宛のパケットの転送先が変更される装置は、サービスチェインに追加されるコンテナ40自身と、コンテナ40にパケットを転送することになる装置である。そこで、経路変更部61は、コンテナ40(コンテナnew)と仮想マシン30a(VM)について、IP宛のパケットの転送先を決定する。仮想マシン30a(VM)はパケットをコンテナ40(コンテナnew)に転送することになるので、仮想マシン30aでの転送先のIPアドレスは、コンテナ40のアドレス(IP)となる。一方、コンテナ40はパケットを仮想マシン30b(VM)に転送するので、コンテナ40での転送先のIPアドレスは、仮想マシン30bのアドレス(IP)となる。そこで、経路変更部61は、決定した転送先を要素管理テーブル71に記録する。この処理により、要素管理テーブル71_2(図8)は要素管理テーブル71_3に変更される(矢印A12)。
矢印A13において、経路変更部61は、送受信部51を介して、書き換え要求メッセージを仮想マシン30aに送信することにより、仮想マシン30aに、IP宛のパケットの転送先のアドレスをIPに変更することを要求する。さらに、矢印A14において、経路変更部61は、書き換え要求メッセージをコンテナ40に送信することにより、コンテナ40に、IP宛のパケットの転送先のアドレスをIPに設定することを要求する。
図10中の矢印A13とA14の処理により、図10に示すように、サービスチェインSCでの端末10Z宛のパケットの転送経路は、端末10A、仮想マシン30a、コンテナ40、仮想マシン30b、端末10Zとなる。さらに、仮想マシン30aによりDPI、仮想マシン30bによりProxyの処理が行われるだけでなく、コンテナ40によってファイアウォールとしての処理も行われるようになる。
図11は、書き換え要求メッセージのフォーマットの例を示す図である。書き換え要求メッセージには、ヘッダ、書き換え要求であることを示す情報、パケットの宛先アドレス、パケットの転送先のアドレスが記録されている。書き換え要求メッセージを受信した装置は、宛先に対応付けられた転送先の値を、書き換え要求メッセージで指定されたアドレスに設定する。このため、図10に示すように、仮想マシン30aでは、IP宛のパケットの転送先のアドレスがIP(仮想マシン30bのアドレス)からIP(コンテナ40のアドレス)に変更される。同様に、コンテナ40では、IP宛のパケットの転送先のアドレスがIP(仮想マシン30bのアドレス)に設定される。
その後、仮想マシン30cの起動が完了したとする。
図12は、仮想マシン30cの起動が完了したときのサービスチェインSCの転送経路の例を示す。仮想マシン30cが起動した時点では、仮想マシン30cを経由する経路の設定は行われていない。このため、端末10Z宛のパケットは、図12中の矢印A15で示すように、端末10Aから、仮想マシン30a、コンテナ40、仮想マシン30bを経由して、端末10Zに送信されている。起動判定部64は、仮想マシン30cが起動したと判定すると、仮想マシン30cが起動したことを経路変更部61に通知する。
図13は、仮想マシン30cの起動の際に行われる処理の例を説明する図である。経路変更部61は、仮想マシン30cが起動すると、サービスチェインSCの転送経路を、コンテナ40の代わりに仮想マシン30cを通過するように変更するための処理を開始する。
矢印A21において、経路変更部61は、SC管理テーブル72に仮想マシン30c(VMnew)の情報を追加するとともに、SCでの仮想マシン30cの順序を仮想マシン30a(VM)と仮想マシン30b(VM)の間に設定する。このため、SC管理テーブル72_3に示すように、仮想マシン30c(VMnew)に対応付けられる順序は3になる。さらに、コンテナ40に対応付けられる順序を無効値にすることにより、サービスチェインSCで使用される転送経路からコンテナ40を除外する。
経路変更部61は、SC管理テーブル72_3を参照することにより、仮想マシン30cがサービスチェインSCに追加されたときに、パケットの転送先が変更される装置を決定する。図13の例では、パケット転送先が変更される装置は、仮想マシン30cと、仮想マシン30cにパケットを転送することになる仮想マシン30aである。そこで、経路変更部61は、仮想マシン30c(VMnew)と仮想マシン30a(VM)について、新たなパケットの転送先を決定する。仮想マシン30a(VM)はIP宛のパケットを仮想マシン30c(VMnew)に転送することになるので、仮想マシン30aでのIP宛のパケットの転送先のIPアドレスは、仮想マシン30cのアドレス(IP)となる。一方、仮想マシン30cはIP宛のパケットを仮想マシン30b(VM)に転送するので、仮想マシン30cでのIP宛のパケットの転送先のIPアドレスは、仮想マシン30bのアドレス(IP)となる。そこで、経路変更部61は、決定した転送先を要素管理テーブル71に記録する。この処理により、要素管理テーブル71_3(図10)は要素管理テーブル71_4に変更される(矢印A22)。
矢印A23において、経路変更部61は、送受信部51を介して、書き換え要求メッセージを仮想マシン30aに送信することにより、仮想マシン30aに、IP宛のパケットの転送先のアドレスをIPに変更することを要求する。さらに、矢印A24において、経路変更部61は、書き換え要求メッセージを仮想マシン30cに送信することにより、仮想マシン30cに、IP宛のパケットの転送先のアドレスをIPに設定することを要求する。
図13中の矢印A23とA24の処理により、図13の矢印A25に示すように、サービスチェインSCでの端末10Z宛のパケットの転送経路は、端末10A、仮想マシン30a、仮想マシン30c、仮想マシン30b、端末10Zとなる。すなわち、サービスチェインSCでの転送経路は、図12に示す経路から図13に示すように切り替えられる。また、経路の切り替えに伴い、仮想マシン30cがコンテナ40の代わりにファイアウォールとしての処理を開始する。
なお、図7〜図13を参照しながら、仮想マシン30やコンテナ40が起動されるサーバ20が配備ポリシに従って選択される場合の例を説明したが、オペレータが仮想マシン30やコンテナ40を配置するサーバ20を指定してもよい。この場合、経路変更部61は、オペレータから仮想マシン30を配置するように指定されたサーバ20を仮想マシン起動要求部62に通知し、仮想マシン起動要求部62は、通知されたサーバ20に対して仮想マシン30の起動を要求する。また、コンテナ40についても、コンテナ起動要求部63は、オペレータからコンテナ40の起動が要求されたサーバ20に対して、コンテナ40の起動を要求する。
図14Aと図14Bは、第1の実施形態で行われる処理の例を説明するフローチャートである。経路変更部61から仮想マシン30の追加要求を受けた仮想マシン起動要求部62は、仮想マシン30の配備ポリシやオペレータからの要求に応じて、仮想マシン30を起動させるサーバ20を特定する(ステップS11)。仮想マシン起動要求部62は、IPアドレステーブル73中に記録されている割り当て可能なIPアドレスの一覧から、仮想マシン30に割り当てるIPアドレスを選択する(ステップS12)。仮想マシン起動要求部62は、IPアドレステーブル73から、選択したIPアドレスを削除する(ステップS13)。仮想マシン起動要求部62は、起動を要求する仮想マシン30の情報を、要素管理テーブル71に記録する(ステップS14)。仮想マシン起動要求部62は、選択したサーバ20に対し、仮想マシン30の起動と、選択したIPアドレスの割り当てを要求する(ステップS15)。
経路変更部61からコンテナ40の追加要求を受けたコンテナ起動要求部63は、コンテナ40の配備ポリシやオペレータからの要求に応じて、コンテナ40を起動させるサーバ20を特定する(ステップS16)。コンテナ起動要求部63は、IPアドレステーブル73中に記録されている割り当て可能なIPアドレスの一覧から、コンテナ40に割り当てるIPアドレスを選択する(ステップS17)。コンテナ起動要求部63は、IPアドレステーブル73から、選択したIPアドレスを削除する(ステップS18)。コンテナ起動要求部63は、起動を要求するコンテナ40の情報を、要素管理テーブル71に記録する(ステップS19)。コンテナ起動要求部63は、選択したサーバ20に対し、コンテナ40の起動と、選択したIPアドレスの割り当てを要求する(ステップS20)。
起動判定部64は、コンテナ40の起動を要求したサーバ20に対し、コンテナ40の起動が完了したかを問い合わせる(ステップS21)。起動判定部64は、コンテナ40の起動が完了するまで待機する(ステップS22でNo)。コンテナ40の起動が完了すると、経路変更部61は、SC管理テーブル72を用いて、新しい転送経路を求める(ステップS22でYes、ステップS23)。経路変更部61は、サービスチェイン中で転送先を変更する装置に経路情報を送信する(ステップS24)。なお、経路情報の送信には、書き換え要求メッセージが使用される。ステップS24の処理により、起動中の仮想マシン30で行われる予定のサービスの代行が、コンテナ40によって開始される。
起動判定部64は、仮想マシン30の起動を要求したサーバ20に対し、仮想マシン30の起動が完了したかを問い合わせる(ステップS25)。起動判定部64は、仮想マシン30の起動が完了するまで待機する(ステップS26でNo)。仮想マシン30の起動が完了すると、経路変更部61は、SC管理テーブル72を用いて、新しい転送経路を求める(ステップS26でYes、ステップS27)。経路変更部61は、サービスチェイン中で転送先を変更する装置に経路情報を送信する(ステップS28)。
なお、図7〜図13を参照しながら、ファイアウォールとして動作する仮想マシン30cをサービスチェインに追加する場合の処理を説明したが、追加される仮想マシン30やコンテナ40で行われる処理は任意である。
このように、第1の実施形態にかかる方法を用いると、起動が高速なコンテナ40を一時的に用いて要求されたサービスを早期に開始することができる。さらに、仮想マシン30の起動後に仮想マシン30を用いた経路に切り替えることにより、安定的にサービスの提供を行うことができる。
<第2の実施形態>
第2の実施形態では、新たに追加される仮想マシン30や、その仮想マシン30の処理を代行するコンテナ40において、パケットの転送処理の際に、転送パケットの処理に関する情報が生成される場合について説明する。第2の実施形態に用いられる管理サーバ50には、経路変更部61、仮想マシン起動要求部62、コンテナ起動要求部63、起動判定部64に加えて、転送要求部65が含まれている。第2の実施形態においても、コンテナ40や仮想マシン30の起動要求や、コンテナ40が起動した際にコンテナ40を経由する転送経路を設定するときの処理は、第1の実施形態と同様である。以下、理解しやすくするために、図8と同様に、サーバ20cでコンテナ40と仮想マシン30cが起動される場合を例として、第2の実施形態での処理の例を説明する。
図15は、第2の実施形態で行われる処理の例を説明する図である。図15は、コンテナ40を経由する転送経路A31が設定されている状態の例を示している。第2の実施形態では、コンテナ40は、起動が完了していない仮想マシン30cの処理を代行しているときに転送パケットの処理に関する情報(状態情報)を作成している。コンテナ40が保持する状態情報は、ファイアウォールが通過させたパケットの情報などである。例えば、端末10Aから仮想マシン30aを介してコンテナ40に転送されたパケットのうち、ファイアウォールの処理により、コンテナ40が仮想マシン30bに転送したパケットの情報が、状態情報として記録される。
図16は、第2の実施形態において、仮想マシン30cの起動が完了したときに行われる処理の例を説明する図である。起動判定部64により仮想マシン30cが起動したことが経路変更部61に通知されたとする。すると、経路変更部61は、仮想マシン30cの代替えとして動作していたコンテナ40では、状態情報が生成されているかを判定する。この判定は、コンテナ40や仮想マシン30cが提供するサービスの種類に基づいて行われる。ここでは、コンテナ40と仮想マシン30cは、状態情報を生成するファイアウォールとして動作するので、経路変更部61は、コンテナ40において状態情報が生成されていると判定する。経路変更部61は、コンテナ40で状態情報が生成されていると判定すると、経路の切り替え処理の前に、転送要求部65に、コンテナ40から仮想マシン30cへの状態情報の転送に関する処理を要求する(矢印A32)。
転送要求部65は、経路変更部61からの要求に応じて、コンテナ40に対し、状態情報を仮想マシン30cに送信することを要求するための要求メッセージを送信する(矢印A33)。要求メッセージには、状態情報の通知先の仮想マシン30cのアドレス(IP)と、仮想マシン30cに通知する状態情報の種類を指定する情報が含まれている。さらに、転送要求部65は、仮想マシン30cに対し、コンテナ40から状態情報を受信し、受信した状態情報を、パケットの処理に使用することを要求する要求メッセージを送信する(矢印A34)。仮想マシン30cに送信される要求メッセージには、状態情報の送信元となるコンテナ40のアドレス(IP)と、転送される状態情報の種類が含まれている。
コンテナ40は、転送要求部65から要求メッセージを受信すると、要求メッセージに指定されている種類の状態情報を、仮想マシン30cに送信する(矢印A35)。一方、仮想マシン30cも、転送要求部65からの要求メッセージに指定された送信元から受信した状態情報を、以後の処理に使用する。換言すると、矢印A35に示す送信処理により、コンテナ40で生成された状態情報がコンテナ40から仮想マシン30cに送信され、仮想マシン30cは状態情報を用いて、コンテナ40で行われた処理を引き継ぐことができる。
矢印A35に示す処理が行われた後で、経路変更部61は、仮想マシン30aと仮想マシン30cに切り替え要求メッセージを送信する(矢印A36、A37)。矢印A36、A37で行われる処理は、図13を参照しながら説明した矢印A23、A24の処理と同様である。従って、矢印A36、A37で行われる処理により、サービスチェインSCでの転送経路は、矢印A31(図15)に示す経路から、矢印A38に示す経路に切り替えられる。
<第3の実施形態>
第3の実施形態では、サービスチェインに含まれている仮想マシン30での障害からの復旧、仮想マシン30の再起動、負荷分散などの目的により、サービスチェイン中の仮想マシン30を他の仮想マシン30に置き換える際の処理について説明する。
図17は、第3の実施形態が適用される通信経路の例を説明する図である。図17の例では、サービスチェインSCの処理に使用される転送経路は、矢印A41に示すとおりである。すなわち、端末10Aから端末10Zに送信されたパケットは、仮想マシン30a、仮想マシン30b、仮想マシン30cを介して、端末10Zに到達する。また、仮想マシン30aはDPI、仮想マシン30bはファイアウォール、仮想マシン30cはProxyとして動作している。仮想マシン30aはサーバ20aで動作しており、仮想マシン30bはサーバ20b、仮想マシン30cはサーバ20cで動作している。このため、図17に示す経路が使用されているときには、管理サーバ50は、要素管理テーブル71_11とSC管理テーブル72_11を保持している。
以下、矢印A41に示す経路において、仮想マシン30bを他の仮想マシン30に置き換える場合を例として、第3の実施形態で行われる処理の例を説明する。
仮想マシン30bを他の仮想マシン30に置き換える場合、経路変更部61は、まず、仮想マシン30bの代替えとなる仮想マシン30d(図示せず)の起動を仮想マシン起動要求部62に要求する。また、経路変更部61は、仮想マシン30dが起動するまでに稼働するコンテナ40の起動も、コンテナ起動要求部63に要求する。
仮想マシン起動要求部62は、経路変更部61の要求に応じて、仮想マシン30dを起動するサーバ20を選択し、選択したサーバ20に、仮想マシン30dの起動を要求する。仮想マシン30dの起動の要求の際に仮想マシン起動要求部62が行う処理は、第1の実施形態と同様である。第3の実施形態の説明では、仮想マシン30dの識別子はVMnewであるとする。仮想マシン起動要求部62の処理により、要素管理テーブル71_12(図18)のVMnewに関するエントリが生成される。
コンテナ起動要求部63も、第1の実施形態と同様の処理により、仮想マシン30dが起動するまでの間、仮想マシン30dの代替えとして動作するコンテナ40の起動を要求する。なお、以下の例では、コンテナ起動要求部63がコンテナ40の起動先として、サーバ20bを選択した場合を例とするが、コンテナ40が動作するサーバ20は、サービスチェインから削除される仮想マシン30が稼動しているサーバ20でなくてもよい。起動判定部64は、第1の実施形態と同様の処理により、コンテナ40が起動したと判定したとする。第3の実施形態の説明でも、コンテナ40の識別子はコンテナnewであるとする。コンテナ起動要求部63の処理により、コンテナnewに関するエントリが要素管理テーブル71に追加される。
図18は、コンテナ40が起動した際に第3の実施形態で行われる処理の例を説明する図である。経路変更部61は、コンテナ40が起動したことを起動判定部64から通知されると、サービスチェインSCから削除する仮想マシン30bにおいて、状態情報を生成しているかを判定する。図18の例では、仮想マシン30bはファイアウォールとして動作しているので、状態情報を生成している。そこで、経路変更部61は、転送要求部65に、仮想マシン30bで生成されている状態情報をコンテナ40に転送させるための処理を要求する(矢印A42)。
転送要求部65は、経路変更部61からの要求に応じて、コンテナ40に対し、仮想マシン30bから状態情報を受信し、受信した状態情報を、パケットの処理に使用することを要求する要求メッセージを送信する(矢印A43)。コンテナ40に送信される要求メッセージには、状態情報の送信元となる仮想マシン30bのアドレスと、状態情報の種類が指定されている。さらに、転送要求部65は、仮想マシン30bに対し、パケットの転送処理に際して生成した状態情報をコンテナ40に送信することを要求するための要求メッセージを送信する(矢印A44)。なお、要求メッセージには、状態情報の通知先のコンテナ40のアドレス(IP)と、コンテナ40に通知する状態情報の種類を指定する情報が含まれている。
仮想マシン30bは、転送要求部65から要求メッセージを受信すると、要求メッセージに指定されている種類の状態情報を、コンテナ40に送信する(矢印A45)。一方、コンテナ40は、仮想マシン30bから受信した状態情報を、以後の処理に使用する。つまり、矢印A45の処理以降は、仮想マシン30bが生成した状態情報がコンテナ40に引き継がれるので、サービスチェインSC中の仮想マシン30bをコンテナ40に置き換えても、ファイアウォールの機能を継続的に提供できる。
経路変更部61は、コンテナ40が仮想マシン30b(VMold)の代替えとなる仮想マシン30dが起動するまでの処理を行うコンテナ40であることを認識している。そこで、コンテナ40が起動すると、経路変更部61は、コンテナ40(コンテナnew)の順序を、仮想マシン30b(VMold)に割り当てられていた値に設定する。一方、仮想マシン30b(VMold)の順序の値を無効値にすることにより、仮想マシン30bをサービスチェインSCから削除する。このため、SC管理テーブル72_11(図17)は、SC管理テーブル72_12に示すように変更される。
経路変更部61は、SC管理テーブル72_12を参照することにより、コンテナ40と仮想マシン30a(VM)について、端末10Z宛のパケットの転送先を決定する。仮想マシン30a(VM)は、端末10Z(IP)宛のパケットをコンテナ40(コンテナnew)に転送することになるので、仮想マシン30aでの転送先のIPアドレスは、コンテナ40のアドレス(IP)となる。一方、コンテナ40はIP宛てのパケットを仮想マシン30c(VM)に転送するので、コンテナ40での転送先のIPアドレスは、仮想マシン30bのアドレス(IP)となる。経路変更部61は、決定した転送先を要素管理テーブル71に記録する(矢印A47)。このため、経路変更部61の処理により、要素管理テーブル71_12が得られる。
矢印A48において、経路変更部61は、送受信部51を介して、書き換え要求メッセージを仮想マシン30aに送信することにより、仮想マシン30aに、IP宛のパケットの転送先のアドレスをIPに変更することを要求する。さらに、矢印A49において、経路変更部61は、書き換え要求メッセージをコンテナ40に送信することにより、コンテナ40に、IP宛のパケットの転送先のアドレスをIPに設定することを要求する。
矢印A48とA49の処理により、矢印A50に示すように、サービスチェインSCでの端末10Z宛のパケットの転送経路は、端末10A、仮想マシン30a、コンテナ40、仮想マシン30c、端末10Zとなる。さらに、コンテナ40によってファイアウォールとしての処理も行われるようになる。
仮想マシン30dが起動すると、サービスチェインSC1の転送経路は、コンテナ40を用いる経路から仮想マシン30dを用いる経路に切り替えられる。経路の切り替えの際に行われる状態情報の転送処理は第2の実施形態で説明した処理と同様である。状態情報の転送処理の後に行われる切り替えの処理は、第1の実施形態で図12および図13を参照しながら説明した処理と同様である。
図19は、第3の実施形態で行われる処理の例を説明するフローチャートである。稼働中の仮想マシン30を新たな仮想マシン30に切り替える処理の要求を検出すると、管理サーバ50は、新たな仮想マシン30の起動要求とコンテナ40の起動要求を送信する(ステップS31)。管理サーバ50は、コンテナ40の起動が完了するまで待機する(ステップS32でNo)。コンテナ40の起動が完了すると、管理サーバ50中の転送要求部65は、稼働を停止させる予定の仮想マシン30に、状態情報をコンテナ40に転送することを要求する(ステップS32でYes、ステップS33)。経路変更部61は、SC管理テーブル72を用いて、コンテナ40を含む経路を求める(ステップS34)。経路変更部61は、得られた経路情報を、パケットの転送先を変更する装置に送信する(ステップS35)。その後、管理サーバ50は、新たな仮想マシン30の起動が完了するまで待機する(ステップS36でNo)。新たな仮想マシン30の起動が完了すると、転送要求部65は、コンテナ40に、新たに起動した仮想マシン30へ状態情報を送信することを要求する(ステップS37)。経路変更部61は、SC管理テーブル72を用いて、新たに起動した仮想マシン30を含む経路を求める(ステップS38)。経路変更部61は、得られた経路情報を、パケットの転送先を変更する装置に送信する(ステップS39)。
このように、第3の実施形態を用いると、サービスチェインに含まれている仮想マシン30を、障害からの復旧などの目的で他の仮想マシン30に置き換える際にも、新たに起動する仮想マシン30が動作する前にコンテナ40を用いてサービスを提供できる。
<第4の実施形態>
第4の実施形態では、サービスチェインを生成するときに行われる処理の例を説明する。
図20は、第4の実施形態が適用されるネットワークの例を説明する図である。ネットワークには、端末10A、端末10Z、サーバ20a、サーバ20bが含まれており、サーバ20aでは仮想マシン30aが動作している。第4の実施形態では、仮想マシン30aの識別子をVMとする。端末10Aは、サービスチェインを用いた通信を行う際のアクセス先として、仮想マシン30aの情報を予め保持している。
さらに、管理サーバ50は、端末10Aが仮想マシン30aを介してサービスチェインを介した通信を行うことができることを、記憶している。このため、管理サーバ50は、要素管理テーブル71_21に、サービスチェインに含まれる可能性のある要素として、端末10A(識別子=A)と、仮想マシン30a(VM)を登録している。なお、仮想マシン30aは、端末10Aにとってのサービスチェインにアクセスするときのデフォルトルータとして動作する。
図21は、第4の実施形態で行われる処理の例を説明する図である。図21を参照しながら、端末10Aのユーザがファイアウォールを介して端末10Zと通信するためのサービスチェインを生成する場合に行われる処理の例を説明する。経路変更部61は、端末10Aから端末10Zに至る経路中にファイアウォールを含むサービスチェインの生成の要求が行われたことを検出する。すると、経路変更部61は、端末10Aと仮想マシン30aに対応付けられたサービスチェインSCに含まれる要素として、端末10Zを追加する。さらに、経路変更部61は、サービスチェインSC中でファイアウォールとして動作する仮想マシン30を起動させるための処理を、仮想マシン起動要求部62に要求する(矢印A61)。以下、新たに仮想マシン30bが起動される場合を例とする。仮想マシン30bの識別子は、VMnewであるとする。
仮想マシン起動要求部62は、仮想マシン30の配備ポリシなどを用いて、仮想マシン30bをサーバ20bで動作させること決定したとする。仮想マシン起動要求部62は、IPアドレステーブル73を参照して、VMnewに割り当てるIPアドレスを選択するとともに、選択したIPアドレスを、IPアドレステーブル73から削除する(矢印A62)。ここでは、IPがVMnewに割り当てられるとする。仮想マシン起動要求部62は、要素管理テーブル71に、仮想マシン30b(VMnew)に関するエントリを追加する。すなわち、仮想マシン30bはサーバ20b上でファイアウォール(FW)として、動作することが要素管理テーブル71に記録される(矢印A63)。その後、仮想マシン起動要求部62は、サーバ20bに、仮想マシンの起動を要求するための要求メッセージを送信する(矢印A64)。
また、経路変更部61は、サービスチェインSC中でファイアウォールとして動作する仮想マシン30が起動するまで動作させるコンテナ40を起動させるための処理を、コンテナ起動要求部63に要求する(矢印A65)。
コンテナ起動要求部63は、コンテナ40の配備ポリシに従い、コンテナ40(コンテナnew)をサーバ20bで動作させることを決定したとする。コンテナ起動要求部63は、IPアドレステーブル73を参照して、新たに起動するコンテナ40に割り当てるIPアドレスを選択し、選択したIPアドレスを、IPアドレステーブル73から削除する(矢印A66)。ここでは、IPがコンテナ40に割り当てられるとする。コンテナ起動要求部63は、要素管理テーブル71に、コンテナ40(コンテナnew)に関するエントリを追加する。すなわち、コンテナ40はサーバ20b上でファイアウォール(FW)として、動作することが要素管理テーブル71に記録される(矢印A67)。このため、矢印A67の処理が終わった時点では、管理サーバ50は要素管理テーブル71_22を備えている。一方、コンテナ起動要求部63は、サーバ20bに、コンテナ40の起動を要求するための要求メッセージを送信する(矢印A68)。
なお、矢印A68の処理が終わった段階でも、端末10Aから端末10Zに至るサービスチェインSCは確立されていない。このため、管理サーバ50は、サービスチェインSCの情報が含まれていないSC管理テーブル72_21を保持している。
図22は、コンテナ40が起動したときの第4の実施形態で行われる処理の例を説明する図である。起動判定部64は、第1の実施形態と同様の処理により、コンテナ40の起動を検出し、経路変更部61にコンテナ40の起動を通知する。経路変更部61は、コンテナ40が起動したことが通知されると、要素管理テーブル71_22(図21)を用いて、端末10Aからコンテナ40を経由して端末10Zまで至るサービスチェインが確立できると判定する。そこで、SC管理テーブル72に、端末10A、仮想マシン30a(VM)、コンテナ40(コンテナnew)、端末10Zの順に転送処理が行われるサービスチェインを登録する(矢印A72)。このため、SC管理テーブル72_21(図21)はSC管理テーブル72_22に変更される。
経路変更部61は、SC管理テーブル72_22に記録した経路を用いる場合について、サービスチェインに含まれる各装置での端末10Z宛のパケットの転送先を決定するとともに、パケットの転送先を要素管理テーブル71に記録する。このため、経路変更部61の処理により、要素管理テーブル71_22(図22)は要素管理テーブル71_23に変更される。経路変更部61は、サービスチェインSCに含まれる装置のうちで、パケットの転送先が新たに設定される装置は、仮想マシン30aとコンテナ40であると判定する。
矢印A73において、経路変更部61は、書き換え要求メッセージを仮想マシン30aに送信することにより、仮想マシン30aに、IP宛のパケットの転送先のアドレスをIPに設定することを要求する。さらに、矢印A74において、経路変更部61は、書き換え要求メッセージをコンテナ40に送信することにより、コンテナ40に、IP宛のパケットの転送先のアドレスをIPに設定することを要求する。
図22中の矢印A73とA74の処理により、サービスチェインSCでの端末10Z宛のパケットの転送経路は、端末10A、仮想マシン30a、コンテナ40、端末10Zとなる。さらに、コンテナ40によってファイアウォールとしての処理も行われる。
図23は、仮想マシン30が起動したときに第4の実施形態で行われる処理の例を説明する図である。矢印A171〜A174の処理は、図16を参照しながら説明した矢印A32〜A35で行われる処理と同様である。矢印A171〜A174の処理により、コンテナ40で生成された状態情報は仮想マシン30bに引き継がれる。
コンテナ40で生成された状態情報が仮想マシン30bに引き継がれた後で、経路変更部61は、SC管理テーブル72をSC管理テーブル72_23に示すように変更する(矢印A175)。この処理により、コンテナ40を仮想マシン30bに置き換えたときにサービスチェインSCで端末10Aから端末10Zへの送信処理に用いられる経路は、端末10Aから仮想マシン30a、仮想マシン30bを介して端末10Zに至る経路に決定される。経路変更部61は、サービスチェインSCで用いる経路に合わせて、要素管理テーブル71を要素管理テーブル71_24に示すように変更する(矢印A176)。
さらに、経路変更部61は、仮想マシン30aと仮想マシン30bに切り替え要求メッセージを送信する(矢印A177、A178)。矢印A177、A178で行われる処理は、図13を参照しながら説明した矢印A23、A24の処理と同様である。従って、矢印A177、A178で行われる処理により、サービスチェインSCでの転送経路は、図22に示す経路から、図23に示す経路に切り替えられる。
このように、実施形態にかかる方法は、既存のサービスチェインに仮想マシン30を追加する場合だけでなく、新たなサービスチェインを生成する場合にも、適用可能である。このため、仮想マシン30が起動するまでの間に、コンテナ40を用いてサービスチェインを確立することにより、コンテナ40を使用しない場合に比べて、サービスチェインの使用開始時期を早めることができる。
<変形例>
第1〜第4の実施形態では、1つの仮想マシン30がサービスチェインに追加される場合を例として説明したが、1度に複数の仮想マシン30が1つのサービスチェインに追加されてもよい。1度に複数の仮想マシン30が1つのサービスチェインに追加される場合は、要素管理テーブル71において、新たに起動される仮想マシン30の各々について、その仮想マシン30の処理を代替えするコンテナ40が明確になるように対応付けられる。
図24は、複数の仮想マシン30の追加に用いられるテーブルの例を示す図である。複数の仮想マシン30を起動する場合、要素管理テーブル71は、装置の識別子、SC ID、装置のアドレス、パケットの転送先、装置が動作しているサーバに割り当てられたアドレス、装置の機能に加えて関連IDを含む。関連IDは、起動される仮想マシン30ごとに、経路変更部61によって決定される。ここで、関連IDは、1つのサービスチェイン中の複数の仮想マシン30において、同じ値にならないように決定される。経路変更部61は、仮想マシン30の起動を要求する際に、仮想マシン起動要求部62に対して、起動を要求する仮想マシン30に対して決定した関連IDを通知する。経路変更部61は、さらに、コンテナ起動要求部63にコンテナ40の起動を要求する際にも、起動を要求するコンテナ40が処理を代行する仮想マシン30に対して決定した関連IDを通知する。
例えば、図24は、サービスチェイン中に、VMnewとVMnew_2の2つの仮想マシン30が起動される場合の要素管理テーブル71を示している。この例では、経路変更部61は、VMnewで識別される仮想マシン30に対する関連IDをID1、VMnew_2で識別される仮想マシン30に対する関連IDをID2に決定している。経路変更部61は、ファイアウォールとして動作する仮想マシン30(VMnew)の起動を仮想マシン起動要求部62に要求する際に関連ID=ID1であることを通知する。一方、経路変更部61は、コンテナ起動要求部63にファイアウォールとして動作するコンテナ40(コンテナnew)の起動をコンテナ起動要求部63に要求する際にも関連ID=ID1であることを通知する。このため、仮想マシン起動要求部62は、VMnewで識別される仮想マシン30に対する情報を要素管理テーブル71に記録する際に、関連IDをID1に設定する。同様に、コンテナ起動要求部63も、ファイアウォールとして動作するコンテナ40(コンテナnew)の情報を要素管理テーブル71に記録する際に、関連IDをID1に設定する。同様の処理が、VMnew_2で識別される仮想マシン30とコンテナnew_2で識別されるコンテナ40(関連ID=ID2)についても行われる。
経路変更部61は、VMnewで識別される仮想マシン30(関連ID=ID1)が起動すると、要素管理テーブル71を参照して、関連ID=ID1に設定されているコンテナ40を特定する。経路変更部61は、サービスチェインでの処理に用いる転送経路を、関連ID=ID1のコンテナ40を経由する経路から、関連ID=ID1の仮想マシン30を経由する経路に切り替える。
一方、VMnew_2で識別される仮想マシン30(関連ID=ID2)が起動されたとする。この場合、経路変更部61は、サービスチェインでの転送経路を、関連ID=ID2のコンテナ40の代わりにVMnew_2で識別される仮想マシン30を用いる経路に置き換える。
なお、関連IDの値と起動の順序の間に関連はないため、任意の関連IDの仮想マシン30から起動する。例えば、図24に示すSC管理テーブル72では、関連ID=ID1の仮想マシン30(VMnew)よりも、関連ID=ID2の仮想マシン30(VMnew_2)の方が先に起動している。このため、端末10Aから端末10Zに至る経路は、VMで識別される仮想マシン30、コンテナnew、および、VMnew_2で識別される仮想マシン30を介している。
このように、要素管理テーブル71において、追加対象となる仮想マシン30をその仮想マシン30の処理を代行するコンテナ40と対応付ける関連情報を記録することにより、複数の仮想マシン30を追加する処理を容易に行うことができる。
<第5の実施形態>
図25は、第5の実施形態が適用されるネットワークの例を説明する図である。第5の実施形態では、経路の切り替え処理をサーバ100が行う場合について説明する。このため、第5の実施形態で使用される管理サーバ90には、起動判定部64や転送要求部65が含まれない。一方、ネットワーク中のサーバ100には、経路変更部101、起動判定部102、転送要求部103が含まれる。以下、矢印A80に示す経路を用いたサービスチェインが設定されている場合において、ファイアウォールとして動作する仮想マシン30cを追加する場合を例として、第5の実施形態で行われる処理の例を説明する。なお、矢印A80に示す経路が設定されている場合、管理サーバ90は、要素管理テーブル71_31とSC管理テーブル72_31を保持しているものとする。このため、端末10Aから端末10Zに充てたパケットは、仮想マシン30aと仮想マシン30bを介して端末10Zに到達する。また、仮想マシン30aはDPIとして動作し、仮想マシン30bはProxyとして動作する。
図26は、第5の実施形態で行われる処理の例を説明する図である。経路変更部61は、仮想マシン30cの追加が要求されたことを検出すると、仮想マシン30cの起動のための処理を仮想マシン起動要求部62に要求する(矢印A81)。仮想マシン起動要求部62で行われる処理(矢印A82〜A84)は、図8を参照しながら説明した矢印A3〜A5の処理と同様である。さらに、経路変更部61は、仮想マシン30cの起動まで、仮想マシン30cの処理を代行するコンテナ40を起動するための処理をコンテナ起動要求部63に要求する(矢印A85)。仮想マシン起動要求部62で行われる処理(矢印A86〜A88)は、図8を参照しながら説明した矢印A6〜A8の処理と同様である。なお、図26の例では、コンテナ40と仮想マシン30cのいずれもサーバ100cで起動されるものとする。
矢印A89において、経路変更部61は、要素管理テーブル71とSC管理テーブル72を参照して、コンテナ40が起動した場合のサービスチェインで用いられる転送経路を計算する。図26の例では、コンテナ40が起動した場合のサービスチェインの転送経路は、端末10Aから、仮想マシン30a(VM)、コンテナ40、仮想マシン30b(VM)を介して、端末10Zに至る経路である。さらに、経路変更部61は、仮想マシン30cが起動した場合のサービスチェインで用いられる転送経路を計算する。仮想マシン30cが起動した場合のサービスチェインの転送経路は、端末10Aから、仮想マシン30a(VM)、仮想マシン30c(VMnew)、仮想マシン30b(VM)を介して、端末10Zに至る経路である。経路変更部61は、仮想マシン30cが起動した場合の経路の情報を、要素管理テーブル71とSC管理テーブル72に記録する。このため、矢印A89の処理が終わると、管理サーバ90は、要素管理テーブル71_32と要素管理テーブル71_32を保持することになる。
矢印A90において、経路変更部61は、コンテナ40が起動したときの転送経路と仮想マシン30cが起動したときの転送経路の各々を、サーバ100cの経路変更部101に通知する。このとき、経路変更部61は、各経路を用いる場合に転送先が変更される装置の情報も併せて通知している。例えば、図26の場合、経路変更部61は、以下の情報を、コンテナ40が起動されるサーバ100の経路変更部101に通知する。
コンテナ40の起動処理
コンテナ40の起動の判定条件
コンテナ40が起動したときの経路:IP→IP→IP→IP→IP
転送先の設定を行う装置と設定:IP(IP宛パケットの転送先:IP
転送先の設定を行う装置と設定:IP(IP宛パケットの転送先:IP
仮想マシン30cの起動処理
仮想マシン30cの起動の判定条件
仮想マシン30cが起動するサーバ100のアドレス
コンテナ40からの状態情報の引き継ぎ:有り
仮想マシン30cが起動したときの経路:IP→IP→IP→IP→IP
転送先の設定を行う装置と設定:IP(IP宛パケットの転送先:IP
転送先の設定を行う装置と設定:IP(IP宛パケットの転送先:IP
図27は、コンテナ40の起動が完了したかを判定するときに第5の実施形態で行われる処理の例を説明する図である。
矢印A101において、経路変更部101は、経路変更部61から取得した情報のうち、コンテナ40の起動判定条件と仮想マシン30cの起動判定条件を、起動判定部102に通知する。
矢印A102において、起動判定部102は、経路変更部101から通知された条件のうち、コンテナ40の起動判定条件を用いて、コンテナ40が起動しているかを判定する。起動判定部102は、コンテナ40の起動が確認できるまで、コンテナ40の起動が完了しているかの判定を定期的に繰り返す。起動判定部102は、コンテナ40が起動すると、コンテナ40の起動の完了を経路変更部101に通知する。
図28は、コンテナ40が起動したときに第5の実施形態で行われる処理の例を説明する図である。経路変更部101は、経路変更部61から通知された情報を用いて、仮想マシン30a(アドレス=IP)とコンテナ40(アドレス=IP)においての、端末10Z(IP)宛てのパケットの転送先を設定する(矢印A103、A104)。矢印A104において、経路変更部101は、仮想マシン30aに対して、切り替えメッセージを送信している。これらの処理により、サービスチェインの転送経路は、矢印A80(図27)から矢印A111に切り替えられる。
図29は、仮想マシン30cの起動が完了したかを判定するときに第5の実施形態で行われる処理の例を説明する図である。
矢印A112において、起動判定部102は、経路変更部101から通知された条件のうち、仮想マシン30cの起動判定条件を用いて、仮想マシン30cが起動しているかを判定する。起動判定部102は、仮想マシン30cの起動が確認できるまで、仮想マシン30cの起動が完了しているかの判定を定期的に繰り返す。起動判定部102は、仮想マシン30cが起動すると、仮想マシン30cの起動の完了を経路変更部101に通知する(矢印A113)。
図30は、仮想マシン30cが起動したときに第5の実施形態で行われる処理の例を説明する図である。仮想マシン30cが起動したことが通知されると、仮想マシン30cについて、コンテナ40からの状態情報の引き継ぎが行われるかを判定する。図26を参照しながら説明したように、経路変更部101には、仮想マシン30cについて、「コンテナ40からの状態情報の引き継ぎ=有り」という情報が通知されている。そこで、経路変更部101は、仮想マシン30cがコンテナ40から状態情報を引き継ぐと判定し、転送要求部103に、仮想マシン30cが起動したことを通知する(矢印A121)。
転送要求部103は、経路変更部101からの要求に応じて、コンテナ40に対し、パケットの転送処理に際して生成した状態情報を仮想マシン30cに送信することを要求する(矢印A122)。また、仮想マシン30cに対し、転送要求部103は、コンテナ40から状態情報を受信し、受信した状態情報を、パケットの処理に使用することを要求する(矢印A123)。コンテナ40は、転送要求部103からの要求に応じて、状態情報を仮想マシン30cに送信する(矢印A124)。一方、仮想マシン30cは、コンテナ40から受信した状態情報を、以後の処理に使用する。つまり、矢印A124の処理以降は、コンテナ40が生成した状態情報が仮想マシン30cに引き継がれるので、サービスチェインSC中のコンテナ40を仮想マシン30cに置き換えても、ファイアウォールの機能を継続的に提供できる。
次に、経路変更部101は、経路変更部61から通知された情報を用いて、仮想マシン30a(アドレス=IP)と仮想マシン30c(アドレス=IP)においての、端末10Z(IP)宛てのパケットの転送先を設定する(矢印A125、A126)。このため、サービスチェインの転送経路は、矢印A111(図28)から矢印A127に切り替えられる。
図25〜図30を参照しながら、コンテナ40と仮想マシン30が同じサーバ100で起動される場合を例として説明したが、コンテナ40と仮想マシン30は異なるサーバ100で起動されてもよい。コンテナ40と仮想マシン30が異なるサーバ100で起動される場合でも、コンテナ40を起動しているサーバ100中の経路変更部101には、管理サーバ90から仮想マシン30が起動するサーバ100のアドレスが通知されている。そこで、コンテナ40を起動するサーバ100中の経路変更部101は、仮想マシン30を起動しているサーバ100にアクセスすることにより、仮想マシン30の起動が完了しているかを判定できる。
図31は、第5の実施形態で行われる処理の例を説明するフローチャートである。図31は、コンテナ40を起動するサーバ100で行われる処理の例である。なお、図31は、コンテナ40と仮想マシン30が異なるサーバ100で起動される場合の例を示している。
経路変更部101は、管理サーバ90から経路変更の要求を受信する(ステップS51)。起動判定部102は、コンテナ40が起動したかを判定し、コンテナ40が起動するまで待機する(ステップS52でNo)。コンテナ40が起動すると、経路変更部101は、コンテナ40の起動によりパケットの転送先を変更する装置に、新しい転送先を通知する(ステップS53)。起動判定部102は、仮想マシン30の起動を要求されたサーバ100に対し、仮想マシン30の起動が完了したかを問い合わせる(ステップS54)。起動判定部102は、仮想マシン30の起動が完了しているかを判定し、仮想マシン30の起動が完了するまで待機する(ステップS55でNo)。経路変更部101は、仮想マシン30の起動が完了すると、コンテナ40に、状態情報を仮想マシン30に通知することを要求する(ステップS55でYes、ステップS56)。さらに、経路変更部101は、仮想マシン30の起動に伴い、パケットの転送先を変更する装置に、新しい転送先を通知する(ステップS57)。
第5の実施形態で説明したように、経路の切り替え処理をサーバ100が行うことにより、第1〜第4の実施形態に比べて、管理サーバ90の処理負担が小さくなる。
<その他>
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
以上の説明では、起動判定部64が問合わせを行うことにより、コンテナ40や仮想マシン30の起動を確認する場合を例として説明したが、コンテナ40や仮想マシン30が起動したかを判定する方法は変更され得る。
例えば、コンテナ40を起動することが要求されたサーバ20が、コンテナ40の起動が完了したかを判定してもよい。このとき、サーバ20は、コンテナ40でのプロセスが実行されているかを判定し、プロセスが実行されている場合に、コンテナ40が起動したと判定する。さらに、サーバ20は、コンテナ40の起動を確認すると、管理サーバ50に起動完了メッセージを送信することにより、コンテナ40の起動が完了したことを通知する。起動完了メッセージには、起動したコンテナ40を一意に識別する情報が含まれている。起動判定部64は、サーバ20から起動完了メッセージを受信すると、起動完了メッセージで起動が通知されたコンテナ40が起動していると判定して、コンテナ40の起動を経路変更部61に通知する。なお、仮想マシン30が起動される場合も、同様に、仮想マシン30を起動するサーバ20は、仮想マシン30の起動を確認すると、起動完了メッセージを管理サーバ50に通知する。
このように変形すると、管理サーバ50からサーバ20に送信されるメッセージの数が削減される。このため、管理サーバ50で管理するサービスチェインの数が大きくなっても、管理サーバ50がコンテナ40や仮想マシン30の起動を確認するために行う処理の負担が小さくなる。
また、起動判定部64は、管理サーバ50が起動完了メッセージを受信すると、起動完了メッセージによって起動が通知されたコンテナ40または仮想マシン30が起動しているかを問合わせるように変形されても良い。この場合も、起動判定部64は、起動の完了が通知されるまでは、問い合わせ処理を行わないので、管理サーバ50にかかる処理負担が小さい。さらに、起動完了メッセージの受信を契機に起動判定部64が仮想マシン30やコンテナ40の起動を確認するので、誤作動が発生しにくい。
さらに、コンテナ40と仮想マシン30の各々について、起動の要求から起動の完了にかかる時間の長さの予測値を予め設定しても良い。起動判定部64は、コンテナ40の起動がコンテナ起動要求部63から行われた時刻からの経過時間が、コンテナ40の起動にかかる予測値に達すると、コンテナ40が起動したと判定して、経路変更部61に通知する。同様に、仮想マシン30についても、仮想マシン起動要求部62から仮想マシン30の起動が要求された時刻からの経過時間が、仮想マシン30の起動にかかる時間の予測値に達すると、仮想マシン30が起動したと判定して、経路変更部61に通知する。このように変更されると、管理サーバ50は、コンテナ40や仮想マシン30が起動したかを判定するためにメッセージを送信しないので、処理負担が軽減される。
以上の説明で述べたテーブルに含まれる情報要素は実装に応じて変更され得る。また、起動要求メッセージなどの制御メッセージに含まれる情報要素も変更され得る。例えば、起動要求メッセージには、サービスチェイン識別子(SC ID)の代わりに、起動されるコンテナ40や仮想マシン30の識別子が含まれていても良い。例えば、図9のP13の代わりに、データとして、以下の情報を含む起動要求メッセージがサーバ20cに送信されても良い。
仮想マシン30の起動要求
起動される仮想マシン30の識別子 :VMnew
起動される仮想マシン30のIPアドレス:IP
起動される仮想マシン30の種別 :FW
また、図9に示す起動要求メッセージに、さらに、起動されるコンテナ40や仮想マシン30の識別子が追加されていても良い。
さらに、書き換え要求メッセージは、仮想マシン30やコンテナ40が動作しているサーバ20に対して送信されるように変形されても良い。この場合、書き換え要求メッセージには、図11に示す情報要素に加えて、書き換え要求メッセージで通知する転送先の変更の設定先を表わす情報が含まれる。
第2の実施形態で述べた処理は、仮想マシン30の処理を代行するコンテナ40が、生成した状態情報を仮想マシン30に送信する方法の一例であり、コンテナ40で生成された状態情報を仮想マシン30が取得する方法は、実装に応じて変更され得る。例えば、管理サーバ50は、コンテナ40に対しては、状態情報を仮想マシン30に転送することを要求するが、仮想マシン30に対しては、特に状態情報をコンテナ40から受信することを要求しなくても良い。この場合も、仮想マシン30は、コンテナ40から受信した情報を状態情報として使用する。
また、管理サーバ50が状態情報を中継しても良い。この場合、仮想マシン30が起動すると、経路変更部61は、経路を切り替える前に、転送要求部65に対して、コンテナ40で生成されている状態情報を、起動した仮想マシン30(VMnew)に引き継ぐための処理を要求する。転送要求部65は、コンテナ40に対して、コンテナ40での転送処理に使用されている状態情報を管理サーバ50に転送することを要求する。このとき、転送要求部65は、コンテナ40に対して、管理サーバ50に割り当てられているアドレスと、管理サーバ50に送信する状態情報の種類を特定するための情報などを含む要求メッセージを送信する。コンテナ40は、管理サーバ50からの要求を受信すると、管理サーバ50に対して、状態情報を送信する。状態情報は、管理サーバ50の転送要求部65によって管理される。
次に、転送要求部65は、状態情報をパケットの転送処理に使用することを要求する命令と状態情報を含む要求を、コンテナ40で行われていた処理を引き継ぐ仮想マシン30(VMnew)に対して送信する。VMnewで識別される仮想マシン30は、管理サーバ50からの要求を受信すると、受信したデータを状態情報として記憶する。
いずれの実施形態においても、コンテナ40を含む経路から、コンテナ40が処理を代行していた仮想マシン30を含む経路への切り替えが終了すると、コンテナ40は削除される。経路変更部61によって経路の切り替えが行われる場合、経路変更部61から、コンテナ40を稼動させているサーバ20に対して、コンテナ40の削除が要求される。一方、サーバ100中の経路変更部101が経路の切り替えを行っている場合、経路変更部101がコンテナ40の終了を要求する。なお、コンテナ40の削除は、コンテナ40自身に要求されても良い。コンテナ40の削除がサーバ20に要求される場合、削除対象のコンテナ40の特定の際に、コンテナ40の識別子、サービスチェインID、関連IDなどのうちの少なくとも1つが使用される。
上述の第1〜第5の実施形態を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
ネットワーク中の転送経路を管理する管理サーバであって、
前記転送経路に含まれる仮想マシンを起動させるための要求と、前記仮想マシンが起動するまでの間、前記仮想マシンが行う転送処理を代行するアプリケーションを起動させるための要求とを送信する送信部と、
前記アプリケーションの起動後に、前記転送経路中に前記アプリケーションを実行する実行装置を含めた第1の経路を設定し、前記仮想マシンの起動後に、前記第1の経路を、前記第1の経路中の前記実行装置を前記仮想マシンに置き換えた第2の経路に切り替えるための制御を行う制御部
を備えることを特徴とする管理サーバ。
(付記2)
前記制御部は、
前記実行装置に、前記実行装置が前記仮想マシンで行われる処理を代行する際に生成した情報を前記仮想マシンに送信することを要求し、
前記仮想マシンに、前記実行装置から前記情報を受信することを要求し、
前記仮想マシンが前記情報を受信すると、前記第1の経路を前記第2の経路に切り替える
ことを特徴とする付記1に記載の管理サーバ。
(付記3)
前記転送経路で処理を行っている装置を、前記仮想マシンに置換する場合、前記制御部は、
前記仮想マシンで置換される対象の装置である対象装置に、前記対象装置が転送処理に使用している第1の通信情報を、前記実行装置へ転送することを要求し、
前記実行装置に、前記対象装置から前記第1の通信情報を取得することを要求し、
前記仮想マシンが起動すると、前記実行装置が前記第1の通信情報を用いた処理により生成した第2の通信情報の前記仮想マシンへの送信を、前記実行装置に要求し、
前記仮想マシンが前記第2の通信情報を受信すると、前記第1の経路を前記第2の経路に切り替える
ことを特徴とする付記1または2に記載の管理サーバ。
(付記4)
前記送信部は、前記転送経路に複数の仮想マシンが含められる場合、前記複数の仮想マシンの各々を起動させるための要求と、前記複数の仮想マシンの各々で行われる処理を代行する複数のアプリケーションを起動させるための要求を送信し、
前記制御部は、
前記転送経路に、前記複数のアプリケーションのいずれかを実行する装置を含めた経路を設定し、
前記転送経路中で、前記複数の仮想マシンのうちで起動が確認できた仮想マシンの処理を代行しているアプリケーションが動作している装置を、前記起動が確認できた仮想マシンで置換する
ことを特徴とする付記1〜3のいずれか1項に記載の管理サーバ。
(付記5)
ネットワーク中の転送経路を管理する管理サーバと、
前記ネットワーク中で通信処理を行う通信サーバ
を備え、
前記管理サーバは、前記転送経路に含める仮想マシンの起動の要求と、前記仮想マシンが起動するまでの間、前記仮想マシンが行う転送処理を代行するアプリケーションの起動の要求とを、前記転送経路の情報とともに送信し、
前記通信サーバは、
前記アプリケーションの起動後に、前記転送経路中に前記通信サーバを含めた第1の経路を設定し、
前記仮想マシンの起動後に、前記第1の経路を、前記第1の経路中の前記通信サーバを前記仮想マシンに置き換えた第2の経路に切り替える
ことを特徴とする通信システム。
(付記6)
前記ネットワーク中で動作する他の通信サーバをさらに備え、
前記管理サーバは、
前記通信サーバに前記アプリケーションの起動の要求と、前記転送経路の情報を送信し、
前記他の通信サーバに、前記転送経路に含める仮想マシンの起動の要求を送信し、
前記通信サーバは、前記他の通信サーバでの前記仮想マシンの起動を確認すると、前記第1の経路を、前記第2の経路に切り替える
ことを特徴とする付記5に記載の通信システム。
(付記7)
ネットワーク中の転送経路を管理する管理サーバが、
前記転送経路に含まれる仮想マシンを起動させるための要求と、前記仮想マシンが起動するまでの間、前記仮想マシンが行う転送処理を代行するアプリケーションを起動させるための要求とを送信し、
前記アプリケーションの起動後に、前記転送経路中に前記アプリケーションを実行する実行装置を含めた第1の経路を設定し、
前記仮想マシンの起動後に、前記第1の経路を、前記第1の経路中の前記実行装置を前記仮想マシンに置き換えた第2の経路に切り替える
処理を行うことを特徴とする経路管理方法。
(付記8)
前記実行装置に、前記実行装置が前記仮想マシンで行われる処理を代行する際に生成した情報を前記仮想マシンに送信することを要求し、
前記仮想マシンに、前記実行装置から前記情報を受信することを要求し、
前記仮想マシンが前記情報を受信すると、前記第1の経路を前記第2の経路に切り替える
処理を、前記管理サーバが実行することを特徴とする付記7に記載の経路管理方法。
(付記9)
前記転送経路で処理を行っている装置を、前記仮想マシンに置換する場合、
前記仮想マシンで置換される対象の装置である対象装置に、前記対象装置が転送処理に使用している第1の通信情報を、前記実行装置へ転送することを要求し、
前記実行装置に、前記対象装置から前記第1の通信情報を取得することを要求し、
前記仮想マシンが起動すると、前記実行装置が前記第1の通信情報を用いた処理により生成した第2の通信情報の前記仮想マシンへの送信を、前記実行装置に要求し、
前記仮想マシンが前記第2の通信情報を受信すると、前記第1の経路を前記第2の経路に切り替える
処理を、前記管理サーバが実行することを特徴とする付記7または8に記載の経路管理方法。
(付記10)
前記転送経路に複数の仮想マシンが含められる場合、前記複数の仮想マシンの各々を起動させるための要求と、前記複数の仮想マシンの各々で行われる処理を代行する複数のアプリケーションを起動させるための要求を送信し、
前記転送経路に、前記複数のアプリケーションのいずれかを実行する装置を含めた経路を設定し、
前記転送経路中で、前記複数の仮想マシンのうちで起動が確認できた仮想マシンの処理を代行しているアプリケーションが動作している装置を、前記起動が確認できた仮想マシンで置換する
処理を、前記管理サーバが実行することを特徴とする付記7〜9のいずれか1項に記載の経路管理方法。
10 端末
20、100 サーバ
21 物理ハードウェア
22、32 OS
23 プログラム
24 変換情報テーブル
30 仮想マシン
31 仮想ハードウェア
33、41 アプリケーション
40 コンテナ
42 IDテーブル
50、90 管理サーバ
51 送受信部
52 送信部
53 受信部
54 取得部
60、91 制御部
61、101 経路変更部
62 仮想マシン起動要求部
63 コンテナ起動要求部
64、102 起動判定部
65、103 転送要求部
70 記憶部
71 要素管理テーブル
72 SC管理テーブル
73 IPアドレステーブル
81 プロセッサ
82 メモリ
83 入力装置
84 出力装置
85 バス
86 ネットワークインタフェース

Claims (7)

  1. ネットワーク中の転送経路を管理する管理サーバであって、
    前記転送経路に含まれる仮想マシンを起動させるための要求と、前記仮想マシンが起動するまでの間、前記仮想マシンが行う転送処理を代行するアプリケーションを起動させるための要求とを送信する送信部と、
    前記アプリケーションの起動後に、前記転送経路中に前記アプリケーションを実行する実行装置を含めた第1の経路を設定し、前記仮想マシンの起動後に、前記第1の経路を、前記第1の経路中の前記実行装置を前記仮想マシンに置き換えた第2の経路に切り替えるための制御を行う制御部
    を備えることを特徴とする管理サーバ。
  2. 前記制御部は、
    前記実行装置に、前記実行装置が前記仮想マシンで行われる処理を代行する際に生成した情報を前記仮想マシンに送信することを要求し、
    前記仮想マシンに、前記実行装置から前記情報を受信することを要求し、
    前記仮想マシンが前記情報を受信すると、前記第1の経路を前記第2の経路に切り替える
    ことを特徴とする請求項1に記載の管理サーバ。
  3. 前記転送経路で処理を行っている装置を、前記仮想マシンに置換する場合、前記制御部は、
    前記仮想マシンで置換される対象の装置である対象装置に、前記対象装置が転送処理に使用している第1の通信情報を、前記実行装置へ転送することを要求し、
    前記実行装置に、前記対象装置から前記第1の通信情報を取得することを要求し、
    前記仮想マシンが起動すると、前記実行装置が前記第1の通信情報を用いた処理により生成した第2の通信情報の前記仮想マシンへの送信を、前記実行装置に要求し、
    前記仮想マシンが前記第2の通信情報を受信すると、前記第1の経路を前記第2の経路に切り替える
    ことを特徴とする請求項1または2に記載の管理サーバ。
  4. 前記送信部は、前記転送経路に複数の仮想マシンが含められる場合、前記複数の仮想マシンの各々を起動させるための要求と、前記複数の仮想マシンの各々で行われる処理を代行する複数のアプリケーションを起動させるための要求を送信し、
    前記制御部は、
    前記転送経路に、前記複数のアプリケーションのいずれかを実行する装置を含めた経路を設定し、
    前記転送経路中で、前記複数の仮想マシンのうちで起動が確認できた仮想マシンの処理を代行しているアプリケーションが動作している装置を、前記起動が確認できた仮想マシンで置換する
    ことを特徴とする請求項1〜3のいずれか1項に記載の管理サーバ。
  5. ネットワーク中の転送経路を管理する管理サーバと、
    前記ネットワーク中で通信処理を行う通信サーバ
    を備え、
    前記管理サーバは、前記転送経路に含める仮想マシンの起動の要求と、前記仮想マシンが起動するまでの間、前記仮想マシンが行う転送処理を代行するアプリケーションの起動の要求とを、前記転送経路の情報とともに送信し、
    前記通信サーバは、
    前記アプリケーションの起動後に、前記転送経路中に前記通信サーバを含めた第1の経路を設定し、
    前記仮想マシンの起動後に、前記第1の経路を、前記第1の経路中の前記通信サーバを前記仮想マシンに置き換えた第2の経路に切り替える
    ことを特徴とする通信システム。
  6. 前記ネットワーク中で動作する他の通信サーバをさらに備え、
    前記管理サーバは、
    前記通信サーバに前記アプリケーションの起動の要求と、前記転送経路の情報を送信し、
    前記他の通信サーバに、前記転送経路に含める仮想マシンの起動の要求を送信し、
    前記通信サーバは、前記他の通信サーバでの前記仮想マシンの起動を確認すると、前記第1の経路を、前記第2の経路に切り替える
    ことを特徴とする請求項5に記載の通信システム。
  7. ネットワーク中の転送経路を管理する管理サーバが、
    前記転送経路に含まれる仮想マシンを起動させるための要求と、前記仮想マシンが起動するまでの間、前記仮想マシンが行う転送処理を代行するアプリケーションを起動させるための要求とを送信し、
    前記アプリケーションの起動後に、前記転送経路中に前記アプリケーションを実行する実行装置を含めた第1の経路を設定し、
    前記仮想マシンの起動後に、前記第1の経路を、前記第1の経路中の前記実行装置を前記仮想マシンに置き換えた第2の経路に切り替える
    処理を行うことを特徴とする経路管理方法。
JP2015007281A 2015-01-16 2015-01-16 管理サーバ、通信システム、および、経路管理方法 Pending JP2016134700A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015007281A JP2016134700A (ja) 2015-01-16 2015-01-16 管理サーバ、通信システム、および、経路管理方法
US14/960,492 US20160212237A1 (en) 2015-01-16 2015-12-07 Management server, communication system and path management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015007281A JP2016134700A (ja) 2015-01-16 2015-01-16 管理サーバ、通信システム、および、経路管理方法

Publications (1)

Publication Number Publication Date
JP2016134700A true JP2016134700A (ja) 2016-07-25

Family

ID=56408718

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015007281A Pending JP2016134700A (ja) 2015-01-16 2015-01-16 管理サーバ、通信システム、および、経路管理方法

Country Status (2)

Country Link
US (1) US20160212237A1 (ja)
JP (1) JP2016134700A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020166314A1 (ja) * 2019-02-13 2020-08-20 日本電信電話株式会社 通信制御方法
JP2021005815A (ja) * 2019-06-27 2021-01-14 株式会社エヴリカ 情報処理装置、方法およびプログラム

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9225638B2 (en) 2013-05-09 2015-12-29 Vmware, Inc. Method and system for service switching using service tags
US10225137B2 (en) 2014-09-30 2019-03-05 Nicira, Inc. Service node selection by an inline service switch
US9825810B2 (en) 2014-09-30 2017-11-21 Nicira, Inc. Method and apparatus for distributing load among a plurality of service nodes
US20160261505A1 (en) * 2015-03-04 2016-09-08 Alcatel-Lucent Usa, Inc. Localized service chaining in nfv clouds
US10594743B2 (en) 2015-04-03 2020-03-17 Nicira, Inc. Method, apparatus, and system for implementing a content switch
US11824863B2 (en) * 2016-11-03 2023-11-21 Nicira, Inc. Performing services on a host
US10797966B2 (en) 2017-10-29 2020-10-06 Nicira, Inc. Service operation chaining
JP6959519B2 (ja) * 2017-11-06 2021-11-02 富士通株式会社 処理分散プログラム、処理分散装置及び処理分散方法
US10797910B2 (en) 2018-01-26 2020-10-06 Nicira, Inc. Specifying and utilizing paths through a network
US10805192B2 (en) 2018-03-27 2020-10-13 Nicira, Inc. Detecting failure of layer 2 service using broadcast messages
US11595250B2 (en) 2018-09-02 2023-02-28 Vmware, Inc. Service insertion at logical network gateway
US11467861B2 (en) 2019-02-22 2022-10-11 Vmware, Inc. Configuring distributed forwarding for performing service chain operations
US11012351B2 (en) * 2019-02-22 2021-05-18 Vmware, Inc. Service path computation for service insertion
US11140218B2 (en) 2019-10-30 2021-10-05 Vmware, Inc. Distributed service chain across multiple clouds
US11283717B2 (en) 2019-10-30 2022-03-22 Vmware, Inc. Distributed fault tolerant service chain
US11659061B2 (en) * 2020-01-20 2023-05-23 Vmware, Inc. Method of adjusting service function chains to improve network performance
US11438257B2 (en) 2020-04-06 2022-09-06 Vmware, Inc. Generating forward and reverse direction connection-tracking records for service paths at a network edge
US11734043B2 (en) 2020-12-15 2023-08-22 Vmware, Inc. Providing stateful services in a scalable manner for machines executing on host computers
US11611625B2 (en) 2020-12-15 2023-03-21 Vmware, Inc. Providing stateful services in a scalable manner for machines executing on host computers

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8117495B2 (en) * 2007-11-26 2012-02-14 Stratus Technologies Bermuda Ltd Systems and methods of high availability cluster environment failover protection

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020166314A1 (ja) * 2019-02-13 2020-08-20 日本電信電話株式会社 通信制御方法
JP2021005815A (ja) * 2019-06-27 2021-01-14 株式会社エヴリカ 情報処理装置、方法およびプログラム
JP7396615B2 (ja) 2019-06-27 2023-12-12 株式会社エヴリカ 情報処理装置、方法およびプログラム

Also Published As

Publication number Publication date
US20160212237A1 (en) 2016-07-21

Similar Documents

Publication Publication Date Title
JP2016134700A (ja) 管理サーバ、通信システム、および、経路管理方法
EP3316532B1 (en) Computer device, system and method for implementing load balancing
US8971342B2 (en) Switch and flow table controlling method
US10191760B2 (en) Proxy response program, proxy response device and proxy response method
JP6040711B2 (ja) 管理サーバ、仮想マシンシステム、プログラム及び接続方法
JP2010114665A (ja) 通信データ制御方法及び計算機システム
JP2014048900A (ja) 計算機システム及びパケット転送方法
Chiang et al. SDN-based server clusters with dynamic load balancing and performance improvement
Li et al. HyperMIP: Hypervisor controlled mobile IP for virtual machine live migration across networks
JP2012231382A (ja) 仮想環境における仮想ルーティング方法及び仮想ルーティングシステム
JP2016100625A (ja) 経路情報提供プログラム、経路情報提供方法、経路情報提供装置、情報処理システムの経路制御方法、及び、情報処理システム
US10764234B2 (en) Method and system for host discovery and tracking in a network using associations between hosts and tunnel end points
JP2017041846A (ja) 管理装置、制御装置、および、通信システム
JP5609527B2 (ja) ネットワーク仮想化システム、ノード、ネットワーク仮想化方法、及び、ネットワーク仮想化プログラム
JP2016009972A (ja) 通信制御装置,通信制御プログラム及び通信制御方法
Desmouceaux et al. Zero-loss virtual machine migration with IPv6 segment routing
US10924397B2 (en) Multi-VRF and multi-service insertion on edge gateway virtual machines
US10904037B2 (en) Relaying apparatus, relaying method, and relaying system
JP2016184370A (ja) 監視システム、監視装置および監視方法
JP5505707B2 (ja) ネットワークシステム及びその運用方法
CN109417513B (zh) 软件定义网络中动态检测对端的系统和方法
US20200274791A1 (en) Multi-vrf and multi-service insertion on edge gateway virtual machines
JP2012203421A (ja) 情報処理方法、管理サーバおよび管理プログラム
US10958558B2 (en) Reactive source routing associated with a network
JP5919981B2 (ja) 検疫ネットワークシステム、検疫サーバ、検疫方法、及びプログラム