JP2014504043A - 通信制御システム、制御装置、通信制御方法および通信制御プログラム - Google Patents

通信制御システム、制御装置、通信制御方法および通信制御プログラム Download PDF

Info

Publication number
JP2014504043A
JP2014504043A JP2013519292A JP2013519292A JP2014504043A JP 2014504043 A JP2014504043 A JP 2014504043A JP 2013519292 A JP2013519292 A JP 2013519292A JP 2013519292 A JP2013519292 A JP 2013519292A JP 2014504043 A JP2014504043 A JP 2014504043A
Authority
JP
Japan
Prior art keywords
packet
packet transfer
communication
session
control device
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.)
Pending
Application number
JP2013519292A
Other languages
English (en)
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
Priority to JP2013519292A priority Critical patent/JP2014504043A/ja
Publication of JP2014504043A publication Critical patent/JP2014504043A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/42Centralised routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/036Updating the topology between route computation elements, e.g. between OpenFlow controllers

Abstract

処理規則に基づいてパケットを転送するパケット処理装置に対し、転送経路を集中制御する制御装置が処理規則を送信するネットワークで、制御装置からパケット処理装置へ送信されるパケットの遅延を抑制できる通信制御システムを提供する。パケットの処理内容を規定した規則であるパケット処理規則にしたがって、受信したパケットを転送するパケット転送装置と、パケット処理規則の適用をパケット転送装置に指示することによりパケットの転送経路を制御する制御装置とを備えている。制御装置の通信方法選択手段は、パケット転送装置との通信状況に応じて、そのパケット転送装置との通信方法を選択する。

Description

