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

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

Info

Publication number
JP2018516000A
JP2018516000A JP2017559142A JP2017559142A JP2018516000A JP 2018516000 A JP2018516000 A JP 2018516000A JP 2017559142 A JP2017559142 A JP 2017559142A JP 2017559142 A JP2017559142 A JP 2017559142A JP 2018516000 A JP2018516000 A JP 2018516000A
Authority
JP
Japan
Prior art keywords
switch
controller
flow
rule
packet
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.)
Granted
Application number
JP2017559142A
Other languages
English (en)
Other versions
JP6569741B2 (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 JP2018516000A publication Critical patent/JP2018516000A/ja
Application granted granted Critical
Publication of JP6569741B2 publication Critical patent/JP6569741B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/31User authentication
    • G06F21/42User authentication using separate channels for security data
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/64Routing or path finding of packets in data switching networks using an overlay routing layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】本発明は安全なネットワーキングを提供する。【解決手段】通信装置はそれぞれに対応するフローに対して通信処理を実行する複数の通信プロセスを備え、各通信プロセスは、前記通信プロセスごとに配置された環境で実行され、前記環境は、残りの1つ又は複数の通信プロセスに対して配置された1つ又は複数の環境の各々から隔離されており、ネットワークに接続されるネットワークインタフェースと、フローと通信プロセスとの関連を定義するディスパッチルールに基づいてパケットを通信プロセスにディスパッチするディスパッチャを備える。【選択図】図1

Description

本発明は、通信装置、システム、方法、及びコンピュータプログラムに関する。
ソフトウェアに基づいてネットワークの構成、機能、又は性能を動的に設定又は変更することができるSDN(Software Designed Networks)の一例であるOpenFlowの概要を以下に説明する。OpenFlowスイッチは1つ又は複数のフローエントリを含むフローテーブルを含む。各フローエントリは、受信パケットのヘッダフィールド情報と照合されるマッチフィールドと、受信パケット数及び受信バイト数などの統計情報を含むカウンタフィールドと、ヘッダフィールド情報がマッチフィールドと一致する受信パケットをスイッチがどのように取り扱うかを指示するアクションを0又はそれ以上含むアクションフィールドと、を含む。OpenFlowスイッチは、パケットを受信すると、そのパケットのヘッダフィールド情報を用いてフローテーブルを検索する。ミスヒット(不一致)の場合、OpenFlowスイッチは、セキュアチャネルを介して該受信パケットをOpenFlowコントローラに転送する。
OpenFlowコントローラは、ヘッダで指定されたパケットの送信元(source)と宛先(destination)に関する情報に基づいて、ネットワークトポロジ情報からパケットのパス(path:経路)を計算する。OpenFlowコントローラはパス上の各OpenFlowスイッチのフローエントリを生成し、各フローエントリを該パス上の各OpenFlowスイッチに設定する。該パス上の各OpenFlowスイッチは、OpenFlowコントローラによって設定されたフローエントリのマッチフィールドと一致するヘッダを有する後続パケットを受信すると、該パス上の各OpenFlowスイッチは、該フローエントリのアクションフィールドに規定されるように、パケットを次のノードに転送する。なお、OpenFlowの詳細については、下記のNPL(非特許文献6)を参照することができる。
特にSDNにおいては攻撃に対するネットワークの脆弱性を低減するために、安全なネットワーキングに関する広範な研究開発が行われている。
非特許文献1には、マイクロNOS(Network Operating System)内で独立してアプリケーションを生成するという概念に基づいて、ネットワークアプリケーションの閉じ込め(containment)及び復元力(resilience)戦略を実装するROSEMARYコントローラが提案されている。
非特許文献2では、OpenFlowアプリケーションの潜在的な信頼問題に対処するためのPermOFが提案されている。信頼性の乱用はネットワーク全体に影響を与えるさまざまな種類の攻撃につながる可能性がある。PermOFでは、コントローラとアプリケーションの間で制御フローとデータの分離が確立される。OpenFlowアプリケーションはコントローラカーネルから分離されている。つまり、OpenFlowアプリケーションはカーネルプロシージャを呼び出すことも、カーネルメモリを直接参照することもできない。OpenFlowアプリケーションとOS(Operating System)の間にアクセス制御レイヤが設けられている。このレイヤはコントローラカーネルによって制御されるため、OpenFlowアプリケーションとOSとの間の望ましくないインタラクションが遮断される。
非特許文献3では、データプレーン層からより多くの関与を受けてOpenFlowネットワークのセキュリティと復元力を向上させる新しいフレームワークであるAVANT−GUARDが提案されている。接続の移行により、データプレーンは制御プレーンを飽和攻撃から保護することができる。ネットワークが攻撃を受けているときに、トリガを作動させると、自動的にフロールールが挿入される。
非特許文献4には、セキュリティ・センシティブなコードモジュールに対して、該コードモジュールを呼び出すOS又はアプリケーションを信頼することなく、安全な実行環境を提供するためのTrustVisorと呼ばれる安全なハイパーバイザが開示されている。TrustVisorは、信頼できないコモディティ・プラットフォームであっても、安全性に敏感(security-sensitive:セキュリティ・センシティブ)なコードとデータをマルウェアから保護するように設計されている。
Seungwon Shin st 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 Jonathan M. McCune et al., "TrustVisor: Efficient TCB Reduction and Attestation", March 9, 2009, (revised March 10, 2010) CMU-CyLab-09-003, CyLab Carnegie Mellon University Pittsburgh, PA 15213 Jan Medved, Reinaldo Penno, OpenDaylight Update, November 2013, Internet <URL:http://www.ietf.org/proceedings/88/slides/slides-88-netconf-6.pdf> "Openflow Switch Specification" Version 1.0.0. (Wire Protocol 0x01), Internet <URL:http://www.openflowswitch.org/documents/openflow-spec-v1.0.0.pdf>
上述した非特許文献1−6の開示内容は、本明細書の一部を構成するものとする。
以下の分析は、本発明者らによってなされたものである。
非特許文献1、2はノースバウンド(northbound)APIのアクセス制御を行う。非特許文献3は、メッセージをフィルタリングすることによって制御プレーンに対するDoS(Denial of Service)攻撃を防止する。
しかしながら、これらのセキュリティ機構では、例えば、損害(damage)を1つのネットワークコンポーネント又はエレメントに閉じ込める(confine)ことができないかもしれない。この場合、汚染されたコンポーネントがネットワーク全体に損害を与え、ネットワークのセキュリティが低下する可能性がある。セキュリティ機構が損害を1つのネットワークに閉じ込めることができず、他のネットワークに損害及ばないようにすることができない場合も同じことが言えるであろう。
上記を考慮して、本発明の目的は、安全なネットワーキング環境を保証する装置、方法、プログラム及びシステムを提供することにある。
本開示の一つの態様によれば、各々がそれぞれに対応するフローに対して通信処理を実行する複数の通信プロセスを備え、前記複数の通信プロセスの各々は、前記通信プロセスごとに割り当てられた環境で実行され、前記環境は、残りの1つ又は複数の通信プロセスに対して配置された1つ又は複数の環境の各々から隔離されており、さらに、ネットワークに接続されるように構成された複数のネットワークインタフェースと、前記ネットワークインタフェースからパケットを受信し、フローと、前記フローがディスパッチされる通信プロセスとの関連付けを定義するディスパッチルールに基づいて、前記パケットを関連する通信プロセスにディスパッチするディスパッチャと、を備えた通信装置が提供される。
本開示の別の態様によれば、スイッチと、前記スイッチを制御するコントローラと、
を備え、前記スイッチは、各々がそれぞれに対応するフローに対してスイッチ処理を実行する複数のスイッチプロセスを備え、前記複数のスイッチプロセスの各々は、前記スイッチプロセスごとに割り当てられた環境で実行され、前記環境は、残りの1つ又は複数のスイッチプロセスに対して配置された1つ又は複数の環境の各々から隔離されており、さらに、ネットワークに接続されるように構成された複数のネットワークインタフェースと、前記ネットワークインタフェースからパケットを受信し、フローとディスパッチされるスイッチプロセスとの関連付けを定義するディスパッチルールに基づいて、関連するスイッチプロセスに前記パケットをディスパッチするディスパッチャと、を備えた通信システムが提供される。
本開示のさらなる態様によれば、フローと、前記フローがディスパッチされるスイッチプロセスとの関連付けを定義するディスパッチルールに基づいて、スイッチで受信したパケットを、前記スイッチに含まれる関連するスイッチプロセスにディスパッチし、
前記スイッチに含まれる複数のスイッチプロセスのうち前記関連するスイッチプロセスは対応するフローに対してスイッチ処理を行い、
各スイッチプロセスは、前記スイッチプロセスごとに割り当てられた環境で実行され、
各スイッチプロセスに配置される前記環境は、残りの1つ又は複数のスイッチプロセスに対して配置される1つ又は複数の環境の各々から隔離されている、通信方法が提供される。
本開示のさらに別の態様によれば、各々が、それぞれに対応するフローに対して通信処理を実行する複数の通信プロセスと、前記複数の通信プロセスの各々は、前記通信プロセスごとに割り当てられた環境で実行され、前記環境は、残りの1つ又は複数の通信プロセスに対して配置された1つ又は複数の環境の各々から隔離されており、さらに、
前記ネットワークインタフェースからパケットを受信し、フローとディスパッチされる通信プロセスとの関連付けを定義するディスパッチルールに基づいて、関連する通信プロセスに前記パケットをディスパッチするディスパッチプロセスと、をコンピュータに実行させるプログラムが提供される。さらに、上記プログラムを格納した半導体記憶装置、CD(Compact Disk)、DVD(Digital Versatile Disk)などの非一時的なコンピュータ読み取り可能な記録媒体(a non-transitory computer readable recording medium)が提供される。
本発明によれば、安全なネットワーキングを保証するために、ネットワーキングプロセスが互いに分離される。
本発明のさらに他の特徴及び利点は、本発明を実施することが企図されている形態を図示及び説明した添付の図面と併せて以下の詳細な説明から当業者には容易に明らかになるであろう。理解されるように、本発明は、他の異なる実施形態が可能であり、そのいくつかの詳細は、本発明から逸脱することなく、様々な明白な点において変更可能である。したがって、図面及び説明は、本質的に例示的であるとみなされるべきであり、限定的ではないとみなされるべきである。
本発明の例示的な実施形態におけるスイッチの構成を例示する図である。 本発明の例示的な実施形態におけるスイッチの一例を例示する図である。 本発明の例示的な実施形態におけるシーケンスの一例を例示する図である。 本発明の例示的な実施形態におけるスイッチの変形例を例示する図である。 本発明の例示的な実施形態におけるスイッチの一例を説明する図である。 本発明の例示的な実施形態におけるコントローラを例示する図である。 本発明の例示的な実施形態におけるコントローラの変形例を例示する図である。 本発明の例示的な実施形態におけるコントローラの変形例を例示する図である。 本発明の例示的な実施形態におけるコントローラの他の変形例を例示する図である。 本発明の例示的な実施形態におけるスイッチの他の変形例を例示する図である。 本発明の例示的な実施形態におけるアクセス制御情報の一例を示す図である。 OpenDayLightにおけるModel−Driven SALに適用される例示的な実施形態のアクセス制御の一例を例示する図である。 本発明の例示的な実施形態におけるメモリアイソレーションを例示する図である。 ページングを例示する図である。 本発明の例示的な実施形態におけるテナントベースのネットワークアイソレーションを例示する図である。 本発明の他の例示的な実施形態におけるスイッチを例示する図である。
以下、本発明の例示的な実施形態について説明する。図1は、例示的な実施形態におけるスイッチを示す。スイッチ100は、プロセス・アイソレーション・システム(Process Isolation System)を実現するように構成され、プロセスは、隔離された環境(isolated environment)で実行される。図1を参照すると、スイッチ100は、隔離された環境101で実行されるスイッチプロセス102、ハイパーバイザ110、ディスパッチャ120、及び複数のネットワークインタフェースコントローラ(又はネットワークインタフェースカード)(NICs)130を含む。
NICs130と複数のスイッチプロセス102との間に配置されたディスパッチャ120は、フロー(NICs130から受信したパケット)を関連するスイッチプロセス102にディスパッチする。また、ディスパッチャ120は、スイッチプロセス102から受信したパケットを対応するNIC130に送出し、パケットをネットワークに出力する。ディスパッチャ120は、複数の入力ポート(図示せず)及び複数の出力ポート(図示せず)を含み、フローと、該フローに関連するスイッチプロセスとの間の対応関係を示すディスパッチルールに基づき、入力ポートで受信されたパケットをターゲットの出力ポートに転送する。ディスパッチャ120は、コントローラを有するハードウェアスイッチによって構成してもよいし、ソフトウェアによって実現される仮想スイッチで構成してもよい。フローは、パケットの所定のヘッダフィールド、例えば、ソース(source:送信元)インタフェース、プロトコル、ソース(送信元)IPアドレス、ソース(送信元)ポート、宛先(destination)IPアドレス、及び宛先ポートのうちの1つ又は組合せによって定義されてもよい。
ハイパーバイザ110は、隔離された環境101とスイッチプロセス102を生成する。図1では、3つの隔離された環境101と3つのスイッチプロセス102が例示されているが、隔離された環境101と3つのスイッチプロセス102は3に限定されず、1以上の任意の整数であってもよい。
ハイパーバイザ110は、コンピュータソフトウェア、ファームウェア又はハードウェアを含み、ハードウェアリソースを制御するように構成されてもよい。特に制限されないが、サーバ仮想化技術に適用する場合、ハイパーバイザ110は、仮想化されたハードウェア資源、ゲストOS及びアプリケーションを含む仮想マシン(VM)を制御するようにしてもよい。仮想化されたハードウェア資源は、例えば、仮想化されたCPU(Central Processing Unit)、仮想化されたストレージ、仮想化されたネットワークなどを含む。
アイソレーション技術(Isolation technology)では、プロセスが隔離された環境で実行される。アイソレーション技術は、マルウェア105がシステム全体に影響を与えることなく動作するように封じ込め環境(containment environment)を提供する。マルウェアによって行われたいかなる損害も、例えば隔離された環境101Cに封じ込まれる。つまり、スイッチ102Cがマルウェア105によって汚染されたとしても、マルウェア105は隔離された環境101に限定され、他のフローに影響を与えることはできない。
本実施形態では、ハイパーバイザ110は、特に制限されるものではないが、メモリアイソレーションを提供する。隔離された環境101A内のスイッチプロセス102Aに割り当てられたメモリ領域(隔離された領域)は、他の隔離された環境101B、101C内の他のスイッチプロセス102B、102Cに割り当てられた他のメモリ領域(隔離された領域)から隔離されるとともに、スイッチプロセス及びOSによって共有される共有領域を除いて、OS/ハイパーバイザ又はデバイスドライバ(図示せず)に割り当てられた他のメモリ領域(隔離された領域)から隔離されている。
図11Aは、ハイパーバイザ又はハードウェアベースのメモリ保護(memory protection)の例を図解する。図11Aに示すように、プロセス1、2に割当てられた隔離された領域1(isolated area1、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は、生成された物理アドレスが、プロセスのベースアドレスとリミットアドレスによって定義された範囲内にあることをチェックする。これはメモリ保護機構として機能する。プロセスがアクセス権を持たないメモリ空間にアクセスする、又はプロセスに割り当てられたベースアドレスとリミットによって定義された範囲外にアクセスする等、欠陥(fault)プロセスによるメモリアクセス違反の発生をMMUが検出すると、欠陥プロセスは、トラップにより、アドレッシングエラーの通知を受けるか、あるいは、アドレッシングエラーの通知とともにアボート(abort)される可能性がある。
MMUベースのメモリ保護は、図11Bに示すようなページテーブルによって実現するようにしてもよい。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/ハイパーバイザは、共有領域への書き込み操作を実行することができるように、アクセス制御情報に基づいて、スイッチプロセスから共有領域への読み取り/書き込みアクセスを制御するアクセスコントローラを備えてもよい。
図2は、ディスパッチャ120のルール及びスイッチ100のスイッチプロセス102のフローエントリを図解する。ディスパッチャ120は、ストレージ122に格納されたディスパッチルールテーブル121を含む。ディスパッチルールテーブル121は、1つ以上のディスパッチルールを含む。ディスパッチルールは、フローフィールドのフローと、プロセスフィールドにおいて、該フローがディスパッチされるスイッチプロセスとの関連付けを規定する。なお、図2では、説明の容易のため、ディスパッチルールテーブル121のフローフィールド(条件フィールド)は、宛先(Dest)IPアドレスフィールドのみを用いているが、パケットヘッダの1つ以上の他のフィールドを使用してフローを定義してもよい。
ディスパッチャ120は、受信したIPパケットのIPヘッダの解析を行い、IPヘッダの宛先IPアドレスフィールドを抽出し、ディスパッチルールテーブル121を検索し、宛先IPアドレスと一致するフローフィールドを持つディスパッチルールを見つける。図2の例では、ディスパッチルールテーブル121は、それぞれ、以下の3つのディスパッチルールを含む。
受信したパケットヘッダの宛先IPアドレスフィールドがXであれば、スイッチプロセスAにパケットをディスパッチする。
受信したパケットヘッダの宛先IPアドレスフィールドがYであれば、スイッチ処理Bにパケットをディスパッチする。
受信したパケットヘッダの宛先IPアドレスフィールドがZであれば、パケットはスイッチプロセスCにディスパッチされる。
この例では、ディスパッチャ120は宛先IPアドレス:Xの受信IPパケットをスイッチプロセスAにディスパッチする。
各スイッチプロセス102は、ストレージ104に格納された1つ又は複数のフローエントリを含むフローテーブル103を含む。フローテーブル103の各フローエントリは、少なくともマッチフィールド及び動作のリストを含む動作(action)フィールドを含む。スイッチプロセス102は、受信したIPパケットのIPヘッダフィールド情報を用いてフローテーブル103を検索する。この例では、スイッチプロセスAは、ディスパッチャ120によってスイッチプロセスAにディスパッチされたIPパケットヘッダの宛先IPアドレスXが、フローエントリのマッチフィールドと一致することを発見すると、スイッチプロセスAは、フローテーブル103内の一致するフローエントリの動作フィールドに規定されているアクション1、2、3及び4を実行する。
図3は、図2を参照して説明したスイッチ100におけるフローセットアップシーケンスの概略を例示する。
スイッチ100は、未ディスパッチ(un-dispatched)フローを受信する(1)。括弧内の数字1は、図3のシーケンス番号1を示し、以下のシーケンスについても同様である。未ディスパッチフローは、ディスパッチルールテーブル121にまだフローに対応するスイッチプロセスが割り当てられていないフロー(新規フロー)であり、照合の結果、不一致となる。
スイッチ100は、コントローラ200にクエリ(問い合わせ)を送信する(2)。より詳しくは、スイッチ100において、ディスパッチャ120がディスパッチルールテーブル121内の新しいフローに対応するエントリを見つけられなかった場合、ディスパッチャ120はディスパッチ失敗(不一致:no−match)をハイパーバイザ110に通知する。ハイパーバイザ110は、送信機として、通信ネットワークを介して新しいフローのディスパッチルールのクエリをコントローラ200に送信する。図2に示すように、例えば「Dest IP X=>プロセスA」のようなディスパッチルールが、ディスパッチルールテーブル121内のパケットヘッダの宛先IPアドレス:Xによって示されるフローに対して存在しない場合、スイッチ100は、新しいフロー(宛先IPアドレス:X)のディスパッチルールに対するクエリを送信する。
スイッチ100からコントローラ200に送られるクエリは、コントローラ200にフロー情報を通知するために、捕捉されたパケットの少なくともパケットヘッダを含むようにしてもよい。本発明を特に制限するものではないが、スイッチ100は、OpenFlowプロトコルを使用してセキュアチャネルを介してパケットインメッセージを、例えばクエリとしてコントローラ200に送信するようにしてもよい。パケットインメッセージは、パケットがキャプチャされコントローラに転送された理由を示す理由フィールドと、該パケット(第1のパケット)のキャプチャされた部分を含む。この場合、パケットインメッセージの理由フィールドは、スイッチ100内のディスパッチルールテーブル121での不一致を示すコードを含むことができる。
スイッチ100からのクエリを受信すると、コントローラ200は、クエリに含まれるパケット(第1のパケット)のIPパケットヘッダを解析し、新しいフローのディスパッチルールを作成する。より詳しくは、コントローラ200内のディスパッチルール生成部(図示せず)は、例えば、ディスパッチルール「Dest IP X=>プロセスA」を新規フロー(宛先IPアドレス:X)に対して作成する。
この段階では、コントローラ200において、新たなフローに関連付けられたコントローラプロセスが未だ割り当てられていない場合がある(コントローラプロセスについて、図6を参照して説明する)。この場合、予め定められた制御部又はデフォルトコントローラプロセスは、第1のパケットのIPパケットヘッダを解析し、新しいフローのディスパッチルールを作成するようにしてもよい。コントローラ200は、作成したディスパッチルールをスイッチに送信する(3)。
スイッチ100は、コントローラ200から新しいフローのディスパッチルールを受信し、ディスパッチルールテーブル121を、ディスパッチルール、例えば:「Dest IP X =>プロセスA」で更新する。新しいフロー(例えば、宛先IPアドレス:X)に割り当てられたスイッチプロセス(例えば「プロセスA」)はスイッチ100にまだ存在しないことから、スイッチ100は、隔離された環境101を作成し、スイッチプロセス102を起動する(4)。図1のハイパーバイザ110は、隔離された環境101の作成とスイッチプロセス102の起動(invocation)を担当する制御部として機能する。スイッチプロセス102(例えば、「プロセスA」)が、隔離された環境101で既に起動されているが、新しいフロー(宛先IPアドレス:X)に関連付けられていない場合には、隔離された環境101の作成及びスイッチプロセス102(例えば「プロセスA」)の起動は省略される。
次に、スイッチ100は、コントローラ200に肯定応答(ACK::Acknowledgement)を送信する(5)。
コントローラ200は、スイッチ100からのACKに応答して、コントローラ200に設けられたストレージに格納されたネットワークトポロジ情報に基づいて新たな経路を算出し、アクションルール(フローエントリ)を作成してスイッチ100、及び、パス(経路)上の1つ以上の他のスイッチ(不図示)に送信する。この段階では、コントローラ200において、新しいフローに関連付けられたコントローラプロセス(図6を参照して後で説明する)が既に割り当てられ、起動されている場合、該コントローラプロセスは新しいパスを計算し、アクションルールをスイッチ100に送信する。Openflowシステムでは、コントローラ200は、一致するパケット(OpenFlow 1.y、y=0)、又はマッチ条件と命令(例えばOpenFlow 1.y、y=1、2、3.0、又は3.1の場合)を特定するアクションを含むFlowMODメッセージをパス上のスイッチ100のそれぞれに送信する。
スイッチプロセス102は、コントローラ200から送信されたルール(フローエントリ)にて、ストレージ104のフローテーブル103を更新する。スイッチプロセス102は、第1のパケットに続いて第1のパケットと同じフローに属するパケットを、コントローラから受信したフローエントリにしたがって制御する(7)。コントローラ200は、パケットアウトメッセージを用いて第1のパケットをOpenFlowネットワークのエッジスイッチに送信し、第1のパケットをエッジスイッチから宛先ノードに送信するようにしてもよい。
図4は、例示的な実施形態の変形例を示す。この例では、セキュリティ対策をプロセスに選択的に適用してパフォーマンスを向上させる。具体的には、トラステッド(trusted:信頼できる)スイッチプロセス及びアントラステッド(untrusted:信頼できない)スイッチプロセスを配備するようにしてもよい。
トラステッド・スイッチプロセス102A及び102Bはそれらが隔離された環境101A、101Bに作成されるとき、及び、該隔離された環境101A、101Bで稼働するときにも、アテスト(attest:検証)が行われる。このため、トラステッド・スイッチプロセス102A及び102Bは低速である。
一方、隔離された環境101C内のアントラステッド・スイッチプロセス102Cは、アテストされず、ランタイム保護を受けることもないが、高速である。重要/機密フロー1及び2は、トラステッド・スイッチプロセス102A及び102Bに割り当てられる。
図5は、プロセスの実行時におけるセキュリティ対策の一例としてのインテグリティメジャ(integrity measure)の例を図解したものである。このセキュリティ対策は、図4のトラステッド・スイッチプロセス102A及び102Bで採用されてもよい。図5は、説明のためにのみ、いくつかの変更を加えて、非特許文献4のFig.4から引用したものである。
スイッチプロセス(アプリケーションA)は、非特許文献4のレガシーOSなどのOSから完全に隔離された独立型セキュリティセンシティブコードブロック110に含まれる関数foo()を呼び出す。ブロック110は、非特許文献4に従ってPAL(Pieces of Application Logic)と称せられる。
(1)入力パラメータは、アプリケーション(信頼できないコード)からPAL110にマーシャリング(marshaling)される。
(2)PAL110内の関数fooは、以前に作成された秘密を復号(解読)するためにインテグリティメジャ(integrity measure)モジュール111のアンシール(Unseal)コマンド(HV_Unseal())を呼び出す。図5のインテグリティメジャモジュール111は、非特許文献4のμTPM(micro Trusted Platform Module)に対応する。
(3)PALのfooがその目的:doWork()を実行した後、センシティブな状態は、インテグリティメジャモジュール111:HV_Seal()を使用して再び封印することができる。
(4)PAL110内の関数fooからの結果(出力)は、関数foo()を呼び出したアプリケーションに案内される。
マーシャリング(marshaling)は、Java(登録商標)オブジェクトからXML(Extensible Markup Language)データへの作成を指定してもよいし、アンマーシャリング(unmarshaling)は、XMLデータからJava(登録商標)スクリプトを作成することを指定してもよい(ただし、これに限定されない)。
HV_Unseal()及びHV_Seal()を実行するインテグリティメジャモジュール111は、ハイパーバイザ110に実装してもよい。HV_Unseal()は、システムが正しい状態にある場合にのみ、暗号文を復号することができる。システム内の関連するファイルが改ざんされると、システムが正しい状態にないため、HV_Unseal()は暗号文の復号に失敗する。このため、攻撃者が平文を読み取ることを禁止する。
インテグリティメジャモジュール111(μTPM)は、インテグリティ(完全性、あるいは整合性とも訳される)を測定し、システム(インテグリティ)が正しい状態にあるか否かを判断するように構成される。インテグリティメジャモジュール111は、ファイルを封印(暗号化)するために使用されるインテグリティ値としてハッシュ値を保持することができる。現在保持しているハッシュ値とファイルを封印するために以前に使用されたハッシュ値が同じであることを見つけると、インテグリティメジャモジュール111は、システム状態が開封(Unsealing)の実行を許可する権利があるものとみなす。
インテグリティメジャモジュール111の仕組みは、HV_Seal実行時のシステム状態(インテグリティ)と、HV_Unseal実行時のシステム状態(インテグリティ)が同一に保たれていることを保証する。すなわち、HV_Unsealが実行された時点のファイルが、HV_Sealが実行された時点から変更された状態であれば、HV_Unsealは、HV_Sealで暗号化されたファイルの暗号文を、復号(decrypt)することはできない。
関数fooでは、最初にHV_Unsealによる復号化が実行され、HV−Sealによる暗号化が、EXIT又は呼び出し元に戻る前の最後に実行される。インテグリティが保たれると、図5のように、HV_Unsealによって、暗号文を、doWorkによる読み書きが許可されている平文に復号化することができる。つまり、関数fooにおいてだけ、封印された値を開封して使用することができ、他のプロセスや他の関数では封印された値を使用することはできない。PAL、μTPM、HV_seal、HV_Unsealなどの詳細については非特許文献4が参照される。
コード又はデータへの再書き込みを防止することができる上記インテグリティメジャ機構は、メモリアイソレーションと共に、プロセスに、侵入保護などの実行時保護(runtime protection)を提供するのに有効である。
図4のトラステッド・スイッチプロセス102内のコードの少なくとも一部は、図5で説明したように、コードが開封(Unsealing)と封印(Sealing)との間に挟まれたファンクションを呼び出す構成としてもよく、コードはレガシーOSから完全に隔離されて配置され、インテグリティを確保する。
図6は、本実施形態におけるコントローラ200を例示する図である。図6を参照すると、ハイパーバイザ210は、隔離された環境201A−201Cを作成し、隔離された環境201A−201C内のコントローラプロセス202A−202Cをそれぞれ起動する。ハイパーバイザ210は、コントローラ100Aと同様にコントローラプロセス202A−202Cを隔離する。
ディスパッチャ220は、スイッチ100からメッセージ(パケットインメッセージなど)を受信し、ストレージ222に格納されたディスパッチルールテーブルに基づいて、メッセージを関連するコントローラプロセス202にディスパッチする。
ストレージ222に記憶されたディスパッチルールテーブルは、スイッチに接続されたポートIDとコントローラプロセスIDとの間の対応をそれぞれ規定する1つ又は複数のディスパッチルールを含むようにしてもよい。特に制限されないが、スイッチに接続されるポートIDとコントローラプロセスIDとの対応関係は、コントローラプロセスとスイッチの信頼度に基づいて決定されてもよい。アントラステッド(信頼できない)スイッチからのメッセージは、図4に示されるように、アントラステッド(信頼できない)コントローラプロセスにディスパッチされ、トラステッド(信頼できる)スイッチプロセスからのメッセージは、図4に示されるように、トラステッド(信頼できる)コントローラプロセスにディスパッチされるようにしてもよい。
図6のコントローラプロセス202内のコードの少なくとも一部は、図5で説明したように、インテグリティを確保するために、OSから完全に隔離されて位置し、開封(Unsealing)と封印(Sealing)との間に挟まれたコードを持つ関数を呼び出すように構成してもよい。
図7は、コントローラ200の変形例を例示する図である。図7を参照すると、コントローラプロセス202A−202Cは、隔離された環境201A−201C内のハイパーバイザ210によってそれぞれ起動される。ハイパーバイザ210は、コントローラプロセス202A−202Cをスイッチ100と同様に分離する。この例では、特に制限されるものではないが、各テナントにはコントローラプロセスが割り当てられている。
ディスパッチャ230(サウスバウンド(southbound)API用ディスパッチャ)は、スイッチ100(又はスイッチ内のスイッチプロセス)から、関連付けられたサウスバウンドAPI203及びコントローラプロセス202に、API(Application Program Interface)コール(パケット)をディスパッチする。ディスパッチャ230からのAPIコールは、サウスバウンドAPI203を介してコントローラプロセス202に転送される。
ディスパッチャ240(ノースバウンド(northbound)APIのディスパッチャ)は、アプリケーション250(例えば、ロードバランサ、ファイアウォールなど)からのAPIコールを、関連するノースバウンドAPI204にディスパッチする。ディスパッチャ230からのAPIコールは、ノースバウンドAPI204を介してコントローラプロセス202に転送される。
サウスバウンドAPI203(203A−203C)の各々は、コントローラプロセス202(202A−202C)がSDNスタックの最下部にあるスイッチの挙動を定義することを可能にする。ノースバウンドAPI204(204A−204C)の各々は、コントローラプロセス202(202A−202C)とアプリケーション250(250A−250C)又はSDNスタックの最上部における上位レイヤ制御プログラムとの間の通信インタフェースを指定する。アプリケーション250(250A−250C)は、ノースバウンドアプリケーションとも呼ばれる。
この例では、ディスパッチャ230、240は、「テナント」に基づいてAPIコールをディスパッチするが、これに限定されるものではない。図7において、ディスパッチャ230、240がディスパッチルールとして使用したテナント情報は、簡単のため、ストレージ260に共通に格納されている。ディスパッチャ230がスイッチ100(スイッチプロセス)からのメッセージをディスパッチするために使用するディスパッチルール、及びノースバウンドアプリケーション250からAPIコールをディスパッチするためにディスパッチャ240によって使用されるディスパッチルールは、必ずしも同一である必要はないし、必ずしも同じ記憶装置に記憶される必要はないことは勿論である。
図8は、図7を参照して説明した例に適用されるテナントベースのセキュリティポリシを説明するための図である。図8は、ストレージ260に格納されたテナント情報の一例を示す。セキュリティポリシは、テナントに関連して管理されてもよい。
データセンタでは、テナント(顧客)ごとに独立した仮想ネットワークが提供される。各テナントは、契約に従って割り当てられた単一のコントローラを有することができる。セキュリティポリシ(セキュリティコース)は、テナントの契約情報に関連して管理されるようにしてもよい。図8では、説明のためにのみ、高レベルセキュリティコースを備えたテナントAセキュリティ契約261Aと、低レベルセキュリティコースを有するテナントBセキュリティ契約261Bとが格納されている。
高レベルのセキュリティコースと低レベルのセキュリティコースのためのセキュリティポリシが用意されている。コントローラ及びコントローラに接続されたスイッチを保護するためのセキュリティレベルは、テナントのセキュリティ契約に基づいて決定されてもよい。図8では、説明のためにのみ、プロセス検証を伴うテナントA262Aのセキュリティポリシと、プロセス検証が行われないテナントB262Bのセキュリティポリシがストレージ260に格納されている。
プロセス検証を伴うテナントのセキュリティポリシは、例えば、図5を参照して説明したインテグリティメジャを使用して実現することができる。テナントA宛てのメッセージがディスパッチャ230によってディスパッチされるコントローラプロセス202のコードの一部は、セキュリティポリシ262Aに基づいて、図5で説明したように、隔離された環境で、コードが開封(Unsealing)と封印(Sealing)に挟まれた関数(function)の関数呼び出し(function call)を含むようにしてもよい。
図9Aは、コントローラ200の変形例を例示する。図9Aを参照すると、隔離された環境201A−201Cに設けられたコントローラプロセス202A−202Cは、アクセス制御モジュール270を介してストレージ280に格納された共有情報にアクセスする。
アクセス制御モジュール270は、共有オブジェクト毎に、ACE(Access Control Entity)等のアクセス制御情報を格納しているストレージ290が接続されている。ストレージ290内のアクセス制御情報は、例えば、コントローラプロセス又はコントローラプロセスのグループに対して、ページ単位又はオブジェクト単位で、ストレージ280に格納された共有情報に対するアクセス可能/不可能又は許可されたアクセスタイプ情報を含むようにしてもよい。あるいは、ストレージ290内のアクセス制御情報は、各コントローラプロセスに対して、図9Cに示すように、コントローラプロセスに許可されるアクセスアドレス範囲(開始アドレス及び終了アドレスによって定義される)及びアクセスタイプを含むことができる。
アクセス制御モジュール270は、コントローラプロセス202A−202Cのいずれかからアクセスコマンド(リード/ライト)とアクセスアドレスとを含むアクセス要求を受信すると、ストレージ280内の共有情報へのアクセスであるかチェックする。ストレージ280内の共有情報へのアクセスである場合、アクセス制御モジュール270は、ストレージ290に格納されているアクセス制御情報に基づき、該アクセス要求が許可されているか否かを確認する。チェックの結果、該アクセス要求が許可されている場合、コントローラプロセスから共有情報(共有領域)へのアクセスはイネーブルとされる。アクセス要求のチェックの結果、アクセス要求が許可されていない場合、コントローラプロセスから共有情報(共有領域)へのアクセスは、ディスエーブルとされる。例えば、コントローラプロセス202A及び202Bが信頼できるネットワークに属し、コントローラプロセス202Cが信頼できないネットワークに属する場合、コントローラプロセス202A及び202Bは、共有情報の所定のアドレス範囲をリード、及びライトすることが可能であり、コントローラプロセス202Cはリードのみが可能とされる。
アクセス制御モジュール270は、ハイパーバイザ210に含まれてもよい。共有情報を記憶するストレージ280は、半導体メモリ(RAM(ランダムアクセスメモリ)、又はEEPROM(electrically erasable and programmable read only memory)など)、HDD(Hard Disk Drive)などが挙げられる。
上述したアクセス制御は、図9Bに示すように、スイッチ100にも実装するようにしてもよい。図9Bを参照すると、隔離された環境101A−101Cに設けられたスイッチプロセス102A−102Cは、アクセス制御モジュール170を介して、ストレージ180に格納された共有情報にアクセスすることができる。ストレージ180に格納された共有情報には、OS/ハイパーバイザ及びスイッチプロセス102A−102Cによって共有される。アクセス制御モジュールを用いたアクセス制御は、ストレージに格納された共有情報以外の共有リソースにも適用してもよい。
図10は、例示的な実施形態の変形を示す。図10は、非特許文献5から、Model−Driven SAL(Service Abstraction Layer)への移行から、いくつかの吹き出し(markup balloons)を追加して引用されている。OpenDaylightにおけるModel−Driven SAL(MD−SAL)は、データの交換又は変換を抽象化するフレームワークの1つである。MD−SALにおいては、図10に示すように、ネットワーク機器(NE)情報、管理対象トポロジなどの情報がツリー構造のデータモデルとしてデータストアに格納されている。
例示的な実施形態では、MD−SAL内のデータストアにアクセス制御が適用される。具体的には、OpenDaylightのMD−SALは、図9Aのストレージ280に共有情報として記憶され、コントローラプロセス202A−202Cによって共有される。図10において、
− BGP−LS:Border Gateway Protocol−Link Status、
ボーダーゲートウェイプロトコル(BGP)は、インターネット上の自律システム(AS)間で、ルーティング及び到達可能性情報を交換するように設計された標準化された外部ゲートウェイプロトコルである。
− PCEP:Path Computation Element (PCE)Communication Protocol(IETF (Internet Engineering Task Force) RFC(Request for Comments) 5440).
− OF x.y:OpenFlowプロトコルバージョンx.y(1.0や1.3など)。
− OF−Config:OpenFlow管理及び設定プロトコル。
− OVSDB:Open vSwitch Database Management Protocol、
特にOpen vSwitchの実装を管理するオープンソースのコンポーネントOpen vSwitch(仮想スイッチ)。
− NETCONF:ネットワーク構成プロトコル(IETF RF6241)。NETCONFは、ネットワークデバイスの設定をインストール、操作、及び削除するためのメカニズムを提供する。
− RESTCONFは、REST形式でデータストアにアクセスするためのプロトコル。
− NB REST API:ノースバウンドREST APIはOpenDaylight APIである。
ストレージ280に共有情報として格納されたMD−SAL内のノードには、どのプロセスが読み書きが許可されるかを指定するアクセス制御情報が設けられている。図10では、OpenFlow又はvSwitch(仮想スイッチ)に関連する参照番号51、52、及び53によって指定されるノード/フロー上に、それぞれマークアップバルーンに示されるようなアクセス制御リストが提供される。この例では、権限のないコントローラプロセスがMD−SALのノード情報にアクセスできないように制御される。
図12は、本実施形態に係るデータセンタの一例を例示する図である。コントローラ200は、図6又は図7を参照して説明したコントローラ200に対応する。スイッチ100−1及び100−2は、図1から図4を参照して説明したスイッチ100にそれぞれ対応する。テナントベースのセキュリティポリシは、データセンタネットワークで採用される。
テナントAのホスト301−1AとテナントAのホスト301−2Aとは、スイッチ100−1のテナントA用のスイッチプロセス102−1Aに接続され、スイッチ100−2のテナントAのスイッチプロセス102−2Aにそれぞれ接続されてテナントネットワークAを形成する。スイッチ100−1におけるテナントA用スイッチプロセス102−1Aと、スイッチ100−2におけるテナントAのスイッチプロセス102−2Aは、テナントAのコントローラプロセス202−Aに接続される。
テナントBのホスト301−1BとテナントBのホスト301−2Bとは、スイッチ100−1のテナントBのスイッチプロセス102−1Bと、スイッチ100−2のテナントBのスイッチプロセス102−2Bにそれぞれ接続され、テナントネットワークBを形成する。スイッチ100−1内のテナントB用のスイッチプロセス102−1Bと、スイッチ100−2内のテナントBのスイッチプロセス102−2Bは、テナントBのコントローラプロセス202−Bに接続される。このネットワーク構成では、テナントネットワークAが汚染されたとすると、該汚染がテナントネットワークAに閉じ込められ、テナントネットワークB又はテナントネットワーク全体に広がることを防止することができる。
図13は、本実施形態の更なる変形例の構成を例示する図である。図13を参照すると、ディスパッチャ420が、パケット処理ハードウェア410と管理プロセス402A−402Cとの間に配置される。
この実施形態では、パケット処理ハードウェア410によってパケット処理が実行され、管理プロセス402A−402Cは、それぞれ、OpenFlowチャネルを介して、図13には示されていないコントローラ内の関連コントローラプロセスと通信する。管理プロセス402A−402Cのそれぞれは、パケット処理ハードウェア410へのフローエントリを受信/削除する。次に、パケット処理ハードウェア410は、フローエントリに従ってそれぞれのパケットを処理する。
ディスパッチャ420は、それぞれのフローエントリの追加及び削除を監視する。パケット処理ハードウェア410は、フローエントリと一致しないパケットヘッダを有するパケットを受信すると、ディスパッチャ420に対して不一致を通知する。そして、ディスパッチャ420は、通知を、対応するディスパッチルールに従って対応する管理プロセス402A−402Cに転送する。より詳しくは、通知は、IPアドレス、MAC(Media Access Control)アドレス、VLAN(Virtual Local Area Network)タグなどの受信パケットのヘッダフィールド情報を含み、ディスパッチャ420はディスパッチルールを検索して、パケットのヘッダフィールド情報に一致するルールを検索し、管理プロセスを決定する。
さらに、ディスパッチャ420は、1つ又は複数のフローエントリと1つ又は複数のディスパッチルールとの間の競合をチェックするように構成されてもよい。具体的には、管理プロセス(例えば、402A)が、1つ又は複数の他の管理プロセス(402B、402C)の1つ又は複数のディスパッチルールと競合するフローエントリを追加しようとする場合、ディスパッチャ420は、該フローエントリを拒否する。例えば、ディスパッチルールがVLAN ID123と管理プロセス402Bとを対応付けているものとし、管理プロセス402AがマッチフィールドがVLAN ID=123を指定したフローエントリを入力しようとすると、ディスパッチャ420は、フローエントリを拒否する。すなわち、ディスパッチャ420は、管理プロセス402Aがフローテーブルにフローエントリを追加することを許可しない。
また、上述した実施形態では、隔離された環境でプロセスの実行をハイパーバイザによって制御する構成について説明したが、実施形態の概念は、ハイパーバイザを使用しないメモリアイソレーションなどにより、隔離された環境をプロセスへ提供するように構成とされたプロセッサ上で実行されるプロセスにも適用するようにしてもよい。また、上記実施形態では、OpenFlowスイッチやコントローラへの適用例について説明したが、本発明の適用はOpenFlowネットワークに限定されないことは勿論である。
上記非特許文献の各開示は、参照により本明細書に組み込まれる。各実施形態及び各実施形態の変更及び調整は、本発明の全体的な開示(請求項を含む)の範囲内で可能であり、本発明の基本的な技術的思想に基づくものである。開示される様々な要素(各補足の各要素、各例の各要素、各図の各要素などを含む)の様々な組合せ及び選択は、本発明の請求の範囲内で可能である。すなわち、本発明は、特許請求の範囲及び技術的思想を含む全体的な開示によって、当業者によってなされ得る様々な変形及び修正を含むことは勿論である。
11 プロセス1
12 プロセス2
20 マシンメモリ
21 分離領域1
22 分離領域2
23 OS/ハイパーバイザ領域
30 論理アドレス
31 ページテーブル
32 物理アドレス
33 マシンメモリ
51−53 ノード/フロー
100 スイッチ
100−1 スイッチ−1
100−2 スイッチ−2
101、101A−101C 隔離された環境(isolated environment)
102、102A−102C スイッチプロセス
102−1A、102−2A テナントA用のスイッチプロセス
102−1B、102−2B テナントB用のスイッチプロセス
103、103A−103C フローテーブル(状態)
104 ストレージ(フローエントリ)
105 マルウェア(汚染)
106A テナントネットワークA
106B テナントネットワークB
110 ハイパーバイザ
120 ディスパッチャ
121 ディスパッチルールテーブル
122 ストレージ(ディスパッチルール)
130 NIC
170 アクセス制御モジュール
180 ストレージ(共有情報)
190 ストレージ(アクセス制御情報)
200 コントローラ
201A−201C 隔離された環境
202A−202C コントローラプロセス
202−A テナントAのコントローラプロセス
202−B テナントBのコントローラプロセス
203A−203C サウスバウンドAPI
204A−204C ノースバウンドAPI
210 ハイパーバイザ
220 ディスパッチャ
222 ストレージ(ディスパッチルール)
230 サウスバウンドAPIディスパッチャ
240 ノースバウンドAPIディスパッチャ
250A−250C アプリケーション
260 ストレージ(テナント情報)
270 アクセス制御モジュール
280 ストレージ(共有情報)
290 ストレージ(アクセス制御情報)
301−1A、301−2A テナントAのホスト
301−1B、301−2B テナントBのホスト
401A−401C 隔離された環境
402A−402C 管理プロセス
410 パケット処理ハードウェア
420 ディスパッチャ

Claims (26)

  1. 各々がそれぞれに対応するフローに対して通信処理を実行する複数の通信プロセスを備え、
    前記複数の通信プロセスの各々は、前記通信プロセスごとに割り当てられた環境で実行され、前記環境は、残りの1つ又は複数の通信プロセスに対して配置された1つ又は複数の環境の各々から隔離されており、
    さらに、
    ネットワークに接続されるように構成された複数のネットワークインタフェースと、
    前記ネットワークインタフェースからパケットを受信し、フローと、前記フローがディスパッチされる通信プロセスとの関連付けを定義するディスパッチルールに基づいて、前記パケットを関連する通信プロセスにディスパッチするディスパッチャと、
    を備えた通信装置。
  2. 前記通信プロセスは、
    前記ディスパッチャによってディスパッチされたパケットを受信すると、前記パケットのヘッダフィールド情報と、フローを処理するためのルールと、を照合し、照合結果に基づいて前記パケットを処理するスイッチプロセスを含み、
    前記ルールは、パケットのヘッダフィールド情報と照合されるマッチフィールドと、前記マッチフィールドと一致するパケットの処理を規定するアクションフィールドとを含む請求項1に記載の通信装置。
  3. 前記ネットワークインタフェースから受信したパケットのヘッダフィールド情報が示すフローに対するディスパッチルールが存在しない場合、前記フローに対するディスパッチルールの問い合わせを、前記通信装置を制御するコントローラに送信する送信部と、
    前記コントローラから送信された、前記フローに対するディスパッチルールを受け取ると、隔離された環境を作り、前記隔離された環境内に前記フローに関連するスイッチプロセスを起動し、前記コントローラに応答を送る制御部と、
    を備え、
    前記スイッチプロセスは、前記コントローラから前記フローを処理するためのルールを受信すると、前記ルールに基づいて前記フローに関連する1つまたは複数のパケットを処理する請求項2に記載の通信装置。
  4. 前記通信プロセスは、
    暗号文の復号時に測定されたシステムインテグリティが、平文の暗号化時に測定されたシステムインテグリティと同一であると判断した場合に、前記暗号文の平文への復号を可能にする制御を行うインテグリティ制御部を備えた請求項1乃至3のいずれか1項に記載の通信装置。
  5. 前記通信プロセスは、
    前記通信装置を制御するコントローラと通信を行う管理プロセスと、
    前記ネットワークインタフェースと前記ディスパッチャとの間に配置され、フローを処理するためのルールに従ってパケット処理を行うパケット処理部と、
    を備え、
    前記ディスパッチャは、フローを処理するための前記ルールを監視する請求項1に記載の通信装置。
  6. 前記通信プロセスは、
    スイッチからのメッセージを受信すると、フローのパス上の各スイッチに適用される前記フローを処理するためのルールを生成し、生成した前記ルールを前記パス上の各スイッチに送信するコントローラプロセスを備え、
    前記ルールは、前記スイッチが受信したパケットのヘッダフィールド情報と照合されるマッチフィールドと、一致したパケットの前記スイッチによる取り扱いを規定するアクションフィールドとを含む、請求項1に記載の通信装置。
  7. 前記通信プロセスから前記複数の通信プロセスで共有される共有リソースへのアクセスを制御するアクセス制御モジュールを備えた請求項1乃至6のいずれか1項に記載の通信装置。
  8. 各々がそれぞれに対応するフローに対してスイッチ処理を実行する複数のスイッチプロセスを備え、
    前記複数のスイッチプロセスの各々は、前記スイッチプロセスごとに割り当てられた環境で実行され、前記環境は、残りの1つ又は複数のスイッチプロセスに対して配置された1つ又は複数の環境の各々から隔離されており、
    さらに、
    ネットワークに接続されるように構成された複数のネットワークインタフェースと、
    前記ネットワークインタフェースからパケットを受信し、フローとディスパッチされるスイッチプロセスとの関連付けを定義するディスパッチルールに基づいて、前記パケットを対応するスイッチプロセスにディスパッチするディスパッチャと、
    を備えたスイッチ装置。
  9. 各々が1つまたは複数の関連するスイッチプロセスを制御する複数のコントローラプロセスを備え、
    前記複数のコントローラプロセスの各々は、前記コントローラプロセスごとに割り当てられた環境で実行され、前記環境は、残りの1つ又は複数のコントローラプロセスに対して配置された1つ又は複数の環境の各々から隔離されており、
    さらに、
    スイッチと、前記スイッチからのメッセージがディスパッチされるコントローラプロセスとの関連付けを定義するディスパッチルールに基づいて、スイッチからのメッセージを、関連するコントローラプロセスにディスパッチするディスパッチャと、
    を備えたコントローラ装置。
  10. スイッチと、
    前記スイッチを制御するコントローラと、
    を備え、
    前記スイッチは、
    各々がそれぞれに対応するフローに対してスイッチ処理を実行する複数のスイッチプロセスを備え、
    前記複数のスイッチプロセスの各々は、前記スイッチプロセスごとに割り当てられた環境で実行され、前記環境は、残りの1つ又は複数のスイッチプロセスに対して配置された1つ又は複数の環境の各々から隔離されており、
    さらに、
    ネットワークに接続されるように構成された複数のネットワークインタフェースと、
    前記ネットワークインタフェースからパケットを受信し、フローとディスパッチされるスイッチプロセスとの関連付けを定義するディスパッチルールに基づいて、関連するスイッチプロセスに前記パケットをディスパッチするディスパッチャと、
    を備えた通信システム。
  11. 前記スイッチプロセスは、前記ディスパッチャからディスパッチされたパケットを受信し、前記パケットのヘッダフィールド情報を、フローを処理するためのルールと照合し、照合結果に基づいて、前記パケットを処理するように構成され、
    前記ルールは、パケットのヘッダフィールド情報と照合されるマッチフィールドと、前記マッチフィールドと一致するパケットの処理を規定するアクションフィールドとを含む請求項10に記載の通信システム。
  12. 前記スイッチは、
    前記ネットワークインタフェースと前記ディスパッチャとの間に配置され、フローを扱うためのルールに従ってパケット処理を行うパケット処理部を備え、
    前記ディスパッチャは、フローを扱うための前記ルールを監視する請求項10に記載の通信システム。
  13. 前記コントローラは、
    各々が1つまたは複数の関連するスイッチプロセスを制御する複数のコントローラプロセスを備え、
    前記複数のコントローラプロセスの各々は、前記コントローラプロセスごとに割り当てられた環境で実行され、前記環境は、残りの1つ又は複数のコントローラプロセスに対して配置された1つ又は複数の環境の各々から隔離されており、
    さらに、
    スイッチと前記スイッチからのメッセージがディスパッチされるコントローラプロセスとの関連付けを定義するディスパッチルールに基づいて、スイッチからのメッセージを、関連するコントローラプロセスにディスパッチする第1のディスパッチャを備えた請求項10乃至12のいずれか1項に記載の通信システム。
  14. 前記コントローラは、
    前記第1のディスパッチャと前記コントローラプロセスとの間の第1のインタフェースを備え、
    前記メッセージは前記第1のインタフェースを介して前記コントローラプロセスにディスパッチされ、前記第1のインタフェースと前記コントローラプロセスは共通に前記隔離された環境に配置され、さらに、
    アプリケーションと、前記アプリケーションからのメッセージがディスパッチされるコントローラプロセスとの関連付けを定義する第2ディスパッチルールに基づいて、アプリケーションまたは上位レイヤからのメッセージを関連するコントローラプロセスにディスパッチする第2のディスパッチャと、
    前記第2のディスパッチャと前記コントローラプロセスとの間の第2のインタフェースと、
    を含み、
    前記アプリケーションからの前記メッセージは、前記第2のインタフェースを介して前記コントローラプロセスにディスパッチされ、前記第2のインタフェースと前記コントローラプロセスは共通に前記隔離された環境に配置される請求項13に記載の通信システム。
  15. 前記コントローラは、
    前記スイッチプロセスからの予め定められたメッセージを受信すると、前記フローのパス上の各スイッチプロセスに適用されるフローを取り扱うためのルールを生成し、
    前記ルールは、前記スイッチプロセスで受信されたパケットのパケットフィールド情報と照合されるマッチフィールドと、一致したパケットの前記スイッチプロセスによる取扱いを規定するアクションフィールドと、
    を含み、
    前記ルールを前記フローの前記パス上の各スイッチプロセスに送信する送信部を備えた請求項10乃至14のいずれか1項に記載の通信システム。
  16. 制御部は、
    前記ネットワークインタフェースから受信したパケットのヘッダフィールド情報が示すフローのディスパッチルールが前記スイッチに存在しない場合に、前記スイッチから送信されたクエリを受信すると、前記フローのディスパッチルールを作成するディスパッチルール生成部と、
    前記フローの前記ディスパッチルールをスイッチに送信する送信部と、を備えた請求項10乃至15のいずれか1項に記載の通信システム。
  17. 前記スイッチの前記ディスパッチャが、前記ネットワークインタフェースからパケットを受信し、
    受信したパケットのヘッダフィールド情報によって示されるフローが前記ディスパッチルールに登録されていないことを発見すると、前記スイッチは、前記フローのディスパッチルールの問い合わせを前記コントローラに送信し、
    前記コントローラは、前記スイッチから問い合わせを受信すると、前記フローのディスパッチルールを作成して前記ディスパッチルールを前記スイッチに送信し、
    前記スイッチは、前記コントローラから送信された前記ディスパッチルールを受信すると、隔離された環境を作成し、必要に応じて隔離された環境内でスイッチプロセスを呼び出し、前記コントローラに応答を送信し、
    前記コントローラは、前記スイッチから前記応答を受信すると、パケットのヘッダフィールド情報と照合されるマッチフィールドと、一致するパケットの取り扱いを指示するアクションフィールドとを含むルールを作成し、前記ルールを、前記隔離された環境で起動された前記スイッチプロセスに送信し、
    前記スイッチプロセスは、前記コントローラから前記フローの前記ルールを受信すると、前記ルールに基づいて、前記フローに関連付けられる1つまたは複数のパケットを処理する請求項10に記載の通信システム。
  18. 前記スイッチプロセスおよび前記コントローラプロセスの少なくとも一方は、
    暗号文の復号時に測定されたシステムインテグリティが、平文の暗号化時に測定されたシステムインテグリティであると判断した場合に、前記暗号文の平文への復号を可能にする制御を行うインテグリティ制御部を備えた請求項13に記載の通信システム。
  19. 前記コントローラに含まれる前記第1のディスパッチャは、第1のディスパッチルールとして、テナント情報を用いて、スイッチプロセスから関連するコントローラプロセスへのディスパッチを実行する、請求項13乃至17のいずれか1項に記載の通信システム。
  20. フローと、前記フローがディスパッチされるスイッチプロセスとの関連付けを定義するディスパッチルールに基づいて、スイッチで受信したパケットを、前記スイッチに含まれる関連するスイッチプロセスにディスパッチし、
    前記スイッチに含まれる複数のスイッチプロセスのうち前記関連するスイッチプロセスは対応するフローに対してスイッチ処理を行い、
    各スイッチプロセスは、前記スイッチプロセスごとに割り当てられた環境で実行され、
    各スイッチプロセスに配置される前記環境は、残りの1つ又は複数のスイッチプロセスに対して配置される1つ又は複数の環境の各々から隔離されている、通信方法。
  21. 前記スイッチプロセスから受信したメッセージを、前記スイッチプロセスと前記スイッチプロセスからのメッセージがディスパッチされるコントローラプロセスとの関連付けを規定するディスパッチルールに基づいて、関連するコントローラプロセスにディスパッチし、
    前記コントローラに含まれる複数のコントローラプロセスのうち前記関連するコントローラプロセスは、前記メッセージに基づき、前記スイッチプロセスに対して制御処理を実行し、
    前記コントローラプロセスの各々は、前記コントローラプロセスごとに割り当てられた環境で実行され、一つのコントローラプロセスに配置される前記環境は、他の1つ又は複数のコントローラプロセスに対して配置される1つ又は複数の環境の各々から隔離されている、請求項20に記載の通信方法。
  22. 前記スイッチは、受信したパケットをディスパッチするにあたり、前記受信したパケットのヘッダフィールド情報が示すフローがディスパッチルールに登録されていないと判断した場合に、
    前記フローのディスパッチルールの問い合わせを前記コントローラに送信し、
    前記コントローラは、前記スイッチから問い合わせを受信すると、前記フローのディスパッチルールを作成し、前記ディスパッチルールを前記スイッチに送信し、
    前記スイッチは、前記コントローラから送信された前記ディスパッチルールを受信すると、隔離された環境を作成し、必要に応じて前記隔離された環境でスイッチプロセスを起動し、前記コントローラに応答を送信し、
    前記コントローラは、前記スイッチから前記応答を受信すると、フローを扱うためのルールを作成し、前記ルールを、前記隔離された環境で起動されたスイッチプロセスに送信し、
    前記ルールは、パケットのヘッダフィールド情報と照合されるマッチフィールドと、一致するパケットの取り扱いを規定するアクションフィールドとを含み、
    前記スイッチは、前記コントローラから前記フローに対するルールを受信すると、前記ルールに基づいて、前記フローに関連する1つまたは複数のパケットを処理する請求項20または21に記載の通信方法。
  23. 前記スイッチプロセスおよび前記コントローラプロセスのうちの少なくとも1つは、インテグリティの測定を行い、インテグリティ制御部で、暗号文の復号時に測定されたシステムインテグリティが、平文の暗号化時に測定されたシステムインテグリティと同一であると判断した場合に、前記暗号文の平文への復号を可能にする制御を行う請求項21に記載の通信方法。
  24. 各々が、それぞれに対応するフローに対して通信処理を実行する複数の通信プロセスと、
    前記複数の通信プロセスの各々は、前記通信プロセスごとに割り当てられた環境で実行され、前記環境は、残りの1つ又は複数の通信プロセスに対して配置された1つ又は複数の環境の各々から隔離されており、
    さらに、
    ネットワークインタフェースからパケットを受信し、フローとディスパッチされる通信プロセスとの関連付けを定義するディスパッチルールに基づいて、前記パケットを関連する通信プロセスにディスパッチするディスパッチプロセスと、
    をコンピュータに実行させるプログラム。
  25. 前記通信プロセスは、
    ディスパッチャによってディスパッチされたパケットを受信し、前記パケットのヘッダフィールド情報と、フローを処理するためのルールとを照合し、照合結果に基づいて前記パケットを処理するスイッチプロセスを含み、
    前記ルールは、パケットのヘッダフィールド情報と照合されるマッチフィールドと、前記マッチフィールドと一致するパケットの処理を規定するアクションフィールドとを含む請求項24に記載のプログラム。
  26. 前記通信プロセスは、スイッチからのメッセージを受信すると、フローのパス上の各スイッチに適用される前記フローを処理するためのルールを生成し、生成したルールを、前記パス上の各スイッチに送信するコントローラプロセスを備え、
    前記ルールは、前記スイッチが受信したパケットのヘッダフィールド情報と照合されるマッチフィールドと、一致したパケットの前記スイッチによる取り扱いを規定するアクションフィールドとを含む請求項24に記載のプログラム。
JP2017559142A 2015-05-11 2015-05-11 通信装置、システム、方法、及びプログラム Active JP6569741B2 (ja)

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2018516000A true JP2018516000A (ja) 2018-06-14
JP6569741B2 JP6569741B2 (ja) 2019-09-04

Family

ID=53276219

Family Applications (1)

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

Country Status (3)

Country Link
US (1) US10601632B2 (ja)
JP (1) JP6569741B2 (ja)
WO (1) WO2016181423A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10699003B2 (en) * 2017-01-23 2020-06-30 Hysolate Ltd. Virtual air-gapped endpoint, and methods thereof
US10872145B2 (en) * 2017-10-25 2020-12-22 International Business Machines Corporation Secure processor-based control plane function virtualization in cloud systems

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8892878B2 (en) 2003-05-09 2014-11-18 Oracle America, Inc. Fine-grained privileges in operating system partitions
US20070174429A1 (en) 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US7738457B2 (en) * 2006-12-20 2010-06-15 Oracle America, Inc. Method and system for virtual routing using containers
US8336094B2 (en) 2008-03-27 2012-12-18 Juniper Networks, Inc. Hierarchical firewalls
US8516241B2 (en) * 2011-07-12 2013-08-20 Cisco Technology, Inc. Zone-based firewall policy model for a virtualized data center
WO2014160479A1 (en) * 2013-03-13 2014-10-02 Arizona Board Of Regents, A Body Corporate Of The State Of Arizona, Acting For And On Behalf Of Arizone State University Systems and apparatuses for a secure mobile cloud framework for mobile computing and communication
EP3072263B1 (en) * 2013-11-18 2017-10-25 Telefonaktiebolaget LM Ericsson (publ) Multi-tenant isolation in a cloud environment using software defined networking
US20150180769A1 (en) * 2013-12-20 2015-06-25 Alcatel-Lucent Usa Inc. Scale-up of sdn control plane using virtual switch based overlay
US10367725B2 (en) * 2013-12-21 2019-07-30 Hewlett Packard Enterprise Development Lp Network programming
EP3162017B1 (en) * 2014-06-30 2021-11-24 Alcatel Lucent Security in software defined network
US20170223060A1 (en) * 2014-08-28 2017-08-03 Hewlett Packard Enterprise Development Lp Security control
US10425282B2 (en) * 2014-11-28 2019-09-24 Hewlett Packard Enterprise Development Lp Verifying a network configuration

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CHRISTIAN ESTEVE ROTHENBERG: "RouteFlow: Virtualized IP Routing Services in OpenFlow networks", CHANGE & OFELIA SUMMER SCHOOL, JPN6018030765, 13 May 2014 (2014-05-13) *
JAN MEDVED ET AL.: "OpenDaylight: Towards a Model-Driven SDN Controller Architecture", PROCEEDINGS OF IEEE INTERNATIONAL SYMPOSIUM ON A WORLD OF WIRELESS, MOBILE AND MULTIMEDIA NETWORKS 2, JPN6018030762, 19 June 2014 (2014-06-19) *
JONATHAN M. MCCUNE, ET AL.: "TrustVisor: Efficient TCB Reduction and Attestation", 2010 IEEE SYMPOSIUM ON SECURITY AND PRIVACY, JPN6018030764, 16 May 2010 (2010-05-16) *

Also Published As

Publication number Publication date
JP6569741B2 (ja) 2019-09-04
US10601632B2 (en) 2020-03-24
WO2016181423A1 (en) 2016-11-17
US20180159716A1 (en) 2018-06-07

Similar Documents

Publication Publication Date Title
JP7009014B2 (ja) ネットワーク制御システムのパブリッククラウドへの拡張
US11893409B2 (en) Securing a managed forwarding element that operates within a data compute node
JP7273899B2 (ja) サービスルール処理のための、サービスノードへのリモートデバイス管理属性の分配
US10805330B2 (en) Identifying and handling threats to data compute nodes in public cloud
CN106575338B (zh) 加密体系架构
US8856518B2 (en) Secure and efficient offloading of network policies to network interface cards
US11297070B2 (en) Communication apparatus, system, method, and non-transitory medium
US10810034B2 (en) Transparent deployment of meta visor into guest operating system network traffic
US20190250938A1 (en) Computer system architecture and computer network infrastructure including a plurality of such computer system architectures
EP2920940B1 (en) Method and device for data flow processing
US11252183B1 (en) System and method for ransomware lateral movement protection in on-prem and cloud data center environments
Bian et al. A survey on software-defined networking security
JP6569741B2 (ja) 通信装置、システム、方法、及びプログラム
Yu et al. Security: a Killer App for SDN
US11916957B1 (en) System and method for utilizing DHCP relay to police DHCP address assignment in ransomware protected network
Vallese Guidelines for Reference Monitors in Embedded INFOSEC Applications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171110

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180821

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181022

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190326

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190524

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190722

R150 Certificate of patent or registration of utility model

Ref document number: 6569741

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150