[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP6740543B2 - 通信装置、システム、ロールバック方法及びプログラム - Google Patents

通信装置、システム、ロールバック方法及びプログラム Download PDF

Info

Publication number
JP6740543B2
JP6740543B2 JP2019502811A JP2019502811A JP6740543B2 JP 6740543 B2 JP6740543 B2 JP 6740543B2 JP 2019502811 A JP2019502811 A JP 2019502811A JP 2019502811 A JP2019502811 A JP 2019502811A JP 6740543 B2 JP6740543 B2 JP 6740543B2
Authority
JP
Japan
Prior art keywords
controller
switch
network
rollback
control unit
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.)
Active
Application number
JP2019502811A
Other languages
English (en)
Other versions
JP2019530267A (ja
Inventor
貴之 佐々木
貴之 佐々木
ダニエレ エンリコ アソーニ、
ダニエレ エンリコ アソーニ、
アドリアン ぺリグ、
アドリアン ぺリグ、
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of JP2019530267A publication Critical patent/JP2019530267A/ja
Application granted granted Critical
Publication of JP6740543B2 publication Critical patent/JP6740543B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/28Routing or path finding of packets in data switching networks using route fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/085Retrieval of network configuration; Tracking network configuration history
    • H04L41/0859Retrieval of network configuration; Tracking network configuration history by keeping history of different configuration generations or by rolling back to previous configuration versions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/40Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
    • 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/45562Creating, deleting, cloning 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/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Description

本発明は、通信装置、システム、ロールバック方法及びプログラムに関する。
SDN(Software Defined Network)アーキテクチャでは、コントロールプレーンとデータプレーンが分離され、ネットワークインテリジェンスとその状態が論理的に集中化され、基盤となるネットワークインフラストラクチャがアプリケーションから抽象化される。その結果、これ迄にないプログラマビリティ、自動化、ネットワーク制御が提供され、通信事業者は、例えば、変化する環境やニーズに容易に適応できる、高度にスケーラブルで柔軟なネットワークが構築可能である(非特許文献1)。図19に示されるように、SDNアーキテクチャは、通常、SDNコントローラ1と、SDNノースバウンドインタフェース6を介してSDNコントローラ1に接続されたSDNアプリケーション2と、SDNコントローラ1にSDNコントロールデータプレーンインタフェース(SDNサウスバウンドインタフェース7)を介して接続されたネットワーク要素3とを含む。SDNコントローラ1は、SDNノースバウンドインタフェース6を介してSDNアプリケーション2(ノースバウンドアプリケーション)から指示、または要件を受信し、受信した指示または要件を、SDNサウスバウンドインタフェース7を介してネットワーク要素3に中継する。また、SDNコントローラ1は、記憶装置(データベース)4内のネットワーク要素3のネットワーク状態を抽出し、管理する。ネットワーク要素3は、パケットデータの転送および処理の機能を実行するスイッチを含む場合もある。これに限定されるものではないが、ネットワークポリシー5は、例えば、一連の要件を満たすポリシーベースの仮想ネットワークを動的に作成するために使用される。ネットワークポリシー5が、あるウェブサイトからのダウンロードトラフィックなどの経路のトラフィック制御が、午前9時から午後1時まで、ノードN1及びノードN2間の通過を許さないというポリシーである場合、ネットワークポリシー5は、例えば、SDNアプリケーション2によって、SDNコントローラ1が使用するフォーマットに適合した転送規則に変換され、SDNコントローラ1に提供される。SDNコントローラ1は、提供されたネットワークポリシーと、記憶装置4にネットワーク状態として記憶されているネットワークトポロジに基づき、経路計算を行うことができる。以下にSDNの一つの例として、オープンフロー(OpenFlow)の概要を示す。なお、オープンフローは、SDNで利用可能な唯一のプロトコルではない。
スイッチ(図19のネットワーク要素3に対応、OpenFlow Switch(OFS)とも称される)は、1つまたは複数のフローエントリを含むフローテーブルを備える。各フローエントリは、受信パケットのヘッダフィールド情報と照合されるマッチフィールドと、受信パケット数や受信バイト数などの統計情報を含むカウンタフィールドと、ヘッダフィールド情報がマッチフィールドと一致する受信パケットをどのように処理すべきかスイッチに指示する、ゼロ又はそれ以上のアクションを示すアクションフィールドとを含む。パケットを受信すると、スイッチは、受信パケットのヘッダフィールド情報を用いて、自らのフローテーブルを検索する。ミスヒット(不一致)の場合、スイッチは、セキュアチャネルを介して、Packet−Inメッセージを用いて受信パケット(第1のパケット)をコントローラ(SDNコントローラ)に送信する。
Packet−Inメッセージを受信すると、コントローラ(図19のSDNコントローラに対応)は、第1のパケットの送信元と宛先の情報に基づき、ネットワークトポロジ情報を参照してパケットの経路を算出する。当該経路に基づき、コントローラは経路上に配置された各スイッチに対してフローエントリを生成し、フロー変更(Flow−Mod)メッセージを経路上に配置された各スイッチに送信することにより、生成されたフローエントリをそれぞれのスイッチに対して設定する。コントローラにより設定されたフローエントリのマッチフィールドに一致するヘッダを有する、第1のパケットに続く少なくとも1つのパケットを受信すると、経路上の各スイッチは、上記少なくとも1つのパケットを、例えば、フローエントリのアクションフィールドに定義されているように、次のノードに転送する。オープンフローの詳細は、以下の非特許文献2に記載されている。
特許文献1に、以下の構成が開示されている。コントローラは、当該コントローラに保持されているフローテーブルと、スイッチ(オープンフロースイッチ)のフローテーブルと間の差異を修正するためのaudit処理(同期処理)を行う。これは、コントローラとスイッチ間でフローテーブルが同期されていることは、コントローラによる正確な経路計算の前提条件だからである。しかし、最初のパケットのための経路計算に必要なフローエントリには制限がある。即ち、最初のパケットの送信元および宛先と一致する1つ以上のフローエントリが、経路計算のための同期には必要である。経路計算のために、全てのフローテーブルの全てのフローエントリを必ず同期しなければならない必要はない。コントローラは、同期が必要なフローエントリのみに対してaudit処理を実行する。
特許文献2には、以下の構成が開示されている。障害復旧後のネットワーク環境は、その障害の発生時点から変更または更新されており、新たな通信経路またはフローエントリを設定することが有効である。コントローラは、優先度を付加したフローエントリをスイッチに設定し、スイッチは、優先度に応じてフローエントリを設定するか否かを決定する。
特許文献3には、スイッチのフローエントリに異常が見つかった場合、コントローラが、別のスイッチの関連するフローテーブル(フローエントリ)をロールバックするように制御する構成が開示されている。
SDNアーキテクチャとは関係はなく、冗長化システムに関するものだが、特許文献4には、稼働中のプログラムが実行するフィールドデバイスの監視や制御を妨げないようなタイミングで、上記稼働中のプログラムの代替プログラムへの切り替えが可能な構成が開示されている。稼働中のプログラムが、高精度なリアルタイム処理を実行している場合には、そのリアルタイム処理が完了するまで、代替プログラムへの切り替えタイミングを遅らせる。
国際公開第2013/108761号 特開2011−166384号公報 特表2013−545321号公報(PCT出願の翻訳) 国際公開第2015/037116号
"Software-Defined Networking: The New Norm for Networks," ONF White Paper April 13, 2012 Internet <URL:https://www.opennetworking.org/images/stories/downloads/sdn-resources/white-papers/wp-sdn-newnorm.pdf> "OpenFlow Switch Specification Version 1.5.0 (Protocol version 0x06)," December 19, 2014, Internet <URL:https://www.opennetworking.org/images/stories/downloads/sdn-resources/onf-specifications/openflow/openflow-switch-v1.5.0.noipr.pdf> Naga Katta, Haoyu Zhang, Michael Freedman, and Jennifer Rexford, "Ravana: controller fault-tolerance in software-defined networking," Proceedings of the 1st ACM SIGCOMM Symposium on Software Defined Networking Research (SOSR '15), June 17-18, 2015
上記特許文献1−4及び非特許文献1−3の全開示内容は、引用をもって本明細書に組み込み記載されているものとする。
以下の分析は、本発明の発明者によってなされたものである。
SDNでは、スイッチプロセスやコントローラプロセスなどの処理が持続的に実行される。
プロセスがマルウェアなどによって侵害されると、その損害は時間が経過しても残る可能性がある。非特許文献1や2のような関連技術では、異常が生じた要素またはプロセスの回復を可能にする仕組みが、何も提供されていない。したがって、ある要素や、スイッチ、コントローラなどのネットワークノードが侵害されると、損害がネットワーク全体にさらに広がる可能性がある。
スイッチプロセスまたはコントローラプロセスを、以前に保存したバージョンに後進復帰するロールバックを使用して、プロセスを元の状態に戻すことができる。
プロセスにおける侵害されたコードは、コントローラプロセスなどのプロセスの実行ロールバックによって削除できる。しかし、悪質なプロセス(例えば、図19のSDNコントローラ1による)は、図19の記憶装置4に記憶されたネットワーク状態を侵害し、ロールバックによって元の状態に戻ったプロセスが、侵害されたネットワーク状態を用いて間違った決定をすることになる。
ネットワーク状態の異常を除去するために、ネットワーク状態を、以前に保存された状態にロールバック(または消去)することが考えられる。しかし、以前に保存された状態にロールバックされたネットワーク状態は、現在の状態と同期していない可能性がある。ロールバック処理によってロールバックされたネットワーク状態を使用すると、ネットワーク状態のロールバック状態と現在の状態との間の矛盾により、処理の誤動作を導く可能性もある。その理由は、ロールバックされた、以前に保存されたネットワーク状態が、その以前の保存のタイミングからロールバックタイミングまでのネットワーク状態への更新を反映しない可能性があるからである。従って、ロールバックされたプロセスは、以前に保存された状態にロールバックされたネットワーク状態をそのまま使用することはできず、ロールバックされたネットワーク状態を現在の状態と一致する状態に更新する必要がある。
もう一つ考えられる可能性は、プロセスにおいて、ロールバック後に新しいネットワーク状態を取得することである。しかし、コントローラプロセスなどの処理において、スイッチなどのネットワーク要素からネットワーク状態を取得するのにも時間を要し、ネットワーク状態の取得中にネットワークの動作に問題が生じる可能性があり、場合によってはネットワークが利用できなくなることもある。コントローラプロセスによるネットワーク状態の取得中に、例えば、数秒または数分のネットワークダウンを引き起こす場合がある。
非特許文献3には、アプリケーションを制御するための無欠陥の集中コントローラの抽象化を提供する、Ravanaと称される耐障害性(フォールトトレラント:fault−tolerant)のSDNコントローラプラットフォームが開示されている。物理的に分離されたコントローラ間のフェールオーバーを前提とするRavanaは、矛盾を防ぐために以下の仕組みを展開する。
− スイッチイベントのバッファリングと再送信(スイッチイベントは失われない)
− ログにおけるイベントIDとフィルタリング(2回以上処理されるイベントは存在しない)
− マスタは、イベントを共有ログにシリアル化する(複製はイベントを同じ順序で処理する)
− イベントログの2段階レプリケーションと決定論的再実行(複製は同じ内部状態を構築する)
− スイッチからのRPC(Remote Procedure Call;遠隔手続き呼出)確認応答(コントローラコマンドは失われない)
− スイッチにおいてのコマンドIDとフィルタリング(コマンドは繰り返し実行されない)
Ravanaは、トランザクションが全ての複製において全体的に順序付けされ、システム全体で厳密に一度だけ実行されることを保証する。また、Ravanaは、ロールバックやコマンドの繰り返し実行に頼らずに、スイッチの状態を正しく処理できる。
しかし、上記のRavanaの仕組みは複雑すぎる。
本発明者らは、ネットワーク状態のロールバックにおける問題に対する解決策を考案した。
従って、本発明は、ネットワーク負荷の増大を抑制しつつ、安全なネットワーキングを確保するためのロールバックにおける不整合の発生を防止することが可能なシステム、装置、方法及びプログラムを提供することを目的とする。
本発明の第1の側面によれば、第1のプロセスを第2のプロセスにロールバックするロールバック制御部と、前記第1のプロセス及び前記第2のプロセスによって共有される1つ又は複数のネットワーク状態を記憶する記憶部と、を備え、前記第2のプロセスは前記1つ又は複数のネットワーク状態を前記第1のプロセスから引き継ぐことが可能であり、
前記ロールバック制御部は、前記第2のプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御するネットワーク状態制御部を含む通信装置が提供される。
本発明の第2の側面によれば、フローベースのパケット転送に適合された1つ又は複数のスイッチを制御するコントローラ装置であって、第1のコントローラプロセスを第2のコントローラプロセスにロールバックするロールバック制御部と、前記第1のコントローラプロセス及び前記第2のコントローラプロセスによって共有される1つ又は複数のネットワーク状態を記憶する記憶部と、を備え、前記ロールバック制御部は、前記第2のコントローラプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御するネットワーク状態制御部を含むコントローラ装置が提供される。
本発明の第3の側面によれば、フローベースのパケット転送に適合されたスイッチ装置であって、第1のスイッチプロセスを第2のスイッチプロセスにロールバックするロールバック制御部と、前記第2のスイッチプロセスは1つ又は複数のネットワーク状態を前記第1のスイッチプロセスから引き継ぐことが可能であり、前記第1のスイッチプロセス及び前記第2のスイッチプロセスによって共有される1つ又は複数のネットワーク状態を記憶する記憶部と、を備え、前記ロールバック制御部は、前記第2のスイッチプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御するネットワーク状態制御部を含む、スイッチ装置が提供される。
本発明の第4の側面によれば、それぞれ第3の側面による、1つ以上のスイッチ装置と第2の側面によるコントローラ装置と、を備える通信システムが提供される。
本発明の第5の側面によれば、第1のプロセスを第2のプロセスにロールバックし、
前記第1のプロセス及び前記第2のプロセスは、記憶部に記憶された状態を共有し、前記第2のプロセスは、前記記憶部に記憶された1つ又は複数のネットワーク状態を引き継ぐことが可能であり、
前記第2のプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御する、ロールバック方法が提供される。
本発明の第6の側面によれば、第1のプロセスを第2のプロセスにロールバックし、
前記第1のプロセス及び前記第2のプロセスは、記憶部に記憶された状態を共有し、前記第2のプロセスは、前記記憶部に記憶された1つ又は複数のネットワーク状態を引き継ぐことが可能であり、
前記ロールバック後に、前記第2のプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御すること、を含む処理をコンピュータに実行させるプログラムが提供される。
本発明の第7の側面によれば、本発明の第6の側面によるプログラムが記憶されている、ROM(Read Only Memory)、又はRAM(Random Access Memory)、又はEEPROM(Electrically and Erasable Programmable Read Only Memory)、ハードディスクドライブ(HDD)、CD(Compact Disk)又はDVD(Digital Versatile Disk)などの半導体記憶装置のようなコンピュータが読み取り可能な記録媒体または非一時的な記録媒体が提供される。
本発明によれば、ネットワーク負荷の増大を抑制しつつ、安全なネットワーキングを確保するためのロールバックにおける不整合の発生を防止することが可能になる。
本発明のさらに他の特徴及び利点は、本発明を実施することが企図されている最良の形態の単なる例示により、本発明の実施形態のみを図示及び説明した添付の図面と併せて以下の詳細な説明から当業者には容易に明らかになるであろう。理解されるように、本発明は、他の異なる実施形態が可能であり、そのいくつかの詳細は、本発明から逸脱することなく、様々な明白な点において変更可能である。従って、図面及び説明は、本質的に例示的であるとみなされるべきであり、限定的ではないとみなされるべきである。
本発明の第1の例示的な実施形態における通信装置の構成を示す図である。 本発明の第1の例示的な実施形態のロールバック方式を模式的に示す図である。 比較例のロールバック方式を模式的に示す図である。 本発明の第1の例示的な実施形態のロールバック方式を模式的に示す図である。 本発明の第2の例示的な実施形態における通信装置の構成を示す図である。 本発明の第2の例示的な実施形態における通信装置の動作を示す図である。 本発明の第3の例示的な実施形態におけるコントローラの構成を示す図である。 本発明の第3の例示的な実施形態におけるスイッチの構成を示す図である。 本発明の第3の例示的な実施形態におけるロールバックを示す図である。 本発明の第3の例示的な実施形態のロールバックにおけるイベントバッファリングを示す図である。 本発明の第3の例示的な実施形態におけるロールバック制御部(ハイパーバイザ)の構成を示す図である。 本発明の第3の例示的な実施形態におけるロールバック動作を示す図である。 本発明の第3の例示的な実施形態におけるスイッチのディスパッチテーブルを示す図である。 本発明の第4の例示的な実施形態におけるコントローラを示す図である。 本発明の第4の例示的な実施形態におけるスイッチの構成を示す図である。 本発明の第4の例示的な実施形態におけるテナントベースのネットワークを示す図である。 本発明の実施形態におけるメモリアイソレーションを示す図である。 ページングを示す図である。 サーバコンピュータを示す図である。 SDNアーキテクチャを示す図である。
以下、本発明の例示的な実施形態について説明する。
[第1の例示的な実施形態]
図1は、第1の例示的な実施形態による通信装置(ネットワークノード)を示す図である。図1を参照すると、通信装置10は、ネットワーク状態を記憶する記憶部13と、ロールバック部151及びネットワーク状態更新制御部152を含むロールバック制御部15と、メッセージ又はパケットをネットワークとの間で送受信するネットワークインタフェースカード(NIC)(ネットワークインタフェースコントローラ)17とを備えている。
ロールバック部151は、ロールバックされる第1のプロセス11を、第2のプロセス12にロールバックする制御を実行するように構成されている。第2のプロセス12は、新たに作成されたプロセスでもよい。第2のプロセス12の機能および動作は、第1のプロセス11の機能および動作と同じである。
本実施形態において、プロセスのロールバックは、ロールバックされる第1のプロセス11から第2のプロセス12への、稼働中のプロセスの切り替えとして実施されてもよい。
ロールバック部151は、第1のプロセス11から第2のプロセス12に、稼働中のプロセスを切り替えた後、第1のプロセス11を終了させる制御を行ってもよい。
あるいは、第2のプロセス12は、第1のプロセス11の以前に保存されたイメージのプロセスであってもよい。
第1のプロセス11を、以下では、「旧プロセス11」と表示又は称することができる。第1のプロセス11をロールバックするために新たに作成された第2のプロセス12を、以下では「新プロセス12」と表示し、称することができる。
旧プロセス11は、記憶部13に記憶されるネットワーク状態を書き込み、更新する。ロールバックにおいて、ネットワーク状態は、新プロセス12により引き継がれる。新プロセス12の作成から、旧プロセス11から新プロセス12への切り替えまでの期間中、新プロセス12と旧プロセス11は、記憶部13に格納されたネットワーク状態を共有することができる。
記憶部13は、旧プロセス11により記憶部13に記憶されたネットワーク状態を新プロセス12に引き継がせるためのネットワーク状態共有メカニズムとして機能してもよい。即ち、旧プロセス11から新プロセス12への切替時点において、新プロセス12は、記憶部13に記憶された状態の最新の更新へのアクセスが可能である。ロールバック時に旧プロセス11から新プロセス12に稼働中のプロセスを切り替えた後、新プロセス12は、記憶部13に格納されたネットワーク状態を読み出し、書き込む(更新する)ことができる。記憶部13は、ハードディスクドライブ(HDD)、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、SSD(Solid State Drive)、又はEEPROM(Electrically and Erasable Programmable Read Only Memory)などの半導体記憶装置を備えることができるが、これに限定されるものではない。
第1のプロセス11の侵害されたコード(イメージ)は、第1のプロセス11から第2のプロセス12へのロールバックによって除去できる。記憶部13に記憶されたネットワーク状態が、侵害を受けた旧プロセス11によって生成される場合がある。従って、ロールバックされるフローエントリなどのネットワーク状態は、確認され更新される必要がある。記憶部13に記憶されたネットワーク状態を引き継ぐ新プロセス12は、旧プロセス11により記憶部13に格納されたネットワーク状態を確認し、更新する必要がある。
上述の通り、コントローラプロセスなど新たなプロセスが、ネットワーク状態を安全な形に更新するために、スイッチなど全ての必要なネットワーク要素からネットワーク状態を取得するには、時間がかかり、ネットワークリソース(負荷)と処理負荷を必要とする。新プロセス(コントローラプロセス)によるこの操作は、数秒または数分間ネットワークを利用不可にする可能性がある。例えば、ネットワークトポロジの更新のために、新プロセス(コントローラプロセス)は、各スイッチのポートが接続されているホストに関する情報であるホスト位置情報の最新の情報を得る必要がある。これは、新プロセス(コントローラプロセス)側にとって、帯域幅などのネットワークリソースを必要とし、負荷が高くなる可能性がある。
本実施形態においては、ネットワーク状態更新制御部152は、旧プロセス11から新プロセス12に引き継がれたネットワーク状態の更新において、ネットワーク及び新プロセス12への負荷を軽減するように制御する。
ネットワーク状態更新制御部152は、必ずしも旧プロセス11から新プロセス12へのロールバックと共にネットワーク状態の更新が開始せず、旧プロセス11から新プロセス12へのロールバックの後かつ新プロセス12がネットワーク状態を使用する前のタイミングまで遅延するように制御する。未使用のネットワーク状態は、更新されないままでもよい(ロールバック(Lazy Rollback))。この方法では、ネットワーク状態の更新に遅延が生じるが、新プロセス12は、ネットワーク状態の更新に必要な負荷が軽減された状態で、安全な新しいネットワーク状態にアクセス(使用)することができる。
記憶部13に記憶されているネットワーク状態は、更新フラグフィールドを各エントリに有していてもよいが、これに限定されるものではない。ネットワーク状態更新制御部152は、旧プロセス11から新プロセス12へのロールバックのタイミングで、新プロセス12に引き継がれた各ネットワーク状態に関連付けられた各更新フラグを消去(リセット)するように構成されていてもよい。
新プロセス12が、記憶部13に格納されたネットワーク状態にアクセスする際、新プロセス12は、各ネットワーク状態の更新フラグの値をチェックしてもよい。ネットワーク状態の更新フラグが消去されたまま(オフ状態)である場合、新プロセス12は、ネットワーク状態更新制御部152の制御の下、ネットワークノードにおいて関連するネットワーク状態を検索し取得する。記憶部13のネットワーク状態を、ネットワークノードから取得した新たなネットワーク状態で更新した後、ネットワーク状態更新制御部152は、このネットワーク状態に関連付けられた更新フラグを更新完了状態(オン状態)に設定してもよい。 新プロセス12は、検索によって更新されたネットワーク状態にアクセスできてもよい。これに限定されるものではないが、ネットワーク状態更新制御部152は、検索によるネットワーク状態の更新が完了するまで、検索により更新されていないネットワーク状態に新プロセス12がアクセスできないように制御するように構成されていてもよい。
ネットワーク状態が確率的に更新されるようにネットワーク状態更新制御部152が制御する変形例もある。
例えば、新プロセスが記憶部13に記憶されたネットワーク状態を使用しようとするとき、ネットワーク状態更新制御部152は、例えば、サイコロ振りをシミュレートする、1から6までの整数をランダムに生成するサイコロゲームを行ってもよい。ランダムに生成された整数が所定の数になった場合、新プロセス12は、ネットワークノードの検索によって得られた新しいネットワーク状態で、記憶部13に記憶されたネットワーク状態を更新してもよく、もしそうでない場合、新プロセス12は、記憶部13に格納されているネットワーク状態の更新をせず、記憶部13に記憶されている、未だ検索により更新されていないネットワーク状態を使用する。
あるいは、生成された0から1の乱数が所定のサブレンジ、例えば、[0.0〜0.1]内である場合、新プロセス12は、ネットワークノードの検索によって得られた新しいネットワーク状態で、記憶部13に記憶されたネットワーク状態を更新してもよいが、生成された乱数がサブレンジ[0.1〜1.0]内にある場合、新プロセス12はネットワーク状態の更新を実行せず、記憶部13に格納されている、異常を持つ可能性のあるネットワーク状態を使用する。この場合、ネットワーク状態が更新される確率は1/10である。あるいは、新プロセス12によって引き継がれるネットワーク状態に、ある順序で整数を割り当て、ランダムに生成された整数に一致する数を割り当てられたネットワーク状態のみが更新されるように、ランダムに生成された整数に応じてネットワーク状態を更新してもよい。さらに、新プロセス12に引き継がれるネットワーク状態の更新は、ある確率論的モデルに基づいて制御されてもよい。また、新プロセス12に引き継がれるネットワーク状態の確率的更新を実施するために、他のいずれの方法を採用してもよい。
新プロセス12に引き継がれたネットワーク状態に存在する異常は、時間の経過とともに確率的に除去される。異常を持つネットワーク状態が使用されるため、ネットワーク状態の確率的な更新は完璧な解決策ではないが、ネットワーク状態の検索に必要とされる処理負荷及びネットワーク負荷を時間的に分散(平滑化)することに寄与し、結果として、負荷のピークを除去できる。
もう一つの変形例として、ネットワーク状態更新制御部152は、新プロセスがアイドル状態にあるときにネットワーク状態を更新する制御を行ってもよい。新プロセス12が、未だネットワークノードの検索により更新されていない、異常を持つネットワーク状態を使用する場合があるが、この方法の利点は、更新がアイドル時間中にのみ実行されるので、新プロセス12の応答時間が悪化しないことである。ネットワーク状態更新制御部152は、上述したネットワーク状態の更新制御の方式を任意に組み合わせて採用することができる。図1において、通信装置10は、図示しないメモリに格納されたコンピュータプログラムの指示をフェッチし実行することにより処理を行うプロセッサを備えていてもよい。旧プロセス11及び新プロセス12はそれぞれ、そのプロセッサ上で動作するプロセスであってもよい。ロールバック制御部15のロールバック部151及びネットワーク状態更新制御部152は、プロセッサによって実行されるコンピュータプログラムによって実現されてもよい。通信装置10は、サーバ仮想化環境を提供するハイパーバイザなどの仮想化メカニズムを備えたサーバとして実現されてもよく、旧プロセス11及び新プロセス12は、上記サーバ仮想化環境において仮想マシン(VM)上で動作するように構成することができる。
図2は、本実施形態によるロールバック動作を模式的に示す図である。記憶部13のネットワーク状態は、旧プロセス11と新プロセス12とで共有される。プロセスのロールバックのタイミングで、記憶部13に記憶されたネットワーク状態は、新プロセス12により引き継がれる。旧プロセス11は、新プロセス12へのプロセス切り替えによってロールバックされ、旧プロセス11は終了する。旧プロセス11のプロセスイメージは、新プロセス12のプロセスイメージに切り替えられる。例えば、仮想メモリにプロセスとして割り当てられたプロセスイメージは、例えば、以下を含む。
− プログラムコード(実行される指示)
− プログラムデータ
− スタック(ユーザスタックとカーネルスタック)
− プロセス制御ブロック(プロセスを管理するためにオペレーティングシステムが必要とする情報)
旧プロセス11及び新プロセス12は、冗長構成と見なしてもよく、旧プロセス11がアクティブなプロセス、新プロセス12が待機プロセスであるシステムを、新プロセス12がアクティブなプロセス、旧プロセス11が待機プロセスになるシステムに切り替える。プロセスイメージの代わりに、旧プロセス11のVM(仮想マシン)イメージを新プロセス12のVMイメージに切り替えてもよい。
図2に示すように、旧プロセス11により書き込まれ更新された最新のネットワーク状態は、ロールバックされたネットワーク状態に最新の更新が反映されていない可能性があるというロールバックの矛盾を解決できる形で、新プロセス12により引き継がれる。新プロセス12により引き継がれたネットワーク状態は、上述したように遅延更新またはレイジーロールバックされる。
図1のネットワーク状態更新制御部152は、上述したように、新プロセス12がネットワーク状態を使用する前のタイミングで実行されるネットワーク状態の更新を制御する。新プロセス12が記憶部13に記憶されたネットワーク状態を使用しようとするとき、もしそれぞれのネットワーク状態に対応する更新フラグが「リセット」状態にある場合、新プロセス12は、ネットワーク状態更新制御部152の制御の下、不図示のネットワークノードからネットワーク状態を取得する。新プロセス12は、ネットワーク状態に関する問い合わせのメッセージを、NIC17を介して不図示のネットワークノードに送信する要求を、ネットワーク状態更新制御部152に発行するように構成されてもよい。記憶部に記憶されたネットワーク状態は、それぞれ、ネットワーク状態が関連付けられているネットワークノードを示すネットワークノード識別情報の項目を有してもよい。ネットワーク状態更新制御部152は、関連するネットワークノードからネットワーク状態(新しいネットワーク状態)を受信すると、検索の結果として取得した上記新たなネットワーク状態を、要求に対する応答として新プロセス12に返し、新プロセス12は、記憶部13内のロールバックされたネットワーク状態を、上記新しいネットワーク状態で更新してもよい。ネットワーク状態更新制御部152は、このネットワーク状態の更新フラグを「Set」状態(更新完了状態)に設定してもよい。あるいは、ネットワーク状態更新制御部152は、ネットワークノードからネットワーク状態(新しいネットワーク状態)を受信すると、記憶部13に格納されており、まだ更新されていないネットワーク状態を、検索の結果として取得した上記新たなネットワーク状態で更新し、このネットワーク状態の更新フラグを「Set」状態(更新完了状態)に設定し、要求に対する応答として、上記ネットワーク状態の更新の完了を新プロセス12に通知してもよい。新プロセス12は、検索によって更新された記憶部13内のネットワーク状態へのアクセスが可能になる。
図3は、本実施形態を採用しない比較例の動作を模式的に示す図である。記憶部13のネットワーク状態は、旧プロセス11と新プロセス12とで共有される。ロールバックのタイミングで、 旧プロセス11により更新されたネットワーク状態は、新プロセス12により引き継がれる。旧プロセス11のプロセスイメージは、新プロセス12のプロセスイメージへのプロセス切り替えによってロールバックされる。図3では、ロールバック後に、記憶部13に記憶されたネットワーク状態を更新するための、ネットワークノードまたはスイッチ上のネットワーク状態の検索が実行される。図3に示すロールバック方式は、ネットワークノードまたはスイッチ上のネットワーク状態の検索中に、ネットワーク負荷の増加によりネットワーク性能が低下したり、ネットワークが利用できなくなる可能性があるという欠点を持つ。
図4は、第1の例示的な実施形態が適用可能な別のロールバック方式を模式的に示す図である。図4を参照すると、ロールバックタイミングT2において、図1のロールバック部151は、前のタイミングT1で以前に保存された旧プロセス11のプロセスイメージに新プロセス12をロールバックする。旧プロセス11のVM(仮想マシン)イメージをタイミングT1でバックアップし、ロールバックタイミングT2において、バックアップされたVMイメージを新プロセス12として回復してもよい。新プロセス12は、旧プロセス11により更新されたネットワーク状態を引き継ぐ。旧プロセス11から新プロセス12への切り替えの後、旧プロセス11は終了する。新プロセス12が旧プロセス11から引き継ぐ、記憶部13に格納されたネットワーク状態を、新プロセス12がネットワーク状態を使用する前に、確率的、又はアイドルモード中に更新してもよい。
[第2の例示的な実施形態]
図5は、第2の例示的な実施形態による通信装置(ネットワークノード)を示す図である。図5を参照すると、通信装置10は、記憶部13と、図1のロールバック制御部15に対応するロールバック制御部15と、バッファ16と、タイミング制御部14と、図1のNIC17に対応するネットワークインタフェースカード(ネットワークインタフェースコントローラ)17とを含む。
ロールバック制御部15は、旧プロセス11から新プロセス12へのプロセスのロールバックを制御する。本実施形態では、ロールバックされる旧プロセス11から、新規に作成された新プロセス12への切り替えとして、プロセスのロールバックを行ってもよい。
ロールバック制御部15は、旧プロセス11から新プロセス12に稼働しているプロセスを切り替えた後、旧プロセス11を終了する制御を行う。
旧プロセス11と新プロセス12とは、記憶部13を共有する。具体的には、旧プロセス11から新プロセス12に稼働中のプロセスを切り替えるまで、旧プロセス11が記憶部13のネットワーク状態を読み込み、更新(書き込み)し、新プロセス12の作成から、旧プロセス11から新プロセス12への稼働中プロセスの切り替えまでの期間は、新プロセス12は、記憶部13に記憶されたネットワーク状態の読み取りアクセス権のみを有するようにしてもよい。新プロセス12の作成から、旧プロセス11から新プロセス12への切り替えまでの期間中、記憶部13に格納されたネットワーク状態は、新プロセス12と旧プロセス11とで共有することができる。
このように、記憶部13は、旧プロセス11により記憶部13に格納されたネットワーク状態を新プロセス12に引き継がせるための状態共有メカニズムとして機能する。即ち、旧プロセス11から新プロセス12に稼働中のプロセスを切り替える前に、新プロセス12は記憶部13に格納されているネットワーク状態の最新の更新情報を取得することが可能である。旧プロセス11から新プロセス12に稼働中のプロセスを切り替えた後、ロールバック制御部15(図1のネットワーク状態更新制御部152)は、上述の通り、新プロセス12がネットワーク状態を使用する前に、または確率的に、またはアイドルモード中に、ネットワーク状態の遅延更新を実行するように制御する。
タイミング制御部14は、ロールバック制御部15によるロールバック動作のタイミングを制御するように構成されている。タイミング制御部14は、例えば、トランザクションをアトミックにするために、旧プロセス11によるイベント処理の完了を待つように制御する。旧プロセス11から新プロセス12への稼働中のプロセスの切り替えは、旧プロセス11によるイベント処理が完了する時点までタイミング制御部14により延期される。
バッファ16は、ロールバック制御部15により有効/無効に制御されるイベントバッファリングの機能を有する。バッファ16は、ロールバックされる旧プロセス11がイベントを処理中の場合、NIC17によって受信され、旧プロセス11を宛先とする、少なくとも1つのイベント(パケット)を格納できる。より具体的には、旧プロセス11がロールバック中に受信したパケットに関連するイベントを処理している場合、ロールバック制御部15は、旧プロセス11が上記イベントを処理している間に受信した、旧プロセス11宛ての、1つ以上のパケットの全てをバッファ16に格納するような設定でイベントバッファリングを開始する。バッファ16は、着信イベント(パケット)をFIFO(First−In First−Out;先入れ先出し)方式で格納し、イベントの着信順序を保持するように構成されてもよい。
上述の通り開始されたイベントバッファリングは、以下のように終了できる。
旧プロセス11によるイベントの処理が完了すると、タイミング制御部14の制御の下、ロールバック制御部15は、旧プロセス11から新プロセス12へ稼働中のプロセスの切り替えを行い、ロールバック制御部15は、イベントバッファリングの開始時から記憶部13に記憶されている1つ以上のイベントの全てを、旧プロセス11から切り替えられた新プロセス12に送信するように制御し、ロールバック制御部15はバッファ16を制御してイベントバッファリングを停止させる。その後、NIC17が受信した、旧プロセス11宛のイベントは、バッファ16に格納されずに、現在稼働中の新プロセス12に転送される。
通信装置10は、図19を参照して説明したSDNアーキテクチャにおいて、SDNコントローラまたはネットワーク要素(スイッチ、ロードバランサ、またはファイアウォール)として構成することができるが、これに限定されない。
図5に示す構成は、旧プロセス11から新プロセス12へのロールバック後のネットワーク状態を更新するためのネットワーク検索によるネットワーク性能の低下防止を可能にし、またロールバックにおけるイベントの不規則化などの矛盾の発生も防止する。
旧プロセス11によるイベント処理(例えば、Packet−Inメッセージ)の実行中に、旧プロセス11が新プロセス12にロールバックされた場合、旧プロセス11によるイベント処理は完了せず、そのイベントは失われる。
また、プロセスが、ロールバック中に当該プロセス宛のイベントを受信できない場合、イベント損失が発生することもある。
本実施形態によるイベントバッファリング機能は、イベントの順序を保持し、イベント損失の発生を防止して、ロールバック動作においてイベントの整合性を保証する働きをする。
ロールバックの別のタイプの矛盾として、ネットワーク状態に矛盾が生じる可能性がある。例えば、フローエントリなどのネットワーク状態が、ロールバック動作中に旧プロセス11により行われた更新を反映していない、最後に保存されたネットワーク状態にロールバックされると、新プロセス12は、更新を反映していない最後に保存されたネットワーク状態に基づいて処理を実行することになり、誤った処理や誤動作の原因となる。
本実施形態によれば、状態共有メカニズムは、これらの欠点の回避に寄与することができる。ロールバック中に、新プロセス12が、旧プロセス11により更新された、記憶部13内の最新のネットワーク状態を引き継ぐことを可能にする状態共有メカニズムは、旧プロセス11のネットワーク状態と新プロセス12のネットワーク状態との不一致の発生を防止する役割を果たす。
本実施形態では、旧プロセス11から新プロセス12に切り替えた後、記憶部13を用いて旧プロセス11からネットワーク状態を引き継ぐ新プロセス12は、ネットワーク状態を徐々に更新してもよい。旧プロセス11から新プロセス12に切り替える前に、旧プロセス11により記憶部13に記憶され、引き継がれたネットワーク状態に異常が生じていた場合、ネットワーク状態は、新プロセス12によって徐々に復元されてもよい。例えば、新しいフローへの応答として、クリーンな新しいネットワーク状態が生成された場合、新プロセス12は、例えば、異常の生じたネットワーク状態をこの新しいネットワーク状態(クリーン)で更新してもよい。新プロセス12は、新プロセス12が旧プロセス11から引き継いだネットワーク状態を使用する前に更新してもよい。新プロセス12は、旧プロセス11から引き継いだネットワーク状態を確率的に更新してもよい。あるいは、新プロセス12は、アイドル状態において、旧プロセス11から引き継いだ状態を更新してもよい。
図6は、図5のロールバック制御部の動作を説明するための図である。
ロールバック制御部15は、新プロセス12を作成する(S101)。旧プロセス11と新プロセス12とで、ネットワーク状態を共有する(S102)。
旧プロセス11が、稼働中のプロセスとしてイベント処理を実行中である場合、ロールバック制御部15はイベントバッファリングを開始する(S103)。旧プロセス11宛の、1つまたは複数の受信パケットは、バッファ16にバッファリングされる。
ロールバック制御部15は、タイミング制御部14からの指示に従って、旧プロセス11によるイベント処理の完了を待つ(S104)。
旧プロセス11がイベント処理を完了すると、ロールバック制御部15は、 旧プロセス11から新プロセス12に切り替える(S105)。
ロールバック制御部15は、イベントバッファリングを終了し、受信したイベントを新プロセス12に送る(S106)。
ロールバック制御部15は、ネットワーク状態のレイジーロールバックを制御する(S107)。ロールバック制御部15は、例えば、新プロセス12が旧プロセス11から引き継ぐネットワーク状態の更新を、新プロセス12がネットワーク状態を使用するタイミングまで遅らせるように制御してもよい。
図18は、図1を参照して説明したコンピュータ装置の機能を実現するコンピュータシステムを示す図である。例えば、サーバシステムなどのコンピュータシステム300は、プロセッサ301と、プログラムを記憶するランダムアクセスメモリ、ハードディスクドライブ(HDD)、SSD(Solid State Drive)、CD(Compact Disk)、DVD(Digital Versatile Disk)、またはEEPROM(Electrically Erasable and Programmable Read Only Memory)の少なくとも一つを含むストレージ302と、通信インタフェース303とを含む。
図1のバッファ16と記憶部13は、ストレージ302により実現されてもよい。プロセッサ301は、コンピュータシステム300を図5の通信装置10として機能させるために、ロールバック制御部15と、タイミング制御部14と、旧プロセス11と、新プロセス12との機能を実現するストレージ302に格納されたプログラムを実行する。
[第3の例示的な実施形態]
図7は、第3の例示的な実施形態による、SDNアーキテクチャにおけるコントローラの構成を示す図である。第3の例示的な実施形態では、図5の通信装置10をSDNコントローラに適用する。
図7を参照すると、SDNコントローラ100は、サーバコンピュータなどのコンピュータシステム上に構成されてもよく、旧コントローラプロセス101(第1のコントローラプロセス)と、新コントローラプロセス102(第2のコントローラプロセス)と、旧コントローラプロセス101と新コントローラプロセス102とが共有するネットワーク状態などの状態を記憶する記憶部103とを含む。図7において、旧コントローラプロセス101、新コントローラプロセス102、記憶部103、バッファ106は、それぞれ、図5の旧プロセス11、新プロセス12、記憶部13、バッファ16に対応する。タイミング制御部104、ハイパーバイザ105、NIC107は、それぞれ、図5のタイミング制御部14、ロールバック制御部15、NIC17に対応する。記憶部103に記憶され、旧コントローラプロセス101と新コントローラプロセス102とが共有するネットワーク状態は、ネットワークトポロジと、フローエントリと、およびホスト位置情報とを含むが、これに限定されない。
SDNコントローラ100はさらに、仮想マシン(VM)にハードウェア仮想化を提供するためのサーバ仮想化インフラストラクチャを実現するハイパーバイザ105(仮想マシンモニタ)を含む。ハイパーバイザ105は、コンピュータソフトウェア、ファームウェア又はハードウェアを含み、ハードウェア資源を制御するように構成されている。これに限定されるものではないが、ハイパーバイザ105は、このようなサーバ仮想化への適用において、仮想化ハードウェア資源と、ゲストOSと、アプリケーションとを含む仮想マシン(VM)を制御してもよく、仮想化ハードウェア資源は、例えば、仮想CPU(Central Processing Unit)と、仮想化ストレージと、仮想化ネットワークとを含む。
ハイパーバイザ105は、仮想マシンの作成および終了を担当する。旧コントローラプロセス101及び新コントローラプロセス102は、それぞれハイパーバイザ105によって作成された仮想マシン(VM)上で実行される。ハイパーバイザ105は、少なくとも1つの仮想CPU(Central Processing Unit)と、仮想ストレージと、仮想ネットワークとを仮想マシンに割り当てる。ハイパーバイザ105は、図1及び図5を参照して説明したロールバック制御部15の機能を備えてもよい。ハイパーバイザ105は、新コントローラプロセス102をインスタンス化するための仮想マシンの作成の制御、旧コントローラプロセス101から新コントローラプロセス102への稼働中のプロセスの切り替え、新コントローラプロセス102により引き継がれるネットワーク状態の遅延更新(レイジーロールバック)を行う。
仮想マシン上で動作するように構成されたコントローラプロセスは、仮想SDNコントローラとして機能してもよい。コントローラプロセスは、例えば、スイッチ200(OpenFlow Switch:OFS)からPacket−Inメッセージを受信すると、関連するパケットの経路を計算し、経路上の各スイッチ200に対してフローエントリを生成し、Flow−Modメッセージを用いて経路上の各スイッチ200について生成されたフローエントリを設定する。
SDNコントローラ100はさらに、ディスパッチルールテーブル110に格納されたディスパッチルールに基づいて、スイッチ200から受信したパケットまたはオープンフローメッセージを対象のコントローラプロセスにディスパッチするディスパッチャ108を含む。コントローラプロセスは、ネットワーク制御モジュールのネットワーク制御プロキシとして機能してもよい。この場合、対象のコントローラプロセスを選択するディスパッチャ108は、ネットワーク制御のプロキシとして機能する。
ディスパッチルールテーブル110のディスパッチルールは、受信パケットのマッチ条件(フロー情報の項目)と、当該マッチ条件に対応する受信パケット又はメッセージのディスパッチ先の対象コントローラプロセスとの対応関係(マッピング)を定義する。ディスパッチャ108は、受信したパケットのヘッダフィールド情報と、ディスパッチルールのマッチ条件(フロー情報の項目)を比較し、受信パケットのヘッダフィールド情報がマッチするマッチ条件に関連付けられた対象コントローラプロセスに受信パケットをディスパッチする。ディスパッチルールにおいて、対象コントローラプロセスにマッピングされるマッチ条件は、以下を含んでもよい。
宛先または送信元IP(Internet Protocol)アドレス、
宛先または送信元MAC(Media Access Control)アドレス、
TCP(Transmission Control Protocol)/UDP(User Datagram Protocol)宛先または送信元ポート番号、又は
上記の内、少なくとも2つの組み合わせ、又は
パケットを受信したコントローラ100の物理ポート番号
コントローラプロセスは仮想マシン(VM)上で動作するため、仮想マシン(VM)に仮想的に割り当てられた仮想IPアドレス又は仮想MACアドレスが使用される。ディスパッチャ108は、ディスパッチルールテーブルにおいて、受信したパケットのヘッダフィールド情報を検索し、マッチ条件が受信パケットのヘッダフィールド情報と一致するディスパッチルールが見つかった場合、ディスパッチャ108は、受信パケットを対応する対象コントローラプロセスに転送する。マッチ条件が受信パケットのヘッダフィールド情報と一致するディスパッチルールが見つからない場合、ディスパッチャ108は、受信パケットを破棄するか、あるいは、例えば、不図示の維持管理端末により、受信パケットのために新しいディスパッチルールを作成するようにしてもよい。
ディスパッチャ108は、複数の入力ポート(不図示)および複数の出力ポート(不図示)を含んでもよく、受信したパケットのマッチ条件と当該マッチ条件に対応する受信パケットのディスパッチ先であるコントローラプロセスとの対応関係を定義するディスパッチルールに基づき、その入力ポートで受信したパケットを対象となる出力ポートに転送する。ディスパッチャ108は、コントローラを有するハードウェアスイッチによって構成されてもよいし、ソフトウェアによって実現される仮想スイッチによって構成されてもよい。なお、図7において、ディスパッチャ108は、ハイパーバイザ105の前段に配置されているが、ディスパッチャ108が、ハイパーバイザ105に制御される仮想スイッチとして構成され、ハイパーバイザ105と、仮想マシン上で動作するコントローラプロセスとの間に配置される別の構成もあり得る。ディスパッチャ108は、ソケット(Unix(登録商標)ソケット、ネットワークソケット)、PIPE、共有メモリなどのプロセス間通信を用いて、パケット又はメッセージを中継してもよい。
SDNコントローラ100は、ディスパッチャ108に接続されたバッファ106をさらに含む。バッファ106は、旧コントローラプロセス101がロールバック中にイベントの処理を実行している場合、スイッチ200から受信され、旧コントローラプロセス101にディスパッチされる少なくとも1つのイベント(例えば、少なくとも1つのオープンフローメッセージ)を格納する。旧コントローラプロセス101が処理中の処理を完了すると、これまでバッファ106にバッファリングされていた上記少なくとも1つのイベントが取り出され、ディスパッチャ108により新コントローラプロセス102にディスパッチされる。バッファ106は、FIFO(First−In First−Out;先入れ先出し)メモリを含んでもよい。バッファ106は、パケットがイベントバッファリングモードでディスパッチされる前に上記パケットを格納するようにディスパッチャ108内に構成されてもよい。
SDNコントローラ100は、タイミング制御部104と、管理制御部109とをさらに備える。タイミング制御部104は、旧コントローラプロセス101がロールバック中にイベントの処理を実行している場合、スイッチ200から受信したイベントをバッファ106にバッファリングするタイミングを制御し、ロールバック時に旧コントローラプロセス101から新コントローラプロセス102に切り替えるタイミングも制御する。
管理制御部109は、ハイパーバイザ105を介してコントローラプロセスを管理する。管理制御部109は、タイミング制御部104と、ハイパーバイザ105と、ディスパッチャ108とに接続されている。管理制御部109は、仮想マシンとコントローラプロセスに対して、例えば、リソース予約や解放などのリソース管理、インスタンシエーション、起動、終了などのライフサイクル管理、スケールアップ/スケールダウン又はスケールイン/スケールアウトなどのパフォーマンス管理を行う。また、管理制御部109は、スイッチ200内の管理制御部に接続されている。
スイッチ200との間でメッセージを送受信するために、少なくとも1つのスイッチと通信するNIC107が提供される。
また、バッファ112を有するノースバウンドAPI(Application Programming Interface)ディスパッチャ111が提供される。ノースバウンドアプリケーション(図19の2)は、ノースバウンドAPIを介してノード間のトポロジを操作することができる。ノースバウンドAPIは、スイッチに接続されたホスト情報を参照するためのAPIと、フローエントリの直接操作のためのAPIと、スイッチデバイス情報を参照するためのAPIなどを含んでもよいが、これに限定されるものではない。ノースバウンドAPIディスパッチャ111は、ノースバウンドAPI要求を、不図示のノースバウンドAPIを含むコントローラプロセスにディスパッチする。ノースバウンドAPIは、コントローラプロセスとノースバウンドAPIディスパッチャ111との間に配置されてもよい。ノースバウンドAPIディスパッチャ111は、SDNアプリケーションなどSDNコントローラモジュールへのプロキシとして機能してもよい。
バッファ112は、旧コントローラプロセス101がロールバック中にイベント処理を実行している場合、FIFO方式で旧コントローラプロセス101にディスパッチされる、少なくとも1つのノースバウンドAPI要求を一時的に格納する。旧コントローラプロセス101が処理を完了すると、バッファ112にバッファリングされていた上記少なくとも1つのノースバウンドAPI要求は、ノースバウンドAPIディスパッチャ111により取り出され、新コントローラプロセス102へ転送される。
ハイパーバイザ105は、ロールバックを制御してもよい。図7のロールバック制御部15は、ハイパーバイザ105内のコントローラとして実現されてもよい。ロールバックにおいて、ハイパーバイザ105が新コントローラプロセス102を作成し開始する。記憶部103内のネットワーク状態は、旧コントローラプロセス101と新コントローラプロセス102とで共有される。ネットワーク状態には、例えば、フローエントリと、ネットワークトポロジと、ホスト位置情報とが含まれるが、これに限定されない。
旧コントローラプロセス101がロールバック中にイベントを処理している場合、ディスパッチャ108は、スイッチから受信し、旧コントローラプロセス101宛に送信されたPacket−Inメッセージ又はFlow−Removedメッセージ(スイッチ内のフローエントリのライフサイクルが期限切れしたことをコントローラに通知するためのメッセージ)などのオープンフローメッセージ(イベント)の少なくとも1つの着信パケットをディスパッチせず、上記少なくとも1つの着信パケットを一時的にバッファ106に格納する。この場合、ノースバウンドアプリケーションから旧コントローラプロセス101宛の少なくとも1つの着信ノースバウンドAPI要求も、一時的にバッファ112に格納される。
タイミング制御部104の制御の下、旧コントローラプロセス101がイベントの処理を終了すると、ハイパーバイザ105は旧コントローラプロセス101を終了する。
ディスパッチャ108は、バッファ106に格納されている上記少なくとも1つのオープンフローメッセージ(イベント)を新コントローラプロセス102に転送する。バッファ112に格納された上記少なくとも1つのノースバウンドAPI要求も、新コントローラプロセス102に転送される。
ディスパッチャ108は、パケットのマッチ条件と当該マッチ条件に対応する受信パケットのディスパッチ先であるコントローラプロセスとの対応関係を定義する、ディスパッチルールテーブル110内のディスパッチルールの内容を更新する。ディスパッチャ108は、ディスパッチルールテーブル110において対象コントローラプロセスとして定義されていた旧コントローラプロセス101を新コントローラプロセス102に変更する。
ハイパーバイザ105は、以下のタイミングでコントローラプロセスのロールバックを実行してもよい。
− コントローラプロセスがスイッチからの要求を処理した後、
− 1つの操作を処理した後、
− 定期的に、又は、
− ロールバックの契機となる所定のイベントの発生に応答して、
ロールバックの契機となるイベントの例は、完全性チェックを用いたコントローラプロセスの異常の検出などである。ハイパーバイザ105の1つの機能として実現されるロールバック制御部15は、新コントローラプロセス102が旧コントローラプロセス101から引き継ぐネットワーク状態のレイジーロールバックを制御してもよい。より具体的には、ハイパーバイザ105(ロールバック制御部15)は、新コントローラプロセス102がネットワーク状態を使用する前に、又は確率的に、又は新コントローラプロセス102がアイドル状態にあるときに、ネットワーク状態が更新されるように制御してもよい。
図8は、第3の例示的な実施形態によるスイッチの構成を示す図である。図8のスイッチ200は、図7のスイッチ200(オープンフロースイッチ)に対応する。図8を参照すると、スイッチ200は、サーバコンピュータ上に構成され、旧スイッチプロセス201(第1のスイッチプロセス)と、新スイッチプロセス202(第2のスイッチプロセス)と、旧スイッチプロセス201と新スイッチプロセス202とで共有されるネットワーク状態を記憶する記憶部203とを含む。図8において、旧スイッチプロセス201、新スイッチプロセス202、記憶部203、バッファ206は、それぞれ、図5の旧プロセス11、新プロセス12、記憶部13、バッファ16に対応してもよい。タイミング制御部204、ハイパーバイザ205、NIC/パケット転送エンジン207のNICは、それぞれ、タイミング制御部14、ロールバック制御部15、NIC17に対応してもよい。記憶部203に記憶され、旧スイッチプロセス201と新スイッチプロセス202とで共有されるネットワーク状態は、フローエントリを含む。
スイッチ200は、ハイパーバイザ205(仮想マシンモニタ)を含む。旧スイッチプロセス201と新スイッチプロセス202は、ハイパーバイザ205によって作成された仮想マシン(VM)上でそれぞれ実行されてもよい。ハイパーバイザ205は、少なくとも1つの仮想CPU(Central Processing Unit)と、仮想ストレージと、仮想ネットワークとを仮想マシンに割り当ててもよい。仮想マシン上で動作するスイッチプロセスは、上述のオープンフロースイッチとして機能する。ハイパーバイザ205は、図1及び図5を参照して説明したロールバック制御部15の機能を備えていてもよい。ハイパーバイザ205は、新スイッチプロセス202をインスタンス化するための仮想マシンの作成の制御、旧スイッチプロセス201から新スイッチプロセス202への稼働中のプロセスの切り替え、新スイッチプロセス202により引き継がれるネットワーク状態の遅延更新(レイジーロールバック)を行う。
スイッチ200は、(別のスイッチ又はネットワークノードからの)パケット、又は(NIC/パケット転送エンジン207からの)オープンフローメッセージをディスパッチするディスパッチャ208をさらに含む。さらに、ディスパッチャ208は、ディスパッチルールテーブル210に格納されたディスパッチルールに基づき、コントローラから受信したPacket−OutメッセージやFlow−Modメッセージなどのオープンフローメッセージを対象スイッチプロセスにディスパッチする。ディスパッチルールテーブル210のディスパッチルールは、マッチ条件(フロー情報の項目)と、上記マッチ条件(フロー情報の項目)に対応する受信パケットのディスパッチ先である対象スイッチプロセスとの対応関係(マッピング)を定義する。ディスパッチャ208は、受信したパケットのヘッダフィールド情報と、ディスパッチルールのマッチ条件(フロー情報の項目)を比較し、受信パケットのヘッダフィールド情報がマッチするマッチ条件に関連付けられた対象スイッチプロセスに受信パケットをディスパッチする。ディスパッチルールにおいて、対象スイッチプロセスにマッピングされるマッチ条件は、以下を含んでもよい。
宛先または送信元IP(Internet Protocol)アドレス、
宛先または送信元MAC(Media Access Control)アドレス、
TCP(Transmission Control Protocol )/UDP(User Datagram Protocol)宛先または送信元ポート番号、又は
上記の内、少なくとも2つの組み合わせ、又は
パケットを受信したスイッチ200の物理ポート番号。
スイッチプロセスは仮想マシン(VM)上で動作するため、仮想マシン(VM)に仮想的に割り当てられた仮想IPアドレス又は仮想MACアドレスが使用される。ディスパッチャ208は、ディスパッチルールテーブル210において、受信したパケットのパケットヘッダフィールドに指定されている宛先アドレスを検索し、宛先アドレスが受信パケットのパケットヘッダに指定されている宛先アドレスと一致するディスパッチルールが見つかった場合、ディスパッチャ208は、受信パケットを対応する対象スイッチプロセスに転送する。なお、図8において、ディスパッチャ208は、ハイパーバイザ205の前段に配置されているが、ハイパーバイザ205が、ディスパッチャ208を仮想スイッチなどの仮想ハードウェア資源として提供する構成も採用可能である。ディスパッチャ208は、ソケット(Unix(登録商標)ソケット、ネットワークソケット)、PIPE、共有メモリなどのプロセス間通信を用いて、パケット又はメッセージを中継してもよい。
ディスパッチャ208は、コントローラを有するハードウェアスイッチによって構成されてもよいし、ソフトウェアによって実現される仮想スイッチによって構成されてもよい。なお、図8において、ディスパッチャ208は、NIC207とハイパーバイザ205の間に配置されているが、ディスパッチャ208が、ハイパーバイザ205に制御される仮想スイッチとして構成され、ハイパーバイザ205とコントローラプロセスとの間に配置される別の構成もあり得る。
スイッチ200は、ディスパッチャ208に接続されたバッファ206をさらに含む。バッファ206は、旧スイッチプロセス201がロールバック中にイベントの処理を実行している場合、スイッチから受信され、旧スイッチプロセス201にディスパッチされる少なくとも1つのイベント(例えばオープンフローメッセージ)を、FIFO方式でイベント順序を保持するように格納する。旧スイッチプロセス201が処理中の処理を完了すると、これまでバッファ206にバッファリングされていた上記少なくとも1つのイベントが取り出され、ディスパッチャ208により新スイッチプロセス202にディスパッチされる。
スイッチ200は、タイミング制御部204と、管理制御部209とをさらに備える。タイミング制御部204は、旧スイッチプロセス201がロールバック中にイベントの処理を実行している場合、スイッチから受信したイベント(パケット)をバッファ206にバッファリングするタイミングを制御し、ロールバック時に旧スイッチプロセス201から新スイッチプロセス202に切り替えるタイミングも制御する。
管理制御部209は、ハイパーバイザ205を介してコントローラプロセスを管理する。管理制御部209は、タイミング制御部204と、ハイパーバイザ205と、ディスパッチャ208とに接続されている。管理制御部209は、仮想マシンとコントローラプロセスに対して、例えば、リソース予約や解放などのリソース管理、インスタンシエーション、起動、終了などのライフサイクル管理、スケールアップ/スケールダウン又はスケールイン/スケールアウトなどのパフォーマンス管理を行う。また、管理制御部209は、スイッチ内の管理制御部に接続されている。
図8において、NIC/パケット転送エンジン207は、他のスイッチやSDNコントローラとのメッセージ及びパケットの送受信のため、他のスイッチ及びSDNコントローラと通信する。パケット転送エンジンは、フローエントリに基づくパケットのパケット転送処理に指定されたエンジンである。NICは、複数の単一ポートNICとして、又はマルチポートNICとして構成することができる。
図8のロールバック制御部15は、ハイパーバイザ205に実装されてもよい。ハイパーバイザ205はロールバックを以下のように制御する。
ロールバック処理において、ハイパーバイザ205が新スイッチプロセス202を作成し開始(起動)する。記憶部203内のネットワーク状態は、旧スイッチプロセス201と新スイッチプロセス202とで共有される。ネットワーク状態には、例えば、フローエントリが含まれるが、これに限定されない。
旧スイッチプロセス201がロールバック中にイベントを処理している場合、ディスパッチャ208は、別のスイッチ又はSDNコントローラから受信し、旧スイッチプロセス201宛に送信された少なくとも1つの着信オープンフローメッセージ(イベント)を転送せず、上記少なくとも1つの着信オープンフローメッセージ(イベント)を一時的にバッファ206に格納する。バッファ206には、別のスイッチから転送されたパケットと、SDNコントローラから送信されたFlow−Modメッセージなどのオープンフローメッセージとが、旧スイッチプロセスによるイベント処理が完了するまで一時的に格納される。
旧スイッチプロセス201がイベントの処理を終了すると、タイミング制御部204の制御の下、ハイパーバイザ205は旧スイッチプロセス201を終了する。
ディスパッチャ208は、バッファ206に格納されている上記少なくとも1つのオープンフローメッセージ(イベント)を新スイッチプロセス202に転送する。
ディスパッチャ208は、図13に示す通り、ディスパッチルールテーブル210内のディスパッチルールの内容を更新する。ディスパッチャ208は、ディスパッチルールテーブル210内のディスパッチルールを、宛先IPアドレスX→旧スイッチプロセス201から、宛先IPアドレスX→新スイッチプロセス202に変更する。パケットヘッダの宛先IPアドレスフィールドがXであるパケットが受信されると、当該パケットは新スイッチプロセス202にディスパッチされる。図13を参照すると、スイッチプロセス201は、ディスパッチャ208によりディスパッチされたパケットを受信すると、パケットのヘッダフィールド情報を、スイッチプロセス201のフローテーブル203のフローエントリと照合する。スイッチプロセス201のフローテーブル203のフローエントリは、受信したパケットのヘッダフィールド情報と照合されるマッチフィールドと、マッチするパケットの処理を定義するアクションフィールドとを含む。図13のフローエントリは、受信パケットのヘッダの宛先IPアドレスがXである場合、スイッチプロセス201はアクション1を実行するというルールを定義する。ディスパッチルールテーブル210のディスパッチルールにおけるマッチ条件は、受信パケットのヘッダの宛先IPアドレスに限定されないことは勿論である。ディスパッチルールにおけるマッチ条件は、宛先/送信元IPアドレス、宛先/送信元MACアドレス、TCP/UDP宛先または送信元ポート番号、または上記のうち少なくとも2つの項目の組み合わせを含むように構成されてもよい。フローテーブル203のフローエントリのマッチフィールドについても同様である。ディスパッチルールのマッチ条件は、パケットが受信されたスイッチ200のポート番号を含んでもよい。
ディスパッチャ208は、NIC/パケット転送エンジン207によって引き渡されたPacket−Inメッセージを受信した場合、Packet−Inメッセージは最初のパケットを含むため、ディスパッチャ208は、最初のパケットのヘッダフィールド情報を参照してPacket−Inメッセージを対象スイッチプロセスにディスパッチし、対象スイッチプロセスは、Packet−Inメッセージをコントローラに転送する。
ハイパーバイザ205は、以下のタイミングでコントローラプロセスのロールバックを実行してもよい。
− スイッチプロセスがSDNコントローラからのメッセージを処理した後、
− 1つの操作を処理した後、
− 定期的に、又は
− ロールバックの契機となる所定のイベントの発生に応答して、
ロールバックの契機となるイベントの例は、完全性チェックを用いたスイッチプロセスの異常の検出などである。ハイパーバイザ205は、スイッチプロセスが1つ又はN個のフローを処理するたびに(Nは2以上の所定の整数)、又は、ロールバックの契機となる所定のイベントの発生に応じて、スイッチプロセスのロールバックを実行してもよい。図8のハイパーバイザ205の制御の下、仮想マシン上で動作するスイッチプロセスと、図7のハイパーバイザ105の制御の下、仮想マシン上で動作するコントローラプロセスは、ハイパーバイザ205及びハイパーバイザ105が統一ハイパーバイザとして実装された同じサーバコンピュータ上で提供されてもよい。ハイパーバイザ205の1つの機能として実現されるロールバック制御部15は、新スイッチプロセス202が旧スイッチプロセス201から引き継ぐネットワーク状態のレイジーロールバックを制御してもよい。より具体的には、ハイパーバイザ205(ロールバック制御部15)は、新スイッチプロセス202がネットワーク状態を使用する前に、又は確率的に、又は新スイッチプロセス202がアイドル状態にあるときに、ネットワーク状態が更新されるように制御を行ってもよい。
図9は、図7のコントローラにおけるロールバックを示す図である。イベントの結果をアトミックにするために、ロールバック(旧コントローラプロセス101から新コントローラプロセス102への切り替え)は、旧コントローラプロセス101がイベント処理を終了したときに実行される。また、旧コントローラプロセス101は、旧コントローラプロセス101がイベント処理を完了した後に終了する。図9の例では、オープンフローメッセージ(イベント1)が、旧コントローラプロセス101にディスパッチされ、旧コントローラプロセス101は、オープンフローメッセージのイベント処理の完了と共に応答(2)を返す。イベント処理が完了すると、新しいイベント(3)が新コントローラプロセス102にディスパッチされる。
図10は、本実施形態によるロールバックにおけるイベントバッファリングを示す図である。ロールバック中のイベント損失を防止するために、イベントバッファリングのためのバッファ106が提供されている。イベントバッファリングは、イベントが旧コントローラプロセス101により処理されている間に実行される。
図10の例では、イベント1が旧コントローラプロセス101により処理されている間に受信されたイベント2がバッファ106にバッファリングされる。イベント1の処理が完了した後、即ち、旧コントローラプロセス101によるイベント1の処理の応答が出力されると、バッファリングされたイベント2は新コントローラプロセス102に送られる。このようにして、イベントの損失を防ぐことができる。バッファ106は、FIFO型バッファとして構成されてもよい。図10のイベントバッファリングの仕組みを、図8を参照して説明したスイッチ200に適用できるのは勿論である。
図11は、図7のSDNコントローラ100のハイパーバイザ105に実装されたロールバック制御部15の一例を示す図である。図11を参照すると、ロールバック制御部15は、新プロセス作成部151−1と、イベントバッファリング開始部151−2と、旧プロセス終了部151−3と、イベントバッファリング停止部151−4と、図1のネットワーク状態更新制御部152に対応するネットワーク状態更新制御部152とを備える。新プロセス作成部151−1と、イベントバッファリング開始部151−2と、旧プロセス終了部151−3と、イベントバッファリング停止部151−4とは、図1のロールバック部151を構成する。図8のスイッチ200のハイパーバイザ205は、図11に示す構成と同じように構成されたロールバック制御部を含んでもよい。
図12は、図7のハイパーバイザ105に実装されたロールバック制御部15の動作を説明するための図である。図12を参照すると、ロールバックが開始されたとき、新プロセス作成部151−1は、新コントローラプロセス102を作成する(S201)。ロールバック制御部15は、システム完全性の測定に基づいて、旧コントローラプロセス101の異常の検出時にロールバックを開始するように構成されてもよい。あるいは、ロールバック制御部15は、SDNコントローラに接続された維持管理端末(不図示)から発行されたコマンドに基づいてロールバックを開始するように構成されてもよい。これに限定されないが、旧コントローラプロセス101が現在の稼働中のプロセスである一方、新プロセス作成部151−1は、待機プロセスとして新コントローラプロセス102を作成してもよい。即ち、旧コントローラプロセス101がアクティブ状態(実行状態)にある間、新コントローラプロセス102は、処理遷移図において待機状態に保たれてもよい。
旧コントローラプロセス101と新コントローラプロセス102は、ネットワークトポロジ、スイッチのフローエントリ、ホスト位置情報(スイッチのポートに接続されたホスト)などのネットワーク状態が格納されている記憶部103を共有する(S202)。
旧コントローラプロセス101がイベント処理を行っていない場合(S203の「No」分岐)、旧プロセス終了部151−3は旧プロセスを終了し、新コントローラプロセス102が稼働中のプロセスとなる。
旧コントローラプロセス101がイベント処理中であると判断された場合(S203、「Yes」分岐)、イベントバッファリング開始部151−2は、イベントバッファリングを開始する(S205)。
タイミング制御部104の制御の下、旧コントローラプロセス101によるイベント処理の完了を待つ(S206−S207)。
旧コントローラプロセス101によるイベント処理が完了すると、旧プロセス終了部151−3は旧プロセスを終了し、新コントローラプロセス102が稼働中のプロセスとなる(S208)。
イベントバッファリング停止部151−4は、ディスパッチャ108に、イベントバッファリングの開始から受信し、バッファ106に格納されていた旧コントローラプロセス101宛ての少なくとも1つのイベントを新コントローラプロセス102に送信させる制御を行い、その後イベントバッファリングを停止する(S209)。
ディスパッチャ108は、ディスパッチルールのマッチ条件に関連する対象コントローラプロセスフィールドを、旧コントローラプロセス101から新コントローラプロセス102に変更する(S210)。これ以降、受信したイベントはディスパッチャ108によって新コントローラプロセス102にディスパッチされる。
ネットワーク状態更新制御部152は、新コントローラプロセス102がネットワーク状態を使用する前に、又は確率的に、又は新コントローラプロセス102がアイドル状態にあるときに、記憶部103に格納されたネットワーク状態が更新されるように制御する(S211)。
図8のスイッチ200のハイパーバイザ205は、図12に示す方法と同じ方法で動作するように構成されてもよい。
[第4の例示的な実施形態]
図14は、第4の例示的な実施形態によるSDNコントローラ100を示す図である。図14において、ハイパーバイザ105は、隔離環境121及び122を制御および管理し(隔離環境121及び122の作成など)、隔離環境121、122で実行されるコントローラプロセスを管理する(旧コントローラプロセス101及び新コントローラプロセス102の作成および終了)。ディスパッチャ108は、ハイパーバイザ105と隔離環境との間に配置される。図14では、これに限定されるものではないが、テナント毎にコントローラプロセスが割り当てられているものとする。即ち、例えば、テナントAとキャリア(通信事業者)との契約に基づいて、少なくとも1つのコントローラプロセスAがテナントAに割り当てられる。ディスパッチャ108は、テナントのためにネットワークチャネル制御への制御プロキシとして機能するオープンフローチャネルプロキシとして機能する。
ディスパッチャ108は、テナントネットワークと対象コントローラプロセスとの対応関係を定義するディスパッチルールテーブルに基づき、テナントAネットワークに属するスイッチから、テナントAに割り当てられたコントローラプロセスにオープンフローメッセージをディスパッチする。第4の例示的な実施形態において、コントローラプロセスが隔離環境で実行される以外のSDNコントローラの特徴は、他のSDNコントローラと同様である。
図15は、第4の例示的な実施形態におけるスイッチを示す図である。ハイパーバイザ205は、隔離環境221、222を提供し、隔離環境221、222において実行されるスイッチプロセス(旧スイッチプロセス201、新スイッチプロセス202)を作成/終了する制御を行う。スイッチプロセスは、図5に示すように、テナントごとに割り当てられてもよい。即ち、テナントAとキャリアとの契約に基づいて、少なくとも1つのスイッチプロセスが、例えばテナントAのテナントネットワークに割り当てられる。
NIC107とハイパーバイザ205との間に配置されたディスパッチャ208は、ハイパーバイザ205を介して、フロー(NIC207の1つから受信したパケット)を対応するスイッチプロセスにディスパッチする。また、ディスパッチャ208は、スイッチプロセス201から受信したパケットを、対応するNIC207にディスパッチして、上記パケットをネットワークに出力する。スイッチプロセスが隔離環境で実行される以外のスイッチの特徴は、第2の例示的な実施形態におけるスイッチと同様である。
隔離技術は、隔離された環境でプロセスが実行される技術である。隔離技術では、システム全体に影響を与えないようにマルウェアを動作させる封じ込め環境を提供する。
図16は、図14に示すSDNコントローラを使用するテナントベースのネットワークを示す図である。なお、図16では、説明の便宜上、3つのスイッチ(スイッチプロセス)200A−200Cが設けられているが、スイッチプロセスの数は勿論3つに限定されず、1以上の任意の整数でよい。
図16を参照すると、例えば、マルウェアによる被害が隔離環境121Cに封じ込められているとする。即ち、コントローラプロセス101Cがマルウェア124により侵害されたとしても、マルウェア124は隔離環境121C及びテナントCのネットワークに封じ込められており、他のフロー又はテナントネットワークBおよびCに影響を及ぼすことはできない。この場合、コントローラプロセス101Cは、上記実施形態で説明した動作に応じて、新コントローラプロセス102Cにロールバックされる。
以下、本実施形態による隔離環境について説明する。
本実施形態では、これに限定されないが、ハイパーバイザ105がメモリアイソレーションを提供する。隔離環境121Aのコントローラプロセス101Aに割り当てられたメモリ領域(隔離領域)は、他の隔離環境121B及び121Cの他のコントローラプロセス101B及び101Cに割り当てられた他のメモリ領域(隔離領域)から隔離されており、コントローラプロセスおよびOSによって共有される共有領域を除いて、OS/ハイパーバイザ又はデバイスドライバ(不図示)に割り当てられたメモリ領域からも隔離されている。
図17Aは、ハイパーバイザまたはハードウェアベースのメモリ保護の例を示す図である。図17Aに示すように、プロセス411、412にそれぞれ割り当てられた隔離領域421、422は、メモリ420内の別々のメモリ領域である。OS(ハイパーバイザ)に割り当てられたOS/ハイパーバイザ領域423は、プロセス411及び412に割り当てられた隔離領域421及び422とは別であり、したがって、OS(ハイパーバイザ)は、プロセス411、412から保護されている。プロセス411及び412によってアドレス指定されるメモリ空間は別々であるので、プロセス411及び412のそれぞれは、他のプロセスの隔離領域へのメモリアクセスを有することができない。
これに限定されないが、ハイパーバイザやハードウェアベースのMMU(Memory Management Unit)は、プロセスのメモリ空間のベースアドレスが設定されたリロケーションレジスタ(不図示)を用いて、各プロセスの論理(仮想)アドレスから物理アドレスへのアドレス変換を行ってもよい。リロケーションレジスタのベースアドレスと論理アドレスを加算して物理アドレスが生成される。また、MMUは、生成された物理アドレスが、プロセスのベースアドレスとリミットアドレスによって定義された範囲内にあるか否かチェックする。これはメモリ保護の仕組みとして機能する。MMUは、故障処理によるメモリアクセス違反の発生を検出すると、例えば、プロセスのアクセス権を持たないメモリ空間へのアクセス、又は、ベースアドレスにより定義された範囲やプロセスに割り当てられた制限外のアクセスを検出した場合、故障処理は、例外処理によりアドレス指定エラーを通知されるか、アドレス指定エラーの通知で中断される。
MMUベースのメモリ保護は、図17Bに示すページテーブルによって実現されてもよい。なお、MMUは、ページベースのMMUに限定されず、例えば、セグメントベースのメモリ保護が採用されてもよい。ページは固定長の連続ブロックである(例えば、4KB(Kilo Bytes))。プロセスから発行される論理アドレス(仮想アドレス)430は、ページ番号フィールド(n−mビット)及びオフセットフィールド(mビット)を含む。この場合、ページサイズは2^mであり、^はべき乗演算子を表し、プロセスのメモリアドレス空間は2^nである。論理アドレス430のページ番号X(上位n−mビット)が抽出され、インデックス(ページエントリ)としてページテーブル431に供給される。ページテーブル431のX番目のエントリに格納されている値Z(pビット)が、ページテーブル431から読み出される。即ち、ページテーブル431は、XからZへのページ変換を行う。一般にZのビット長pはXのビット長pよりも長い。Zは、上位ビットとして、論理アドレス430の下位mビットYと組み合わされ、メモリ(マシンメモリ)433に供給する物理アドレス432が生成される。この場合、メモリ433のZページのオフセットアドレスYがアクセスされる。
図14〜図16を参照すると、ハイパーバイザ105及び205は、それぞれのメモリ領域に、各スイッチプロセスのページテーブルを保持するように構成されてもよい。これによって、プロセスがページ変換を改ざんすることが防止される。スイッチプロセス及びOS/ハイパーバイザによって共有される共有メモリ領域に対して、OS/ハイパーバイザのみが共有領域への書き込み操作を実行することができるように、アクセス制御情報に基づいて、スイッチプロセスから共有領域への読み取り/書き込みアクセスを制御するアクセスコントローラが設けられてもよい。
ハイパーバイザ105及び205は、コンピュータソフトウェア、ファームウェア又はハードウェアを含み、ハードウェア資源を制御するように構成されてもよい。これに限定されるものではないが、ハイパーバイザ105及び205は、サーバ仮想化への適用において、仮想化ハードウェア資源と、ゲストOSと、アプリケーションとを含む仮想マシン(VM)を制御してもよく、仮想化ハードウェア資源は、例えば、仮想CPU(Central Processing Unit)と、仮想化ストレージと、仮想化ネットワークとを含む。
上述した実施形態では、仮想マシン上で動作するプロセスをハイパーバイザが制御する構成について説明したが、実施形態の概念は、ハイパーバイザやサーバ仮想化を使用しないプロセッサ上で動作するプロセスにも適用してもよい。また、上記実施形態では、隔離された環境で仮想マシン上のプロセスの実行をハイパーバイザによって制御する構成について説明したが、実施形態の概念は、ハイパーバイザを使用しないメモリアイソレーションなどにより、隔離された環境をプロセスへ提供できるように構成されたプロセッサ上で動作するプロセスにも適用してもよい。
また、上記実施形態では、スイッチやコントローラへの適用例について説明したが、本発明の適用はオープンフローネットワークに限定されないことは勿論である。
上記の特許文献1−4および非特許文献1−3の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲内において種々の開示要素(各補足の各要素、各例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし選択が可能である。即ち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
1 SDNコントローラ
2 SDNアプリケーション
3 ネットワーク要素
4 記憶装置(記憶部)
5 ネットワークポリシー
6 SDNノースバウンドインタフェース
7 SDNサウスバウンドインタフェース
10 通信装置(ノード)
11 旧プロセス(第1のプロセス)
12 新プロセス12(第2のプロセス)
13 記憶部
14 タイミング制御部
15 ロールバック制御部
16 バッファ
17 NIC(ネットワークインタフェースカード)
100 SDNコントローラ
101、101A、101B、101C 旧コントローラプロセス(第1のコントローラプロセス)
102、102C 新コントローラプロセス(第2のコントローラプロセス)
103 記憶部
104 タイミング制御部
105 ハイパーバイザ
106 バッファ
107 NIC
108 ディスパッチャ
109 管理制御部
110 ディスパッチルールテーブル
111 ノースバウンドAPIディスパッチャ
112 バッファ
121、121A、121B、121C、122 隔離環境
124 マルウェア
151 ロールバック部
151−1 新プロセス作成部
151−2 イベントバッファリング開始部
151−3 旧プロセス終了部
151−4 イベントバッファリング停止部
152 ネットワーク状態更新制御部
200 スイッチ
201 旧スイッチプロセス(第1のスイッチプロセス)
202 新スイッチプロセス(第2のスイッチプロセス)
203 記憶部
204 タイミング制御部
205 ハイパーバイザ
206 バッファ
207 NIC/パケット転送エンジン
208 ディスパッチャ
209 管理制御部
210 ディスパッチルールテーブル
221、222 隔離環境
300 コンピュータシステム
301 プロセッサ
302 ストレージ(メモリ)
303 通信インタフェース
411 プロセス(プロセス1)
412 プロセス(プロセス2)
420 メモリ
421 隔離領域(隔離領域1)
422 隔離領域(隔離領域2)
423 OS/ハイパーバイザ領域
430 論理アドレス(仮想アドレス)
431 ページテーブル
432 物理アドレス
433 メモリ

Claims (30)

  1. 第1のプロセスを第2のプロセスにロールバックするロールバック制御部と、
    前記第1のプロセス及び前記第2のプロセスによって共有される1つ又は複数のネットワーク状態を記憶する記憶部と、
    を備え、前記第2のプロセスは前記1つ又は複数のネットワーク状態を前記第1のプロセスから引き継ぐことが可能であり、
    前記ロールバック制御部は、
    前記第2のプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御するネットワーク状態制御部を含
    前記ネットワーク状態制御部は、前記第2のプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つを確率的に更新するように制御する、ことを特徴とする通信装置。
  2. 前記ネットワーク状態制御部は、前記第2のプロセスによって引き継がれるネットワーク状態の更新を、前記第2のプロセスが前記ネットワーク状態を使用する前のタイミングに遅らせるように制御する、ことを特徴とする請求項1記載の通信装置。
  3. 第1のプロセスを第2のプロセスにロールバックするロールバック制御部と、
    前記第1のプロセス及び前記第2のプロセスによって共有される1つ又は複数のネットワーク状態を記憶する記憶部と、
    を備え、前記第2のプロセスは前記1つ又は複数のネットワーク状態を前記第1のプロセスから引き継ぐことが可能であり、
    前記ロールバック制御部は、
    前記第2のプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御するネットワーク状態制御部を含み、
    前記ネットワーク状態制御部は、前記第2のプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つを、前記第2のプロセスがアイドル状態のときに更新するように制御する、ことを特徴とする通信装置。
  4. 第1のプロセスを第2のプロセスにロールバックするロールバック制御部と、
    前記第1のプロセス及び前記第2のプロセスによって共有される1つ又は複数のネットワーク状態を記憶する記憶部と、
    を備え、前記第2のプロセスは前記1つ又は複数のネットワーク状態を前記第1のプロセスから引き継ぐことが可能であり、
    前記ロールバック制御部は、
    前記第2のプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御するネットワーク状態制御部を含み、
    バッファと、
    ロールバックのタイミングを制御するように構成されたタイミング制御部と、
    をさらに備え、
    前記ロールバック制御部は、
    前記第1のプロセスが前記ロールバック中にイベントを処理しているときに、前記バッファが、前記第1のプロセス宛に送信された1つ又は複数の受信イベントのすべてを格納するように設定してイベントバッファリングを開始するように制御し、
    前記ロールバック制御部は、
    前記タイミング制御部の制御の下、前記第1のプロセスによる前記イベントの処理が完了すると、前記第1のプロセスから前記第2のプロセスへの稼働プロセスの切り替えを行い、
    前記ロールバック制御部は、
    前記イベントバッファリングの開始から前記バッファに格納された前記1つ又は複数のイベントのすべてを、前記第1のプロセスから切り替えられた前記第2のプロセスに送信し、前記イベントバッファリングを終了するように制御する、ことを特徴とする通信装置。
  5. マッチ条件と前記マッチ条件に対応する受信信号がディスパッチされるターゲットプロセスとの間の対応関係を定義するディスパッチルールに基づいて、受信した信号を関連するプロセスにディスパッチするディスパッチャをさらに備える、ことを特徴とする請求項記載の通信装置。
  6. 前記イベントバッファリングにおいて、前記ロールバック制御部は、前記第1のプロセスが前記イベントを処理している間に受信され、前記第1のプロセスにディスパッチされるべき1つ又は複数のパケットのすべてを、前記ディスパッチャが前記バッファに提供するように制御し、
    前記1つ又は複数のパケットは前記1つ又は複数のイベントに対応し、
    前記バッファは、前記バッファに提供される前記1つ又は複数のパケットを格納し、
    前記ロールバック制御部は、
    前記第1のプロセスによる前記イベントの処理が完了すると、前記ディスパッチャをして、前記ディスパッチルールにおいて前記ターゲットプロセスとして定義されている前記第1のプロセスを、前記第1のプロセスから切り替えた前記第2のプロセスに変更するように、
    制御する、ことを特徴とする請求項記載の通信装置。
  7. 第1のプロセスを第2のプロセスにロールバックするロールバック制御部と、
    前記第1のプロセス及び前記第2のプロセスによって共有される1つ又は複数のネットワーク状態を記憶する記憶部と、
    を備え、前記第2のプロセスは前記1つ又は複数のネットワーク状態を前記第1のプロセスから引き継ぐことが可能であり、
    前記ロールバック制御部は、
    前記第2のプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御するネットワーク状態制御部を含み、
    前記第1及び第2のプロセスは、それぞれに割り当てられた隔離された環境で実行されるように構成され、
    前記第1及び第2のプロセスのそれぞれのために設けられた前記隔離された環境は、他の少なくとも1つのプロセスのために設けられた少なくとも1つの環境のそれぞれから隔離される、ことを特徴とする通信装置。
  8. フローベースのパケット転送に適合された1つ又は複数のスイッチを制御するコントローラ装置であって、
    第1のコントローラプロセスを第2のコントローラプロセスにロールバックするロールバック制御部と、
    前記第1のコントローラプロセス及び前記第2のコントローラプロセスによって共有される1つ又は複数のネットワーク状態を記憶する記憶部と、
    を備え、
    前記ロールバック制御部は、
    前記第2のコントローラプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御するネットワーク状態制御部を含
    前記ネットワーク状態制御部は、前記第2のコントローラプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つを確率的に更新するように制御する、ことを特徴とするコントローラ装置。
  9. 前記ネットワーク状態制御部は、前記第2のコントローラプロセスによって引き継がれるネットワーク状態の更新を、前記第2のコントローラプロセスが前記ネットワーク状態を使用する前のタイミングに遅らせるように制御する、ことを特徴とする請求項8記載のコントローラ装置。
  10. フローベースのパケット転送に適合された1つ又は複数のスイッチを制御するコントローラ装置であって、
    第1のコントローラプロセスを第2のコントローラプロセスにロールバックするロールバック制御部と、
    前記第1のコントローラプロセス及び前記第2のコントローラプロセスによって共有される1つ又は複数のネットワーク状態を記憶する記憶部と、
    を備え、
    前記ロールバック制御部は、
    前記第2のコントローラプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御するネットワーク状態制御部を含み、
    前記ネットワーク状態制御部は、前記第2のコントローラプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つを、前記第2のコントローラプロセスがアイドル状態のときに更新するように制御する、ことを特徴とするコントローラ装置。
  11. フローベースのパケット転送に適合された1つ又は複数のスイッチを制御するコントローラ装置であって、
    第1のコントローラプロセスを第2のコントローラプロセスにロールバックするロールバック制御部と、
    前記第1のコントローラプロセス及び前記第2のコントローラプロセスによって共有される1つ又は複数のネットワーク状態を記憶する記憶部と、
    を備え、
    前記ロールバック制御部は、
    前記第2のコントローラプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御するネットワーク状態制御部を含み、
    前記ロールバック制御部は、前記第1のコントローラプロセスをロールバックする前記第2のコントローラプロセスを作成し、
    前記コントローラ装置は、
    バッファと、
    ロールバックのタイミングを制御するタイミング制御部と、
    前記スイッチに接続されるように適合されたネットワークインタフェースと、
    マッチ条件と前記マッチ条件に対応する受信パケットがディスパッチされるターゲットコントローラプロセスとの間の対応関係を定義するディスパッチルールに基づいて、関連するコントローラプロセスに、受信したパケット又はメッセージをディスパッチするディスパッチャとをさらに備え、
    前記第2のコントローラプロセスを作成した後に、前記ロールバック制御部は、前記第1のコントローラプロセスが受信したパケットに関連するイベントを処理中であると判断した場合、
    前記第1のコントローラプロセスが前記イベントを処理している間に受信され、前記ディスパッチャによって前記第1のコントローラプロセスにディスパッチされるべき1つ又は複数のパケットのすべてを格納するように前記バッファを設定してバッファリングを開始するように制御し、
    前記ロールバック制御部は、前記タイミング制御部の制御の下、前記第1のコントローラプロセスによる前記イベントの処理が完了すると、前記第1のコントローラプロセスから前記第2のコントローラプロセスへの稼働プロセスの切り替えを行い、
    前記ロールバック制御部は、前記バッファリングの開始から前記バッファに格納された前記1つ又は複数のパケットのすべてを、前記第1のコントローラプロセスから切り替えられた前記第2のコントローラプロセスに送信し、前記バッファリングを終了するように制御する、ことを特徴とするコントローラ装置。
  12. 前記バッファリングの開始時に、前記ロールバック制御部は、前記第1のコントローラプロセスが前記イベントを処理している間に受信され、前記第1のコントローラプロセスにディスパッチされるべき1つ又は複数のパケットのすべてを、前記ディスパッチャが前記バッファに提供するように制御し、前記バッファは、前記バッファに提供される前記1つ又は複数のパケットすべてを格納し、
    前記ロールバック制御部は、前記第1のコントローラプロセスによる前記イベントの処理が完了すると、前記ディスパッチャをして、前記ディスパッチルールにおいて前記ターゲットコントローラプロセスとして定義されている前記第1のコントローラプロセスを、前記第1のコントローラプロセスから切り替えられた前記第2のコントローラプロセスに変更するよう制御する、ことを特徴とする請求項1記載のコントローラ装置。
  13. フローベースのパケット転送に適合された1つ又は複数のスイッチを制御するコントローラ装置であって、
    第1のコントローラプロセスを第2のコントローラプロセスにロールバックするロールバック制御部と、
    前記第1のコントローラプロセス及び前記第2のコントローラプロセスによって共有される1つ又は複数のネットワーク状態を記憶する記憶部と、
    を備え、
    前記ロールバック制御部は、
    前記第2のコントローラプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御するネットワーク状態制御部を含み、
    前記第1及び第2のコントローラプロセスは、それぞれに割り当てられた隔離された環境で実行されるように構成され、前記第1及び第2のコントローラプロセスのそれぞれのために設けられた前記隔離された環境は、他の少なくとも1つのプロセスのために設けられた少なくとも1つの環境のそれぞれから隔離される、ことを特徴とするコントローラ装置。
  14. フローベースのパケット転送に適合されたスイッチ装置であって、
    第1のスイッチプロセスを第2のスイッチプロセスにロールバックするロールバック制御部と、
    前記第2のスイッチプロセスは1つ又は複数のネットワーク状態を前記第1のスイッチプロセスから引き継ぐことが可能であり、前記第1のスイッチプロセス及び前記第2のスイッチプロセスによって共有される1つ又は複数のネットワーク状態を記憶する記憶部と、
    を備え、
    前記ロールバック制御部は、
    前記第2のスイッチプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御するネットワーク状態制御部を含
    前記ネットワーク状態制御部は、前記第2のスイッチプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つを確率的に更新するように制御する、ことを特徴とするスイッチ装置。
  15. 前記ネットワーク状態制御部は、前記第2のスイッチプロセスによって引き継がれるネットワーク状態の更新を、前記第2のスイッチプロセスが前記ネットワーク状態を使用する前のタイミングに遅らせるように制御する、ことを特徴とする請求項1記載のスイッチ装置。
  16. フローベースのパケット転送に適合されたスイッチ装置であって、
    第1のスイッチプロセスを第2のスイッチプロセスにロールバックするロールバック制御部と、
    前記第2のスイッチプロセスは1つ又は複数のネットワーク状態を前記第1のスイッチプロセスから引き継ぐことが可能であり、前記第1のスイッチプロセス及び前記第2のスイッチプロセスによって共有される1つ又は複数のネットワーク状態を記憶する記憶部と、
    を備え、
    前記ロールバック制御部は、
    前記第2のスイッチプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御するネットワーク状態制御部を含み、
    前記ネットワーク状態制御部は、前記第2のスイッチプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つを、前記第2のスイッチプロセスがアイドル状態のときに更新するように制御する、ことを特徴とするスイッチ装置。
  17. フローベースのパケット転送に適合されたスイッチ装置であって、
    第1のスイッチプロセスを第2のスイッチプロセスにロールバックするロールバック制御部と、
    前記第2のスイッチプロセスは1つ又は複数のネットワーク状態を前記第1のスイッチプロセスから引き継ぐことが可能であり、前記第1のスイッチプロセス及び前記第2のスイッチプロセスによって共有される1つ又は複数のネットワーク状態を記憶する記憶部と、
    を備え、
    前記ロールバック制御部は、
    前記第2のスイッチプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御するネットワーク状態制御部を含み、
    前記ロールバック制御部は、前記第1のスイッチプロセスをロールバックする前記第2のスイッチプロセスを作成し、
    前記スイッチ装置は、
    バッファと、
    ロールバックのタイミングを制御するタイミング制御部と、
    ネットワークに接続されるように適合されたネットワークインタフェースと、
    マッチ条件と前記マッチ条件に対応する受信パケットがディスパッチされるターゲットスイッチプロセスとの間の対応関係を定義するディスパッチルールに基づいて、関連するスイッチプロセスに、受信したパケット又はメッセージをディスパッチするディスパッチャとをさらに備え、
    前記第2のスイッチプロセスを作成した後に、前記ロールバック制御部は、前記第1のスイッチプロセスが受信したパケットに関連するイベントを処理中であると判断した場合、前記第1のスイッチプロセスが前記イベントを処理している間に受信され、前記ディスパッチャによって前記第1のスイッチプロセスにディスパッチされるべき1つ又は複数のパケットのすべてを格納するような前記バッファの設定でバッファリングが開始するように制御し、
    前記ロールバック制御部は、前記タイミング制御部の制御の下、第1のスイッチプロセスによる前記イベントの処理が完了すると、第1のスイッチプロセスから第2のスイッチプロセスへの稼働プロセスの切り替えを行い、
    前記ロールバック制御部は、前記バッファリングの開始から前記バッファに格納された前記1つ又は複数のパケットのすべてを、第1のスイッチプロセスから切り替えられた第2のスイッチプロセスに送信し、前記バッファリングを終了するように制御する、ことを特徴とするスイッチ装置。
  18. 前記バッファリングの開始時に、前記ロールバック制御部は、前記第1のスイッチプロセスが前記イベントを処理している間に受信され、前記第1のスイッチプロセスにディスパッチされるべき1つ又は複数のパケットのすべてを、前記ディスパッチャが前記バッファに提供するように制御し、前記バッファは、自身に提供される前記1つ又は複数のパケットすべてを格納し、
    前記ロールバック制御部は、前記第1のスイッチプロセスによる前記イベントの処理が完了すると、前記ディスパッチャが、前記ディスパッチルールにおいて対象スイッチプロセスとして定義されている前記第1のスイッチプロセスを、前記第1のスイッチプロセスから切り替えられた前記第2のスイッチプロセスに変更するよう制御する、ことを特徴とする請求項17記載のスイッチ装置。
  19. フローベースのパケット転送に適合されたスイッチ装置であって、
    第1のスイッチプロセスを第2のスイッチプロセスにロールバックするロールバック制御部と、
    前記第2のスイッチプロセスは1つ又は複数のネットワーク状態を前記第1のスイッチプロセスから引き継ぐことが可能であり、前記第1のスイッチプロセス及び前記第2のスイッチプロセスによって共有される1つ又は複数のネットワーク状態を記憶する記憶部と、
    を備え、
    前記ロールバック制御部は、
    前記第2のスイッチプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御するネットワーク状態制御部を含み、
    前記第1及び第2のスイッチプロセスは、それぞれに割り当てられた隔離された環境で実行されるように構成され、前記第1及び第2のスイッチプロセスのそれぞれのために設けられた前記隔離された環境は、他の少なくとも1つのスイッチプロセスのために設けられた少なくとも1つの環境のそれぞれから隔離される、ことを特徴とするスイッチ装置。
  20. フローベースのパケット転送用にそれぞれ適合された1つ又は複数のスイッチと、
    請求項乃至1のいずれか1項に記載のコントローラ装置と、
    を備える、ことを特徴とする通信システム。
  21. 前記スイッチは、
    第1のスイッチプロセスを第2のスイッチプロセスにロールバックするロールバック制御部と、
    前記第2のスイッチプロセスは1つ又は複数のネットワーク状態を前記第1のスイッチプロセスから引き継ぐことが可能であり、前記第1のスイッチプロセス及び前記第2のスイッチプロセスによって共有される1つ又は複数のネットワーク状態を記憶する記憶部と、
    を含み、
    前記ロールバック制御部は、
    前記第2のスイッチプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御するネットワーク状態制御部を含む、ことを特徴とする請求項2記載の通信システム。
  22. 前記スイッチの前記ネットワーク状態制御部は、前記第2のスイッチプロセスによって引き継がれるネットワーク状態の更新を、前記第2のスイッチプロセスが前記ネットワーク状態を使用する前のタイミングに遅らせるように制御する、ことを特徴とする請求項2記載の通信システム。
  23. 前記スイッチの前記ネットワーク状態制御部は、前記第2のスイッチプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つを確率的に更新するように制御する、ことを特徴とする請求項2記載の通信システム。
  24. 前記スイッチの前記ネットワーク状態制御部は、前記第2のスイッチプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つを、前記第2のスイッチプロセスがアイドル状態のときに更新するように制御する、ことを特徴とする請求項2記載の通信システム。
  25. 第1のプロセスを第2のプロセスにロールバックし、
    前記第1のプロセス及び前記第2のプロセスは、記憶部に記憶された状態を共有し、前記第2のプロセスは、前記記憶部に記憶された1つ又は複数のネットワーク状態を引き継ぐことが可能であり、
    前記第2のプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御
    前記第2のプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つを確率的に更新する、ことを特徴とするロールバック方法。
  26. 前記第2のプロセスによって引き継がれるネットワーク状態の更新を、前記第2のプロセスが前記ネットワーク状態を使用する前のタイミングに遅らせる、ことを特徴とする請求項2記載のロールバック方法
  27. 第1のプロセスを第2のプロセスにロールバックし、
    前記第1のプロセス及び前記第2のプロセスは、記憶部に記憶された状態を共有し、前記第2のプロセスは、前記記憶部に記憶された1つ又は複数のネットワーク状態を引き継ぐことが可能であり、
    前記第2のプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御し、
    前記第2のプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つを、前記第2のプロセスがアイドル状態のときに更新する、ことを特徴とするロールバック方法。
  28. 第1のプロセスを第2のプロセスにロールバックし、
    前記第1のプロセス及び前記第2のプロセスは、記憶部に記憶された状態を共有し、前記第2のプロセスは、前記記憶部に記憶された1つ又は複数のネットワーク状態を引き継ぐことが可能であり、
    前記ロールバック後に、前記第2のプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御し、
    前記第2のプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つを確率的に更新すること、を含む処理をコンピュータに実行させるプログラム。
  29. 前記第2のプロセスによって引き継がれるネットワーク状態の更新を、前記第2のプロセスが前記ネットワーク状態を使用する前のタイミングに遅らせる、ことを特徴とする請求項28記載のプログラム。
  30. 第1のプロセスを第2のプロセスにロールバックし、
    前記第1のプロセス及び前記第2のプロセスは、記憶部に記憶された状態を共有し、前記第2のプロセスは、前記記憶部に記憶された1つ又は複数のネットワーク状態を引き継ぐことが可能であり、
    前記ロールバック後に、前記第2のプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つに対して遅延更新を提供するように制御し、
    前記第2のプロセスによって引き継がれる前記1つ又は複数のネットワーク状態のうち少なくとも1つを、前記第2のプロセスがアイドル状態のときに更新する、ことを含む処理をコンピュータに実行させるプログラム。
JP2019502811A 2016-07-21 2016-07-21 通信装置、システム、ロールバック方法及びプログラム Active JP6740543B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/003417 WO2018015984A1 (en) 2016-07-21 2016-07-21 Communication apparaus, system, rollback method, and program

Publications (2)

Publication Number Publication Date
JP2019530267A JP2019530267A (ja) 2019-10-17
JP6740543B2 true JP6740543B2 (ja) 2020-08-19

Family

ID=56618215

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019502811A Active JP6740543B2 (ja) 2016-07-21 2016-07-21 通信装置、システム、ロールバック方法及びプログラム

Country Status (3)

Country Link
US (1) US11349702B2 (ja)
JP (1) JP6740543B2 (ja)
WO (1) WO2018015984A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111309388B (zh) * 2020-02-03 2023-07-21 杭州迪普科技股份有限公司 设备的系统软件版本的自动回滚系统及其方法
US11677583B2 (en) 2020-04-06 2023-06-13 Cisco Technology, Inc. Dynamic cellular connectivity between the hypervisors and virtual machines
JP7380403B2 (ja) * 2020-04-27 2023-11-15 富士通株式会社 情報処理装置及び連携方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07101399B2 (ja) 1988-12-29 1995-11-01 日本電気株式会社 データベースのデッドロック処理方式
US7624436B2 (en) * 2005-06-30 2009-11-24 Intel Corporation Multi-pattern packet content inspection mechanisms employing tagged values
US20070174484A1 (en) * 2006-01-23 2007-07-26 Stratus Technologies Bermuda Ltd. Apparatus and method for high performance checkpointing and rollback of network operations
JP5488980B2 (ja) 2010-02-08 2014-05-14 日本電気株式会社 コンピュータシステム、及び通信方法
CN103155497B (zh) 2010-10-15 2017-07-18 日本电气株式会社 通信系统、控制设备、节点、处理规则设置方法以及程序
CN104067572A (zh) 2012-01-16 2014-09-24 日本电气株式会社 网络系统和同步路径信息的方法
US9432252B2 (en) 2013-07-08 2016-08-30 Nicira, Inc. Unified replication mechanism for fault-tolerance of state
WO2015037116A1 (ja) 2013-09-13 2015-03-19 株式会社日立製作所 制御装置および制御システム
US10009261B2 (en) * 2014-08-21 2018-06-26 Telefonaktiebolaget Lm Ericsson (Publ) Method and system of checkpoint and rollback recovery for forwarding states of a software-defined networking (SDN) system
CN107077366B (zh) * 2014-10-08 2021-12-03 英特尔公司 用于主与辅虚拟机之间的检查点/传递的方法和设备

Also Published As

Publication number Publication date
US11349702B2 (en) 2022-05-31
WO2018015984A1 (en) 2018-01-25
US20210288867A1 (en) 2021-09-16
JP2019530267A (ja) 2019-10-17

Similar Documents

Publication Publication Date Title
JP6328134B2 (ja) クラスタ化されたコンピュータ・システムで通信チャネルのフェイルオーバを実行する方法、装置、およびプログラム
US10425348B2 (en) Stateless network functions
US7657787B2 (en) Method of restoring communication state of process
US9367261B2 (en) Computer system, data management method and data management program
US20080263544A1 (en) Computer system and communication control method
JP2019075691A (ja) ミラーパケット制御プログラム、ミラーパケット制御方法、およびミラーパケット制御装置
JP2012533129A (ja) 仮想ネットワークの高性能で自動化された管理方法及びシステム
JP6604336B2 (ja) 情報処理装置、情報処理方法、及び、プログラム
JP2002163140A (ja) ストレージシステム
JP6740543B2 (ja) 通信装置、システム、ロールバック方法及びプログラム
JP4964666B2 (ja) 冗長化された通信経路を切り替える計算機、プログラム及び方法
US9218356B2 (en) Systems and methods for accelerating networking functionality
JP6489239B2 (ja) 通信装置、システム、方法、及びプログラム
US9558149B2 (en) Dual system
US11722368B2 (en) Setting change method and recording medium recording setting change program
JP2010044553A (ja) データ処理方法、クラスタシステム、及びデータ処理プログラム
JP6787475B2 (ja) 通信装置、システム、ロールバック方法及びプログラム
US20100011383A1 (en) Method for file handling in network switch stacking
US12120203B2 (en) UDP message distribution method, UDP message distribution apparatus, electronic device and computer readable storage medium
KR20160090485A (ko) 소프트웨어 정의 네트워크에서 분산 컨트롤러를 운용하는 방법 및 장치
Guay et al. Early experiences with live migration of SR-IOV enabled InfiniBand
US11397752B1 (en) In-memory ingestion for highly available distributed time-series databases
CN114124680B (zh) 一种文件访问控制告警日志管理方法及装置
CN116578386A (zh) 一种虚拟机部署方法、装置及系统
WO2012042607A1 (ja) 分散コンピューティングシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190118

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200220

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200616

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200629

R150 Certificate of patent or registration of utility model

Ref document number: 6740543

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150