本発明は、他の装置に対するパケットの送信遅延を抑制して通信の制御を行う通信制御システム、制御装置、通信制御方法および通信制御プログラムに関する。
近年、オープンフロー(OpenFlow)という技術が提案されている(非特許文献1,2参照)。オープンフローは、通信をエンドツーエンドのフローとして捉え、フロー単位で経路制御、障害回復、負荷分散、最適化等を行う技術である。
オープンフローを用いて通信が行われるネットワーク(以下、オープンフローネットワークと記す。)では、オープンフロースイッチおよびオープンフローコントローラが用いられる。オープンフロースイッチは、パケット転送装置として機能する。また、オープンフローコントローラは、経路制御装置として機能する。
オープンフロースイッチは、オープンフローコントローラとの通信に用いられるセキュアチャネルを備え、オープンフローコントローラからセキュアチャネルを介して適宜追加または書き換えの指示が行われるフローテーブルの内容に従って動作する。
図20は、フローテーブルの内容を示す説明図である。フローテーブルには、フローごとに、パケットヘッダとの照合に用いられるマッチングルール(ヘッダフィールド)と、フロー統計情報(Counters)と、パケットに対する処理内容を定義したアクション(Actions)とを含む組が定義される。
例えば、オープンフロースイッチは、パケットを受信すると、フローテーブルから受信パケットのヘッダ情報に適合するマッチングルールを含むエントリを検索する。検索の結果、受信パケットに適合するエントリが見つかった場合、オープンフロースイッチは、フロー統計情報(Counters)を更新する。また、この場合、オープンフロースイッチは、受信パケットに対して、該当するエントリのアクションフィールドに定義された処理内容(指定ポートからのパケット送信、フラッディング、廃棄等)を実施する。
一方、フローテーブルを検索した結果、受信パケットに適合するエントリが見つからなかったと場合、オープンフロースイッチは、セキュアチャネルを介して、オープンフローコントローラに対して受信パケットを転送する。このようにして、オープンフロースイッチは、そのパケットに対する処理内容を問い合わせる。例えば、オープンフロースイッチは、オープンフローコントローラに対して、受信パケットの送信元および送信先に基づいたパケットの経路の決定を依頼し、決定されたエントリを受け取ってフローテーブルを更新する。このように、オープンフロースイッチは、フローテーブルに格納されたエントリを処理規則として用いることでパケットの転送を行う。
なお、オープンフローコントローラは、パケットを処理するたびに更新されるフロー統計情報(Counters)を収集する機能も備えている。この機能のことを、可視化機能とも言う。
また、特許文献1には、コントローラによって制御されるフローテーブルに基づいてスイッチがパケットを転送するシステムが記載されている。特許文献1に記載されたシステムは、スイッチがフローテーブルに存在しないパケットを受け取るとそのパケットをコントローラに転送する。そして、スイッチがフローテーブルに存在するパケットを受け取ると、上記システムは、そのフローテーブルの内容に基づいてパケットを転送する。
図21は、オープンフローネットワークにおけるパケットの流れの一例を示す説明図である。以下、図21を用いて、特許文献1、非特許文献1,2に記載されたネットワークにおけるパケットの流れを説明する。
まず、外部端末310が外部端末320宛てに、最初のデータパケットを送信すると、このデータパケットは、外部端末310に接続されたパケット転送装置210に送信される(ステップS901)。パケット転送装置210は、パケットを受信すると、フローテーブルから、そのパケットのヘッダ情報に適合するマッチングルール(照合規則、マッチングキーと記すこともある。)を含むエントリを検索する。
しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット転送装置210は、受信したパケットをバッファリングしてから、経路制御装置(コントローラ)100に対して、新規フローを検出したことを示す制御メッセージ(以下、新規フロー検出通知メッセージ、Packet−Inメッセージと記すこともある。)を送信する(ステップS902)。
このPacket−Inメッセージには、フローの識別に必要な情報(例えば、MAC(Media Access Control)アドレス、IP(Internet Protocol)アドレス、ポート番号(それぞれ送信元と宛先の両方含む))と、パケットの受信ポートを示す情報が含まれる。
ここでは、パケット転送装置210が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置(コントローラ)100に送信することを想定している。なお、パケット転送装置210は、受信したパケットそのものを経路制御装置(コントローラ)100に送信する場合もある。
経路制御装置(コントローラ)100は、Packet−Inメッセージを受信すると、受信したメッセージから新規エントリの照合規則(マッチングキー)を作成し、そのエントリに適用するタイマー値を決定する。照合規則として作成する情報は、例えば、図20に例示する「InPort」〜「TCP/UDP src port」の情報である。
さらに、経路制御装置(コントローラ)100は、受信したメッセージに基づいて、宛先である外部端末320の位置確認を行い、外部端末310から外部端末320へのパケット転送経路を計算する。ここでは、転送経路を計算した結果、パケット転送装置210→パケット転送装置220→パケット転送装置230の順でパケットを転送する転送経路が計算されたものとする。
次に、経路制御装置(コントローラ)100は、新規エントリの照合規則(マッチングキー)と一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリを、各パケット転送装置210〜230ごとに作成する。そして、経路制御装置(コントローラ)100は、作成したエントリを、FlowModメッセージを用いて、各パケット転送装置210〜230に通知する(ステップS903)。ここで、FlowModメッセージとは、コントローラがスイッチに対してフローの登録や変更、削除を要求する際に用いられるメッセージである。各パケット転送装置210〜230は、FlowModメッセージを受信すると、フローテーブルに受信したエントリを設定する。
エントリの設定が完了すると、パケット転送装置210は、設定されたエントリに従って、バッファリングしてあるパケットをパケット転送装置220に転送する(ステップS904−1)。このパケットが転送される転送経路上のパケット転送装置220,230には、既にエントリの設定が行われている。そのため、このパケットは、パケット転送装置220、パケット転送装置230の順で転送され、外部端末320に届くことになる(ステップS904−2、ステップS904−3)。
以後、外部端末310から外部端末320宛てにパケットが送信される場合、そのパケットは、転送経路に従って、パケット転送装置210→パケット転送装置220→パケット転送装置230の順に転送され(ステップS905−1〜S905−4)、外部端末320に到着する。
なお、特許文献2には、広域ネットワークにおける異常トラヒックを検出および分析するトラヒック分析・制御システムが記載されている。特許文献2に記載されたシステムでは、パケット転送装置とネットワーク制御装置を含むネットワークが構成され、ネットワーク制御装置がパケットフロー等の転送経路をパケット転送装置に対して指示する。
また、特許文献3には、パケット回線バックアップ方式が記載されている。特許文献3に記載された方式では、相手装置にパケットを転送する際に通常使用されているパケット回線に障害が発生して不通となった場合、回線交換網が介在するバックアップ回線を介して所定の手順に従い相手装置に呼設定する。そして、設定されたバックアップ回線を介してこれらのパケットが相手装置に送信される。
再表WO2008/095010号 特開2008−60865号公報 特開平6−120985号公報
Nick McKeown、外7名、"OpenFlow: Enabling Innovation in Campus Networks"、[online]、[平成22年7月6日検索]、インターネット〈URL:http://www.openflowswitch.org/documents/openflow-wp-latest.pdf〉、2008年3月14日 "OpenFlow Switch Specification" Version 1.0.0. (Wire Protocol 0x01) [平成22年7月6日検索]、インターネット〈URL:http://www.openflowswitch.org/documents/openflow-spec-v1.0.0.pdf〉、2009年12月31日
上述の通り、オープンフローネットワークでは、オープンフロースイッチがデータパケットを受信する。そして、そのパケットに対するエントリがフローテーブルに見つからなかった場合、オープンフロースイッチは、セキュアチャネルを介して、オープンフローコントローラに受信パケットを転送する。このようにして、オープンフロースイッチは、データパケットに対するアクションを問い合わせる。なお、この問い合わせのことを、Packet−Inと記すこともある。
そして、オープンフローコントローラは、受信パケットの送信元および送信先を示す情報に基づいて、そのパケットに対する経路を決定する。オープンフローコントローラは、決定した経路情報(以下、FlowModと記すこともある。)を、TCP(Transmission Control Protocol )やSSL(Secure Sockets Layer)などで構築されるセキュアチャネルを用いて、該当する経路上の全てのオープンフロースイッチに送信する。
しかし、オープンフローコントローラとオープンフロースイッチとの間のセッションの品質が悪いと、オープンフローコントローラからオープンフロースイッチに送信される経路情報(FlowMod)を含むパケットが正確に届かない可能性がある。また、このパケットが届いたとしても、大きな遅延が発生する可能性がある。
この場合のパケットの流れを、図22を用いて説明する。図22は、オープンフローネットワークにおけるパケットの流れの他の例を示す説明図である。外部端末310が外部端末320に向けて送信したデータパケットがパケット転送装置210に到着すると(ステップS201)、パケット転送装置210は、受信パケットを一時的に受信バッファに格納する。そして、パケット転送装置210は、そのパケットのヘッダ情報に適合するエントリをフローテーブルから検索する。
検索の結果、フローテーブルに対象のエントリが存在しなかった場合、パケット転送装置210は、経路制御装置100に対して新規フロー検出通知メッセージ(Packet−Inメッセージ)を送信する(ステップS202)。経路制御装置100は、Packet−Inメッセージを受信すると、そのデータパケットに対する転送経路を計算する。ここでは、転送経路を計算した結果、外部端末310→パケット転送装置210→パケット転送装置220→パケット転送装置230→外部端末320の順でパケットを転送する転送経路が計算されたものとする。この場合、経路制御装置100は、パケット転送装置210〜230に対して、FlowModメッセージを送信する(ステップS203−1〜S203−3)。
ここで、パケット転送装置220に対するFlowModメッセージ(ステップS203−2で送信したFlowModメッセージ)と、パケット転送装置230に対するFlowModメッセージ(ステップS203−3で送信したFlowModメッセージ)が各パケット転送装置に到着するものとする。一方、パケット転送装置210に対するFlowModメッセージ(ステップS203−1で送信したFlowModメッセージ)がパケット損失によりによりパケット転送装置210に到着しなかったとする。パケット転送装置210にFlowModメッセージが到着しないと、パケット転送装置210は、先ほど格納したデータパケットを転送できないことになる。
しかし、パケット転送装置210にはデータパケットが外部端末310からさらに送信される。パケット転送装置210は、データパケットを受信するたびにそのパケットをバッファリングする。データパケットを転送できない状況が継続すると、いずれバッファ容量の許容量を超過し、パケットロスが発生することになる。
このように、経路制御装置100がパケット転送装置210に向けて送信した制御メッセージがパケットロスなどにより損失して予定通りに到着しなければ、データパケットがパケット転送装置210で損失してしまうことになる。このようなことを防ぐため、オープンフローコントローラからオープンフロースイッチへ送信されるパケットの遅延を抑制できることが望ましい。
また、特許文献3に記載された方式では、定期的に生成した監視パケットを各回線に出力して回線の障害を検出し、障害を検出した場合にバックアップ回線に切り替える。そのため、常に監視パケットを出力しなければならない。特許文献3に記載された方式のように、常に回線状態を監視することなくパケットの遅延を抑制できることが望ましい。
そこで、本発明は、処理規則に基づいてパケットを転送するパケット処理装置に対し、転送経路を集中制御する制御装置が処理規則を送信するネットワークで、制御装置からパケット処理装置へ送信されるパケットの遅延を抑制できる通信制御システム、制御装置、通信制御方法および通信制御プログラムを提供することを目的とする。
本発明による通信制御システムは、パケットの処理内容を規定した規則であるパケット処理規則にしたがって、受信したパケットを転送するパケット転送装置と、パケット処理規則の適用をパケット転送装置に指示することによりパケットの転送経路を制御する制御装置とを備え、制御装置が、パケット転送装置との通信状況に応じて、そのパケット転送装置との通信方法を選択する通信方法選択手段を含むことを特徴とする。
本発明による制御装置は、パケットの処理内容を規定した規則であるパケット処理規則にしたがって、受信したパケットを転送するパケット転送装置に対し、そのパケット処理規則の適用を指示することによりパケットの転送経路を制御する制御装置であって、パケット転送装置との通信状況に応じて、そのパケット転送装置との通信方法を選択する通信方法選択手段を備えたことを特徴とする。
本発明による通信制御方法は、パケットの処理内容を規定した規則であるパケット処理規則にしたがって、受信したパケットを転送するパケット転送装置に対し、そのパケット処理規則の適用を指示することによりパケットの転送経路を制御する制御装置が、パケット転送装置との通信状況に応じて、そのパケット転送装置との通信方法を選択することを特徴とする。
本発明による通信制御プログラムは、 パケットの処理内容を規定した規則であるパケット処理規則にしたがって、受信したパケットを転送するパケット転送装置に対し、そのパケット処理規則の適用を指示することによりパケットの転送経路を制御するコンピュータに適用される通信制御プログラムであって、コンピュータに、パケット転送装置との通信状況に応じて、そのパケット転送装置との通信方法を選択する通信方法選択処理を実行させることを特徴とする。
本発明によれば、処理規則に基づいてパケットを転送するパケット処理装置に対し、転送経路を集中制御する制御装置が処理規則を送信するネットワークで、制御装置からパケット処理装置へ送信されるパケットの遅延を抑制できる。
本発明の第1の実施形態における通信制御システムの例を示すブロック図である。 パケット転送装置の例を示すブロック図である。 経路制御装置の例を示すブロック図である。 セッションを構築する処理の例を示すフローチャートである。 パケットの流れの一例を示す説明図である。 新規フロー検出通知メッセージを受信したときの動作の例を示すフローチャートである。 本発明の第2の実施形態における経路制御装置の例を示すブロック図である。 新規フロー検出通知メッセージを受信したときの動作の例を示すフローチャートである。 セッションを構築する処理の例を示すフローチャートである。 Packet−Inメッセージを受信したときの動作の例を示すフローチャートである。 セッションを選択する処理の例を示すフローチャートである。 セッションを選択する動作の例を示すフローチャートである。 Packet−Inメッセージを受信したときの動作の例を示すフローチャートである。 本発明の第2の実施例における通信制御システムの例を示すブロック図である。 パケットの流れの一例を示す説明図である。 Packet−Inメッセージを受信したときの動作の例を示すフローチャートである。 パケットの送信形態を選択する処理の例を示すフローチャートである。 本発明による通信制御システムの最小構成の例を示すブロック図である。 本発明による制御装置の最小構成の例を示すブロック図である。 フローテーブルの内容を示す説明図である。 オープンフローネットワークにおけるパケットの流れの一例を示す説明図である。 オープンフローネットワークにおけるパケットの流れの他の例を示す説明図である。
以下、本発明の実施形態を図面を参照して説明する。
実施形態1.
図1は、本発明の第1の実施形態における通信制御システムの例を示すブロック図である。本実施形態における通信制御システムは、経路制御装置100と、パケット転送装置210〜230と、外部端末310〜320とを備えている。ただし、パケット転送装置および外部端末の台数は、図1に例示する台数に限定されない。パケット転送装置は、1台または2台であってもよく、4台以上であってもよい。また、外部端末の台数は3台以上であってもよい。
パケット転送装置210〜230は、パケットを受信した際に、所定のルールに基づいてそのパケットを転送する装置である。なお、このルールのことを、パケット処理規則と記すこともある。パケット転送装置は、例えば、ルータやスイッチなどにより実現される。
図2は、パケット転送装置210の例を示すブロック図である。なお、パケット転送装置220〜230もパケット転送装置210と同様の構成であるため、説明を省略する。パケット転送装置210は、制御メッセージ送受信部211と、フローテーブル記憶部212と、パケット処理部213とを備えている。
制御メッセージ送受信部211は、経路制御装置100と通信する機能を備えている。すなわち、制御メッセージ送受信部211は、経路制御装置100と制御メッセージの送受信を行う。また、制御メッセージ送受信部211は、経路制御装置100と構築するセッション数とセッション構築用のポート番号を処理する機能を備えている。
具体的には、制御メッセージ送受信部211は、セッション構築要求メッセージ(SYNメッセージ)にセッションの構築を要求するポート番号を含めて経路制御装置100に送信する。制御メッセージ送受信部211は、経路制御装置100からSYN+ACKメッセージを受信したときに、そのメッセージに対するACKを送信することで、経路制御装置100とのセッションを構築する。また、制御メッセージ送受信部211は、経路制御装置100から、セッション数が通知された場合、そのセッション数をメモリ等(図示せず)に記憶させる。
フローテーブル記憶部212は、フローテーブルを記憶する。フローテーブルには、フローごとに、パケットヘッダとの照合に用いられるマッチングルール(ヘッダフィールド)と、フロー統計情報(Counters)と、パケットに対する処理内容を定義したアクション(Actions)とを含む組が定義される。以下、この組のことを処理規則(フローエントリ)と記すこともある。フローテーブルには、例えば、図20に例示する情報が含まれる。
パケット処理部213は、フローテーブルに記憶されたアクションに基づいて、受信したパケットを処理する。具体的には、パケット転送装置210がパケットを受信すると、パケット処理部213は、フローテーブル記憶部212に記憶されたフローテーブルから、受信パケットに適合する照合規則(マッチングキー)を含む処理規則(フローエントリ)を検索する。検索の結果、受信パケットに適合するフローエントリが見つかった場合、パケット処理部213は、受信パケットに対して、該当するフローエントリのアクションフィールドに定義された処理内容(例えば、指定ポートからのパケット送信、フラッディング、廃棄等)を実施する。
一方、受信パケットに適合するエントリがフローテーブルに見つからなかった場合、パケット処理部213は、経路制御装置100に対して、新規フローを検出したことを示す制御メッセージ(すなわち、新規フロー検出通知メッセージ)を送信し、そのパケットに対する処理内容の問い合わせを行う。
経路制御装置100は、自身が管理するネットワークの経路制御を行う装置である。具体的には、経路制御装置100は、パケット転送装置にパケット処理規則の適用を指示することにより、パケットの通信経路を制御する装置である。本実施形態では、経路制御装置100は、パケット転送装置210〜230を管理対象としている。図3は、経路制御装置100の例を示すブロック図である。経路制御装置100は、フローエントリ記憶部101と、トポロジ管理部102と、経路・アクション計算部103と、フローエントリ管理部104と、制御メッセージ処理部105と、複数セッション管理部106と、端末位置記憶部107と、パケット転送装置通信部108とを備えている。
フローエントリ記憶部101は、フローエントリを記憶する。具体的には、フローエントリ記憶部101に、フローエントリをデータベースとして記憶しておく。フローエントリ記憶部101は、例えば、磁気ディスク等により実現される。フローエントリ記憶部101は、図20に例示するように、照合規則(マッチングルール)、アクション(タイマー値を含む)、および、フロー統計情報を含む処理規則(フローエントリ)を記憶する。なお、フローエントリ記憶部101には、後述するフローエントリ管理部104によってフローエントリが記憶される。
トポロジ管理部102は、後述するパケット転送装置通信部108を介して収集されたパケット転送装置210〜230の接続関係に基づいてネットワークトポロジ情報を作成し、作成したトポロジ情報を記憶する。なお、トポロジ情報とは、パケット転送装置が他の装置と接続する接続形態を示す情報であると言える。トポロジ管理部102は、例えば、パケット転送装置210〜230が保持している経路表の情報を収集し、その経路表に基づいてネットワークトポロジ情報を作成する。ただし、ネットワークトポロジ情報の作成方法は、これらの方法に限定されない。また、トポロジ管理部102は、他の経路制御装置100からネットワークトポロジ情報を受信し、そのネットワークトポロジ情報を記憶するようにしてもよい。
端末位置記憶部107は、外部端末の位置情報を記憶する。端末位置記憶部107には、例えば、IPアドレスなどの位置情報をデータベースとして記憶しておく。端末位置記憶部107には、予め管理者等が外部端末の位置情報を記憶させておいてもよく、経路制御装置100が他の経路制御装置から位置情報を受信するたびに、その位置情報を端末位置記憶部107に記憶させてもよい。端末位置記憶部107は、例えば、磁気ディスク等により実現される。
経路・アクション計算部103は、処理規則(フローエントリ)として、パケット転送装置210〜230に実行させるアクションおよびパケットの転送経路を計算する。具体的には、経路・アクション計算部103は、端末位置記憶部107に記憶された位置情報から送信端末と宛先端末の位置を特定し、トポロジ管理部102が管理するネットワークトポロジ情報をもとに、パケットの転送経路を計算する。また、経路・アクション計算部103は、そのパケットに対して転送経路上のパケット転送装置に実行させる処理(アクション)を決定する。アクションの決定方法には、任意の方法を用いることができる。経路・アクション計算部103は、例えば、転送経路が計算できた場合に、パケットを転送するというアクションを実行させると決定してもよい。また、経路・アクション計算部103は、予め定めた種類のパケットに対しては、廃棄する、所定の装置に転送するなど、所定のアクションを実行させると決定するようにしてもよい。
フローエントリ管理部104は、パケット転送装置から受信した情報に基づいて照合規則(マッチングキー)を作成する。さらに、フローエントリ管理部104は、経路・アクション計算部103が計算したフローエントリをフローエントリ記憶部101に記憶させる。また、フローエントリ管理部104は、パケット転送装置210〜230からの処理規則(フローエントリ)の追加または更新要求に応じて、処理規則(フローエントリ)をフローテーブル記憶部212に設定する指示をパケット転送装置に行う。
制御メッセージ処理部105は、パケット転送装置210〜230から受信した制御メッセージを解析して、経路制御装置100内の該当する処理手段に制御メッセージを引き渡す。例えば、パケット転送装置210〜230から新規フロー検出通知メッセージを受信した場合、制御メッセージ処理部105は、フローエントリ管理部104に対して、新規フローに対応する処理規則(フローエントリ)がフローエントリ記憶部101に登録されているか否かを確認させる。また、対応する処理規則がフローエントリ記憶部101に登録されていない場合、制御メッセージ処理部105は、新しい処理規則(フローエントリ)の作成を経路・アクション計算部103に依頼する。
複数セッション管理部106は、一台のパケット転送装置に対して複数のセッションを構築する。具体的には、複数セッション管理部106は、経路制御装置100とパケット転送装置210との間のセッションを構築する際に、構築するセッション数とそのセッションの構築に用いられるポート番号とを決定する機能を備えている。
ポート番号の決定方法には任意の方法を用いることができる。複数セッション管理部106は、例えば、Well−knownポート番号以外からポート番号をランダムに決定してもよい。ただし、ポート番号の決定方法は、ランダムに決定する方法に限定されない。複数セッション管理部106は、例えば、Well−knownポート番号以外の未使用の番号のうち、最小のポート番号を選択してもよい。また、複数セッション管理部106は、例えば、設定ファイル等に予め定めておいたセッションの数を、構築するセッション数と決定してもよい。ただし、構築するセッション数の決定方法は、上記方法に限定されない。
パケット転送装置通信部108は、経路制御装置100がパケット転送装置210〜230と通信を行う機能を備えている。すなわち、パケット転送装置通信部108は、パケット転送装置210〜230とパケットの送受信を行う。また、パケット転送装置通信部108は、パケット転送装置との通信状況に応じて、経路制御装置100とパケット転送装置との通信方法を選択する。具体的には、パケット転送装置通信部108は、複数セッション管理部106が構築した複数のセッションの中から通信を行う際に用いるセッションを選択する。
パケット転送装置通信部108は、例えば、複数のセッションの中から、最も通信品質の高いセッションを、通信に用いるセッションとして選択してもよい。通信品質の判断基準として、例えば、再送回数がより少ないセッションをより通信品質の高いセッションと定めてもよい。ネットワークの輻輳や通信障害など、通信に異常が発生した場合、再送回数は多くなる傾向にある。そのため、再送回数がより少ないセッションを選択することで、経路制御装置100からパケット転送装置に送信するメッセージの送信遅延を抑制できる。また、パケット転送装置通信部108は、後述する再送タイマの値がより小さいほど、通信状況がより優れていると判断し、より優れているセッションをパケット転送装置との通信に用いるセッションとして選択してもよい。
トポロジ管理部102と、経路・アクション計算部103と、フローエントリ管理部104と、制御メッセージ処理部105と、複数セッション管理部106と、パケット転送装置通信部108とは、プログラム(通信制御プログラム)に従って動作するコンピュータのCPUによって実現される。例えば、プログラムは、経路制御装置100の記憶部(図示せず)に記憶され、CPUは、そのプログラムを読み込み、プログラムに従って、トポロジ管理部102、経路・アクション計算部103、フローエントリ管理部104、制御メッセージ処理部105、複数セッション管理部106、および、パケット転送装置通信部108として動作してもよい。
また、トポロジ管理部102と、経路・アクション計算部103と、フローエントリ管理部104と、制御メッセージ処理部105と、複数セッション管理部106と、パケット転送装置通信部108とは、それぞれが専用のハードウェアで実現されていてもよい。
次に、本実施形態における通信制御システムの動作を説明する。図4は、経路制御装置とパケット転送装置との間のセッションを構築する処理の例を示すフローチャートである。
初めに、経路制御装置100が管理するネットワークにパケット転送装置210が参加する際の手順について説明する。以下、セッションの確立をパケット転送装置から開始する場合について説明するが、セッションの確立の開始は経路制御装置からでもよい。まず、パケット転送装置210は、経路制御装置100が管理するネットワークに参入する際に、自身の情報を経路制御装置100に通知するためのセッションを確立する。
各パケット転送装置210〜230の制御メッセージ送受信部211は、経路制御装置100に対し、セッション構築要求メッセージ(SYNメッセージ)を送信する。SYNメッセージには、接続したいサーバのポート番号などの情報が含まれる。例えば、SYNメッセージにサーバのポート番号として「6633」が指定されていたとする。このSYNメッセージを経路制御装置100が受信すると、複数セッション管理部106は、TCPのセッション確立の手順に従い、パケット転送装置210に対してSYN+ACKメッセージを送信する。
パケット転送装置210がそのSYN+ACKメッセージを受信すると、制御メッセージ送受信部211は、経路制御装置100に対して、SYN+ACKメッセージに対するACKを送信する。これにより、経路制御装置とパケット転送装置との間にTCPセッションが1本確立される。
経路制御装置100がこのTCPセッション確立と同時にパケット転送装置210からの最初のSYNメッセージを受信すると、制御メッセージ処理部105は、複数セッション管理部106に対してパケット転送装置210からセッション確立要求があったことを通知する(ステップS1101)。次に、複数セッション管理部106は、経路制御装置100とパケット転送装置210との間に構築するセッション数を決定する(ステップS1102)。ここでは、経路制御装置100とパケット転送装置210との間に構築するセッション数が2本と決定されたとする。この場合、複数セッション管理部106は、2本目のセッションを確立するために必要なポート番号を決定する(ステップS1103)。
複数セッション管理部106は、Well−knownポート番号以外からポート番号を決定する。ここでは、複数セッション管理部106がポート番号をランダムに決定するものとし、ポート番号として「1024」が選択されたものとする。なお、ポート番号の決定方法は、ランダムに決定する方法に限定されない。複数セッション管理部106は、例えば、Well−knownポート番号以外の未使用の番号のうち、最小のポート番号を選択してもよい。
パケット転送装置通信部108は、複数セッション管理部106が決定したポート番号をパケット転送装置210に通知する(ステップS1104)。このポート番号の通知は、経路制御装置100がパケット転送装置210に送信する任意のメッセージに含めて行われてもよく、別途作成されたポート番号を通知する専用のメッセージに含めて行われてもよい。
そして、経路制御装置100は、パケット転送装置210からのセッション確立要求をポート番号「1024」で待機する(ステップS1105)。パケット転送装置210の制御メッセージ送受信部211は、ポート番号を「1024」とするSYNメッセージを経路制御装置100に送信する。以降、セッションが確立されるまでの動作は、上述する内容と同様である。
具体的には、ステップS1102で構築するセッション数がNと決定された場合、ステップS1103で複数セッション管理部106がポート番号をN個選択し、パケット転送装置通信部108がステップS1104〜S1105の処理を行えばよい。このように、経路制御装置100とパケット転送装置210〜230との間でセッションが構築されることで、例えば、図1に示すネットワークが構築される。
次に、構築されたネットワークにデータパケットが到着したときの動作を説明する。図5は、パケットの流れの一例を示す説明図である。
外部端末310が外部端末320に向けてデータパケットを送信すると、データパケットは、パケット転送装置210に到着する(ステップS1601)。パケット処理部213は、そのパケットのヘッダ情報に適合する照合規則(マッチングキー)を含むエントリをフローテーブルから検索する。しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット処理部213は、受信したパケットをバッファリングしてから、経路制御装置100に対して、新規フロー検出通知メッセージを送信する(ステップS1602)。
この新規フロー検出通知メッセージには、フローの識別に必要な情報(例えば、MACアドレス、IPアドレス、ポート番号(それぞれ送信元と宛先の両方含む))と、パケットの受信ポートを示す情報が含まれる。
ここでは、パケット転送装置210が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置100に送信することを想定している。ただし、パケット転送装置210は、受信したパケットそのものを経路制御装置100に送信してもよい。
ここで、経路制御装置100が新規フロー検出通知メッセージを受信したときの動作を説明する。図6は、経路制御装置100が新規フロー検出通知メッセージを受信したときの動作の例を示すフローチャートである。
経路制御装置(コントローラ)100が新規フロー検出通知メッセージを受信すると、経路・アクション計算部103は、受信した情報に基づいて、新規エントリの照合規則(マッチングキー)を作成し、そのエントリに適用するタイマー値を決定する(ステップS1702)。照合規則として作成する情報は、例えば、図20に例示する「InPort」〜「TCP/UDP src port」の情報である。さらに、経路・アクション計算部103は、受信した情報に基づいて、宛先である外部端末320の位置確認を行い、外部端末310から外部装置320へのパケット転送経路を計算する(ステップS1703)。ここでは、転送経路を計算した結果、パケット転送装置210→パケット転送装置220→パケット転送装置230の順でパケットを転送する転送経路が計算されたものとする。
次に、経路・アクション計算部103は、新規エントリの照合規則(マッチングキー)に一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリ(処理規則)を、各パケット転送装置210〜230ごとに作成する(ステップS1704)。エントリが作成されると、パケット転送装置通信部108は、エントリ(処理規則)を送信するためのセッションを選択する(ステップS1705)。そして、パケット転送装置通信部108は、選択したセッションを用いて処理規則(FlowMod)を送信する(ステップS1706)。
以上、図6に例示する手順で、経路制御装置100は、パケット転送装置210〜230に対して処理規則を送信する(図5におけるステップS1603)。
各パケット転送装置210〜230が経路制御装置100から処理規則を受信すると、制御メッセージ送受信部211は、フローテーブルへエントリを設定する。そして、パケット処理部213は、設定されたエントリに従ってバッファリングしてあるパケットをパケット転送装置220に転送する(ステップS1604−1)。このパケットが転送される転送経路上のパケット転送装置220,230には、既にエントリの設定が行われている。そのため、このパケットは、パケット転送装置220,230の順で転送され、外部端末320に届くことになる(ステップS1604−2、ステップS1604−3)。
以後、外部端末310から外部端末320宛てにパケットが送信される場合、そのパケットは、転送経路に従って、パケット転送装置210→パケット転送装置220→パケット転送装置230の順に転送され(ステップS1605−1〜S1605−4)、外部端末320に到着する。
以上のように、本実施形態によれば、経路制御装置100のパケット転送装置通信部108が、パケット転送装置との通信状況に応じて、そのパケット転送装置との通信方法を選択する。具体的には、複数セッション管理部106がパケット転送装置との間に複数のセッションを構築し、パケット転送装置通信部108が、複数のセッションが構築されたパケット転送装置との通信状況に応じて、その複数のセッションの中からパケット転送装置との通信に用いるセッションを選択する(例えば、通信状況がより優れているセッションを選択する)。このような構成により、経路制御装置100からパケット処理装置へ送信されるパケットの遅延を抑制できる。
実施形態2.
次に、第2の実施形態における通信制御システムについて説明する。
第1の実施形態では、異常時に備え、経路制御装置100とパケット転送装置210〜230との間にセッションを複数構築する場合について説明した。第2の実施形態では、構築されるセッションは1つであり、送信するパケットの内容に応じて送信形態を選択する点において、第1の実施形態と異なる。具体的には、送信するパケットに含まれる各情報の内容に応じて、通常モードで送信するか、緊急モードで送信するかが選択される。
ここで、緊急モードとは、通常よりも優先してパケットを送信する状態のことを意味する。緊急モードの例として、例えば、TCPセッションが再送フェーズに入っており、即座にパケットを送りだすことができない場合や、送信するパケットが重要なパケットである場合などが挙げられる。
第2の実施形態における通信制御システムも、図1に例示するように、経路制御装置100と、パケット転送装置210〜230と、外部端末310〜320とを備えている。また、経路制御装置100は、第1の実施形態と同様、自身が管理するネットワークの経路制御を行う装置であり、パケット転送装置210〜230を管理対象としている。
図7は、本発明の第2の実施形態における経路制御装置100の例を示すブロック図である。第2の実施形態における経路制御装置100は、フローエントリ記憶部101と、トポロジ管理部102と、経路・アクション計算部103と、フローエントリ管理部104と、制御メッセージ処理部105と、端末位置記憶部107と、パケット転送装置通信部108とを備えている。
なお、第1の実施形態では、図3に例示する複数セッション管理部106が複数のセッションを構築し、パケット転送装置通信部108が複数のセッションの中から通信で用いるセッションを選択する機能を備えていた。また、第1の実施形態では、パケット転送装置通信部108が図2に例示するパケット転送装置の制御メッセージ送受信部211と構築するセッション数とセッション構築用のポート番号を処理する機能を備えていた。しかし、第2の実施形態における通信制御システムは、これらの機能を備えていない。一方、第2の実施形態における通信制御システムでは、図7に例示するパケット転送装置通信部108が、転送すべきパケットが重要であるか否かを判断し、重要であれば緊急モードとして優先的に送信する機能を備えている点において第1の実施形態における通信制御システムと異なる。以下、詳しく説明する。
フローエントリ記憶部101は、フローエントリを記憶する。具体的には、フローエントリ記憶部101に、フローエントリをデータベースとして記憶しておく。フローエントリ記憶部101は、例えば、磁気ディスク等により実現される。フローエントリ記憶部101は、図20に例示するように、照合規則(マッチングルール)、アクション(タイマー値を含む)、および、フロー統計情報を含む処理規則(フローエントリ)を記憶する。フローエントリ記憶部101には、フローエントリ管理部104によってフローエントリが記憶される。
トポロジ管理部102は、後述するパケット転送装置通信部108を介して収集されたパケット転送装置210〜230の接続関係に基づいてネットワークトポロジ情報を作成し、作成したトポロジ情報を記憶する。なお、トポロジ情報の作成方法および記憶方法は、第1の実施形態と同様である。また、端末位置記憶部107は、外部端末の位置情報を記憶する。なお、端末位置記憶部107が記憶する情報は、第1の実施形態と同様である。端末位置記憶部107は、例えば、磁気ディスク等により実現される。
経路・アクション計算部103は、処理規則(フローエントリ)として、パケット転送装置210〜230に実行させるアクションおよびパケットの転送経路を計算する。具体的には、経路・アクション計算部103は、端末位置記憶部107に記憶された位置情報から送信端末と宛先端末の位置を特定し、トポロジ管理部102が管理するネットワークトポロジ情報をもとに、パケットの転送経路を計算する。また、経路・アクション計算部103は、そのパケットに対して転送経路上のパケット転送装置に実行させる処理(アクション)を決定する。なお、アクションの決定方法およびパケットの転送経路の計算方法については、第1の実施形態と同様である。
フローエントリ管理部104は、パケット転送装置から受信した情報に基づいて照合規則(マッチングキー)を作成する。さらに、フローエントリ管理部104は、経路・アクション計算部103が計算したフローエントリをフローエントリ記憶部101に記憶させる。また、フローエントリ管理部104は、パケット転送装置210〜230からの処理規則(フローエントリ)の追加または更新要求に応じて、処理規則(フローエントリ)をフローテーブル記憶部212に設定する指示をパケット転送装置に行う。
制御メッセージ処理部105は、パケット転送装置210〜230から受信した制御メッセージを解析して、経路制御装置100内の該当する処理手段に制御メッセージを引き渡す。例えば、パケット転送装置210〜230から新規フロー検出通知メッセージを受信した場合、制御メッセージ処理部105は、フローエントリ管理部104に対して、新規フローに対応する処理規則(フローエントリ)がフローエントリ記憶部101に登録されているか否かを確認させる。また、対応する処理規則がフローエントリ記憶部101に登録されていない場合、制御メッセージ処理部105は、新しい処理規則(フローエントリ)の作成を経路・アクション計算部103に依頼する。
パケット転送装置通信部108は、経路制御装置100がパケット転送装置210〜230と通信を行う機能を備えている。すなわち、パケット転送装置通信部108は、パケット転送装置210〜230とパケットの送受信を行う。また、パケット転送装置通信部108は、パケットの通信状況に応じて送信形態を選択する。
具体的には、パケット転送装置通信部108は、対象とするパケットが通常よりも優先して送信すべき状況を示す場合(すなわち、より重要度の高い場合)に緊急モードで送信すると判断し、そのパケットを優先的に送信する。優先して送信すべき状況として、例えば、TCPセッションが再送フェーズに入っており、即座にパケットを送りだすことができない場合や、送信するパケットが重要なパケットである場合などが挙げられる。パケット転送装置通信部108は、送信するパケットについて予め定めておいたこれらの状況に基づいて、優先して送信すべき状況か否かを判断する。なお、パケット転送装置通信部108は、再送フェーズに入っているか否かを、再送タイマの値を参照して判断してもよい。また、パケット転送装置通信部108は、重要なパケットか否かを、パケットに含まれる情報のうちパケットの重要度を示す情報(例えば、URG(Urgent)フラグなど)を参照して判断してもよい。すなわち、パケット転送装置通信部108は、このTCPで規定される再送タイマの値がより小さいほど、通信状況がより優れていると判断し、より優れているセッションをパケット転送装置との通信に用いるセッションとして選択する。
トポロジ管理部102と、経路・アクション計算部103と、フローエントリ管理部104と、制御メッセージ処理部105と、パケット転送装置通信部108とは、プログラム(通信制御プログラム)に従って動作するコンピュータのCPUによって実現される。また、トポロジ管理部102と、経路・アクション計算部103と、フローエントリ管理部104と、制御メッセージ処理部105と、パケット転送装置通信部108とは、それぞれが専用のハードウェアで実現されていてもよい。
パケット転送装置210〜230は、第1の実施形態と同様、パケットを受信した際に、所定のルールに基づいてそのパケットを転送する装置である。また、第2の実施形態におけるパケット転送装置210〜230の構成は、図2に例示する構成と同様である。すなわち、第2の実施形態におけるパケット転送装置210も、制御メッセージ送受信部211と、フローテーブル記憶部212と、パケット処理部213とを備えている。
制御メッセージ送受信部211は、経路制御装置100と通信する機能を備えている。
フローテーブル記憶部212は、フローテーブルを記憶する。第1の実施形態と同様、フローテーブルには、フローごとに、パケットヘッダとの照合に用いられるマッチングルール(ヘッダフィールド)と、フロー統計情報(Counters)と、パケットに対する処理内容を定義したアクション(Actions)とを含む組が定義される(図20参照)。
パケット処理部213は、フローテーブル記憶部212から、受信パケットに適合する照合規則(マッチングキー)を含む処理規則(フローエントリ)を検索し、その処理規則(フローエントリ)のアクションフィールドに記述された処理内容(例えば、特定のポートへの転送、フラッディング、廃棄など)を実行する。
次に、本実施形態における通信制御システムの動作を図5を用いて説明する。
外部端末310が外部端末320に向けてデータパケットを送信すると、データパケットは、パケット転送装置210に到着する(ステップS1601)。パケット処理部213は、そのパケットのヘッダ情報に適合する照合規則(マッチングキー)を含むエントリをフローテーブルから検索する。しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット処理部213は、受信したパケットをバッファリングしてから、経路制御装置100に対して、新規フロー検出通知メッセージを送信する(ステップS1602)。
この新規フロー検出通知メッセージには、フローの識別に必要な情報(例えば、MACアドレス、IPアドレス、ポート番号(それぞれ送信元と宛先の両方含む))と、パケットの受信ポートを示す情報が含まれる。
ここでは、パケット転送装置210が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置100に送信することを想定している。ただし、パケット転送装置210は、受信したパケットそのものを経路制御装置100に送信してもよい。
ここで、経路制御装置100が新規フロー検出通知メッセージを受信したときの動作を説明する。図8は、経路制御装置100が新規フロー検出通知メッセージを受信したときの動作の例を示すフローチャートである。
経路制御装置(コントローラ)100が新規フロー検出通知メッセージを受信すると、経路・アクション計算部103は、受信した情報に基づいて、新規エントリの照合規則(マッチングキー)を作成し、そのエントリに適用するタイマー値を決定する(ステップS1502)。照合規則として作成する情報は、例えば、図20に例示する「InPort」〜「TCP/UDP src port」の情報である。さらに、経路・アクション計算部103は、受信した情報に基づいて、宛先である外部端末320の位置確認を行い、外部端末310から外部装置320へのパケット転送経路を計算する(ステップS1503)。ここでは、転送経路を計算した結果、パケット転送装置210→パケット転送装置220→パケット転送装置230の順でパケットを転送する転送経路が計算されたものとする。
次に、経路・アクション計算部103は、新規エントリの照合規則(マッチングキー)と一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリ(処理規則)を、各パケット転送装置210〜230ごとに作成する(ステップS1504)。
次に、経路制御装置100のパケット転送装置通信部108は、パケットの通信状況に応じて送信形態を選択する(ステップS1505)。具体的には、パケット転送装置通信部108は、送信するパケットの通信状況に応じて、通常モードで送信するか、緊急モードで送信するかを選択する。緊急モードの例として、例えば、TCPセッションが再送フェーズに入っており、即座にパケットを送りだすことができない場合や、送信するパケットが重要なパケットである場合などが挙げられる。
そして、経路制御装置100のパケット転送装置通信部108は、ステップS1505の処理で選択した送信形態で処理規則を送信する(ステップS1506)。
各パケット転送装置210〜230が経路制御装置(コントローラ)100から処理規則を受信すると、制御メッセージ送受信部211は、フローテーブルに受信したエントリを設定する。そして、パケット処理部213は、設定されたエントリに従って、バッファリングしてあるパケットをパケット転送装置220に転送する(図5におけるステップS1604−1)。このパケットが転送される転送経路上のパケット転送装置220,230には、既にエントリの設定が行われている。そのため、このパケットは、パケット転送装置220,230の順で転送され、外部端末320に届くことになる(ステップS1604−2、ステップS1604−3)。
以後、外部端末310から外部端末320宛てにパケットが送信される場合、そのパケットは、転送経路に従って、パケット転送装置210→パケット転送装置220→パケット転送装置230の順に転送され(ステップS1605−1〜S1605−4)、外部端末320に到着する。
以上のように、本実施形態によれば、経路制御装置100のパケット転送装置通信部108が、パケット転送装置との通信状況に応じて、そのパケット転送装置との通信方法を選択する。具体的には、パケット転送装置通信部108が、パケット転送装置との通信状況(例えば、TCPセッションが再送フェーズに入っている場合、送信するパケットが重要なパケットである場合など)に応じて、緊急モードで送信する通信方法を選択する。このような構成であっても、経路制御装置100からパケット処理装置へ送信されるパケットの遅延を抑制できる。
以下、具体的な実施例により本発明を説明するが、本発明の範囲は以下に説明する内容に限定されない。第1の実施例は、本発明の第1の実施形態における通信制御システムに対応する。以下、本実施例における通信制御システムを、図1、図3および図2を用いて説明する。
第1の実施例では、オープンフローネットワークを想定した通信制御システムについて説明する。経路制御装置(コントローラ)は、複数のセッションを管理し、その複数のセッションの中から所望のセッションを選択する機能をオープンフローコントローラに具備した装置に相当する。また、パケット転送装置は、経路制御装置(コントローラ)との間に構築されるセッションの数と各セッションを構築するポート番号とを保持する機能をオープンフロースイッチに具備した装置に相当する。
図1に例示するように、本実施例における通信制御システムは、2台の外部端末310,320と、外部端末間に3台のパケット転送装置210〜230と、このネットワークを制御する経路制御装置100とを含む。
図9は、経路制御装置とパケット転送装置との間のセッションを構築する処理の例を示すフローチャートである。以下、図9を用いて、本実施例における通信制御システムの動作について説明する。
初めに、経路制御装置(コントローラ)100が管理するオープンフローネットワークにパケット転送装置210が参加する際の手順を説明する。以下、オープンフローネットワークにおけるセッションの確立をパケット転送装置210〜230から開始する場合について説明するが、セッションの確立の開始は経路制御装置(コントローラ)100からでもよい。まず、パケット転送装置210は、経路制御装置(コントローラ)100が管理するネットワークに参入する際に、自身の情報を経路制御装置100に通知するためのセッションを確立する。ここでは、セッションをSecure Chanel(TCP または SSL)にて確立するものとする。
各パケット転送装置210〜230の制御メッセージ送受信部211は、経路制御装置(コントローラ)100に対し、セッション構築要求メッセージ(SYNメッセージ)を送信する。SYNメッセージには、接続したいサーバのポート番号などの情報が含まれる。例えば、SYNメッセージにサーバのポート番号として「6633」が指定されていたとする。このSYNメッセージを経路制御装置100が受信すると、複数セッション管理部106は、TCPのセッション確立の手順(メカニズム)に従い、パケット転送装置210に対してSYN+ACKメッセージを送信する。
パケット転送装置210がそのSYN+ACKメッセージを受信すると、制御メッセージ送受信部211は、経路制御装置100に対して、SYN+ACKメッセージに対するACKを送信する。これにより、経路制御装置とパケット転送装置との間にTCPセッションが1本確立される。
経路制御装置100がこのTCPセッション確立と同時にパケット転送装置210からの最初のSYNメッセージを受信すると、制御メッセージ処理部105は、複数セッション管理部106に対してパケット転送装置210からセッション確立要求があったことを通知する(ステップS301)。次に、複数セッション管理部106は、経路制御装置100とパケット転送装置210との間に構築するセッション数(コネクション数)を決定する(ステップS302)。ここでは、経路制御装置100とパケット転送装置210との間に構築するセッション数が2本と決定されたとする。この場合、複数セッション管理部106は、2本目のセッションを確立するために必要なポート番号を決定する(ステップS303)。
複数セッション管理部106は、Well−knownポート番号以外からポート番号を決定する。ここでは、複数セッション管理部106がポート番号をランダムに決定するものとし、ポート番号として「1024」が選択されたものとする。なお、ポート番号の決定方法は、ランダムに決定する方法に限定されない。複数セッション管理部106は、例えば、Well−knownポート番号以外の未使用の番号のうち、最小のポート番号を選択してもよい。
パケット転送装置通信部108は、複数セッション管理部106が決定したポート番号をFeatures Requestメッセージに含めてパケット転送装置210に通知する(ステップS304)。ただし、ポート番号を通知する際に用いるメッセージはFeatures Requestメッセージに限定されない。このポート番号の通知は、例えば、経路制御装置100がパケット転送装置210に送信する任意のメッセージに含めて行われてもよく、別途作成されたポート番号を通知する専用のメッセージに含めて行われてもよい。
そして、経路制御装置100は、パケット転送装置210からのセッション確立要求をポート番号「1024」で待機する(ステップS305)。パケット転送装置210の制御メッセージ送受信部211は、Features Requestに対する応答であるFeatures Replyを経路制御装置(コントローラ)100に返信した後、ポート番号を「1024」とするSYNメッセージを経路制御装置(コントローラ)100に送信する。以降、セッションが確立されるまでの動作は、上述する内容と同様である。
具体的には、ステップS302で構築するセッション数がNと決定された場合、ステップS303で複数セッション管理部106がポート番号をN個選択する。そして、パケット転送装置通信部108がステップS304〜S305の処理を行えばよい。このように、経路制御装置100とパケット転送装置210〜230との間でセッションが構築されることで、オープンフローネットワークが構築される。
次に、構築されたオープンフローネットワークにデータパケットが到着したときの動作を図21を用いて説明する。
外部端末310が外部端末320に向けてデータパケットを送信すると、データパケットは、パケット転送装置210に到着する(ステップS901)。パケット転送装置210がデータパケットを受信すると、パケット処理部213は、そのパケットのヘッダ情報に適合する照合規則(マッチングキー)を含むエントリをフローテーブルから検索する。しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット処理部213は、受信したパケットをバッファリングしてから、経路制御装置(コントローラ)100に対して、新規フロー検出通知メッセージ(Packet−Inメッセージ)を送信する(ステップS902)。
このPacket−Inメッセージには、フローの識別に必要な情報(例えば、MACアドレス、IPアドレス、ポート番号(それぞれ送信元と宛先の両方含む))と、パケットの受信ポートを示す情報が含まれる。
ここでは、パケット転送装置210が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置100に送信することを想定している。ただし、パケット転送装置210は、受信したパケットそのものを経路制御装置100に送信してもよい。
ここで、経路制御装置(コントローラ)100がPacket−Inメッセージを受信したときの動作を説明する。図10は、経路制御装置(コントローラ)100がPacket−Inメッセージを受信したときの動作の例を示すフローチャートである。
経路制御装置(コントローラ)100がPacket−Inメッセージを受信すると、経路・アクション計算部103は、受信した情報に基づいて、新規エントリの照合規則(マッチングキー)を作成し、そのエントリに適用するタイマー値を決定する(ステップS402)。照合規則として作成する情報は、例えば、図20に例示する「InPort」〜「TCP/UDP src port」の情報である。さらに、経路・アクション計算部103は、受信した情報に基づいて、宛先である外部端末320の位置確認を行い、外部端末310から外部装置320へのパケット転送経路を計算する(ステップS403)。ここでは、転送経路を計算した結果、パケット転送装置210→パケット転送装置220→パケット転送装置230の順でパケットを転送する転送経路が計算されたものとする。
次に、経路制御装置(コントローラ)100の経路・アクション計算部103は、新規エントリの照合規則(マッチングキー)と一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリ(FlowModメッセージ)を、各パケット転送装置210〜230ごとに作成する(ステップS404)。FlowModメッセージが作成されると、経路制御装置(コントローラ)100のパケット転送装置通信部108は、FlowModメッセージを送信するためのセッションを選択し(ステップS405)、選択したセッションを用いて処理規則(FlowMod)を送信する(ステップS406)。
なお、ステップS405において、パケット転送装置通信部108は、例えば、TCPのタイマフィールドの内容をもとに、FlowModメッセージを送信する際に用いるセッションを選択する。以下、TCPのタイマフィールドの内容をもとにセッションを選択する方法を詳しく説明する。
図11は、セッションを選択する処理の例を示すフローチャートである。第1の実施例において、経路制御装置(コントローラ)とパケット転送装置210との間の1本目のセッションをセッションAと記し、2本目のセッションをセッションBと記す。
TCPでは、送信したデータに対する相手からの確認応答パケットを所定の時間内に受信しなければ、再送タイマが作動する。ここで、再送タイマが作動するとは、確認応答(ACK)の待ち時間が所定の時間経過したことを示す。再送タイマが作動しているか否かは、各セッションの再送タイマの作動回数を示す変数であるt_rxtshift変数を参照すれば判断できる。すなわち、t_rxtshift変数の値が0の場合、再送タイマは作動しておらず、t_rxtshift変数の値が1以上の場合再送タイマが作動していることを意味する。具体的には、t_rxtshift変数の値がKであれば、再送処理が連続してK回行われていることを示す。以下、t_rxtshift変数の値のことを、t_rxtshift値または再送タイマ値と記すこともある。
この変数の値が大きいと言うことは、データパケットが送信先の端末に到着している可能性が高いことを意味する。言い換えると、この変数の値が小さいセッションほど、品質が良いと判断できる。
そこで、経路制御装置(コントローラ)100のパケット転送装置通信部108は、各セッションのt_rxtshift変数の値を確認する(ステップS601)。第1の実施例において、セッションAのt_rxtshift変数の値をa、セッションBのt_rxtshift変数の値をb(≧a)とする。経路制御装置(コントローラ)100のパケット転送装置通信部108は、はaとbの値を比較する(ステップS602)。そして、パケット転送装置通信部108は、再送タイマ値が最も小さいセッションを選択する(ステップS603)。この場合、パケット転送装置通信部108は、再送タイマ値が小さいセッションAを選択する。その結果、経路制御装置(コントローラ)100のパケット転送装置通信部108は、ステップS603で決定されたセッション(すなわち、セッションA)を用いてFlowModメッセージを送信する。
このように、このように経路制御装置(コントローラ)100とパケット転送装置210〜230との間に複数のセッションを構築し、経路制御装置(コントローラ)100(より詳しくは、パケット転送装置通信部108)がパケット転送装置210〜230に対してパケットを送信する際に、通信品質の良いセッションを選択する。そのため、パケット転送装置210〜230に対してパケットを正確に送信することができる。
以上、経路制御装置(コントローラ)100とパケット転送装置210との間の通信を例に、FlowModを送信するまでの処理を説明した。なお、経路制御装置(コントローラ)100とパケット転送装置220との間の通信、および、経路制御装置(コントローラ)100とパケット転送装置230との間の通信についても同様であるため、説明を省略する。
各パケット転送装置210〜230が経路制御装置(コントローラ)100からFlowModを受信すると、制御メッセージ送受信部211は、フローテーブルに受信したエントリを設定する。そして、パケット処理部213は、設定されたエントリに従って、バッファリングしてあるパケットをパケット転送装置220に転送する(図21におけるステップS904−1)。このパケットが転送される転送経路上のパケット転送装置220,230には、既にエントリの設定が行われている。そのため、このパケットは、パケット転送装置220,230の順で転送され、外部端末320に届くことになる(ステップS904−2、ステップS904−3)。
以後、外部端末310から外部端末320宛てにパケットが送信される場合、そのパケットは、転送経路に従って、パケット転送装置210→パケット転送装置220→パケット転送装置230の順に転送され(ステップS905−1〜S905−4)、外部端末320に到着する。
次に、第1の実施例における第1の変形例について説明する。第1の実施例では、複数のセッションを構築し、通信状況に応じて使用するセッションを選択する場合について説明した。本変形例では、経路制御装置(コントローラ)100とパケット転送装置210との間で事前にプライマリセッション(以下、Primaryセッションと記す。)およびセカンダリセッション(以下、Secondaryセッションと記す。)を決定しておく点において、第1の実施例と異なる。通常時には、装置間の通信にPrimaryセッションが使用され、Primaryセッションの異常時には、装置間の通信にSecondaryセッションが使用される。
本変形例における通信制御システムの動作を説明する。経路制御装置(コントローラ)100がPacket−Inメッセージを受信して各パケット転送装置210〜230ごとにFlowModメッセージを作成するまでの処理は、図10に例示するステップS402〜ステップS404と同様である。その後、経路制御装置(コントローラ)100のパケット転送装置通信部108は、FlowModメッセージを送信するためのセッションを選択する。このセッションを選択する動作を図12を用いて説明する。
図12は、セッションを選択する動作の例を示すフローチャートである。以下の説明において、Primaryセッションは、1本目に構築されたセッション、Secondaryセッションは、2本目に構築されたセッションとする。まず、パケット転送装置通信部108は、セッションを選択するときに、Primaryセッションのt_rxtshift値を参照する(ステップS501)。そして、パケット転送装置通信部108は、異常と判断する際の基準値として予め設定された値(以下、thresholdと記す。)と、Primaryセッションのt_rxtshift値とを比較する(ステップS502)。
Primaryセッションのt_rxtshift値が基準値より大きければ(ステップS502におけるY)、パケット転送装置通信部108は、Primaryセッションの異常と判断し、Primaryセッションを選択せずに、Secondaryセッションを選択する(ステップS503)。一方、Primaryセッションのt_rxtshift値が基準値以下であれば(ステップS502におけるN)、パケット転送装置通信部108は、Primaryセッションが通常の通信状況にあると判断し、Primaryセッションを選択する(ステップS504)。そして経路制御装置(コントローラ)100のパケット転送装置通信部108は、選択したセッションを用いて、パケット転送装置210〜230に対してFlowModメッセージを送信する。
このような方法でも、通信品質の良いセッションを選択できるため、経路制御装置(コントローラ)100からパケット転送装置へ送信されるパケットの遅延を抑制できる。
次に、第1の実施例における第2の変形例を説明する。第1の実施例および第1の実施例における第1の変形例では、経路制御装置(コントローラ)100とパケット転送装置210〜230との間の2本目以降のセッションもネットワーク構築時に構築される場合について説明した。本変形例では、1本目のセッションについては、第1の実施例および第1の実施例における第1の変形例と同様、ネットワーク構築時に構築される。一方、2本目のセッションについては、1本目のセッションに異常が発生したタイミングで構築される点において、第1の実施例および第1の実施例における第1の変形例と異なる。
本変形例における通信制御システムの動作を説明する。まず初めに、経路制御装置(コントローラ)100が管理するオープンフローネットワークにパケット転送装置210が参加する際の手順を説明する。以下、オープンフローネットワークにおけるセッションの確立をパケット転送装置210〜230から開始する場合について説明するが、セッションの確立の開始は経路制御装置(コントローラ)100からでもよい。まず、パケット転送装置210は、経路制御装置(コントローラ)100が管理するネットワークに参入する際に、自身の情報を経路制御装置100に通知するためのセッションを確立する。ここでは、セッションをSecure Chanel(TCP または SSL)にて確立するものとする。
各パケット転送装置210〜230の制御メッセージ送受信部211は、経路制御装置(コントローラ)100に対し、セッション構築要求メッセージ(SYNメッセージ)を送信する。SYNメッセージには、接続したいサーバのポート番号などの情報が含まれる。例えば、SYNメッセージにサーバのポート番号として「6633」が指定されていたとする。このSYNメッセージを経路制御装置100が受信すると、複数セッション管理部106は、TCPのセッション確立の手順に従い、パケット転送装置210に対してSYN+ACKメッセージを送信する。
パケット転送装置210がそのSYN+ACKメッセージを受信すると、制御メッセージ送受信部211は、経路制御装置100に対して、SYN+ACKメッセージに対するACKを送信する。これにより、経路制御装置とパケット転送装置との間にTCPセッションが1本確立される。この手順により、オープンフローネットワークが構築されたとする。
次に、構築されたオープンフローネットワークにデータパケットが到着したときの動作を図21を用いて説明する。外部端末310が外部端末320に向けてデータパケットを送信すると、データパケットは、パケット転送装置210に到着する(ステップS901)。パケット転送装置210がデータパケットを受信すると、パケット処理部213は、そのパケットのヘッダ情報に適合する照合規則(マッチングキー)を含むエントリをフローテーブルから検索する。しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット処理部213は、受信したパケットをバッファリングしてから、経路制御装置(コントローラ)100に対して、新規フロー検出通知メッセージ(Packet−Inメッセージ)を送信する(ステップS902)。
このPacket−Inメッセージには、フローの識別に必要な情報(例えば、MACアドレス、IPアドレス、ポート番号(それぞれ送信元と宛先の両方含む))と、パケットの受信ポートを示す情報が含まれる。
ここでは、パケット転送装置210が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置100に送信することを想定している。ただし、パケット転送装置210は、受信したパケットそのものを経路制御装置100に送信してもよい。
ここで、経路制御装置(コントローラ)100がPacket−Inメッセージを受信したときの動作を説明する。図13は、経路制御装置(コントローラ)100がPacket−Inメッセージを受信したときの動作の例を示すフローチャートである。
経路制御装置(コントローラ)100がPacket−Inメッセージを受信すると、経路・アクション計算部103は、受信した情報に基づいて、新規エントリの照合規則(マッチングキー)を作成し、そのエントリに適用するタイマー値を決定する(ステップS1202)。照合規則として作成する情報は、例えば、図20に例示する「InPort」〜「TCP/UDP src port」の情報である。さらに、経路・アクション計算部103は、受信した情報に基づいて、宛先である外部端末320の位置確認を行い、外部端末310から外部装置320へのパケット転送経路を計算する(ステップS1203)。ここでは、転送経路を計算した結果、パケット転送装置210→パケット転送装置220→パケット転送装置230の順でパケットを転送する転送経路が計算されたものとする。
次に、経路制御装置(コントローラ)100の経路・アクション計算部103は、新規エントリの照合規則(マッチングキー)と一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリ(FlowModメッセージ)を、各パケット転送装置210〜230ごとに作成する(ステップS1204)。
次に経路制御装置(コントローラ)100では、作成したエントリを送信する処理に移る。その際に、パケット転送装置通信部108は、そのセッションが即座にパケットを送信できる状態か否かをチェックする。チェックする指標として、TCPの再送タイマに係る変数(t_rxtshift)が用いられる。TCPの再送タイマが所定の値(threshold)よりも大きいと言うことは、パケット転送装置へ送信したパケットが届いていないことを示しているとも言える。
経路制御装置(コントローラ)100のパケット転送装置通信部108は、t_rxtshift値を参照し(ステップS1205)、異常と判断する際の基準値として予め設定された値(threshold)と、t_rxtshift値とを比較する(ステップS1206)。ここでは、thresholdを品質劣化と判定する際の基準値として用いる。
t_rxtshift値がthresholdより大きければ(ステップS1206におけるY)、複数セッション管理部106は、2本目以降のセッションを構築すると決定する(ステップS1207)。
次に、複数セッション管理部106は、2本目のセッションを確立するために必要なポート番号を決定する(ステップS1208)。複数セッション管理部106は、Well−knownポート番号以外からポート番号を決定する。ここでは、複数セッション管理部106がポート番号をランダムに決定するものとし、ポート番号として「1024」が選択されたものとする。なお、ポート番号の決定方法は、ランダムに決定する方法に限定されない。複数セッション管理部106は、例えば、Well−knownポート番号以外の未使用の番号のうち、最小のポート番号を選択してもよい。
パケット転送装置通信部108は、複数セッション管理部106が決定したポート番号をパケット転送装置210に通知する(ステップS1209)。このポート番号の通知は、経路制御装置100がパケット転送装置210に送信する任意のメッセージに含めて行われてもよく、別途作成されたポート番号を通知する専用のメッセージに含めて行われてもよい。
そして、経路制御装置(コントローラ)100は、パケット転送装置210からのセッション確立要求をポート番号「1024」で待機する(ステップS1210)。パケット転送装置210の制御メッセージ送受信部211は、Featureポート番号を「1024」とするSYNメッセージを経路制御装置100に送信する。以降、セッションが確立されるまでの動作は、上述する内容と同様である。
セッションの確立後、経路制御装置(コントローラ)100のパケット転送装置通信部108は、新たに構築したセッションを用いてFlowModをパケット転送装置210〜230に対して送信する(ステップS1211)。
なお、ステップS1206において、t_rxtshift値がthreshold以下の場合(ステップS1206におけるN)、パケット転送装置通信部108は、既存のセッションを用いてFlowModをパケット転送装置210〜230に対して送信する(ステップS1211)。
また、図13のステップS1211において、FlowModが送信される処理が、図21におけるステップS903の処理に相当する。以降、データパケットは、ステップS904−1〜S904−3、および、ステップS905−1〜ステップS905−4の処理に基づいて、外部端末320に送信される。
このような方法でも、通信品質の良いセッションを選択できるため、経路制御装置(コントローラ)100からパケット転送装置へ送信されるパケットの遅延を抑制できる。
なお、第1の実施形態、第1の実施例、第1の実施例における第1の変形例および第1の実施例における第2の変形例のいずれも、1台の経路制御装置(コントローラ)が1台のパケット転送装置と複数のセッションを構築する場合について説明した。ただし、経路制御装置(コントローラ)の台数は1台に限定されない。2台以上の経路制御装置(コントローラ)が1台のパケット転送装置に対して複数のセッションを構築してもよい。
また、第1の実施形態では、複数セッション管理部106が、経路制御装置(コントローラ)100とパケット転送装置210〜230との間にSecure Channelを複数本構築する。一般的には、経路制御装置(コントローラ)100とパケット転送装置210〜230との間に構築されるSecure Channelは一本である。しかし、Secure Channelが一本であると、そのSecure Channelの品質が悪い場合、経路制御装置(コントローラ)100が送信したパケットがパケット転送装置210〜230に届かない可能性がある。しかし、本実施形態では、複数セッション管理部106が構築した複数のセッションの中から、品質の良いセッションを選択する。そのため、例えば、特許文献1、非特許文献1,2に記載されたオープンフローネットワークと比較して、高確率で経路制御装置(コントローラ)100からのパケットをパケット転送装置に届けることができる。
次に、本発明の第2の実施例について説明する。第2の実施例は、本発明の第2の実施形態における通信制御システムに対応する。第2の実施例も、第1の実施例と同様、オープンフローネットワークを想定した通信制御システムについて説明する。
経路制御装置(コントローラ)100は、パケットの通信状況に応じて送信形態を選択する機能をオープンフローコントローラに具備した装置に相当する。また、パケット転送装置は、オープンフロースイッチそのものに相当する。
図14は、本発明の第2の実施例における通信制御システムの例を示すブロック図である。本実施例における通信制御システムは、経路制御装置(コントローラ)100と、3台のパケット転送装置210〜230と、4台の外部端末310〜340とを備えている。この通信制御システムでオープンフローネットワークを形成しているものとする。また、外部端末310〜340の間に3台のパケット転送装置210〜230が存在し、経路制御装置(コントローラ)100がこのオープンフローネットワークを制御する
なお、以下の説明では、外部端末310が外部端末320へデータパケットを送信し、外部端末330が外部端末340へデータパケットを送信するものとする。
次に、構築されたオープンフローネットワークにデータパケットが到着したときの動作を説明する。図15は、パケットの流れの一例を示す説明図である。
パケット転送装置210が外部端末310からデータパケットを受信すると(ステップS1901)、パケット処理部213は、そのパケットのヘッダ情報に適合する照合規則(マッチングキー)を含むエントリをフローテーブルから検索する。しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット処理部213は、受信したパケットをバッファリングしてから、経路制御装置(コントローラ)100に対して、新規フロー検出通知メッセージ(Packet−In)を送信する(ステップS1902)。
この新規フロー検出通知メッセージ(Packet−In)には、フローの識別に必要な情報(例えば、MACアドレス、IPアドレス、ポート番号(それぞれ送信元と宛先の両方含む))と、パケットの受信ポートを示す情報が含まれる。
ここでは、パケット転送装置210が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置100に送信することを想定している。ただし、パケット転送装置210は、受信したパケットそのものを経路制御装置100に送信してもよい。
ここで、経路制御装置(コントローラ)100がPacket−Inメッセージを受信したときの動作を説明する。図16は、経路制御装置(コントローラ)100がPacket−Inメッセージを受信したときの動作の例を示すフローチャートである。
経路制御装置(コントローラ)100が新規フロー検出通知メッセージ(Packet−In)を受信すると、経路・アクション計算部103は、受信した情報に基づいて、新規エントリの照合規則(マッチングキー)を作成し、そのエントリに適用するタイマー値を決定する(ステップS1802)。照合規則として作成する情報は、例えば、図20に例示する「InPort」〜「TCP/UDP src port」の情報である。さらに、経路・アクション計算部103は、受信した情報に基づいて、宛先である外部端末320の位置確認を行い、外部端末310から外部装置320へのパケット転送経路を計算する(ステップS1803)。ここでは、転送経路を計算した結果、パケット転送装置210→パケット転送装置220→パケット転送装置230の順でパケットを転送する転送経路が計算されたものとする。
次に、経路制御装置(コントローラ)100の経路・アクション計算部103は、新規エントリの照合規則(マッチングキー)と一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリ(FlowMod)を、各パケット転送装置210〜230ごとに作成する(ステップS1804)。
次に、経路制御装置(コントローラ)100のパケット転送装置通信部108は、パケットの送信形態を選択し(ステップS1805)、その送信形態でFlowModを送信する(ステップS1806)。
さらに、ステップS1805においてパケット転送装置通信部108が、パケットの送信形態を選択する方法を説明する。図17は、パケットの送信形態を選択する処理の例を示すフローチャートである。第2の実施例では、送信形態を選択する際、TCPの再送タイマの作動回数を示す変数(t_rxtshift)を用いる。
まず、経路制御装置(コントローラ)100のパケット転送装置通信部108は、TCPの再送タイマの作動回数を示す変数であるt_rxtshift値を参照する(ステップS1301)。そして、パケット転送装置通信部108は、異常と判断する際の基準値として予め設定された値(threshold)と、t_rxtshift値とを比較し、t_rxtshift値がthreshold以上か否かを判断する(ステップS1302)。ここで、threshold≧1の場合、TCPが再送フェーズに入っていることを示すことから、予めthreshold=1と設定しておく。
また、経路制御装置(コントローラ)100がパケット転送装置210からPacket−Inを受信するまで、パケットロスは発生していないものと仮定する。すなわち、最初の状態では、t_rxtshiftの値は0である。よって、t_rxtshift≧thresholdは偽と判断される(すなわち、t_rxtshift値がthreshold以上でないと判断される)ため(ステップS1302におけるN)、経路制御装置(コントローラ)100のパケット転送装置通信部108は、パケット転送装置210に対して、通常通りFlowModを送信する(ステップS1304)。なお、t_rxtshift値がthreshold以上であると判断された場合(ステップS1302におけるY)の処理については後述する。
なお、図17のステップS1304において、FlowModが送信される処理が、図15におけるステップS1903−1の処理に相当する。また、経路制御装置(コントローラ)100とパケット転送装置220との間のセッション、および、経路制御装置(コントローラ)100とパケット転送装置230との間のセッションにおける通信でも、パケットロスは発生していないと仮定する。この場合、経路制御装置(コントローラ)100では同様の処理が行われ、経路制御装置(コントローラ)100のパケット転送装置通信部108は、パケット転送装置220〜230にFlowModを送信する(図15におけるステップS1903−2、ステップS1903−3)。
ここで、パケット転送装置220に対するFlowModメッセージ(ステップS1903−2で送信したFlowModメッセージ)と、パケット転送装置230に対するFlowModメッセージ(ステップS1903−3で送信したFlowModメッセージ)が各パケット転送装置に到着したとする。一方、パケット転送装置210に対するFlowModメッセージ(ステップS1903−1で送信したFlowModメッセージ)がパケット転送装置210に到着しなかったとする。
経路制御装置(コントローラ)100のタイマ起動部(図示せず)は、各FlowMod(ステップS1903−1、ステップS1903−2、ステップS1903−3)を送信した時にタイマをスタートさせる。なお、タイマをスタートさせるタイマ起動部(図示せず)の処理は、TCPで規定された処理である。タイマ起動部(図示せず)は、TCPの規定に基づき、送信したパケットに対する受信確認応答をタイマが切れる前に受信する。このようにすることで、タイマ起動部は、送信したパケットが到着したことを確認する。
図15に例示するように、ステップS1903−1で送信されたFlowModの通信において、パケットロスが発生しており、経路制御装置(コントローラ)100のタイマ起動部(図示せず)は、タイマが切れる前に受信確認応答を受信することができない。この場合、タイマ起動部(図示せず)は、TCPの規定に基づき、t_rxtshift値を1インクリメントする(t_rxtshift=1)。そして、パケット転送装置通信部108は、ステップS1903−1で送信したFlowModを再送する(ステップS1904−1)。仮に、このFlowModも損失したとすると、タイマ起動部(図示せず)は、TCPの規定に基づき、t_rxtshift値を、さらに1インクリメントする(t_rxtshift=2)。
この状態から、外部端末330が外部端末340宛てに送信したデータパケットがパケット転送装置210に到着すると(ステップS1905)、パケット転送装置210は、フローテーブルから、そのパケットのヘッダ情報に適合する照合規則(マッチングキー)を含むエントリを検索する。しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット処理部213は、受信したパケットをバッファリングしてから、経路制御装置(コントローラ)100に対して、新規フロー検出通知メッセージ(Packet−In)を送信する(ステップS1906)。
この新規フロー検出通知メッセージ(Packet−In)には、フローの識別に必要な情報(例えば、MACアドレス、IPアドレス、ポート番号(それぞれ送信元と宛先の両方含む))と、パケットの受信ポートを示す情報が含まれる。
ここでは、パケット転送装置210が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置100に送信することを想定している。ただし、パケット転送装置210は、受信したパケットそのものを経路制御装置100に送信してもよい。
ここで、経路制御装置(コントローラ)100がPacket−Inメッセージを受信したときの動作について図16を用いて説明する。
経路制御装置(コントローラ)100が新規フロー検出通知メッセージ(Packet−In)を受信すると、経路・アクション計算部103は、受信した情報に基づいて、新規エントリの照合規則(マッチングキー)を作成し、そのエントリに適用するタイマー値を決定する(ステップS1802)。照合規則として作成する情報は、例えば、図20に例示する「InPort」〜「TCP/UDP src port」の情報である。さらに、経路・アクション計算部103は、受信した情報に基づいて、宛先である外部端末340の位置確認を行い、外部端末330から外部装置340へのパケット転送経路を計算する(ステップS1803)。ここでは、転送経路を計算した結果、パケット転送装置210→パケット転送装置220→パケット転送装置230の順でパケットを転送する転送経路が計算されたものとする。
次に、経路制御装置(コントローラ)100の経路・アクション計算部103は、新規エントリの照合規則(マッチングキー)と一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリ(FlowMod)を、各パケット転送装置210〜230ごとに作成する(ステップS1804)。
次に、経路制御装置(コントローラ)100のパケット転送装置通信部108は、パケットの送信形態を選択し(ステップS1805)、その送信形態でFlowModを送信する(ステップS1806)。
ここでも、ステップS1805においてパケット転送装置通信部108が、パケットの送信形態を選択する方法を図17を用いて説明する。
まず、経路制御装置(コントローラ)100のパケット転送装置通信部108は、TCPの再送タイマの作動回数を示す変数であるt_rxtshift値を参照する(ステップS1301)。そして、パケット転送装置通信部108は、t_rxtshift値がthreshold以上か否かを判断する(ステップS1302)。ステップS1904−1の処理、および、再度の再送処理が行われたことにより、t_rxtshift値は2であるため、再送フェーズに入っていることが分かる。
よって、t_rxtshift≧thresholdは真と判断される(すなわち、t_rxtshift値がthreshold以上であると判断される)ため(ステップS1302におけるY)、パケット転送装置通信部108は、TCPの規定に基づき、TCPヘッダのURGビットをセットする(ステップS1303)。なお、URGビットとは、TCPパケット中に緊急データが含まれていることを表す情報である。TCPの規定により、URGビットが設定されたパケットが保持されると、再送タイマの値がリセットされる(すなわち、t_rxtshift=0になる)。そのため、パケット転送装置通信部108がパケット(FlowMod)を即座に送信することが可能になる(ステップS1304)。
なお、ここでFlowModを送信するステップS1304の処理が、図15におけるステップS1907−1の処理に相当する。すなわち、経路制御装置100がFlowModをパケット転送装置210に送信するため、パケット転送装置210は、ステップS1906で送信したPacket−Inに対するFlowModを受信することができる(ステップS1907−1)。また、経路制御装置(コントローラ)100では同様の処理が行われ、経路制御装置(コントローラ)100のパケット転送装置通信部108は、パケット転送装置220〜230にFlowModを送信する(ステップS1907−2、ステップS1907−3)。
さらに、パケット転送装置通信部108は、ステップS1901で送信されたデータパケットに対するS1908−1のFlowModに対しても同様の動作を行うことで、パケット転送装置210に対し、FlowModを送信できる(ステップS1908−1)。
各パケット転送装置210〜230が経路制御装置(コントローラ)100からこれらの処理規則(FlowMod)を受信すると、制御メッセージ送受信部211は、フローテーブルに受信したエントリを設定する。そして、パケット処理部213は、設定されたエントリに従って、バッファリングしてあるパケットをパケット転送装置220に転送する(図15におけるステップS1905−1、ステップS1901−1)。このパケットが転送される転送経路上のパケット転送装置220,230には、既にエントリの設定が行われている。そのため、このパケットは、パケット転送装置220,230の順で転送され、外部端末320及び外部端末340に届くことになる(ステップS1905−2、ステップS1901−2、ステップS1905−3、ステップS1901−3)。
なお、第1の実施形態および第2の実施形態の説明では、パケット転送装置通信部108が、FlowModを対象に緊急モードで送るか否かを判断する場合について説明した。ただし、緊急モードで送るか否かを判断する対象は、FlowModに限定されない。パケット転送装置通信部108は、例えば、パケットの重要度に応じて、緊急モードで送信するか否かを判断してもよい。
次に、本発明の最小構成を説明する。図18は、本発明による通信制御システムの最小構成の例を示すブロック図である。本発明による通信制御システムは、パケットの処理内容を規定した規則であるパケット処理規則にしたがって、受信したパケットを転送するパケット転送装置80(例えば、パケット転送装置210〜230)と、パケット処理規則の適用をパケット転送装置に指示することによりパケットの転送経路を制御する制御装置90(例えば、経路制御装置100)とを備えている。
制御装置90は、パケット転送装置80との通信状況に応じて、そのパケット転送装置との通信方法を選択する通信方法選択手段91(例えば、パケット転送装置通信部108)を含む。
そのような構成により、パケット処理装置に対して制御装置が処理規則を送信するネットワークで、制御装置からパケット処理装置へ送信されるパケットの遅延を抑制できる。
また、制御装置90は、パケット転送装置80との間に複数のセッションを構築する複数セッション構築手段(例えば、複数セッション管理部106)を含んでいてもよい。そして、通信方法選択手段91は、複数のセッションが構築されたパケット転送装置80との通信状況に応じて、その複数のセッションの中からそのパケット転送装置との通信に用いるセッションを選択してもよい。
また、通信方法選択手段91は、パケット転送装置80との通信状況に応じて、通常よりも優先してパケットを送信する状態である緊急モードで送信する通信方法を選択してもよい。
また、複数セッション構築手段が、複数のセッションのうち、通常の通信に用いられるセッションであるプライマリセッション(Primaryセッション)と、プライマリセッションの異常時に用いられるセッションであるセカンダリセッション(Secondaryセッション)とを予め決定してもよい。そして、通信方法選択手段91は、通常時にはプライマリセッションを選択し、プライマリセッションの異常時にセカンダリセッションを選択してもよい。
また、複数セッション構築手段は、パケット転送装置との通信状況に応じて、パケット転送装置との間に構築するコネクションを追加してもよい。そして、通信方法選択手段91は、パケット転送装置80へ送信したパケットが届いていない場合に、複数セッション構築手段が通信状況に応じて追加したコネクションをパケット転送装置との通信に用いるセッションとして選択してもよい。
また、通信方法選択手段91は、TCPで規定される再送タイマに基づいて、パケット転送装置との通信状況の優劣を判断してもよく、送信するパケットの重要度に基づいて、パケット転送装置との通信方法を選択してもよい。
また、図19は、本発明による制御装置の最小構成の例を示すブロック図である。図19に例示する制御装置は、図18に例示する制御装置90の内容と同様である。このような構成によっても、制御装置からパケット処理装置へ送信されるパケットの遅延を抑制できる。
以上、実施形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2010年12月14日に出願された日本特許出願2010−278544を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明は、他の装置に対するパケットの送信遅延を抑制して通信の制御を行う通信制御システムに好適に適用される。
100 経路制御装置
101 フローエントリ記憶部
102 トポロジ管理部
103 経路・アクション計算部
104 フローエントリ管理部
105 制御メッセージ処理部
106 複数セッション管理部
107 端末位置記憶部
108 パケット転送装置通信部
210〜230 パケット転送装置
211 制御メッセージ送受信部
212 フローテーブル記憶部
213 パケット処理部
310〜340 外部端末

