(58)【調査した分野】(Int.Cl.,DB名)
ファイアウォールクラスターにおける各vFWノードがネットワークアドレス変換(NAT)サービス及び仮想プライベートネットワーク(VPN)サービスの機能を有しない場合、
スイッチから送信されたサービスフローパケットを受信すると、前記SDNコントローラーは、ハッシュアルゴリズムに従って前記各vFWノードの中から1つのvFWノードを選択するとともに、当該サービスフローパケットを選択されたvFWノードに転送するように前記スイッチに通知することをさらに含むことを特徴とする請求項1に記載の方法。
ファイアウォールクラスターにおける各vFWノードがネットワークアドレス変換(NAT)サービス及び仮想プライベートネットワーク(VPN)サービスの機能を有する場合、
前記SDNコントローラーは、NATアドレスプールにおけるNATアドレスを各vFWノードに割り当て、
スイッチから送信されたサービスフローパケットを受信すると、前記SDNコントローラーは、前記サービスフローパケットを解析してVPNパケットを取得し、前記VPNパケットの宛先アドレスに基づいて対応するvFWノードを検索するとともに、対応するフローエントリを生成して前記スイッチに送信し、前記宛先アドレスはNATアドレスであり、前記生成されたフローエントリは、前記VPNパケットを前記検索されたvFWノードに転送するように前記スイッチに指示するものであることをさらに含むことを特徴とする請求項1に記載の方法。
SDNコントローラーであって、プロセッサーと不揮発性機械可読記憶媒体とを含むSDNコントローラーにおいて、前記不揮発性機械可読記憶媒体には前記プロセッサーにより実行される機械可読命令が記憶され、
ファイアウォールクラスターにおける各仮想ファイアウォール(vFW)ノードの負荷をリアルタイムに監視し、1つ以上のvFWノードの負荷が予め設定された第1閾値よりも高いことを検出すると、新たなvFWノードを作成し、
すべての監視されるvFWノードを流れるサービスフローの中から移行対象の第1サービスフローを選択し、前記第1サービスフローの識別子と前記新たなvFWノードの識別子を前記すべての監視されるvFWノードに通知し、第1通知メッセージを受信した後、前記第1サービスフローに対応する第1フローエントリを更新し、更新後の第1フローエントリをスイッチに送信し、前記第1通知メッセージは、前記第1サービスフローが流れるvFWノードが前記第1サービスフローのセッション情報を前記新たなvFWノードに同期させたことを示し、前記更新後の第1フローエントリは、受信した前記第1サービスフローを前記新たなvFWノードに送信するように前記スイッチに指示するものである操作を実現し、
1つ以上のvFWノードの負荷が予め設定された第2閾値よりも低いことを検出すると、前記プロセッサーは、前記機械可読命令を実行して、
前記負荷が予め設定された第2閾値よりも低いvFWノードの中から除去対象のvFWノードを選択し、
前記除去対象のvFWノードを流れる第2サービスフローを移行対象のサービスフローとして特定し、前記第2サービスフローの移行先vFWノードを特定するとともに、前記第2サービスフローの識別子及び前記移行先vFWノードの識別子を前記除去対象のvFWノードに送信し、第2通知メッセージを受信した後、前記第2サービスフローに対応する第2フローエントリを更新し、更新後の第2フローエントリを前記スイッチに送信し、前記第2通知メッセージは、前記除去対象のvFWノードが前記第2サービスフローのセッション情報を前記移行先vFWノードに同期させたことを示し、前記更新後の第2フローエントリは、受信した前記第2サービスフローを前記移行先vFWノードに送信するように前記スイッチに指示するものである操作を実現することを特徴とするSDNコントローラー。
ファイアウォールクラスターにおける各vFWノードがネットワークアドレス変換(NAT)サービス及び仮想プライベートネットワーク(VPN)サービスの機能を有しない場合、前記プロセッサーは、前記機械可読命令を実行して、
スイッチから送信されたサービスフローパケットを受信すると、ハッシュアルゴリズムに従って前記各vFWノードの中から1つのvFWノードを選択するとともに、当該サービスフローパケットを選択されたvFWノードに転送するように前記スイッチに通知する操作を実現することを特徴とする請求項6に記載のSDNコントローラー。
ファイアウォールクラスターにおける各vFWノードがネットワークアドレス変換(NAT)サービス及び仮想プライベートネットワーク(VPN)サービスの機能を有する場合、前記プロセッサーは、前記機械可読命令を実行して、
NATアドレスプールにおけるNATアドレスを各vFWノードに割り当て、
スイッチから送信されたサービスフローパケットを受信すると、前記サービスフローパケットを解析してVPNパケットを取得し、前記VPNパケットの宛先アドレスに基づいて対応するvFWノードを検索するとともに、対応するフローエントリを生成して前記スイッチに送信し、前記宛先アドレスはNATアドレスであり、前記生成されたフローエントリは、前記VPNパケットを前記検索されたvFWノードに転送するように前記スイッチに指示するものである操作を実現することを特徴とする請求項6に記載のSDNコントローラー。
【発明を実施するための形態】
【0007】
スタック技術によって複数台の物理的なファイアウォール装置を積み重ねて論理的なファイアウォール装置を構築する場合、物理的なファイアウォール装置の台数及びこれらの物理的なファイアウォール装置を格納するマシンルームのスペースを事前に考慮する必要がある。そして、スタックメンバーを追加、削除する過程において、スタックポートの設定を変更する必要があり、例えば、スタックポートの設定を追加、削除する必要がある。
【0008】
以下、図面を参照しながら、本願の実施例を説明する。
【0009】
図1は、本願の実施例によるファイアウォールクラスタの実現方法のフローチャートである。
図1に示すように、この方法のステップは以下の通りである。
【0010】
ステップ101において、SDNコントローラは、ファイアウォールクラスタにおける各仮想ファイアウォール(Virtual FireWall、vFW)ノードの負荷をリアルタイムに監視する。ファイアウォールクラスタは、SDNコントローラと1つ以上のvFWノードとスイッチとを含み、各vFWノードは、前記スイッチの等コストネクストホップである。
【0011】
ステップ102において、SDNコントローラは、1つ以上のvFWノードの負荷が予め設定された第1閾値よりも高いことを検出すると、新たなvFWノードを作成する。
【0012】
ステップ103において、SDNコントローラは、監視されるvFWノードを流れるフローの中から移行対象の第1フローを選択し、第1フローに対応する第1フローエントリを更新し、更新後の第1フローエントリをスイッチに送信する。更新後の第1フローエントリは、第1フローを新たなvFWノードに送信するようにスイッチに指示するものである。
【0013】
本願の実施例において、第1フローに対応する第1フローエントリを更新する前に、この方法はさらに以下のことを含む。
【0014】
SDNコントローラは、第1フローの識別子及び新たなvFWノードの識別子を監視されるvFWノードに送信する。
【0015】
SDNコントローラは、第1フローが流れるvFWノードから送信された第1通知メッセージを受信する。第1通知メッセージは、第1フローが流れるvFWノードが第1フローに対応するセッション情報を新たなvFWノードに同期させた後に送信したものである。
【0016】
本願の実施例において、第1フローに対応する第1フローエントリを更新することは以下のことを含む。
【0017】
第1フローエントリのネクストホップを新たなvFWノードに変更する。
【0018】
本願の実施例において、SDNコントローラは、ファイアウォールクラスタにおける各vFWノードの負荷をリアルタイムに監視した後、この方法はさらに以下のことを含む。
【0019】
SDNコントローラは、1つ以上のvFWノードの負荷が予め設定された第2閾値よりも低いことを検出すると、負荷が予め設定された第2閾値よりも低いvFWノードの中から除去対象のvFWノードを選択し、除去対象のvFWノードを流れる第2フローを移行対象のフローとして特定するとともに、第2フローの移行先vFWノードを特定する。
【0020】
SDNコントローラは、第2フローに対応する第2フローエントリを更新し、更新後の第2フローエントリをスイッチに送信する。更新後の第2フローエントリは、第2フローを移行先vFWノードに送信するようにスイッチに指示するものである。
【0021】
本願の実施例において、第2フローに対応する第2フローエントリを更新する前に、この方法はさらに以下のことを含む。
【0022】
SDNコントローラは、第2フローの識別子及び移行先vFWノードの識別子を除去対象のvFWノードに送信する。
【0023】
SDNコントローラは、除去対象のvFWノードから送信された第2通知メッセージを受信する。第2通知メッセージは、除去対象のvFWノードが第2フローに対応するセッション情報を移行先vFWノードに同期させた後に送信したものである。
【0024】
本願の実施例において、第2フローに対応する第2フローエントリを更新することは以下のことを含む。
【0025】
第2フローエントリのネクストホップを移行先vFWノードに更新する。
【0026】
本願の実施例において、ファイアウォールクラスタにおける各vFWノードがネットワークアドレス変換(Network Address Translation、NAT)サービス及び仮想プライベートネットワーク(Virtual Private Network、VPN)サービスの機能を有しない場合、方法はさらに以下のことを含む。
【0027】
スイッチから送信されたフローパケットを受信すると、SDNコントローラは、ハッシュアルゴリズムに従って複数のvFWノードの中から1つのvFWノードを選択するとともに、当該フローパケットを選択されたvFWノードに転送するようにスイッチに通知する。
【0028】
本願の実施例において、ファイアウォールクラスタにおける各vFWノードがNATサービス及びVPNサービスの機能を有する場合、方法はさらに以下のことを含む。
【0029】
SDNコントローラは、NATアドレスプールにおけるNATアドレスをvFWノードに割り当てる。
【0030】
スイッチから送信されたフローパケットを受信すると、SDNコントローラは、フローパケットを解析してVPNパケットを取得し、VPNパケットの宛先アドレスに基づいて対応するvFWノードを検索するとともに、フローエントリを生成し、生成されたフローエントリをスイッチに送信する。ここで、宛先アドレスはNATアドレスであり、生成されたフローエントリは、VPNパケットを検索されたvFWノードに転送するようにスイッチに指示するものである。
【0031】
図2は、本願の実施例による、ファイアウォールクラスタを配置する方法のフローチャートである。
図2に示すように、この方法のステップは以下の通りである。
【0032】
ステップ201において、ファイアウォールクラスタが設けられるネットワークにおいてSDNコントローラ(SDN Controller)を配置し、SDNコントローラは、フローマネージャ(Flow Manager)とNFVマネージャ(NFV Manager)の機能を有効にする。
【0033】
ステップ202において、NFVマネージャは、設けられるファイアウォールクラスタの性能に応じて、NFV技術によって複数のvFWノードを作成する。各vFWノードのアップリンクポートとダウンリンクポートはいずれもスイッチにバインドされ、各vFWノードはスイッチの等コストネクストホップとなる。また、スイッチはSDNネットワーク装置の機能を有効にする。SDNネットワーク装置の機能は、オープンフロー転送機能を含む。
【0034】
本願の実施例において、vFWノードの数はファイアウォールクラスタの性能により決められる。
【0035】
図3は、本願の実施例によるファイアウォールクラスタの模式図である。
図3に示すように、このファイアウォールクラスタは、SDNコントローラとn個のvFWノードとスイッチとを含み、ここでnは正の整数である。スイッチは、イントラネットとエクストラネットとを接続し、各vFWノードはスイッチの等コストネクストホップである。SDNコントローラはフローマネージャとNFVマネージャの機能を有効にする。
【0036】
本願の実施例において、ファイアウォールクラスタにより提供されるサービスに従って、ファイアウォールクラスタにおけるファイアウォールは2つのタイプに分けられる。
【0037】
第1のタイプは、NATサービス無しかつVPNサービス無しのファイアウォールである。
【0038】
NATサービス無しかつVPNサービス無しのファイアウォールは、主にファイアウォール攻撃防御、ドメイン間ポリシーなどのサービスを処理する。また、スイッチは、同一のフローの双方向パケットをともに同一のvFWノードに転送することができる。
【0039】
第2のタイプは、NATサービス有りかつVPNサービス有りのファイアウォールである。
【0040】
NATサービス有りかつVPNサービス有りのファイアウォールは、NATサービス、VPNサービスを分割してvFWノードに割り当てる必要がある。
【0041】
図4は、本願の実施例による、NATサービス無しかつVPNサービス無しのファイアウォールを実現する際におけるイントラネットからエクストラネットへのフローパケットの転送方法のフローチャートである。
図4に示すように、この方法のステップは以下の通りである。
【0042】
ステップ400において、ファイアウォールクラスタにおける各vFWノードは、等コスト・マルチパス・ルーティング(Equal−Cost Multi−Path routing、ECMP)技術によってその自体のアップリンク方向及びダウンリンク方向のルートをスイッチに送信する。スイッチは、各vFWノードから送信されたアップリンク方向及びダウンリンク方向のルートを受信し、各vFWノードが自スイッチのアップリンク方向及びダウンリンク方向の等コストネクストホップである旨の情報をSDNコントローラに送信する。
【0043】
スイッチは、アップリンク方向のフローを受信したか、それともダウンリンク方向のフローを受信したかを問わず、当該フローを先ずファイアウォールクラスタに送信する必要がある。ファイアウォールクラスタにおける各vFWノードは、スイッチのアップリンク方向及びダウンリンク方向の等コストネクストホップである。
【0044】
ステップ401において、スイッチは、イントラネットからの、ソースIPアドレスがIP_Aであり、宛先IPアドレスがIP_Bであるフローパケットを受信する。そして、スイッチは、フローパケットの宛先IPアドレスに基づいて、対応するフローエントリをローカルに検索し、検索されなかった場合、当該フローパケットをPacket inパケット中にカプセル化してSDNコントローラに送信する。
【0045】
ここで、Packet inパケットのソースアドレスは、スイッチのアドレスであり、宛先アドレスはSDNコントローラのアドレスである。
【0046】
ステップ402において、SDNコントローラは、当該Packet inパケットを受信し、当該Packet inパケットのソースアドレスがスイッチのアドレスであることを発見する。そして、ローカルに記録されている、ファイアウォールクラスタにおける各vFWノードが当該スイッチのアップリンク方向及びダウンリンク方向の等コストネクストホップである旨の情報に基づいて当該スイッチが等コストネクストホップを有することを確認すると、Packet inパケットを解析して元のフローパケットを取得し、予め設定されたハッシュアルゴリズムに従って「IP_A、IP_B、ファイアウォールクラスタにおけるvFWノードの数」に対してハッシュ演算を実行し、ハッシュ演算の結果をファイアウォールクラスタにおける1つのvFWノードにマッピングする。そして、当該vFWノードを当該フローパケットを転送するネクストホップとし、当該フローパケットのためにフローエントリを生成し、当該フローエントリをPacket outパケット中にカプセル化して当該スイッチに送信する。
【0047】
本願の実施例において、ハッシュアルゴリズムにおける2つのキーパラメータであるIP_AとIP_Bが順番に記入される。
【0048】
フローエントリの内容は、フローパケットの宛先IPアドレス(すなわち、IP_B)及びネクストホップ情報を含む。
【0049】
ステップ403において、スイッチは、当該Packet outパケットを受信し、当該Packet outパケットを解析して、SDNコントローラから送信されたフローエントリを取得して格納し、当該フローエントリにおけるネクストホップに基づいて、上記フローパケットを当該ネクストホップに対応するvFWノードに送信する。
【0050】
ステップ404において、vFWノードは、当該フローパケットを受信し、当該フローパケットに対してファイアウォールサービス処理を行い、当該フローパケットに対応するセッション情報を生成する。そして、当該フローパケットがフィルタリングされていなければ、当該フローパケットを当該スイッチに返す。
【0051】
セッション情報は、フローパケットのソースIPアドレス、ソースIPポート番号、宛先IPアドレス、宛先IPポート番号、プロトコル番号、ステータスなどの情報を含む。
【0052】
ステップ405において、スイッチは、vFWノードが返したフローパケットを受信し、当該フローパケットをエクストラネットに転送する。
【0053】
図5は、本願の実施例による、NATサービス無しかつVPNサービス無しのファイアウォールを実現する際におけるエクストラネットからイントラネットへのフローパケットの転送方法のフローチャートである。
図5に示すように、この方法のステップは以下の通りである。
【0054】
ステップ500において、ファイアウォールクラスタにおける各vFWノードは、ECMP技術によってその自体のアップリンク方向及びダウンリンク方向のルートをスイッチに送信する。そして、スイッチは、各vFWノードから送信されたアップリンク方向及びダウンリンク方向のルートを受信し、各vFWノードが自スイッチのアップリンク方向及びダウンリンク方向の等コストネクストホップである旨の情報をSDNコントローラに送信する。
【0055】
ステップ501において、スイッチは、エクストラネットからの、ソースIPアドレスがIP_Bであり、宛先IPアドレスがIP_Aであるフローパケットを受信する。そして、スイッチは、当該フローパケットの宛先IPアドレスに基づいて、対応するフローエントリをローカルに検索し、検索されなかった場合、当該フローパケットをPacket inパケット中にカプセル化してSDNコントローラに送信する。
【0056】
ステップ502において、SDNコントローラは、当該Packet inパケットを受信し、当該Packet inパケットのソースアドレスがスイッチのアドレスであることを発見する。そして、ローカルに記録されている、ファイアウォールクラスタにおける各vFWノードが当該スイッチのアップリンク方向及びダウンリンク方向の等コストネクストホップである旨の情報に基づいて当該スイッチが等コストネクストホップを有することを確認すると、Packet inパケットを解析して元のフローパケットを取得し、予め設定されたハッシュアルゴリズムに従って「IP_A、IP_B、ファイアウォールクラスタにおけるvFWノードの数」に対してハッシュ演算を実行し、ハッシュ演算の結果をファイアウォールクラスタにおける1つのvFWノードにマッピングする。そして、当該vFWノードを当該フローパケットを転送するネクストホップとし、当該フローパケットのためにフローエントリを生成し、当該フローエントリをPacket outパケット中にカプセル化して当該スイッチに送信する。
【0057】
本願の実施例において、ハッシュアルゴリズムにおける2つのキーパラメータであるIP_AとIP_Bが順番に記入される。
【0058】
このステップ502におけるハッシュ演算とステップ402におけるハッシュ演算とは完全に同一であるため、この2つのステップにおけるハッシュ演算の結果は同一である。これにより、同一のフローの順方向パケット、逆方向パケットが同一のvFWノードに転送されることを確保できる。
【0059】
ステップ503において、スイッチは、当該Packet outパケットを受信し、当該Packet outパケットを解析して、SDNコントローラから送信されたフローエントリを取得して格納し、当該フローエントリにおけるネクストホップに基づいて、上記フローパケットを当該ネクストホップに対応するvFWノードに送信する。
【0060】
ステップ504において、vFWノードは、当該フローパケットを受信し、当該フローパケットに対してファイアウォールサービス処理を行い、当該フローパケットに対応するセッション情報を生成する。そして、当該フローパケットがフィルタリングされていなければ、当該フローパケットを当該スイッチに返す。
【0061】
ステップ505において、スイッチは、vFWノードが返したフローパケットを受信し、当該フローパケットをイントラネットに転送する。
【0062】
図6は、本願の実施例による、NATサービス有りかつVPNサービス有りのファイアウォールを実現する際におけるイントラネットからエクストラネットへのフローパケットの転送方法のフローチャートである。
図6に示すように、この方法のステップは以下の通りである。
【0063】
ステップ600において、ファイアウォールクラスタにおけるvFWノードと、当該vFWノードに対応するエクストラネットパートナーとの間にVPNトンネルを予め確立する。
【0064】
パートナーとは、エクストラネットにおけるVPNをいう。
【0065】
各vFWノードは1つ以上のパートナーとVPNトンネルを確立することができる。一般的に、vFWノードは、性能が高ければ高いほど、確立できるVPNトンネルが多くなる。1つのパートナーは1つのvFWノードのみとVPNトンネルを確立することができる。
【0066】
ステップ601において、SDNコントローラにNATアドレスプールを予め配置し、SDNコントローラのNFVマネージャは、NATアドレスプール中のリソースを分割してファイアウォールクラスタにおける各vFWノードに割り当てる。そして、割り当てたNATアドレスプール中のリソースを対応するvFWノードに送信し、各vFWノードに割り当てられたNATアドレスプール中のリソースに基づいて、ポリシーベースルーティング(Policy Basic Routing、PBR)を配置する。
【0067】
各vFWノードの性能に応じてNATアドレスプール中のリソースの分割及び割り当てを行うことができる。vFWノードは、性能が高ければ高いほど、割り当てられるNATアドレスプールにおけるNATアドレスが多くなる。
【0068】
PBRは、NATアドレスと、当該NATアドレスに対応するネクストホップ情報とを含み、NATアドレスに対応するネクストホップは、当該NATアドレスが割り当てられたvFWノードである。
【0069】
ステップ602において、スイッチは、イントラネットからの、ソースIPアドレスがIP_Aであり、宛先IPアドレスがIP_NAT_Bであるフローパケットを受信する。そして、スイッチは、パケットの宛先IPアドレスに基づいて、対応するフローエントリをローカルに検索し、検索されなかった場合、当該フローパケットをPacket inパケット中にカプセル化してSDNコントローラに送信する。
【0070】
ここで、IP_NAT_Bは、IP_Bに対してNAT処理を行って得られるアドレスである。
【0071】
ステップ603において、SDNコントローラのフローマネージャは、当該Packet inパケットを受信し、当該Packet inパケットを解析して元のフローパケットを取得する。そして、NFVマネージャへフローパケットの宛先IPアドレスIP_NAT_Bに対応するネクストホップを問い合わせ、当該フローパケットのためにフローエントリを生成し、当該フローエントリをPacket outパケット中にカプセル化してスイッチに送信する。
【0072】
フローマネージャがNFVマネージャへフローパケットの宛先IPアドレスIP_NAT_Bに対応するネクストホップを問い合わせると、NFVマネージャは、ローカルに配置されているPBRの中からIP_NAT_Bに対応するネクストホップを検索し、当該ネクストホップは1つのvFWノードに向けられる。
【0073】
ステップ604において、スイッチは、当該Packet outパケットを受信し、当該Packet outパケットを解析してフローエントリを取得して格納し、当該フローエントリにおけるネクストホップに基づいて、当該フローパケットを当該ネクストホップに対応するvFWノードに送信する。
【0074】
ステップ605において、vFWノードは、当該フローパケットを受信し、その自体のNATアドレスプールに基づいてパケットに対してNAT処理を行い、かつ当該フローパケットに対してファイアウォール処理を行う。そして、当該フローパケットがフィルタリングされていなければ、当該フローパケットをVPNトンネルカプセル化し、カプセル化されたフローパケットをスイッチに返す。
【0075】
ステップ606において、スイッチは、vFWノードが返したフローパケットを受信し、当該フローパケットをエクストラネットに転送する。
【0076】
図7は、本願の実施例による、NATサービス有りかつVPNサービス有りのファイアウォールを実現する際におけるエクストラネットからイントラネットへのフローパケットの転送方法のフローチャートである。
図7に示すように、この方法のステップは以下の通りである。
【0077】
ステップ700において、ファイアウォールクラスタにおけるvFWノードと、当該vFWノードに対応するエクストラネットパートナーとの間にVPNトンネルを予め確立する。
【0078】
パートナーとは、エクストラネットにおけるVPNをいう。
【0079】
各vFWノードは1つ以上のパートナーとVPNトンネルを確立することができる。一般的に、vFWノードは、性能が高ければ高いほど、確立できるVPNトンネルが多くなる。1つのパートナーは1つのvFWノードのみとVPNトンネルを確立することができる。
【0080】
ステップ701において、SDNコントローラにNATアドレスプールを予め配置し、SDNコントローラのNFVマネージャは、NATアドレスプール中のリソースを分割してファイアウォールクラスタにおける各vFWノードに割り当てる。そして、割り当てられたNATアドレスプール中のリソースを対応するvFWノードに送信し、各vFWノードに割り当てられたNATアドレスプール中のリソースに基づいて、PBRを配置する。
【0081】
各vFWノードの性能に応じてNATアドレスプール中のリソースの分割及び割り当てを行うことができる。vFWノードは、性能が高ければ高いほど、割り当てられるNATアドレスプールにおけるNATアドレスが多くなる。
【0082】
PBRは、NATアドレスと、当該NATアドレスに対応するネクストホップ情報とを含み、NATアドレスに対応するネクストホップは、当該NATアドレスが割り当てられたvFWノードである。
【0083】
ステップ702において、エクストラネットのパートナーは、イントラネットにアクセスするための、ソースIPアドレスがIP_Bであり、宛先IPアドレスがIP_NAT_Aであるフローパケットを送信し、当該フローパケットはエクストラネットのVPNゲートウェイに到達する。VPNゲートウェイが当該フローパケットをVPNトンネルカプセル化した後、当該VPNトンネルカプセル化されたフローパケット(VPNパケットと略称する)はスイッチに到達する。スイッチは、当該VPNパケットの宛先IPアドレスに基づいて、対応するフローエントリをローカルに検索し、検索されなかった場合、当該VPNパケットをPacket inパケット中にカプセル化してSDNコントローラに送信する。
【0084】
ここで、IP_NAT_Aは、NATアドレスであり、つまりIP_Aに対してNAT処理を行って得られるIPアドレスである。
【0085】
ステップ703において、SDNコントローラのフローマネージャは、当該Packet inパケットを受信し、パケットを解析してVPNパケットを取得する。そして、NFVマネージャへ当該VPNパケットの宛先IPアドレスIP_NAT_Aに対応するネクストホップを問い合わせ、フローエントリを生成し、当該フローエントリをPacket outパケット中にカプセル化してスイッチに送信する。
【0086】
ステップ704において、スイッチは、当該Packet outパケットを受信し、当該パケットを解析して当該フローエントリを取得して格納し、当該フローエントリにおけるネクストホップに基づいて、当該VPNパケットを当該ネクストホップに対応するvFWノードに送信する。
【0087】
ステップ705において、vFWノードは、当該VPNパケットを受信し、当該VPNパケットをVPNトンネルデカプセル化して元のフローパケットを取得し、元のフローパケットに対してNAT処理を行い、かつ当該フローパケットに対してファイアウォール処理を行う。そして、当該フローパケットがフィルタリングされていなければ、当該フローパケットをスイッチに返す。
【0088】
ステップ706において、スイッチは、当該フローパケットを受信し、当該フローパケットをイントラネットに転送する。
【0089】
図8は、本願の実施例による、NATサービス無しかつVPNサービス無しのファイアウォールを実現する際のファイアウォールクラスタの拡張方法のフローチャートである。
図8に示すように、この方法のステップは以下の通りである。
【0090】
ステップ801において、SDNコントローラのNFVマネージャは、ファイアウォールクラスタにおける各vFWノードの負荷をリアルタイムに監視する。
【0091】
本願の実施例において、SDNコントローラのNFVマネージャは、vFWノードのCPU、メモリ、帯域幅、接続数のいずれか1つまたは任意の組み合わせを監視することによってvFWノードの負荷を監視することができる。
【0092】
ステップ802において、SDNコントローラのNFVマネージャは、1つ以上のvFWノードの負荷が予め設定された第1閾値よりも高いことを検出すると、NFV技術によって新たなvFWノードを作成し、新たなvFWノードをファイアウォールクラスタに追加する。
【0093】
ステップ803において、SDNコントローラのフローマネージャは、予め設定されたフロー移行ルールに基づいて、ファイアウォールクラスタにおける監視されるvFWノードから新たなvFWノードへ移行するフロー(第1フローと称する)を特定し、移行すべき第1フローの識別子(例えば、ソースIPアドレスと宛先IPアドレス)及び新たなvFWノードの識別子をすべての監視されるvFWノードに通知する。
【0094】
本願の実施例において、予め設定されたハッシュアルゴリズムに従って、監視されるvFWノードのフローの中から移行すべきフローを選択することができる。
【0095】
ステップ804において、移行すべき第1フローが流れるvFWノードは、SDNコントローラから送信された第1フローの識別子に基づいて、第1フローに対応するセッション情報を新たなvFWノードに同期させ、同期が完了した後、セッション同期完了の通知メッセージ(第1通知メッセージと称する)をSDNコントローラに送信する。
【0096】
ステップ805において、SDNコントローラのフローマネージャは、移行すべき第1フローが流れるvFWノードから送信された第1通知メッセージを受信し、移行すべき第1フローのフローエントリを更新し、更新後のフローエントリをスイッチに送信する。
【0097】
本願の実施例において、移行すべき第1フローのフローエントリを更新するとは、移行すべき第1フローのフローエントリのネクストホップを新たなvFWノードに変更することである。これによって、スイッチは、移行すべき第1フローを受信すると、当該移行すべき第1フローを新たなvFWノードに送信することができる。
【0098】
図9は、本願の実施例による、NATサービス無しかつVPNサービス無しのファイアウォールを実現する際のファイアウォールクラスタの縮小方法のフローチャートである。
図9に示すように、この方法のステップは以下の通りである。
【0099】
ステップ901において、SDNコントローラのNFVマネージャは、ファイアウォールクラスタにおける各vFWノードの負荷をリアルタイムに監視する。
【0100】
本願の実施例において、SDNコントローラのNFVマネージャは、vFWノードのCPU、メモリ、帯域幅、接続数のいずれか1つまたは任意の組み合わせを監視することによってvFWノードの負荷を監視することができる。
【0101】
ステップ902において、SDNコントローラのNFVマネージャは、1つ以上のvFWノードの負荷が予め設定された第2閾値よりも低いことを検出すると、負荷が予め設定された第2閾値よりも低いvFWノードの中から1つのvFWノードを除去対象のvFWノードとして選択する。
【0102】
一般的に、負荷が最も低いvFWノードを除去対象のvFWノードとして選択する。
【0103】
ステップ903において、SDNコントローラのフローマネージャは、除去対象のvFWノードのフロー(第2フローと称する)をファイアウォールクラスタにおけるその他のvFWノード(すなわち、移行先vFWノード)に移行させることを決定し、当該第2フローの識別子及び当該第2フローの移行先vFWノードの識別子を除去対象のvFWノードに送信する。
【0104】
本願の実施例において、予め設定されたハッシュアルゴリズムに従って、ファイアウォールクラスタにおいて除去対象のvFWノード以外のvFWノードの中から上記移行先vFWノードを選択することができる。
【0105】
ステップ904において、除去対象のvFWノードは、SDNコントローラから送信された当該第2フローの識別子及び当該第2フローの移行先vFWノードの識別子に基づいて、当該第2フローのセッション情報を移行先vFWノードに同期させ、同期が完了した後、セッション同期完了の通知メッセージ(第2通知メッセージと称する)をSDNコントローラに送信する。
【0106】
ステップ905において、SDNコントローラのフローマネージャは、除去対象のvFWノードから送信された第2通知メッセージを受信し、移行すべき第2フローのフローエントリを更新し、更新後のフローエントリをスイッチに送信する。
【0107】
本願の実施例において、移行すべき第2フローのフローエントリを更新するとは、移行すべき第2フローのフローエントリのネクストホップを第2フローの移行先vFWノードに変更することである。
【0108】
本願の実施例において、NFV技術によって新たなvFWノードを作成することにより、ファイアウォールクラスタの自動配置を実現することができる。また、vFWノードのアップリンクポートとダウンリンクポートをいずれもSDNネットワーク装置にバインドすることにより、各vFWノードがSDNネットワーク装置のアップリンク方向及びダウンリンク方向の等コストネクストホップとなるようにする。これによって、アップリンクパケットとダウンリンクパケットはSDNネットワーク装置により各vFWノードに均一に転送されることが可能となる。
【0109】
本願の実施例において、SDNコントローラは、ファイアウォールクラスタにおける各vFWノードの負荷をリアルタイムに監視し、1つ以上のvFWノードの負荷が予め設定された第1閾値よりも高いことを検出すると、新たなvFWノードを作成してファイアウォールクラスタに追加し、すべての監視されるvFWノードのフローの中から移行対象の第1フローを選択し、第1フローを新たなvFWノードに移行させる。これによって、ファイアウォールクラスタの自動拡張を実現することができる。1つ以上のvFWノードの負荷が予め設定された第2閾値よりも低いことを検出すると、1つのvFWノードを選択してファイアウォールクラスタから除去し、これによって、ファイアウォールクラスタの自動縮小を実現することができる。
【0110】
図10は、本願の実施例によるファイアウォールクラスタの実現装置の構成の模式図である。この装置はSDNコントローラに位置される。SDNコントローラは1つ以上のvFWノード及びスイッチとともにファイアウォールクラスタを構成し、各vFWノードはスイッチの等コストネクストホップである。
図10に示すように、当該装置は、主にNFV管理モジュール1001とフロー管理モジュール1002とを含む。
【0111】
NFV管理モジュール1001は、ファイアウォールクラスタにおける各vFWノードの負荷をリアルタイムに監視し、1つ以上のvFWノードの負荷が予め設定された第1閾値よりも高いことを検出すると、新たなvFWノードを作成する。
【0112】
フロー管理モジュール1002は、NFV管理モジュール1001が新たなvFWノードを作成すると、すべての監視されるvFWノードのフローの中から移行対象の第1フローを選択し、第1フローに対応する第1フローエントリを更新し、更新後の第1フローエントリをスイッチに送信する。更新後の第1フローエントリは、第1フローを新たなvFWノードに送信するようにスイッチに指示するものである。
【0113】
本願の実施例において、フロー管理モジュール1002は、第1フローに対応する第1フローエントリを更新する前に、以下のことも行う。
【0114】
第1フローの識別子及び新たなvFWノードの識別子をすべての監視されるvFWノードに送信し、第1フローが流れるvFWノードから送信された第1通知メッセージを受信する。第1通知メッセージは、第1フローが流れるvFWノードが第1フローに対応するセッション情報を新たなvFWノードに同期させた後に送信したものである。
【0115】
本願の実施例において、フロー管理モジュール1002は、第1フローに対応する第1フローエントリを更新する際に、以下のことを行う。
【0116】
第1フローエントリのネクストホップを新たなvFWノードに変更する。
【0117】
本願の実施例において、NFV管理モジュール1001は、1つ以上のvFWノードの負荷が予め設定された第2閾値よりも低いことを検出すると、負荷が予め設定された第2閾値よりも低いvFWノードの中から除去対象のvFWノードを選択することも行う。
【0118】
また、フロー管理モジュール1002は、NFV管理モジュール1001が除去対象のvFWノードを選択すると、除去対象のvFWノードの第2フローを移行対象のフローとして特定するとともに、第2フローの移行先vFWノードを特定する。また、フロー管理モジュール1002は、第2フローに対応する第2フローエントリを更新し、更新後の第2フローエントリをスイッチに送信する。更新後の第2フローエントリは、第2フローを移行先vFWノードに送信するようにスイッチに指示するものである。
【0119】
本願の実施例において、フロー管理モジュール1002は、第2フローに対応する第2フローエントリを更新する前に、以下のことも行う。
【0120】
第2フローの識別子及び移行先vFWノードの識別子を除去対象のvFWノードに送信し、除去対象のvFWノードから送信された第2通知メッセージを受信する。第2通知メッセージは、除去対象のvFWノードが第2フローに対応するセッション情報を移行先vFWノードに同期させた後に送信したものである。
【0121】
本願の実施例において、フロー管理モジュール1002は、第2フローに対応する第2フローエントリを更新する際に、以下のことを行う。
【0122】
第2フローエントリのネクストホップを移行先vFWノードに変更する。
【0123】
本願の実施例において、ファイアウォールクラスタにおける各vFWノードがNATサービス及びVPNサービスを有しない場合、フロー管理モジュール1002は、以下のことも行う。
【0124】
スイッチから送信されたフローパケットを受信すると、ハッシュアルゴリズムに従って複数のvFWノードの中から1つのvFWノードを選択するとともに、当該フローパケットを選択されたvFWノードに転送するようにスイッチに通知する。
【0125】
本願の実施例において、ファイアウォールクラスタにおけるvFWノードがNATサービス及びVPNサービスを有する場合、NFV管理モジュール1001は、NATアドレスプールにおけるNATアドレスをvFWノードに割り当てることも行う。
【0126】
フロー管理モジュール1002は、スイッチから送信されたフローパケットを受信すると、フローパケットを解析してVPNパケットを取得し、VPNパケットの宛先アドレスに基づいて対応するvFWノードを検索するとともに、対応するフローエントリを生成し、生成されたフローエントリをスイッチに送信することも行う。ここで、宛先アドレスはNATアドレスであり、生成されたフローエントリは、VPNパケットを検索されたvFWノードに転送するようにスイッチに指示するものである。
【0127】
本願の実施例は、SDNコントローラのハードウェア構成をさらに提供する。
図11は、本願の実施例によるSDNコントローラのハードウェア構成の模式図である。SDNコントローラは、1つ以上のvFWノード及びスイッチとともにファイアウォールクラスタを構成し、各vFWノードはスイッチの等コストネクストホップである。
図11に示すように、当該SDNコントローラは、プロセッサー1101と、不揮発性メモリ1102と、ネットワークインタフェース1103と、内部バス1104と、を含む。不揮発性メモリ1102は、不揮発性機械可読記憶媒体であってもよい。
【0128】
本願の実施例において、不揮発性メモリ1102は、ファイアウォールクラスタを実現するための、プロセッサー1101により実行可能な機械可読命令である論理的命令を記憶する。
【0129】
本願の実施例において、プロセッサー1101は、機械可読命令を実行して以下の操作を実現する。
【0130】
ファイアウォールクラスタにおける各vFWノードの負荷をリアルタイムに監視し、1つ以上のvFWノードの負荷が予め設定された第1閾値よりも高いことを検出すると、新たなvFWノードを作成する。
【0131】
すべての監視されるvFWノードのフローの中から移行対象の第1フローを選択し、第1フローに対応する第1フローエントリを更新し、更新後の第1フローエントリをスイッチに送信する。更新後の第1フローエントリは、第1フローを新たなvFWノードに送信するようにスイッチに指示するものである。
【0132】
本願の実施例において、第1フローに対応する第1フローエントリを更新する前に、プロセッサー1101は、機械可読命令を実行して以下の操作を実現する。
【0133】
第1フローの識別子及び新たなvFWノードの識別子をすべての監視されるvFWノードに送信し、第1フローが流れるvFWノードから送信された第1通知メッセージを受信する。第1通知メッセージは、第1フローが流れるvFWノードが第1フローに対応するセッション情報を新たなvFWノードに同期させた後に送信したものである。
【0134】
本願の実施例において、第1フローに対応する第1フローエントリを更新するために、プロセッサー1101は、機械可読命令を実行して以下の操作を実現する。
【0135】
第1フローエントリのネクストホップを新たなvFWノードに変更する。
【0136】
本願の実施例において、1つ以上のvFWノードの負荷が予め設定された第2閾値よりも低いことを検出すると、プロセッサー1101は、機械可読命令を実行して以下の操作を実現する。
【0137】
負荷が予め設定された第2閾値よりも低いvFWノードの中から除去対象のvFWノードを選択する。
【0138】
除去対象のvFWノードの第2フローを移行対象のフローとして特定するとともに、第2フローの移行先vFWノードを特定する。また、第2フローに対応する第2フローエントリを更新し、更新後の第2フローエントリをスイッチに送信する。更新後の第2フローエントリは、第2フローを移行先vFWノードに送信するようにスイッチに指示するものである。
【0139】
本願の実施例において、第2フローに対応する第2フローエントリを更新する前に、プロセッサー1101は、機械可読命令を実行して以下の操作を実現する。
【0140】
第2フローの識別子及び移行先vFWノードの識別子を除去対象のvFWノードに送信し、除去対象のvFWノードから送信された第2通知メッセージを受信する。第2通知メッセージは、除去対象のvFWノードが第2フローに対応するセッション情報を移行先vFWノードに同期させた後に送信したものである。
【0141】
本願の実施例において、第2フローに対応する第2フローエントリを更新するために、プロセッサー1101は、機械可読命令を実行して以下の操作を実現する。
【0142】
第2フローエントリのネクストホップを移行先vFWノードに更新する。
【0143】
本願の実施例において、各vFWノードがNATサービス及びVPNサービスを有しない場合、プロセッサー1101は、機械可読命令を実行して以下の操作を実現する。
【0144】
スイッチから送信されたフローパケットを受信すると、ハッシュアルゴリズムに従って複数のvFWノードの中から1つのvFWノードを選択するとともに、当該フローパケットを選択されたvFWノードに転送するようにスイッチに通知する。
【0145】
本願の実施例において、各vFWノードがNATサービス及びVPNサービスを有する場合、プロセッサー1101は、機械可読命令を実行して以下の操作を実現する。
【0146】
NATアドレスプールにおけるNATアドレスをvFWノードに割り当てる。
【0147】
スイッチから送信されたフローパケットを受信すると、フローパケットを解析してVPNパケットを取得し、VPNパケットの宛先アドレスに基づいて対応するvFWノードを検索するとともに、フローエントリを生成し、生成されたフローエントリをスイッチに送信する。ここで、宛先アドレスはNATアドレスであり、生成されたフローエントリは、VPNパケットを検索されたvFWノードに転送するようにスイッチに指示するものである。
【0148】
本願の実施例において、ネットワークインタフェース1103は、その他のハードウェア装置、例えばスイッチに接続するためのものである。内部バス1104は、プロセッサー1101、不揮発性メモリ1102及びネットワークインタフェース1103を接続するためのものである。
【0149】
以上の説明は、本発明の好適な実施例にすぎず、本発明を限定するものではない。本発明の趣旨および原理を逸脱しない範囲内で行われる任意の変更、均等の置換、改善などはいずれも、本発明の権利範囲に含まれる。