(57)【要約】【課題】本発明は、計算に用いるメモリ量を減らせるとともに、高速にパケット転送経路の検索及びパケットの転送経路ごとの分類が可能なデータを用いて、パケット経路の設定を高速に行うことを目的とする。【解決手段】本発明は、パケットの経路を特定するためのヘッダ空間のビット列から二分岐決定木を構築し、二分岐決定木から多分岐決定木を構築し、受信したパケットの経路を、多分岐決定木を検索して辿りついた終端ノードに割り当てられている経路に設定する。【選択図】図１３
2016012781.tif 000002
【特許請求の範囲】
【請求項１】
パケットの経路を特定するためのヘッダ空間に記載されたビット列を二分岐決定木に変換し、前記二分岐決定木の各終端ノードに割り当てられている前記パケットの経路毎に、前記経路が共通する二分岐決定木の終端ノードに到達しうる二分岐決定木を生成する二分岐決定木生成部と、
前記経路の異なる各二分岐決定木のうちのビット列の共通する非終端ノードを共有させ、根ノードから各終端ノードへの多分岐決定木を構築する多分岐決定木構築部と、
受信したパケットの経路を、当該パケットの前記ヘッダ空間に記載されたビット列に従って、前記多分岐決定木構築部で構築した前記多分岐決定木を検索して辿りついた終端ノードに割り当てられている経路に設定するパケット転送経路設定部と、
を備えるパケット転送経路設定回路。
【請求項２】
前記多分岐決定木構築部で構築した前記多分岐決定木の根ノードから終端ノードの経路方向に隣接する複数の非終端ノードを１つの非終端ノードに集約するビット集約部を、
さらに備え、
前記パケット転送経路設定部は、受信したパケットの経路を、当該パケットの前記ヘッダ空間に記載されたビット列に従って、前記ビット集約部で非終端ノードを集約した前記多分岐決定木を検索して辿りついた終端ノードに割り当てられている経路に設定する、
請求項１に記載のパケット転送経路設定回路。
【請求項３】
パケットを受信するパケット受信部と、
前記パケット受信部の受信したパケットのヘッダ空間にビット列に従って当該パケットの経路を設定する請求項１又は２に記載のパケット転送経路設定回路と、
前記パケット転送経路設定回路の設定した経路に基づいて、当該パケットを転送するパケット転送部と、
を備えるパケット転送スイッチ。
【請求項４】
パケットの経路を特定するためのヘッダ空間に記載されたビット列を二分岐決定木に変換し、前記二分岐決定木の各終端ノードに割り当てられている前記パケットの経路毎に、前記経路が共通する二分岐決定木の終端ノードに到達しうる二分岐決定木を生成し、前記経路の異なる各二分岐決定木のうちのビット列の共通する非終端ノードを共有させ、根ノードから各終端ノードへの多分岐決定木を構築する多分岐決定木構築手順と、
受信したパケットの経路を、当該パケットの前記ヘッダ空間に記載されたビット列に従って、多分岐決定木構築手順で構築した前記多分岐決定木を検索して辿りついた終端ノードに割り当てられている経路に設定するパケット転送経路設定手順と、
を順に有するパケット転送経路設定方法。
【請求項５】
前記多分岐決定木構築手順において、前記多分岐決定木の根ノードから終端ノードの経路方向に隣接する複数の非終端ノードを１つの非終端ノードに集約し、
前記パケット転送経路設定手順において、受信したパケットの経路を、当該パケットの前記ヘッダ空間に記載されたビット列に従って、前記多分岐決定木構築手順で非終端ノードを集約した前記多分岐決定木を検索して辿りついた終端ノードに割り当てられている経路に設定する、
請求項４に記載のパケット転送経路設定方法。
【請求項６】
請求項４又は５に記載のパケット転送経路設定方法を用いて、受信したパケットのヘッダ空間にビット列に従って当該パケットの経路を設定するパケット転送経路設定手順と、
前記パケット転送経路設定手順で設定した経路に基づいて、当該パケットを転送するパケット転送手順と、
を順に有するパケット転送方法。
【請求項７】
コンピュータを、請求項１に記載の二分岐決定木生成部、多分岐決定木構築部及びパケット転送経路設定部又は請求項２に記載の二分岐決定木生成部、多分岐決定木構築部、パケット転送経路設定部及びビット集約部をとして機能させるためのパケット転送経路設定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット転送経路設定回路、パケット転送スイッチ、パケット転送経路設定方法及びパケット転送方法に関する。
【０００２】
ＴＣＰ／ＩＰやＥｔｈｅｒｎｅｔ（登録商標）のような論理ネットワークを対象とする。スイッチなどの通信機器はパケットを受け取ると、その装置の設定（転送表など）とパケットヘッダを照合して、パケットに対して行うアクションを決定する。アクションには、パケットの転送や廃棄、書き換え、ｌｏｇｇｉｎｇなどがある。このように、アクション種などによってパケットを分類する手法を「ｐａｃｋｅｔ  ｃｌａｓｓｉｆｉｃａｔｉｏｎ」と呼ぶ。以下では、ｐａｃｋｅｔ  ｃｌａｓｓｉｆｉｃａｔｉｏｎをパケット分類手法と記載する。
【０００３】
ＳＤＮ（Ｓｏｆｔｗａｒｅ−Ｄｅｆｉｎｅｄ  Ｎｅｔｗｏｒｋ）のように、近年は個々の通信機器だけでなくネットワーク全体をみて運用・管理を行う技術が注目を集めている。そのためには、各スイッチでのアクションではなく「ネットワーク全体での振る舞い」によってパケットを分類しなければならない。
【背景技術】
【０００４】
（用語について）
先ず、本願発明に関連する発明及び本願発明で用いる用語の説明を行う。図１は、ネットワークの例を示し、図２〜図７はスイッチの動作を示し、図８、図９は、ネットワーク全体でのパケットの振る舞いを示す。図１〜図７で本願発明に関連するパケット分類手法について説明し、図８、図９でネットワーク全体での振る舞いを考慮した新たな課題を示す。
【０００５】
なお、ここでは、パケットヘッダには２つの領域のみがあり、それぞれの長さは３ビットとする。３ビットの領域が取り得る値の範囲は０から２３−１である。この０から２３−１の範囲を［０，２３−１］と表記する。
【０００６】
図１のネットワークは、３つのスイッチ（ＳＷＡ、ＳＷＢ、ＳＷＣ）を備え、それぞれ３つのポート（インタフェース）で接続されている。ＳＷＡ、ＳＷＢ、ＳＷＣのそれぞれは３つのポートを備える。ＳＷＡの３つのポートをＰＡ１、ＰＡ２、ＰＡ３のように示し、ＳＷＢの３つのポートをＰＢ１、ＰＢ２、ＰＢ３のように示し、ＳＷＣの３つのポートをＰＣ１、ＰＣ２、ＰＣ３のように示す。
【０００７】
図２、図４、図６に示す３つの表はＳＷＡ、ＳＷＢ、ＳＷＣの各スイッチがパケットに対して行うアクションを表している（一般にこのような表は転送表などと呼ばれる）。図２の表は、ＳＷＡの動作を示し、ＳＷＡによって管理される。図４の表はＳＷＢの動作を示し、ＳＷＢによって管理される。図６の表はＳＷＣの動作を示し、ＳＷＣによって管理されている。図２、図４、図６に示した表の各行を「ルール」と呼ぶことにする。
【０００８】
図２、図４、図６に示した表の１、２列目は、２つのヘッダ領域の値の範囲を示している。これは、パケットがその行に合致するための条件である。なお、＊はワイルドカードと呼ばれ、任意の値を意味する（この例では、［０，７］と同じである）。
【０００９】
図２、図４、図６の表の３列目は、条件に合致したパケットに適用するアクションである。廃棄はパケット廃棄、それ以外は出力ポートを表す。図２の表の一行目に示した第１ルールの条件「＊  ［３，４］」は、「領域１は任意の値、領域２は３から４まで」という意味である。つまり、領域２が３から４のパケットがスイッチＡに到着したら、廃棄される。パケットが複数のルールに合致したときには、最上位ルールのアクションのみが適用される。ここで、表の１行目が最上位ルールであり、表の４行目が最下位ルールである。
【００１０】
図３、図５、図７に示した３つの太線正方形は、それぞれ図２、図４、図６に示した表と同じ情報を座標系で表現している。たとえば、スイッチＳＷＡにおいて、領域１、領域２の値がともに０のパケットを考えると、図２の表の第４ルール「［０，３］  ＊」のみに合致し、アクションはＰＡ２となる。図３、図５、図７の太線正方形は、ｘ軸が領域１、ｙ軸が領域２を表しており、図３において、領域１、領域２の値がともに０の場合はＰＡ２の領域であることがわかる。この太線正方形のように、ヘッダの領域値を表す空間を「ヘッダ空間」と呼ぶことにする。パケット分類手法は、パケットヘッダが与えられたときに、対応するアクションを求める技術である。本発明に関連するパケット分類手法は、各スイッチＳＷＡ、ＳＷＢ、ＳＷＣでのアクションのみを対象としていた。
【００１１】
（関連技術について）
図８、図９に示したネットワーク全体でのパケットの振る舞いでは、３つのスイッチＳＷＡ、ＳＷＢ、ＳＷＣのアクションの組合せを説明する。スイッチのアクションの組合せによって、「ネットワーク全体でのパケットの振る舞い」が決まる。たとえば、領域１、領域２の値がともに０のパケットは、ＳＷＡではＰＡ２、ＳＷＢでは廃棄、ＳＷＣでは廃棄というアクションが適用される。これらのアクションをネットワーク全体の図として描いたのが、図９のＩである。図９のＩでは、ＳＷＡのみがパケットを送出し（ＡからＢへの矢印）、ＳＷＢ、ＳＷＣは送出していない（矢印が出ていない）。
【００１２】
図９の振る舞いＩに従うパケットのヘッダは、図８のヘッダ空間（太線正方形）においてＩの領域に対応する（Ｉに対応する領域は、図８のヘッダ空間内の左上と左下に分かれており、いずれもＩの振る舞いをする点に注意）。以降、振る舞いＩに合致するヘッダ空間の領域を「領域Ｉ」と呼ぶことにする。
【００１３】
「ネットワーク全体」の観点では、３つのスイッチのアクションがひとつでも異なれば別の振る舞いとみなす。すると、図８のようにヘッダ空間が多くの領域に分割されることになる。後述する本発明では、パケットヘッダが与えられたときに、関連技術のように単一スイッチのアクションのみを求めるのではなく、ネットワーク全体でのパケットの振る舞いを求める。図８の例で説明すると、ローマ数字で示したＩからＸＩＩのいずれに合致するかを求めるということになる。
【００１４】
さて、図２、図３に示したスイッチの動作にあるスイッチＳＷＡのヘッダ空間をみると、アクション数は４であり、分割された領域数は７である。ここで、分割領域数とは、同じアクションに対応づけられた領域でも、分断されている場合には別々に数えたときの領域数である。たとえば、領域Ｉは２つの分割領域に分けられているので２つと数える。
【００１５】
ネットワーク全体の振る舞いを表すヘッダ空間では、振る舞い数は１２、分割領域数は１７と多くなっている。ネットワーク全体でのパケットの振る舞いは、各スイッチでのアクションの「組合せ」によって定義されるため、ヘッダ空間がより複雑に細分化されることになる。なお、一般に（単一スイッチでのアクションでも、ネットワーク全体での振る舞いでも）、「分割領域数≧振る舞いによる領域数」となる。
【００１６】
ヘッダ空間の表現方法についての説明をもう少し続ける。本発明に関連するパケット分類手法では、図２、図４、図６の表のように、フィールド範囲の組合せによってパケットの合致条件を指定する。一般には、５つのフィールド（ＩＰ送受信アドレス、ＴＣＰ／ＵＤＰ送受信ポート、プロトコル種）が用いられ、５−ｔｕｐｌｅなどと呼ばれる。ヘッダ空間において、フィールド範囲の組合せによって指定される領域は「矩形（より一般にはｈｙｐｅｒｃｕｂｅ）」となる。フィールド数が２つであれば長方形であり（図３、図５、図７のように）、３つなら直方体になる。以降、フィールド範囲の組合せによって条件が指定されたルールのことを「矩形ルール」と呼ぶことにする。
【００１７】
図８の領域Ｉは２つの分割領域からなり、下側の分割領域は「凹」型をしている。この凹を「重なりのない」矩形の組合せで表現するには、３つの矩形が必要になる（図１０のＩ２、Ｉ３、Ｉ４）。一般に、「重なりのない矩形ルール数≧分割領域数」となる。図８のヘッダ空間を重なりのない矩形ルールで表すと、図１０のようになる。分割領域数１７より多い、２３の矩形が必要であることがわかる。
【００１８】
単一スイッチでのアクションを扱う関連技術では、図２、図４、図６の表のように矩形ルールリストによる表現が一般的であった。しかし、ネットワーク全体での振る舞いを矩形ルールとして表現する方法は知られていない。関連技術を評価するためには矩形ルールで表現しなければならない。後述のＢＤＤ（ｂｉｎａｒｙ  ｄｅｃｉｓｉｏｎ  ｄｉａｇｒａｍ）を用いると、「重なりのない」矩形の組合せを得ることができる。以降の関連技術評価では、図１０のように重なりのない矩形ルールを用いる。
【００１９】
ネットワーク全体でのパケットの振る舞いを対象とするパケット分類技術は、我々以前には存在しない。このため、単一スイッチでのアクションを対象とする既存パケット分類手法（非特許文献１参照）と、まったく別の分野である「ネットワーク設定検証技術」をパケット分類に流用する方法（非特許文献２参照）について議論する。
【００２０】
非特許文献１のパケット分類手法は、各スイッチのアクションによってパケットを分類するための手法である。非特許文献１の発明は、矩形ルールのリストを入力とし、そのヘッダ空間を表すデータ構造を出力する。構築されるデータ構造は、矩形ルールを葉ノード（終端ノード）とする決定木であり（図１１）、根から葉へとパケットヘッダの値に従って辿っていくことでアクション（あるいは振る舞い）を求める。
【００２１】
図１１を用いて決定木の構築方法を説明する。まず、根ノードは全ヘッダ空間を表すとし、すべての矩形ルールを持たせておく。図１１の例では、２３の矩形ルール（｛Ｉ１，Ｉ２，・・・，ＸＩＩ１｝）が根ノードに対応づけられている。次に、ヘッダ空間を分割し、それぞれについて子ノードを作成し、矩形ルールを割り当てる。
【００２２】
図１０、図１１の例では、領域１に沿って［０，３］、［４，５］、［６，７］の３つに分割した（図１０のＢ１の破線に沿って分割し、図１１のように３つの子ノードを作る）。このようにして、ノードあたりの矩形ルール数が指定された値以下になるまで（図１０及び図１１では２個以下）、再帰的に子ノードを作成する。図１０では、Ｂ１の破線に沿って分割した後、Ｂ２の破線に沿って分割し、最後にＢ３の破線に沿って分割する。このようにして作られる決定木の大きさ（空間計算量）は、矩形ルール数に依存する。
【００２３】
非特許文献２の手法は、複雑に分割されたヘッダ空間を圧縮してコンパクトに表現する手法を述べている。この手法では、各領域をＢＤＤと呼ばれる圧縮データ構造で表現する。たとえば、領域ＩのためにＢＤＤ  Ｉを構築し、領域ＩＩのためにＢＤＤ  ＩＩを構築し、という具合である。
【００２４】
図８、図９の例にはＩからＸＩＩまで１２の領域があるため、１２のＢＤＤが構築されることになる。ＢＤＤ  Ｉを使うと、あるパケットが領域Ｉに合致するかどうか（振る舞いＩをとるかどうか）を知ることができる。パケットの振る舞いを求めるには、最悪の場合、ＢＤＤ  ＩからＸＩまで１１個のＢＤＤを検査することになる（ＢＤＤ  ＸＩが外れた場合ＸＩＩに合致することは自明なので、１１個だけ検査すればよいということ）。パケットの振る舞いを求めるための時間計算量は、振る舞いの数｜Ｐ｜に依存する。
【先行技術文献】
【非特許文献】
【００２５】
【非特許文献１】Ｗ．  Ｌｉ  ａｎｄ  Ｘ．  Ｌｉ，  “ＨｙｂｒｉｄＣｕｔｓ：  Ａ  ｓｃｈｅｍｅ  ｃｏｍｂｉｎｉｎｇ  ｄｅｃｏｍｐｏｓｉｔｉｏｎ  ａｎｄ  ｃｕｔｔｉｎｇ  ｆｏｒ  ｐａｃｋｅｔ  ｃｌａｓｓｉｆｉｃａｔｉｏｎ，”  ｉｎ  ＩＥＥＥ  ＨＯＴＩ，  ２０１３，  ｐｐ．  ４１〜４８．
【非特許文献２】Ｈ．  Ｙａｎｇ  ａｎｄ  Ｓ．  Ｌａｍ，  “Ｒｅａｌ−ｔｉｍｅ  ｖｅｒｉｆｉｃａｔｉｏｎ  ｏｆ  ｎｅｔｗｏｒｋ  ｐｒｏｐｅｒｔｉｅｓ  ｕｓｉｎｇ  ａｔｏｍｉｃ  ｐｒｅｄｉｃａｔｅｓ，”  ｉｎ  ＩＥＥＥ  ＩＣＮＰ，  ２０１３，  ｐｐ．  １〜１１．
【非特許文献３】Ｐ．  Ｋａｚｅｍｉａｎ，  Ｇ．  Ｖａｒｇｈｅｓｅ，  ａｎｄ  Ｎ．  ＭｃＫｅｏｗｎ，  “Ｈｅａｄｅｒ  ｓｐａｃｅ  ａｎａｌｙｓｉｓ  ：  Ｓｔａｔｉｃ  ｃｈｅｃｋｉｎｇ  ｆｏｒ  ｎｅｔｗｏｒｋｓ，”  ｉｎ  ＵＳＥＮＩＸ  ＮＳＤＩ，  ２０１２，  ｐ．  ９．
【非特許文献４】Ａ．  Ｓｒｉｎｉｖａｓａｎ，  Ｔ．  Ｋａｍ，  Ｓ．  Ｍａｌｉｋ  ａｎｄ  Ｒ．  Ｂｒａｙｔｏｎ，  “Ａｌｇｏｒｉｔｈｍｓ  ｆｏｒ  ｄｉｓｃｒｅｔｅ  ｆｕｎｃｔｉｏｎ  ｍａｎｉｐｕｌａｔｉｏｎ，”  ｉｎ  ＩＥＥＥ  ＩＣＣＡＤ，  １９９０，  ｐｐ．  ９２〜９５
【発明の概要】
【発明が解決しようとする課題】
【００２６】
非特許文献１のパケット分類手法では、ネットワーク全体でのパケットの振る舞いを扱おうとすると、ヘッダ空間が複雑に分割されるため、膨大な数の矩形ルール（重なりのない矩形ルール）が必要になる。Ｓｔａｎｆｏｒｄ大学の公開ネットワークデータ（非特許文献３）で試算したところ、６．５２億の矩形ルールが必要ということがわかった。しかし、非特許文献１の空間計算量は矩形によるルール数に依存するため、膨大なメモリが必要となり、１６ＧＢでも足りなかった。
【００２７】
非特許文献２のヘッダ空間を圧縮してコンパクトに表現する手法では、振る舞いの数は矩形ほど多くはならないが、それでもＳｔａｎｆｏｒｄ大学のデータ（非特許文献３）を用いた場合で｜Ｐ｜＝１０９３である。非特許文献２の手法を用いてパケットを分類すると、その速度は５．７８Ｋｐｐｓ（ｐａｃｋｅｔ／ｓｅｃ）しか出なかった。１０Ｇｂｐｓのリンクを流れるパケットを分類するには、大雑把に１０Ｍｐｐｓほどの性能が求められるため、大幅に足りない。
【００２８】
そこで、本発明は、計算に用いるメモリ量を減らせるとともに、高速にパケット転送経路の検索及びパケットの転送経路ごとの分類が可能なデータを用いて、パケット経路の設定を高速に行うことを目的とする。
【課題を解決するための手段】
【００２９】
上記目的を達成するために、本願発明のパケット転送経路設定回路及びパケット転送経路設定方法は、圧縮データ構造であり高速検索可能な多分岐決定木を構築し、構築した多分岐決定木を用いてパケット転送経路の設定を行う。
【００３０】
具体的には、本願発明のパケット転送経路設定回路は、パケットの経路を特定するためのヘッダ空間に記載されたビット列を二分岐決定木に変換し、前記二分岐決定木の各終端ノードに割り当てられている前記パケットの経路毎に、前記経路が共通する二分岐決定木の終端ノードに到達しうる二分岐決定木を生成する二分岐決定木生成部と、前記経路の異なる各二分岐決定木のうちのビット列の共通する非終端ノードを共有させ、根ノードから各終端ノードへの多分岐決定木を構築する多分岐決定木構築部と、受信したパケットの経路を、当該パケットの前記ヘッダ空間に記載されたビット列に従って、前記多分岐決定木構築部で構築した前記多分岐決定木を検索して辿りついた終端ノードに割り当てられている経路に設定するパケット転送経路設定部と、を備える。
【００３１】
本願発明に係るパケット転送経路設定回路は、二分岐決定木生成部及び多分岐決定木構築部を備え、圧縮データ構造であり高速検索可能な多分岐決定木を構築するため、計算に用いるメモリ量を減らすことができる。また、本願発明に係るパケット転送経路設定回路は、パケット転送経路設定部を備え、多分岐決定木構築部が構築した多分岐決定木を用いてパケット経路の設定を行うため、高速にパケット転送経路の検索及びパケット転送経路の設定を行うことができる。したがって、本発明に係るパケット転送経路設定回路は、計算に用いるメモリ量を減らせるとともに、高速にパケット転送経路の検索及びパケットの転送経路ごとの分類が可能なデータを用いて、パケット経路の設定を高速に行うことができる。
【００３２】
本願発明のパケット転送経路設定回路は、前記多分岐決定木構築部で構築した前記多分岐決定木の根ノードから終端ノードの経路方向に隣接する複数の非終端ノードを１つの非終端ノードに集約するビット集約部を、さらに備え、前記パケット転送経路設定部は、受信したパケットの経路を、当該パケットの前記ヘッダ空間に記載されたビット列に従って、前記ビット集約部で構築した前記多分岐決定木を検索して辿りついた終端ノードに割り当てられている経路に設定してもよい。
【００３３】
本願発明のパケット転送スイッチは、パケットを受信するパケット受信部と、前記パケット受信部の受信したパケットのヘッダ空間にビット列に従って当該パケットの経路を設定する本発明に係るパケット転送経路設定回路と、前記パケット転送経路設定回路の設定した経路に基づいて、当該パケットを転送するパケット転送部と、を備える。
【００３４】
具体的には、本願発明のパケット転送経路設定方法は、パケットの経路を特定するためのヘッダ空間に記載されたビット列を二分岐決定木に変換し、前記二分岐決定木の各終端ノードに割り当てられている前記パケットの経路毎に、前記経路が共通する二分岐決定木の終端ノードに到達しうる二分岐決定木を生成し、前記経路の異なる各二分岐決定木のうちのビット列の共通する非終端ノードを共有させ、根ノードから各終端ノードへの多分岐決定木を構築する多分岐決定木構築手順と、受信したパケットの経路を、当該パケットの前記ヘッダ空間に記載されたビット列に従って、多分岐決定木構築手順で構築した前記多分岐決定木を検索して辿りついた終端ノードに割り当てられている経路に設定するパケット転送経路設定手順と、を順に有する。
【００３５】
本願発明に係るパケット転送経路設定方法は、多分岐決定木構築手順を有し、圧縮データ構造であり高速検索可能な多分岐決定木を構築するため、計算に用いるメモリ量を減らすことができる。また、本願発明に係るパケット転送経路設定方法は、パケット転送経路設定手順を有し、多分岐決定木構築手順で構築した多分岐決定木を用いてパケット経路の設定を行うため、高速にパケット転送経路の検索及びパケット転送経路の設定を行うことができる。したがって、本発明に係る転送経路設定方法は、計算に用いるメモリ量を減らせるとともに、高速にパケット転送経路の検索及びパケットの転送経路ごとの分類が可能なデータを用いて、パケット経路の設定を高速に行うことができる。
【００３６】
本願発明のパケット転送経路設定方法は、前記多分岐決定木構築手順で構築した前記多分岐決定木の根ノードから終端ノードの経路方向に隣接する複数の非終端ノードを１つの非終端ノードに集約し、前記パケット転送経路設定手順において、受信したパケットの経路を、当該パケットの前記ヘッダ空間に記載されたビット列に従って、前記多分岐決定木構築手順で集約した前記多分岐決定木を検索して辿りついた終端ノードに割り当てられている経路に設定してもよい。
【００３７】
本願発明のパケット転送方法は、パケット転送経路設定方法を用いて、受信したパケットのヘッダ空間にビット列に従って当該パケットの経路を設定するパケット転送経路設定手順と、パケット転送経路設定手順で設定した経路に基づいて、当該パケットを転送するパケット転送手順と、を順に有してもよい。
【００３８】
本願発明のパケット転送経路設定プログラムは、コンピュータを、二分岐決定木生成部、多分岐決定木構築部及びパケット転送経路設定部又は二分岐決定木生成部、多分岐決定木構築部、パケット転送経路設定部及びビット集約部をとして機能させるためのプログラムである。
【００３９】
なお、上記各発明は、可能な限り組み合わせることができる。
【発明の効果】
【００４０】
本発明によれば、本発明は、計算に用いるメモリ量を減らせるとともに、高速にパケット転送経路の検索及びパケットの転送経路ごとの分類が可能なデータを用いて、パケット経路の設定を高速に行うことが可能なパケット転送経路設定回路、パケット転送スイッチ、パケット転送経路設定方法及びパケット転送方法を提供することができる。
【図面の簡単な説明】
【００４１】
【図１】本発明に関連するネットワークの一例の模式図を示す。
【図２】本発明に関連するネットワークでのスイッチ動作の一例を示す。
【図３】本発明に関連するネットワークでのスイッチ動作の一例を矩形ルールで示す。
【図４】本発明に関連するネットワークでのスイッチ動作の一例を示す。
【図５】本発明に関連するネットワークでのスイッチ動作の一例を矩形ルールで示す。
【図６】本発明に関連するネットワークでのスイッチ動作の一例を示す。
【図７】本発明に関連するネットワークでのスイッチ動作の一例を矩形ルールで示す。
【図８】本発明に関連するネットワークでのネットワーク全体のパケットの振る舞いの一例を矩形ルールで示す。
【図９】本発明に関連するネットワークでのネットワーク全体のパケットの振る舞いの一例を示す。
【図１０】本発明に関連するネットワークでのネットワーク全体のパケットの振る舞いの一例を矩形ルールで示す。
【図１１】本発明に関連するパケット分類手法で用いる矩形ルールを葉ノード（終端ノード）とする決定木の一例を示す。
【図１２】本発明の実施形態に係るＢＤＤ構造の一例を示す。
【図１３】本発明の実施形態に係るＭＤＤ構造の一例を示す。
【図１４】本発明の実施形態に係るパケット転送スイッチの一例を示す。
【図１５】本発明の実施形態に係るパケット転送経路設定回路の一例を示す。
【図１６】本発明の実施形態に係るＢＤＤ集合を、ひとつのＭＤＤに変換するフローチャートの一例を示す。
【図１７】本発明の実施形態に係るＢＤＤをＭＤＤに置換した場合の一例を示す。
【図１８】本発明の実施形態に係る各振る舞いを示すＭＤＤを１つのＭＤＤに纏めた場合の一例を示す。
【図１９】本発明の実施形態に係る各振る舞いを示すＭＤＤを１つのＭＤＤにまとめる場合のアルゴリズムの一例を示す。
【図２０】本発明の実施形態に係る各振る舞いを示すＭＤＤを１つのＭＤＤにまとめる場合のアルゴリズムの他の例を示す。
【図２１】本発明の実施形態に係るＭＤＤにおいてビット集約を行う場合のアルゴリズムの一例を示す。
【図２２】本発明の実施形態に係るＭＤＤにおいてＭＤＤ更新を行う場合のアルゴリズムの一例を示す。
【図２３】本発明の実施形態に係るＭＤＤにおいてＭＤＤを辿り、与えられたパケットヘッダに対応する振る舞いを検索する場合のアルゴリズムの一例を示す。
【図２４】本発明の実施形態に係るＭＤＤにおいて、６ビットのパケットヘッダを２ビットごとの配列で扱う場合の一例を示す。
【図２５】本発明の実施形態を適用してネットワーク全体でのパケットヘッダ生成を行った場合の結果の一例を示す。
【図２６】本発明の実施形態を適用してネットワーク全体でのパケットヘッダ生成を行った際のメモリ使用量と分類スループットの特性の一例を示す。
【発明を実施するための形態】
【００４２】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。なお、本発明は、以下に示す実施形態に限定されるものではない。これらの実施の例は例示に過ぎず、本発明は当業者の知識に基づいて種々の変更、改良を施した形態で実施することができる。なお、本明細書及び図面において符号が同じ構成要素は、相互に同一のものを示すものとする。
【００４３】
（ＢＤＤ及びＭＤＤについて）
図１２及び図１３を用いてＢＤＤとＭＤＤ（ｍｕｌｔｉ−ｖａｌｕｅｄ  ｄｅｃｉｓｉｏｎ  ｄｉａｇｒａｍ）という圧縮データ構造を説明する。ここで、ＢＤＤとは二分岐決定木であり、ＭＤＤとは多分岐決定木である。後述する二分岐決定木生成部１２１は、パケットヘッダのビット列から、図１２のＢＤＤを生成する。図１２は、図８の領域Ｉを表すＢＤＤである。ＢＤＤ中の非終端ノードＮ０〜Ｎ８に書かれた数値は、パケットヘッダのビット番号を表す（ビット番号は０から数えることにする）。そのビットが０であれば点線を、１であれば実線を辿る。
【００４４】
最終的に終端ノードＮＥ１に到達した場合、そのビットパターンが領域Ｉに合致する。一方、終端ノードＮＥ２に到達した場合、そのビットパターンは領域Ｉに合致しない。たとえば、図１２の太線で示したパス（ｐａｔｈ）は０１０１１＊というビットパターンを表し、領域Ｉの振る舞いに合致する。領域Ｉ内の５番目ビットの＊はワイルドカードを表す。ビットがワイルドカードである場合、そのビットの値は任意である。この場合、対応するＢＤＤノードは省略される。そのため、図１２には、終端ノードＮＥ１に実線で繋がるＢ５ノードは省略されている。このように上のノードから下のノードへのパスによって、ヘッダのビットパターンを表す。なお、ＢＤＤ上のパスは、ヘッダ空間における矩形に対応する。すべてのパスを辿ることで、重なりのない矩形ルールを列挙できる。
【００４５】
ＢＤＤは、共通する「部分パス」を共有することで、「圧縮」を行うため、後述する二分岐決定木生成部１２１は、膨大な数の矩形をコンパクトに表現できる。たとえば、図１２の太線で示した０１０１１＊というパスと、０１１１１＊というパスは、０１という先頭部分と１＊という末尾部分を共有している。このＢＤＤには１４のパスがあるが、たった９つの非終端ノードＮ０〜Ｎ８で表現できている。
【００４６】
すでに述べたように、ＢＤＤは振る舞いごとに構築される。図１２にはひとつのＢＤＤしか示さないが、図８のヘッダ空間を表すためには１２個のＢＤＤが構築されることになる。図１３は、図８のヘッダ空間全体を表すＭＤＤである。図１３のＭＤＤは、後述する多分岐決定木構築部１２２が、二分岐決定木生成部１２１で生成したＢＤＤから構築する。
【００４７】
ＭＤＤでは、ＢＤＤと異なり、終端ノードの種類は任意であり、今回はパケットの振る舞いに対応づける。図８には１２種類の振る舞いがあったので、終端ノードはＮＴＩからＮＴＸＩＩの１２種類である。このＭＤＤでは、Ｋ＝２個の連続するビットをひとつにまとめている。このため、各ノードには２つのビット番号が記され、２ビットで表現できる０−３の矢印が出ている。図１３の太線で示したパスは０１０１１１というビットパターンを表し、振る舞いＩに従い終端ノードＮＴＩに到達している。ＢＤＤと同様に、ＭＤＤも部分パスを共有して、圧縮を行う。ＢＤＤやＭＤＤの「サイズ」は、非終端ノードの数と定義する。
【００４８】
本実施形態に係るパケット転送方法では、パケット転送経路設定手順と、パケット転送手順と、を順に有する。パケット転送経路設定手順では、スイッチＳＷＡ、ＳＷＢ、ＳＷＣのそれぞれが本実施形態に係るパケット転送経路設定方法を用いて、受信したパケットのヘッダ空間にビット列に従って当該パケットの経路を設定する。本実施形態に係るパケット転送経路設定方法では、スイッチＳＷＡ、ＳＷＢ、ＳＷＣが多分岐決定木構築手順と、パケット転送経路設定手順とを順に実行する。パケット転送手順では、スイッチＳＷＡ、ＳＷＢ、ＳＷＣがパケット転送経路設定手順で設定した転送経路に基づいて当該パケットを転送する。
【００４９】
（非特許文献１との差異）
非特許文献１のパケット分類手法では、部分パス共有のない決定木を用いるのに対し、本実施形態では、多分岐決定木構築手順おいて、ＭＤＤを用いて部分パスを共有することで圧縮を行う。よって、非特許文献１の決定木より、本実施形態に係るＭＤＤのほうが小さくなると期待できる（任意のデータでそうなるわけではないが、非特許文献３による現実的なデータで実験的に確認している。なお、ＢＤＤ／ＭＤＤの圧縮率を数学的に記述することは難しいとされている）。そして、非特許文献１ではメモリに収まらなかったような複雑なヘッダ空間であっても、本実施形態に係るパケット分類方法を用いればメモリに収まる可能性がある。
【００５０】
Ｓｔａｎｆｏｒｄデータ（非特許文献３）による実験では、非特許文献１が１６ＧＢのメモリでも不足して決定木を構築できなかったのに対し、本実施形態では、多分岐決定木構築手順におけるＭＤＤは８．４２ＭＢと極めて小さい。
【００５１】
非特許文献１の決定木の終端ノードは矩形ルールであり（図１１）、本実施形態に係る多分岐決定木構築手順におけるＭＤＤの終端ノードは振る舞いである（図１３）。また、上で述べたように「重なりのない矩形ルール数≧分割領域数」かつ「分割領域数≧振る舞いの数」である（Ｓｔａｎｆｏｒｄデータ（非特許文献３）では、矩形ルール数が６．５２億だったのに対し、本実施形態の多分岐決定木構築手順における振る舞いは１０９３とずっと少なかった）。このため、本実施形態は終端ノード数が少なくなり、末尾の部分パスが一致して共有できる可能性が高くなる。一方、非特許文献１は終端ノードが多く、末尾の部分パスが一致する可能性は極めて低くなる。よって、非特許文献１の決定木を圧縮しようとしても、効果は期待できない。また、決定木を作ってから圧縮するというアプローチは、そもそもメモリ不足で決定木を構築できないわけだから、うまくいかない。
【００５２】
本実施形態は、矩形ルールではなく振る舞いを終端ノードとして用いることで、部分パスを共有できるようにする。また、決定木を作ってから圧縮するのではなく、ＢＤＤやＭＤＤのような圧縮データ構造を圧縮したまま変換していくアルゴリズムを新たに開発することで、メモリ不足問題を解決した。
【００５３】
（非特許文献２との差異）
本発明に関連するヘッダ空間を圧縮してコンパクトに表現する手法（非特許文献２参照）では、振る舞いごとにＢＤＤを構築し、それらをひとつずつ上から下に辿ってパケットの振る舞いを求めた。これに対し、本願発明はひとつのＭＤＤを辿るだけでよい。よって、非特許文献２に比べて、より短時間でパケットの振る舞いを求められると期待でき、より高い分類性能を実現できる可能性がある。
【００５４】
Ｓｔａｎｆｏｒｄデータ（非特許文献３）による実験では、非特許文献２が５．７８Ｋｐｐｓであったのに対し、本願発明は２０．１Ｍｐｐｓであった（ＫｉｌｏとＭｅｇａの違いに注意）。
【００５５】
ＢＤＤの集合をひとつのＭＤＤに変換するアルゴリズムは明らかに自明ではない。
【００５６】
図１４に、本実施形態に係るパケット転送スイッチ１０を示す。本実施形態のパケット転送スイッチ１０は、パケット受信部１１と、パケット転送経路設定回路１２と、パケット転送部１３とを備える。パケット受信部１１は、パケットを受信する。パケット転送経路設定回路１２は、本実施形態に係るパケット転送経路設定方法を実行し、パケット受信部１１の受信したパケットのヘッダ空間にビット列に従って当該パケットの経路を設定する。パケット転送部１３は、パケット転送手順を実行し、パケット受信部１１の受信したパケットの経路をパケット転送経路設定回路１２の設定した経路として、当該パケットを転送する。
【００５７】
図１５に本実施形態に係るパケット転送経路設定回路１２の一例を示す。本実施形態に係るパケット転送経路設定回路１２は、二分岐決定木生成部１２１と、多分岐決定木構築部１２２と、ビット集約部１２３と、パケット転送経路設定部１２４とを備える。二分岐決定木生成部１２１と、多分岐決定木構築部１２２と、ビット集約部１２３が、多分岐決定木構築手順を実行する。パケット転送経路設定部１２４がパケット転送経路設定手順を実行する。
【００５８】
パケット転送経路設定回路１２は、コンピュータを、二分岐決定木生成部１２１、多分岐決定木構築部１２２、ビット集約部１２３、パケット転送経路設定部１２４として機能させることで実現してもよい。この場合、パケット転送経路設定回路１２のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が記憶部（不図示）に記憶されたコンピュータプログラムを実行することで、各構成を実現する。
【００５９】
二分岐決定木生成部１２１は、パケットの経路を特定するためのヘッダ空間に記載されたビット列を二分岐決定木に変換し、二分岐決定木の各終端ノードに割り当てられているパケットの経路毎に、経路が共通する二分岐決定木の終端ノードに到達しうる二分岐決定木を生成する。ビット列から二分岐決定木への変換は、例えば、非特許文献２のアルゴリズム３などによって、パケット受信部１１が受信するパケットの各振る舞いに対応するＢＤＤを構築することで行う。具体的には、本実施形態に係る二分岐決定木生成部１２１は、パケットの経路を特定するためのヘッダ空間に記載されたビット列をＢＤＤに変換し、ＢＤＤの各終端ノードに割り当てられているパケットの経路毎に、経路が共通するＢＤＤの終端ノードに到達しうるＢＤＤを生成する。
【００６０】
このＢＤＤ集合が本実施形態の多分岐決定木構築部１２２の入力になる。多分岐決定木構築部１２２は、ＢＤＤ集合を、ひとつのＭＤＤに変換する。以降、ＢＤＤをＭＤＤに変換する手法を述べ、最後にＭＤＤを辿るアルゴリズムを述べる。変換手法については、図１６に示すフローチャートに従って説明する。
【００６１】
（ＭＤＤ初期構築（ｃｏｎｓｔｒｕｃｔｉｏｎ））
まず、ＭＤＤの初期構築（ｃｏｎｓｔｒｕｃｔｉｏｎ）を説明する。本実施形態に係る多分岐決定木構築部１２２は、根ノードから各終端ノードへのＭＤＤを構築する。パケットヘッダのビット数をＬとし、Ｌビットのヘッダ空間をχ＝｛０，１｝Ｌと表す（図２〜図７はＬ＝３＋３である）。あるヘッダを表すビットパターンをｘ∈χとする。
【００６２】
振る舞いの集合をＰ＝｛Ｉ，ＩＩ，・・・｝とし、ヘッダｘが領域ｉ∈Ｐに合致するか否かを表す論理関数をｆｉ（ｘ）とする。
【数１】
2016012781.tif 000003
であれば合致し、
【数２】
2016012781.tif 000004
であれば合致しない。この論理関数ｆｉをＢＤＤで表す。たとえば、ヘッダｘ＝０１０１１１は図１２の太線のパスに対応し、
【数３】
2016012781.tif 000005
となることで領域Ｉに合致することを表す。
【００６３】
図１２のように、すべての振る舞いｆｉ,∀ｉ∈ＰがＢＤＤで表現されているとする。多分岐決定木構築部１２２は、このＢＤＤ  ｆｉを、根ノードから各終端ノードへの全ての経路で、関数としての意味を変えずにＭＤＤ  Ｆｉに単純変換して、根ノードから各終端ノードへのＭＤＤを構築する（図１７）。ここで、Ｆｉ（ｘ）はヘッダｘを領域ｉに対応づける関数とし、Ｆｉ（ｘ）＝ｉであればヘッダｘは領域ｉに合致し、Ｆｉ（ｘ）＝ｎｉｌであれば合致しない（ｎｉｌは未定義の振る舞いを表すとする）。この変換操作は、図１２のＢＤＤの終端ノード
【数４】
2016012781.tif 000006
を図１７のようにＩ、ｎｉｌに置き換えればよい。
【００６４】
（ＭＤＤ統合（ｕｎｉｆｉｃａｔｉｏｎ））
次に、多分岐決定木構築部１２２は、各振る舞いを表すＭＤＤをのうち、ビット列の共通する非終端ノードを共有させることでひとつにまとめ（ｕｎｉｆｉｃａｔｉｏｎ）、図１８のＭＤＤを得る。ふたつのＭＤＤ  Ｆｉ，Ｆｊが与えられたとき、ヘッダｘの振る舞いが、Ｆｉ，Ｆｊのいずれかで定義されていれば（ｎｉｌでなければ）、その振る舞いに対応づければよい。このような
【数５】
2016012781.tif 000007
演算を統合演算と呼ぶことにし、次の式（１−１）のように定義する。
【００６５】
【数６】
2016012781.tif 000008
【００６６】
ここで、非特許文献４が提案するＣＡＳＥというアルゴリズムフレームワークを用いる。ＣＡＳＥは、ふたつのＭＤＤに対して任意の「演算」を実行し、計算結果として新たなＭＤＤを出力する。ＣＡＳＥを用いて式（１−１）を計算するアルゴリズムを、図１９のアルゴリズム１に示す。
【００６７】
アルゴリズム１について説明する。アルゴリズム１では、ＦｉとＦｊの両方が終端ノードの場合には、式（１−１）に従って、Ｆｉ（ｘ）とＦｊ（ｘ）の統合を求め、Ｆｉ（ｘ）とＦｊ（ｘ）の統合を出力する。ＦｉとＦｊの両方が終端ノードでない場合には、ｘ’が０から２ｋ−１の範囲で、Ｆｉの子ノードＦｉ．ｃｈｉｌｄ［ｘ’］とＦｊの子ノードＦｊ．ｃｈｉｌｄ［ｘ’］の統合を計算してＦ．ｃｈｉｌｄ［ｘ’］とする。計算終了後、Ｆを出力する。なお、アルゴリズム１において、「／＊」及び「＊／」に挟まれた部分はコメントである。
【００６８】
すべての振る舞いに対してこの統合演算を行うことで、ヘッダ空間全体χをいずれかの振る舞いに対応づけられる。そのような関数をＦとする。関数Ｆを以下の式（１−２）のように定義する。
【数７】
2016012781.tif 000009
【００６９】
各振る舞いを表すＭＤＤ  Ｆｉに対して繰り返し統合演算を適用していくことで、図１７のようなＭＤＤの集合を、図１８に示すひとつのＭＤＤにまとめられる。このＭＤＤは関数Ｆを表す。この演算は結合的でありかつ数学的に可換であるため、任意の順序で計算できる。たとえば、図２０に示したような順序でＭＤＤをふたつずつ選んで演算を行い、最終的にＦを表すひとつのＭＤＤを得ることもできる。なお、図２０に示した順序とは、この図をトーナメント表だと思うと、まず１回戦を行い、
【数８】
2016012781.tif 000010
次に２回戦
【数９】
2016012781.tif 000011
３回戦、と繰り返し、決勝戦を終えるとＦが決まる。ここで、ＭＤＤ  Ｆのサイズを｜｜Ｆ｜｜と表記し、非終端ノード数と定義する。
【００７０】
図２０の下部に、各振る舞いに対応づけられたＭＤＤ  Ｆｉのサイズ｜｜Ｆ｜｜を示してある。このように、小さいＭＤＤから順に演算を行うことで、全体の計算量を最少化できる（証明は非特許文献２のＴｈｅｏｒｅｍ  １でなされている）。なお、ＣＡＳＥの計算量は、ＭＤＤサイズに依存するが、ＭＤＤに含まれるパス数（矩形数）には依存しない。
【００７１】
（ビット集約（ａｇｇｒｅｇａｔｉｏｎ））
本実施形態に係るパケット転送経路設定回路１２はビット集約部１２３を備えることが好ましい。ここまで、ＢＤＤやＭＤＤの各ノードは、ひとつのビットに対応づけられていた（図１７、図１８のように）。ここで、本実施形態に係るビット集約部１２３は、多分岐決定木構築部１２２で構築した多分岐決定木の根ノードから終端ノードの経路方向に隣接する複数のビットに対応づけて集約する。例えば、各終端ノードを複数のビットに対応付けて集約し、図１８のＭＤＤを図１３のＭＤＤに変換する。このことにより、根ノードから終端ノードのパスを短くし、パケットヘッダに対応する振る舞いを短時間で突き止められるようになる。
【００７２】
このビット集約操作を、図２１のアルゴリズム２によって行う。このアルゴリズムは、ＭＤＤのｒｏｏｔ  ｎｏｄｅ  Ｆが与えられると（ここではＦは関数ではなく、ＭＤＤのｒｏｏｔ  ｎｏｄｅとする）、Ｋビット分だけ先にある２Ｋ個の子ノードを見つけ、それらを新たな子ノードとして設定する。
【００７３】
この計算を再帰的に行い、ＭＤＤ全体を再構築する。このアルゴリズムを同じノードに対して繰り返し行わないように、計算済みノードはキャッシュしておく。たとえば、図１８のｒｏｏｔ  ｎｏｄｅについて説明する。Ｋ＝２ビット先の子ノードとは、太線の丸で示したノードである（ビット番号２のノードが省略されているときは、その次のノードとする）。これらを新たな子ノードとして設定する（図１８の太線の丸で示した４つのノードである）。さらにそれぞれの子ノードについてアルゴリズム２を再帰的に適用する。
【００７４】
アルゴリズム２について説明する。アルゴリズム２では、Ｆが終端ノードでない場合又はＦがキャッシュ内にない場合には、ｘ’が０から２ｋ−１の範囲で、再帰的にビット集約を行い、その結果をキャッシュにＦ（Ｋ）を出力する。
【００７５】
このようにして再構築したＭＤＤをＦ（Ｋ）と表すことにする。アルゴリズム２の計算量は、ＭＤＤサイズに依存するが、ＭＤＤに含まれるパス数（矩形数）には依存しない。なお、本実施形態では、ビット集約を行うか否かは任意であり、例えば、ＭＤＤの規模が小さな場合にはビット集約を行わなくてもよい。
【００７６】
（ＭＤＤ更新（ｕｐｄａｔｅ））
上記のようにして構築した図１８のようなＭＤＤ  ＦあるいはＦ（Ｋ）を、新たな振る舞いを表すＭＤＤ  Ｆ′で更新する。新たな振る舞いが定義されたヘッダ空間、Ｘ′＝｛ｘ∈χ：Ｆ′（ｘ）≠ｎｉｌ｝、では、新たな振る舞いを適用し、それ以外は元のままとする。このとき、ＣＡＳＥを用いて下記の演算を適用すればよい。
【００７７】
【数１０】
2016012781.tif 000012
【００７８】
ＣＡＳＥを用いて式（２）を計算するアルゴリズムを、図２２のアルゴリズム３に示す。Ｆ′の取得方法を説明する。まず、ｆｉからＦｉを得た方法と同じように、ｆ′から変換してＦ′を得る。Ｆ（Ｋ）がＫ＞１であれば、図２１のアルゴリズム２を適用して、Ｆ′のＫをＦ（Ｋ）に揃える。
【００７９】
アルゴリズム３について説明する。アルゴリズム３では、Ｆ’とＦの両方が終端ノードの場合には、式（１−１）に従って、
【数１１】
2016012781.tif 000013
を求めて出力する。Ｆ’とＦの両方が終端ノードでない場合には、ｘ’が０から２ｋ−１の範囲で、
【数１２】
2016012781.tif 000014
を計算し、計算後のＦ’’を出力する。
【００８０】
（ＭＤＤ検索）
パケット転送経路設定部１２４は、パケット受信部１１の受信したパケットの経路を、当該パケットの前記ヘッダ空間に記載されたビット列に従って、多分岐決定木構築部１２２又はビット集約部１２３の構築したＭＤＤを検索して辿りついた終端ノードに割当てられている経路に設定する。例えば、ＭＤＤ  Ｆ（Ｋ）を辿り、与えられたパケットヘッダｘに対応する振る舞いを検索する（図２３に示すアルゴリズム４）。このアルゴリズム４では、入力となるヘッダのビット列を、Ｋビットごとに区切った「配列」パケットヘッダｐｋｔとみなす。図２４に、６ビットのパケットヘッダをＫ＝２ビットごとの配列で扱う例を示す。パケットヘッダｐｋｔ［０］とすると０、１番目の２ビット（０１）を得られ、パケットヘッダｐｋｔ［１］で２、３番目の２ビット（０１）を得られる。一般には、パケットヘッダｐｋｔ［ｉ］は［Ｋｉ，Ｋ（ｉ＋１）−１］の範囲のビット列を表す。
【００８１】
Ｆ．ｂは、ＭＤＤ  ｎｏｄｅ  Ｆに対応づけられたビットのうち、もっとも小さい値を表す。たとえば、図１３のＭＤＤ  のｒｏｏｔ  ｎｏｄｅは０、１番目のビットに対応づけられているので、Ｆ．ｂ＝０となる。アルゴリズム４は、配列アクセスだけによって高速に子ノードを辿り、終端ノードに到達してパケットの振る舞いを得る。
【００８２】
アルゴリズム４について説明する。アルゴリズム４では、Ｆ（ｋ）が終端ノードでない期間、ｘ’＝パケットヘッダｐｋｔ［Ｆ（ｋ）．ｂ/Ｋ］及びＦ（ｋ）＝Ｆ（ｋ）．Ｃｈｉｌｄ［ｘ’］を計算することにより経路探索を行い、検索結果Ｆ（ｋ）を出力する。
【００８３】
図２４のパケットヘッダを用いて、図１３のＭＤＤ  Ｆ（Ｋ）を辿る例を説明する。まず、ｒｏｏｔ  ｎｏｄｅはＦ（Ｋ）．ｂ＝０であるから、パケットヘッダｐｋｔ［０／Ｋ］＝１となり、Ｆ（Ｋ）．ｃｈｉｌｄ［１］によってＦ（Ｋ）を更新する。
【００８４】
この更新操作は、図１３の赤いパスをひとつ進むことに相当する。次のノードではＦ（Ｋ）．ｂ＝２であり、パケットヘッダｐｋｔ［２／Ｋ］＝１を得て、Ｆ（Ｋ）．ｃｈｉｌｄ［１］でパスをまたひとつ進む。最後は、Ｆ（Ｋ）．ｂ＝４、パケットヘッダｐｋｔ［４／Ｋ］＝３となり、Ｆ（Ｋ）．ｃｈｉｌｄ［３］＝Ｉであり、振る舞いＩを得る。アルゴリズム４の計算量は、ＭＤＤのパス長に依存するが、ＭＤＤに含まれるパス数（矩形数）には依存しない。
【００８５】
本実施形態に係るパケット転送経路設定部１２４は受信したパケットの経路を、ＭＤＤ  Ｆ（Ｋ）を検索することにより辿りついた終端ノードに割り当てられている経路に設定する。ここで、パケット転送経路設定部１２４が用いるＭＤＤ  Ｆ（Ｋ）は、多分岐決定木構築部１２２で構築したＭＤＤ  Ｆ（Ｋ）又は多分岐決定木構築部１２２で構築した後、ビット集約部１２３でビット集約したＭＤＤ  Ｆ（Ｋ）である。パケット転送部１３は、パケット転送経路設定回路１２４の設定した経路に基づいて、パケット受信部１１が受信したパケットを転送する。
【００８６】
なお、本実施形態に係るパケット転送経路設定回路１２は、コンピュータ及びプログラムによっても実現でき、プログラムを記憶媒体に記憶することも、ネットワークを通じて提供することも可能である。また、パケット転送経路設定回路１２を実現する際のコンピュータ及びプログラムは、コンピュータによって制御される任意の機器をさらに備えてもよい。
【００８７】
図２５に実験結果を示す。提案手法は、非特許文献１の空間計算量の課題を解決した。また、非特許文献２の分類スループットが低いという課題も解決した。また、図２６に、Ｋ＝２、４、８での実験結果を示す。Ｋの値以外の実験条件は、図２５に示した実験と同じである。図２６の実験結果から、実験的に、Ｋ∈［２，８］がメモリ使用量と分類スループットの観点から優れることがわかった。
【００８８】
ヘッダ空間を矩形ルールリストとして表現することなく、圧縮データ構造を利用したアルゴリズムによってパケット分類手法のためのデータ構造を構築する。このときの計算量は矩形ルール数でなく、圧縮データ構造の大きさ（ＭＤＤサイズ）にしか依存しない。我々の圧縮データ構造は、矩形ルールリストを用いた決定木に比べてずっと小さくなる。また、この圧縮データ構造上で動作する高速な検索アルゴリズムによって、パケットを高速に分類できる。
【００８９】
また、本願発明は、パケットの振る舞いに対応するヘッダ空間(パケットヘッダが表す論理空間)の領域毎に構築し、共通する部分パスを共有することで圧縮し、当該領域に合致するかを判定するＢＤＤ （ｂｉｎａｒｙ ｄｅｃｉｓｉｏｎ ｄｉａｇｒａｍ)の集合から、ヘッダ空間全体を表すデータ構造であって、いずれの振る舞いに合致するかを判定する単一のＭＤＤ（ｍｕｌｔｉ−ｖａｌｕｅｄ ｄｅｃｉｓｉｏｎ ｄｉａｇｒａｍ)を作成することで、少ない空間計算量で分類速度を向上することができる。
【産業上の利用可能性】
【００９０】
本発明のパケット転送経路設定回路、パケット転送スイッチ、パケット転送経路設定方法及びパケット転送方法は、通信産業に適用することができる。
【符号の説明】
【００９１】
１０：パケット転送スイッチ
１１：パケット受信部
１２：パケット転送経路設定回路
１３：パケット転送部
１２１：二分岐決定木生成部
１２２：多分岐決定木構成部
１２３：ビット集約部
１２４：パケット転送経路設定部
【図１】
2016012781.tif 000015
【図２】
2016012781.tif 000016
【図３】
2016012781.tif 000017
【図４】
2016012781.tif 000018
【図５】
2016012781.tif 000019
【図６】
2016012781.tif 000020
【図７】
2016012781.tif 000021
【図８】
2016012781.tif 000022
【図９】
2016012781.tif 000023
【図１０】
2016012781.tif 000024
【図１１】
2016012781.tif 000025
【図１２】
2016012781.tif 000026
【図１３】
2016012781.tif 000027
【図１４】
2016012781.tif 000028
【図１５】
2016012781.tif 000029
【図１６】
2016012781.tif 000030
【図１７】
2016012781.tif 000031
【図１８】
2016012781.tif 000032
【図１９】
2016012781.tif 000033
【図２０】
2016012781.tif 000034
【図２１】
2016012781.tif 000035
【図２２】
2016012781.tif 000036
【図２３】
2016012781.tif 000037
【図２４】
2016012781.tif 000038
【図２５】
2016012781.tif 000039
【図２６】
2016012781.tif 000040