JP2017163377A - パケット処理装置,及びそのテーブル選択方法 - Google Patents
パケット処理装置,及びそのテーブル選択方法 Download PDFInfo
- Publication number
- JP2017163377A JP2017163377A JP2016046705A JP2016046705A JP2017163377A JP 2017163377 A JP2017163377 A JP 2017163377A JP 2016046705 A JP2016046705 A JP 2016046705A JP 2016046705 A JP2016046705 A JP 2016046705A JP 2017163377 A JP2017163377 A JP 2017163377A
- Authority
- JP
- Japan
- Prior art keywords
- packet
- identification information
- search
- type
- candidate
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2483—Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/645—Splitting route computation layer and forwarding layer, e.g. routing according to path computational element [PCE] or based on OpenFlow functionality
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
【課題】テーブルの検索速度の低下を抑止可能とする。
【解決手段】パケット処理装置は、パケット識別情報に対応する処理を示す情報とを含むテーブルと、受信されたパケットのパケット識別情報に対応する処理をテーブルから検索する処理部と、新規のパケットの識別情報を含む新規エントリの追加要求が受信された場合に、テーブルに記憶されている既存のパケット識別情報と、新規のパケット識別情報とに基づいて、種別が異なり且つ前記新規のパケットの識別情報及び前記既存のパケットの識別情報に含まれる全てのパケットを検索可能な複数のテーブルの候補を取得する取得部と、各候補のテーブルに記憶されるパケット識別情報の数に基づいて、検索時間の短い複数のテーブルの候補の一つを、処理部による検索に用いるテーブルとして選択する選択部とを含む。
【選択図】図6
【解決手段】パケット処理装置は、パケット識別情報に対応する処理を示す情報とを含むテーブルと、受信されたパケットのパケット識別情報に対応する処理をテーブルから検索する処理部と、新規のパケットの識別情報を含む新規エントリの追加要求が受信された場合に、テーブルに記憶されている既存のパケット識別情報と、新規のパケット識別情報とに基づいて、種別が異なり且つ前記新規のパケットの識別情報及び前記既存のパケットの識別情報に含まれる全てのパケットを検索可能な複数のテーブルの候補を取得する取得部と、各候補のテーブルに記憶されるパケット識別情報の数に基づいて、検索時間の短い複数のテーブルの候補の一つを、処理部による検索に用いるテーブルとして選択する選択部とを含む。
【選択図】図6
Description
本発明は、パケット処理装置,及びそのテーブル選択方法に関する。
Software Defined Networking(SDN)は、ソフトウェアでネットワーク全体の挙動
を制御する技術である。SDNを実現する標準として、OpenFlow(オープンフロー)技術がある。OpenFlowネットワークは、データ転送機能を備える“OpenFlowスイッチ”(OF−SW:以下「スイッチ」と表記することもある)と、経路制御を司る“OpenFlowコントローラ”(OFC:以下「コントローラ」と表記することもある)を備え、コントローラとスイッチとは“OpenFlowプロトコル”に従って、コミュニケーションを図る。
を制御する技術である。SDNを実現する標準として、OpenFlow(オープンフロー)技術がある。OpenFlowネットワークは、データ転送機能を備える“OpenFlowスイッチ”(OF−SW:以下「スイッチ」と表記することもある)と、経路制御を司る“OpenFlowコントローラ”(OFC:以下「コントローラ」と表記することもある)を備え、コントローラとスイッチとは“OpenFlowプロトコル”に従って、コミュニケーションを図る。
各スイッチは、自身に入力されたパケットに対する動作(アクション)を決定するための情報が記憶されたフローテーブルを備える。OpenFlowでは、「フロー」と呼ばれる通信単位で通信トラフィックが制御される。フローは、“ヘッダフィールド(マッチ条件とも呼ばれる)”,“アクション(Action)”,及び“統計情報(Statistics)”の構成要素を備える。フローテーブルは、フローに係る情報が格納されたエントリ(以下、「フローエントリ」と呼ぶ)の集合体であり、各フローエントリは、“ヘッダフィールド(マッチ条件とも呼ばれる)”,“アクション(Action)”,及び“統計情報(Statistics)”を含む。
“マッチ条件”は、パケット(トラフィック)の識別情報であり、パケットを特定するためのパラメータで形成される。マッチ条件は、パケットのヘッダ情報(MAC(Media Access Control)アドレス、VLAN(Virtual Local Area Network)タグ、IP(Internet Protocol)アドレス、TCP/UDPポート番号など)の任意の組み合わせによっ
て形成される。“アクション”は、“マッチ条件”に合致したパケットに対する処理内容(動作:アクション)を示す情報である。“統計情報”は、マッチ条件に合致し、アクションに基づく処理が行われたパケット数のような統計情報を示す。スイッチは、フローテーブルを参照し、受信されたパケットが合致するマッチ条件を含むエントリを特定し、特定されたエントリで定義されたアクション(例えば、或るポートからパケットを出力する)を行うことができる。
て形成される。“アクション”は、“マッチ条件”に合致したパケットに対する処理内容(動作:アクション)を示す情報である。“統計情報”は、マッチ条件に合致し、アクションに基づく処理が行われたパケット数のような統計情報を示す。スイッチは、フローテーブルを参照し、受信されたパケットが合致するマッチ条件を含むエントリを特定し、特定されたエントリで定義されたアクション(例えば、或るポートからパケットを出力する)を行うことができる。
フローに係る情報(フローエントリ)は、コントローラによって生成され、“OpenFlowプロトコル”を用いて各スイッチに送信される。各スイッチは、コントローラから受信したフローをフローテーブルに記憶する。このように、コントローラは、コントローラ自身の配下にある各スイッチが有するフローテーブルを一元管理する。
一般に、フローテーブルの柔軟性(フローテーブルへの登録許容範囲)を上げると性能(検索速度、スケーラビリティ)が下がる。柔軟性の高い検索方法の一つに、“マスク(Mask)付き検索”がある。マスク付き検索では、例えば、マッチ条件として設定された複
数のパラメータのそれぞれ、或いは、パラメータをなす各ビット又はバイトに対する参照・非参照を自由に設定することができる。
数のパラメータのそれぞれ、或いは、パラメータをなす各ビット又はバイトに対する参照・非参照を自由に設定することができる。
例えば、検索対象として、MACアドレス及びIPアドレスを設定し得る場合に、MACアドレスとIPアドレスとの一方をマスクするケースがある。或いは、IPアドレスのような、プリフィックス(Prefix)を有する検索対象をマッチ条件とする場合がある。IPアドレスをマッチ条件とするエントリが登録される場合を仮定する。IPアドレスのうち、プリフィックス以外の部分は参照を要しないため、マスクすることができる。一方、プリフィックスのサイズは適宜設定可能である。このため、フローテーブルとして、マスク付き検索のテーブルを用意し、プリフィックスの異なる(マスク位置の異なる)複数のエントリを1つのテーブルにて検索可能とすることが考えられる。
しかし、マスク付き検索では、個々のエントリに対する逐次検索が行われる結果、検索速度が遅くなる。このようなテーブルの検索時間がパケットの転送処理に影響を及ぼし、スイッチにおけるパケットのスループット低下を招来するおそれがあった。
本発明は、テーブルの検索速度の低下を抑止可能となる技術を提供することを目的とする。
本発明の一態様は、パケット処理装置である。このパケット処理装置は、パケット識別情報と、前記パケット識別情報に対応する処理を示す情報とを含むテーブルと、受信されたパケットのパケット識別情報に対応する処理を前記テーブルから検索する処理部と、新規のパケットの識別情報を含む新規エントリの追加要求が受信された場合に、前記テーブルに記憶されている既存のパケット識別情報と、前記新規のパケット識別情報とに基づいて、種別が異なり且つ前記新規のパケットの識別情報及び前記既存のパケットの識別情報に含まれる全てのパケットを検索可能な複数のテーブルの候補を取得する取得部と、各候補のテーブルに記憶されるパケット識別情報の数に基づいて、検索時間の短い前記複数のテーブルの候補の一つを、前記処理部による検索に用いるテーブルとして選択する選択部とを含む。
本発明の一態様によれば、テーブルの検索速度の低下を抑止可能となる。
以下、図面を参照し、パケット処理装置及びそのテーブル選択方法の実施形態について説明する。実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
図1は、実施形態に係るネットワークシステムの一例を示す図である。図1には、SDNネットワークシステムの一例として、OpenFlowネットワークシステムが示されている。但し、OpenFlowはSDNの一例であり、OpenFlow以外のSDNシステムについて実施形態に係る構成は適用可能である。
図1に示す例では、OpenFlowネットワークは、コントローラ(OFC)1と、OFC1とネットワーク3を介して接続された複数のスイッチ(OF−SW)2とを含む。図1の例では、複数のスイッチとして、OF−SW#1,OF−SW#2,及びOF−SW#3が図示されている。
OFC1は、各OF−SW2とOpenFlowプロトコルを用いて通信し、各OF−SW2の動作を制御する。例えば、OF−SW#1→OF−SW#2→OF−SW#3の経路でパケットを転送する場合には、OFC1は、各OF−SW2向けのフローエントリを生成して、対応するOF−SW2に送信する。
上記例では、OFC1は、OF−SW#1に関して、転送の対象のパケット(トラフィック)を特定する“マッチ条件”と、対象のパケットをOF−SW#2と接続されたポートへ出力する旨の“アクション”とを含むフローエントリを生成する。OFC1は、フローエントリをOF−SW#1へ送信する。OFC1は、OF−SW#2に関して、OF−SW#1から受信されたパケットをOF−SW#3と接続されたポートから出力するためのフローエントリを生成し、OF−SW#2へ送信する。OFC1は、OF−SW#3に関して、OF−SW#2から受信されたパケットを所定のポートから出力するためのフローエントリを生成し、OF−SW#3へ送信する。
各OF−SW2は、OFC1から受信されるフローエントリを、フローテーブル4に記憶する。各OF−SW2は、パケットが受信された場合に、パケットと合致するマッチ条件を有するフローエントリを特定し、特定したフローエントリ中のアクション情報に従った動作を行う。これによって、受信されたパケットがアクション情報に従って指定されたポートから出力される。
OFC1は、各OF−SW2へ送信したフローエントリを一元的に管理することで、O
F−SW2の動作を制御する。OF−SW2は、フローテーブル4に記憶されたいずれのフローエントリ(マッチ条件)ともマッチしないパケットが受信された場合には、当該パケットに対応するフローエントリの提供要求メッセージをOFC1へ送信する。提供要求メッセージに応じて、OFC1は対応するフローエントリを生成し、OF−SW2へ送信する。
F−SW2の動作を制御する。OF−SW2は、フローテーブル4に記憶されたいずれのフローエントリ(マッチ条件)ともマッチしないパケットが受信された場合には、当該パケットに対応するフローエントリの提供要求メッセージをOFC1へ送信する。提供要求メッセージに応じて、OFC1は対応するフローエントリを生成し、OF−SW2へ送信する。
OF−SW2の動作を規定するフローテーブル4は、OFC1から受信されるフローエントリによって形成される。図2Aは、OpenFlow ver.1.0におけるフローテーブルを模式的に示し、図2Bは、OpenFlow ver.1.1におけるフローテーブルを模式的に示す。OpenFlow ver.1.0では、図2Aに示すように、OF−SW2に1つのフローテーブルが設けられ、マッチ条件は、12個の要素(検索対象のフィールド)を有していた。
要素(検索対象のフィールド)は、受信ポート(Switch Port (Ingress Port)),送信元MACアドレス(MAC src),宛先MACアドレス(MAC dst),プロトコル種別,VLAN−ID,VLAN Priority(VLAN PCP(Priority Code Point)値)などである。また、要素(検索対象のフィールド)は、送信元IPアドレス(IP src),宛先IPアドレス(IP dst),TCP送信元ポート番号,TCP宛先ポート番号,ToS(Type of Service)値などを含む。
このため、フローテーブルは、例えば、TCAM(Ternary Content Addressable Memory)などを用いて作成され、要素中の任意の領域が検索対象となる(マスク付き検索が行われる)ように、要素中の検索対象以外の領域にマスクが施される。
これに対し、OpenFlow ver.1.1以降では、図2Bに示すように、フローテーブルを複数のテーブルに分割することが許容されている。また、OpenFlowでは、OF−SW2におけるフローテーブルの実装方法に言及していない。すなわち、OF−SW2に実装されるフローテーブルフローテーブルの個数や、各フローテーブルのデータ構造に制限はない。例えば、OF−SW2に、マッチ条件を記憶した複数のテーブルを設け、各テーブルに対応するアクション情報のエントリを含むテーブル(アクションテーブル)が1以上設けられる場合もある。実施形態に係る構成は、OpenFlow ver.1.0及びOpenFlow ver.1.1の双方について適用可能である。
以下、マスク付き検索による性能低下(検索速度低下など)によってスループットが低下するのを抑止可能とするための構成について説明する。フローテーブルのような検索テーブルに要求される要件は、マッチ条件に適合する(マッチ条件で規定される集合の要素となる)全てのパケットが検索されるように、マッチ条件のエントリがテーブルに登録されていることである。
マッチ条件の要素が、IPアドレスのように、マスク位置を適宜変更可能である場合には、マスク付き検索テーブルでフローテーブルを形成する。これによって、マスク位置の異なる(例えば、異なるプレフィクス長を有する)複数のエントリ(マッチ条件)を同一のテーブル内に記憶することができる。
これは、エントリ毎にマスク位置を変更し得るマスク付きテーブルの柔軟性によってなされる。これに対し、もし、テーブルが所望のパケットを検索し得るのであれば、テーブルが柔軟性を具備することは必ずしも要求されない。すなわち、或る時点のマスク付き検索テーブルによって検索し得る全てのパケットが、個々のエントリによって表現されたマスク無し検索テーブルにて検索され得るならば、マスク付き検索テーブルとマスク無し検索テーブルとは、機能において等価と云える。
図3及び図4は、実施形態に係る説明図である。例えば、マッチ条件として、IPアドレスを検索する場合を仮定する。以下の説明において、テーブルに登録され、パケットから検索キーとして抽出された情報と照合される情報を、「キー(Key)エントリ」又は「
キー情報」という場合がある。また、検索キーとして抽出された情報を、「キー情報」という場合もある。
キー情報」という場合がある。また、検索キーとして抽出された情報を、「キー情報」という場合もある。
“10.1.1.x/24(上位3バイト(byte(s))がプレフィクスであり、下位1バイトはマス
ク可能)”というマッチ条件を含むフローエントリをフローテーブルに追加する旨のOF
Cからの要求を、OF−SWが受信する。
ク可能)”というマッチ条件を含むフローエントリをフローテーブルに追加する旨のOF
Cからの要求を、OF−SWが受信する。
OF−SWのテーブル作成部は、OFCからの指示に従って、“10.1.1.x”のフローエントリを含む4バイト長のマスク付きテーブルを、フローテーブルとして作成する(図3の左側参照)。
この“10.1.1.x”は、OF−SWに到着するパケットのうち、10.1.1.0〜10.1.1.255の何れかのIPアドレスを有する256パターンのパケットを検出することができる。なお、IPアドレスのプリフィックス長は適宜設定可能である。この場合、フローテーブルは、マスク長やマスク位置の異なるエントリ(例えば、下位2バイトがマスクである場合など)を記憶可能に形成される。
4バイト長のマスク付きテーブルに、キーエントリとして“10.1.1.x”だけが登録されている時点では、当該マスク付きテーブルは、図3の右側に示すように、“10.1.1”の3バイト長のエントリが登録されたマスク無しテーブルと等価である。すなわち、下位1バイトを検索対象に含めないテーブルでも、4バイト長のマスク付きテーブルと同じIPアドレスを検出することができる。但し、両テーブル間で検索速度に差がある場合、検索速度の速い(検索時間の短い)テーブルが性能の良いテーブルとされる。
次に、図4に示すように、“10.1.2.3”(4バイトでマスク無し)というIPアドレスがマッチ条件として、フローテーブルに追加登録される場合を仮定する。図4の左に示すように、“10.1.2.3”(マスク無し)のエントリを追加し、当該エントリについてはマスク無しの4バイトを検索対象とする検索を行う。“10.1.1.x”のエントリについては、下位1バイトをマスク(参照しない部分)とする検索を行うことができる。
一方、図3の右側に示したような3バイト長のマスク無しテーブルに“10.1.2.3”(マスク無し)のエントリを追加することはできない。検索対象のバイト長が異なるからである。この様な、既存テーブルに登録し得ないエントリの追加の指示が到着した場合、テーブルの種類を変更し、既存のエントリで検索し得るパケットの全てと、追加の指示に係るエントリで検索し得るパケットの全てとを検索可能なテーブルを構築する方法が考えられる。
図3の例では、“10.1.1”(マスク無し)のエントリは、“10.1.1.0”〜“10.1.1.255”の256パターンのエントリと等価と考えることができる。このため、図4の右側に示すように、“10.1.1.0”〜“10.1.1.255”に対応する256個のエントリと、追加指示に係る“10.1.2.3”のエントリとが登録されたテーブルを構築する。すなわち、テーブルの種類(構造)を、「3バイト長のマスクなしテーブル」から「4バイト長の完全一致検索テーブル」へ変更する。この様なテーブルは、“10.1.1.x”及び“10.1.2.3”に含まれる全ての要素(パケット)を検出することができる。
よって、図4の左側のテーブルと、右側のテーブルとは、所望のパケットの全てを検出可能である点で等価である。但し、左側のテーブルと右側のテーブルとの間に検索速度の
差がある場合には、検索速度が速いテーブルの種類が選択されるのが好ましい。例えば、一般的にマスク付きテーブルはマスク無しテーブルより性能が低いとされる。しかし、エントリ数がごく小さい場合、ハッシュ(Hash)演算を用いる完全一致検索よりも検索速度が速くなる場合もあり得る。
差がある場合には、検索速度が速いテーブルの種類が選択されるのが好ましい。例えば、一般的にマスク付きテーブルはマスク無しテーブルより性能が低いとされる。しかし、エントリ数がごく小さい場合、ハッシュ(Hash)演算を用いる完全一致検索よりも検索速度が速くなる場合もあり得る。
このため、エントリの追加に対応し得るテーブルの種類が複数の場合、各テーブルのエントリ数から、性能が高い(検索速度の速い(検索時間の短い))テーブルを選択する。これによって、エントリ追加に伴う検索速度低下を抑止し、スループット低下を回避し得る。以下、実施形態に係るスイッチ(OF−SW)の詳細について説明する。
<スイッチ(OF−SW)の構成>
図5は、OFC1及びOF−SW2のそれぞれとして使用可能な情報処理装置(コンピュータ)10のハードウェア構成例を示す。情報処理装置10として、例えば、パーソナルコンピュータ(PC),ワークステーション(WS)のような汎用コンピュータを適用できる。或いは、サーバマシンのような専用のコンピュータを適用することもできる。但し、上述したPC,WS,サーバマシン以外のコンピュータを用いる場合もある。
図5は、OFC1及びOF−SW2のそれぞれとして使用可能な情報処理装置(コンピュータ)10のハードウェア構成例を示す。情報処理装置10として、例えば、パーソナルコンピュータ(PC),ワークステーション(WS)のような汎用コンピュータを適用できる。或いは、サーバマシンのような専用のコンピュータを適用することもできる。但し、上述したPC,WS,サーバマシン以外のコンピュータを用いる場合もある。
図5に示すように、情報処理装置10は、例えば、バスを介して相互に接続された、Central Processing Unit(CPU)11と、メモリ12と、出力装置13と、入力装置1
4と、通信インタフェース(通信IF)15とを含む。CPU11は、「制御部」、「制御装置」の一例であり、メモリ12は、「記憶装置」、「記憶部」、「記憶媒体」の一例である。
4と、通信インタフェース(通信IF)15とを含む。CPU11は、「制御部」、「制御装置」の一例であり、メモリ12は、「記憶装置」、「記憶部」、「記憶媒体」の一例である。
メモリ12は、主記憶装置と補助記憶装置とを含む。主記憶装置は、プログラムの展開領域,CPU11の作業領域,データやプログラムの記憶領域又はバッファ領域として使用される。主記憶装置は、例えばRandom Access Memory(RAM),或いはRAMとRead
Only Memory(ROM)との組み合わせで形成される。
Only Memory(ROM)との組み合わせで形成される。
補助記憶装置は、例えば、ハードディスクドライブ(HDD),Solid State Drive(
SSD),フラッシュメモリ,Electrically Erasable Programmable Read-Only Memory
(EEPROM)などの不揮発性記憶媒体で形成される。補助記憶装置は、データやプログラムの記憶領域として使用される。
SSD),フラッシュメモリ,Electrically Erasable Programmable Read-Only Memory
(EEPROM)などの不揮発性記憶媒体で形成される。補助記憶装置は、データやプログラムの記憶領域として使用される。
出力装置13は、データや情報を出力する。出力装置13は、例えば、ディスプレイ,プリンタなどである。入力装置14は、情報やデータの入力に使用される。入力装置14は、例えば、キー,ボタン,マウス等のポインティングデバイス,タッチパネルなどである。
通信IF15は、ネットワークに接続され、他の通信装置とデータを送受信するインタフェース回路である。通信IF15として、例えば、Local Area Network(LAN)カードやネットワークインタフェースカード(NIC)と呼ばれる通信インタフェースカードが適用される。
CPU11は、プロセッサの一例であり、メモリ12中の主記憶装置及び補助記憶装置の少なくとも一方に記憶されたプログラムを主記憶装置にロードして実行する。これによって、CPU11は、情報処理装置10をOFC1、或いはOF−SW2として動作させる。
CPU11は、MPU(Microprocessor)、プロセッサとも呼ばれる。CPU11は、単一のプロセッサに限定される訳ではなく、マルチプロセッサ構成であってもよい。また
、単一のソケットで接続される単一のCPUがマルチコア構成を有していても良い。CPU11で行われる処理の少なくとも一部は、CPU以外のプロセッサ、例えば、Digital Signal Processor(DSP)、Graphics Processing Unit(GPU)、数値演算プロセッサ、ベクトルプロセッサ、画像処理プロセッサ等の専用プロセッサで行われても良い。
、単一のソケットで接続される単一のCPUがマルチコア構成を有していても良い。CPU11で行われる処理の少なくとも一部は、CPU以外のプロセッサ、例えば、Digital Signal Processor(DSP)、Graphics Processing Unit(GPU)、数値演算プロセッサ、ベクトルプロセッサ、画像処理プロセッサ等の専用プロセッサで行われても良い。
また、CPU11で行われる処理の少なくとも一部は、集積回路(IC)、その他のディジタル回路で行われても良い。また、集積回路やディジタル回路はアナログ回路を含んでいても良い。集積回路は、LSI,Application Specific Integrated Circuit(ASIC
),プログラマブルロジックデバイス(PLD)を含む。PLDは、例えば、Field-Programmable Gate Array(FPGA)を含む。CPU11で行われる処理の少なくとも一部は、プ
ロセッサと集積回路との組み合わせにより実行されても良い。組み合わせは、例えば、マイクロコントローラ(MCU),SoC(System-on-a-chip),システムLSI,チップセットなどと呼ばれる。
),プログラマブルロジックデバイス(PLD)を含む。PLDは、例えば、Field-Programmable Gate Array(FPGA)を含む。CPU11で行われる処理の少なくとも一部は、プ
ロセッサと集積回路との組み合わせにより実行されても良い。組み合わせは、例えば、マイクロコントローラ(MCU),SoC(System-on-a-chip),システムLSI,チップセットなどと呼ばれる。
図6は、スイッチ(OF−SW)2の機能を模式的に示す図であり、図7は、スイッチ(OF−SW)2のフローテーブル作成に係る機能を模式的に示す図である。OF−SW2は、「パケット処理装置」の一例である。
図6において、OF−SW2は、メッセージ送受信部41と、パケット処理部42と、入出力処理部43とを含む。パケット処理部42は、フローテーブル4と、テーブル分析・選択部45と、性能ナレッジ蓄積部46とを含む。但し、テーブル分析・選択部45及び性能ナレッジ蓄積部46は、パケット処理部42から独立した存在であっても良い。
メッセージ送受信部41は、OFC1と通信を行い、メッセージ交換を行う。例えば、メッセージ送受信部41は、フローエントリの提供要求をOFCに送信したり、フローエントリの登録要求(追加要求)のメッセージをOFC1から受信したりする。
入出力処理部43は、複数のポートを有する。図6には、複数のポートの例示として、ポートP1〜P6が示されている。ポートP1〜P6のそれぞれは、パケットの入力ポート及び出力ポートの少なくとも一方として使用可能である。
パケット処理部42は、入出力処理部43のポートで受信されたパケットに関するフローテーブル4の検索処理を行い、パケットと合致するマッチ条件を含むエントリを特定する。パケット処理部42は、マッチ条件に対応するアクション情報を特定し、アクション情報に従った動作を行う。例えば、アクション情報が所定のポート(例えばポートP5)からのパケット出力を示す場合、入出力処理部43において、パケットがポートP5から出力される。
なお、図3に示した通信IF15は、例えば、メッセージ送受信部41及び入出力処理部43として動作する。CPU11は、パケット処理部42,テーブル分析・選択部45,性能ナレッジ蓄積部46として動作する。フローテーブル4と、テーブル分析・選択部45及び性能ナレッジ蓄積部46が管理する情報及びデータ(予測時間DB47、各種の判定閾値など)とは、メモリ12に記憶される。
テーブル分析・選択部45は、現在のフローテーブル4に登録(記憶)されたキーエントリ情報と、OFC1から追加が要求されたフローエントリ情報(キーエントリ情報を含む)とに基づき、複数のテーブル種別から候補となりうる複数のテーブル種別を抽出する。
テーブル分析・選択部45は、候補毎にテーブルの種別、構築後のテーブルのエントリ
数、などの情報(テーブル構成情報)を性能ナレッジ蓄積部46に供給するとともに、当該情報に基づく予測所要時間を性能ナレッジ蓄積部46に問合せる。なお、候補が種別の異なる複数の多段テーブルとなる場合があり得る。この場合、多段テーブルを形成する各テーブルの種別、エントリ数,テーブルの段数(ステージ数)がテーブル構成情報となる。予測所要時間は、テーブルの種別、エントリ数などから特定されるテーブルを用いて検索を行った場合における検索の所要時間の予測値を示す。予測所要時間は、検索速度を示す情報でもある。
数、などの情報(テーブル構成情報)を性能ナレッジ蓄積部46に供給するとともに、当該情報に基づく予測所要時間を性能ナレッジ蓄積部46に問合せる。なお、候補が種別の異なる複数の多段テーブルとなる場合があり得る。この場合、多段テーブルを形成する各テーブルの種別、エントリ数,テーブルの段数(ステージ数)がテーブル構成情報となる。予測所要時間は、テーブルの種別、エントリ数などから特定されるテーブルを用いて検索を行った場合における検索の所要時間の予測値を示す。予測所要時間は、検索速度を示す情報でもある。
性能ナレッジ蓄積部46は、テーブルの種別、エントリ数毎にパケットを処理するための予測所要時間を記憶した予測時間データベース(予測時間DB)47を管理する。図8は、予測時間DB47のデータ構造例を示す。予測時間DB47は、テーブル種別、エントリ数、及び予測時間が関連づけられた1以上のエントリ(レコード)で形成される。なお、候補が多段テーブルをなす場合、例えば、多段テーブルを形成するテーブル毎の予測所要時間が予測時間DB47から読み出され、その合計値が検索時間の予測値として使用され得る。
予測時間DB47に記憶される情報は、手入力によって予め記憶されても良い。また、実際のパケット処理時間計測によって得られた時間が予測時間DB47に記憶されても良い。また、予測時間DB47に手入力で記憶された値が実際の時間計測によって更新されるようにしても良い。
予測所要時間が実際のパケットの処理時間計測によって得られる場合、例えば、図9に示すOF−SW2の他の実施形態に係る構成を採用することができる。図9に示す様に、OF−SW2は、時刻挿入部48と、時刻計測部49とを備える。時刻挿入部48は、パケットに現在時刻情報を付与する。時刻計測部49は、フローテーブル4を用いた検索後の時刻からパケットに付与された現在時刻を減じて、所要時間を算出する。所要時間は、性能ナレッジ蓄積部46に通知され、性能ナレッジ蓄積部46は、予測時間DB47に所要時間を記憶する。このとき、性能ナレッジ蓄積部46は、テーブル分析・選択部45から、検索に使用中のフローテーブル4のテーブル種別及びエントリ数の情報を得ており、所要時間と関連づけて予測時間DB47に記憶する。
これによって、予測所要時間情報が事前に予測時間DB47に記憶されていない場合でも、予測時間DB47を構築することができる。事前の記憶がある場合でも、所要時間の実測によって精度を高めることができる。
なお、予測時間DB47に蓄積された情報が不十分で、パケット処理時間(例えばテーブルの検索時間)の短いテーブルを候補から選択するのが困難な場合があり得る。この場合、性能ナレッジ蓄積部46は、テーブル分析・選択部45から示された候補のうちの一つを選択して回答する一方で、上記した時刻挿入部48と、時刻計測部49とを用いて所要時間のデータを収集する。このようにして、予測時間DB47へデータを蓄積できる。例えば、所望の頻度、回数などで、問い合わせに対して回答するテーブル種別を変更することで、複数のテーブル種別、エントリ数に対する所要時間のデータを収集し、予測時間DB47に蓄積することができる。
フローテーブル4は、「フローテーブル4のパケット識別情報と、前記パケット識別情報に対応する処理を示す情報とを含むテーブル」の一例である。フローテーブル4に記憶されるマッチ条件は、「パケット識別情報」の一例であり、フローテーブル4に記憶されるアクションは、「パケット識別情報に対応する処理を示す情報」の一例である。フローテーブル4は、1段または複数段のテーブルで形成することができる。パケット処理部42は、「処理部」の一例である。テーブル分析・選択部45は「取得部」、「管理部」の
一例である。性能ナレッジ蓄積部46は、「選択部」、「蓄積部」の一例である。予測時間DB47は、「記憶部」の一例である。
一例である。性能ナレッジ蓄積部46は、「選択部」、「蓄積部」の一例である。予測時間DB47は、「記憶部」の一例である。
<テーブル分析・選択部の処理>
図10は、テーブル分析・選択部45によって行われるテーブル種別(候補)の判定処理の一例を示すフローチャートである。図10に示す処理は、テーブル分析・選択部45として動作するCPU11によって行われる。図10に示す処理は、CPU11が既存のフローテーブル4のキー(Key)エントリ(マッチ条件)と、OFC1から追加が要求さ
れたフローエントリのキーエントリ(マッチ条件)とを得た場合に開始される。
図10は、テーブル分析・選択部45によって行われるテーブル種別(候補)の判定処理の一例を示すフローチャートである。図10に示す処理は、テーブル分析・選択部45として動作するCPU11によって行われる。図10に示す処理は、CPU11が既存のフローテーブル4のキー(Key)エントリ(マッチ条件)と、OFC1から追加が要求さ
れたフローエントリのキーエントリ(マッチ条件)とを得た場合に開始される。
図10の001の処理では、CPU11は、既存のキーエントリ(既存エントリ)及び新規のキーエントリ(新規エントリ)がマスク付きか否かを判定する。既存エントリ及び新規エントリがマスク付きでない場合、処理が002に進み、そうでない場合、処理が003に進む。
002に処理が進んだ場合には、CPU11は、現在のフローテーブル4のエントリ数に追加が指示されたフローエントリの数(1)を加えた数が、所定数(例えば10)以下で、且つ検索対象のバイト数が所定バイト数(例えば2バイト)以下か否かを判定する。
エントリ数が所定数以下で且つ検索対象のバイト数が所定バイト数以下と判定される場合には、CPU11は、テーブル種別の候補を「少エントリ型EM」,「ハッシュ型EM」,「マスク付き逐次検索+キャッシュ方式」,及び「マスク付き逐次検索」と判定する。
これに対し、エントリ数及び検索対象のバイト数の少なくとも一方が所定数を超過すると判定される場合には、CPU11は、テーブル種別の候補を「ハッシュ型EM」,「マスク付き逐次検索+キャッシュ方式」,及び「マスク付き逐次検索」と判定する。
003に処理が進んだ場合には、CPU11は、既存エントリのマスク位置と、新規エントリのマスク位置とが一致しているか否かを判定する。既存エントリのマスク位置と、新規エントリのマスク位置とが一致していると判定される場合には、CPU11は、処理を002に進める。これに対し、既存エントリのマスク位置と、新規エントリのマスク位置とが一致していないと判定される場合には、CPU11は、処理を004に進める。
なお、001の処理において、既存エントリと新規エントリとの一方がマスク付きで、他方がマスク無しである場合にも、003の処理が行われる。この場合、マスク位置が、マスク無しのキーエントリで検索対象となっていない部分と一致するか否かが判定される。例えば、図3に示した例のように、3バイト長のマスク無し検索で検索とならない部分(下位1バイト)と、マスク付き検索でマスクされた部分(下位1バイト)とが一致するか否かが判定される。
004の処理では、CPU11は、既存エントリのマスク位置と新規エントリのマスク位置との不一致箇所のビット数が所定数(例えば3ビット)以下か否かを判定する。不一致箇所のビット数が所定数以下と判定される場合には、CPU11は、処理を006に進める。これに対し、不一致箇所のビット数が所定数を超過すると判定される場合には、CPU11は、処理を005に進める。
005の処理では、CPU11は、既存エントリ及び新規エントリのマスクされていない部分(マスク以外)のビットが連続しているか不連続(離散的に存在する)かが判定される。ビットが連続していると判定される場合には、CPU11は、テーブル種別の候補
を「ツリー型マスク(Tree型Mask)」,「マスク付き逐次検索+キャッシュ方式」及び「マスク付き逐次検索」と判定する。
を「ツリー型マスク(Tree型Mask)」,「マスク付き逐次検索+キャッシュ方式」及び「マスク付き逐次検索」と判定する。
これに対し、ビットが不連続と判定される場合には、CPU11は、テーブル種別の候補を「マスク付き逐次検索+キャッシュ方式」及び「マスク付き逐次検索」と判定する。
006の処理では、CPU11は、既存エントリ及び新規エントリのマスクされていない部分(マスク以外)のビットが連続しているか不連続(離散的に存在する)かが判定される。ビットが連続していると判定される場合には、CPU11は、テーブル種別の候補を「ツリー型マスク」,「多段EM」,「マスク付き逐次検索+キャッシュ方式」及び「マスク付き逐次検索」と判定する。
これに対し、ビットが不連続と判定される場合には、CPU11は、テーブル種別の候補を「多段EM」,「マスク付き逐次検索+キャッシュ方式」及び「マスク付き逐次検索」と判定する。
ここで、図10で例示したテーブル種別のそれぞれについて説明する。図11は、テーブル種別「マスク付き逐次検索」の説明図である。「マスク付き逐次検索」のテーブルは、キーエントリをなすビット列の一部を検索対象とし、参照不要な箇所はマスクされ得るテーブル構成を有する。「マスク付き逐次検索」では、エントリ検索において、テーブルの先頭の(上の)エントリから順に参照される。
図11に示す例では、フローテーブル4は、MACアドレス及びIPアドレス(宛先及び送信元の少なくとも一方)の少なくとも一方がマッチ条件に設定されており、さらに、MACアドレス及びIPアドレスの少なくとも一方にマスクを設定することができる。マスクは、MACアドレス及びIPアドレスのそれぞれの一部に設定可能である。
「マスク付き逐次検索」のテーブルは、1つのテーブル内に複数種類のマッチ条件を取り込むことが可能であるが、テーブルの構造が複雑となる。このため、テーブル中の各エントリが逐次参照されて、各エントリに施されたマスクの状況に従った照合処理が行われる。このため、「ツリー型マスク」や「ハッシュ型EM」に比べて検索速度が遅い。
図12は、「ツリー型マスク」のテーブルの説明図である。「ツリー型マスク」のテーブルでは、キーエントリがビット単位に分解され、上位ビットから分岐しながらマッチするエントリが探索される。「ツリー型マスク」のテーブルでは、任意の数の下位ビットをマスクすることもできる(図12では、マスクはアスタリスク(*)で示されている。例えば“01**”)。但し。上位ビットや途中のビットをマスクすることはできない。例えば“**01”や“0**1”などのマスク設定はできない。
キーエントリの一部がマスクされている場合、マスクされていない部分の最下位ビットにおいて、当該キーエントリの検索は終了する。図12に示す例では、キーエントリが4ビットで形成されているため、最大4回ツリーを辿ることで検索が終了する。「ツリー型マスク」は、例えば、プレフィックスによって下位ビットがマスクされるIPアドレスの検索に使用される。
図13は、テーブル種別「ハッシュ型EM」の説明図である。ハッシュ型EMは、完全一致(Exact Match : EM)検索方式の一つである。ハッシュ型EMでは、キーエントリのビット列に対するハッシュ演算を行い得られたハッシュ値を情報格納先のメモリアドレスに設定する。
例えば、32ビットのIPアドレスがキーエントリ(マッチ条件)であると仮定する。この場合、フローエントリの登録時に、登録対象のIPアドレス(例えば192.168.1.1)に
対するハッシュ演算が行われる。ハッシュ演算によって、IPアドレスは、例えば12ビットのハッシュ値(0x126)に縮退する。この値“0x126”のメモリアドレスに、キーエントリ(Key情報)“192.168.1.1”と、アクション情報とが関連づけて登録(記憶)される。
対するハッシュ演算が行われる。ハッシュ演算によって、IPアドレスは、例えば12ビットのハッシュ値(0x126)に縮退する。この値“0x126”のメモリアドレスに、キーエントリ(Key情報)“192.168.1.1”と、アクション情報とが関連づけて登録(記憶)される。
IPアドレス“192.168.1.1”を有するパケットがOF−SW2に到着すると、IPア
ドレスのハッシュ演算によってハッシュ値“0x126”が算出される。そして、ハッシュ値
と合致するメモリアドレスに記憶されたキーエントリに対応するアクション情報が検索される。このように、テーブルの順次検索が不要であるため、逐次検索に比べて検索時間が短い。すなわち、高速な検索が可能である。
ドレスのハッシュ演算によってハッシュ値“0x126”が算出される。そして、ハッシュ値
と合致するメモリアドレスに記憶されたキーエントリに対応するアクション情報が検索される。このように、テーブルの順次検索が不要であるため、逐次検索に比べて検索時間が短い。すなわち、高速な検索が可能である。
図14は、テーブル種別「少エントリ型EM」の説明図である。「少エントリ型EM」は完全一致検索方式(EM)の一つである。「少エントリ型EM」では、テーブルに登録されるエントリ数が所定数(図14の例では最大8)に限定され、検索処理が簡素化される。検索方法としては、先頭のエントリから順次検索を行う逐次検索が適用される。或いは、検索方法として、Key情報をそのままメモリアドレスに設定する方法なども考えられ
る。
る。
図15は、テーブル種別「多段EM」の説明図である。「多段EM」は、上記した「ハッシュ型EM」や「少エントリ型EM」のテーブル(EMテーブル)を直列に並べたテーブル構成を有する。段数は2以上の数とされる。例えば、テーブル構成が2段である場合、最初のテーブルを用いた検索を行い、合致するエントリがヒットすれば、次段以降のテーブル検索がスキップされ、合致するエントリがヒットしなければ、次段のテーブル検索が実行される。
検索方法としては、ハッシュ値を用いた検索や逐次検索が適用される。例えば、複数のフローエントリを1つのテーブルに纏めると「マスク付き逐次検索」となるが、複数のフローエントリを複数のEMテーブルで表現できるケースでの適用が考えられる。
図16は、テーブル種別「マスク付き逐次検索+キャッシュ方式」の説明図である。「マスク付き逐次検索+キャッシュ方式」は、「マスク付き逐次検索」の欠点を補うために
、ハッシュ型EMテーブルをキャッシュとして有するテーブル構成である。
、ハッシュ型EMテーブルをキャッシュとして有するテーブル構成である。
図16に示すように、「マスク付き逐次検索+キャッシュ方式」では、ハッシュ型EMテーブルと、マスク付き逐次検索テーブルとが用意される。パケットが到着すると、パケットからKey情報(図16の例はMACアドレス及びIPアドレス)が抽出され、MAC
アドレス及びIPアドレスからハッシュ値を演算し、ハッシュ値でキャッシュ(EMテーブル)を検索する。このとき、対応するエントリがヒットすれば検索が完了する。これに対し、キャッシュ(EMテーブル)からエントリがヒットしない場合には、マスク付き逐次検索テーブルを用いた逐次検索が実行される。
アドレス及びIPアドレスからハッシュ値を演算し、ハッシュ値でキャッシュ(EMテーブル)を検索する。このとき、対応するエントリがヒットすれば検索が完了する。これに対し、キャッシュ(EMテーブル)からエントリがヒットしない場合には、マスク付き逐次検索テーブルを用いた逐次検索が実行される。
マスク付き逐次検索テーブルを用いた検索によって対応するエントリがヒットした場合には、以下が行われる。すなわち、Key情報(マスク無し)と、ヒットしたエントリ中の
“アクション(Action)”と、Key情報のハッシュ値を含むエントリが、キャッシュ(E
Mテーブル)に登録される。これによって、同一のKey情報を用いた検索については、キ
ャッシュ(EMテーブル)を用いて逐次検索より高速に検索することが可能となる。
“アクション(Action)”と、Key情報のハッシュ値を含むエントリが、キャッシュ(E
Mテーブル)に登録される。これによって、同一のKey情報を用いた検索については、キ
ャッシュ(EMテーブル)を用いて逐次検索より高速に検索することが可能となる。
図17は、複数のテーブル種別についての、エントリ数と予想所要時間との関係を示す
グラフであり、当該グラフに示されたデータが、例えば、図8に示したデータ構造によって、予測時間DB47に記憶されている。予測時間DB47に対する読み出し及び書き込みは、例えば、性能ナレッジ蓄積部46によって行われる。
グラフであり、当該グラフに示されたデータが、例えば、図8に示したデータ構造によって、予測時間DB47に記憶されている。予測時間DB47に対する読み出し及び書き込みは、例えば、性能ナレッジ蓄積部46によって行われる。
テーブル種別は、大略して、マスク無し型とマスク有り型とに分けられる。マスク無し型は、「少エントリ型EM」,「ハッシュ型EM」を含む。なお、「多段EM」は、マスク無し型に含まれる。マスク有り型は、「ツリー型マスク(Patriciaツリー型マスク)」,「逐次検索+キャッシュ方式」,「逐次検索」を含む。
テーブル分析・選択部45は、複数の候補が得られると、性能ナレッジ蓄積部46に、予定所要時間の短いテーブル種別の問い合わせを行う。
<性能ナレッジ蓄積部の処理>
図18は、性能ナレッジ蓄積部46による処理例を示すフローチャートである。図18の処理は、例えば、性能ナレッジ蓄積部46として動作するCPU11によってなされる。図18の処理は、テーブル分析・選択部45から、複数の候補のテーブル種別及びエントリ数を受け取ることによって開始される。
図18は、性能ナレッジ蓄積部46による処理例を示すフローチャートである。図18の処理は、例えば、性能ナレッジ蓄積部46として動作するCPU11によってなされる。図18の処理は、テーブル分析・選択部45から、複数の候補のテーブル種別及びエントリ数を受け取ることによって開始される。
101の処理では、CPU11は、予測時間DB47を参照し、各テーブル種別に対応する予測所要時間(予測処理時間)を読み出す。なお、テーブル種別が多段EMである場合には、多段テーブルを形成する各テーブルの種別及びエントリ数(テーブル分析・選択部45から通知される)に基づき、各テーブルの予測所要時間の合計値を多段EMの予測所要時間とする。
102の処理では、CPU11が、対応する予測所要時間が予測時間DB47に記憶されていないテーブル種別(第1の候補の一例)があるか否かを判定する。対応する予測所要時間が予測時間DB47に記憶されていないテーブル種別がない場合には、処理が103に進み、対応する予測所要時間が予測時間DB47に記憶されていないテーブル種別がある場合には、処理が104に進む。
103の処理では、CPU11は、複数の候補の予測所要時間を対比し、複数の候補のうち、予測所要時間が短いテーブル種別を特定し、テーブル分析・選択部45に通知する。このように、予測所要時間が短い、すなわち、検索時間が短い(性能が高い)テーブル種別が選択される。
このように、テーブル分析・選択部45は、複数の候補のテーブル種別がある場合に、性能の高い(検索時間の短い)テーブル種別を性能ナレッジ蓄積部46に問い合わせる。性能ナレッジ蓄積部46は、テーブル種別及びエントリ数に基づき、性能の高いテーブル種別をテーブル分析・選択部45に回答する。テーブル分析・選択部45は、性能ナレッジ蓄積部46からの回答に応じて、作成するテーブル種別を決定する。
104の処理では、CPU11は、予測所要時間が蓄積されていないテーブル種別(「第1の候補」の一例)を問い合わせに対する回答としてテーブル分析・選択部45に送る。予測所要時間が蓄積されていないテーブル種別が複数ある場合には、複数のテーブル種別から所定ルールに従って選択したテーブル種別の一つを、問い合わせに対する回答としてテーブル分析・選択部45に送る。
このような選択は、所定回数連続して同一のテーブル種別が回答されるようにしても良く、回答毎にテーブル種別が異なるようにしても良い。この場合、CPU11は、時刻挿入部48及び時刻計測部49を用いて検索の所要時間を測定し、測定値に基づく予測所要
時間を予測時間DB47に記憶する。このようにして、予測時間DB47にデータが蓄積されるようにしても良い。すなわち、処理部が第1の候補に対応するテーブルを用いた検索を行った場合に、前記第1の候補に対応するテーブルの種別と、第1の候補に対応するテーブルに記憶されたパケットの識別情報の数と、検索に要した時間とが記憶部に記憶される。
時間を予測時間DB47に記憶する。このようにして、予測時間DB47にデータが蓄積されるようにしても良い。すなわち、処理部が第1の候補に対応するテーブルを用いた検索を行った場合に、前記第1の候補に対応するテーブルの種別と、第1の候補に対応するテーブルに記憶されたパケットの識別情報の数と、検索に要した時間とが記憶部に記憶される。
<テーブルの変更処理>
図19は、テーブルの変更処理の一例を示すフローチャートである。図20は、テーブルの変更の説明図であり、図21は、テーブルの追加の説明図である。図19に示す処理は、テーブル分析・選択部45として動作するCPU11によって行われる。
図19は、テーブルの変更処理の一例を示すフローチャートである。図20は、テーブルの変更の説明図であり、図21は、テーブルの追加の説明図である。図19に示す処理は、テーブル分析・選択部45として動作するCPU11によって行われる。
201の処理では、CPU11は、フローエントリの追加によって、テーブル種別の変更が必要か否かを判定する。テーブル種別の変更が必要か否かは、上述した図10や図17の処理の結果に基づき判定される。
テーブル種別の変更が不要と判定される場合には、CPU11は、既存のフローテーブルに追加対象のエントリを追加する(202)。テーブル種別の変更が必要と判定される場合には、テーブルの置き換えか追加かが判定される(203)。
テーブルの置き換えとは、既存のフローテーブルを、テーブル種別の異なるフローテーブルに置き換えることを意味し、追加とは、新規のテーブルを追加して既存のフローテーブルとの多段構造にすることを意味する。
置き換えの場合、204〜207の処理が実行される。置き換えを、図20を用いて説明する。一例として、現在(変更前:追加要求の受信前)のテーブル構成として、テーブルID(TID)=90のテーブルと、TID=100のテーブルと、TID=110のテーブルとがあると仮定する。TID=90のテーブルには、次にTID=100のテーブルへジャンプすることが指定されている。TID=100のテーブルには、次にTID=110のテーブルへジャンプすることが指定されている。なお、TID=110のテーブルには、次にTID=130(図示せず)のテーブルへジャンプすることが指定されている。
TID=100のテーブルに対するエントリ追加の要求がOFC1からなされ、テーブル分析・選択部45及び性能ナレッジ蓄積部46による処理の結果、TID=100のテーブルの置き換えが決定されたと仮定する。
一例として、図3の左側に示したような、キーエントリ“10.1.1.x”のマスク付き検索テーブルが既存テーブルであり、“10.1.2.3”のような4バイトのキーエントリの追加が要求された場合を仮定する。この場合に、複数の候補から「ハッシュ型EM」が選択され、「ハッシュ型EM」への変更が決定されたと仮定する。なお、この例での「ハッシュ型EM」は、図4の右側に示した257パターンのエントリを有する一方、エントリに対する検索がキー情報のハッシュ値をメモリアドレスとする検索によって行われるテーブルである。この例におけるマスク付き検索テーブルは、第1テーブルの一例であり、ハッシュ型EMのテーブルは、第2テーブルの一例である。テーブル分析・選択部45(CPU11)は、「管理部」の一例として、第2テーブルとしての「ハッシュ型EM」テーブルを生成する。
204において、CPU11は、TID=100のテーブルのエントリ(図3の左側のテーブル参照)を参照して、図4の右側に示したような257パターンのエントリを有するハッシュ型EMのテーブル(例えばTID=101)を生成する。
205において、CPU11は、TID=101のテーブルの次情報(Next)をTID=100のテーブルと同じ値(Next=110)に設定する。206において、前のテーブル(TID=90)の次情報を、TID=101に変更する。そして、TID=100のテーブルを削除する。
なお、図20及び図21の例では、フローテーブルが多段テーブル構成を有する例について説明しているが、フローテーブルが一段構成であっても良い。すなわち、図20において、TID=90やTID=110のテーブルがなく、TID=100のテーブルがTID=101のテーブルに置き換えられる(交換する)場合が該当する。
追加の場合、208及び209の処理が実行される。置き換えを、図21を用いて説明する。図21に示す現在(変更前)のテーブル構成は、図20と同じであるので説明を省略する。追加の一例として、例えば、図3の右側に示すテーブルが既存テーブル(TID=100:第1テーブルの一例)である一方、“10.1.2.3”のような4バイトのキーエントリの追加が要求された場合を仮定する。一例として、「多段EM」が選択され、“10.1.2.3”のEMテーブル(TID=101)を作成し、“10.1.1”のEMテーブルと多段構成とすることが判定されたと仮定する。「多段EM」を形成するEMテーブルが「第2テーブル」の一例である。
この場合、CPU11は、TID=101のテーブルを作成し、TID=101のテーブルの次情報(Next)をTID=100に設定し(208)、前のテーブル(TID「=90)の次情報をTID=101に設定する(209)。これによって、テーブル構成が、図21に示すように、TID=101のテーブルが挿入された状態となる。この例では、第2テーブルとしてのEMテーブルが第1テーブルとしての既存テーブルの前段に配置されているが、後段に配置されても良い。
<動作例>
以下、実施形態における動作例及び処理に関して説明する。実施形態では、フローテーブル4が、パケットをIPアドレスに基づき次ホップへ転送するフォワーディングテーブルとして使用される場合を一例に説明する。
以下、実施形態における動作例及び処理に関して説明する。実施形態では、フローテーブル4が、パケットをIPアドレスに基づき次ホップへ転送するフォワーディングテーブルとして使用される場合を一例に説明する。
OFC1からは、マッチ条件として、プレフィックス付き(指定されたプレフィックス長を有する)IPアドレスを含むフローエントリの追加要求がOF−SW2へ送信される。初期状態ではフローテーブル4にエントリは存在せず、最初に、OF−SW2は、OFC1からの要求に応じて、“10.1.1.x/24”というプリフィックス付きのIPアドレスを
マッチ条件とするフローエントリをフローテーブル4に登録したと仮定する。
マッチ条件とするフローエントリをフローテーブル4に登録したと仮定する。
OFC1からの要求は、テーブル分析・選択部45にて受け取られ、テーブル分析・選択部45は、テーブルの分析を行い、候補のテーブル種別を判定する。テーブル分析・選択部45は、図10に示し候補抽出ロジックに基づいて候補を抽出する。例えば、テーブルにエントリがなく、“10.1.1.x/24”のエントリ追加が要求された場合、001にて「
マスク付き」と判定され、003にて「マスク位置一致」と判定される(既存エントリがないため)。その後、002にて、検索対象領域が4バイト(IPv4アドレス)であることから、「ハッシュ型EM」,「マスク付き逐次検索+キャッシュ方式」及び「マスク付き逐次検索」がテーブル種別の候補として抽出される。
マスク付き」と判定され、003にて「マスク位置一致」と判定される(既存エントリがないため)。その後、002にて、検索対象領域が4バイト(IPv4アドレス)であることから、「ハッシュ型EM」,「マスク付き逐次検索+キャッシュ方式」及び「マスク付き逐次検索」がテーブル種別の候補として抽出される。
各候補のテーブル種別と現在のエントリ数(この場合1)などの情報は、性能ナレッジ蓄積部46に渡される。性能ナレッジ蓄積部46は、図17に示したデータ内容を有する予測時間DB47を管理しており、テーブル種別及びエントリ数に基づき予測所要時間が
短い(例えば候補中で最小となる)テーブル種別を導出する。但し、2位以降のテーブル種別が選択される場合もあり得る。
短い(例えば候補中で最小となる)テーブル種別を導出する。但し、2位以降のテーブル種別が選択される場合もあり得る。
この例では、エントリ数が1であることから、複数の候補の中から「マスク付き逐次検索」が導出され、テーブル分析・選択部45に通知される。テーブル分析・選択部45は、テーブル種別「マスク付き逐次検索」のフローテーブル4を生成し、マッチ条件“10.1.1.x”のエントリを登録する。
その後、下位1バイトがマスクされるキー情報がマッチ条件とされるエントリがフローテーブル4に登録される場合を仮定する。すると、図17における「逐次検索」のグラフからわかる様に、「逐次検索+キャッシュ」及び「ハッシュ型EM」の予測所要時間が「逐次検索」の予測所要時間より短くなる。さらには、「ハッシュ型EM」の予測所要時間が「逐次検索+キャッシュ」の予測所要時間を上回る。この場合、テーブル分析・選択部45によって、図19に示したようなテーブル変更処理が行われる。処理の詳細は既に説明したので再度の説明は省略する。その後、“10.1.2.3”のエントリの追加要求がOFC1から受信されると、上記した処理によって、テーブルの変更(交換)乃至追加(新規テーブルを既存テーブルの前段又は後段に配置)が行われる。
<実施形態の効果>
実施形態によれば、既存のエントリのキー情報(パケット識別情報)と、追加が要求されたエントリのキー情報(パケット識別情報)とに基づいて、種別の異なる複数のテーブルの候補が取得される。複数の候補から、エントリ数に対応する予測所要時間(検索時間)が短いテーブルが選択され、選択されたテーブルが生成され、検索に使用される。これによって、検索時間の低下を抑止でき、OF−SW2におけるスループットの低下を抑止又は回避することができる。以上説明した実施形態の構成は、適宜組み合わせることができる。
実施形態によれば、既存のエントリのキー情報(パケット識別情報)と、追加が要求されたエントリのキー情報(パケット識別情報)とに基づいて、種別の異なる複数のテーブルの候補が取得される。複数の候補から、エントリ数に対応する予測所要時間(検索時間)が短いテーブルが選択され、選択されたテーブルが生成され、検索に使用される。これによって、検索時間の低下を抑止でき、OF−SW2におけるスループットの低下を抑止又は回避することができる。以上説明した実施形態の構成は、適宜組み合わせることができる。
1・・・コントローラ(OFC)
2・・・スイッチ(OF−SW)
11・・・CPU
45・・・テーブル分析・選択部
46・・・性能ナレッジ蓄積部
47・・・予測時間データベース
2・・・スイッチ(OF−SW)
11・・・CPU
45・・・テーブル分析・選択部
46・・・性能ナレッジ蓄積部
47・・・予測時間データベース
Claims (10)
- パケット識別情報と、前記パケット識別情報に対応する処理を示す情報とを含むテーブルと、
受信されたパケットのパケット識別情報に対応する処理を前記テーブルから検索する処理部と、
新規のパケットの識別情報を含む新規エントリの追加要求が受信された場合に、前記テーブルに記憶されている既存のパケット識別情報と、前記新規のパケット識別情報とに基づいて、種別が異なり且つ前記新規のパケットの識別情報及び前記既存のパケットの識別情報に含まれる全てのパケットを検索可能な複数のテーブルの候補を取得する取得部と、
各候補のテーブルに記憶されるパケット識別情報の数に基づいて、前記複数のテーブル候補の中から前記処理部による検索に用いるテーブルを選択する選択部と
を含むパケット処理装置。 - 前記選択部は、検索時間の短い前記複数のテーブルの候補の一つを選択する
請求項1に記載のパケット処理装置。 - 前記処理部は、前記追加要求の受信前に前記テーブルとして第1テーブルを使用し、
前記選択部によって選択された候補のテーブルの種別と前記第1テーブルの種別とが異なる場合に、前記処理部の検索に使用される第2テーブルとして前記選択された候補のテーブルを生成する管理部
をさらに含む請求項1又は2に記載のパケット処理装置。 - 前記管理部は、前記選択された候補のテーブルの種別と前記第1テーブルの種別とが同じである場合に、前記第1テーブルに前記新規エントリを追加する
請求項3に記載のパケット処理装置。 - 前記管理部は、前記第1テーブルを前記第2テーブルに交換する
請求項3又は4に記載のパケット処理装置。 - 前記管理部は、前記第2テーブルを前記第1テーブルの前段又は後段に配置する
請求項3又は4に記載のパケット処理装置。 - テーブルの種別及びエントリ数と検索時間とが対応づけて記憶された記憶部をさらに含み、
前記選択部は、前記複数のテーブルの候補の種別及びエントリ数に対応する検索時間を前記記憶部から読み出して対比し、前記複数のテーブルの候補の一つを選択する
請求項1から6のいずれか1項に記載のパケット処理装置。 - 前記処理部がテーブルを用いて受信されたパケットに対する検索を行った場合に、前記検索に用いられたテーブルの種別及び前記検索に用いられたテーブルに記憶されたパケットの識別情報の数と、前記検索に要した検索時間とを対応づけて前記記憶装置に記憶する蓄積部をさらに含む
請求項7に記載のパケット処理装置。 - 前記選択部は、前記複数の候補が、テーブルの種別及びパケットの識別情報の数に対応する検索時間が前記記憶装置に記憶されていない第1の候補を含む場合に、当該第1の候補を選択し、
前記管理部が、前記第1の候補に対応するテーブルを生成し、
前記蓄積部が、前記処理部が前記第1の候補に対応するテーブルを用いた検索を行った
場合に、前記第1の候補に対応するテーブルの種別と、前記第1の候補に対応するテーブルに記憶されたパケットの識別情報の数と、検索に要した時間とを前記記憶部に記憶する請求項8に記載のパケット処理装置。 - パケット処理装置が、
パケット識別情報と、前記パケット識別情報に対応する処理を示す情報とを含むテーブルから、受信されたパケットのパケット識別情報に対応する処理を前記テーブルから検索し、
新規のパケットの識別情報を含む新規エントリの追加要求が受信された場合に、前記テーブルに記憶されている既存のパケット識別情報と、前記新規のパケット識別情報とに基づいて、種別が異なり且つ前記新規のパケットの識別情報及び前記既存のパケットの識別情報に含まれる全てのパケットを検索可能な複数のテーブルの候補を取得し、
各候補のテーブルに記憶されるパケット識別情報の数に基づいて、前記複数のテーブルの候補の中から前記処理部による検索に用いるテーブルを選択する
ことを含むパケット処理装置のテーブル選択方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016046705A JP2017163377A (ja) | 2016-03-10 | 2016-03-10 | パケット処理装置,及びそのテーブル選択方法 |
US15/449,381 US20170264545A1 (en) | 2016-03-10 | 2017-03-03 | Packet processing apparatus and table selection method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016046705A JP2017163377A (ja) | 2016-03-10 | 2016-03-10 | パケット処理装置,及びそのテーブル選択方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017163377A true JP2017163377A (ja) | 2017-09-14 |
Family
ID=59787299
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016046705A Pending JP2017163377A (ja) | 2016-03-10 | 2016-03-10 | パケット処理装置,及びそのテーブル選択方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20170264545A1 (ja) |
JP (1) | JP2017163377A (ja) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8923296B2 (en) * | 2012-02-23 | 2014-12-30 | Big Switch Networks, Inc. | System and methods for managing network packet forwarding with a controller |
US9692690B2 (en) * | 2015-08-03 | 2017-06-27 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and system for path monitoring in a software-defined networking (SDN) system |
-
2016
- 2016-03-10 JP JP2016046705A patent/JP2017163377A/ja active Pending
-
2017
- 2017-03-03 US US15/449,381 patent/US20170264545A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20170264545A1 (en) | 2017-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105049359B (zh) | 用于分布式路由表查找的分布式路由器的入口计算节点和机器可读介质 | |
CN104769884B (zh) | 利用流数据的转发表优化 | |
US20120314605A1 (en) | Communication system, path control apparatus, packet forwarding apparatus, and path control method | |
US10313154B2 (en) | Packet forwarding | |
CN105122745A (zh) | 用于网络设备的高效最长前缀匹配技术 | |
US9159420B1 (en) | Method and apparatus for content addressable memory parallel lookup | |
CN108781185A (zh) | 提供用于网络设备的可编程包分类框架的***和方法 | |
US9288159B2 (en) | Systems and methods for deep packet inspection with a virtual machine | |
TW201501556A (zh) | 用於唯一枚舉解析樹中的路徑的裝置和方法 | |
CN111953552B (zh) | 数据流的分类方法和报文转发设备 | |
CN105247831A (zh) | 流表修改方法、流表修改装置和开放流网络*** | |
US20150131665A1 (en) | Forwarding Database | |
US20170230284A1 (en) | Packet transmission apparatus, controller, and packet transmission control method | |
EP3895386A1 (en) | A system and a method for monitoring traffic flows in a communications network | |
CN106416150B (zh) | 一种路由查询方法和网络设备 | |
US20230052252A1 (en) | Network device that utilizes tcam configured to output multiple match indices | |
JP4646823B2 (ja) | ルータ装置、ルータ装置におけるルート決定方法 | |
JP2017163377A (ja) | パケット処理装置,及びそのテーブル選択方法 | |
JP3949696B2 (ja) | プロトコル高速化装置 | |
CN107409088B (zh) | 一种数据包转发方法和网络设备 | |
US20210243282A1 (en) | Packet filtering using binary search trees | |
US20180091423A1 (en) | Switch and communication method | |
JP6143367B2 (ja) | パケット転送経路設定回路、パケット転送スイッチ、パケット転送経路設定方法及びパケット転送方法 | |
JP7359299B2 (ja) | パケット識別装置、パケット識別方法およびパケット識別プログラム | |
WO2022049751A1 (ja) | コネクション数計測装置、方法、およびプログラム |