Claims (10)

  1. パケットの処理内容を規定した規則であるパケット処理規則にしたがって、受信したパケットを転送するパケット転送装置と、
    前記パケット処理規則の適用を前記パケット転送装置に指示することによりパケットの転送経路を制御する制御装置とを備え、
    前記制御装置は、
    前記パケット転送装置との通信状況に応じて、当該パケット転送装置との通信方法を選択する通信方法選択手段を含む
    ことを特徴とする通信制御システム。
  2. 制御装置は、
    パケット転送装置との間に複数のセッションを構築する複数セッション構築手段を含み、
    通信方法選択手段は、複数のセッションが構築されたパケット転送装置との通信状況に応じて、当該複数のセッションの中から当該パケット転送装置との通信に用いるセッションを選択する
    請求項1記載の通信制御システム。
  3. 通信方法選択手段は、パケット転送装置との通信状況に応じて、通常よりも優先してパケットを送信する状態である緊急モードで送信する通信方法を選択する
    請求項1記載の通信制御システム。
  4. 複数セッション構築手段は、複数のセッションのうち、通常の通信に用いられるセッションであるプライマリセッションと、前記プライマリセッションの異常時に用いられるセッションであるセカンダリセッションとを予め決定し、
    通信方法選択手段は、通常時には前記プライマリセッションを選択し、前記プライマリセッションの異常時にセカンダリセッションを選択する
    請求項2記載の通信制御システム。
  5. 複数セッション構築手段は、パケット転送装置との通信状況に応じて、パケット転送装置との間に構築するコネクションを追加し、
    通信方法選択手段は、パケット転送装置へ送信したパケットが届いていない場合に、前記複数セッション構築手段が前記通信状況に応じて追加したコネクションをパケット転送装置との通信に用いるセッションとして選択する
    請求項2記載の通信制御システム。
  6. 通信方法選択手段は、TCPで規定される再送タイマに基づいて、パケット転送装置との通信状況の優劣を判断する
    請求項1から5に記載の通信制御システム。
  7. 通信方法選択手段は、送信するパケットの重要度に基づいて、パケット転送装置との通信方法を選択する
    請求項1から6に記載の通信制御システム。
  8. パケットの処理内容を規定した規則であるパケット処理規則にしたがって、受信したパケットを転送するパケット転送装置に対し、当該パケット処理規則の適用を指示することによりパケットの転送経路を制御する制御装置であって、
    前記パケット転送装置との通信状況に応じて、当該パケット転送装置との通信方法を選択する通信方法選択手段を備えた
    ことを特徴とする制御装置。
  9. パケットの処理内容を規定した規則であるパケット処理規則にしたがって、受信したパケットを転送するパケット転送装置に対し、当該パケット処理規則の適用を指示することによりパケットの転送経路を制御する制御装置が、前記パケット転送装置との通信状況に応じて、当該パケット転送装置との通信方法を選択する
    ことを特徴とする通信制御方法。
  10. パケットの処理内容を規定した規則であるパケット処理規則にしたがって、受信したパケットを転送するパケット転送装置に対し、当該パケット処理規則の適用を指示することによりパケットの転送経路を制御するコンピュータに適用される通信制御プログラムであって、
    前記コンピュータに、
    前記パケット転送装置との通信状況に応じて、当該パケット転送装置との通信方法を選択する通信方法選択処理
    を実行させるための通信制御プログラム。
