JP6489239B2 - 通信装置、システム、方法、及びプログラム - Google Patents

通信装置、システム、方法、及びプログラム Download PDF

Info

Publication number
JP6489239B2
JP6489239B2 JP2017559143A JP2017559143A JP6489239B2 JP 6489239 B2 JP6489239 B2 JP 6489239B2 JP 2017559143 A JP2017559143 A JP 2017559143A JP 2017559143 A JP2017559143 A JP 2017559143A JP 6489239 B2 JP6489239 B2 JP 6489239B2
Authority
JP
Japan
Prior art keywords
controller
switch
rollback
communication
image
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
JP2017559143A
Other languages
English (en)
Other versions
JP2018516001A (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 JP2018516001A publication Critical patent/JP2018516001A/ja
Application granted granted Critical
Publication of JP6489239B2 publication Critical patent/JP6489239B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/56Routing software
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks

Description

本発明は、通信装置、システム、方法、及びコンピュータプログラムに関する。
ソフトウェアに基づいてネットワークの構成、機能、又は性能を動的に設定又は変更することができるSDN(Software Designed Networks)の一例であるOpenFlowの概要を以下に説明する。OpenFlowスイッチは1つ又は複数のフローエントリを含むフローテーブルを含む。各フローエントリは、受信パケットのヘッダフィールド情報と照合されるマッチフィールドと、受信パケット数及び受信バイト数などの統計情報を含むカウンタフィールドと、ヘッダフィールド情報がマッチフィールドと一致する受信パケットをスイッチがどのように取り扱うかを指示するアクションを0又はそれ以上含むアクションフィールドと、を含む。OpenFlowスイッチは、パケットを受信すると、そのパケットのヘッダフィールド情報を用いてフローテーブルを検索する。ミスヒット(不一致)の場合、OpenFlowスイッチは、セキュアチャネルを介して該受信パケットをOpenFlowコントローラに転送する。
OpenFlowコントローラは、ヘッダで指定されたパケットの送信元(source)と宛先(destination)に関する情報に基づいて、ネットワークトポロジ情報からパケットのパス(path:経路)を計算する。OpenFlowコントローラはパス上の各OpenFlowスイッチのフローエントリを生成し、各フローエントリを該パス上の各OpenFlowスイッチに設定する。該パス上の各OpenFlowスイッチは、OpenFlowコントローラによって設定されたフローエントリのマッチフィールドと一致するヘッダを有する後続パケットを受信すると、該パス上の各OpenFlowスイッチは、該フローエントリのアクションフィールドに規定されるように、パケットを次のノードに転送する。なお、OpenFlowの詳細については、下記のNPL(非特許文献4)を参照することができる。
特にSDNにおいては、攻撃に対するネットワークの脆弱性を低減するために、安全なネットワーキングに関する広範な研究開発が行われている。
非特許文献1には、マイクロNOS(Network Operating System)内で独立してアプリケーションを生成するという概念に基づいて、ネットワークアプリケーションの閉じ込め(containment)及び復元力(resilience)戦略を実装するROSEMARYコントローラが提案されている。
非特許文献2では、OpenFlowアプリケーションの潜在的な信頼問題に対処するためのPermOFが提案されている。信頼性の乱用はネットワーク全体に影響を与えるさまざまな種類の攻撃につながる可能性がある。PermOFでは、コントローラとアプリケーションの間で制御フローとデータの分離が確立される。OpenFlowアプリケーションはコントローラカーネルから分離されている。つまり、OpenFlowアプリケーションはカーネルプロシージャを呼び出すことも、カーネルメモリを直接参照することもできない。OpenFlowアプリケーションとOS(Operating System)の間にアクセス制御レイヤが設けられている。このレイヤはコントローラカーネルによって制御されるため、OpenFlowアプリケーションとOSとの間の望ましくないインタラクションが遮断される。
非特許文献3では、データプレーン層からより多くの関与を受けてOpenFlowネットワークのセキュリティと復元力(resilience)を向上させる新しいフレームワークであるAVANT−GUARDが提案されている。接続の移行により、データプレーンは制御プレーンを飽和攻撃から保護することができる。ネットワークが攻撃を受けているときに、トリガを作動させると、自動的にフロールールが挿入される。
Seungwon Shin et al., "Rosemary: A Robust, Secure, and High-performance Network Operating System", CCS '14 Xitao Wen et al., "Towards a secure controller platform for openflow applications", HotSDN '13 Seungwon Shin et al., "AVANT-GUARD: scalable and vigilant switch flow management in software-defined networks", CCS '13 "Openflow Switch Specification" Version 1.0.0. (Wire Protocol 0x01), Internet(URL:http://www.openflowswitch.org/documents/openflow-spec-v1.0.0.pdf)
上述した非特許文献1〜4の開示内容は、参照によって本明細書の一部に組み込まれるものとする。
以下の分析は、本発明者らによってなされたものである。
非特許文献1〜3のような関連技術では、汚染した要素又はプロセスを回復可能とする機構は提供されていない。このため、コンポーネント又はネットワークノードが汚染に感染すると、該汚染はさらにネットワーク全体に広がる可能性がある。
したがって、本発明の目的は、汚染状態からの回復を可能にして安全なネットワーキングを保証するシステム、装置、方法及びプログラムを提供することである。
本開示の一つの態様によれば、各々がそれぞれに対応するフローに対して通信処理を行う複数の通信プロセスと、ネットワークに接続されるように構成された複数のネットワークインタフェースと、前記ネットワークインタフェースからパケットを受信し、フローと、前記フローのディスパッチ先となる通信プロセスとの関連付けを規定したディスパッチルールに基づいて、前記パケットを関連する通信プロセスにディスパッチするディスパッチャと、保存されたイメージを用いて各通信プロセスをロールバックする制御を行う制御部と、を備える通信装置が提供される。
本開示の別の態様によれば、スイッチと、前記スイッチを制御するコントローラと、を備え、前記スイッチは、各々がそれぞれに対応するフローに対してスイッチ処理を行う複数のスイッチプロセスと、ネットワークに接続されるように構成された複数のネットワークインタフェースと、前記ネットワークインタフェースからパケットを受信し、フローと、前記フローのディスパッチ先となるスイッチプロセスとの関連付けを規定したディスパッチルールに基づいて、前記パケットを関連するスイッチプロセスにディスパッチするディスパッチャと、保存されたイメージを用いて各スイッチプロセスをロールバックする制御を行う制御部と、備える通信システムが提供される。
本開示のさらなる態様によれば、フローと、前記フローのディスパッチ先となるスイッチプロセスとの関連付けを規定したディスパッチルールに基づいて、受信パケットを、関連するスイッチプロセスにディスパッチし、
前記関連するスイッチプロセスは前記フローに対応するスイッチプロセスを実行し、
前記保存されたイメージを用いて前記スイッチプロセスをロールバックする制御を行う、通信方法が提供される。
本開示のさらに別の態様によれば、複数の通信プロセスのそれぞれに対応するフローに対して通信処理を行う複数の通信プロセスと、ネットワークインタフェースからパケットを受信し、前記フローがディスパッチされる通信プロセスと、フローとの関連付けを定義するディスパッチルールに基づいて、前記パケットを関連する通信プロセスにディスパッチするディスパッチ処理と、通信プロセスの保存されたイメージを用いて前記各通信プロセスをロールバックするロールバック処理と、コンピュータに処理を実行させるプログラムが提供される。上記プログラムを格納した半導体ストレージ、CD(Compact Disk)、DVD(Digital Versatile Disk)などの非一時的なコンピュータ読み取り可能な記録媒体が提供される。
本発明によれば、ネットワーキングプロセスを汚染から回復可能とし安全なネットワーキングを保証可能としている。
本発明のさらに他の特徴及び利点は、本発明を実施することが企図されている形態を図示及び説明した添付の図面と併せて以下の詳細な説明から当業者には容易に明らかになるであろう。理解されるように、本発明は、他の異なる実施形態が可能であり、そのいくつかの詳細は、本発明から逸脱することなく、様々な明白な点において変更可能である。したがって、図面及び説明は、本質的に例示的であるとみなされるべきであり、限定的ではないとみなされるべきである。
本発明の例示的な実施形態におけるスイッチの構成を示す図である。 本発明の例示的な実施形態におけるロールバックを説明する図である。 本発明の例示的な実施形態におけるスイッチのシーケンスの一例を例示する図である。 本発明の例示的な実施形態におけるスイッチの変形例を例示する図である。 本発明の例示的な実施の形態におけるコントローラの構成を示す図である。 本発明の例示的な実施形態におけるコントローラの変形例を示す図である。 本発明の例示的な実施形態におけるコントローラにおけるロールバックの変形例を示す図である。 本発明の例示的な実施形態におけるスイッチプロセスにおけるロールバックシーケンスを示す図である。 本発明の例示的な実施形態におけるコントローラプロセスにおけるロールバックシーケンスを示す図である。 例示的な実施形態におけるロールバックの変形例の手順を示す図である。 例示的な実施形態におけるロールバックの変化を示す図である。 本発明の例示的な実施形態におけるハイパーバイザを示す図である。 本発明の他の例示的な実施形態におけるスイッチの構成を示す図である。 本発明の他の例示的な実施形態におけるコントローラの構成を示す図である。 本発明の例示的な実施形態におけるメモリアイソレーションを示す図である。 ページングを示す図である。 本発明の例示的な実施形態におけるテナントベースのネットワークアイソレーションを示す図である。 本発明の他の例示的な実施形態におけるスイッチの変形例を示す図である。 本発明の他の例示的な実施形態における変形例の手順を説明する図である。
以下、本発明例示的なの実施形態について説明する。図1は、例示的な実施形態におけるスイッチを示す。図1を参照すると、スイッチプロセス101(101A−101C)、ハイパーバイザ110、ディスパッチャ120、及び、複数のネットワークインタフェースコントローラ(又はネットワークインタフェースカード)(NICs)130を含むスイッチ100が提供される。
NICs130とスイッチプロセス101(101A-101C)との間に配置されたディスパッチャ120は、ハイパーバイザ110を介して関連するスイッチプロセス101にフロー(NICs130から受信したパケット)をディスパッチする。また、ディスパッチャ120は、スイッチプロセス101から受信したパケットを対応するNIC130に送出し、パケットをネットワークに出力する。ディスパッチャ120は、複数の入力ポート(図示せず)及び複数の出力ポート(図示せず)を含み、フローと、該フローに関連するスイッチプロセスとの間の対応関係を示すディスパッチルールに基づき、入力ポートで受信されたパケットをターゲット出力ポートに転送する。ディスパッチャ120は、コントローラを有するハードウェアスイッチによって構成してもよいし、ソフトウェアによって実現される仮想スイッチで構成してもよい。フローは、パケットの所定のヘッダフィールド、例えば、送信元(source:ソース)インタフェース、プロトコル、ソース(送信元)IPアドレス、ソース(送信元)ポート、宛先(destination)IPアドレス、及び宛先ポートのうちの1つ又は組合せによって定義することができる。
ハイパーバイザ110は、スイッチプロセスを生成する。図1では、3つのスイッチプロセス101A−101Cが例示されているが、スイッチプロセスの数は3に限定されず、1以上の任意の整数であってもよい。
ハイパーバイザ110は、コンピュータソフトウェア、ファームウェア又はハードウェアを含み、ハードウェアリソースを制御するように構成されてもよい。特に限定されないが、ハイパーバイザ110は、サーバ仮想化に適用する場合、仮想化されたハードウェア資源、ゲストOS及びアプリケーションを含む仮想マシン(Virtual Machine:VM)を制御するようにしてもよい。仮想化されたハードウェア資源は、例えば、仮想化されたCPU(Central Processing Unit)、仮想化されたストレージ、仮想化されたネットワークなどを含む。
本実施形態では、スイッチプロセス101のプロセスイメージを、図示しないストレージに保存し、スイッチプロセス101に関連するコンテンツのハッシュ値やチェックサムなどのインテグリティ尺度(integrity measure:完全性尺度、あるいは完全性測度とも称せられる)を、スイッチプロセス101Aに関連してログする。そして、その後、スイッチプロセス101Aに関連するコンテンツのインテグリティ尺度が再び計算され、現在計算されたインテグリティ尺度と、以前に計算されて保存されたインテグリティ尺度が同じであるかどうかをチェックすることによって、インテグリティ尺度の検証が実行される。現在計算されたインテグリティ尺度と以前に計算されて保存されたインテグリティ尺度が同じでないことが分かった場合、スイッチプロセス101Aの保存されたプロセスイメージが復元される。これにより、スイッチプロセス101Aのプロセスイメージは、スイッチプロセス101Aに関連するコンテンツが破損する前の状態にロールバックされる。
スイッチ100において、ハイパーバイザ110は、プロセスイメージの保存の実行、インテグリティ検証、及び保存されたプロセスイメージのターゲットプロセスへの復元を制御するように適合されたロールバック制御機能を含むようにしてもよい。
ハイパーバイザ110は、例えば1つのフロー又はNフロー(Nは2以上の正の整数)を処理した後、又は定期的にスイッチプロセス101のロールバックを制御することができる。
図1を参照して説明した実施形態によれば、スイッチプロセス101が汚染によって損なわれた場合であっても、汚染をロールバックによって除去して、安全なネットワーキングに寄与させることができる。
図2に示されるように、ロールバック操作のために、保存されたプロセスイメージ301は、プロセスの実行コード(例えば、プロセスに割り当てられたメインメモリ上の命令コード)と状態(例えば変数、レジスタ、スタックポインタ、プロセス用に割り当てられたテーブルの情報)を含む。スイッチプロセス101の状態は、後述するフローテーブルを含むようにしてもよい。
ロールバックされるコンテンツには、次の3つのタイプがある。
(a)保存された状態が復元される、
(b)保存された実行コードが復元される、及び、
(c)保存された状態及び保存された実行コードが復元される。
具体的には、図2に示すように、
保存された状態302は、実行中のスイッチプロセスの既存の状態305に上書きされる、
実行中のスイッチ処理の実行コード306に実行コード303を上書きする、又は、
保存された状態302及び実行コード303は、実行中のスイッチ処理の既存の状態305及び実行コード306にそれぞれ上書きされる。
この構成は、ロールバック・シャットダウン・リブート(rollback-shutdown-rebooting)操作と比較して、ロールバック操作による回復プロセスの加速又は高速化に寄与する。保存された状態302及び/又は実行コード303を、実行中のスイッチ処理に戻す際には、実行中のスイッチ処理については、相互排除や同期などの制御が行われることは勿論である。
次に、スイッチ100の構成及び動作について、図3及び図4を参照して説明する。
図3は、ディスパッチャ120のディスパッチルール及びスイッチ100のスイッチプロセス101のフローエントリを示す。ディスパッチャ120は、ストレージ122に格納されたディスパッチルールテーブル121を含む。ディスパッチルールテーブル121は、各フローは、フローがディスパッチされるスイッチプロセスとの関連付けを指定する。なお、図3では、説明を簡単にするために、ディスパッチルールテーブル121のフローフィールド(条件フィールド)は、宛先IPアドレスフィールドのみを用いているが、MAC等のパケットヘッダの1つ以上の他のフィールドアドレスとVLAN IDを使用してフローを定義してもよい。
ディスパッチャ120は、受信したIPパケットのIPヘッダの解析を行い、IPヘッダの宛先IPアドレスフィールドを抽出し、ディスパッチルールテーブル121を検索し、宛先IPアドレスと一致するフローフィールドを持つディスパッチルールを見つける。図3の例では、ディスパッチルールテーブル121は、それぞれ、以下の3つのディスパッチルールを含む。
受信したパケットヘッダの宛先IPアドレスフィールドがXであれば、スイッチプロセスAにパケットをディスパッチする。
受信したパケットヘッダの宛先IPアドレスフィールドがYであれば、スイッチ処理Bにパケットをディスパッチする。
受信したパケットヘッダの宛先IPアドレスフィールドがZであれば、パケットはスイッチプロセスCにディスパッチされる。この例では、ディスパッチャ120は宛先IPアドレス:Xの受信IPパケットをスイッチプロセスAにディスパッチする。
各スイッチプロセス101は、ストレージ104に格納された1つ又は複数のフローエントリを含むフローテーブル103を含む。フローテーブル103の各フローエントリは、少なくともマッチフィールド及び動作のリストを含む動作フィールドを含む。スイッチプロセス101は、受信したIPパケットのIPヘッダフィールド情報を用いてフローテーブル103を検索する。この例では、ディスパッチャ120によってスイッチプロセスAにディスパッチされたIPパケットヘッダの宛先IPアドレスXが、フローエントリのマッチフィールドと一致していることを発見すると、スイッチプロセスAは、フローテーブル103内の一致するフローエントリの動作フィールドに規定されているアクション1,2,3及び4を実行する。
図4は、図3を参照して説明したスイッチ100におけるフローセットアップシーケンスの概略を例示する。
図4を参照すると、スイッチ100はディスパッチされていないフローを受信する(1)。括弧内の数字1は、図4のシーケンス番号1を示し、以下のシーケンスについても同様である。未ディスパッチフローは、ディスパッチルールテーブル121にまだフローに対応するスイッチプロセスが割り当てられていないフロー(新規フロー)であり、不一致となる。
スイッチ100は、コントローラ200にクエリ(問い合わせ)を送信する(2)。
スイッチ100からコントローラ200に送信されるクエリは、コントローラ200にフロー情報を通知するために、キャプチャされたパケットの少なくともパケットヘッダを含むようにしてもよい。特に制限されないが、スイッチ100は、該クエリとして、OpenFlowプロトコルを使用しセキュアチャネルを介してパケットインメッセージをコントローラ200に送信するようにしてもよい。パケットインメッセージは、パケットがキャプチャされコントローラに転送された理由を示す理由フィールドと、該パケット(第1のパケット)のキャプチャされた部分を含む。この場合、パケットインメッセージの理由フィールドは、スイッチ100内のディスパッチルールテーブル121での不一致を示すコードを含むようにしてもよい。
スイッチ100からのクエリを受信すると、コントローラ200は、クエリに含まれるパケット(第1のパケット)のIPパケットヘッダを解析し、新しいフローのディスパッチルールを作成する。
この段階では、コントローラ200において、新たなフローに関連付けられたコントローラプロセスが未だ割り当てられていない場合がある。なお、コントローラプロセスについては、図5を参照して後述される。予め定められたデフォルトコントローラプロセスは、第1のパケットのIPパケットヘッダを分析し、新しいフローのディスパッチルールを作成するようにしてもよい。コントローラ200は、作成したディスパッチルールをスイッチに送信する(3)。
スイッチ100は、コントローラ200から新しいフローのディスパッチルールを受信し、ディスパッチルールテーブル121を新しいフローのディスパッチルールで更新する。スイッチ100内のハイパーバイザ110は、スイッチプロセス101を起動する。コントローラ200から受信したディスパッチルールに定義されているスイッチプロセス101が既に起動されているが、新しいフローにまだ関連付けられていない場合(例えば、宛先IPアドレス:X)、スイッチプロセス101(例えば、「プロセスA」)の起動(invocation)は省略することができる。
次に、スイッチ100は、コントローラ200に肯定応答(ACK:Acknowledgement)を送信する(5)。
コントローラ200は、スイッチ100からのACKに応答して、コントローラ200に設けられたストレージに格納されているネットワークトポロジ情報に基づいて新たな経路を算出し、アクションルール(フローエントリ)を作成してスイッチ100及び経路上の不図示の1つ以上の他のスイッチに送信する(6)。コントローラ200は、OpenFlowコントローラとして、パス上のスイッチ100のそれぞれに、パケットとマッチさせるためにとるべきアクション、マッチ条件、命令を含むFlowMod(Flow Modify)メッセージを送信するようにしてもよい。
スイッチプロセス101は、ストレージ104内のコントローラ200から送信されたルール(フローエントリ)でフローテーブル103を更新する。スイッチプロセス101は、第1のパケットに続き、第1のパケットと同じフローに属するパケットを処理するコントローラから受信したフローエントリに転送する(7)。コントローラ200は、パケットアウトメッセージを使用して第1のパケットをOpenFlowネットワークのエッジスイッチに送信し、該エッジスイッチから該第1のパケットを宛先ノードに送信するようにしてもよい。
フローエントリが設定された時刻から所定の時間が経過したとき、又はフローエントリが最後に参照された時刻から所定の時間が指定された場合、フローエントリはスイッチ内で削除され、フロー削除メッセージがスイッチからOpenFlowプロトコルを使用して、コントローラに送信される。これは、フローの終了に対応する。すなわち、スイッチ内のフローテーブル103内のフローエントリの設定から、スイッチ内のフローの除去まで、フローの1つのライフサイクルを定義する。
次に、図4のコントローラ200について説明する。
図5は、例示的な実施形態のコントローラ200を例示する図である。図5を参照すると、ハイパーバイザ210は、各コントローラプロセス201(201A−201C)の作成/終了を制御する。図5には、説明のために3つのコントローラプロセス201A−201Cが設けられているが、コントローラプロセス201の数は3つに限定されず、1以上の任意の整数であってよい。
ディスパッチャ220は、ディスパッチルールに基づいて、スイッチ100(又はスイッチプロセス101)からの要求(パケットインメッセージなど)を受信し、関連するコントローラプロセス201に該要求をディスパッチする。ディスパッチャ220内のディスパッチルールは、スイッチに接続されたポートIDとコントローラプロセスIDとの間の対応関係を含むことができる。スイッチに接続されたポートIDとコントローラプロセスIDとの対応関係は、コントローラプロセスとスイッチの信頼レベル(trust level)に基づいて決定されてもよい。対応関係は、仮想ネットワークに基づいて決定されてもよい。例えば、仮想ネットワークAを制御するコントローラプロセスと、ネットワークAのトラフィックを扱うスイッチプロセスとが接続される。
ハイパーバイザ210は、プロセスイメージの保存、インテグリティ検証、及び、プロセスイメージの復元のロールバック制御機能を含む。ハイパーバイザ210のこのロールバック制御機能は、上述したスイッチ100のハイパーバイザ110のロールバック制御機能に対応する。
ハイパーバイザ210は、例えば、スイッチ100からの要求を処理した後(又はフロー(又はNフロー)を処理した後)に、コントローラプロセス201A−201Cのそれぞれのロールバックを制御する。ハイパーバイザ210は、例えば1時間当たり、1日当たり、というように、定期的にロールバックを実行してもよい。本実施形態によれば、汚染(contamination)によりコントローラプロセスが壊れても、ロールバックにより該汚染を除去してコントローラプロセスを復元することが可能となる。
コントローラプロセス201のプロセスイメージは、実行コード及び状態(プロセスに割り当てられた変数、レジスタ及びテーブルの情報)を含む。コントローラプロセスの状態は、ネットワークトポロジ情報を含んでもよい。
スイッチプロセス101のロールバックに関して、図2を参照して説明したように、コントローラプロセス201のロールバックは、
(a)保存状態が復元される、
(b)保存された実行コードが復元される、
(c)保存された状態及び保存された実行コードが復元される、
の3つのタイプを含む。図2に示すように、保存された状態及び/又は実行コードは、実行中のコントローラプロセス201の既存の状態及び/又は実行コードに上書きされる。この構成は、ロールバック・シャットダウン・リブート操作と比較して、ロールバック操作による回復プロセスの加速又は高速化に寄与する。保存された状態302及び/又は実行コード303を実行中のコントローラプロセス201に復元する際には、実行中のコントローラプロセス201に対して、相互排他及び同期などの制御が行われてもよいことは勿論である。
図6は、コントローラ200の変形例を示す図である。図6に示すように、コントローラプロセス201A−202Cは、ハイパーバイザ210によって起動される
ディスパッチャ220(サウスバウンド(Southbound)API用のディスパッチャ)は、スイッチ100(又はスイッチ内のスイッチプロセス)から関連するサウスバウンドAPI203及びコントローラプロセス201へリクエスト(API(アプリケーションプログラムインターフェイス)コール)をディスパッチする。ディスパッチャ220からのリクエスト(APIコール)は、サウスバウンドAPI203を介してコントローラコアプロセス(コア機能)202に転送される。
ディスパッチャ230(ノースバウンド(Northbound)APIのためのディスパッチャ)は、アプリケーション250(例えばロードバランサ、ファイアウォール等)から関連するノースバウンドAPI204へのリクエスト251(APIコール)をディスパッチする。ディスパッチャ220からのリクエスト(APIコール)は、ノースバウンドAPI204を介してコントローラプロセス201に転送される。
サウスバウンドAPI203A−203Cは、コントローラプロセス201A−201CがSDNスタックの最下部にあるスイッチの挙動を定義することを可能にする。ノースバウンドAPI204A〜204Cは、コントローラプロセス201A〜201Cとアプリケーション205A〜205C又は上位層制御プログラムとの間の通信インタフェースを、SDNスタックの最上部に指定する。アプリケーション205A−205Cは、ノースバウンドアプリケーションとも呼ばれる。
特に制限されないが、この実施例では、ディスパッチャ220及び230は、「テナント」に基づいて、APIコールをディスパッチしてもよい。
ハイパーバイザ210は、例えば、スイッチ100又はアプリケーション250からのパケットインメッセージなどの要求を処理した後、又はフロー(又はN個のフロー)を処理した後に、コントローラプロセスのロールバックを制御する。この例では、コントローラプロセスが、ウイルス等に感染した場合であっても、汚染されていないプロセスイメージにロールバックすることによって、該汚染は除去可能とされている。
プロセスイメージは、実行コード及び/又は状態(プロセスに割り当てられた変数、レジスタ、及びテーブルの情報)を含む。コントローラプロセス201の状態は、特に制限されないが、ネットワークトポロジ情報を含むことができる。この例では、ロールバックには、図5を参照して説明したコントローラ200と同様に、
(a)保存状態の復元、
(b)保存した実行コードの復元、及び、
(c)保存した状態と保存した実行コードの復元、
が行われる。図2に示すように、保存された状態及び/又は実行コードは、実行中のコントローラプロセスの既存の状態及び/又は実行コードに上書きされる。
図7は、図6のコントローラプロセス201のロールバックの変形を示す図である。図7に、模式的に示されるように、コントローラプロセス201の一部は、サウスバウンドAPI203又はノースバウンドAPI204が配置されるように、別々にロールバックされてもよい。外側に配置されたサウスバウンドAPI203又はノースバウンドAPI204は、内側に配置されたコントローラコアプロセス202よりも外部(ネットワーク又はアプリケーション)からの汚染にさらされやすい。したがって、サウスバウンドAPI203又はノースバウンドAPI204のロールバックは、コントローラコアプロセス202と比較してより頻繁に実行されてもよい。
ロールバックは、コントローラプロセス201がネットワークトポロジディスカバリを実行するとき、すなわち、1つのオペレーションを処理した後に、実行されるようにしてもよい。あるいは、コントローラコアプロセス202のロールバックは、定期的に実行されてもよい。
ロールバックのタイミングは、セキュリティレベルに基づいて変更されてもよい。例えば、重要なフローを処理する1つ以上のコントローラプロセス201は、比較的短い間隔で保存されて検証が行われ、他のコントローラプロセスは、比較的長い間隔で保存されて検証が行なわれるようにしてもよい。
図8は、図1のスイッチプロセス100のプロセスライフサイクルを示す。ステップS0で終了又は中断されたスイッチプロセスNは、ハイパーバイザ110によってロールバックされる(保存された実行コードが復元される)(S1)。そして、保存された状態が復元される(S2)。
スイッチプロセスNは、パケットを待つ(S3)。スイッチプロセスNは、パケットを受信すると、フローテーブルを検索する。受信したパケットのパケットヘッダ情報と一致するフローエントリを見つると、スイッチプロセスNは、一致するフローエントリのアクションフィールドに従って、受信したパケットを処理する。この場合、スイッチプロセスNは、パケットを次のノードに転送する。スイッチプロセスNの状態又はフローテーブルが保存され、スイッチプロセスNの実行コードが保存される(S6)。スイッチプロセスNは終了(terminate)又は中断(suspend)される(S0)。他のスイッチプロセス1−N−1も、スイッチプロセスNと同様に制御される。
図9は、図6のコントローラプロセス201のプロセスライフサイクルを例示している。終了又は中断(S0)されたコントローラプロセス(コントローラコアプロセス)N及び保存された実行コードは、ハイパーバイザ110によってロールバックされる(S1)。そして、保存された状態が復元される(S2)。コントローラプロセス(コントローラコアプロセス)Nは、サウスバウンド/ノースバウンドAPIからのリクエストを待つ(S3)。コントローラプロセス(コントローラコアプロセス)Nは、サウスバウンド/ノースバウンドAPIからリクエストを受信すると(S4)、サウスバウンド/ノースバウンドAPIに決定(応答)を送信する。状態又はトポロジ情報が保存され、コントローラプロセス(コントローラコアプロセス)Nの実行コードが保存される(S6)。コントローラプロセス(コントローラコアプロセス)Nは、終了又は中断される(S0)。
以下、本実施形態におけるロールバック制御の変形例について説明する。ここでは、復元対象のロールバックイメージのインテグリティ検証が行われる。
図10Aは、本実施形態におけるロールバック制御の変形例の手順を示している。図10Aの手順は、スイッチ100とコントローラ200の両方におけるロールバック制御に適用することができる。
プロセス(スイッチプロセス101/コントローラプロセス201)は、ハイパーバイザ(110/210)によって呼び出される(S11)。
状態/実行コードが保存され、ハイパーバイザ(110/210)の制御によってハッシュ値などのインテグリティ尺度が保存される(S12)。
コントローラは、要求を処理するか、又はスイッチがフローを処理する(S13)。
ロールバックイメージのインテグリティ尺度が計算され、保存されたインテグリティ尺度と比較される(S12)(S14)。
今回計算されたインテグリティ尺度が、保存されたインテグリティ尺度と一致しない場合(S15のNo分岐、ロールバックイメージが変更されたことを意味する)、ハイパーバイザ(110/210)はアラート(警告)を表示する(S16)。ロールバックイメージが変更されていない場合は、ロールバックイメージを用いてプロセスが復元される(S17)。
上記の実施形態では、ハイパーバイザ(110/210)は定期的にロールバックを実行するようにしてもよい。あるいは、ハイパーバイザ(110/210)は、所定のイベントが発生したときにロールバックを実行するようにしてもよい。例えば、ハイパーバイザ(110/210)は、実行中の各プロセスのインテグリティを測定するようにしてもよい。ハイパーバイザ(110/210)が汚染を識別した場合に、ハイパーバイザ(110/210)はロールバックを実行するようにしてもよい。さらに、ハイパーバイザ(110/210)は、各プロセスの動作を監視し、異常動作を実行するプロセスをロールバックするようにしてもよい。
図10Bは、ロールバックイメージ管理の変形例を図解する。上記において、ハイパーバイザ210は、ハイパーバイザがプロセスを起動するたびに、ロールバックイメージを保存するが、ハイパーバイザ210はロールバックイメージを定期的に保存してもよい。例えば、ハイパーバイザ210は、特に制限されないが、ロールバックイメージを10分間隔で保存/更新するようにしてもよい。ハイパーバイザ(110/210)は、ロールバックをトリガするための予め定められたイベント(例えば、実行中プロセスのインテグリティチェックの失敗、異常な挙動の発見など)の発生時に、最新のロールバックイメージを用いてプロセスのロールバックするようにしてもよい。
ロールバックイメージがスイッチプロセス101のフローエントリを含む場合、ロールバックイメージとして保存されたフローエントリは、スイッチプロセス101の現在の(既存の)フローエントリに上書きされる。この場合、スイッチプロセス101は、フローエントリを要求するメッセージをコントローラに送信し、現在のフローエントリを取得する。代替的に、スイッチプロセス101は、ロールバックイメージの復元によって上書きされないストレージ内の現在のフローエントリをレプリカとして保存し、ロールバックが完了した後、スイッチプロセス101は、保存されたレプリカから、現在のフローエントリを復元するようにしてもよい。コントローラプロセス201のロールバックイメージの状態に関しても同様である。
次に、スイッチ100におけるハイパーバイザ110の例を説明する。図11は、スイッチ100におけるロールバック制御部としてのハイパーバイザ110の構成を示す図である。図11では、ロールバック制御に関係したハイパーバイザ110の構成要素が模式的に示されており、ハイパーバイザ110内の他の要素は省略されている。
図11を参照すると、プロセス起動/再開部111は、スイッチプロセス101を起動(再ブート)又は再開する。プロセス終了/中断部112は、スイッチプロセス101を終了又は中断する。プロセス起動/再開部111は、中断したスイッチプロセス101、すなわち、スイッチプロセス101のサスペンド状態を解除する。状態/コード保存部113は、スイッチプロセスの状態及び/又は実行コードをストレージ118に保存する。インテグリティ尺度計算部114はスイッチプロセス101のハッシュ値を含むインテグリティ尺度を計算する。インテグリティ尺度保存部115は、インテグリティ尺度計算部114によって今回計算されたインテグリティ尺度を保存する。インテグリティ尺度検査部116は、インテグリティ尺度計算部114によって今回計算されたインテグリティ尺度と、前に計算され保存されたインテグリティ尺度は同じであるか否かをチェック(検査)する。
状態/コード復元部117は、図2を参照して説明したように、状態コード及び/又は実行コードに、保存された状態コード及び/又は実行コードを上書きする。ロールバックコントローラ機能は、コンピュータプログラムによって実現されてもよい。図5及び図6のハイパーバイザ210は、コントローラプロセスのロールバック制御に関して、図11を参照して説明したのと同じように構成してもよい。
図12は、他の実施形態におけるスイッチの構成を示す図である。図12を参照すると、スイッチプロセス101(101A−101C)は、隔離された(アイソレーテッド)環境102(102A−102C)で実行されるように構成されている。アイソレーション技術は、システム全体に影響を与えずにマルウェアの実行が可能な封じ込め環境を提供する。マルウェアによる被害は、隔離された環境に閉じ込められる。すなわち、スイッチプロセスがマルウェアによって損なわれたとしても、マルウェアは隔離された環境102に閉じ込められ、他のフローに影響を及ぼすことはできない。
この例示的な実施形態では、ハイパーバイザ110は、特に制限されないが、メモリアイソレーションを提供する。隔離された環境102Aのスイッチプロセス101Aに割り当てられたメモリ領域(隔離された領域)は、他の隔離された環境102B及び102Cの他のスイッチプロセス101B及び101Cに割り当てられた他のメモリ領域(隔離された領域)から隔離され、スイッチプロセス及びOSによって共有される共有領域を除いて、OS/ハイパーバイザ又はデバイスドライバ(図示せず)に割り当てられたメモリ領域から隔離される。
図14Aは、ハイパーバイザ又はハードウェアベースのメモリ保護の例を示す。図14Aに示すように、処理1,2に割当てられた隔離された領域1,2(21、22)は、メモリ20内の別々のメモリ領域である.OS(ハイパーバイザ)に割り当てられたOS/ハイパーバイザ領域23は、プロセス1とプロセス2(11、12)に割り当てられる隔離された領域1と2(21、22)とは異なる。このため、OS(ハイパーバイザ)は、プロセス11、12から保護されている。プロセス(11、12)によってアドレス指定されるメモリ空間は異なるので、各プロセス(11、12)は、他のプロセスの隔離された領域にアクセスすることはできない。
特に制限されないが、ハイパーバイザ又はハードウェアベースのMMU(Memory Management Unit)は、プロセスのメモリ空間のベースアドレスが設定されるリロケーションレジスタ(図示せず)を用いて各プロセスの論理(仮想)アドレスから物理アドレスへの変換を行う。リロケーションレジスタのベースアドレスと論理アドレスを加算して物理アドレスが生成される。MMUは、生成された物理アドレスが、プロセスのベースアドレスとリミットアドレスによって定義された範囲内にあることをチェックする。これはメモリ保護機構として機能する。プロセスがアクセス権を持たないメモリ空間にアクセスする、又はプロセスに割り当てられたベースアドレスとリミットによって定義された範囲外にアクセスする等、フォルトプロセスによるメモリアクセス違反の発生をMMUが検出すると、フォルトプロセスは、トラップによるアドレッシングエラーの通知を受けるか、アドレッシングエラーの通知とともにアボート(abort)される可能性がある。
MMUベースのメモリ保護は、図14Bに示すようなページテーブルによって実現するようにしてもよい。MMUはページベースのMMUに限定されず、例えば、セグメントベースのメモリ保護等も採用されてもよい
ページは、固定長の連続ブロックである(例えば、4KB(Kilo Bytes))。プロセスから発行される論理アドレス(仮想アドレス)30は、ページ番号フィールド(n−mビット)及びオフセットフィールド(mビット)を含む。この場合、ページサイズは2^mである。^は冪乗演算子を表し、プロセスのメモリアドレス空間は2^nである。論理アドレス30のページ番号X(上位n−mビット)が抽出され、インデックス(ページエントリ)として、ページテーブル31に供給される。ページテーブル31のX番目のエントリに格納されている値Z(pビット)が、ページテーブル31から読み出される。すなわち、ページテーブル31は、XからZへのページ変換を行う。一般にZのビット長pはXのビット長pよりも長い。Zは、上位ビットとして、論理アドレス30の下位mビットYと組み合わされ、メモリ(マシンメモリ)33に供給する物理アドレス32が生成される。この場合、メモリ33のZページのオフセットアドレスYがアクセスされる。
例示的な実施形態では、ハイパーバイザ110は、それ自身のメモリ領域に、各スイッチプロセスのページテーブルを保持するように構成されている。これによって、プロセスがページ変換(page translation)を改ざんすることが防止される。
スイッチプロセス及びOS/ハイパーバイザによって共有される共有メモリ領域に対して、OS/ハイパーバイザは、該共有メモリ領域への書き込み操作の実行が許可されるように、アクセス制御情報に基づいて、スイッチプロセスから該共有メモリ領域への読み取り/書き込みアクセスを制御するアクセスコントローラを備えてもよい。
この例では、各スイッチプロセス101のロールバックは、前述の例示的な実施形態と同様に、フローごと(Nフローごと)に、ハイパーバイザ110による制御によって実行される。
ロールバック制御とプロセスアイソレーションを組み合わせることで、ネットワークセキュリティの向上に貢献することが可能である。例えば、フローの処理において汚染又は破損したスイッチプロセスは、汚染又は破損がまだ行われていない時点のプロセスイメージにロールバックされ、該スイッチプロセスの汚染は、ロールバックが実行されるまで、隔離された環境に閉じ込められており、ネットワークの安全確保に貢献する。
図13は、本実施形態におけるコントローラ200を示す図である。図13を参照すると、ハイパーバイザ210は、隔離された環境205A−205Cを作成し、隔離された環境205A−205C内のコントローラプロセス201A−201Cをそれぞれ起動する。ハイパーバイザ210は、スイッチ100と同様に、隔離された環境205A−205Cで実行されるコントローラプロセス201A〜201Cを隔離する。
ディスパッチャ220は、ストレージ222に格納されたディスパッチルールに基づいて、スイッチ100(又はスイッチプロセス101)からのリクエスト(パケットインメッセージなど)を受信し、該メッセージを関連付けられたコントローラプロセス201にディスパッチする。
ストレージ222に格納されたディスパッチルールは、スイッチに接続されたポートIDとコントローラプロセスIDとの間の対応関係を含むようにしてもよい。スイッチに接続されたポートIDとコントローラプロセスIDとの間の対応関係は、コントローラプロセス及びスイッチの信頼レベルに基づいて決定するようにしてもよい。この場合、例えば、アントラステッド(untrusted:信頼できない)スイッチプロセスからのメッセージはアントラステッド(untrusted)コントローラプロセスにディスパッチされ、トラステッド(trusted:信頼できる)スイッチプロセスからのメッセージをトラステッド(trusted)コントローラプロセスにディスパッチされるようにしてもよい。
この例では、各コントローラプロセス201のロールバックは、前述の例示的な実施形態と同様に、ハイパーバイザ210の制御によって実行される。
隔離された環境内で実行されるコントローラプロセスのロールバックによって、汚染された又は破損されたコントローラプロセスは、汚染又は破損をまだ受けていないプロセスイメージにロールバックされる。コントローラプロセス201内の汚染は、ロールバックが実行されるまで隔離された環境に閉じ込められ、ネットワークセキュリティの向上に貢献する。
図15は、本実施形態に係るデータセンタの一例を示す図である。コントローラ200は、図5、図6又は図13を参照して説明したコントローラ200に対応する。スイッチ100−1及び100−2は、それぞれ図1又は図2を参照して説明したスイッチ100に対応する。図15を参照すると、テナントベースのセキュリティポリシーがデータセンターネットワークで採用されている。
テナントAホスト151−1AとテナントAホスト151−2Aとは、スイッチ100−1のテナントA用スイッチプロセス101−1Aと、スイッチ100−2のテナントA用スイッチプロセス101−2Aにそれぞれ接続される。スイッチ100−1のテナントA用スイッチプロセス101−1Aと、スイッチ100−2のテナントA用スイッチプロセス101−2Aは、テナントA用コントローラプロセス201−Aに接続される。
テナントBホスト151−1BとテナントBホスト151−2Bとは、スイッチ100−1のテナントB用スイッチプロセス101−1Bと、スイッチ100−2のテナントB用スイッチプロセス101−2Bにそれぞれ接続される。スイッチ100−1におけるテナントB用スイッチプロセス101−1Bと、スイッチ100−2におけるテナントB用スイッチプロセス101−2Bは、テナントB用コントローラプロセス201−Bに接続されている。このネットワーク構成では、テナントネットワークA(B)が汚染された場合、該汚染はテナントネットワークA(B)に限定される。
この例では、上記した例示的な実施形態と同様、ハイパーバイザ110(図1、図13参照、図15には図示せず)の制御により、スイッチプロセス101−1A、101−1B、101−2A、101−2Bのそれぞれがロールバックされる。コントローラプロセス201−A、201−Bのそれぞれのロールバックは、前述の例示的な実施形態と同様に、ハイパーバイザ210(図15には図示せず)の制御によって実行される。
隔離された環境で実行されるプロセスのロールバックでは、ロールバックが実行されるまで、プロセス内の汚染が隔離された環境に閉じ込められ、汚染されたプロセス又は破損したプロセスは、汚染や破損の影響を受けていない以前のクリーンなプロセスイメージにロールバックされ、これにより、ネットワークのセキュリティを確保している。
図16は、本実施形態の更なる変形例の構成を示す図である。図16を参照すると、ディスパッチャ420が、パケット処理ハードウェア410と管理プロセス401A−401Cとの間に配置される。
この実施形態では、パケット処理ハードウェア410によってパケット処理が行われ、管理プロセス401A−401Cは、OpenFlowチャネルを介して、図16に示されていないコントローラプロセスと通信する。管理プロセス401A−401Cのそれぞれは、パケット処理ハードウェア410へ/からのフローエントリを受信/削除する。その後、パケット処理ハードウェア410は、フローエントリに従ってそれぞれのパケットを処理する。
ディスパッチャ420は、それぞれのフローエントリの追加及び削除をモニタする。パケット処理ハードウェア410は、フローエントリと一致しないパケットを受信すると、ディスパッチャ420に不一致を通知する。そして、ディスパッチャ420は、対応するディスパッチルールに従って、管理プロセス401A―401Cのうちの対応する1つに通知を転送する。具体的には、通知は、IPアドレス、MAC(Media Access Control)アドレス、VLAN(Virtual Local Area Network)タグなどのパケット情報が含んでもよい。ディスパッチャ420は、パケット情報とディスパッチルールとを比較して、パケットのヘッダ情報とマッチするディスパッチルールを見つけ、ディスパッチ先の管理プロセスを決定する。
さらに、ディスパッチャ420は、1つ又は複数のフローエントリと、1つ又は複数のディスパッチルールとの間の競合(conflict)をチェックするように構成されてもよい。具体的には、管理プロセス(例えば、401A)が、1つ以上の他の管理プロセス(401B及び401C)の1つ又は複数のディスパッチルールと競合するフローエントリを追加しようとする場合、ディスパッチャ420は、フローエントリを拒否(deny)する。例えば、ディスパッチルールがVLAN ID123と管理プロセス402Bとを対応付けているものとする。管理プロセス402Aは、マッチフィールドがVLAN ID=123を指定したフローエントリを入力しようとすると、ディスパッチャ420は該フローエントリを拒否する。すなわち、ディスパッチャ420は、管理プロセス402Aがそのフローエントリをフローテーブルに追加することを許可しない。
図17に、例示的な実施形態におけるロールバック手順の変形を示す。この手順では、まず、ハイパーバイザ(110/210)が、ロールバックイメージを用いてプロセス(スイッチプロセス/コントローラプロセス/管理プロセス)を作成する(S21)。
プロセスの作成後、ディスパッチャ(120/220/420)は、旧(既存)プロセスの代わりに、新プロセス(スイッチプロセス/コントローラプロセス/管理プロセス)が要求(request)又はパケットを処理できるように、ディスパッチルールテーブル(121)内の1つ又は複数のディスパッチルールを変更する(S22)。具体的には、ディスパッチャ(120/220/420)は、フローがディスパッチされるプロセスへのフローの関連付けを定義するディスパッチルール内のプロセスフィールドを、旧プロセスから新プロセスに変更する。
最後に、ハイパーバイザ(110/210)は旧プロセスを終了する(S23)。
上記のロールバック手順は、ロールバックによるダウンタイムの低減に寄与することができる。その理由は、ディスパッチルールの変更(旧プロセスから新プロセスへの切り替え)は、ロールバックプロセスと比較して高速であるためである。
また、上述した実施形態では、仮想マシン上で動作するプロセスをハイパーバイザが制御する構成について説明したが、ハイパーバイザを持たないプロセッサ上で動作するプロセスや、サーバ仮想化を伴わないプロセスに対しても適用可能である。また、上述した実施形態では、仮想マシン上のプロセスが、ハイパーバイザの制御により、隔離された環境で実行される構成について説明したが、本実施形態の概念は、ハイパーバイザを使用しないメモリアイソレーションなど、プロセスに隔離環境を提供することが可能なプロセッサ上で動作するプロセスに対しても適用可能である。
上記実施形態では、OpenFlowスイッチ及びコントローラへの適用例を説明したが、本発明の適用はOpenFlowネットワークに限定されるものでないことは勿論である。
なお、上記非特許文献の開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素(各請求項の各要素、各実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ乃至選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
11 プロセス1
12 プロセス2
20 マシンメモリ
21 隔離された領域(Isoated Area)1
22 隔離された領域(Isoated Area)2
23 OS/ハイパーバイザ領域
30 論理アドレス
31 ページテーブル
32 物理アドレス
33 マシンメモリ
51−53 ノード
100、100A−100C スイッチ
100−1 スイッチ−1
100−2 スイッチ−2
101、101A−101C スイッチプロセス
102、102A−102C 隔離された環境(Isoated Environment)
101−1A、101−2A テナントA用スイッチプロセス
101−1B、101−2B テナントB用スイッチプロセス
103 フローテーブル
104 ストレージ(記憶装置)(フローエントリ)
106A テナントネットワークA
106B テナントネットワークB
110 ハイパーバイザ
111 プロセス起動(invocation)/再開(resume)部
112 プロセス終了(termination)/中断(suspend)部
113 状態/コード保存部
114 インテグリティ尺度(Integrity measure)計算部
115 インテグリティ尺度保存部
116 インテグリティ尺度検査部
117 状態/コード復元部
118 ストレージ(記憶装置)
120 ディスパッチャ
121 ディスパッチルールテーブル
122 ストレージ(記憶装置)
130 NICs(ネットワークインタフェースコントローラ:複数)
151−1A、151−2A テナントAホスト
151−1B、151−2B テナントBホスト
200 コントローラ
201、201A−201C コントローラプロセス
202、202A−202C コントローラコアプロセス
201−A テナントA用コントローラプロセス
201−B テナントB用コントローラプロセス
203、203A−203C サウスバウンドAPI
204、204A−204C ノースバウンドAPI
205A−205C 隔離された環境
210 ハイパーバイザ
220 ディスパッチャ(サウスバウンドAPIのディスパッチャ)
222 ストレージ(ディスパッチルール)
230 ディスパッチャ(ノースバウンドAPIのディスパッチャ)
240A−240C スイッチ
241A−241C リクエスト
250、250A−250C アプリケーション
251A−251C リクエスト
301 保存されたプロセスイメージ
302 状態
303 実行コード
304 実行中のプロセス
305 状態
306 実行コード
401、401A−401C 管理プロセス
410 パケット処理ハードウェア
420 ディスパッチャ

Claims (32)

  1. 各々がそれぞれに対応するフローに対して通信処理を行う複数の通信プロセスと、
    ネットワークに接続されるように構成された複数のネットワークインタフェースと、
    前記ネットワークインタフェースからパケットを受信し、フローと、前記フローがディスパッチされる通信プロセスとの関連付けを規定したディスパッチルールに基づいて、前記パケットを関連する通信プロセスにディスパッチするディスパッチャと、
    保存された各通信プロセスのイメージを用いて前記各通信プロセスをロールバックする制御を行う制御部と、
    を備え
    前記制御部は、
    設定に応じて、前記通信プロセスの状態、又は、実行コード、又は、状態及び実行コードを、前記通信プロセスのイメージとして、記憶装置に保存する保存部と、
    前記記憶装置に保存されている前記通信プロセスの状態、又は、実行コード、又は、状態及び実行コードを、実行中の前記通信プロセスの既存の状態、又は、実行コード、又は、既存の状態及び実行コードに上書きすることによってロールバックを実行する復元部と、
    を備えた、通信装置。
  2. 前記制御部は、ロールバック操作のために保存された前記通信プロセスのイメージであるロールバックイメージのインテグリティ尺度を前記記憶装置に保存し
    前記制御部は、前記通信プロセスのロールバックイメージのインテグリティ尺度を計算し、今回計算されたインテグリティ尺度が、前記保存されたロールバックイメージのインテグリティ尺度と同じであるかチェックする請求項1に記載の通信装置。
  3. 前記制御部は、定期的に、前記通信プロセスのロールバックイメージの更新を行うように構成されており、前記ロールバックをトリガする予め定められたイベントの発生に応じて、保存されている最新のロールバックイメージを用いて前記通信プロセスのロールバックを行う、請求項に記載の通信装置。
  4. 前記通信プロセスは、
    前記ディスパッチャによってディスパッチされたパケットを受信すると、前記パケットのヘッダフィールド情報をフローを取り扱うためのルールと照合し、照合結果に基づいて前記パケットを処理するスイッチプロセスを備え、前記ルールは、パケットのヘッダフィールド情報と照合されるマッチフィールドと、一致するパケットの取り扱いを規定するアクションフィールドと、を備え、
    前記制御部は、前記スイッチプロセスが1又はN個のフローを処理するたびに(Nは2以上の予め定められた整数)、又は、ロールバックをトリガするための所定のイベントの発生に応答して、ロールバックを実行するように制御する請求項1乃至のいずれか1項に記載の通信装置。
  5. 前記通信プロセスは、前記通信装置を制御するコントローラとの間で通信を行う管理プロセスを含み、
    前記通信装置は、さらに、
    前記ネットワークインタフェースと前記ディスパッチャとの間に配置され、フローを処理するためのルールに従ってパケット処理を行うパケット処理部を備え、
    前記ディスパッチャはフローを処理するための前記ルールをモニタする請求項1乃至のいずれか1項に記載の通信装置。
  6. 前記通信プロセスは、
    スイッチからのメッセージを受信すると、フローのパス上の各スイッチに適用されるフローを処理するためのルールを生成し、前記生成したルールを経路上の各スイッチに送信するコントローラプロセスを含み、
    前記ルールは、前記スイッチが受信したパケットと照合されるマッチフィールドと、前記マッチフィールドと一致するパケットの前記スイッチによる取り扱いを規定するアクションフィールドと、を含み、
    前記制御部は、
    前記コントローラプロセスが、
    前記スイッチからの要求を処理した後、
    1つの操作を処理した後、
    定期的に、又は、
    ロールバックをトリガするための予め定められたイベントの発生に応答して、
    前記コントローラプロセスのロールバックを制御する請求項1乃至のいずれか1項に記載の通信装置。
  7. 前記コントローラプロセスは、
    コントローラコアプロセスと、
    前記ディスパッチャの側に位置するアプリケーションインタフェースを備え、
    前記コントローラプロセスのロールバックにおいて、
    前記コントローラコアプロセス及び前記アプリケーションインタフェースの少なくとも一方がロールバックされるか、
    前記コントローラコアプロセス及び前記アプリケーションインタフェースが別々にロールバックされる、請求項に記載の通信装置。
  8. 前記通信プロセスは、前記通信プロセスに割り当てられた環境において実行されるように構成され、
    前記各通信プロセスのために配置された環境は、1つ又は複数の環境のそれぞれから隔離されている、請求項1乃至のいずれか1項に記載の通信装置。
  9. 前記制御部において
    前記保存部は、前記通信プロセスのイメージとそのインテグリティ尺度を前記記憶装置に保存し、
    現在算出されている通信プロセスのインテグリティ尺度が、以前に計算され保存されたインテグリティ尺度と同じであるかどうかを検査する検証器を備え、
    前記通信プロセスの現在計算されたインテグリティ尺度が、以前に計算されて保存された通信プロセスのインテグリティ尺度と同じでない場合に、
    前記復元部は、保存されている前記通信プロセスのイメージを復元することによって前記通信プロセスをロールバックする請求項1乃至8のいずれか1項に記載の通信装置。
  10. 各々がそれぞれに対応するフローに対してスイッチ処理を行う複数のスイッチプロセスと、
    ネットワークに接続されるように構成された複数のネットワークインタフェースと、
    前記ネットワークインタフェースからパケットを受信し、フローと、前記フローがディスパッチされるスイッチプロセスとの関連付けを規定したディスパッチルールに基づいて、前記パケットを関連するスイッチプロセスにディスパッチするディスパッチャと、
    保存された前記スイッチプロセスのイメージを用いて各スイッチプロセスをロールバックする制御を行う制御部と、
    を備え、
    前記制御部は、
    設定に応じて、前記スイッチプロセスの状態、又は、実行コード、又は、状態及び実行コードを、前記スイッチプロセスのイメージとして、記憶装置に保存する保存部と、
    前記記憶装置に保存されている前記スイッチプロセスの状態、又は、実行コード、又は、状態及び実行コードを、実行中の前記スイッチプロセスの既存の状態、又は、実行コード、又は、既存の状態及び実行コードに上書きすることによって前記スイッチプロセスのロールバックを実行する復元部と、
    を備えたスイッチ装置。
  11. 各々が1つ又は複数のスイッチの制御を行う複数のコントローラプロセスと、
    スイッチと、前記スイッチからのメッセージがディスパッチされるコントローラプロセスとの関連付けを規定したディスパッチルールに基づいて、前記スイッチからのメッセージを関連するコントローラプロセスにディスパッチするディスパッチャと、
    保存された各コントローラプロセスのイメージを用いて前記各コントローラプロセスをロールバックする制御を行う制御部と、
    を備え
    前記制御部は、
    設定に応じて、前記コントローラプロセスの状態、又は、実行コード、又は、状態及び実行コードを、前記コントローラプロセスのイメージとして、記憶装置に保存する保存部と、
    前記記憶装置に保存されている前記コントローラプロセスの状態、又は、実行コード、又は、状態及び実行コードを、実行中の前記コントローラプロセスの既存の状態、又は、実行コード、又は、既存の状態及び実行コードに上書きすることによって前記コントローラプロセスのロールバックを実行する復元部と、
    を備えたコントローラ装置。
  12. スイッチと、
    前記スイッチを制御するコントローラと、
    を備え、
    前記スイッチは、
    各々がそれぞれに対応するフローに対してスイッチ処理を行う複数のスイッチプロセスと、
    ネットワークに接続されるように構成された複数のネットワークインタフェースと、
    前記ネットワークインタフェースからパケットを受信し、フローと、前記フローがディスパッチされるスイッチプロセスとの関連付けを規定したディスパッチルールに基づいて、前記パケットを関連するスイッチプロセスにディスパッチするディスパッチャと、
    保存された各スイッチプロセスのイメージを用いて各スイッチプロセスをロールバックする制御を行う制御部と、
    を備え
    前記制御部は、
    設定に応じて、前記スイッチプロセスの状態、又は、実行コード、又は、状態及び実行コードを、前記スイッチプロセスのイメージとして、記憶装置に保存する保存部と、
    前記記憶装置に保存されている前記スイッチプロセスの状態、又は、実行コード、又は、状態及び実行コードを、実行中の前記スイッチプロセスの既存の状態、又は、実行コード、又は、既存の状態及び実行コードに上書きすることによって前記スイッチプロセスのロールバックを実行する復元部と、
    を備えた通信システム。
  13. 前記制御部は、前記スイッチプロセスが1又はN個のフローを処理するたびに(Nは2以上の予め定められた整数)、又は、前記スイッチプロセスのロールバックをトリガするための所定のイベントの発生に応答して、前記スイッチプロセスのロールバックを実行するように制御する請求項1に記載の通信システム。
  14. 前記制御部において
    前記保存部は、前記スイッチプロセスのイメージとそのインテグリティ尺度を前記記憶装置に保存し、
    現在算出されているスイッチプロセスのインテグリティ尺度が、以前に計算され保存されたインテグリティ尺度と同じであるかどうかを検査する検証器を備え、
    前記復元部は、前記スイッチプロセスの現在計算されたインテグリティ尺度が、以前に計算されて保存されたスイッチプロセスのインテグリティ尺度と同じでない場合に、保存されている前記スイッチプロセスのイメージを復元することによって前記スイッチプロセスをロールバックする請求項1又は1に記載の通信システム。
  15. 前記スイッチは、前記スイッチプロセスを制御するハイパーバイザを備え、
    前記ハイパーバイザは前記制御部を含む請求項1乃至1のいずれか1項に記載の通信システム。
  16. 前記スイッチに含まれる前記制御部は、ロールバック操作のために保存された前記スイッチプロセスのイメージであるロールバックイメージのインテグリティ尺度を前記記憶装置に保存し
    前記制御部は、前記スイッチプロセスのロールバックイメージのインテグリティ尺度を計算し、今回計算されたインテグリティ尺度が、前記保存されたロールバックイメージのインテグリティ尺度と同じであるかチェックする請求項1乃至1のいずれか1項に記載の通信システム。
  17. 前記制御部は、定期的に、前記スイッチプロセスのロールバックイメージの更新を行うように構成されており、前記ロールバックをトリガする予め定められたイベントの発生に応じて、保存されている最新のロールバックイメージを用いて前記スイッチプロセスのロールバックを行う請求項16に記載の通信システム。
  18. 前記ネットワークインタフェースから受信したパケットのヘッダフィールド情報が示すフローのディスパッチルールが存在しない場合には、該フローのディスパッチルールの問い合わせをコントローラに対して行い、
    前記コントローラから送信されたフローに対するディスパッチルールを受信すると、前記ディスパッチルールに基づき、前記フローに関連するスイッチプロセスを呼び出し、前記スイッチプロセスから前記コントローラに応答を送信し、
    前記応答を受けた前記コントローラは、前記スイッチプロセスに対してフローに関する処理を規定したルールを作成して送信し、
    前記スイッチプロセスは、前記コントローラから前記ルールを受信すると、前記ルールに基づいて前記フローに関連する1つ又は複数のパケットを処理する請求項1乃至17のいずれか1項に記載の通信システム。
  19. 前記スイッチプロセスは、前記スイッチを制御する前記コントローラとの間で通信を行う管理プロセスを含み、
    前記スイッチは、さらに、
    前記ネットワークインタフェースと前記ディスパッチャとの間に配置され、フローを処理するためのルールに従ってパケット処理を行うパケット処理部を備え、
    前記ディスパッチャはフローを処理するための前記ルールをモニタする請求項1乃至18のいずれか1項に記載の通信システム。
  20. 前記制御部は、1つ以上の関連するスイッチプロセスの制御を行う複数のコントローラプロセスと、
    前記スイッチプロセスからのメッセージがディスパッチされるコントローラプロセスとスイッチプロセスとの関連付けを定義する第1のディスパッチルールに基づいて、前記スイッチプロセスからのメッセージを関連するコントローラプロセスにディスパッチする第1のディスパッチャと、
    保存されたコントローラプロセスのイメージを用いて前記コントローラプロセスのロールバックを制御する制御部と、を備えた請求項1に記載の通信システム。
  21. 前記制御部は、
    前記コントローラプロセスがスイッチからの要求を処理した後、
    1つの操作を処理した後、
    定期的に、又は、
    ロールバックをトリガするための予め定められたイベントの発生に応答して、
    前記コントローラプロセスのロールバックを実行するように制御する請求項2に記載の通信システム。
  22. 前記コントローラは、
    アプリケーションからのメッセージがディスパッチされるコントローラプロセスとアプリケーションとの関連付けを定義する第2のディスパッチルールに基づいて、アプリケーション又はより上位の層からのメッセージを、コントローラプロセスへディスパッチする第2のディスパッチャを備え、
    前記コントローラプロセスは、
    コアプロセスと、
    前記第1のディスパッチャとインタフェースし、前記第1のディスパッチャからの要求を受信し前記コアプロセスへ供給する第1のインタフェースと、
    前記第2のディスパッチャをインタフェースし、前記第2のディスパッチャからの要求を受け、前記コアプロセスへ供給する第2のインタフェースと、
    を備え、
    前記制御部は、前記第1及び第2インタフェース、又はコアプロセスの少なくとも一つをロールバックするか、あるいは、
    前記制御部は、前記第1及び第2インタフェース、又はコアプロセスを別々にロールバックする請求項2又は2に記載の通信システム。
  23. 前記コントローラに含まれる前記制御部において、
    前記保存部は、前記コントローラプロセスのイメージとそのインテグリティ尺度を保存
    前記コントローラプロセスの今回計算されたインテグリティ尺度が、以前に計算されて保存されたコントローラプロセスのインテグリティ尺度と同じであるかどうかをチェックする検証器を備え、
    前記コントローラプロセスの現在計算されたインテグリティ尺度が、以前に計算されて保存された前記コントローラプロセスのインテグリティ尺度と同じでないことが検出された場合、前記復元部は、保存されている前記コントローラプロセスのイメージを復元することによって前記コントローラプロセスをロールバックする請求項2乃至2のいずれか1項に記載の通信システム。
  24. 前記コントローラに含まれる前記制御部は、ロールバック操作のために保存された前記コントローラプロセスのイメージであるロールバックイメージのインテグリティ尺度を前記記憶装置に保存し前記制御部は、前記コントローラプロセスのロールバックイメージのインテグリティ尺度を計算し、今回計算されたインテグリティ尺度が、前記保存されたロールバックイメージのインテグリティ尺度と同じであるかチェックする請求項2乃至2のいずれか1項に記載の通信システム。
  25. 前記コントローラに含まれる前記制御部は、定期的に、前記コントローラプロセスのロールバックイメージの更新を実行するように構成され、
    前記制御部は、ロールバックをトリガするための予め定められたイベントの発生に応答して、保存されたコントローラプロセスの最新のロールバックイメージでロールバックを行う請求項2に記載の通信システム。
  26. 前記スイッチに含まれる前記スイッチプロセスと、前記コントローラに含まれる前記コントローラプロセスとの少なくとも一方は、割り当てられた環境において実行されるように構成され、
    前記各プロセスの環境は、1つ又は複数のプロセスの他のプロセスの1つ又は複数の環境のそれぞれから隔離されている請求項2乃至25のいずれか1項に記載の通信システム。
  27. フローと、前記フローがディスパッチされるスイッチプロセスとの関連付けを規定したディスパッチルールに基づいて、受信パケットを、関連するスイッチプロセスにディスパッチし、
    前記関連するスイッチプロセスは前記フローに対応するスイッチプロセスを実行し、
    保存された前記スイッチプロセスのイメージを用いて前記スイッチプロセスをロールバックする制御を行い、その際、
    設定に応じて、前記スイッチプロセスの状態、又は、実行コード、又は、状態及び実行コードを、前記スイッチプロセスのイメージとして、記憶装置に保存し、
    前記記憶装置に保存されている前記スイッチプロセスの状態、又は、実行コード、又は、状態及び実行コードを、実行中の前記スイッチプロセスの既存の状態、又は、実行コード、又は、既存の状態及び実行コードに上書きすることによって前記スイッチプロセスのロールバックを実行する、通信方法。
  28. 前記スイッチプロセスが1又はN個のフロー(Nは2以上の所定の整数)を処理するたびに、又はロールバックをトリガする予め定められたイベントの発生に応答して、前記スイッチプロセスのロールバックを実行するように制御することを特徴とする請求項27に記載の通信方法。
  29. コントローラに含まれる複数のコントローラプロセスのそれぞれが、1つ又は複数の関連するスイッチプロセスの制御を実行し、
    前記スイッチプロセスからのメッセージが送信されるコントローラプロセスと前記スイッチプロセスとの関連付けを定義する第1のディスパッチルールに基づいて、前記スイッチプロセスからのメッセージを関連するコントローラプロセスにディスパッチし、
    保存された前記コントローラプロセスのイメージを用いて前記コントローラプロセスのロールバックの実行を制御その際、
    設定に応じて、前記スイッチプロセスの状態、又は、実行コード、又は、状態及び実行コードを、前記コントローラプロセスのイメージとして、記憶装置に保存し、
    前記記憶装置に保存されている前記コントローラプロセスの状態、又は、実行コード、又は、状態及び実行コードを、実行中の前記コントローラプロセスの既存の状態、又は、実行コード、又は、既存の状態及び実行コードに上書きすることによって前記コントローラプロセスのロールバックを実行する請求項27又は28に記載の通信方法。
  30. 前記コントローラプロセスが、
    スイッチからの要求を処理した後、
    1つの操作を処理した後、
    定期的に、又は、
    ロールバックをトリガする予め定められたイベントの発生に応答して、
    前記コントローラプロセスのロールバックを実行するように制御する請求項29に記載の通信方法。
  31. 各々がそれぞれに対応するフローに対して通信処理を行う複数の通信プロセスと、
    ネットワークインタフェースからパケットを受信し、前記フローがディスパッチされる通信プロセスと、フローとの関連付けを定義するディスパッチルールに基づいて、前記パケットを関連する通信プロセスにディスパッチするディスパッチ処理と、
    通信プロセスの保存されたイメージを用いて前記各通信プロセスをロールバックするロールバック処理として、
    前記通信プロセスの状態、又は、実行コード、又は、状態及び実行コードを、前記通信プロセスのイメージとして、記憶装置に保存する処理と、
    前記記憶装置に保存されている前記通信プロセスの状態、又は、実行コード、又は、状態及び実行コードを、実行中の前記通信プロセスの既存の状態、又は、実行コード、又は、既存の状態及び実行コードに上書きすることによってロールバックを実行する処理と、
    をコンピュータに処理を実行させるプログラム。
  32. 前記ロールバック処理は、
    定期的に、又は、
    前記通信プロセスが1又はN個(Nは2以上の所定の整数である)のフローを処理するたびに、前記通信プロセスをロールバックする請求項3に記載のプログラム。
JP2017559143A 2015-05-11 2015-05-11 通信装置、システム、方法、及びプログラム Active JP6489239B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/002389 WO2016181424A1 (en) 2015-05-11 2015-05-11 Communication apparaus, system, method, and program

Publications (2)

Publication Number Publication Date
JP2018516001A JP2018516001A (ja) 2018-06-14
JP6489239B2 true JP6489239B2 (ja) 2019-03-27

Family

ID=53276220

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017559143A Active JP6489239B2 (ja) 2015-05-11 2015-05-11 通信装置、システム、方法、及びプログラム

Country Status (3)

Country Link
US (1) US10649847B2 (ja)
JP (1) JP6489239B2 (ja)
WO (1) WO2016181424A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11431569B2 (en) * 2016-07-21 2022-08-30 Nec Corporation Communication apparatus, system, rollback method, and non-transitory medium
CN107547258B (zh) * 2017-07-18 2021-02-05 新华三云计算技术有限公司 一种网络策略的实现方法和装置
JP6948303B2 (ja) * 2018-11-07 2021-10-13 株式会社日立製作所 ストレージシステム
CN113067741B (zh) * 2020-01-02 2022-11-29 中国移动通信有限公司研究院 一种信息处理方法、装置、终端及存储介质
US11334670B2 (en) 2020-01-28 2022-05-17 Hewlett Packard Enterprise Development Lp Integrity verification for a software stack or part of a software stack

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185678B1 (en) * 1997-10-02 2001-02-06 Trustees Of The University Of Pennsylvania Secure and reliable bootstrap architecture
US7430164B2 (en) * 1998-05-04 2008-09-30 Hewlett-Packard Development Company, L.P. Path recovery on failure in load balancing switch protocols
AU4848799A (en) * 1998-07-08 2000-02-01 Broadcom Corporation High performance self balancing low cost network switching architecture based ondistributed hierarchical shared memory
US7366171B2 (en) * 1999-03-17 2008-04-29 Broadcom Corporation Network switch
US6909713B2 (en) * 2001-09-05 2005-06-21 Intel Corporation Hash-based data frame distribution for web switches
US7738457B2 (en) * 2006-12-20 2010-06-15 Oracle America, Inc. Method and system for virtual routing using containers
WO2012105677A1 (ja) 2011-02-04 2012-08-09 日本電気株式会社 パケット処理装置、パケット処理方法およびプログラム
US9098331B2 (en) * 2011-06-29 2015-08-04 Telefonaktiebolaget L M Ericsson (Publ) Joint scheduling of multiple processes on a shared processor
US8516241B2 (en) * 2011-07-12 2013-08-20 Cisco Technology, Inc. Zone-based firewall policy model for a virtualized data center
US9094449B2 (en) * 2011-09-14 2015-07-28 Architecture Technology Corporation Fight-through nodes for survivable computer network
JP5950021B2 (ja) 2013-03-12 2016-07-13 日本電気株式会社 制御装置、通信システム、同期方法及びプログラム
JP6435695B2 (ja) * 2014-08-04 2018-12-12 富士通株式会社 コントローラ,及びその攻撃者検知方法
US20180152475A1 (en) * 2016-11-30 2018-05-31 Foundation Of Soongsil University-Industry Cooperation Ddos attack detection system based on svm-som combination and method thereof

Also Published As

Publication number Publication date
JP2018516001A (ja) 2018-06-14
US10649847B2 (en) 2020-05-12
US20180165156A1 (en) 2018-06-14
WO2016181424A1 (en) 2016-11-17

Similar Documents

Publication Publication Date Title
US11824962B2 (en) Methods and apparatus for sharing and arbitration of host stack information with user space communication stacks
JP6489239B2 (ja) 通信装置、システム、方法、及びプログラム
US8613085B2 (en) Method and system for traffic management via virtual machine migration
EP2907291B1 (en) Virtual firewall mobility
JP5781616B2 (ja) 脆弱性対策装置、および脆弱性対策方法
US20120317566A1 (en) Virtual machine packet processing
US20140289399A1 (en) Apparatus and method of detecting migration completion of virtual machine
US9654513B1 (en) Automated network security policy deployment in a dynamic environment
US11240204B2 (en) Score-based dynamic firewall rule enforcement
US20150207664A1 (en) Network control software notification with denial of service protection
US11252018B2 (en) Service chaining with service path monitoring
US11539722B2 (en) Security threat detection based on process information
US20150207666A1 (en) Network control software notification and invalidation of static entries
US11349702B2 (en) Communication apparatus, system, rollback method, and non-transitory medium
JP6604336B2 (ja) 情報処理装置、情報処理方法、及び、プログラム
US10528375B2 (en) Maintaining security system information in virtualized computing environments
JP5736346B2 (ja) 仮想化装置、仮想化制御方法、仮想化装置制御プログラム
US20220210167A1 (en) Context-aware intrusion detection system
JP6569741B2 (ja) 通信装置、システム、方法、及びプログラム
JP6787475B2 (ja) 通信装置、システム、ロールバック方法及びプログラム
US11848948B2 (en) Correlation-based security threat analysis
US20220210127A1 (en) Attribute-based firewall rule enforcement
US20220417260A1 (en) Detecting and blocking a malicious file early in transit on a network
CN113472836A (zh) 通信处理装置、存储介质和通信处理方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180731

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180928

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: 20190129

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190211

R150 Certificate of patent or registration of utility model

Ref document number: 6489239

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150