【文献】
安田 豊,OpenFlowコントローラ開発支援ツールの提案 〜ロジックおよびフロー識別ラベルの導入〜,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会 The Institute of Electronics,Information and Communication Engineers,2012年,Vol.111 No.484,pp.155-160
(58)【調査した分野】(Int.Cl.,DB名)
前記指定手段により指定される前記照合対象とする部分は、前記テーブルにおける特定の領域と対応付られており、前記処理決定手段は、当該照合対象とする部分に対応する前記テーブルの領域を特定し、当該テーブルの領域と前記指定手段により指定された部分のデータとの照合を行う
ことを特徴とする請求項1に記載のパケット転送装置。
前記ビットマスクは、前記テーブルにおける特定の領域と対応付られており、前記処理決定手段は、前記ビットマスクに対応する前記テーブルの領域を特定し、当該テーブルの領域と前記指定手段により指定された部分のデータとの照合を行う
ことを特徴とする請求項1に記載のパケット転送装置。
前記テーブル格納手段は複数のテーブルを有し、前記指定手段により指定される前記照合対象とする部分は、当該複数のテーブルのうちの特定のテーブルと対応付られており、前記処理決定手段は、前記照合対象とする部分に対応するテーブルを特定し、当該特定されたテーブルと前記指定手段により指定された部分のデータとの照合を行う
ことを特徴とする請求項1に記載のパケット転送装置。
前記テーブル格納手段は複数のテーブルを有し、前記ビットマスクは、当該複数のテーブルのうちの特定のテーブルと対応付られており、前記処理決定手段は、前記ビットマスクに対応するテーブルを特定し、当該特定されたテーブルと前記指定手段により指定された部分のデータとの照合を行う
ことを特徴とする請求項1に記載のパケット転送装置。
前記処理決定手段により決定された処理内容が、テーブルとの照合処理を示す場合において、前記パケットに対し、前記指定手段による照合対象の部分の指定、及び前記処理決定手段による処理内容の決定を再度実行する
ことを特徴とする請求項1ないし5のうちいずれか1項に記載のパケット転送装置。
前記指定手段は、複数のビットマスクを用いることにより、前記テーブルとの照合対象とする複数の部分を指定し、前記処理決定手段は、当該照合対象とする複数の部分に対応するテーブルの複数の領域を特定し、当該テーブルの複数の領域と前記指定手段により指定された複数の部分のデータとの照合を行う
ことを特徴とする請求項1ないし7のうちいずれか1項に記載のパケット転送装置。
【発明を実施するための形態】
【0011】
以下、図面を参照して本発明の実施の形態を説明する。以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。なお、本明細書における「パケット」の用語は、特定のレイヤのパケットに限定されず、「フレーム」、「セル」等も含む広い意味で使用している。
【0012】
(システム全体構成例)
図1に、本発明の実施の形態に係る通信システムの構成例を示す。
図1に示すように、本実施の形態に係る通信システムは、複数のパケット転送装置100がネットワーク接続された構成を備える。各パケット転送装置100は、ネットワーク管理装置200と通信可能であり、ネットワーク管理装置200から各パケット転送装置100に対して、後述するビットマスクやテーブルの設定が可能である。
【0013】
本実施の形態において、パケット転送装置100により構成されるネットワークの種類は特定のものに限定されないが、例えば、パケット転送装置100により、ユーザ網を接続した中継網を構成することができる。また、後述するように、パケット転送装置100を、中継網(コア網)とユーザ網(アクセス網)とを接続するエッジ装置として使用することもできる。
【0014】
(パケット転送装置100の構成例)
図2に、パケット転送装置100の機能構成図を示す。
図2に示すように、パケット転送装置100は、パケット転送処理部110、テーブル格納部120、制御部130、各入出力ポートを備える。
【0015】
パケット転送処理部110は、入力ポートから入力されたパケットにおける所定のビット領域のデータをキーにして、テーブルを検索することによりパケットに対する処理の内容(アクション)を決定し、当該処理を行う。テーブル格納部120は、テーブルを格納するメモリ等の記憶手段である。制御部130は、ネットワーク管理装置200からの設定指示を受けて、パケット転送装置100におけるビットマスクやテーブルの設定等を行う。
【0016】
パケット転送装置100におけるパケット転送処理部110及びテーブル格納部120は、それそれハードウェア回路で実現することができる。また、パケット転送処理部110及びテーブル格納部120を一体としてハードウェア回路で実現してもよい。
【0017】
また、パケット転送装置100がコンピュータの構成を含み、パケット転送処理部110及びテーブル格納部120を当該コンピュータにプログラムを実行させることで実現してもよい。
【0018】
テーブル格納部120をハードウェア回路(集積回路)で実現する場合において、テーブル毎に物理的に異なる回路(メモリ)を設けてもよいし、1つのメモリに1つのテーブルを備え、当該1つのテーブルを分割して使用してもよいし、1つのメモリ内に複数のテーブルを備えることとしてもよいし、これらを組み合わせた形態としてもよい。
【0019】
<パケット転送処理部110の構成>
図3に、パケット転送装置100におけるパケット転送処理部110の機能構成図を示す。
図3に示すように、パケット転送処理部110は、パケット分配部111、ビット選択部112、テーブル検索部113、アクション実行部114を有する。各部の機能は以下のとおりである。
【0020】
なお、各部の処理に関し、パケット転送処理部110はバッファメモリにパケットを格納し、適宜そのパケットを参照することで各部の処理を行うこととしてもよいし、各部がパケットを保持し、順次次の段の部にパケットを転送して処理を行うこととしてもよい。以下の説明では、前者を想定している。
【0021】
パケット分配部111は、入力されたパケットに対してどのビットマスクを適用するかを決定し、ビットマスク(ビットマスク番号等)をビット選択部112に通知する。
【0022】
ビットマスクとは、パケットの中のどのビット部分をテーブルとのマッチング(照合)の対象とするかを指定するマスクである。説明のための一例として、パケットの長さ(テーブルとのマッチング対象となり得る部分の長さ)が10ビットであるとした場合に、ビットマスク「0001111000」は、パケットの4番目〜7番目のビットをテーブルとのマッチングの対象として指定するものである。本実施の形態では、このようなビットマスクが複数種類設定され、各ビットマスクは番号等の識別情報で識別可能になっている。ビットマスクの設定、削除、追加等は、制御部130により実行可能である。
【0023】
本実施の形態では、ビットマスクと、検索の対象とするテーブルとが対応付られており、パケット分配部111により、あるパケットに対するビットマスクが決定されたことは、検索の対象とするテーブルも決定されたことも意味する。例えば、入力ポート(例:ユーザに対応)とビットマスクとを対応付け、パケット分配部111は、パケット転送装置100に入力されたパケットについて、パケットが入力された入力ポートに対応するビットマスクを使用すると決定する。入力パケットに対するビットマスクの決定方法はこれに限られるわけではなく、他の方法を使用してもよい。例えば、入力パケットのLAG(Link Aggregation)、トンネルID等をビットマスクと対応付けることで、ビットマスクを決定してもよい。
【0024】
また、本実施の形態では、テーブルとのマッチング処理の結果、アクションとして次のテーブルによる処理が指定される場合があり、その場合、パケット分配部111は、前段のテーブル処理を経たパケットに対するビットマスクの指定を受ける。このような場合には、当該指定されたビットマスクの番号をビット選択部112に通知する。
【0025】
ビット選択部112は、各ビットマスクを保持しており、パケット分配部111から指定されたビットマスクと、パケットとの演算(AND等)を行うことで、テーブルとのマッチングの対象とするビットを抽出する。ビット選択部112は、使用したビットマスク番号と抽出したビットのデータ(検索データと呼ぶ)をテーブル検索部113に通知する。
【0026】
本実施の形態では、ビットマスクと、当該ビットマスクで抽出された検索データとマッチングを行う(検索を行う)対象となるテーブル(又はテーブル領域)とが対応付られており、テーブル検索部113は当該対応を示す情報を保持している。ここでは、各テーブルはテーブル番号で識別されるものとする。つまり、パケットにおけるテーブルとの照合対象部分と、対象のテーブル(又はテーブル領域)とが対応付られている。
【0027】
テーブル検索部113は、検索データと、指定されたビットマスクに対応するテーブルとのマッチング処理を行う。つまり、検索データをキーとして、当該テーブルのデータをサーチし、検索データと一致するデータを持つエントリがあるかどうかを判定する。例えば、テーブル検索部113は、テーブル格納部120(メモリ)において、検索データと一致するデータを持つエントリに対応するアドレスを取得する。当該アドレスは、例えば、アクションが格納されたメモリ領域のアドレス(ポインタ)である。また、テーブル検索部113は、指定されたビットマスクに対応するテーブルにおける、当該ビットマスクで指定された領域のみをマッチング対象とすることも可能である。例えば、テーブルが、10ビットの行を検索対象のエントリとして持つデータ構造であるとした場合において、ビットマスクが「0001111000」であるとした場合、10ビットの各行のうち、4番目〜7番目の部分をマッチング処理の対象とすることができる。
【0028】
アクション実行部114は、テーブル検索部113により、検索データと一致すると判断されたテーブのエントリに対応するアクションを実行する。具体的には、例えば、検索データと一致するデータのエントリに対応付けられたアドレスに格納されたアクションを実行する。
【0029】
各アクションは、例えば、パケットを所定のポートから出力すること、パケット内の所定のヘッダの内容を書き換えること、次のテーブルの処理に進むこと、等のそれぞれ、もしくは複数の組み合わせである。
【0030】
なお、上記の例では、ビットマスクを用いてパケットから検索データを抽出しているが、パケットから検索データを抽出する方法はこれに限られるわけではない。例えば、パケット選択部112は、「Xビット目〜Yビット目」のように、ビット位置を直接指定したデータをビットマスクに代えて使用し、当該データの指定に従って検索データを抽出してもよい。
【0031】
また、上記の例では、ビット選択部112が検索データの抽出を行っているが、ビット選択部112がパケットとビットマスクのデータとをテーブル検索部113に送り、テーブル検索部113がパケットにビットマスクを適用することで検索データを抽出してもよい。
【0032】
<テーブルの例>
図4に、テーブル格納部120に格納されるテーブルの一例を示す。
図4に示すように、このテーブルは、検索データとのマッチング処理を行う対象となるデータと、一致があったときに実行するアクションとを含む。検索データとのマッチング処理を行う対象となるデータは、例えば、パケットヘッダに記述される各種アドレスやパラメータ等である。また、当該データは、パケットのペイロードの内容であってもよい。このように、本実施の形態では、テーブルの内容を自由に設定できる。アクションは、命令そのものであってもよいし、命令へのポインタであってもよい。
【0033】
また、
図4には、各エントリ(行)のアドレスが示されているが、このアドレスはメモリアドレスであって、テーブルを構成しないものとしてもよいし、このアドレスもテーブルを構成するデータであってもよい。いずれにしろ、当該アドレスを指定することで、テーブルのエントリを指定できる。
【0034】
本実施の形態では、
図4に示すようなテーブルを1つ備え、当該テーブルを分割して使用することとしてもよいし、
図4に示すようなテーブルを複数備えることとしてもよいし、これらの組み合わせを用いてもよい。
【0035】
図5を参照して、1つのテーブルを分割して使用する場合の例を説明する。この例では、テーブルのエントリのアドレスに対するテーブルマスクを用いている。例えば、テーブルマスク1が、
図5(a)に示すように、A〜Bのエントリのアドレスを指定するマスクであるとした場合、テーブル検索部113は、当該テーブルマスク1をテーブルに対して適用することで、A〜Bのエントリをテーブル1として使用することができる。
【0036】
また、例えば、テーブルマスク2が、
図5(b)に示すように、C〜Dのエントリのアドレスを指定するマスクであるとした場合、テーブル検索部113は、当該テーブルマスク2をテーブルに対して適用することで、C〜Dのエントリをテーブル2として使用することができる。
【0037】
図6、
図7を参照して、パケットに対して適用したビットマスクにより、テーブルの中の利用する領域(マッチング処理の対象とする領域)を限定する例を説明する。これらの処理はテーブル検索部113により行われる。
【0038】
図6の例では、あるパケットに対してビットマスク1が指定されたとする。テーブル検索部113は、ビットマスク1に対応するテーブル1を指定し、当該テーブル1の中で、ビットマスク1により指定されるA〜Bの領域(各行の中の領域)を検索の対象とする。このビットマスクでの処理は、例えば、テーブルのエントリのデータに対してマスク処理(AND)を行うことで、対象部分を抽出し、それを検索の対象として利用する。なお、何ビット目から何ビット目までを検索の対象するとかを直接に指定することで、対象部分を抽出してもよい。
【0039】
図7の例では、あるパケットに対してビットマスク2−1とビットマスク2−2が指定される。テーブル検索部113は、ビットマスク2−1に対応するテーブル1を特定するとともに、テーブル1におけるビットマスク2−1での抽出領域であるA〜Bを検索対象領域とする。更に、テーブル検索部113は、ビットマスク2−2に対応するテーブル2を特定するとともに、テーブル2におけるビットマスク2−2での抽出領域であるC〜Dを検索対象領域とする。結果として、
図7の下に示す領域が検索対象領域となる。この場合のアクションについては、A〜Bの領域とC〜Dの領域とのAND条件、OR条件等、実際の内容に応じて、適宜アクションとして定義しておけばよい。
【0040】
一例として、ビットマスク2−1(テーブル1)が、VLANIDの領域に該当し、ビットマスク2−2(テーブル2)が、宛先IPアドレスの領域に該当する場合において、例えば、パケットが、所定のVLANIDを持ち、かつ、所定の宛先IPアドレスを持つ場合に、当該パケットのVLANIDを所定のMPLSタグに置き換えて、所定のポートから出力するといった動作を実現できる。
【0041】
前述したように、本実施の形態に係るパケット転送装置100は、主にハードウェア回路で実現することもできるし、パケット転送装置100が有するコンピュータにプログラムを実行させることで実現することもできる。プログラムで実現する場合、パケット転送装置100における各機能部は、コンピュータに内蔵されるCPUやメモリ、ハードディスクなどのハードウェア資源を用いて、各部で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体(可搬メモリ等)に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メールなど、ネットワークを通して提供することも可能である。
【0042】
(システムの動作例)
次に、
図8のフロー図を参照して、パケット転送処理部110におけるパケットの処理の流れを説明する。
【0043】
まず、パケット分配部111は、入力されたバケットに対応するビットマスクを決定し、決定したビットマスクをビット選択部112に通知する(ステップ101)。ビット選択部112は、パケットにビットマスクを適用することで、テーブルとのマッチング対象とする検索データを抽出する(ステップ102)。
【0044】
ステップ103では、テーブル検索部113がステップ102で抽出した検索データを用いて、ビットマスクに対応するテーブルに対してマッチング処理(照合処理)を行い、検索データと一致するデータを有するエントリを取得し、アクション実行部114が、当該エントリに対応するアクションを実行する。
【0045】
図8では、ステップ103の内容を分かり易くするために、テーブルのイメージを記載している。ステップ103において、例えば、アクションを実行した結果、パケットが所定のポートから出力される。また、例えば、アクションを実行した結果、パケットに対して次のテーブルに基づく処理を行うよう指定される。この場合、例えば、アクションにおいて次のテーブルに対応するビットマスク番号が指定され、当該ビットマスク番号がパケット分配部111に返されて、次のステップ101では当該ビットマスク番号のビットマスクを使用すると決定される。
【0046】
このように、本実施の形態に係るパケット転送装置100では、制御部130を介して、テーブルにおけるデータやアクションを任意に設定することができ、上記のような多段のテーブル構成も容易に実現することが可能である。特に、前述したように、1つのテーブルを分割する手法を用いれば、比較的少ないメモリ量で、多段のテーブル構成を実現することが可能である。
【0047】
次に、
図9〜
図11を参照して、本実施の形態に係るパケット転送装置100の動作のより具体的な例を説明する。
【0048】
本例では、
図9に示すように、パケット転送装置100(A、B)が、MPLSの中継網400と、VLANのユーザ網300、500との間を接続するエッジ装置として使用されている。ユーザ網300にはユーザ装置301が接続され、ユーザ網500にはユーザ装置501が接続されている。以降、
図9に示すように、ユーザ装置301からユーザ装置501への方向のパケットの流れに着目して説明する。
【0049】
パケット転送装置100Aが、ユーザ装置301から送信されたパケットを受信し、当該パケットを中継網400へ転送する場合の動作例について
図10を参照して説明する。
【0050】
パケット転送装置100Aは、ユーザ装置301から送信されたパケットをユーザ網300を介して受信する。そして、例えば、当該パケットを受信したポートに対応するビットマスクを適用することで、検索データとしてVLANIDを抽出し、当該検索データに該当するエントリを探すために、当該ビットマスクに対応するテーブルであるVLANテーブルを検索する(ステップ201)。
【0051】
本例では、アクションとして、QoS処理が指定されており、パケット転送装置100Aは指定されたQoS処理を行う(ステップ202)。QoS処理としては、例えば、パケットに優先度を示す情報を付加する、あるいはパケットから当該情報を削除することや、優先度に応じたパケット転送処理(例:帯域制御)等がある。
【0052】
本例では、上記のアクションとして次のテーブル処理を行うことが含まれており、そこでは、指定されたビットマスクに従って、VLAN+宛先IPアドレスのテーブル検索を行う(ステップ203)。そして、アクションとして、パケット内のVLANヘッダをMPLSラベルに付け替える処理を行う(ステップ204)。
【0053】
次に、パケット転送装置100Bが、中継網400からパケットを受信し、当該パケットをユーザ網500へ転送する場合の動作例について
図11を参照して説明する。
【0054】
パケット転送装置100Bは、中継網400からパケットを受信する。そして、例えば、当該パケットを受信したポートに対応するビットマスクを適用することで、検索データとしてMPLSラベルを抽出し、当該検索データに該当するエントリを探すために、当該ビットマスクに対応するテーブルであるMPLSラベルテーブルを検索する(ステップ301)。
【0055】
本例では、アクションとして、MPLSラベルをVLANヘッダに付け替えることが指定されており、パケット転送装置100Bは指定された処理を行う(ステップ302)。
【0056】
また、本例では、上記のアクションとして次のテーブル処理を行うことが含まれており、そこでは、指定されたビットマスクに従って、VLANテーブル検索を行う(ステップ303)。そして、アクションとして、QoS処理を行う(ステップ304)。
【0057】
(実施の形態のまとめ、効果等)
以上、説明したように、本実施の形態によれば、ネットワークにおいてパケットの転送を行うパケット転送装置であって、データと処理内容とを対応付けたテーブルを格納するテーブル格納手段と、入力されたパケットにおいて前記テーブルとの照合対象とする部分を指定する指定手段(例:パケット分配部111、ビット選択部112)と、前記指定手段により指定された部分のデータを前記テーブル内のデータと照合し、照合結果に基づいて、前記パケットに対する処理内容を決定する処理決定手段とを備えるパケット転送装置が提供される。
【0058】
このパケット転送装置では、テーブルの内容及び指定手段による指定内容(どの部分を指定するか)を適宜設定することで、パケットとテーブルと照合の条件を柔軟に設定し、柔軟に照合処理を行うことが可能である。
【0059】
前記指定手段は、例えば、前記パケットに対応するビットマスクを特定し、当該ビットマスクにより前記パケットにおける前記照合対象とする部分を指定する。
【0060】
また、前記指定手段により指定される前記照合対象とする部分は、前記テーブルにおける特定の領域と対応付られており、前記処理決定手段は、当該照合対象とする部分に対応する前記テーブルの領域を特定し、当該テーブルの領域と前記指定手段により指定された部分のデータとの照合を行うこととしてもよい。
【0061】
また、前記ビットマスクは、前記テーブルにおける特定の領域と対応付られており、前記処理決定手段は、前記ビットマスクに対応する前記テーブルの領域を特定し、当該テーブルの領域と前記指定手段により指定された部分のデータとの照合を行うこととしてもよい。このように、テーブルの領域を特定して使用する構成とすることで、テーブルのメモリ量を削減できる。
【0062】
前記テーブル格納手段は複数のテーブルを有し、前記指定手段により指定される前記照合対象とする部分は、当該複数のテーブルのうちの特定のテーブルと対応付られており、前記処理決定手段は、前記照合対象とする部分に対応するテーブルを特定し、当該特定されたテーブルと前記指定手段により指定された部分のデータとの照合を行うこととしてもよい。
【0063】
また、前記テーブル格納手段は複数のテーブルを有し、前記ビットマスクは、当該複数のテーブルのうちの特定のテーブルと対応付られており、前記処理決定手段は、前記ビットマスクに対応するテーブルを特定し、当該特定されたテーブルと前記指定手段により指定された部分のデータとの照合を行うこととしてもよい。
【0064】
また、前記処理決定手段により決定された処理内容が、テーブルとの照合処理を示す場合において、前記パケットに対し、前記指定手段による照合対象の部分の指定、及び前記処理決定手段による処理内容の決定を再度実行することとしてもよい。このような構成により、多段のテーブルを容易に実現することができる。
【0065】
更に、前記指定手段は、複数のビットマスクを用いることにより、前記テーブルとの照合対象とする複数の部分を指定し、前記処理決定手段は、当該照合対象とする複数の部分に対応するテーブルの複数の領域を特定し、当該テーブルの複数の領域と前記指定手段により指定された複数の部分のデータとの照合を行うようにしてもよい。
【0066】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【課題】パケットとテーブルとの照合を行うことによりパケットに対する処理を実行するパケット転送装置において、パケットとテーブルと照合の条件を柔軟に設定し、柔軟に照合処理を行う。
【解決手段】ネットワークにおいてパケットの転送を行うパケット転送装置において、データと処理内容とを対応付けたテーブルを格納するテーブル格納手段と、入力されたパケットにおいて前記テーブルとの照合対象とする部分を指定する指定手段と、前記指定手段により指定された部分のデータを前記テーブル内のデータと照合し、照合結果に基づいて、前記パケットに対する処理内容を決定する処理決定手段とを備える。