JP2013519292A 2010-12-14 2011-12-08 通信制御システム、制御装置、通信制御方法および通信制御プログラム Pending JP2014504043A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013519292A JP2014504043A (ja) 2010-12-14 2011-12-08 通信制御システム、制御装置、通信制御方法および通信制御プログラム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2010278544 2010-12-14
JP2010278544 2010-12-14
JP2013519292A JP2014504043A (ja) 2010-12-14 2011-12-08 通信制御システム、制御装置、通信制御方法および通信制御プログラム
PCT/JP2011/006860 WO2012081202A1 (en) 2010-12-14 2011-12-08 Communication control system, control device, communication control method, and communication control program

Publications (1)

Publication Number Publication Date
JP2014504043A true JP2014504043A (ja) 2014-02-13

Family

ID=46244322

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013519292A Pending JP2014504043A (ja) 2010-12-14 2011-12-08 通信制御システム、制御装置、通信制御方法および通信制御プログラム

Country Status (3)

Country Link
US (1) US20130250797A1 (ja)
JP (1) JP2014504043A (ja)
WO (1) WO2012081202A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016046672A (ja) * 2014-08-22 2016-04-04 富士通株式会社 転送装置、制御装置、および、通信方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9014028B2 (en) 2012-03-08 2015-04-21 International Business Machines Corporation Identifying and transitioning to an improved VOIP session
JP6099958B2 (ja) * 2012-12-10 2017-03-22 キヤノン株式会社 画像形成装置及びその制御方法とプログラム
WO2014112614A1 (ja) * 2013-01-21 2014-07-24 日本電気株式会社 制御情報管理装置、制御情報提示方法及びプログラム
US8611355B1 (en) 2013-09-03 2013-12-17 tw telecom holdings inc. Buffer-less virtual routing
CN104580025B (zh) * 2013-10-18 2018-12-14 华为技术有限公司 用于开放流网络中建立带内连接的方法和交换机
KR20150084307A (ko) * 2014-01-13 2015-07-22 삼성전자주식회사 네트워크에서 웹 로딩 시간 제어 방법 및 장치
US8989199B1 (en) 2014-02-24 2015-03-24 Level 3 Communications, Llc Control device discovery in networks having separate control and forwarding devices
US10454709B2 (en) 2014-06-02 2019-10-22 Hewlett Packard Enterprise Development Lp Delivering messages according to a desired delivery order in a software defined network

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11196037A (ja) * 1997-12-27 1999-07-21 Canon Inc デジタルデータ通信システムおよび方法
JP2004179848A (ja) * 2002-11-26 2004-06-24 Sumitomo Electric Ind Ltd 通信装置および通信方式切換方法
JP2005012711A (ja) * 2003-06-20 2005-01-13 Sony Corp リアルタイムデータ通信システム、リアルタイムデータ通信装置およびリアルタイムデータ通信方法
JP2006060674A (ja) * 2004-08-23 2006-03-02 Nec Corp 通信装置、データ通信方法およびプログラム
JP2007181233A (ja) * 2007-02-15 2007-07-12 Nippon Telegraph & Telephone West Corp 通信方式選択方法、通信方式選択装置及び通信方式選択プログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6041048A (en) * 1998-06-12 2000-03-21 Motorola, Inc. Method for providing information packets from a packet switching network to a base site and corresponding communication system
US6674713B1 (en) * 1999-02-23 2004-01-06 Cisco Technology, Inc. Method and apparatus for providing continuous voice and call communications between a data network and a telephony network
US6757245B1 (en) * 2000-06-01 2004-06-29 Nokia Corporation Apparatus, and associated method, for communicating packet data in a network including a radio-link
US20030031161A1 (en) * 2001-08-07 2003-02-13 Froehlich Robert W. Uplink session extension
FR2830397B1 (fr) * 2001-09-28 2004-12-03 Evolium Sas Procede pour ameliorer les performances d'un protocole de transmission utilisant un temporisateur de retransmission
US7529225B2 (en) * 2001-11-16 2009-05-05 Ibasis, Inc. System and method for voice over internet protocol (VoIP) and facsimile over internet protocol (FoIP) calling over the internet
US20050169305A1 (en) * 2003-04-04 2005-08-04 Masaru Mori Mobile terminal and radio access point in radio access system
US8139585B1 (en) * 2003-07-10 2012-03-20 Sprint Spectrum L.P. Method and system for controlling sessions from a subscriber terminal
US8111692B2 (en) * 2007-05-31 2012-02-07 Embarq Holdings Company Llc System and method for modifying network traffic
JP2009049550A (ja) * 2007-08-15 2009-03-05 Hitachi Ltd ゲートウェイ装置
US8503307B2 (en) * 2010-05-10 2013-08-06 Hewlett-Packard Development Company, L.P. Distributing decision making in a centralized flow routing system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11196037A (ja) * 1997-12-27 1999-07-21 Canon Inc デジタルデータ通信システムおよび方法
JP2004179848A (ja) * 2002-11-26 2004-06-24 Sumitomo Electric Ind Ltd 通信装置および通信方式切換方法
JP2005012711A (ja) * 2003-06-20 2005-01-13 Sony Corp リアルタイムデータ通信システム、リアルタイムデータ通信装置およびリアルタイムデータ通信方法
JP2006060674A (ja) * 2004-08-23 2006-03-02 Nec Corp 通信装置、データ通信方法およびプログラム
JP2007181233A (ja) * 2007-02-15 2007-07-12 Nippon Telegraph & Telephone West Corp 通信方式選択方法、通信方式選択装置及び通信方式選択プログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6016006138; 小出 俊夫 他: 'OpenFlowネットワークにおける制御ネットワークの構築自動化に関する一検討' 電子情報通信学会技術研究報告 第109巻,第448号, 20100225, p.19〜24 *
JPN6016006143; 政久 忠由: 'Think Security インターネットとLinuxのセキュリティ事情' Linux magazine 第3号, 19991231, p.123〜128 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016046672A (ja) * 2014-08-22 2016-04-04 富士通株式会社 転送装置、制御装置、および、通信方法

