(57)【要約】      （修正有）【課題】OpenFlowシステムに適用して好適とされ、SIP-ALG機能と同等の機能を実現可能とする。【解決手段】スイッチにおいて受信パケットに適用する処理と、前記処理を適用する受信パケットを特定するための照合規則と、を対応付けた処理規則を、前記スイッチに対して設定する制御装置１００と、受信パケットを前記処理規則に従って処理する複数のスイッチ１０５、１０６、１０７と、を備え、第１の端末１１２と第２の端末１１３との間でセッション確立時に交換されるメッセージは、一旦、前記第１及び前記第２の端末にそれぞれ接続する前記スイッチを介して、前記制御装置に転送される。前記制御装置は、転送された前記メッセージを解析して、前記セッション確立時に前記端末間で交換される情報を抽出し、前記端末間で交換されるパケットが転送される経路に関する情報を取得し、前記経路上の前記スイッチに処理規則を設定する。【選択図】図１
2014127866.tif 000002
【特許請求の範囲】
【請求項１】
スイッチにおいて受信パケットに適用する処理と、前記処理を適用する受信パケットを特定するための照合規則と、を対応付けた処理規則を、前記スイッチに対して設定する制御装置と、
受信パケットを前記処理規則に従って処理する複数のスイッチと、
を備え、
第１の端末と第２の端末との間でセッション確立時に交換されるメッセージは、一旦、前記第１の端末及び前記第２の端末にそれぞれ接続する前記スイッチを介して前記制御装置に転送され、
前記制御装置は、前記制御装置に転送された前記メッセージを解析して、前記セッション確立時に前記第１の端末と前記第２の端末間で交換される情報を抽出し、前記セッションにおいて前記第１の端末と前記第２の端末間で交換されるパケットが転送される経路に関する情報を取得して前記経路上の前記スイッチに処理規則を設定し、
前記セッション確立後、前記第１の端末と前記第２の端末間の前記セッションに属するパケットは、前記経路上の前記スイッチを介して前記第１の端末と前記第２の端末間で交換される、ことを特徴とする通信システム。
【請求項２】
前記複数のスイッチが、
前記第１及び第２の端末が接続された第１及び第２のスイッチと、
呼制御サーバに接続された第３のスイッチと、
を備え、
前記セッション確立時に、前記第１及び第２の端末の一方の端末から、前記呼制御サーバを中継して、前記第１及び第２の端末の他方の端末へ転送されるメッセージが、前記第１及び第２のスイッチのうち前記一方の端末に接続する一方のスイッチを介して、前記制御装置に転送され、前記呼制御サーバとの間で、前記制御装置が少なくとも前記第３のスッチを介して前記メッセージを送受した上で、前記制御装置から、前記第１及び第２のスイッチのうち他方のスイッチを介して、前記他方の端末に転送し、
前記制御装置は、
前記セッション確立時に、前記一方の端末から前記一方のスイッチを介して前記制御装置に転送されたメッセージを解析して、前記セッションに関する管理情報を取得して記憶部に記憶し、
前記制御装置から前記第３のスイッチを介して転送されたメッセージを受けた前記呼制御サーバで中継され、前記第３のスイッチを介して前記制御装置に転送された、前記他方の端末宛の前記所定のメッセージを解析して、前記一方の端末から前記他方の端末へ前記セッションに属するパケットを転送するための経路を規定する第１のフロー情報を取得して、前記記憶部に記憶するとともに、前記第１のフロー情報に対応した処理規則を少なくとも前記第１及び第２のスイッチに設定し、
前記一方の端末からの前記メッセージを受けた前記他方の端末から前記他方のスイッチを介して前記制御装置に転送されたメッセージを解析して、前記セッションに関する管理情報を取得して前記記憶部に記憶し、
前記制御装置から前記第３のスイッチを介して転送された前記メッセージを受けた前記呼制御サーバで中継され、少なくとも前記第３のスイッチを介して前記制御装置に転送された、前記一方の端末宛のメッセージを解析して、前記他方の端末から前記一方の端末へ前記セッションに属するパケットを転送するための経路を規定する第２のフロー情報を取得して前記記憶部に記憶するとともに、前記第２のフロー情報に対応した処理規則を少なくとも前記第１及び第２のスイッチに設定する、ことを特徴とする請求項１記載の通信システム。
【請求項３】
前記第１の端末と前記第２の端末間でセッション切断時に交換されるメッセージは、一旦、前記第１の端末及び前記第２の端末にそれぞれ接続する前記スイッチを介して前記制御装置に転送され、
前記制御装置は、前記メッセージを解析して、前記第１の端末と前記第２の端末間で前記セッションに属するパケットを転送するための前記第１、第２のフロー情報を取得し、前記第１、第２のフロー情報に対応した処理規則が設定されている前記スイッチに対して前記処理規則を削除するように指示し、前記セッションに関する管理情報を、前記記憶部から削除する、ことを特徴とする請求項２記載の通信システム。
【請求項４】
前記第１及び第２の端末がＩＰ電話端末であり、
前記呼制御サーバがセッションイニシェーションプロトコル（ＳＩＰ）サーバであり、
前記スイッチがオープンフロースイッチであり、
前記制御装置が、セッションイニシェーションプロトコル・アプリケーションレイヤゲートウエイ（ＳＩＰ−ＡＬＧ）機能を実現したオープンフローコントローラであり、
前記第１の端末と前記第２の端末間での前記セッションに属するパケットはＶｏＩＰパケットである、請求項２又は３記載の通信システム。
【請求項５】
スイッチにおいて受信パケットに適用する処理と、前記処理を適用する受信パケットを特定するための照合規則と、を対応付けた処理規則を、前記スイッチに対して設定する第１の機能部を備えた制御装置であって、
第１の端末と第２の端末間でセッション確立時に交換されるメッセージが、一旦、前記第１及び前記第２の端末にそれぞれ接続するスイッチを介して前記制御装置に転送され、
前記制御装置に転送された前記メッセージを解析して、前記セッション確立時に前記第１の端末と前記第２の端末間で交換される情報を抽出し、前記セッションにおいて前記第１の端末と前記第２の端末間で交換されるパケットが転送される経路に関する情報を取得し、前記セッションにおいて、前記第１の端末と前記第２の端末間で交換されるパケットが転送される経路上の前記スイッチに処理規則を設定するように第１の機能部に対して要求する第２の機能部を備えた、ことを特徴とする制御装置。
【請求項６】
前記セッション確立時に、前記第１及び第２の端末の一方の端末から呼制御サーバを中継して、前記第１及び第２の端末の他方の端末へ転送されるメッセージは、前記第１及び第２の端末にそれぞれ接続する第１及び第２のスイッチのうち前記一方の端末に接続する一方のスイッチを介して前記制御装置に転送され、
前記呼制御サーバとの間では、前記制御装置が、前記呼制御サーバに接続する第３のスッチを少なくとも介して、前記メッセージを送受した上で、前記制御装置から、前記第１及び第２のスイッチのうち他方のスイッチを介して、前記他方の端末に転送し、
前記第２の機能部は、
前記セッション確立時に、前記一方の端末から前記一方のスイッチを介して前記制御装置に転送されたメッセージを解析して、前記セッションに関する管理情報を取得して記憶部に記憶し、
前記制御装置から前記第３のスイッチを介して転送された前記メッセージを受けた前記呼制御サーバで中継され、前記第３のスイッチを介して前記制御装置に転送された、前記他方の端末宛のメッセージを解析して、前記一方の端末から前記他方の端末へ前記セッションに属するパケットを転送するための経路を規定する第１のフロー情報を取得して、前記記憶部に記憶するとともに、前記第１のフロー情報に対応した処理規則を少なくとも前記第１及び第２のスイッチに設定するように前記第１の機能部に要求し、
前記一方の端末からの前記メッセージを受けた前記他方の端末から前記他方のスイッチを介して前記制御装置に転送されたメッセージを解析して、前記セッションに関する管理情報を取得して前記記憶部に記憶し、
前記制御装置から前記第３のスイッチを介して転送された前記メッセージを受けた前記呼制御サーバで中継され、少なくとも前記第３のスイッチを介して前記制御装置に転送された、前記一方の端末宛のメッセージを解析して、前記他方の端末から前記一方の端末へ前記セッションに属するパケットを転送するための経路を規定する第２のフロー情報を取得して前記記憶部に記憶するとともに、前記第２のフロー情報に対応した処理規則を少なくとも前記第１及び第２のスイッチに設定するように、前記第１の機能部に要求する、ことを特徴とする請求項５記載の制御装置。
【請求項７】
前記第１の端末と前記第２の端末間でセッション切断時に交換されるメッセージは、一旦、前記第１の端末及び前記第２の端末にそれぞれ接続する前記スイッチを介して前記制御装置に転送され、
前記第２の機能部は、前記メッセージを解析して、前記第１の端末と前記第２の端末間で前記セッションに属するパケットを転送するための前記第１、第２のフロー情報を取得し、前記第１、第２のフロー情報に対応した処理規則が設定されている前記スイッチに対して前記処理規則を削除するように前記第１の機能部に要求するとともに、前記セッションに関する管理情報を前記記憶部から削除する、ことを特徴とする請求項６記載の制御装置。
【請求項８】
スイッチにおいて受信パケットに適用する処理と、前記処理を適用する受信パケットを特定するための照合規則とを対応付けた処理規則を、前記スイッチに対して設定する第１の機能部を備えた制御装置を構成するコンピュータに、
第１の端末と第２の端末間でセッション確立時に交換されるメッセージが、一旦、前記第１及び前記第２の端末にそれぞれ接続するスイッチを介して前記制御装置に転送され、
前記制御装置に転送された前記メッセージを解析して、前記セッション確立時に前記第１の端末と前記第２の端末間で交換される情報を抽出し、前記セッションにおいて前記第１の端末と前記第２の端末間で交換されるパケットが転送される経路に関する情報を取得し、前記第１の機能部に対して、前記経路上の前記スイッチに処理規則を設定するように要求する処理を実行させるプログラム。
【請求項９】
制御装置は、スイッチにおいて受信パケットに適用する処理と、前記処理を適用する受信パケットを特定するための照合規則とを対応付けた処理規則を、前記スイッチに対して設定し、
前記スイッチは、受信パケットを、前記スイッチに設定されている処理規則に従って処理し、
第１の端末と第２の端末間でセッション確立時に交換されるメッセージは、一旦、前記第１の端末及び前記第２の端末にそれぞれ接続する前記スイッチを介して前記制御装置に転送され、
前記制御装置は、前記制御装置に転送された前記メッセージを解析して、前記セッション確立時に前記第１の端末と前記第２の端末間で交換される情報を抽出し、前記セッションにおいて前記第１の端末と前記第２の端末間で交換されるパケットが転送される経路に関する情報を取得して前記経路上の前記スイッチに処理規則を設定し、
前記セッション確立後、前記第１の端末と前記第２の端末間での前記セッションに属するパケットは、前記経路上の前記スイッチを介して、前記第１の端末と前記第２の端末間で交換される、ことを特徴とする通信方法。
【請求項１０】
前記セッション確立時に、前記第１及び第２の端末の一方の端末から呼制御サーバを中継して、前記第１及び第２の端末の他方の端末へ転送されるメッセージは、前記第１及び第２の端末にそれぞれ接続する第１及び第２のスイッチのうち前記一方の端末に接続する一方のスイッチを介して前記制御装置に転送され、
前記呼制御サーバとの間では、前記制御装置が、前記呼制御サーバに接続する第３のスッチを少なくとも介して、前記メッセージを送受した上で、前記制御装置から、前記第１及び第２のスイッチのうち他方のスイッチを介して、前記他方の端末に転送し、
前記制御装置は、
前記セッション確立時に、前記一方の端末から前記一方のスイッチを介して前記制御装置に転送されたメッセージを解析して、前記セッションに関する管理情報を取得して記憶部に記憶し、
前記制御装置から前記第３のスイッチを介して転送された前記メッセージを受けた前記呼制御サーバで中継され、前記第３のスイッチを介して前記制御装置に転送された、前記他方の端末宛のメッセージを解析して、前記一方の端末から前記他方の端末へ前記セッションに属するパケットを転送するための経路を規定する第１のフロー情報を取得して、前記記憶部に記憶するとともに、前記第１のフロー情報に対応した処理規則を少なくとも前記第１及び第２のスイッチに設定し、
前記一方の端末からの前記メッセージを受けた前記他方の端末から前記他方のスイッチを介して前記制御装置に転送されたメッセージを解析して、前記セッションに関する管理情報を取得して前記記憶部に記憶し、
前記制御装置から前記第３のスイッチを介して転送された前記メッセージを受けた前記呼制御サーバで中継され、少なくとも前記第３のスイッチを介して前記制御装置に転送された、前記一方の端末宛のメッセージを解析して、前記他方の端末から前記一方の端末へ前記セッションに属するパケットを転送するための経路を規定する第２のフロー情報を取得して前記記憶部に記憶するとともに、前記第２のフロー情報に対応した処理規則を少なくとも前記第１及び第２のスイッチに設定する、ことを特徴とする請求項９記載の通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システムと装置と方法とプログラムに関する。
【背景技術】
【０００２】
企業LAN（Local Area Network）(Private Network)等においては、セキュリティー上の理由、及び、企業秘密情報漏洩防止の観点で、部門間のピアツーピア（peer-to-peer）型通信を許容しない場合が多い。例えばLANスイッチのVLAN(Virtual LAN)機能を利用して個々の部門へVLANを割り当て、部門間での通信を許容しないことで、部門間でのピアツーピア（peer-to-peer）型通信が完全に不可能となる。
【０００３】
しかし、部門間でIP(Internet Protocol)電話を利用するには、IP電話のVoIP(Voice over IP)パケットに限り、部門間でのピアツーピア型通信を許容する必要がある。この場合、一般的には、他のデータ通信向けLANとは分離されたLAN（IP電話向けLAN）へIP電話機を接続する構成をとり、IP電話の通信に限り、部門間でのピアツーピア型通信を許容する。
【０００４】
他のデータ通信向けLANとIP電話向けLANを分離するための手法として、例えば以下の方法等が用いられる。
【０００５】
（１）ポートVLANによる方法：
LANスイッチ上で、IP電話機が接続されるポートにIP電話向けVLANをアサインし、他のデータ通信が接続されるポートに他のVLANを割当てる。IP電話向けVLANに限り、部門間のピアツーピア型通信も許容する。
【０００６】
（２）タグVLANによる方法：
IP電話機から送信されるパケット、もしくは、このIP電話機で受信されるVoIPパケットにはIEEE（Institute of Electric and Electrical Enginneers） 802.1qで規格化されているVLANタグが付与される。IP電話専用にアサインされたVLANタグをVoIPパケットへ付与することで、LAN上のネットワーク機器は、VoIPパケットがIP電話専用のVLANに所属していることを判別することができる。IP電話向けVLANタグのパケットに限り、部門間のピアツーピア型通信も許容する。
【０００７】
しかし、上記の方法は、例えばPC（Personal Computer）上で動作するソフトフォンを利用した部門間の通信には、適用出来ない。なぜなら、ソフトフォンが動作するPC上では、通常、ソフトフォン以外の通信アプリケーションも動作しているため、上記（１）の方法を適用する事は出来ないからである。なお、ソフトフォンは、PC等のコンピュータでインタネット経由で電話を可能とするソフトウェアであり、通信プロトコルとして例えばIETF（Internet Engineering Task Force）のRFC（Request For Comemnts）3261で規定されるセッション開始プロトコル：Session Initiation Protocol（SIP）を用いる。SIPでは、通話（セッション開始）時、発信元端末はINVITEメッセージをSIPサーバに送信し、SIPサーバではINVITEメッセージ中の宛先（SIP URL（Uniform Resource Locator））に対応するIPアドレスにINVITEメッセージを転送し、宛先端末が電話に出ると、“200 OK”メッセージを返す。発信元端末で“200 OK”メッセージを受け取ると、“ACK”メッセージを送る。INVITE、200  OK、ACKメッセージで交換したセッション記述プロトコルSDP（Session Description Protocol）情報から端末間で、直接相手のIPアドレスに音声情報を例えばRTP（Real-time Transport Protocol）で送る。電話（セッション）を切断するときは、切断する側の端末からBYEメッセージを送り、BYEメッセージに対する“200 OK”メッセージでセッションが終了しIP電話が切れる。
【０００８】
また、PCでは、通常、
・「このIP電話の通信では、パケットにこのVLANタグを付与する」、
・「この通信アプリケーションでは、パケットにこのVLANタグを付与する」
といったような、通信アプリケーション毎に、個別に、VLANタグを付与する事が出来ない。このため、上記（２）の方法を適用する事は出来ない。
【０００９】
ソフトフォンにおいて、部門間ピアツーピア型通信を実現する場合、次のような対策がとられる場合がある。
【００１０】
（１）妥協策：
セキュリティーをある程度犠牲にして、UDP（User Datagram Protocol）パケットについてのみ、部門間のルータやファイアウォール（Firewall）にてピアツーピア型通信を許容する。
【００１１】
ただし、一般に、ソフトフォンにおけるピアツーピア型通信では、任意のUDPポート番号を持ったパケットで通信が行われる。このため、特定のUDPポート番号のパケットのみ、部門間でピアツーピア型通信を許容する、といったパケットフィルタリングを行うことは出来ない。仮に、UDPパケットを用いた場合、部門間で自由にピアツーピア型通信が出来ることから、例えば悪意あるユーザが他部門へ侵入して企業秘密情報を不正に入手する、といったセキュリティーリスク等にさらされる可能性（懸念）がある。
【００１２】
（２）Session Initiation Protocol Application Layer Gateway (SIP-ALG)機能適用：  ルータやファイアウォールのベンダーには、SIP-ALG機能を提供しているところがある。SIP-ALGでは、部門間のルータやファイアウォールにて、IP電話端末の間で交換されるSIPプロトコルの制御パケット(SIPメッセージ)をモニタリングする事で、IP電話端末間で確立された特定のセッションに属するVoIPパケットのIPアドレスやUDPポート番号を検出し、該IPアドレスや該UDPポート番号を使うVoIPパケットのみ、部門間のピアツーピア通信を許容する。
【００１３】
最近では、ルータやスイッチの代わりに、OpenFlowシステムによる企業ネットワークを構築する事例が見られるようになってきた。従来、通信サービスを付加するには、ルータやスイッチ等のファームウェアに機能を追加する必要があった。ルータやスイッチのベンダーへ、ルータやスイッチのファームウェアへ機能の追加を依頼して実装することは、容易ではない。そこで、ルータやスイッチの基本機能をオープン化し、その上で、自由に、通信機能を付加できる仕組みが、スタンフォード大学等によって提案された。また、ルータやスイッチの基本機能のオープン化の為、OpenFlowプロトコルが仕様化された。オープン化されたルータやスイッチを「OFS」(OpenFlow Switch)、また、OFSをOpenFlowプロトコルで制御するサーバ（コントローラ、制御装置）を「OFC」(OpenFlow Controller)と呼ぶ。パケット転送機能を具備するOFSとパケット転送の経路を制御するOFCで構成されるネットワークを「OpenFlowシステム」と呼ぶ。
【００１４】
OFCは、例えば汎用サーバ等の上で動作するアプリケーションとして実装されている。例えばルータやスイッチのファームウェアに対して機能追加を行う代わりに、OFC上で機能追加する事で、通信機能を追加する事が可能になった。
【００１５】
OpenFlowシステムにおいても、IP電話向けネットワークと、他のデータ通信向けネットワークを論理的に分離する事で、VLANによる分離と同様な効果が得られる。このため、部門間でのピアツーピア型通信を、IP電話向けのものに限定する事が可能である。
【００１６】
本件に関して出願人側で行った先行技術文献サーチにより、例えば特許文献１、２等がサーチされた。特許文献１には、SIP-ALG機能を備えたルータ、SIPサーバによるVoIPシステムが開示されている。また特許文献２には、OpenFlowシステムにおいて、OFCによるOFSのフローテーブルエントリーの設定やセキュアチャネルを用いた転送等が開示されている。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開２００９−１１８１９８号公報
【特許文献２】特開２０１２−０９００５８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１８】
以下に関連技術の分析を与える。
【００１９】
OpenFlowシステムにおいて、ソフトフォンを利用する場合に、ネットワークの分離によるセキュリティーの確保が出来ない、という問題がある。
【００２０】
また、一般に、OpenFlowシステムは、SIP-ALG機能を具備していない。このため、SIP-ALG機能が必要とされるネットワークに、OpenFlowシステムを適用することは出来ない。
【００２１】
ルータやスイッチは、OpenFlowシステムで置き換える事が可能であるが、この場合、SIP-ALG機能も、OpenFlowシステムで提供していく必要性が生じる。
【００２２】
したがって、本発明は、上記課題の認識に基づき創案されたものであって、その目的は、例えばOpenFlowシステムに適用して好適とされ、SIP-ALG機能と同等の機能を実現可能とする通信システムと装置と方法とプログラムを提供することにある。
【課題を解決するための手段】
【００２３】
本発明によれば、スイッチにおいて受信パケットに適用する処理と、前記処理を適用する受信パケットを特定するための照合規則と、を対応付けた処理規則を、前記スイッチに対して設定する制御装置と、
受信パケットを前記処理規則に従って処理する複数のスイッチと、
を備え、
第１の端末と第２の端末との間でセッション確立時に交換されるメッセージは、一旦、前記第１の端末及び前記第２の端末にそれぞれ接続する前記スイッチを介して前記制御装置に転送され、
前記制御装置は、前記制御装置に転送された前記メッセージを解析して、前記セッション確立時に前記第１の端末と前記第２の端末間で交換される情報を抽出し、前記セッションにおいて前記第１の端末と前記第２の端末間で交換されるパケットが転送される経路に関する情報を取得して前記経路上の前記スイッチに処理規則を設定し、
前記セッション確立後、前記第１の端末と前記第２の端末間の前記セッションに属するパケットは、前記経路上の前記スイッチを介して前記第１の端末と前記第２の端末間で交換される、通信システムが提供される。
【００２４】
本発明の別の側面によれば、スイッチにおいて受信パケットに適用する処理と、前記処理を適用する受信パケットを特定するための照合規則と、を対応付けた処理規則を、前記スイッチに対して設定する第１の機能部を備えた制御装置であって、
第１の端末と第２の端末間でセッション確立時に交換されるメッセージが、一旦、前記第１及び前記第２の端末にそれぞれ接続するスイッチを介して前記制御装置に転送され、
前記制御装置に転送された前記メッセージを解析して、前記セッション確立時に前記第１の端末と前記第２の端末間で交換される情報を抽出し、前記セッションにおいて前記第１の端末と前記第２の端末間で交換されるパケットが転送される経路に関する情報を取得し、前記セッションにおいて、前記第１の端末と前記第２の端末間で交換されるパケットが転送される経路上の前記スイッチに処理規則を設定するように第１の機能部に対して要求する第２の機能部を備えた制御装置が提供される。
【００２５】
本発明のさらに別の側面によれば、スイッチにおいて受信パケットに適用する処理と、前記処理を適用する受信パケットを特定するための照合規則とを対応付けた処理規則を、前記スイッチに対して設定する第１の機能部を備えた制御装置を構成するコンピュータに、
第１の端末と第２の端末間でセッション確立時に交換されるメッセージが、一旦、前記第１及び前記第２の端末にそれぞれ接続するスイッチを介して前記制御装置に転送され、
前記制御装置に転送された前記メッセージを解析して、前記セッション確立時に前記第１の端末と前記第２の端末間で交換される情報を抽出し、前記セッションにおいて前記第１の端末と前記第２の端末間で交換されるパケットが転送される経路に関する情報を取得し、前記第１の機能部に対して、前記経路上の前記スイッチに処理規則を設定するように要求する処理を実行させるプログラム（SIP-ALG機能プログラム）が提供される。本発明によれば、当該プログラムを記録したコンピュータで読み出し可能な記録媒体（半導体メモリ、磁気／光ディスク媒体、装置）が提供される。
【００２６】
本発明のさらに別の側面によれば、
制御装置は、スイッチにおいて受信パケットに適用する処理と、前記処理を適用する受信パケットを特定するための照合規則とを対応付けた処理規則を、前記スイッチに対して設定し、
前記スイッチは、受信パケットを、前記スイッチに設定されている処理規則に従って処理し、
第１の端末と第２の端末間でセッション確立時に交換されるメッセージは、一旦、前記第１の端末及び前記第２の端末にそれぞれ接続する前記スイッチを介して前記制御装置に転送され、
前記制御装置は、前記制御装置に転送された前記メッセージを解析して、前記セッション確立時に前記第１の端末と前記第２の端末間で交換される情報を抽出し、前記セッションにおいて前記第１の端末と前記第２の端末間で交換されるパケットが転送される経路に関する情報を取得し、前記経路上の前記スイッチに処理規則を設定し、
前記セッション確立後、前記第１の端末と前記第２の端末間での前記セッションに属するパケットは、前記経路上の前記スイッチを介して、前記第１の端末と前記第２の端末間で交換される通信方法が提供される。
【発明の効果】
【００２７】
本発明によれば、OpenFlowシステムに適用して好適とされ、SIP-ALG機能と同等の機能を実現することができる。
【図面の簡単な説明】
【００２８】
【図１】本発明の一実施形態を説明する図である。
【図２】本発明の一実施形態を説明する図である。
【図３】本発明の一実施形態においてOFSへ設定される各フローテーブルエントリーを例示する図である。
【図４】本発明の一実施形態におけるセッション確立時のシーケンスを説明する図（その１）である。
【図５】本発明の一実施形態におけるセッション確立時のシーケンスを説明する図（その２）である。
【図６】本発明の一実施形態におけるセッション確立時のシーケンスを説明する図（その３）である。
【図７】本発明の一実施形態におけるセッション切断時のシーケンスを説明する図（その１）である。
【図８】本発明の一実施形態におけるセッション切断時のシーケンスを説明する図（その２）である。
【図９】SIPメッセージのデータ構造を説明する図である。
【図１０】本発明の一実施形態における状態管理データを説明する図である。
【発明を実施するための形態】
【００２９】
本発明の一形態によれば、スイッチにおいて受信パケットに適用する処理（action）と、前記処理を適用する受信パケットを特定するための照合規則と、を対応付けた処理規則を、前記スイッチに対して設定する制御装置（図１の１００）と、受信パケットを前記処理規則に従って処理する複数のスイッチ（図１の１０５、１０６、１０７）と、を備え、第１の端末（例えば図１のIP電話端末１１２）と第２の端末（図１のIP電話端末１１３）との間でセッション確立時に交換されるメッセージ（例えばSIPメッセージ）は、一旦、前記第１及び前記第２の端末にそれぞれ接続する前記スイッチ（１０５、１０６）を介して、前記制御装置（１００）に転送される。前記制御装置（１００）は、前記制御装置（１００）に転送された前記メッセージを解析して、前記セッション確立時に前記第１の端末（１１２）と前記第２の端末（１１３）間で交換される情報を抽出し、前記セッションにおいて前記第１の端末（１１２）と前記第２の端末（１１３）間で交換されるパケットが転送される経路に関する情報（フロー情報：例えばパケットの送信元アドレス、送信先（宛先）アドレス、ポート情報等）を取得し、前記経路上の前記スイッチ（１０５、１０６）に処理規則を設定し、前記セッション確立後、前記第１及び第２の端末（１１２、１１３）間の前記セッションに属するパケット（VoIPパケット）は、前記経路上の前記スイッチ（１０５、１０６）を介して前記第１の端末と前記第２の端末（１１２、１１３）間で交換される。
【００３０】
本発明の一形態において、前記第１の端末（１１２）と前記第２の端末（１１３）にそれぞれ接続された第１のスイッチ（１０５）と第２のスイッチ（１０６）と、呼制御サーバ（１１１：SIPサーバ）に接続された第３のスイッチ（１０７）と、を備えている。前記セッション確立時に、前記第１及び第２の端末の一方の端末（１１２／１１３）から、前記呼制御サーバ（１１１）を中継して、前記第１及び第２の端末の他方の端末（１１３／１１２）へ転送されるメッセージ（例えばSIPメッセージ：INVITEリクエスト）は、前記第１及び第２のスイッチのうち前記一方の端末（１１２／１１３）に接続する一方のスイッチ（１０５／１０６）を介して、前記制御装置（１００）に転送され、前記呼制御サーバ（１１１）との間で、前記制御装置（１００）が、少なくとも前記第３のスイッチ（１０７）を介して、前記メッセージを送受した上で、前記制御装置（１００）から、前記第１及び第２のスイッチのうち他方のスイッチ（１０６／１０５）を介して、前記他方の端末（１１３／１１２）に転送される。前記制御装置（１００）は、前記一方の端末（１１２／１１３）から前記一方のスイッチ（１０５／１０６）を介して前記制御装置（１００）に転送されたメッセージ（例えばSIPメッセージ：INVITEリクエスト）を解析して、前記セッションに関する管理情報を取得して記憶部（１０４）に記憶する。また、前記制御装置（１００）は、前記制御装置（１００）から前記第３のスイッチ（１０７）を介して転送されたメッセージを受けた前記呼制御サーバ（１１１）で中継され、前記第３のスイッチ（１０７）を介して前記制御装置（１００）に転送された、前記他方の端末（１１３／１１２）宛のメッセージを解析して、前記一方の端末（１１２／１１３）から前記他方の端末（１１３／１１２）へ、前記セッションに属するパケットを転送するための経路を規定する第１のフロー情報（VoIPフローデータ１）を取得して、前記記憶部（１０４）に記憶するとともに、前記第１のフロー情報（VoIPフローデータ１）に対応した処理規則を、少なくとも前記第１及び第２のスイッチ（１０５、１０６）に設定する。
【００３１】
また、前記制御装置（１００）は、前記一方の端末（１１２／１１３）からの前記メッセージ（INVITEリクエスト）を受けた前記他方の端末（１１３／１１２）から前記他方のスイッチ（１０６／１０５）を介して前記制御装置（１００）に転送されたメッセージ(例えば200 OK)を解析して、前記セッションに関する管理情報を取得し前記記憶部（１０４）に記憶し、前記制御装置（１００）から前記第３のスイッチ（１０７）を介して転送された前記メッセージ(例えば200 OK)を受けた前記呼制御サーバ（１１１）で中継され前記第３のスイッチ（１０７）及び前記一方のスイッチ（１０５／１０６）を介して、前記制御装置（１００）に転送された、前記一方の端末（１１２／１１３）宛のメッセージ(例えば200  OK)を解析して、前記他方の端末(１１３／１１２)から前記一方の端末（１１２／１１３）へ、前記セッションに属するパケットを転送するための経路を規定する第２のフロー情報（VoIPフローデータ２）を取得して、前記記憶部（１０４）に記憶するとともに、前記第２のフロー情報（VoIPフローデータ２）に対応した処理規則を、少なくとも前記第１及び第２のスイッチ（１０５、１０６）に設定する。前記第１及び第２の端末の一方の端末（１１２／１１３）から、前記呼制御サーバ（１１１）を中継して、前記第１及び第２の端末の他方の端末（１１３／１１２）へ転送されるメッセージ（例えばACK）は、前記第１及び第２のスイッチのうち前記一方の端末（１１２／１１３）に接続する一方のスイッチ（１０５／１０６）を介して、前記制御装置（１００）に転送され、前記呼制御サーバ（１１１）との間で、前記制御装置（１００）が、少なくとも前記第３のスイッチ（１０７）を介して、前記メッセージ（ACK）を送受した上で、前記制御装置（１００）は、セッション状態を「セッション確立」に設定し、前記メッセージ（ACK）を、前記第１及び第２のスイッチのうち他方のスイッチ（１０６／１０５）を介して、前記他方の端末（１１３／１１２）に転送する。
【００３２】
前記第１の端末（１１２）と前記第２の端末（１１３）間でセッション切断時に交換されるメッセージ（例えばSIPメッセージ：BYE）は、一旦、前記第１及び前記第２の端末にそれぞれ接続する前記第１、第２のスイッチ（１０５、１０６）を介して前記制御装置（１００）に転送される。前記制御装置（１００）は、前記メッセージ（BYE）を解析して、前記第１及び第２の端末（１１２、１１３）間で前記セッションに属するパケットを転送するための前記第１、第２のフロー情報（VoIPフローデータ１、２）を記憶部（１０４）から取得し、前記第１、第２のフロー情報に対応した処理規則が設定されている前記スイッチ（１０５、１０６）に対して、前記処理規則を削除するように指示し、前記セッションに関する管理情報を、前記記憶部（１０４）から削除する。
【００３３】
例えば部門間に存在するIP電話端末間でVoIPによる通信を行う場合、最初に、SIPプロトコルを使い、両端末間でVoIPのコーデック（CODEC）種別やVoIPパケット受信用のUDPポート番号情報を端末間で互いに交換することで、SIPセッションを確立する。
【００３４】
SIPセッション確立後、両端末はVoIPパケットの送信・受信を開始する。OpenFlowシステムにおいて、OFCはセキュアチャネル（secure channel）を使ってOFSを制御する。また、OFCは特定のルールをOFSのフローテーブルへ設定することで、OFSでは、特定の種類のIPパケットに限って、受信した特定の種類のIPパケットを全てOFCへセキュアチャネルを経由して転送することも出来る。
【００３５】
図１、図２は、本発明の一実施形態を説明する図である。図１及び図２は、OpenFlowシステムで構築された、ある企業のLANを例示している。センタ―拠点は、OFC１００と、SIPサーバ１１１と、OFS-C１０７を備えている。部門Aは、IP電話端末A１１２と、OFS−A１０５を備えている。部門Bは、IP電話端末B１１３と、OFS−B１０６を備えている。
【００３６】
OFC１００は、OFC基本機能部１０１と、SIP-ALG機能部１０２と、状態管理データベース１０４を備えている。
【００３７】
OFC基本機能部１０１は、特定のOFSに対して、OFSの任意のポートで受信される全てのSIPメッセージを、セキュアチャネルを経由して、OFC基本機能部１０１へ転送するルール（即ち、処理（action）を適用する受信パケットを特定するための照合規則（条件）と、処理（action）からなるフローテーブルエントリー）を設定する。
【００３８】
また、OFC１００上で、OFCのアプリケーションプログラムとして、SIP-ALG機能部１０２を動作させる。本実施形態によれば、SIP-ALG機能部１０２の機能を実現するコンピュータプログラムは、不図示のストレージ装置（半導体ストレージデバイス、磁気／光ディスク等）からOFC１００の不図示のRAM（Random Access Memory）等にロードし、OFC１００のコンピュータで実行することで、その機能が実現される。
【００３９】
OFC基本機能部１０１では、OFSからセキュアチャネル経由で受信したSIPメッセージをSIP-ALG機能部１０２へ転送する。
【００４０】
SIP-ALG機能部１０２は、SIPメッセージ内のIPヘッダーやSDP(Session Description Protocol)を参照することで、特定のSIPセッションにおいて、どのIPアドレスとどのUDPポート番号を持ったVoIPパケットがIP電話端末間で交換されるか等に関する情報を取得する事が出来る。
【００４１】
SIP-ALG機能部１０２は、OFC基本機能部１０１に対して、特定のSIPセッションに属するVoIPパケットに対するフローテーブルエントリーをOFS-A１０５及びOFS-B１０６に設定するように指示する。
【００４２】
IP電話端末A１１２からIP電話端末B１１３へ送信されるVoIPパケット、及び、IP電話端末A１１３からIP電話端末B１１２へ送信されるVoIPパケットが、OFS-A１０５及びOFS-B１０６の物理ポートから入力した時、これらのVoIPパケットは、OFS-A１０５及びOFS-B１０６にそれぞれ設定されたフローテーブルエントリーにマッチする。このため、OFS-A１０５及びOFS-B１０６では、受信したVoIPパケットをフローテーブルエントリーに規定された処理（Action）に従った出力ポートへ出力する。これにより、SIPプロトコルを使ってSIPセッションを確立した場合、IP電話端末A１１２とIP電話端末B１１３間でVoIPパケットを交換することが出来る。また、上記の手順を踏まない部門間通信を非許容とすることで、IP電話とは関係ない部門間での通信を遮断する事が可能となる。
【００４３】
上記により、ルータやファイアウォール等に付加機能として具備されるSIP-ALG機能を、OpenFlowシステム上でも実現する事が可能となる。
【００４４】
図１において、OpenFlowシステムは、OFC１００とOFS-A１０５、OFS-B１０６、OFS-C１０７で構成されている。OpenFlowシステムにより、センター拠点、部門A、及び部門Bのそれぞれの間でのデータ通信が可能である。OpenFlowシステムで構成されたLAN上で、IP電話サービスを提供するため、SIPサーバ１１１、IP電話端末A１１２、IP電話端末B１１３がOpenFlowシステムで構築されたLANに接続されている。
【００４５】
IP電話サービスを利用する前に、OFC１００は、予め、OFS-A１０５及びOFS-B１０６へ、図３（B）の２０１で示されるフローテーブルエントリーを登録しておく。
【００４６】
図３には、OFCからセキュアチャネルを経由してOpenFlowプロトコルのモディファイステート（Modify State）メッセージによりOFS(OFS-AとOFS-B)に設定される各フローテーブルエントリーが示されている。図３（A）の２００は、フローテーブルエントリーの一般的なデータ構造を表している。フローテーブルエントリーのルール（条件）として、
Ingress Port（スイッチの物理ポート番号）、
Ether src（送信元MAC（Media Access Control）アドレス）、
Ether dst(宛先MACアドレス)、
Ether type(イーサネット（登録商標）のタイプ)、
VLAN id（VLANのID）、
VLAN priority(VLANのPCP（Priority Code Point）の値)、
IP src(送信元IPアドレス)、
IP dst(宛先IPアドレス)、 
IP proto(IPプロトコル種別)、 
IP Tos Bits（TOS（Type OF Service）値）、 
TCP/UDP src port(送信元L4ポート番号)、 
TCP/UDP dst port(宛先L4ポート番号)
等が用いられる（これらの情報の一部又は全てによりフローが定義される）。ルール（照合規則）にマッチしたパケットに対して、Action欄に規定された処理が実行される。Actionとして、例えばForward(パケットを転送（スイッチの特定ポートやOFCへの転送等)、Enqueue(スイッチのポートで設定されているキューに繋いでパケットを転送)、Drop（パケット廃棄）、Modify-Field(パケットの特定フィールドを書き換える)等がある。なお、フローテーブルには、図３では図示されない統計情報（受信パケット数等）のエントリも含まれる。図３（B）乃至（F）の２０１〜２０５は、フローテーブルエントリーの設定例を表している。
【００４７】
IP電話端末A及びIP電話端末B間では、SIPプロトコルによりSIPセッションの確立や切断が行われる。
【００４８】
SIPセッションの確立や切断時に交換される全てのSIPメッセージは、OFS-A１０５及びOFS-B１０６におけるフローテーブルエントリー２０１にマッチし、セキュアチャネル１０８やセキュアチャネル１０９を経由してOFC基本機能部１０１へ転送される。
【００４９】
OFC基本機能部１０１がSIPメッセージを受信したとき、OFC基本機能部１０１はSIPメッセージをインタフェース１０３を介してSIP-ALG機能部１０２へ転送する。
【００５０】
SIP-ALG機能部１０２では、受信したSIPメッセージの種類がINVITEメッセージ、もしくは、INIVTEメッセージに対する“200 OK”メッセージの場合、そのSIPメッセージのIPヘッダー部やSDP（Session Description Protocol）部内のデータを調べ、このIP電話の通信に使われるVoIPパケットのIP src(Source IP address)、IP dst(Destination IP address) 及びUDP src portの情報を取得する。
【００５１】
IP電話端末は、宛先のIP電話端末に対し、IP src、IP dst、UDP src portを設定したVoIPパケットを送信する。
【００５２】
SIP-ALG機能部１０２は、OFC基本機能部１０１に対して、このVoIPパケットを宛先へ転送するよう指示する。即ち、IP src、IP dst、UDP src portで示されるフローをIP電話端末が接続されているOFS(OFS-A１０５及びOFS-B１０６)に対して設定するよう指示する。
【００５３】
更に、この動作を説明すると、OFC基本機能部１０１は、前記フロー情報に、OFSにてVoIPパケット転送時の出力ポート番号の情報“Action”を加え、
OFS-A１０５に対しては、図３（C）、（F）のフローテーブルエントリー２０２、２０５を作成し、
OFS-B１０６に対しては、図３（D）、（E）のフローテーブルエントリー２０３、２０４を作成する。
【００５４】
続いて、OFC基本機能部１０１は、作成したフローテーブルエントリー２０２、２０５を、セキュアチャネルを経由して、OpenFlowプロトコルにて、OFS-A１０５のフローテーブルへ設定する。
【００５５】
同様に、OFC基本機能部１０１は、作成したフローテーブルエントリー２０３、２０４を、セキュアチャネルを経由してOpenFlowプロトコルにてOFS-B１０６のフローテーブルへ設定する。
【００５６】
IP電話端末A１１２がVoIPパケットをIP電話端末B１１３へ送信する場合、OFS-A１０５では、IP電話端末A１１２から受信したパケット（VoIPパケット）が図３（C）のフローテーブルエントリー２０２にマッチするため、この受信VoIPパケットはポート49から出力される。OFS-B１０６では、OFS-A１０５から受信したパケット（VoIPパケット）が図３（D）のフローテーブルエントリー２０３にマッチするため、この受信VoIPパケットはポート３から出力される。その結果、IP電話端末A１１２からのVoIPパケットはIP電話端末B１１３へ到達することが出来る。
【００５７】
同様に、IP電話端末B１１３がVoIPパケットをIP電話端末A１１２へ送信する場合、OFS-B１０６では、IP電話端末B１１３から受信したパケット（VoIPパケット）が図３（E）のフローテーブルエントリー２０４にマッチするため、この受信VoIPパケットはポート４９から出力される。OFS-A１０５では、OFS-B１０６から受信したパケット（VoIPパケット）が図３（F）のフローテーブルエントリー２０５へマッチするため、この受信VoIPパケットはポート５から出力される。その結果、IP電話端末B１１３からのVoIPパケットはIP電話端末A１１２へ到達することが出来る。
【００５８】
OpenFlowシステムにおいては、上記手順を踏まない部門間でのデータ通信は許容しない。例えば、IP電話端末A１１２がIP電話端末B１１３宛に、SIPプロトコルでSIPセッションを確立せずに、任意のIPパケットを送出したとしても、例えばOFS-A１０５では、フローテーブルエントリーの設定に従って、当該IPパケットを破棄する。これにより、上記手順を踏まないデータ通信、すなわちIP電話とは関係ない部門間での通信は遮断される。
【００５９】
図１において、企業のLANがOpenFlowシステムで構成された場合の各構成要素間でのデータの流れを説明する。
【００６０】
SIPセッションの確立及び切断時には、IP電話端末A１１２とIP電話端末B１１３との間で、SIPサーバ１１１を中継してSIPメッセージが交換される。
【００６１】
IP電話端末A１１２がSIPサーバ１１１に対してSIPメッセージを送出するとき、該SIPメッセージは、OFS-A１０５のフローテーブルエントリー２０１（図３（B））にマッチし、セキュアチャネル１０８を経由し、OpenFlowプロトコルのパケットイン（Packet-In）メッセージにてOFC基本機能部１０１へ転送される。
【００６２】
逆に、SIPサーバ１１１がIP電話端末A１１２に対してSIPメッセージを送出するとき、該SIPメッセージはOFS-C１０７を経由しOFS-A１０５へ転送され、OFS-A１０５では、フローテーブルエントリー２０１（図３（B））にマッチし、セキュアチャネル１０８を経由し、OpenFlowプロトコルのPacket-InメッセージにてOFC基本機能部１０１へ転送される。
【００６３】
OFC基本機能部１０１は、Packet-Inメッセージに含まれるSIPメッセージを、インタフェース１０３を経由してSIP-ALG機能部１０２へ転送する。
【００６４】
前述したように、SIP-ALG機能部１０２は、ルータやファイアウォールに実装されているSIP-ALGと同等の機能を果す。
【００６５】
SIPセッションの確立時、SIP-ALG機能部１０２は、OFC基本機能部１０１に対して、特定のSIPセッションに関するフローをOFSへ設定するよう要求する。
【００６６】
OFC基本機能部１０１は、この要求に、当該フローに対する“Action”を加え、フローテーブルエントリーのデータを作成する。
【００６７】
OFC基本機能部１０１は、作成したフローテーブルエントリーを、セキュアチャネル１０８、及び、セキュアチャネル１０９を経由して、OpenFlowプロトコルにて、OFS-A１０５及びOFS-B１０６のフローテーブル（不図示）にそれぞれ設定する。
【００６８】
同様に、SIPセッションの切断時、SIP-ALG機能部１０２は、OFC基本機能部１０１に対し、特定のSIPセッションに関するフローを、OFS(OFS−A１０５とOFS-B１０６)から削除するように要求する。
【００６９】
OFC基本機能部１０１は、セキュアチャネル１０８及びセキュアチャネル１０９を経由し、OpenFlowプロトコルにて、OFS-A１０５及びOFS-B１０６のフローテーブルにそれぞれ登録されている該当フローテーブルエントリーを削除する。
【００７０】
SIP-ALG機能部１０２は、特定のSIPセッションに関連して必要となるデータを、図１０に示される状態管理データ７００として、図１の状態管理データベース１０４に登録する。
【００７１】
SIPセッション確立後、IP電話端末A１１２とIP電話端末B１１３は、互いに、相手端末へVoIPパケットを送信する。OFS-A１０５及びOFS-B１０６には、図３（B）乃至（E）のフローテーブルエントリー２０１、２０２、２０３、２０４が登録されているため、前記VoIPパケットは、OpenFlowシステム上で、相手端末へ転送される。
【００７２】
図２を参照すると、図１における構成要素間の物理的な配線が示されている。物理ケーブル１５０〜１６６の例としては、LANケーブルや光ケーブルが挙げられる。
【００７３】
OFS-A１０５においては、IP電話端末A１１２からの物理ケーブルがポート５に接続されている。
【００７４】
同様に、OFS-B１０６においては、IP電話端末B１１３からの物理ケーブルがポート３に接続されている。
【００７５】
OFS-A１０５とOFS-B１０６間の配線についてみると、OFS-A１０５のポート４９とOFS-B１０６のポート４９に物理ケーブルがそれぞれ接続されている。また、OFS-A１０５、OFS-B１０６、及び、OFS-C１０７は、それぞれ物理ケーブル１５０、１５１、１５２で、OFC１００と接続している。
【００７６】
図１及び図２に示されるLAN構成では、各部門にIPサブネットが切られ、IPアドレスがIP電話端末A１１２、IP電話端末B１１３、及びSIPサーバ１１１に割り当てられている。
【００７７】
部門Aには、ネットワークアドレス10.2.0.0/16が割り当てられ、IP電話端末A１１２にはIPアドレス10.2.0.33が割り当てられている。
【００７８】
部門Bにはネットワークアドレス10.3.0.0/16が割り当てられ、IP電話端末B１１３にはIPアドレス10.3.0.24が割り当てられている。
【００７９】
センター拠点には、ネットワークアドレス10.1.0.0/16が割り当てられ、SIPサーバ１１１には、IPアドレス10.1.0.10が割り当てられている。
【００８０】
OFS-A１０５やOFS-B１０６は、IPパケット(本実施形態では、SIPメッセージやVoIPパケット)を受信したとき、これら登録済みのフローテーブルエントリーの中で、そのIPパケットの該当ヘッダーフィールドへマッチするものがないか調べる。
【００８１】
例えば、フローテーブルエントリー２０１（図３（B））にマッチするIPパケットはUDPパケットで、UDP dst port(図９のDestination port number ６０６)が5060のものであり、即ち、全てのSIPメッセージがこれにマッチする事になる(SIPサーバのUDPポート番号は、通常、5060がアサインされる)。
【００８２】
OFS-A１０５及びOFS-B１０６は、このフローテーブルエントリーにマッチする全てのIPパケットを、セキュアチャネル１０８、及び、セキュアチャネル１０９を経由して、OFC基本機能部１０１へ転送する。
【００８３】
図４乃至図６、及び図７と図８のシーケンス図を参照して、本実施形態の動作を以下に説明する。図４は、セッション確立時のINVITEリクエスト、図５は、INVITEリクエストに対する200 OKレスポンス、図６は、200 OKレスポンスを確認するACKメッセージの動作シーケンスを例示している。図７は、セッション切断時のBYEリクエスト、図８はBYEリクエストに対する200 OKレスポンスの動作シーケンスを例示している。なお、図４乃至図６は図面作成の都合で分図され、図７、図８も図面作成の都合で分図されたものである。以下のシーケンスの説明では、IP電話端末A、OFS  A、OFC基本機能部、SIP-ALG機能部、OFS B、IP電話端末  B、OFS C、SIPサーバは、図１のIP電話端末A１１２、OFS-A１０５、OFC基本機能部１０１、SIP-ALG機能部１０２、OFS-B１０６、IP電話端末B１１３、OFS-C１０７、SIPサーバ１１１に対応しているが、以下の説明ではこれらの要素の参照符号は省略する。またシーケンス動作の説明の括弧内の３００番台、４００番台、５００番台の数字は、図4-図８のシーケンス図におけるシーケンス番号に対応している。
【００８４】
SIPセッション確立時には、INVITEメッセージ、“200 OK”メッセージやACKメッセージ以外に、“100 Trying”、“180 Ringing”といったメッセージも使われる。図４乃至図６においては、説明の簡易化のため、これら、“100 Trying”、“180 Ringing”といったメッセージは省略されている。
【００８５】
IP電話端末AがIP電話端末BとIP電話による通信を開始するには、最初に、SIPセッションを確立する必要がある。IP電話端末AはSIPメッセージの一つであるINVITEメッセージ３００をOFS-Aに送信する。
【００８６】
このINVITEメッセージはフローテーブルエントリー２０１（図３（B））にマッチするので、OFS-AはこのINVITEメッセージを、OFC基本機能部へOpenFlowプロトコルのPacket-Inメッセージで転送する（３０１）。
【００８７】
OFC基本機能部は、Packet-Inメッセージ内のin_portデータより、このINVITEメッセージがOFS-Aにおいて、外向きのポート（即ち、IP電話端末側に接続しているポートであり、かつ、OFS-BやOFS-Cに物理ケーブルで接続していない側のポート）から受信されたことを判別する。
【００８８】
また、このINVITEメッセージのIPヘッダー部のIP dst（図９の６０２）から、このINVITEメッセージがSIPサーバ宛であることを判別する。
【００８９】
OFS基本機能部は、このINVITEメッセージと“ingress”を示す付加情報をSIP-ALG機能部へ転送する（３０２）。“ingress”の付加情報は、このINVITEメッセージが、OFS-Ａにて外向きのポートから受信され、他のOFS、即ち、この場合では、OFS-Cに向けて転送されるSIPメッセージである事を示す。
【００９０】
SIP-ALG機能部では、本SIPセッションに関する状態管理データ７００（図１０）を作成し、SIPメッセージのヘッダーフィールドから、
“From tag”（図９の６０８）、 
“Call-ID”（図９の６１０）
のデータを抜き出し、それら情報を、それぞれ、状態管理データ内のFrom tagレコード（図１０の７０１）及びCall-IDレコード（図１０の７０３）へ設定する（図４の処理（１））。
【００９１】
更に、SIP-ALG機能部は、状態管理データ７００（図１０）のSIPセッション状態レコード７０４（図１０）へ「呼び出し中」の状態を設定する。
【００９２】
続いて、SIP-ALG機能部は、このINVITEメッセージをOFSにて転送するよう、OFC基本機能部へ要求する(３０３)。
【００９３】
OFC基本機能部は、Packet-OutメッセージにてINVITEメッセージをOFS-Cへ転送する（３０４）。
【００９４】
OFS-Cは、このINVITEメッセージをSIPサーバへ転送する（３０５）。
【００９５】
SIPサーバは、このINVITEメッセージをIP電話端末Bへ転送する（３０６）。
【００９６】
OFS-Cには、OFS-B向けにSIPメッセージを転送するためのフローテーブルエントリーがOFCによって既に設定されており、このINVITEメッセージをOFS-Bへ転送する（３０７）。
【００９７】
このINVITEメッセージはフローテーブルエントリー２０１にマッチするので、OFS-BはこのINVITEメッセージをOFC基本機能部へPacket-Inメッセージで転送する（３０８）。
【００９８】
OFC基本機能部は、本Packet-Inメッセージ内のin_portデータより、このINVITEメッセージがOFS-Aにおいて、内向きのポート（即ち、OFS-BやOFS-Cに物理ケーブルで接続している側のポート）から受信されたことを判別する。
【００９９】
また、このINVITEメッセージのIPヘッダー部のIP dst（図９の６０２）から、このINVITEメッセージがIP電話端末B宛であることを判別する。
【０１００】
OFS基本機能部は、本INVITEメッセージと“egress”を示す付加情報をSIP-ALG機能部へ転送する（３０９）。“egress”の付加情報は、このINVITEメッセージが、OFS-Bにて内向きのポートから受信され、IP電話端末が接続される外向きのポートへ向けて転送されるSIPメッセージである事を示す。
【０１０１】
SIP-ALG機能部では、SIPメッセージのヘッダーフィールドから、
“From tag”（図９の６０８）、 
“Call-ID”（図９の６１０）
のデータを抜き出し、状態管理データベース１０４（図１）から、本SIPセッションに関連付けられる状態管理データを検索する。
【０１０２】
また、SIP-ALG機能部は、SIPメッセージのヘッダーフィールドから、
IP電話端末BのIPアドレス(IP src)を抽出し、
SIPメッセージのSDP部から、
IP電話端末AのIPアドレス(図９の６１２)(IP dst)と、
VoIPパケット受信用UDPポート番号（図９の６１３）(UDP dst port)
を抽出し、それらを、
VoIPフローデータ１(IP src, IP dst, UDP dst port)
としてまとめる。また、状態管理データへVoIPフローデータ１を登録する。その後、SIP-ALG機能部は、VoIPフローデータ１で示されるフロー設定要求をOFC基本機能部に対して行う（図４の処理（２））。
【０１０３】
すなわち、SIP-ALG機能部は、検索した状態管理データ７００のVoIPフローデータ１（図１０の７０５）内のIP srcレコード（図１０の７０６）に、前記VoIPフローデータ１(IP src, IP dst, UDP dst port)のIP srcを設定し、
該状態管理データ７００のVoIPフローデータ１（図１０の７０５）内のIP dstレコード（図１０の７０７）に、前記VoIPフローデータ１(IP src, IP dst, UDP dst port)のIP dstを設定し、
該状態管理データ７００のVoIPフローデータ１（図１０の７０５）内のUDP dst portレコード（図１０の７０８）へ、前記VoIPフローデータ１(IP src, IP dst, UDP dst port)のUDP dst portを設定する。
【０１０４】
また、SIP-ALG機能部は、SIPセッション状態レコード（図１０の７０４）へ「呼び出し中」の状態を設定する。
【０１０５】
その後、SIP-ALG機能部は、該状態管理データ７００のVoIPフローデータ１（図１０の７０５）で示されるフローの設定要求をOFC基本機能部へ行う（３１０）。
【０１０６】
OFC基本機能部は、該状態管理データ７００のVoIPフローデータ１（図１０の７０５）で示されるフローに対応するフローテーブルエントリー２０２(図３（C）)を作成し、OpenFlowプロトコルのModify Stateメッセージ（管理状態のOFSに対してOFCから送信される）にて、OFS-Aのフローテーブルへ設定する（３１１）。
【０１０７】
同様に、OFC基本機能部は、VoIPフローデータ１（図１０の７０５）で示されるフローに対応するフローテーブルエントリー２０３（図３（D)）を作成し、Modify StateメッセージにてOFS-Bのフローテーブルへ設定する（３１２）。
【０１０８】
続いて、SIP-ALG機能部は、このINVITEメッセージをOFSにて転送するよう、OFC基本機能部へ要求する(３１３)。
【０１０９】
OFC基本機能部は、Packet-OutメッセージにてINVITEメッセージをOFS-Bへ転送する（３１４）。
【０１１０】
OFS-Bは、このINVITEメッセージをIP電話端末Bへ転送する（３１５）。
【０１１１】
図５を参照すると、P電話端末Bは、SIPメッセージの一つである“200 OK”メッセージ３５０をOFS-Bに送信する。
【０１１２】
この“200 OK”メッセージは、フローテーブルエントリー２０１（図３（B））にマッチするので、OFS-Bは、この“200 OK”メッセージを、OFC基本機能部へPacket-Inメッセージで転送する（３５１）。
【０１１３】
OFC基本機能部は、Packet-Inメッセージ内のin_portデータより、この“200 OK”メッセージがOFS-Bにおいて、外向きのポート（即ち、IP電話端末側に接続しているポートであり、かつ、OFS-BやOFS-Cに物理ケーブルで接続していない側のポート）から受信されたことを判別する。
【０１１４】
また、この“200 OK”メッセージのIPヘッダー部のIP dst(図９の６０２)から、この“200 OK”メッセージがSIPサーバ宛であることを判別する。
【０１１５】
OFS基本機能部は、この“200 OK”メッセージと“ingress”を示す付加情報をSIP-ALG機能部へ転送する（３５２）。
【０１１６】
SIP-ALG機能部では、SIPメッセージのヘッダーフィールドから、
“From tag”（図９の６０８）、 
“Call-ID”(図９の６１０)
のデータを抜き出し、状態管理データベース１０４（図１）から、本SIPセッションに関連付けられる状態管理データを検索する。
【０１１７】
また、SIP-ALG機能部は、SIPメッセージのヘッダーフィールドから、
“To tag”（図９の６０９）
を抽出し、検索した状態管理データ７００（図１０参照）のTo tagレコード（図１０の７０２）へその値を設定し、
SIPセッション状態レコード（図１０の７０４）へ「応答あり」の状態を設定する（図５の処理（３））。
【０１１８】
続いて、SIP-ALG機能部は、この“200 OK”メッセージをOFSにて転送するよう、OFC基本機能部へ要求する(３５３)。
【０１１９】
OFC基本機能部は、Packet-Outメッセージにて“200 OK”メッセージをOFS-Cへ転送する（３５４）。
【０１２０】
OFS-Cは、この“200 OK”メッセージをSIPサーバへ転送する（３５５）。
【０１２１】
SIPサーバは、この“200 OK”メッセージをIP電話端末Aへ転送する（３５６）。
【０１２２】
OFS-Cには、既に、OFS-A向けにSIPメッセージを転送するためのフローテーブルエントリーが設定されており、この“200 OK”メッセージをOFS-Aへ転送する（３５７)。
【０１２３】
この“200 OK”メッセージはフローテーブルエントリー２０１（図３（B））にマッチするので、OFS-Aはこの“200 OK”メッセージをOFC基本機能部へPacket-Inメッセージで転送する（３５８）。
【０１２４】
OFC基本機能部は、本Packet-Inメッセージ内のin_portデータより、この“200 OK”メッセージがOFS-Aにおいて、内向きのポート（即ち、OFS-BやOFS-Cに物理ケーブルで接続している側のポート）から受信されたことを判別する。
【０１２５】
また、OFC基本機能部は、この“200 OK”メッセージのIPヘッダー部のIP dst（図９の６０２）から、この“200 OK”メッセージがIP電話端末A宛であることを判別する。OFS基本機能部は、本“200 OK”メッセージと“egress”を示す付加情報を、SIP-ALG機能部へ転送する（３５９）。
【０１２６】
SIP-ALG機能部では、SIPメッセージのヘッダーフィールドから、
“From tag”（図９の６０８）、 
“To tag”（図９の６０９）、
“Call-ID”（図９の６１０）
のデータを抜き出し、状態管理データベース１０４（図１）から、本SIPセッションに関連付けられる状態管理データを検索する。
【０１２７】
また、SIP-ALG機能部は、SIPメッセージのヘッダーフィールドから、
IP電話端末AのIPアドレス(IP src)を抽出し、
SIPメッセージのSDP部から、
IP電話端末BのIPアドレス（図９の６１２）(IP dst)と、
VoIPパケット受信用UDPポート番号（図９の６１３）(UDP dst port)
とを抽出し、それらを、VoIPフローデータ２(IP src, IP dst, UDP dst port)としてまとめる（図５の処理（４））。
【０１２８】
SIP-ALG機能部は、検索した状態管理データ（図１０の７００）のVoIPフローデータ２（図１０の７０９）内のIP srcレコード(図１０の７１０)に、前記VoIPフローデータ２(IP src, IP dst, UDP dst port)のIP srcを設定し、
状態管理データ（図１０の７００）のVoIPフローデータ２（図１０の７０９）内のIP dstレコード（図１０の７１１）に、前記VoIPフローデータ２(IP src, IP dst, UDP dst port)のIP dstを設定し、
状態管理データ（図１０の７００）のVoIPフローデータ２（図１０の７０９）内のUDP dst portレコード（図１０の７１２）に、前記VoIPフローデータ２(IP src, IP dst, UDP dst port)のUDP dst portを設定する。
【０１２９】
その後、VoIPフローデータ２（図１０の７０９）で示されるフローの設定要求を、OFC基本機能部へ行う（３６０）。
【０１３０】
OFC基本機能部は、VoIPフローデータ２（図１０の７０９）で示されるフローに対応するフローテーブルエントリー２０４（図３（E））を作成し、Modify StateメッセージにてOFS-Bのフローテーブルへ設定する（３６１）。
【０１３１】
同様に、OFC基本機能部は、VoIPフローデータ２（図１０の７０９）で示されるフローに対応するフローテーブルエントリー２０５(図３（F）)を作成し、Modify StateメッセージにてOFS-Aのフローテーブルへ設定する（３６２）。
【０１３２】
続いて、SIP-ALG機能部は、この“200 OK”メッセージをOFSにて転送するよう、OFC基本機能部へ要求する(３６３)。
【０１３３】
OFC基本機能部は、Packet-Outメッセージにて“200 OK”メッセージをOFS-Aへ転送する（３６４）。
【０１３４】
OFS-Aは、この“200 OK”メッセージをIP電話端末Aへ転送する（３６５）。
【０１３５】
図６を参照すると、IP電話端末AはSIPメッセージの一つであるACKメッセージをOFS-Aに送信する（４００）。このACKメッセージはフローテーブルエントリー２０１（図３（B））にマッチするので、OFS-Aは、このACKメッセージをOFC基本機能部へPacket-Inメッセージで転送する（４０１）。
【０１３６】
OFC基本機能部は、本Packet-Inメッセージ内のin_portデータより、このACKメッセージがOFS-Aにおいて、外向きのポート（即ち、IP電話端末側に接続しているポートであり、かつ、OFS-BやOFS-Cに物理ケーブルで接続していない側のポート）から受信されたことを判別する。
【０１３７】
また、OFC基本機能部は、このACKメッセージのIPヘッダー部のIP dst（図９の６０２）から、このACKメッセージがSIPサーバ宛であることを判別する。
【０１３８】
OFS基本機能部は、このACKメッセージと“ingress”を示す付加情報をSIP-ALG機能部へ転送する（４０２）。
【０１３９】
SIP-ALG機能部では、“ingress”の付加情報をみて、このACKメッセージに関しては、特に、処理をする必要がないと判断する（図６の処理（５））。
【０１４０】
続いて、SIP-ALG機能部は、このACKメッセージをOFSにて転送するように、OFC基本機能部へ要求する(４０３)。
【０１４１】
OFC基本機能部は、Packet-OutメッセージにてACKメッセージをOFS-Cへ転送する（４０４）。
【０１４２】
OFS-Cは、このACKメッセージをSIPサーバへ転送する（４０５）。
【０１４３】
SIPサーバは、このACKメッセージをIP電話端末Bへ転送する（４０６）。
【０１４４】
OFS-Cには、既に、OFS-B向けにSIPメッセージを転送するためのフローテーブルエントリーが設定されており、このACKメッセージをOFS-Bへ転送する(４０７)。
【０１４５】
このACKメッセージはフローテーブルエントリー２０１（図３（B））にマッチするので、OFS-Bは、このACKメッセージをOFC基本機能部へPacket-Inメッセージ４０８で転送する。
【０１４６】
OFC基本機能部は、本Packet-Inメッセージ内のin_portデータより、このACKメッセージがOFS-Bにおいて、内向きのポート（即ち、OFS-AやOFS-Cに物理ケーブルで接続している側のポート）から受信されたことを判別する。また、このACKメッセージのIPヘッダー部のIP dst（図９の６０２）から、このACKメッセージがIP電話端末B宛であることを判別する。
【０１４７】
OFS基本機能部は、本ACKメッセージと“egress”を示す付加情報をSIP-ALG機能部へ転送する（４０９）。
【０１４８】
SIP-ALG機能部では、SIPメッセージのヘッダーフィールドから、
“From tag”（図９の６０８）、 
“To tag”(図９の６０９)、
“Call-ID”（図９の６１０）
のデータを抜き出し、状態管理データベース１０４（図１）から、本SIPセッションに関連付けられる状態管理データを検索する。検索した状態管理データのSIPセッション状態レコード（図１０の７０４）へ「セッション確立」の状態を設定する（図６の処理（６））。
【０１４９】
続いて、SIP-ALG機能部は、このACKメッセージをOFSにて転送するよう、OFC基本機能部へ要求する(４１０)。
【０１５０】
OFC基本機能部は、Packet-OutメッセージにてACKメッセージをOFS-Bへ転送する（４１１）。
【０１５１】
OFS-Bは、このACKメッセージをIP電話端末Bへ転送する（４１２）。
【０１５２】
SIPセッションが確立されたので、IP電話端末AとIP電話端末BはVoIPパケットの送信を開始する。
【０１５３】
IP電話端末BはIP電話端末A宛にVoIPパケットを送信する（４５０）。
【０１５４】
このVoIPパケットは、OFS-Bにてフローテーブルエントリー２０４（図３（E））にマッチし、そのフローテーブルエントリーのActionに従い、ポート４９番へVoIPパケットを出力する（４５１）。
【０１５５】
このVoIPパケットは、OFS-Aにてフローテーブルエントリー２０５（図３（F）））にマッチし、ポート５番へVoIPパケットを出力する（４５２）。
【０１５６】
IP電話端末AはIP電話端末B宛にVoIPパケットを送信する（４５３）。
【０１５７】
このVoIPパケットは、OFS-Aにてフローテーブルエントリー２０２（図３（C）））にマッチし、そのフローテーブルエントリーのActionに従い、ポート４９番へVoIPパケットを出力する（４５４）。
【０１５８】
このVoIPパケットは、OFS-Bにてフローテーブルエントリー２０３（図３（D））にマッチし、ポート３番へVoIPパケットを出力する（４５５）。
【０１５９】
IP電話端末AがIP電話端末BとIP電話による通信を切断するには、SIPセッションを切断する必要がある。
【０１６０】
図７を参照すると、IP電話端末AはSIPメッセージの一つであるBYEメッセージをOFS-Aに送信する（５００）。
【０１６１】
このBYEメッセージは、フローテーブルエントリー２０１（図３（B））にマッチするので、OFS-Aは、このBYEメッセージをOFC基本機能部へPacket-Inメッセージで転送する（５０１）。
【０１６２】
OFC基本機能部は、このPacket-Inメッセージ内のin_portデータより、このBYEメッセージがOFS-Aにおいて、外向きのポート（即ち、IP電話端末側に接続しているポートであり、かつ、OFS-BやOFS-Cに物理ケーブルで接続していない側のポート）から受信されたことを判別する。
【０１６３】
また、このBYEメッセージのIPヘッダー部のIP dst（図９の６０２）から、このBYEメッセージがSIPサーバ宛であることを判別する。
【０１６４】
OFS基本機能部は、このBYEメッセージと、“ingress”を示す付加情報を、SIP-ALG機能部へ転送する（５０２）。
【０１６５】
SIP-ALG機能部では、“ingress”の付加情報をみて、このACKメッセージに関しては、特に、処理をする必要がないと判断する（図７の処理（７））。
【０１６６】
続いて、SIP-ALG機能部は、このBYEメッセージをOFSにて転送するようにOFC基本機能部に対して要求する(５０３)。
【０１６７】
OFC基本機能部は、Packet-OutメッセージにてBYEメッセージをOFS-Cへ転送する（５０４）。
【０１６８】
OFS-Cは、このBYEメッセージをSIPサーバへ転送する（５０５）。
【０１６９】
SIPサーバは、このBYEメッセージをIP電話端末Bへ転送する（５０６）。
【０１７０】
OFS-Cには、既に、OFS-B向けにSIPメッセージを転送するためのフローテーブルエントリーが設定されており、このBYEメッセージをOFS-Bへ転送する(５０７)。
【０１７１】
このBYEメッセージは、フローテーブルエントリー２０１（図３（B））にマッチするので、OFS-Bは、このBYEメッセージをOFC基本機能部へPacket-Inメッセージ５０８で転送する。
【０１７２】
OFC基本機能部は、このPacket-Inメッセージ内のin_portデータより、このBYEメッセージがOFS-Aにおいて内向きのポート（即ち、OFS-BやOFS-Cに物理ケーブルで接続している側のポート）から受信されたことを判別する。
【０１７３】
また、このBYEメッセージのIPヘッダー部のIP dst（図９の６０２）から、このBYEメッセージがIP電話端末B宛であることを判別する。
【０１７４】
OFS基本機能部は、本BYEメッセージと“egress”を示す付加情報をSIP-ALG機能部へ転送する（５０９）。
【０１７５】
SIP-ALG機能部では、SIPメッセージのヘッダーフィールドから、
“From tag”（図９の６０８）、 
“To tag”（図９の６０９）、
“Call-ID”（図９の６１０）
のデータを抜き出し、状態管理データベース１０４（図１）から、本SIPセッションに関連付けられる状態管理データを検索する（図７の処理（８））。
【０１７６】
また、SIP-ALG機能部では、検索した状態管理データ内のVoIPフローデータ１及びVoIPフローデータ２を抽出し、この二つのVoIPフローデータに対応するフローテーブルエントリーをOFSから削除するようOFC基本機能部へ要求する（５１０）。
【０１７７】
その後、OFC基本機能部は、本SIPセッションに関する状態管理データを状態管理データベース１０４（図１）から削除する。
【０１７８】
OFC基本機能部は、VoIPフローデータ１で示されるフローに対応するフローテーブルエントリー２０２（図３（C））を削除するよう、Modify StateメッセージにてOFS-Aへ要求する（５１１）。
【０１７９】
同様に、OFC基本機能部は、VoIPフローデータ１で示されるフローに対応するフローテーブルエントリー２０３（図３（D））を削除するよう、Modify StateメッセージにてOFS-Bへ要求する（５１２）。
【０１８０】
また、OFC基本機能部は、VoIPフローデータ２（図１０の７０９）で示されるフローに対応するフローテーブルエントリー２０４（図３（E））を削除するよう、Modify StateメッセージにてOFS-Bへ要求する（５１３）。
【０１８１】
同様に、OFC基本機能部は、VoIPフローデータ２で示されるフローに対応するフローテーブルエントリー２０５（図３（F））を削除するよう、Modify StateメッセージにてOFS-Aへ要求する（５１４）。
【０１８２】
続いて、SIP-ALG機能部は、このBYEメッセージをOFSにて転送するよう、OFC基本機能部へ要求する（５１５）。
【０１８３】
OFC基本機能部は、Packet-OutメッセージにてBYEメッセージをOFS-Bへ転送する（５１６）。
【０１８４】
OFS-Bは、このBYEメッセージをIP電話端末Bへ転送する（５１７）。
【０１８５】
図８を参照すると、IP電話端末BはSIPメッセージの一つである“200 OK”メッセージをOFS-Bに送信する（５５０）。
【０１８６】
この“200 OK”メッセージはフローテーブルエントリー２０１（図３（B））にマッチするので、OFS-Bは、この“200 OK”メッセージをOFC基本機能部へPacket-Inメッセージで転送する（５５１）。
【０１８７】
OFC基本機能部は、本Packet-Inメッセージ内のin_portデータより、この“200 OK”メッセージがOFS-Bにおいて、外向きのポート（即ち、IP電話端末側に接続しているポートであり、かつ、OFS-BやOFS-Cに物理ケーブルで接続していない側のポート）から受信されたことを判別する。
【０１８８】
また、この“200 OK”メッセージのIPヘッダー部のIP dst（図９の６０２）から、この“200 OK”メッセージがSIPサーバ宛であることを判別する。
【０１８９】
OFS基本機能部は、この“200 OK”メッセージと“ingress”を示す付加情報をSIP-ALG機能部へ転送する（５５２）。
【０１９０】
SIP-ALG機能部では、SIPメッセージのヘッダーフィールドから、
“From tag”（図９の６０８）、
“To tag”（図９の６０９）、
“Call-ID”（図９の６１０）
のデータを抜き出し、状態管理データベース１０４（図１）から、本SIPセッションに関連付けられる状態管理データを検索する。
【０１９１】
しかし、既に、本SIPセッションに関する状態管理データは、状態管理データベース１０４から削除されているので、検索結果は失敗に終わる。SIP-ALG機能部は、この“200 OK”メッセージに対しては特に処理を行わない(図８の処理（９）)。
【０１９２】
続いて、SIP-ALG機能部は、この“200 OK”メッセージをOFSにて転送するように、OFC基本機能部へ要求する(５５３)。
【０１９３】
OFC基本機能部は、Packet-Outメッセージにて“200 OK”メッセージをOFS-Cへ転送する（５５４）。
【０１９４】
OFS-Cは、この“200 OK”メッセージをSIPサーバへ転送する（５５５）。
【０１９５】
SIPサーバは、この“200 OK”メッセージをIP電話端末Aへ転送する（５５６）。
【０１９６】
OFS-Cには、既に、OFS-A向けにSIPメッセージを転送するためのフローテーブルエントリーが設定されており、この“200 OK”メッセージをOFS-Aへ転送する（５５７）。
【０１９７】
この“200 OK”メッセージはフローテーブルエントリー２０１（図３（B））にマッチするので、OFS-Aはこの“200 OK”メッセージをOFC基本機能部へPacket-Inメッセージで転送する（５５８）。
【０１９８】
OFC基本機能部は、該Packet-Inメッセージ内のin_portデータより、この“200 OK”メッセージがOFS-Aにおいて、内向きのポート（即ち、OFS-BやOFS-Cに物理ケーブルで接続している側のポート）から受信されたことを判別する。
【０１９９】
また、この“200 OK”メッセージのIPヘッダー部のIP dst（図９の６０２）から、この“200 OK”メッセージがIP電話端末A宛であることを判別する。OFS基本機能部は、本“200 OK”メッセージと“egress”を示す付加情報をSIP-ALG機能部へ転送する（５５９）。
【０２００】
SIP-ALG機能部では、SIPメッセージのヘッダーフィールドから、
“From tag”（図９の６０８）、
“To tag”（図９の６０９）、
“Call-ID”（図９の６１０）
のデータを抜き出し、状態管理データベース１０４（図１）から、本SIPセッションに関連付けられる状態管理データを検索する。
【０２０１】
しかし、既に、本SIPセッションに関する状態管理データは状態管理データベースから削除されているので、検索結果は失敗に終わる。SIP-ALG機能部は、この“200 OK”メッセージに対しては特に処理を行わない（図８の処理（１０））。
【０２０２】
続いて、SIP-ALG機能部は、この“200 OK”メッセージをOFSにて転送するよう、OFC基本機能部へ要求する(５６０)。
【０２０３】
OFC基本機能部は、Packet-Outメッセージにて“200 OK”メッセージをOFS-Aへ転送する（５６１）。
【０２０４】
OFS-Aは、この“200 OK”メッセージをIP電話端末Aへ転送する（５６２）。
【０２０５】
実施形態において、SIP-ALG機能は、ルータやスイッチのファームウエアの付加機能として具備されるSIP-ALG機能とは異なり、汎用サーバの上で動作するアプリケーションとして実装されるため、ルータやスイッチベンダーへ依頼する事なく、第３者がSIP-ALG機能を開発する事が可能である。
【０２０６】
また実施形態において、SIP-ALG機能は、ルータやスイッチのファームウエアの付加機能として具備されるSIP-ALG機能とは異なり、汎用サーバの上で動作するアプリケーションとして実装されるため、Pythonのような高級言語を用いて開発する事が可能である。また、開発者が好む任意の言語(例： C、 C++、 Java（登録商標）、 Ruby、 Python等)で開発する事が可能である。
【０２０７】
OpenFlowプロトコルはONF(Open Networking Foundation)にて仕様化された世界標準仕様であるため、本明細書で説明したOpenFlowシステムは、複数のベンダーから調達したOFSの組み合わせでも構成し、その上でSIP-ALG機能を提供する事が出来る。即ち、マルチベンダー化が可能である。
【０２０８】
複数の部門や拠点にまたがる中乃至大企業向けLAN、及び、通信サービスプロバイダーが提供するIP-VPNサービスに適用される。
【０２０９】
なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ乃至選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０２１０】
１００  OFC(OpenFlow Controller)
１０１  OFC基本機能部
１０２  SIP-ALG(SIP Application Layer Gateway)機能部
１０３  OFC基本機能部とSIP-ALG機能部間のデータ送受信用インタフェース
１０４  状態管理データベース
１０５  OFS-A (OpenFlow Switch A)
１０６  OFS-B (OpenFlow Switch B)
１０７  OFS-C (OpenFlow Switch C)
１０８  セキュアチャネル(OpenFlowプロトコル)
１０９  セキュアチャネル(OpenFlowプロトコル)
１１０  セキュアチャネル(OpenFlowプロトコル)
１１１  SIPサーバ  IPアドレスは10.1.0.10
１１２  IP電話端末A  IPアドレスは10.2.0.33
１１３  IP電話端末B  IPアドレスは10.3.0.24
１２１  SIPメッセージ転送
１２２  SIPメッセージ転送
１２３  SIPメッセージ転送
１２４  SIPメッセージ転送
１２５  SIPメッセージ転送
１３１  VoIPパケット
１３２  VoIPパケット
１３３  VoIPパケット
１３４  VoIPパケット
１３５  VoIPパケット
１３６  VoIPパケット
１５０  OFS-AとOFCを接続する物理ケーブル
１５１  OFS-BとOFCを接続する物理ケーブル
１５２  OFS-CとOFCを接続する物理ケーブル
１６１  OFS-AとIP電話端末Aを接続する物理ケーブル
１６２  OFS-AとOFS-Bを接続する物理ケーブル
１６３  OFS-BとIP電話端末Bを接続する物理ケーブル
１６４  OFS-AとOFS-Cを接続する物理ケーブル
１６５  OFS-BとOFS-Cを接続する物理ケーブル
１６６  OFS-CとSIPサーバを接続する物理ケーブル
２００  フローテーブルエントリーのデータ構造
２０１  フローテーブルエントリー
２０２  OFS-Aへ登録されるフローテーブルエントリー
２０３  OFS-Bへ登録されるフローテーブルエントリー
２０４  OFS-Bへ登録されるフローテーブルエントリー
２０５  OFS-Aへ登録されるフローテーブルエントリー
６００  SIPメッセージ
６０１  IPヘッダー部のIP src (Source IP address)ヘッダーフィールド
６０２  IPヘッダー部のIP dst (Destination IP address)ヘッダーフィールド
６０３  IPヘッダー部のProtocol number
６０４  IPヘッダーフィールド
６０５  UDPヘッダー部のSource port numberヘッダーフィールド
６０６  UDPヘッダー部のDestination port numberヘッダーフィールド
６０７  UDPヘッダーフィールド
６０８  SIPヘッダー部のFrom tagヘッダーフィールド
６０９  SIPヘッダー部のTo tagヘッダーフィールド
６１０  SIPヘッダー部のCall-IDヘッダーフィールド
６１１  SIPヘッダーフィールド
６１２  VoIPパケット受信用IPアドレス
６１３  VoIPパケット受信用UDPポート番号
７００  状態管理データ
７０１  状態管理データのFrom tagレコード
７０２  状態管理データのTo tagレコード
７０３  状態管理データのCall-IDレコード
７０４  状態管理データのSIPセッション状態レコード
７０５  状態管理データのVoIPフローデータ１
７０６  状態管理データのVoIPフローデータ１内IP src(Source IP address)レコード
７０７  状態管理データのVoIPフローデータ１内IP dst(Destination IP address)レコード
７０８  状態管理データのVoIPフローデータ１内UDP dst port(Destination UDP port)レコード
７０９  状態管理データのVoIPフローデータ2
７１０  状態管理データのVoIPフローデータ２内IP src(Source IP address)レコード
７１１  状態管理データのVoIPフローデータ２内IP dst(Destination IP address)レコード
７１２  状態管理データのVoIPフローデータ２内UDP dst port(Destination UDP port)レコード
【図１】
2014127866.tif 000003
【図２】
2014127866.tif 000004
【図３】
2014127866.tif 000005
【図４】
2014127866.tif 000006
【図５】
2014127866.tif 000007
【図６】
2014127866.tif 000008
【図７】
2014127866.tif 000009
【図８】
2014127866.tif 000010
【図９】
2014127866.tif 000011
【図１０】
2014127866.tif 000012