JP5720668B2 - パケット転送装置、通信システム、処理規則の更新方法およびプログラム - Google Patents

パケット転送装置、通信システム、処理規則の更新方法およびプログラム Download PDF

Info

Publication number
JP5720668B2
JP5720668B2 JP2012500583A JP2012500583A JP5720668B2 JP 5720668 B2 JP5720668 B2 JP 5720668B2 JP 2012500583 A JP2012500583 A JP 2012500583A JP 2012500583 A JP2012500583 A JP 2012500583A JP 5720668 B2 JP5720668 B2 JP 5720668B2
Authority
JP
Japan
Prior art keywords
packet
flow
processing
processing rule
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012500583A
Other languages
English (en)
Other versions
JPWO2011102312A1 (ja
Inventor
智士 内田
智士 内田
藤田 範人
範人 藤田
康広 山崎
康広 山崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2012500583A priority Critical patent/JP5720668B2/ja
Publication of JPWO2011102312A1 publication Critical patent/JPWO2011102312A1/ja
Application granted granted Critical
Publication of JP5720668B2 publication Critical patent/JP5720668B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/026Capturing of monitoring data using flow identification

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

(関連出願についての記載)
本発明は、日本国特許出願:特願2010−031522号(2010年2月16日出願)の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、パケット転送装置、通信システム、処理規則の更新方法およびプログラムに関し、特に、受信パケットに適合する処理規則に従って、受信パケットを処理するパケット転送装置、通信システム、処理規則の更新方法およびプログラムに関する。
近年、オープンフロー(OpenFlow)という技術が提案されている(非特許文献1参照)。オープンフローは、通信をエンドツーエンドのフローとして捉え、フロー単位で経路制御、障害回復、負荷分散、最適化を行うものである。図18に、オープンフロースイッチの概念図を示す。転送ノードとして機能するオープンフロースイッチは、制御装置と位置付けられるオープンフローコントローラとの通信用のセキュアチャネルを備え、オープンフローコントローラから適宜追加または書き換え指示されるフローテーブルに従って動作する。フローテーブルには、フロー毎に、パケットヘッダと照合するマッチングルール(ヘッダフィールド)と、処理内容を定義したアクションと、フロー統計情報(カウンタ)との組が定義される(図19、20参照)。
図21に、非特許文献2に定義されているアクション名とアクションの内容を例示する。OUTPUTは、指定ポート(インタフェース)に出力するアクションである。SET_VLAN_VIDからSET_TP_DSTは、パケットヘッダのフィールドを修正するアクションである。
例えば、オープンフロースイッチは、パケットを受信すると、フローテーブルから、受信パケットのヘッダ情報に適合するマッチングルール(図19、20のヘッダフィールド参照)を持つエントリを検索する。検索の結果、受信パケットに適合するエントリが見つかった場合、オープンフロースイッチは、受信パケットに対して、当該エントリのアクションフィールドに記述された処理内容を実施する。一方、前記検索の結果、受信パケットに適合するエントリが見つからなかった場合、オープンフロースイッチは、セキュアチャネルを介して、オープンフローコントローラに対して受信パケットを転送し、受信パケットの送信元・送信先に基づいたパケットの経路の決定を依頼し、これを実現するフローエントリを受け取ってフローテーブルを更新する。このように、オープンフロースイッチは、フローテーブルに格納されたエントリを処理規則として用いてパケット転送を行っている。
Nick McKeownほか7名、"OpenFlow: Enabling Innovation in Campus Networks"、[online]、[平成21年12月22日検索]、インターネット〈URL:http://www.openflowswitch.org//documents/openflow-wp-latest.pdf〉 "OpenFlow Switch Specification" Version 0.9.0. (Wire Protocol 0x98) [平成21年12月22日検索] 、インターネット〈URL:http://www.openflowswitch.org/documents/openflow-spec-v0.9.0.pdf〉
以下の分析は、本発明者によってなされたものである。
上記非特許文献1、2では、通信の開始時にコントローラからフローエントリ(以下、非特許文献1、2のフローエントリと同等のパケット転送装置が受信パケットの処理を決定する際に参照する情報を「処理規則」という。)を設定し、別途設定する有効期限(図19の存続時間)に示す期間、該当するパケットを受信しなかったときに、該当エントリを削除することが記載されている(非特許文献2の24頁「Idle_TimeoutとHard_Timeout」参照。)。
そのため、非特許文献1、2のフローテーブルには、すでに通信終了となった処理規則が、有効期限を経過するまで残ってしまい、処理規則の記憶領域を圧迫するという問題点がある。また、この通信終了となった処理規則は、パケット転送装置における受信パケットに適合する処理規則の検索効率を低下させる一因ともなっている。
さらに、このように残った処理規則が多数残存することにより処理規則の記憶領域に不足が生じた場合、必要数の処理規則を何らかのルールで削除していく必要が出てくる。例えば、最近に設定された処理規則を残し、古い処理規則を削除するというルールを採用した場合、通信終了となっているにも拘らず新しい処理規則が残され、通信終了となっていない有効な処理規則が削除されるといった状況も生じうる。
本発明は、上記した事情に鑑みてなされたものであって、上記した処理規則の削除を的確に行うことのできるパケット転送装置、通信システム、処理規則の更新方法およびプログラムを提供することにある。
本発明の第1の視点によれば、フロー単位で処理内容を定義した処理規則を記憶する処理規則記憶部と、前記処理規則の中から受信パケットに適合する処理規則を用いて受信パケットの処理を行うパケット処理部と、前記受信パケットからフローの終端を確認するための情報を抽出する終端判定用情報抽出部と、前記抽出された情報に基づいて、フローの終端を確認した場合、当該フローと、当該フローの逆方向のフローとにそれぞれ対応する処理規則を削除するフロー終端確認部と、を備えるパケット転送装置が提供される。
本発明の第2の視点によれば、上記したパケット転送装置と、前記パケット転送装置に処理規則を設定する制御装置と、を含む通信システムが提供される。
本発明の第3の視点によれば、フロー単位で処理内容を定義した処理規則を記憶する処理規則記憶部と、前記処理規則の中から受信パケットに適合する処理規則を用いて受信パケットの処理を行うパケット処理部と、を備えたパケット転送装置が、前記受信パケットからフローの終端を確認するための情報を抽出するステップと、前記抽出された情報に基づいて、フローの終端を確認した場合、前記処理規則記憶部から、当該フローと、当該フローの逆方向のフローとにそれぞれ対応する処理規則を削除するステップと、を含む処理規則の更新方法が提供される。本方法は、処理規則記憶部とパケット処理部とを備えるパケット転送装置という、特定の機械に結びつけられている。
本発明の第4の視点によれば、フロー単位で処理内容を定義した処理規則を記憶する処理規則記憶部と、前記処理規則の中から受信パケットに適合する処理規則を用いて受信パケットの処理を行うパケット処理部と、を備えたパケット転送装置を構成するコンピュータに、前記受信パケットからフローの終端を確認するための情報を抽出する処理と、前記抽出された情報に基づいて、フローの終端を確認した場合、前記処理規則記憶部から、当該フローと、当該フローの逆方向のフローとにそれぞれ対応する処理規則を削除する処理と、を実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
本発明によれば、パケット転送装置の処理規則記憶部から、有効期限が満了していない処理規則であっても、通信終了となり必要の無くなった処理規則を削除させることが可能になる。その理由は、受信パケットからフローの終端(通信の終了)を判別するための情報を抽出し、フローの終端(通信の終了)を判別する機能を追加したことにある。
本発明の概要を説明するためのブロック図である。 本発明の第1の実施形態の構成を示すブロック図である。 本発明の第1の実施形態の動作を説明するためのフローチャートである。 本発明の第2の実施形態の構成を示すブロック図である。 本発明の第3の実施形態の構成を示すブロック図である。 TCPのコネクションの状態遷移を示す図である。 本発明の具体例を説明するための図である。 本発明の具体例を説明するためのフローチャートである。 パケット転送装置の処理規則記憶部の記憶内容を段階的に説明するための図である。 図9の続図である。 図10の続図である。 図11の続図である。 図12の続図である。 本発明の第2の具体例を説明するためのフローチャートである。 第2の具体例におけるパケット転送装置の処理規則記憶部の記憶内容を段階的に説明するための図である。 本発明の第3の具体例を説明するためのフローチャートである。 本発明の第3の具体例を説明するための第2のフローチャートである。 非特許文献1、2のオープンフロースイッチの概念図である。 非特許文献1、2のオープンフロースイッチのフローエントリの構成を示す図である。 非特許文献1、2のオープンフロースイッチのフローテーブルの具体例である。 非特許文献2に例示されているアクションの例である。
はじめに、本発明の概要を説明する。以下、この概要に付記した図面参照符号は、専ら理解を助けるための例示であり、図示の態様に限定することを意図するものではない。図1に示すように、本発明に係るパケット転送装置1は、受信パケットに適用する処理規則を記憶する処理規則記憶部11と、処理規則記憶部から受信パケットに適合する処理規則を読み出して転送処理等を行うパケット処理部12と、受信パケットからフローの終端を確認するための情報を抽出する終端判定用情報抽出部13と、前記抽出された情報に基づいて、フローの終端を確認した場合、当該フローに対応する処理規則を削除するフロー終端確認部14と、を備えて構成される。
フローの終端の検知の方法としては、次のような種々の方法が挙げられる。例えば、プロトコルの終了メッセージをチェックする方法が挙げられる。例えば、TCP(Transmission Control Protocol)では、FINフラグのチェックにより、通信の終了、すなわち、通信を利用したフローの終了を検知することができる。実際には、FINフラグ後のフローの逆方向(送信元、送信先が逆のフロー)でACKパケットの通信が発生するため、FINパケット後の逆方向フローのACKフラグを検知したら終了と判断することができる。更には、TCPは双方向通信のため、逆方向フローとセットにして、終了を検知したら当該逆方向のフローに対応する処理規則も不要になったと判断することができる。また、SYNパケットの受信から所定時間経過してタイムアウトとなったときや、RSTパケットの受信を契機として通信の終了を判定することもできる。これらは、後に具体例として詳述する。
フロー終了の検知の方法のもう一例として、SCTP(Stream Control Transmission Protocol)のDATAチャンクにおけるE−bitで判断する方法が挙げられる。
更に、フロー終了の検知の方法のもう一例として、HTTP(Hypertext Transfer Protocol)での例が挙げられる。HTTPヘッダのConnection属性がCloseを検知し、対応するHTTPのメッセージ分が送信確認できたとき、一連のフローの終了と判断できる。
更に、フロー終了の検知の方法のもう一例として、IP(Internet Protocol)での例が挙げられる。パケット列ごとに1フローと前提がつけられている環境下では、IPのMF(More Fragments)フラグにより、パケットの終端が判断できるので、フローの終了と判断することができる。
いずれの場合も、終端判定用情報抽出部13にて該当する情報を抽出し、フロー終端確認部14に送ることで、不要な処理規則であるか否かを判定し、不要な処理規則を削除することが可能になる。
以上により、通信終了となった処理規則のその有効期限を待たずに削除されるため、処理規則記憶部の記憶領域に余裕を生じさせるとともに、処理規則の検索の効率化が達成される。また、必要な処理規則を削除してしまう事態も発生しにくくなるため、これら処理規則の再設定のために生じていたトラヒックや負荷も低減される。更には、QoS保証などのため、処理規則の更新制御を行う場合においても、不必要な処理規則をその対象から外すことが可能になる。
本発明において以下の形態が可能である。
[形態1]
前記第1の視点に記載のパケット転送装置のとおり。
[形態2]
前記パケット転送装置は、さらに、前記処理規則記憶部に記憶された処理規則のタイムアウト判定を行うタイムアウト判定部を備え、
前記フロー終端確認部は、前記終端判定用情報抽出部にて抽出された情報に基づいて、前記タイムアウト判定部にタイムアウト判定を開始させ、前記タイムアウト判定部にてタイムアウトと判定された処理規則を削除することが好ましい。
[形態3]
前記パケット転送装置は、さらに、受信パケットを記憶するパケット記憶部を備え、
前記終端判定用情報抽出部に、前記パケット記憶部から、受信パケットが属するフローと、該フローと逆方向のフローとにそれぞれ対応する処理規則を特定するための情報を抽出し、前記フロー終端確認部に、前記双方向の処理規則の削除を判定させることができる。
[形態4]
前記フロー終端確認部は、前記終端判定用情報抽出部にて抽出されたTCP(Transmission Control Protocol)のFINフラグ、RSTフラグまたはSYNフラグのいずれか一つ以上を用いて、フローの終端を判定するようにすることができる。
[形態5]
前記第2の視点に記載の通信システムのとおり。
[形態6]
前記第3の視点に記載の処理規則の更新方法のとおり。
[形態7]
前記処理規則の更新方法において、前記パケット転送装置は、前記フローの終端を確認するための情報に基づいて、タイムアウト判定を開始し、タイムアウトと判定した処理規則を削除することが好ましい。
[形態8]
前記処理規則の更新方法において、前記パケット転送装置は、受信パケットと前記処理規則に従って修正された後の受信パケットから、受信パケットが属するフローと、該フローと逆方向のフローとにそれぞれ対応する処理規則を特定するための情報を抽出し、前記双方向の処理規則の削除を判定することが好ましい。
[形態9]
前記処理規則の更新方法において、フローの終端は、TCP(Transmission Control Protocol)のFINフラグ、RSTフラグまたはSYNフラグのいずれか一つ以上を用いて判定することができる。
[形態10]
前記第4の視点に記載のプログラムのとおり。
なお、上記第2、第4の視点に記載の通信システムおよびプログラムは、形態1の通信システムと同様に、形態2〜形態4の内容に展開することが可能である。
[第1の実施形態]
続いて、本発明の第1の実施形態について図面を参照して詳細に説明する。はじめに、用語の定義をしておく。「フロー」とは特定の送信元から送信先への通信のことを指す。すなわち、「フロー」は、伝送されているパケットの集合、もしくは、その伝送自体のことを意味する。また、「送信元」、「送信先」は、物理的、論理的な1つの宛先を意味するとは限らない。すなわち、特定のサブネットから、別のサブネットへの通信をまとめて、それを1つのフローと捉えても良い。このことから、フローは、より詳細なフローの集合となることもある。例えば、非特許文献1、2のオープンフローのように、宛先アドレスや送信元アドレス等の一部をワイルドカードで記述して、複数のフローを一つにまとめたフローエントリがこれに相当する。
図2は、本発明の第1の実施形態の構成を示すブロック図である。図2を参照すると、本実施形態のパケット転送装置C1は、パケット受信部C10と、パケット記憶部C11と、パケット処理用情報抽出部C12と、処理規則記憶部C13と、処理規則検索部C14と、パケット処理部C15と、パケット送信部C16と、終端判定用情報抽出部C17と、フロー終端確認部C18とを備える。
パケット受信部C10は、他のノードによって送信されたパケットを受信し、パケット記憶部C11へ受信したパケットを一旦格納する。また、パケット受信部C10は、進入ポート(受信ポートID情報)などの受信状況情報も同時に記憶することもできるものとする。前記受信パケットを格納すると、パケット受信部C10は、パケット処理用情報抽出部C12と、終端判定用パケット情報抽出部C17に対し、パケットを受信したことを通知する。
パケット記憶部C11は、パケット受信部C10が受信したパケットが、パケット送信部C16によって送信されるまでの間、該パケットを一時的に格納する。
パケット処理用情報抽出部C12は、パケット受信部C10からパケットを受信したとの通知をトリガとして、パケット記憶部C11から、当該パケットに対して適用すべき処理内容を決定するために、受信パケットのヘッダフィールドの情報や、受信状況情報(上記進入ポート(受信ポートID情報)等)を抽出する。パケット処理用情報抽出部C12は、抽出したパケット情報を処理規則検索部C14に出力する。
ここで、パケット処理用情報抽出部C12が受信パケットに対して適用すべき処理内容を決定するために抽出する情報としては、非特許文献1、2のオープンフロースイッチと同様のものを用いることができる。例えば、進入ポート(受信ポートID情報)、Ethernet(登録商標)の送信元アドレス、宛先アドレス、上位プロトコルタイプと、IEEE802.1Q準拠のVLAN(Virtual LAN)のTCI(Tag Control Information)のVID(VLAN−ID)、PCP(Priority Code Point)と、IP(Internet Proctocol)の送信元アドレス、宛先アドレス、上位プロトコルタイプと、TCP(Transmission Control Protocol)もしくはUDP(User Datagram Protocol)の送信元ポート、宛先ポートを挙げることができる。このうち、パケット転送装置の進入ポート(受信ポートID情報)は受信状況情報から得ることができ、その他は、受信パケットのヘッダフィールドやパケット内部の上位プロトコルヘッダなどから得ることができる。
処理規則記憶部C13は、受信パケットに対して適用する処理内容をフロー単位で定めた処理規則を記憶する。その構成は、図18、図19に示した非特許文献1、2のフローテーブルと同等の内容とすることができ、受信パケットと照合しフローを判別するためのヘッダフィールドと、統計情報(カウンタ)と、処理内容(アクション)とを対応付けたエントリとすることができる。
例えば、図19のヘッダフィールドは、パケット転送装置の進入ポートと、Ethernet(登録商標)の送信元アドレス、宛先アドレス、上位プロトコルタイプと、IEEE802.1Q準拠のVLANのVID、プライオリティ(PCP;プライオリティ コード ポイント)、IPの送信元アドレス、宛先アドレス、上位プロトコルタイプ、TCPもしくはUDPの送信元ポート、宛先ポートから構成される。これらのヘッダフィールドの内容に適合するパケットを受信した場合に、アクションフィールドに定められた処理内容が行われることになる。ただし、ヘッダフィールドの任意の情報ビットについてワイルドカードを使用することもできるものとする。
また、図19のカウンタ(フィールド)には、受信パケット数、受信バイト数、ルールの存続時間が保持され、該パケットが属するフローに関する統計情報として使用される。
また、図19のアクションとしては、パケットを転送するためのForward、パケットを廃棄するためのDrop、パケットの情報を変更するためのModify−Fieldが存在し、任意個のアクションを登録することができる(図21の一覧参照。ただし、非特許文献2の場合、アクションフィールドが空欄のとき「Drop」となる。)。Modify−Filedアクションとしては、VLANのIDやプライオリティの設定・変更、VLANヘッダの除去、Ethernet(登録商標)やIPの送信元/宛先アドレスの変更、TCP/UDPの送信元/宛先ポートの変更などが用意されている(その他、IPのToS(Type of Service)フィールドの変更等)。
さらに本実施形態では、処理規則記憶部C13は、各処理規則毎に、後記するフロー終端確認部C18がフロー終端の判定に用いる内部状態情報フィールドが設けられているものとする(図9の「FIN、逆FIN、timeout参照」、図15の「SYN、timeout参照」)。
処理規則検索部C14は、パケット処理用情報抽出部C12から渡された情報に基づいて、受信パケットに対して適用すべきアクション(処理内容)を決定し、パケット処理部C15に出力する。より具体的には、処理規則検索部C14は、処理規則記憶部C13から、パケット処理用情報抽出部C12から渡された受信パケットから抽出した情報に適合する処理規則を探索し、パケット処理部C15に出力する。ここで、受信パケットに適合する処理規則が存在した場合、処理規則検索部C14は、処理規則のアクションフィールドに定められたアクション(処理内容)を抽出し、パケット処理部C15に出力する。一方、受信パケットに適合する処理規則が見つからなかった場合、処理規則検索部C14は、所定の制御装置(コントローラ;図18参照)に対し、受信パケットまたは受信パケットから抽出した情報を送信して、処理規則の作成・送信を要求する。所定の制御装置(コントローラ;図18参照)から処理規則を受信すると、処理規則検索部C14は、当該受信した処理規則を、処理規則記憶部C13へ登録する。その後、処理規則検索部C14は、当該処理規則のアクション(処理内容)を抽出し、パケット処理部C15に出力する。
図20に示したフローテーブルの最初の処理規則によると、パケット転送装置の物理ポート1番に192.168.0./24のネットワークから入ってきたプロトコルタイプが0x0006(TCP)の宛先192.168.1./24のネットワーク、TCPポート80番宛てのパケットを適用対象として、当該パケットのIPの送信元アドレスを192.168.1/24に変更して、転送装置の物理ポート2番から送信するアクション(処理内容)が実行される。同様に、図20の2番目の処理規則によると、HTTPポート以外へのパケットを適用対象として、当該パケットのIPの送信元アドレスを192.168.1/24に変更して、転送装置の物理ポート3番から送信するアクション(処理内容)が実行される。
パケット処理部C15は、処理規則検索部C14から出力されたアクション(処理内容)に従い、パケット記憶部C11に格納されている受信パケットを処理する。例えば、パケットを転送するためのForwardアクションを受け取った場合、パケット処理部C15は、パケット送信部C16に対してパケットの送信を要求する。また、パケット処理部C15は、処理規則検索部C14から出力されたアクション(処理内容)のほか、通信に関する基本処理等も必要に応じて適宜行う。例えば、図20の1番目の処理規則の場合、アクション(処理内容)としては、送信元IPアドレスを192.168.1.1に変更した後、パケット送信となる。この際に、パケット処理部C15が、上記に加え、通信に関する基本処理としてIPなどの基本処理であるIPヘッダのTTL(Time To Live)フィールド、チェックサムフィールド等の書き換えなどを適宜行う。また、TTLの値が0などになった場合のパケット送信終了の判定なども通信に関する基本処理となる。
パケット送信部C16は、パケット処理部C15からパケット送信を要求されると、パケット処理部C15から指示されたポートから、パケット記憶部C11から読み出したパケットを送信する。更に、パケット送信部C16は、終端判定用情報抽出部C17に対してパケットを送信したことを通知する。
終端判定用情報抽出部C17は、パケット受信部C10からパケットを受信したとの通知をトリガとして、パケット記憶部C11から、フローの終端判定に必要な情報として、パケット内の特定の情報を抽出する。また、終端判定用情報抽出部C17は、パケット処理用情報抽出部C12と同様に、該パケットからさらに、当該パケットに対して適用すべき処理内容を決定するために、受信パケットのヘッダフィールドの情報や、受信状況情報(上記進入ポート(受信ポートID情報)等)を抽出する。また、終端判定用情報抽出部C17は、パケット内の特定の情報がフロー終端判定に必要な情報であると判定したときに、パケット送信部C16からパケットを送信したとの通知をトリガとして、当該パケットに対して適用すべき処理内容を決定するための情報(受信パケットのヘッダフィールドの情報や受信状況情報(進入ポート等)と、フロー終端判定に必要と判定した情報と、をフロー終端確認部C18に出力する。
なお、図2の例では、パケット処理用情報抽出部C12と終端判定用情報抽出部C17を別途に設けているが、同一条件で同一の情報を抽出することがあるので、統合することも可能である。また、終端判定用情報抽出部C17における、受信パケットに対して適用すべき処理内容を決定するための情報の抽出は、パケット内の特定の情報がフローの終端判定に必要な情報であると判定した場合にのみ行うようにすることもできる。
フロー終端確認部C18は、終端判定用情報抽出部C17から渡された情報に基づいて、フローの終端である最後のパケット送信が行われたかどうかを判定する。最後のパケット送信が行われたと判断したときは、処理規則記憶部C13から、送信パケットが属するフローに対応する処理規則を削除する。また、フロー終端確認部C18は、この判定のため、必要に応じて、処理規則記憶部C13に記憶された処理規則の内部状態情報フィールドを参照または更新する。
上記フロー終端確認部C18が参照または更新する内部状態情報フィールドとしては、例えば、終了判定のステージ情報(判定段階情報)や、ステージ変更後(判定段階変更後)の経過時間情報等が挙げられる(図9の「FIN、逆FIN、timeout参照」、図15の「SYN、timeout参照」)。
なお、図2に示したパケット転送装置C1の各部(処理手段)は、パケット転送装置C1を構成するコンピュータに、そのハードウェアを用いて、上記した各処理を実行させるコンピュータプログラムにより実現することもできる。
続いて、図3のフローチャートを参照して、本実施形態のパケット転送装置C1におけるパケット受信から送信までの動作を詳細に説明する。
図3を参照すると、まず、パケットを受信すると(ステップS101)、パケット受信部C10は、受信したパケットをパケット記憶部C11へ格納する(ステップS102)。
次に、パケット受信部C10は、パケット処理用情報抽出部C12及び終端判定用情報抽出部C17に対し、パケットを受信したことを通知する。これにより、2つの処理が同時に動作することになる(ステップS102後の分岐)。
第1の処理は、受信したパケットに対し処理を施すための処理である(ステップS103〜S110)。パケット処理用情報抽出部C12は、パケット受信部C10からパケットを受信したとの通知を受けると、パケット記憶部C11から、当該パケットに対して適用すべき処理内容を決定するための情報を抽出し、処理規則検索部C14へ渡す(ステップS103)。
次に、前記抽出された情報を受け取った処理規則検索部C14は、処理規則記憶部C13から、前記抽出された情報に適合する処理規則を検索する(ステップS104)。ここで、前記抽出された情報に適合する処理規則が見つかった場合、処理規則検索部C14は、当該処理規則に定められたアクション(処理内容)を抽出し、パケット処理部C15へ渡す(ステップS105)。一方、前記抽出された情報に適合する処理規則が見つからなった場合、処理規則検索部C14は、所定の制御装置(コントローラ;図18参照)に対し、受信パケットまたは受信パケットから抽出した情報を送信して、処理規則の作成・送信を要求する(ステップS106)。所定の制御装置(コントローラ;図18参照)から処理規則を受信すると、処理規則検索部C14は、当該受信した処理規則を、処理規則記憶部C13へ登録するとともに、当該処理規則のアクション(処理内容)を抽出し、パケット処理部C15に出力する(ステップS107)。
次に、アクション(処理内容)を受け取ったパケット処理部C15は、パケット記憶部C11に格納されたパケットに対し、アクション(処理内容)に従って処理を行う(ステップS108)。例えば、パケットの各フィールドの修正や、先述した通信に関する基本処理などが適宜行われる。
次に、パケット処理部C15は、アクション(処理内容)にパケット転送が含まれるか否かや、TTLなどの情報に基づき、当該パケットを送信すべきか判断する(ステップS109)。パケットを送信すべきであると判断した場合、パケット処理部C15は、パケット送信部C16に対してパケットの送信を指示する。
最後に、パケット送信部C16は、該パケットをパケット記憶部C11から読み出し、アクション(処理内容)にて指示されたポートから送信する(ステップS110)。更に、パケット送信部C16は、終端判定用情報抽出部C17に対してパケットを送信したことを通知する。
第2の処理は、フロー終端判定を行って、処理規則記憶部C13から不必要となる処理規則を削除するための処理である(ステップS111〜S116)。
はじめに、パケット受信部C10からパケットを受信したことを示す通知を受け取ると、終端判定用情報抽出部C17は、パケット記憶部C11から、フローの終端判定に必要な情報として、パケット内の特定の情報を抽出する。また、終端判定用情報抽出部C17は、ステップS103と同様に、該パケットからさらに、当該パケットに対して適用すべき処理内容を決定するための情報を抽出する(ステップS111)。前記抽出したパケット内の特定の情報がフローの終了判定に必要な情報でない場合、当該パケットに関するフロー終端判定は終了する(ステップS112のNo)。
一方、前記抽出したパケット内の特定の情報が終了判定に必要な情報である場合(ステップS112のYes)、終端判定用情報抽出部C17は、パケット送信部C16から該パケットを送信したとの通知を受信するまで待機する。パケット送信部C16から該パケットを送信したとの通知を受け取ると、終端判定用情報抽出部C17は、フロー終端確認部C18に対し、フローの終了判定に必要な情報と、当該パケットに対して適用すべき処理内容を決定するための情報を出力する。
次に、フロー終端確認部C18は、終端判定用情報抽出部C17から渡された情報から、フローの終端であるかどうかを判定する(ステップS113)。フローの終端でないと判定した場合(ステップS114のNo)、フロー終端確認部C18は、その判定内容に従い、処理規則記憶部C13の処理規則内の内部状態を適宜更新する(ステップS115)。一方、前記判定の結果、フローの終端であると判定した場合(ステップS114のYes)、フロー終端確認部C18は、処理規則記憶部C13から当該フロー終端を確認した処理規則を削除する(ステップS116)。
以上のように本実施形態によれば、受信パケットが属するフローが終了したかどうかを判定して、いち早く処理規則記憶部C13から不必要となる処理規則を削除することができる。これにより、処理規則記憶部C13の記憶可能な処理規則数が圧迫されてしまう事態を回避することが可能となる。これにより、必要な処理規則が処理規則記憶部C13の記憶可能な処理規則数を超えてしまうことに起因する、所定の制御装置(コントローラ;図18参照)に対する処理規則の設定要求や、処理規則の更新回数を減らすこともできる。また、QoS保証のため、処理規則記憶部C13の更新動作を行うような場合において、不必要な処理規則をその対象から外すことが可能となる。
[第2の実施形態]
続いて、上記第1の実施形態に変更を加えた本発明の第2の実施形態について図面を参照して詳細に説明する。図4は、本発明の第2の実施形態の構成を表わしたブロック図である。図2と比較すると、本発明の第2の実施形態のパケット転送装置C1aは、第1の実施形態の構成に、タイムアウト判定部C19を追加した構成となっている。以下、先に説明した第1の実施形態との相違点に焦点を当てて説明する。
タイムアウト判定部C19は、処理規則記憶部C13の特定のフィールドを監視して、タイムアウトかどうかを判定し、終了判定の契機にするかどうかを決定する。
タイムアウト判定部C19は、まず、処理規則記憶部C13の特定のフィールドを監視して、タイムアウトかどうかを判定する。タイムアウトの監視方法としては、特定のフィールドの値と現在時刻を比較する絶対値評価方法と、カウントアップ/カウントダウン制御される特定のフィールドの値を、一定の値(タイムアウト判定しきい値)を上回る、もしくは、下回るかで判定する相対値評価方法のどちらの方法で実現しても良い。タイムアウト判定部C19は、タイムアウトと判定したときに、タイムアウトが発生した旨とフローを特定する情報をフロー終端確認部C18へ渡す。
処理規則記憶部C13aは、上記した第1の実施形態の機能に加え、タイムアウト判定部C19が前記タイムアウト判定を行うための特定のフィールドを更新する機能を有している。
フロー終端確認部C18は、上記した第1の実施形態の機能に加え、タイムアウト判定部C19からタイムアウトが発生した旨の通知を受け取ると、該フローに対する終了の判定を行う。終了と判定した場合、フロー終端確認部C18は、処理規則記憶部C13から、該フローに対応する処理規則を削除する。なお、前記タイムアウトを契機とする処理規則の削除判定は、他の処理と独立して行うものとしてもよいが、終端判定用情報抽出部C17からフローの終了判定に必要な情報を渡されたときに、連携して行うようにしてもよい。また逆に、前記タイムアウトが発生した旨の通知を受け取ったときに、終端判定用情報抽出部C17からのフローの終了判定に必要な情報による判定と、タイムアウト判定とを連携して行うようにしてもよい。
以上のように、本発明の第2の実施形態によれば、タイムアウトによるフロー終端判定が加わるため、処理規則記憶部C13aから、一定期間使用されていない処理規則をより積極的に削減することが可能となる。なお、処理規則記憶部C13a、フロー終端確認部C18、タイムアウト判定部C19は、図4に示すように独立して設けてもよいが、別途設定した有効期限に示す期間、該当するパケットを受信しなかったときに、該当エントリを削除する非特許文献1、2と同等の仕組みにて実現することもできる。
[第3の実施形態]
続いて、上記第1の実施形態に変更を加えた本発明の第3の実施形態について図面を参照して詳細に説明する。図5は、本発明の第3の実施形態の構成を表わしたブロック図である。図2と比較すると、パケット処理部C15aと終端判定用情報抽出部C17aが変わり、これらの間でのやり取りを示す両矢線が追加されている。その他は第1の実施形態と同様であるので、以下、変更部分にのみ焦点を当てて説明する。
パケット処理部C15aは、パケット送信処理する場合、まず、終端判定用情報抽出部C17aへ、パケット送信準備完了を通知してから、パケット送信部C16へパケットの送信を要求する。
終端判定用情報抽出部C17aは、上記第1の実施形態で説明した動作に加えて、パケット処理部C15aからパケット送信準備完了通知を受信した場合も、パケット記憶部C11から、フローの終端判定に必要な情報として、パケット内の特定の情報を抽出する。そして、終端判定用情報抽出部C17aは、前記パケット内の特定の情報がフロー終端判定に必要な情報であると判定したときに、当該パケットに対して適用すべき処理内容を決定するための情報(受信パケットのヘッダフィールドの情報や受信状況情報(進入ポート等)と、フロー終端判定に必要と判定した情報と、をフロー終端確認部C18に出力する。
即ち、本実施形態では、パケット受信時のみならず、パケット送信時にもフロー終端判定を行ない、不要な処理規則を削除することが可能になる。これにより、第1の実施形態よりも、より積極的に処理規則を削減することが可能になる。
続いて、上記した各実施形態の各特徴を組み合わせて、TCP(Transmission Control Protocol)のフラグを利用してフローの終端判定を行う具体例1〜3を説明する。
[具体例1]
図6は、TCPのコネクションの状態遷移を示す図である。図6の上段の「CLOSED」がTCP通信が終了している状態を示し、これにつながる箇所が、TCP通信の終了前の状態である。上記「CLOSED」に、一番長く辿りつかないケースは、双方のFINが流れてから約2MSL(MSL:Maximum Segment Lifetime(最大セグメント寿命))を待機したときである。そのため、双方向のFINを確認してから、この2MSL時間だけ待機したら、基本的には通信終了と判断できる。パケット落ちなどで状態が順調に遷移しない場合(例えば、「CLOSING」後のACK送信が到着しない場合)も、この2MSL時間後すぐに、再送パケットが転送されるはずであるので、最大でも2MSLにマージンを加えた2MSL+α時間に新たなFINパケットが届かないかどうかでTCP通信の終了を判断できる。
以下、本発明に係るパケット転送装置C1が、図7に示したネットワーク構成のコンピュータ(クライアント)D10と、サーバD20間のTCP通信を中継する場合を考える。図7の例では、コンピュータD10は、192.168.0./24のネットワークに属し、192.168.0.10で設定されている。また、サーバD20は、192.168.1./24のネットワークに属し、192.168.1.10で設定されている。制御装置(コントローラ)D1は、パケット転送装置C1と、非特許文献1、2に記載のオープンフローコントローラと同様に専用のチャネルで接続されており、2つのネットワーク間の接続を管理している。以下の説明では、制御装置(コントローラ)D1は、他ネットワークからの接続は、それぞれのネットワークの1番(192.168.1.1)からの通信のように見せかけるようパケット転送装置C1を制御するものとする(図19の処理規則のアクション参照。また、本具体例では、FINパケットの監視を行うため、終端判定用情報抽出部C17が監視するフィールドはプロトコルスタックを監視して、TCPであることを確認できるフィールドと、TCPヘッダのFINフラグとなる。
図8は、FINフラグを用いてフローの終端を判定する処理を説明するためのフローチャートである。図3のフローチャートのステップS111〜S116にタイムアウト判定を加えて、より細分化したものである。以下、図3、図6、図8および図9〜図13を参照して動作を説明する。なお、実際にはTCP/IP通信の前にARP(Address Resolution Protocol)通信が行われ、処理規則設定はその段階で行われる可能性があるが、今回は説明を簡単にするために省略し、TCP/IPレベルでの通信で説明する。
まず、コンピュータD10から、サーバD20宛へ通信を開始する。このとき、最初の通信確立のためのパケット(SYN)がパケット転送装置C1に進入する(図6のSYN送信によるアクティブオープンの開始)。パケット受信部C10は、この最初のパケットを受信し、パケット記憶部C11に格納する(図3のステップS101〜S102)。
パケット受信部C10は、パケット処理用情報抽出部C12と、終端判定用情報抽出部C17へ、パケットを受信したことを通知する。パケット処理用情報抽出部C12は、パケット記憶部C11を参照して、処理規則を検索するのに必要となるIPの送信元/宛先などの情報を抽出する(図3のステップS103)。以下、図3のステップS103乃至ステップS110側の一連の処理が開始される。
一方、終端判定用情報抽出部C17は、パケット記憶部C11を参照して、TCPのFINフラグを監視するが、FINフラグは設定されていないため、終端判定の対象としない。そのため、図3のステップS111乃至ステップS116側のフロー終端判定処理は行われない。
次に、受信パケットに対応する処理規則の検索が行われる。パケット処理用情報抽出部C12は、抽出した情報(進入ポートが1、送信元アドレスが192.168.0.10、宛先が192.168.1.10、プロトコルがTCP(タイプが0x0006))を処理規則検索部C14に渡す。処理規則検索部C14は、処理規則記憶部C13を参照して、前記パケットに適合する処理規則が存在しないので、制御装置(コントローラ)D1へ問い合わせる(図3のステップS104、ステップS106)。制御装置(コントローラ)D1は、送信元IPの修正と、指定した転送ポートからの転送を処理内容とする処理規則を作成し、パケット転送装置C1へ送信する。処理規則検索部C14は、制御装置(コントローラ)D1から受信した処理規則を新規エントリとして処理規則記憶部C13へ登録する(図3のステップS107)。この段階で、図9に示すように、処理規則記憶部C13に新しい処理規則が追加される。
次に、パケットの転送処理に入る。処理規則検索部C14は、検索した処理規則をパケット処理部C15に送信する。パケット処理部C15は、前記送信された処理規則に従って、IPアドレスの置き換え、TTLなどの削減などのパケットの修正を実行する(図3のステップS108)。ここで、TTLは終了しないとし、パケットを送信すると判定されたとすると(図3のステップS109のYes)、パケット処理部C15は、パケット転送装置C1のポート#2から受信パケットを送信するようパケット送信部C16に指示する。ここで、第3の実施形態と同等の構成の場合、前記指示は、終端判定用情報抽出部C17にも送られるが、上記理由により終了判定の対象パケットと判定されないため、処理規則の削除が行われることはない。
パケット送信部C16は、前記に従い、ポート#2からパケットを送信する。以上の処理により、最初のパケットの送信が行われる。
次に、サーバD20からのコンピュータD10との通信確立のための応答(SYN/ACKパケット)がパケット転送装置C1に進入したものとする(図6のSYN/ACK送信)。上記コンピュータD10から、サーバD20宛へ通信確立のときと同様に、処理規則記憶部C13の参照が行われるが前記応答パケットに適合する処理規則は存在しないため、制御装置(コントローラ)D1へ問い合わせが行われ、逆方向のフローに適用する処理規則を定めた新しい処理規則が追加される(図3のステップS104、ステップS106、ステップS107)。この段階で、図10に示すように、処理規則記憶部C13に新しい処理規則が追加される。
次に、コンピュータD10から、サーバD20宛へ通信確立のための最後の応答(ACKパケット)が送信されるが(図6のACK送信)、この時点ではすでに、処理規則記憶部C13にコンピュータD10から、サーバD20宛のフローに適合する処理規則が登録されているため、処理規則検索部C14は、処理規則記憶部C13から該当する処理規則に規定されている処理内容(アクション)を抽出することになる(ステップS105)。以降、上記と同様に、コンピュータD10とサーバD20間で送受信されるパケットの修正と中継が行われる(図6の「ESTABLISHED」状態)。
その後、通信を終えるとき、コンピュータD10から、サーバD20宛へ通信終了のためのFINパケットを送信する(図6のFIN送信によるアクティブクローズの開始)。このFINパケットがパケット転送装置C1に進入する。FINパケットの転送処理は上記ACKパケット以降と同様であるため、省略する。以下、図3のステップS111〜S116について図8を用いて詳細に説明する。
パケット受信部C10からパケットを受信したとの通知を受けた終端判定用情報抽出部C17は、パケット記憶部C11を参照して、TCPのFINフラグを監視し、FINフラグを発見する(図8のステップS201)。
ここでは、FINフラグが設定されているため、フロー終端判定に必要な情報であると判断し、削除する処理規則を特定するための情報(進入ポートが1、送信元アドレスが192.168.0.10、宛先が192.168.1.10、プロトコルがTCP(タイプが0x0006))を抽出し、パケットの送信まで待機する。終端判定用情報抽出部C17は、パケット送信部C16からパケットを送信したとの通知を受け取ると、さらに、パケット記憶部C11から、削除する処理規則を特定するための情報を抽出する。ここで抽出される削除する処理規則を特定するための情報は、IPアドレスが置き換えられているので、送信元アドレスが192.168.1.1、宛先が192.168.1.10、プロトコルがTCP(タイプが0x0006)となる。この情報は逆フローのマーキングに使用される。終端判定用情報抽出部C17は、FINパケットを受信したとの通知とともに、これらの情報をフロー終端確認部C18へ通知する(図8のステップS202)。
終端判定用情報抽出部C17から、上記した情報を受け取ったフロー終端確認部C18は、パケットヘッダの所定位置にFINフラグが設定されているか否かをチェックする(ステップS203)。ここまでが、図3のステップS111〜S114の処理に相当する。
ここでは、FINパケットが送信されているため、フロー終端確認部C18は、前記削除対象の処理規則を特定するための情報をキーとして、処理規則記憶部C13から処理規則を抽出し、FINパケット受信のフラグをマークする(図8のS204〜S205)。この処理は、図3のステップS115の内部状態更新処理に相当する。
次に、フロー終端確認部C18は、当該処理規則について、正方向・逆方向のFINがマークされているかをチェックするが、この時点では、まだ正方向しかマークされていないため、次の処理へ移る(図8のS206のNo)。
次に、逆方向のマーキングに移る。フロー終端確認部C18は、前記削除対象の処理規則を特定する情報に対応する処理規則を抽出し(送信元と宛先を逆転してマッチングする)、逆方向のFINパケット受信のフラグをマークする(図8のステップS207〜S208)。この段階で、図11に示すように、処理規則記憶部C13の該当処理規則のFINフラグ、逆FINフラグが立てられる。この時点においても、該当処理規則の正方向・逆方向のFINフラグの双方がマークされていないので、直ちに処理規則の削除を行うのではなく、次のパケットの受信を待機することになる(図8のステップS209のYes)。
次に、サーバD20から、コンピュータD10のFINパケットに対するACK応答が上記通常のパケットと同様に転送された後(図6のパッシブクローズの開始)、サーバD20は、コンピュータD10に対しFINパケットを送信する。このFINパケットがパケット転送装置C1へと進入すると、上記アクティブクローズの開始の場合と同様に、ステップS111〜S116のフロー終端判定処理が開始される。
パケット受信部C10からパケットを受信したとの通知を受けた終端判定用情報抽出部C17は、パケット記憶部C11を参照して、TCPのFINフラグを監視し、FINパケットを発見する(図8のステップS201)。
ここでは、FINフラグが設定されているため、フロー終端判定に必要な情報であると判断し、削除する処理規則を特定するための情報(進入ポートが2、送信元アドレスが192.168.1.10、宛先が192.168.1.1、プロトコルがTCP(タイプが0x0006))を抽出し、パケットの送信まで待機する。終端判定用情報抽出部C17は、パケット送信部C16からパケットを送信したとの通知を受け取ると、さらに、パケット記憶部C11から、修正された処理規則を特定するための情報を抽出する。ここで抽出される修正された処理規則を特定するための情報は、IPアドレスが置き換えられているので、送信元アドレスが192.168.1.10、宛先が192.168.0.10、プロトコルがTCP(タイプが0x0006)となる。この情報は、逆フローのマーキングに使用される。終端判定用情報抽出部C17は、FINパケットを受信したとの通知とともに、これらの情報をフロー終端確認部C18へ通知する(図8のステップS202)。
終端判定用情報抽出部C17から、上記した情報を受け取ったフロー終端確認部C18は、パケットヘッダの所定位置にFINフラグが設定されているか否かをチェックする(図8のステップS203)。ここまでが、図3のステップS111〜S114の処理に相当する。
ここでは、FINパケットが送信されているため、フロー終端確認部C18は、前記削除対象の処理規則を特定するための情報をキーとして、処理規則記憶部C13から処理規則(図11の進入ポート2の処理規則)を抽出し、FINパケット受信のフラグをマークする(図8のS204〜S205)。この処理は、図3のステップS115の内部状態更新処理に相当する。
次に、フロー終端確認部C18は、当該処理規則について、正方向・逆方向のFINフラグがマークされているかをチェックする。ここでは、正方向・逆方向のFINフラグがマークされていることを確認できるため、フロー終端確認部C18は、当該処理規則(図12の進入ポート2からの処理規則)の最終タイムアウト時間として、2MSL(+α)を設定する(図8のステップS210)。なお、αは判定が過度に厳しくならないように定めた所定のマージンである。
次に、逆方向のマーキングに移る。フロー終端確認部C18は、前記削除対象の処理規則を特定する情報に対応する処理規則を抽出し(送信元と宛先を逆転してマッチングする)、逆方向のFINパケット受信のフラグをマークする(図8のステップS207〜S208)。
上記の結果、正方向・逆方向のFINフラグがマークされていることを確認できるため、フロー終端確認部C18は、当該処理規則(図12の進入ポート1からの処理規則)のタイムアウト時間として、2MSL(+α)を設定する(図8のステップS210)。この段階で、図12に示すように、処理規則記憶部C13の該当処理規則のタイムアウト時間2MSLが設定される。
これらのタイムアウト値の設定により、タイムアウト判定部C19の監視対象となり、タイムアウト監視が開始される(図8のステップS211〜212)。このタイムアウト監視は、タイマ値を更新し、タイムアウト値と比較することとしても良いし、また、タイムアウト値の方を更新し、所定のしきい値と比較する方法のいずれの方法を採用してもよい。
上記タイムアウト判定の間に、最後のACKが送受信されるはずであるが、もし、最後のACKが送受信されずに、FINパケットの再送が行われた場合、上記図8のステップS202以下の処理に従い、再度タイムアウト値の設定処理が行われ、新たなタイムアウト値に更新される。
最終的にタイムアウトと判定されたとき(図8のステップS211のYes)、タイムアウト判定部C19は、フロー終端確認部C18に対しタイムアウトと判定した旨を通知する。これに対応して、フロー終端確認部C18は、処理規則記憶部C13から、対応する処理規則を削除する(図3のステップS116、図8のステップS213)。この段階で、図13に示すように、処理規則記憶部C13から、該当処理規則が削除される。
なお、図8のステップS211〜212のタイムアウトの監視は、当該処理規則についてのタイムアウト判定が継続されるという意味であり、その間に別のFINパケットを受信すれば、当該FINパケットについて、別途ステップS201以下の終了判定フローに従い処理が行われる。
以上のように、FINフラグを用いて、フローの終了を確実に検出して、無駄となった処理規則を処理規則記憶部から削除することができる。
[具体例2]
再度、図6のTCPのコネクションの状態遷移図を参照すると、FINフラグによる状態遷移を通らずに、図6上段の「CLOSED」につながる箇所として、SYNフラグをマークしたSYNパケットを送信した場合のSYN_SENTからセッションがクローズされた場合、もしくは、タイムアウトが生じた場合がある。この場合、パケット転送装置は、クローズを監視することはできないが、タイムアウトは次の方法で確認できる。本具体例では、このタイムアウトをもってフローの終了判定を行うものである。
本具体例では、SYNパケットが流れたフローに対する逆方向のフロー(図6の「SYN_RCVD」から「SYN_SENT」)に、SYN/ACKパケットが流れない状態が所定時間継続したことをもってタイムアウトと判定する。
図14は、SYNフラグを用いてフローの終端を判定する処理を説明するためのフローチャートである。基本的な動作は、上記した具体例1と同等であるため、以下相違点に焦点を当てて説明する。
図14を参照すると、パケット受信部C10からパケットを受信したとの通知を受けた終端判定用情報抽出部C17は、パケット記憶部C11を参照して、TCPのSYNフラグを監視し、SYNパケットを発見する(図14のステップS301)。
ここでは、SYNフラグが設定されているため、フロー終端判定に必要な情報であると判断し、削除する処理規則を特定するための情報(進入ポートが2、送信元アドレスが192.168.1.10、宛先が192.168.1.1、プロトコルがTCP(タイプが0x0006))を抽出し、パケットの送信まで待機する。終端判定用情報抽出部C17は、パケット送信部C16からパケットを送信したとの通知を受け取ると、さらに、パケット記憶部C11から、修正された処理規則を特定するための情報を抽出する。ここで抽出される処理規則を特定するための情報は、IPアドレスが置き換えられているので、送信元アドレスが192.168.1.10、宛先が192.168.0.10、プロトコルがTCP(タイプが0x0006)となる。この情報は、逆フローのマーキングに使用される。終端判定用情報抽出部C17は、SYNパケットを受信したとの通知とともに、これらの情報をフロー終端確認部C18へ通知する(図14のステップS302)。
終端判定用情報抽出部C17から、上記した情報を受け取ったフロー終端確認部C18は、パケットヘッダの所定位置にSYNフラグが設定されており、かつ、ACKフラグがマークされていないかどうかをチェックする(図14のステップS303)。ここまでが、図3のステップS111〜S114の処理に相当する。
SYNパケットであることが確認できた場合、フロー終端確認部C18は、前記削除対象の処理規則を特定するための情報をキーとして、処理規則記憶部C13から処理規則を抽出し、SYNパケット受信のフラグをマークする(図14のS304〜S305)。この処理は、図3のステップS115の内部状態更新処理に相当する。
その後、フロー終端確認部C18は、処理規則記憶部C13に、SYN/ACKパケットの受信タイムアウト時間を設定し、タイムアウト判定部C19にタイムアウト判定処理を開始させる(図14のステップS306)。この段階で、図15に示すように、処理規則記憶部C13の該当処理規則のタイムアウト時間2MSLが設定される。
一方、ステップS303において、SYNパケットでないと判定した場合、フロー終端確認部C18は、SYN/ACKパケットかどうか、すなわち、SYNフラグ、ACKフラグが両方ともマークされているかどうかをチェックする(図14のステップS307)。
SYN/ACKパケットであることが確認できた場合、フロー終端確認部C18は、前記削除対象の処理規則を特定するための情報をキーとして、処理規則記憶部C13から処理規則を抽出し、SYNパケット受信のフラグのマークを削除する(図14のステップS308〜S309)。
その後、フロー終端確認部C18は、処理規則記憶部C13からタイムアウト時間も削除する。これにより、タイムアウト判定部C19による該処理規則をタイムアウト判定処理は解除される(図14のステップS310)。
一方、図14のステップS306にて、タイムアウト判定処理が開始された後、最終的にタイムアウトと判定されたとき(図14のステップS311のYes)、タイムアウト判定部C19は、フロー終端確認部C18に対しタイムアウトと判定した旨を通知する。これに対応して、フロー終端確認部C18は、処理規則記憶部C13から、対応する処理規則を削除する(図3のステップS116、図14のステップS314)。
上記タイムアウト判定処理は、タイムアウト判定処理が解除されるまで継続される(図14のステップS312のNo)。
以上のように、SYNフラグを用いても、フローの終了を確実に検出して、無駄となった処理規則を処理規則記憶部から削除することができる。
[具体例3]
続いて、TCPのRST(リセット)フラグを用いてフローの終了判定を行う第3の具体例について説明する。
再度、図6のTCPのコネクションの状態遷移図を参照すると、通信確立待機状態の「SYN_RCVD」から「通信待機状態」のLISTEN状態に戻る遷移があることが分かる。TCPのRST(リセット)フラグは、コネクションを開放し、通信をやり直すという意味を持つ。つまり、このRSTフラグが立てられたRSTパケットは、通信を無効化する意味を持つので、これを検出してフローの終了判定を行うことができる。
図16は、RSTフラグを用いてフローの終端を判定する処理を説明するための第1のフローチャートである。基本的な動作は、上記した具体例1と同等であるため、以下相違点に焦点を当てて説明する。
図16を参照すると、パケット受信部C10からパケットを受信したとの通知を受けた終端判定用情報抽出部C17は、パケット記憶部C11を参照して、TCPのRSTフラグを監視し、RSTパケットを発見する(図16のステップS401)。
ここでは、RSTフラグが設定されているため、フロー終端判定に必要な情報であると判断し、削除する処理規則を特定するための情報(進入ポートが2、送信元アドレスが192.168.1.10、宛先が192.168.1.1、プロトコルがTCP(タイプが0x0006))を抽出し、パケットの送信まで待機する。終端判定用情報抽出部C17は、パケット送信部C16からパケットを送信したとの通知を受け取ると、RSTパケットを受信したとの通知とともに、これらの情報をフロー終端確認部C18へ通知する(図16のステップS402)。
終端判定用情報抽出部C17から、上記した情報を受け取ったフロー終端確認部C18は、パケットヘッダの所定位置にRSTフラグが設定されているかどうかをチェックする(図16のステップS403)。ここまでが、図3のステップS111〜S114の処理に相当する。
RSTパケットであることが確認できた場合、フロー終端確認部C18は、前記削除対象の処理規則を特定するための情報をキーとして、処理規則記憶部C13から処理規則を抽出し、削除する(図16のS404〜S405)。
以上のように、RSTフラグを用いても、フローの終了を確実に検出して、無駄となった処理規則を処理規則記憶部から削除することができる。
このRSTフラグは、通信の無効化を意味するので、逆方向のフローに対しても、削除することが可能である。図17は、RSTフラグを用いてフローの終端を判定し、逆方向の処理規則も削除する場合のフローチャートである。基本的な動作は、上記した具体例1と同等であるため、以下相違点に焦点を当てて説明する。
図17を参照すると、パケット受信部C10からパケットを受信したとの通知を受けた終端判定用情報抽出部C17は、パケット記憶部C11を参照して、TCPのRSTフラグを監視し、RSTパケットを発見する(図17のステップS501)。
ここでは、RSTフラグが設定されているため、フロー終端判定に必要な情報であると判断し、削除する処理規則を特定するための情報(進入ポートが2、送信元アドレスが192.168.1.10、宛先が192.168.1.1、プロトコルがTCP(タイプが0x0006))を抽出し、パケットの送信まで待機する。終端判定用情報抽出部C17は、パケット送信部C16からパケットを送信したとの通知を受け取ると、パケット記憶部C11から、修正された処理規則を特定する情報を抽出する。ここで抽出される処理規則を特定するための情報は、IPアドレスが置き換えられているので、送信元アドレスが192.168.1.10、宛先が192.168.0.10、プロトコルがTCP(タイプが0x0006)となる。この情報は、逆フローの処理規則の削除に使用される。終端判定用情報抽出部C17は、RSTパケットを受信したとの通知とともに、これらの情報をフロー終端確認部C18へ通知する(図17のステップS502)。
終端判定用情報抽出部C17から、上記した情報を受け取ったフロー終端確認部C18は、パケットヘッダの所定位置にRSTフラグが設定されているかどうかをチェックする(図17のステップS503)。
RSTパケットであることが確認できた場合、フロー終端確認部C18は、前記削除対象の処理規則を特定するための情報をキーとして、処理規則記憶部C13から処理規則を抽出し、削除する(図17のS504〜S505)。
さらに、フロー終端確認部C18は、前記修正された処理規則(逆方向のフローに相当)を特定するための情報をキーとして、処理規則記憶部C13から処理規則を抽出し、削除する(図17のS506〜S507)。
以上のように、RSTパケットを用いて、正・逆双方向のフローに対応する処理規則を処理規則記憶部から削除することができる。
以上、本発明の好適な実施形態びその具体例を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。
例えば、本発明の具体例は、TCPの特定のフラグを監視するものであり、並列して同一のパケット転送装置に実行させることができる。例えば、上記したフロー終了の要因となるパケットの検出後の処理を、上記図8、図14、図16(図17)に分岐させることにより、実現することが可能である。
本発明の具体例では、TCPを中心に示したが、終端情報の情報フィールドが観測可能なすべてのコネクション型プロトコルに適用することが可能である。例えば、SCTP(Stream Control Transmission Protocol)のDATAチャンクにおけるE−bitでフローの終了を判断することができる。
また例えば、HTTP(Hypertext Transfer Protocol)ヘッダのConnection属性がCloseであることを検知し、対応するHTTPのメッセージ分が送信確認できたときに、フローの終了を判断することができる。
また例えば、IP(Internet Protocol)パケット列ごとに1フローと前提がつけられている環境下では、IPのMF(More Fragments)フラグにより、パケットの終端が判断できるので、フローの終了と判断することができる。
なお、上記の非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
本発明は、処理規則を規則するための記憶領域を持つHUBやスイッチなどのパケット転送装置に適用できる。
1、C1、C1a、C1b パケット転送装置
C10 パケット受信部
C11 パケット記憶部
C12 パケット処理用情報抽出部
11、C13、C13a 処理規則記憶部
C14 処理規則検索部
12、C15、C15a パケット処理部
C16 パケット送信部
13、C17、C17a 終端判定用情報抽出部
14、C18 フロー終端確認部
C19 タイムアウト判定部
D1 制御装置(コントローラ)
D10 コンピュータ(クライアント)
D20 サーバ

Claims (10)

  1. フロー単位で処理内容を定義した処理規則を記憶する処理規則記憶部と、
    前記処理規則の中から受信パケットに適合する処理規則を用いて受信パケットの処理を行うパケット処理部と、
    前記受信パケットからフローの終端を確認するための情報を抽出する終端判定用情報抽出部と、
    前記抽出された情報に基づいて、フローの終端を確認した場合、当該フローと、当該フローの逆方向のフローとにそれぞれ対応する処理規則を削除するフロー終端確認部と、を備えるパケット転送装置。
  2. さらに、前記処理規則記憶部に記憶された処理規則のタイムアウト判定を行うタイムアウト判定部を備え、
    前記フロー終端確認部は、前記終端判定用情報抽出部にて抽出された情報に基づいて、前記タイムアウト判定部にタイムアウト判定を開始させ、前記タイムアウト判定部にてタイムアウトと判定された処理規則を削除する請求項1記載のパケット転送装置。
  3. さらに、受信パケットを記憶するパケット記憶部を備え、
    前記終端判定用情報抽出部は、前記パケット記憶部から、受信パケットが属するフローと、該フローと逆方向のフローとにそれぞれ対応する処理規則を特定するための情報を抽出し、前記フロー終端確認部に、双方向の処理規則の削除を判定させる請求項1または2のパケット転送装置。
  4. 前記フロー終端確認部は、前記終端判定用情報抽出部にて抽出されたTCP(Transmission Control Protocol)のFINフラグ、RSTフラグまたはSYNフラグのいずれか一つ以上を用いて、フローの終端を判定する請求項1から3いずれか一のパケット転送装置。
  5. 請求項1から4いずれか一のパケット転送装置と、
    前記パケット転送装置に処理規則を設定する制御装置と、を含む通信システム。
  6. フロー単位で処理内容を定義した処理規則を記憶する処理規則記憶部と、
    前記処理規則の中から受信パケットに適合する処理規則を用いて受信パケットの処理を行うパケット処理部と、を備えたパケット転送装置が、
    前記受信パケットからフローの終端を確認するための情報を抽出するステップと、
    前記抽出した情報に基づいて、フローの終端を確認した場合、前記処理規則記憶部から、当該フローと、当該フローの逆方向のフローとにそれぞれ対応する処理規則を削除するステップと、を含む処理規則の更新方法。
  7. 前記パケット転送装置は、前記フローの終端を確認するための情報に基づいて、タイムアウト判定を開始し、タイムアウトと判定した処理規則を削除する請求項6の処理規則の更新方法。
  8. 前記パケット転送装置は、受信パケットと前記処理規則に従って修正された後の受信パケットから、受信パケットが属するフローと、該フローと逆方向のフローとにそれぞれ対応する処理規則を特定するための情報を抽出し、双方向の処理規則の削除を判定する請求項6または7の処理規則の更新方法。
  9. TCP(Transmission Control Protocol)のFINフラグ、RSTフラグまたはSYNフラグのいずれか一つ以上を用いて、フローの終端を判定する請求項6から8いずれか一の処理規則の更新方法。
  10. フロー単位で処理内容を定義した処理規則を記憶する処理規則記憶部と、
    前記処理規則の中から受信パケットに適合する処理規則を用いて受信パケットの処理を行うパケット処理部と、を備えたパケット転送装置を構成するコンピュータに、
    前記受信パケットからフローの終端を確認するための情報を抽出する処理と、
    前記抽出された情報に基づいて、フローの終端を確認した場合、前記処理規則記憶部から、当該フローと、当該フローの逆方向のフローとにそれぞれ対応する処理規則を削除する処理と、を実行させるプログラム。
JP2012500583A 2010-02-16 2011-02-14 パケット転送装置、通信システム、処理規則の更新方法およびプログラム Active JP5720668B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012500583A JP5720668B2 (ja) 2010-02-16 2011-02-14 パケット転送装置、通信システム、処理規則の更新方法およびプログラム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2010031522 2010-02-16
JP2010031522 2010-02-16
JP2012500583A JP5720668B2 (ja) 2010-02-16 2011-02-14 パケット転送装置、通信システム、処理規則の更新方法およびプログラム
PCT/JP2011/053025 WO2011102312A1 (ja) 2010-02-16 2011-02-14 パケット転送装置、通信システム、処理規則の更新方法およびプログラム

Publications (2)

Publication Number Publication Date
JPWO2011102312A1 JPWO2011102312A1 (ja) 2013-06-17
JP5720668B2 true JP5720668B2 (ja) 2015-05-20

Family

ID=44482897

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012500583A Active JP5720668B2 (ja) 2010-02-16 2011-02-14 パケット転送装置、通信システム、処理規則の更新方法およびプログラム

Country Status (3)

Country Link
US (1) US8737215B2 (ja)
JP (1) JP5720668B2 (ja)
WO (1) WO2011102312A1 (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5035068B2 (ja) * 2008-03-28 2012-09-26 富士通株式会社 サービス処理状況分析プログラム、サービス処理状況分析装置、およびサービス処理状況分析方法
JP5884822B2 (ja) * 2011-02-17 2016-03-15 日本電気株式会社 フロー通信システム
WO2013035342A1 (en) * 2011-09-09 2013-03-14 Nec Corporation Network management service system, control apparatus, method, and program
JP6011619B2 (ja) * 2011-11-09 2016-10-19 日本電気株式会社 移動通信端末、通信方法、通信システムおよび制御装置
US8738906B1 (en) * 2011-11-30 2014-05-27 Juniper Networks, Inc. Traffic classification and control on a network node
KR101887581B1 (ko) * 2011-12-26 2018-08-14 한국전자통신연구원 플로우 기반의 패킷 전송 장치 및 그것의 패킷 처리 방법
US9537763B2 (en) 2012-03-02 2017-01-03 Nec Corporation Communication system, control apparatus, control method and program
CN103220225B (zh) 2012-05-21 2015-07-08 华为技术有限公司 报文处理方法及设备、系统
WO2014021861A1 (en) 2012-07-31 2014-02-06 Hewlett-Packard Development Company, L.P. Implementing a transition protocol in which a first rule set for routing packets received by a group of switches during a first time period is updated to a second rule set
US9306743B2 (en) * 2012-08-30 2016-04-05 Texas Instruments Incorporated One-way key fob and vehicle pairing verification, retention, and revocation
US10187315B2 (en) * 2012-09-06 2019-01-22 Apple Inc. Apparatus and method for optimizing communications at an intermittent communication link
EP2938029B1 (en) * 2012-12-19 2019-03-27 Nec Corporation Packet processing device, flow entry arrangement method and program
JP6394606B2 (ja) * 2013-10-11 2018-09-26 日本電気株式会社 端末装置、端末装置制御方法および端末装置制御プログラム
CN104580025B (zh) * 2013-10-18 2018-12-14 华为技术有限公司 用于开放流网络中建立带内连接的方法和交换机
US10212083B2 (en) 2013-10-30 2019-02-19 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Openflow data channel and control channel separation
JP6206254B2 (ja) * 2014-03-04 2017-10-04 富士通株式会社 重複パケット除去方法及びプログラム
KR102262183B1 (ko) * 2014-04-04 2021-06-07 뉴라컴 인코포레이티드 수신 확인 방법 및 다중 사용자 전송 방법
EP4362403A2 (en) 2014-04-22 2024-05-01 Orckit Ip, Llc A method for deep packet inspection in software defined networks
GB2532055B (en) * 2014-11-07 2016-12-14 Ibm Sticky and transient markers for a packet parser
WO2016089400A1 (en) * 2014-12-03 2016-06-09 Hewlett Packard Enterprise Development Lp Modifying an address to forward a packet to a service function
US9979645B2 (en) * 2015-01-14 2018-05-22 Futurewei Technologies, Inc. Hardware and software methodologies for creating and managing portable service function chains
US10608932B2 (en) 2015-02-28 2020-03-31 Hewlett Packard Enterprise Development Lp Refresh flow entry
US10530684B2 (en) * 2015-05-19 2020-01-07 International Business Machines Corporation Management of unreachable OpenFlow rules
EP3466015B1 (en) * 2016-06-02 2023-08-09 Telefonaktiebolaget LM Ericsson (PUBL) Method and network node for handling sctp packets
US11050501B2 (en) * 2018-06-14 2021-06-29 Microchip Technology Incorporated Performing PHY-level hardware timestamping and time synchronization in cost-sensitive environments

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008108403A1 (ja) * 2007-03-06 2008-09-12 Nec Corporation ノード装置、ノードシステム、該ノード装置に用いられる統計情報管理テーブルの入替え方法及びプログラム
JP2011024179A (ja) * 2009-07-14 2011-02-03 Industry & Academic Cooperation In Chungnam National Univ (Iac) Httpパケットにおけるハングルまたは日本語のデコード方法と装置、及びこれを用いたハングルまたは日本語ウェブコンテンツの分析方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4319925B2 (ja) * 2004-03-02 2009-08-26 株式会社日立製作所 ストレージネットワークシステムの制御方法及びストレージネットワークシステム
US7554976B2 (en) * 2005-05-13 2009-06-30 Microsoft Corporation Method and system for transferring a packet stream to RDMA
US7930740B2 (en) * 2005-07-07 2011-04-19 International Business Machines Corporation System and method for detection and mitigation of distributed denial of service attacks
US20070255861A1 (en) * 2006-04-27 2007-11-01 Kain Michael T System and method for providing dynamic network firewall with default deny
KR100889670B1 (ko) * 2007-08-08 2009-03-19 삼성에스디에스 주식회사 모바일 디바이스상에서 tcp 기반의 서비스거부 공격의 차단 방법
JP5604927B2 (ja) * 2010-03-24 2014-10-15 富士通株式会社 経路制御プログラム、中継プログラム、及びデータ中継方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008108403A1 (ja) * 2007-03-06 2008-09-12 Nec Corporation ノード装置、ノードシステム、該ノード装置に用いられる統計情報管理テーブルの入替え方法及びプログラム
JP2011024179A (ja) * 2009-07-14 2011-02-03 Industry & Academic Cooperation In Chungnam National Univ (Iac) Httpパケットにおけるハングルまたは日本語のデコード方法と装置、及びこれを用いたハングルまたは日本語ウェブコンテンツの分析方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CSNG200900608001; 上野 洋史、他: '「データセンターネットワークにおけるネットワークアプライアンス機能配備の一検討」' 電子情報通信学会技術研究報告 第109巻第296号, 20091113, 第7頁-第12頁, 社団法人電子情報通信学会 *
JPN6014045358; 上野 洋史、他: '「データセンターネットワークにおけるネットワークアプライアンス機能配備の一検討」' 電子情報通信学会技術研究報告 第109巻第296号, 20091113, 第7頁-第12頁, 社団法人電子情報通信学会 *
JPN6014045364; 「OpenFlow Switch Specification Version 1.0.0 (Wire Protocol 0x01)」[online] , 20091231, 第15頁 *

Also Published As

Publication number Publication date
WO2011102312A1 (ja) 2011-08-25
US20110310901A1 (en) 2011-12-22
US8737215B2 (en) 2014-05-27
JPWO2011102312A1 (ja) 2013-06-17

Similar Documents

Publication Publication Date Title
JP5720668B2 (ja) パケット転送装置、通信システム、処理規則の更新方法およびプログラム
US9692650B2 (en) Control apparatus, communication system, communication method, and program
JP6144834B2 (ja) Sdnスイッチにより正確なフロー・エントリを獲得するための方法、およびsdnスイッチ、コントローラ、およびシステム
JP5557066B2 (ja) スイッチシステム、モニタリング集中管理方法
US20140019639A1 (en) Computer system and communication method
JP5598582B2 (ja) 通信システム、ノード、制御装置、通信方法およびプログラム
JP5987920B2 (ja) 通信システム、制御装置及びネットワークトポロジの管理方法
JP5800019B2 (ja) 通信経路制御システム、経路制御装置、通信経路制御方法および経路制御プログラム
US20130282867A1 (en) Information system, control apparatus, method of providing virtual network, and program
JP2015029356A (ja) 制御装置、通信システム、制御方法及びプログラム
US9515926B2 (en) Communication system, upper layer switch, control apparatus, switch control method, and program
CN106576108B (zh) 通信系统中的通信方法和设备及系统
JP2013535895A (ja) 通信システム、ノード、統計情報収集装置、統計情報の収集方法およびプログラム
JP5725236B2 (ja) 通信システム、ノード、パケット転送方法およびプログラム
JP5720340B2 (ja) 制御サーバ、通信システム、制御方法およびプログラム
WO2013047705A1 (ja) ネットワークシステム、フロントエンド装置、制御メッセージ送信レート低減方法
EP2916497A1 (en) Communication system, path information exchange device, communication node, transfer method for path information and program
JP2013223191A (ja) 通信システム、制御装置、パケット採取方法及びプログラム
WO2014104277A1 (ja) 制御装置、通信システム、通信ノードの制御方法及びプログラム
JP2015521391A (ja) 通信システムと通信方法並びにプログラム
JP5657505B2 (ja) ネットワークシステム、中継装置、通信方法、中継方法及び中継プログラム
US8639822B2 (en) Extending application-layer sessions based on out-of-order messages
WO2015045275A1 (ja) 制御装置、ネットワークシステム、パケット転送制御方法、制御装置用プログラム
JP6424496B2 (ja) パケット転送システム,及びパケット転送装置
WO2014038143A1 (en) Flow information collecting system, method and program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141028

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141226

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150224

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150309

R150 Certificate of patent or registration of utility model

Ref document number: 5720668

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150