Also Published As

Publication number Publication date
US20130250797A1 (en) 2013-09-26
WO2012081202A1 (en) 2012-06-21

Similar Documents

Publication Publication Date Title
JP2014504043A (ja) 通信制御システム、制御装置、通信制御方法および通信制御プログラム
US9667524B2 (en) Method to check health of automatically discovered controllers in software defined networks (SDNs)
US10057158B2 (en) Control device discovery in networks having separate control and forwarding devices
JP5800019B2 (ja) 通信経路制御システム、経路制御装置、通信経路制御方法および経路制御プログラム
KR102118687B1 (ko) SDN(Software-defined networking)에서 네트워크 장애 해소를 위한 컨트롤러 및 스위치의 동작 방법과, 이를 위한 컨트롤러 및 스위치
US9692650B2 (en) Control apparatus, communication system, communication method, and program
JPH0936873A (ja) リンクステートルーティング装置
JP2004266823A (ja) ネットワーク接続装置、およびネットワーク接続切替方法
KR101538244B1 (ko) 서버 관리 장치, 서버 관리 방법, 및 프로그램
JP5720340B2 (ja) 制御サーバ、通信システム、制御方法およびプログラム
JP2011159247A (ja) ネットワークシステム、コントローラ、ネットワーク制御方法
US20150256455A1 (en) Communication system, path information exchange apparatus, communication node, forwarding method for path information and program
US9537764B2 (en) Communication apparatus, control apparatus, communication system, communication method, method for controlling communication apparatus, and program
EP1901497A1 (en) Apparatus for low latency communications through an alternate path
KR101579006B1 (ko) 컨트롤러와 네트워크 장치 간에 플로우 테이블을 동기화하는 방법
JPWO2013141193A1 (ja) 通信システム、制御装置、通信装置、情報中継方法及びプログラム
JP3965202B1 (ja) ネットワーク通信機器およびリング型ネットワーク用通信プログラム。
JP4630298B2 (ja) 機能分散型通信装置、構成要素結合制御方法、およびプログラム
JP5803656B2 (ja) 配信経路構築方法及び端末装置
WO2014123194A1 (ja) 通信システム、制御装置、通信制御方法およびプログラム
WO2015046539A1 (ja) 中継装置、制御装置、通信システム、監視パケットの処理方法及びトポロジ管理方法
JP2004248257A (ja) 通信システム及び端末
JP2005176268A (ja) 死活監視を利用したipネットワーク迂回システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160223

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20161206