(57)【要約】      （修正有）【課題】パケットの転送時間を短縮化する。【解決手段】パケット伝送装置２は、パケットが入力される複数の入力ポートと、パケットが出力される複数の出力ポートと、パケットの識別情報と、前記パケットに対するパケット処理が対応付けられて記憶されている第１テーブル４４と、入力ポートと出力ポートとが対応付けられて記憶されている第２テーブル４５と、入力されたパケットの入力ポートが前記第２テーブルに記憶されている場合は、前記入力ポートに対応付けられている出力ポートからパケットを出力し、前記パケットの入力ポートが前記第２テーブルに記憶されていない場合は、前記第１テーブルに基づくパケット処理がされるよう制御する制御部４３とを含む。【選択図】図４
2017143344.tif 000002
【特許請求の範囲】
【請求項１】
パケットが入力される複数の入力ポートと、
パケットが出力される複数の出力ポートと、
パケットの識別情報と、前記パケットに対するパケット処理が対応付けられて記憶されている第１テーブルと、
入力ポートと出力ポートとが対応付けられて記憶されている第２テーブルと、
入力されたパケットの入力ポートが前記第２テーブルに記憶されている場合は、前記入力ポートに対応付けられている出力ポートからパケットを出力し、前記パケットの入力ポートが前記第２テーブルに記憶されていない場合は、前記第１テーブルに基づくパケット処理がされるよう制御する制御部と
を含むパケット伝送装置。
【請求項２】
前記第２テーブルには、広帯域でのパケット伝送が要求された対象フローに割り当てられた入力ポートと出力ポートとが対応づけられて記憶される
請求項１に記載のパケット伝送装置。
【請求項３】
前記第２テーブルに記憶された入力ポート及び出力ポートの少なくとも一方が前記第２テーブルに記憶された入力ポート及び出力ポートを用いてパケットが転送される対象フロー以外のフローによって使用中である場合に、前記対象フロー以外のフローのパケットが前記入力ポート及び前記出力ポート以外のポートを用いて転送されるように前記第１テーブルを更新する処理部
をさらに含む請求項１又は２に記載のパケット伝送装置。
【請求項４】
前記制御部は、所定時間の経過に応じて前記第２テーブルから前記入力ポート及び出力ポートの対応関係を削除する処理と、前記第２テーブルから削除された入力ポートに入力されるパケットを前記第２テーブルから削除された出力ポートから出力することを示すパケット処理を前記第１テーブルに記憶させる処理と、当該パケット処理を用いて転送されるパケットの統計情報を制御装置に送信する処理とを行う
請求項１から３のいずれか１項に記載のパケット伝送装置。
【請求項５】
前記制御部は、前記第２テーブルに記憶された入力ポートと出力ポートとの対応関係を用いたパケットの転送状況を示す情報を制御装置へ送信し、前記制御装置からの前記転送状況に基づく指示に応じて前記対応関係を前記第２テーブルから削除する
請求項１から３のいずれか１項に記載のパケット伝送装置。
【請求項６】
第１のフローの経路上にあるパケット伝送装置に対し、前記第１のフローのパケットの識別情報と、前記パケットに対するパケット処理とを対応づけて第１テーブルに記憶する指示を送信するとともに、前記第１のフローと異なる第２のフローの経路上にある少なくとも１つのパケット伝送装置に対し、前記第２のフローに割り当てられた入力ポートと出力ポートとの対応関係を第２テーブルへ記憶する指示を送信する送信部
を含むパケット伝送装置の制御装置。
【請求項７】
前記第２のフローは、広帯域でのパケット伝送が要求されるフローである
請求項６に記載のパケット伝送装置の制御装置。
【請求項８】
前記送信部は、前記第２テーブルに対応関係が記憶された入力ポート及び出力ポートの少なくとも一方が前記第１のフローによって使用中である場合に、前記第１のフローのパケットが前記第２テーブルに対応関係が記憶された入力ポート及び出力ポート以外のポートを用いて転送されるパケット処理を前記第１テーブルへ記憶する指示を送信する
請求項６又は７に記載のパケット伝送装置の制御装置。
【請求項９】
前記送信部は、前記第２のフローの経路上にある複数のパケット伝送装置のうち、負荷が閾値を超過する少なくとも１つのパケット伝送装置に対し、前記第２のフローに割り当てられた入力ポートと出力ポートとの対応関係を第２テーブルへ記憶する指示を送信する請求項６から８のいずれか１項に記載のパケット伝送装置の制御装置。
【請求項１０】
前記送信部は、前記第２テーブルからの前記入力ポートと出力ポートとの対応関係の削除指示を送信し、
前記対応関係で特定される出力ポートから出力されるパケットの統計情報を、前記削除指示を受信したパケット伝送装置から受信し、前記パケットの統計情報に基づいて前記第２のフローに係る入力ポートと出力ポートとの対応関係を前記第２テーブルに記憶する指示の送信を制御する制御部
をさらに含む請求項５から７のいずれか１項に記載のパケット伝送装置の制御装置。
【請求項１１】
前記第２のフローの経路上にあるパケット伝送装置のそれぞれから受信される、前記第２テーブルに記憶された入力ポートと出力ポートとの対応関係を用いたパケットの転送状況に基づいて、前記第２のフローの経路上にあるパケット伝送装置のそれぞれに、前記第２テーブルに記憶された入力ポートと出力ポートとの対応関係を前記第２テーブルから削除する指示を供給する制御部
をさらに含む請求項６から１０のいずれか１項に記載のパケット伝送装置の制御装置。
【請求項１２】
パケットが入力される複数の入力ポートと、パケットが出力される複数の出力ポートとを有するパケット伝送装置が、
パケットの識別情報と、前記パケットに対するパケット処理とを対応付けて第１テーブルに記憶し、
入力ポートと出力ポートとを対応づけて第２テーブルに記憶し、
入力されたパケットの入力ポートが前記第２テーブルに記憶されている場合は、前記入力ポートに対応付けられている出力ポートからパケットを出力し、前記パケットの入力ポートが前記第２テーブルに記憶されていない場合は、前記第１テーブルに基づくパケット処理がされるよう制御する
ことを含むパケット伝送制御方法。
【請求項１３】
パケット伝送装置の制御装置が、
第１のフローの経路上にあるパケット伝送装置に対し、当該前記第１のフローのパケットの識別情報と、前記パケットに対するパケット処理とを対応づけて第１テーブルに記憶する指示を送信し、
前記第１のフローと異なる第２のフローの経路上にある少なくとも１つのパケット伝送装置に対し、前記第２のフローに割り当てられた入力ポートと出力ポートとの対応関係を第２テーブルへ記憶する指示を送信する
ことを含むパケット伝送制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット伝送装置，制御装置，及びパケット伝送制御方法に関する。
【背景技術】
【０００２】
Software Defined Networking（ＳＤＮ）は、ソフトウェアでネットワーク全体の挙動
を制御する技術である。ＳＤＮを実現する標準として、OpenFlow（オープンフロー）技術がある。OpenFlowネットワークは、データ転送機能を備える“OpenFlowスイッチ”（ＯＦ−ＳＷ：以下「スイッチ」と表記することもある）と、経路制御を司る“OpenFlowコントローラ”（ＯＦＣ：以下「コントローラ」と表記することもある）を備え、コントローラとスイッチとは“OpenFlowプロトコル”に従って、コミュニケーションを図る。
【０００３】
各スイッチは、自身に入力されたパケットに対する動作（アクション）を決定するための情報が記憶されたフローテーブルを備える。OpenFlowでは、パケットが持つヘッダ情報（イーサネットアドレス、VLANタグ、IPアドレス、TCP/UDPポート番号など）の任意の組
み合わせにより識別されるデータの集合体を“フロー”と呼ぶ。フローテーブルは、フローに係る情報が格納されたエントリ（以下、「フローエントリ」と呼ぶ）の集合体であり、各フローエントリは、 “マッチ条件（ルールとも呼ばれる）”，“アクション（Action）”，及び“統計情報（Statistics）”で構成される。
【０００４】
“マッチ条件”は、パケットの識別情報であり、パケットを特定するためのパラメータで形成される。“アクション”は、“マッチ条件”に合致したパケットに対する処理内容（動作：アクション）を示す情報である。“統計情報”は、マッチ条件に合致し、アクションに基づく処理が行われたパケット数のような統計情報を示す。スイッチは、フローテーブルを参照し、受信されたパケットが合致するマッチ条件を含むエントリを特定し、特定されたエントリで定義されたアクション（例えば、或るポートからパケットを出力する）を行うことができる。
【０００５】
フローに係る情報（フローエントリ）は、コントローラによって生成され、“OpenFlowプロトコル”を用いて各スイッチに送信される。各スイッチは、コントローラから受信したフローをフローテーブルに記憶する。このように、コントローラは、コントローラ自身の配下にある各スイッチが有するフローテーブルを一元管理する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−２４４４００号公報
【特許文献２】特開２００６−１９８６３号公報
【特許文献３】特開平１０−２４２９７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
近年、ＳＤＮやInternet of Things（ＩｏＴ）の進展に伴って、ネットワークのトラフィックパターンの多様化が進んでいる。例えば、HyperText Transfer Protocol（ＨＴＴ
Ｐ）トラフィックやセンサデータなどの、狭帯域（細粒度）のフローが存在する。一方、データセンタ（ＤＣ）間、或いはＤＣ内のバックアップに係るバルクデータ転送や、ストリーミングデータの転送など、広帯域での転送が要求されるフローが増大している。
【０００８】
広帯域での転送が要求されるフローを効率的にネットワークに収容する技術の一例とし
て、パケット網及び光コア網を含むマルチレイヤ網において、光伝送装置が光カットスルーを行う技術がある。しかし、光伝送装置は高価である。このため、光伝送装置よりも安価なパケット伝送装置を用いて、広帯域での転送が要求されるフローを広帯域で転送できることが望まれている。
【０００９】
しかし、パケット伝送装置としてＯＦ−ＳＷが用いられる場合には以下の問題があった。ＯＦ−ＳＷは、パケット毎にフローテーブルの参照（ルックアップ、すなわち、パケットと合致するマッチ条件を含むフローエントリの探索）を行い、パケットの出力ポートを決定する。広帯域での転送が要求されるフローでは、大容量のデータが転送されるので、大量のパケットに対するフローテーブルの参照が発生する。
【００１０】
ところが、フローテーブルの検索時間はパケットの転送に寄与しないので、フローテーブルの参照が頻繁に発生すると、パケット転送時間が長くなるおそれがあった。特に、フローテーブルに少なくない数のフローエントリが登録される場合には、パケットに合致するフローエントリの検出までに時間がかかることがある。この場合には、さらにパケット転送時間がかかるおそれがあった。
【００１１】
一側面において、本発明は、パケットの伝送時間を短縮可能な技術を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の一態様は、パケット伝送装置である。パケット伝送装置は、パケットが入力される複数の入力ポートと、パケットが出力される複数の出力ポートと、パケットの識別情報と、前記パケットに対するパケット処理が対応付けられて記憶されている第１テーブルと、入力ポートと出力ポートとが対応付けられて記憶されている第２テーブルと、入力されたパケットの入力ポートが前記第２テーブルに記憶されている場合は、前記入力ポートに対応付けられている出力ポートからパケットを出力し、前記パケットの入力ポートが前記第２テーブルに記憶されていない場合は、前記第１テーブルに基づくパケット処理がされるよう制御する制御部とを含む。。
【発明の効果】
【００１３】
本発明の一態様によれば、パケットの伝送時間を短縮することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施形態に係るネットワークシステムの構成例を示す。
【図２】図２は、広帯域フロー用のＬパスの設定方法の説明図である。
【図３】図３は、コントローラ及びスイッチのそれぞれとして使用可能な情報処理装置（コンピュータ）のハードウェア構成例を示す。
【図４】図４は、コントローラ及びスイッチの機能を模式的に示す。
【図５】図５は、ＬポートＤＢの説明図である。
【図６】図６は、Ｌポートテーブルのデータ構造例を示す。
【図７】図７は、スイッチの入出力処理部の処理例を示すフローチャートである。
【図８】図８は、Ｌパス設定時におけるコントローラの処理例を示すフローチャートである。
【図９】図９は、FlowModメッセージを受信したスイッチ（ＯＦ−ＳＷ）の処理例を示すフローチャートである。
【図１０】図１０は、Ｌポート設定メッセージ受信時におけるスイッチ（ＯＦ−ＳＷ）の処理例を示すフローチャートである。
【図１１】図１１は、変形例１の説明図である。
【図１２】図１２は、変形例２に係るコントローラ及びスイッチの構成例を示す。
【図１３】図１３は、変形例２におけるコントローラの処理例を示すフローチャートである。
【図１４】図１４は、削除指示メッセージを受信した場合におけるスイッチ２の処理例を示すフローチャートである。
【図１５】図１５は、変形例２の変形例を示すフローチャートである。
【図１６】図１６は、実施形態の変形例３に係るコントローラ及びスイッチの構成例を示す。
【図１７】図１７は、変形例３におけるコントローラの処理例を示すフローチャートである。
【図１８】図１８は、変形例３におけるスイッチの処理例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、図面を参照して、パケット伝送装置，制御装置，及びパケット伝送制御方法の実施形態について説明する。実施形態の構成は例示であり、実施形態の構成に限定されない。
【００１６】
実施形態に係るパケット伝送装置は、パケット伝送装置は、パケットが入力される複数の入力ポートと、パケットが出力される複数の出力ポートと、パケットの識別情報と、前記パケットに対するパケット処理が対応付けられて記憶されている第１テーブルと、入力ポートと出力ポートとが対応付けられて記憶されている第２テーブルと、入力されたパケットの入力ポートが前記第２テーブルに記憶されている場合は、前記入力ポートに対応付けられている出力ポートからパケットを出力し、前記パケットの入力ポートが前記第２テーブルに記憶されていない場合は、前記第１テーブルに基づくパケット処理がされるよう制御する制御部とを含む。
【００１７】
実施形態に係るパケット伝送装置は、例えば、制御装置によって制御される。制御装置は、送信部を含む。送信部は、第１のフローの経路上にあるパケット伝送装置に対し、前記第１のフローのパケットの識別情報と、前記パケットに対するパケット処理とを対応づけて第１テーブルに記憶する指示を送信するとともに、前記第１のフローと異なる第２のフローの経路上にある少なくとも１つのパケット伝送装置に対し、前記第２の対象フローに割り当てられた入力ポートと出力ポートとの対応関係を第２テーブルへ記憶する指示を送信する。
【００１８】
但し、パケット伝送装置に含まれる第１テーブル及び第２テーブルへの記憶内容（登録内容）が、制御装置から送信されるケース以外に、パケット伝送装置に直接入力したり、記憶内容が記憶された記憶装置をパケット伝送装置に接続したりすることで行われることはあり得る。
【００１９】
＜ネットワーク構成＞
実施形態では、ＳＤＮネットワークシステムの一例として、OpenFlowネットワークシステムについて説明する。但し、実施形態に係る構成は、OpenFlow以外のＳＤＮネットワークに適用し得る。
【００２０】
図１は、実施形態に係るネットワークシステムの構成例を示す。図１において、ネットワークシステムは、コントローラ（ＯＦＣ）１と、コントローラ１と接続され、コントローラ１によって制御される複数のスイッチ（ＯＦ−ＳＷ）２とを含む。但し、図１では、コントローラ１と各スイッチ２との通信線は、破線で図示している。コントローラ１は、「パケット伝送装置の制御装置」の一例であり、複数のスイッチ２は、「複数のパケット伝送装置」の一例である。
【００２１】
図１に示す例では、複数のスイッチ２として、スイッチＡ〜Ｈが例示されている。各スイッチ２は、パケットの送信又は受信に使用される複数のポートを有している。複数のポートは、「複数の入力ポート」と「複数の出力ポート」との一例である。図１の例では、スイッチＡは、５つのポート（ポート１〜５）を有し、スイッチＢ〜Ｆのそれぞれは、４つのポート（ポート１〜４）を有し、スイッチＧ及びスイッチＨは、それぞれ２つのポート（ポート１，２）を有している。但し、各スイッチ２が有するポートの数は、適宜設定可能である。
【００２２】
スイッチＡのポート１，ポート２，ポート３には、ホスト１，ホスト２，ホスト３が接続されている。スイッチＡのポート４は、スイッチＥのポート１に接続されている。スイッチＡのポート５は、スイッチＢのポート３に接続されている。スイッチＢのポート１はホスト４に接続されており、スイッチＢのポート２はホスト５に接続されている。スイッチＢのポート４は、スイッチＥのポート２に接続されている。
【００２３】
各スイッチ２が有する各ポートは、以下のようにして、スイッチ２又はホストと接続されている。ホストは、パケットを送受信する端末である。図１の例では、９つのホスト１〜９が例示されている。
【００２４】
スイッチＣのポート１は、ホスト６に接続されており、スイッチＣのポート２は、ホスト７に接続されている。スイッチＣのポート３は、スイッチＦのポート１に接続されており、スイッチＣのポート４は、スイッチＤのポート３に接続されている。スイッチＤのポート１は、ホスト８と接続されており、スイッチＤのポート２は、ホスト９と接続されている。スイッチＤのポート４は、スイッチＦのポート２と接続されている。
【００２５】
スイッチＥのポート３は、スイッチＧのポート１に接続されており、スイッチＥのポート４は、スイッチＨのポート１に接続されている。スイッチＦのポート３は、スイッチＧのポート２に接続されており、スイッチＦのポート４は、スイッチＨのポート２に接続されている。
【００２６】
ＯＦＣ１は、複数のスイッチ２（スイッチＡ〜Ｈ）で形成されるネットワークに対し、ホスト間でパケットを転送するためのパス（経路）を設定することができる。スイッチ２（スイッチＡ〜Ｈのそれぞれ）は、フローエントリが登録されるフローテーブルを備える。フローエントリは、パケットの識別情報である「マッチ条件」と、マッチ条件に合致するパケットに対する動作（アクション）を定義した「アクション」とを含む。マッチ条件は、「パケットの識別情報」の一例であり、アクションは「アクション情報」の一例である。
【００２７】
パケットの識別情報として使用可能なパラメータ（値）として、例えば、以下のパラメータが使用可能である。「マッチ条件」として、以下に説明する複数のパラメータの何れか１つ、或いは２以上のパラメータの組み合わせが適用される。
・“Switch Port (Ingress Port)：受信（入力）ポート”，
・“MAC src：送信元ＭＡＣ（Media Access Control）アドレス”
・“MAC dst：宛先ＭＡＣアドレス”，
・“Eth type:プロトコル種別”，
・“ＶＬＡＮ−ＩＤ”，
・“VLAN Priority: ＶＬＡＮ  ＰＣＰ(Priority Code Point)値”，
・“IP src：送信元ＩＰアドレス”，
・“IP dst:宛先ＩＰアドレス”，
・“IP Protocol number:プロトコル番号”，
・“IP ToS bits：ＴｏＳ（Type of Service）値”
・“Transport src port:送信元ポート番号”，
・“Transport dst port:宛先ポート番号”
このように、パラメータは、パケットに含まれた情報（アドレス情報，仮想ＬＡＮの識別子、プロトコルタイプなど）を含む。さらにパラメータは、パケットの入力ポートなどのパケットに含まれていない情報を含み得る。
【００２８】
また、「アクション」は、例えば、以下のようなアクションの定義を含む。
・“ALL：他の全ポートへ転送”，
・“CONTROLLER:コントローラへ転送”，
・“LOCAL:特定の１ポートへ転送”
・“TABLE：フローテーブルのアクションを実行”，
・“IN_PORT：入力ポートへ送信（入力ポートから出力）”
【００２９】
「アクション」には、複数のアクションを定義することができる。また、「アクション」の定義がないときには、“Drop：パケットの廃棄”が行われるようにしても良い。フローエントリは、統計情報を含むことができる。統計情報として、或るマッチ条件に合致するパケット数やパケット量がカウントされる。このような統計情報は、アクションを実行するための条件として使用することができる。また、統計情報は、コントローラ１へ送信され、コントローラ１によるスイッチ２の制御に使用される。「アクション」は、「パケットに対するパケット処理」の一例である。
【００３０】
コントローラ１は、各スイッチ２向けのフローエントリを生成し、各スイッチ２へ送る。スイッチ２は、コントローラ１から提供されたフローエントリをフローテーブルに登録する。スイッチ２は、パケットが受信されると、フローテーブルを参照し、受信されたパケットと合致する「マッチ条件」を含むフローエントリを特定し、特定したフローエントリ中の「アクション」によって定義された動作を行う。「アクション」が、例えば、或るポートからのパケットの出力を示す場合、パケットは、或るポートから送信される。
【００３１】
図２（Ａ）は、パスの設定の一例を示す。ホスト２からホスト６へパケットを転送するために、スイッチＡ−スイッチＥ−スイッチＧ−スイッチＦ−スイッチＣを辿るパスを設定する場合を仮定する。
【００３２】
コントローラ１は、上記パスを辿ってパケットがホスト２からホスト６へ転送されるように、スイッチＡ，スイッチＥ，スイッチＧ，スイッチＦ及びスイッチＣ向けのフローエントリを作成する。フローエントリは、コントローラ１からスイッチＡ，スイッチＥ，スイッチＧ，スイッチＦ及びスイッチＣに送信される。
【００３３】
スイッチＡ，スイッチＥ，スイッチＧ，スイッチＦ及びスイッチＣは、コントローラ１から受信したフローエントリをフローテーブルに登録する。例えば、スイッチＡ，スイッチＥ，スイッチＧ，スイッチＦで登録されるフローエントリのマッチ条件として、ホスト２から送信されたパケットを検出するための共通の「マッチ条件」が定義される。但し、各スイッチ２でホスト２からのパケットを検出できる限り、異なるマッチ条件を定義可能である。
【００３４】
一方、アクションとして、例えば、スイッチＡのフローエントリでは、スイッチＡのポート４からのパケット出力が定義される。スイッチＥのフローエントリでは、アクションとして、スイッチＥのポート３からのパケット出力が定義される。スイッチＧのフローエントリでは、スイッチＧのポート２からのパケット出力が定義される。スイッチＦのフローエントリでは、アクションとして、スイッチＦのポート１からのパケット出力が定義さ
れる。スイッチＣのフローエントリでは、アクションとして、スイッチＣのポート１からのパケット出力が定義される。
【００３５】
これによって、ホスト２から送信されたパケットは、スイッチＡ，スイッチＥ，スイッチＧ，スイッチＦ及びスイッチＣを経てホスト６で受信される。なお、上記経路でホスト６からホスト２へパケットを送信する場合には、ホスト６からホスト２へパケットを送信するためのフローエントリも、スイッチＡ，スイッチＥ，スイッチＧ，スイッチＦ及びスイッチＣに登録される。
【００３６】
実施形態では、広帯域でのパケット伝送が要求されたフロー（広帯域フロー）が「対象フロー」として扱われる。広帯域フローは、例えば、データセンタのバルクデータやストリーミングデータのような広帯域の回線乃至環境での伝送が好ましい、又は要求されるデータのフローである。換言すれば、広帯域フローは、広帯域フロー以外のフロー（通常のフローと呼ぶ）の通信速度より速い通信速度でのパケット伝送が要求されたフローである。対象フロー（広帯域フロー）は、「第２のフロー」の一例であり、対象フロー以外のフロー（通常フロー）は、「第１のフロー」の一例である。
【００３７】
実施形態では対象のフローに関して広帯域での伝送が要求された場合に、対象フロー以外のフローに対する通信速度より速い通信速度で対象フローのパケットを伝送するためのパス（Limited  Path：LPATH（Ｌパス）と呼ぶ）を設定する。対象フローは、新規に発生するフローであっても良く、既存のフローであっても良い。すなわち、広帯域での伝送要求は、新規のフロー発生に合わせて発生する場合と、既存のフローに関して発生する場合とがある。また、Ｌパスは、対象フローのルート上にある全てのスイッチ２を対象として設定されてもよく、複数のスイッチ２の少なくとも１つを対象として設定されても良い。
【００３８】
例えば、図２（Ｂ）に示すように、ホスト３からホスト７へのフローが新規に発生し、当該フローを対象フローとする広帯域でのパケットの伝送要求が発生したと仮定する。この場合、例えば、対象フローの経路（ルート）の全体に亘って以下のようなＬパスが設定される。
（ホスト３からホスト７へのＬパス）
ホスト３→スイッチＡのポート３→スイッチＡのポート４→スイッチＥのポート１→スイッチＥのポート３→スイッチＧのポート１→スイッチＧのポート２→スイッチＦのポート２→スイッチＦのポート１→スイッチＣのポート３→スイッチＣのポート２→ホスト７
【００３９】
Ｌパスの設定にあたり、コントローラ１は、対象フローの経路上にある各スイッチ２に関して対象フローの入力ポート及び出力ポートを割り当てる。このとき、Ｌパスのルート上にあるスイッチ２については、対象フローに割り当てられた入力ポート及び出力ポートは、対象フローの専有に設定される。換言すれば、コントローラ１は、Ｌパス上のスイッチにおいて、対象フローに割り当てられた入出力ポートを、対象フロー以外のフロー（通常フロー）に割り当てない。このように、Ｌパスが経由するポート（対象フローに専有されるポート。Ｌポートと呼ぶ）は、通常フローの送受信に使用されない。Ｌパスの入出力ポートが対象フローに専有されることによって、対象フローに割り当てる帯域が確保される。
【００４０】
実施形態では入出力ポートが対象フローに専有される場合について説明する。但し、入出力ポートの専有を要しない場合もあり得る。例えば、対象のフローに対して所望の帯域が確保される場合には、対象のフロー以外のフローと入力ポートと出力ポートとの少なくとも一方を共有する場合もあり得る。
【００４１】
図２（Ｂ）の例では、スイッチＡのポート３及びポート４は、Ｌパスの入力ポート及び
出力ポートとして使用される。スイッチＥのポート１及びポート３，スイッチＧのポート１及びポート２，スイッチＦのポート３及びポート１，スイッチＣのポート３及びポート２も同様である。
【００４２】
実施形態では、Ｌパスの設定時に、入出力ポートの専有状態を確保する。Ｌポートを経由する通常フローがある場合、当該通常パスのルートは、Ｌポート以外のポートを経由するように変更される。すなわち、通常パスは、Ｌパスのルート以外のルートに退避する。図２（Ｂ）の例では、ホスト２からホスト６へのルートが、Ｌパスを経由しないように以下のように変更される。
（ホスト２からホスト６への通常パス（退避ルート））
ホスト２→スイッチＡのポート２→スイッチＡのポート５→スイッチＢのポート３→スイッチＢのポート４→スイッチＥのポート２→スイッチＥのポート４→スイッチＨのポート１→スイッチＨのポート２→スイッチＦのポート４→スイッチＦのポート２→スイッチＤのポート４→スイッチＤのポート３→スイッチＣのポート４→スイッチＣのポート１→ホスト６
【００４３】
スイッチ２において、対象フローにより専有される入力ポート及び出力ポートを示したエントリが、フローテーブルと異なるテーブル（Ｌポートテーブルと呼ぶ）に登録される。Ｌポートテーブルに登録された入力ポートで受信されたパケットは、フローテーブルの参照なく、上記入力ポートに関連づけられた出力ポートから出力される。このような、フローテーブルの参照回避を「カットスルー」と呼ぶ。Ｌポートテーブルは、パケットの出力ポートの決定にあたり、フローテーブル（第１テーブルの一例）に優先して参照される第２のテーブルの一例である。対象フロー以外のフロー（通常フロー）のパケットに関する出力ポートの決定は、フローテーブルの参照によって行われる。
【００４４】
フローテーブルの参照回避によって、スイッチ２内における対象フローのパケットの伝送時間を短縮することができる。すなわち、対象フローに対する通信速度を、フローテーブルを参照する通常フローよりも上げることができる。さらに、入出力ポートの専有によって、他のフローが排除されることで、対象フローの処理量（伝送量）を増やすことができる。これによって、広帯域フローのパケットを、スイッチ（ＯＦ−ＳＷ）２を用いて効率的に転送できる。換言すれば、ＯＦ−ＳＷで、粒度の小さいデータのフローと、これより粒度が大きいデータのフローとを収容可能となる。以下、実施形態の詳細について説明する。
【００４５】
＜情報処理装置＞
図３は、コントローラ１及びスイッチ２のそれぞれとして使用可能な情報処理装置（コンピュータ）１０のハードウェア構成例を示す。情報処理装置１０として、例えば、パーソナルコンピュータ（ＰＣ），ワークステーション（ＷＳ）のような汎用コンピュータを適用できる。或いは、サーバマシンのような専用のコンピュータを適用することもできる。但し、上述したＰＣ，ＷＳ，サーバマシン以外のコンピュータを用いる場合もある。  
【００４６】
図３に示すように、情報処理装置１０は、例えば、バスを介して相互に接続された、Central Processing Unit（ＣＰＵ）１１と、メモリ１２と、出力装置１３と、入力装置１
４と、通信インタフェース（通信ＩＦ）１５とを含む。ＣＰＵ１１は、「制御部」、「制御装置」の一例であり、メモリ１２は、「記憶装置」、「記憶部」、「記憶媒体」の一例である。
【００４７】
メモリ１２は、主記憶装置と補助記憶装置とを含む。主記憶装置は、プログラムの展開領域，ＣＰＵ１１の作業領域，データやプログラムの記憶領域又はバッファ領域として使用される。主記憶装置は、例えばRandom Access Memory（ＲＡＭ），或いはＲＡＭとRead
Only Memory（ＲＯＭ）との組み合わせで形成される。
【００４８】
補助記憶装置は、例えば、ハードディスクドライブ（ＨＤＤ），Solid State Drive（
ＳＳＤ），フラッシュメモリ，Electrically Erasable Programmable Read-Only Memory
（ＥＥＰＲＯＭ）などの不揮発性記憶媒体で形成される。補助記憶装置は、データやプログラムの記憶領域として使用される。
【００４９】
出力装置１３は、データや情報を出力する。出力装置１３は、例えば、ディスプレイ，プリンタなどである。入力装置１４は、情報やデータの入力に使用される。入力装置１４は、例えば、キー，ボタン，マウス等のポインティングデバイス，タッチパネルなどである。
【００５０】
通信ＩＦ１５は、ネットワークに接続され、他の通信装置とデータを送受信するインタフェース回路である。通信ＩＦ１５として、例えば、Local Area Network（ＬＡＮ）カードやネットワークインタフェースカード（ＮＩＣ）と呼ばれる通信インタフェースカードが適用される。
【００５１】
ＣＰＵ１１は、プロセッサの一例であり、メモリ１２中の主記憶装置及び補助記憶装置の少なくとも一方に記憶されたプログラムを主記憶装置にロードして実行する。これによって、ＣＰＵ１１は、情報処理装置１０をコントローラ１、或いはスイッチ２として動作させる。
【００５２】
ＣＰＵ１１は、ＭＰＵ（Microprocessor）、プロセッサとも呼ばれる。ＣＰＵ１１は、単一のプロセッサに限定される訳ではなく、マルチプロセッサ構成であってもよい。また、単一のソケットで接続される単一のＣＰＵがマルチコア構成を有していても良い。ＣＰＵ１１で行われる処理の少なくとも一部は、ＣＰＵ以外のプロセッサ、例えば、Digital Signal Processor(DSP)、Graphics Processing Unit（GPU）、数値演算プロセッサ、ベクトルプロセッサ、画像処理プロセッサ等の専用プロセッサで行われても良い。また、ＣＰＵ１１で行われる処理の少なくとも一部は、集積回路（ＩＣ）、その他のディジタル回路で行われても良い。また、集積回路やディジタル回路はアナログ回路を含んでいても良い。集積回路は、ＬＳＩ，Application Specific Integrated Circuit（ASIC），プログラ
マブルロジックデバイス（ＰＬＤ）を含む。ＰＬＤは、例えば、Field-Programmable Gate Array(FPGA)を含む。ＣＰＵ１１で行われる処理の少なくとも一部は、プロセッサと集
積回路との組み合わせにより実行されても良い。組み合わせは、例えば、マイクロコントローラ（ＭＣＵ），ＳｏＣ（System-on-a-chip），システムＬＳＩ，チップセットなどと呼ばれる。
【００５３】
＜コントローラ及びスイッチの構成＞
図４は、コントローラ（ＯＦＣ）１及びスイッチ（ＯＦ−ＳＷ）２が有する機能を模式的に示す図である。図３に示した情報処理装置１０は、ＣＰＵ１１がコントローラ１用のプログラムを実行することによって、図４に示す構成要素を含む装置（コントローラ１）として動作することができる。また、情報処理装置１０は、ＣＰＵ１１がスイッチ２用のプログラムを実行することによって、図４に示す構成要素を含む装置（スイッチ２）として動作することができる。
【００５４】
図４において、コントローラ１は、経路計算部３１，フローエントリ管理部３２，メッセージ送受信部３３，フロースケジューラ３４を含む。また、コントローラ１は、フローテーブル３５，ネットワークデータベース（ＮＷ  ＤＢ）３６，ＬポートＤＢ３７を含む。フロースケジューラ３４は、Ｌパス要求の受付部（LPATH要求受付部）３８と、経路処
理部３９とを含む。
【００５５】
本実施形態では、情報処理装置１０のＣＰＵ１１が、プログラムの実行によって、経路計算部３１，フローエントリ管理部３２，メッセージ送受信部３３，フロースケジューラ３４として動作する。フローテーブル３５，ＮＷ  ＤＢ３６，ＬポートＤＢ３７は、メモリ１２上に作成される。
【００５６】
ＮＷ  ＤＢ３６は、ネットワーク構成に関する情報を記憶している。例えば、ＮＷ  ＤＢ３６は、ネットワークを形成するスイッチ２（スイッチＡ〜Ｈ）の情報と、各スイッチ２が有する複数のポートの情報と、ネットワークに設定されている通常パスのルート（使用されているポート）を示す情報を記憶する。
【００５７】
また、ＮＷ  ＤＢ３６は、各ポートで送受信される、単位時間当たりのパケット量やパケット数を記憶することもできる。パケット数やパケット量は、スイッチ２の負荷を示す情報として使用できる。但し、スイッチ２の負荷を示す情報として、上記したパケット数やパケット量以外の情報を使用しても良い。また、ＮＷ  ＤＢ３６は、Ｌパスが設定された場合における通常パスの退避ルートの情報を予め記憶しておくこともできる。
【００５８】
経路計算部３１は、例えば、入力装置１４を用いて入力されたパケットを送受信するホストの指定情報と、ＮＷ  ＤＢ３６に記憶されたネットワークの構成情報とを用いて、ホスト間の経路を計算する。例えば、ホスト３とホスト６とが指定された場合に、経路計算部３１は、図２を用いて説明したような通常パスのルートを計算する。
【００５９】
フローエントリ管理部３２は、経路計算部３１によって算出されたルートでパケットが転送されるためのフローエントリを生成する。このとき、フローエントリ管理部３２は、ルート上にある各スイッチ２向けのフローエントリを作成する。作成されたフローエントリは、フローテーブル３５に記憶されて一元管理される。また、作成されたフローエントリは、所定のOpenFlowメッセージ(ＯＦメッセージ)に含まれて、メッセージ送受信部３３から対応するスイッチ２へ送信される。メッセージ送受信部３３は、OpenFlowのプロトコルに従い、各スイッチ２との間でＯＦメッセージを送受信する。
【００６０】
フロースケジューラ３４は、Ｌパス要求受付部３８と、経路処理部３９とを含む。Ｌパス要求の受付部３８は、Ｌパスの設定要求（Ｌパス要求）を受け付ける。ユーザが新規に広帯域トラフィックを要求してくる場合、または既存トラフィックが途中から広帯域となった場合、受付部３８は、Ｌパス要求を受付ける。Ｌパス要求は、例えば、入力装置１４から入力される。あるいは、他の通信装置から受信する場合もある。メッセージ送受信部３３は、「送信部」の一例であり、フロースケジューラ３４は、「制御部」の一例である。
【００６１】
経路処理部３９は、ＮＷ  ＤＢ３６及びＬポートＤＢ３７に記憶された情報を用いて、Ｌパスのルートの計算、Ｌパスの設定に伴い退避させる通常パスの代替ルートの計算、計算結果に応じたスイッチ２向けのフローエントリの生成、などを行う。
【００６２】
図５は、ＬポートＤＢ３７の説明図である。ＬポートＤＢ３７は、Ｌパス上にあるスイッチ（ＯＦ−ＳＷ）２と、スイッチ２が備えるＬポートとの対応関係を示す情報を記憶する。例えば、ホスト３からホスト７へ、図２を用いて説明した経路のＬパスが設定される場合、ＬポートＤＢ３７の登録内容は、図５に示す内容となる。
【００６３】
図４に戻って、スイッチ（ＯＦ−ＳＷ）２は、メッセージ送受信部４１と、パケット処理部４２と、入出力処理部４３とを含む。パケット処理部４２は、フローテーブル４４を含み、入出力処理部４３は、Ｌポートテーブル４５を含む。
【００６４】
実施形態では、ＣＰＵ１１が、メッセージ送受信部４１，パケット処理部４２，及び入出力処理部４３として動作する例について説明する。但し、メッセージ送受信部４１，パケット処理部４２，及び入出力処理部４３が行う処理の少なくとも一部は、ＣＰＵ１１以外のプロセッサ，集積回路、ディジタル回路によって行われても良い。例えば、入出力処理部４３の処理は集積回路やネットワークプロセッサ（ＮＷＰ）のような専用のプロセッサを用いて行われ、パケット処理部４２の処理は、ＣＰＵ１１によって行われるようにしても良い。
【００６５】
フローテーブル４４は、１以上のフローエントリを含む。フローテーブル４４には、コントローラ１から供給されたフローエントリが登録される。フローエントリの追加、変更及び削除は、コントローラ１によって制御される。フローテーブル４４は、「パケットの識別情報と、前記パケットに対するパケット処理が対応づけられて記憶されている第１テーブル」の一例である。フローエントリは「第１のエントリ」の一例である。入出力処理部４３は、「制御部」の一例であり、パケット処理部４２は、「処理部」の一例である。
【００６６】
図６は、Ｌポートテーブル４５のデータ構造例を示す。Ｌポートテーブル４５には、対象フローに割り当てられた入力ポートと出力ポートとの対応関係を示す情報（入力ポート及び出力ポートの識別子）を含むエントリが登録される。
【００６７】
図６の例は、図５に示したＬパスが設定される場合において，スイッチＡのＬポートテーブル４５に登録される情報の例を示す。図６では、スイッチＡのポート３（Ｐ３）とポート４（Ｐ４）とがホスト３−ホスト７間のＬパスの入力ポート及び出力ポートとして割り当てられていることを示す。なお、図６の登録例は、ホスト３とホスト７との間に双方向のＬパスが設定されている例を示し、順方向（ホスト３→ホスト７（Ｐ３→Ｐ４）のエントリと、逆方向（ホスト７→ホスト３（Ｐ４→Ｐ３））のエントリとが登録されている。
【００６８】
なお、Ｌポートテーブル４５に登録されるポートの識別子（ポート番号）は、複数の物理ポートを論理的に集約（アグリゲート）した論理ポートの識別子であってもよい。複数の物理ポートを一つの回線として用い、１つのフローのパケットを複数のポートを用いて転送する場合があるからである。Ｌポートテーブル４５は、「入力ポートと出力ポートとが対応づけられて記憶されている第２テーブル」の一例であり、Ｌポートテーブル４５に登録されるエントリは、「第２のエントリ」の一例である。
【００６９】
メッセージ送受信部４１は、OpenFlowのプロトコルに従い、コントローラ（ＯＦＣ）１との間でＯＦメッセージを送受信する。
【００７０】
パケット処理部４２は、入出力処理部４３からパケットを受け取り、フローテーブル４４を参照して、パケットと合致するマッチ条件を含むフローエントリを探索する。パケット処理部４２は、対応するフローエントリが検出（ヒット）すると、検出されたフローエントリ中の「アクション」に従った動作（アクション）を行う。
【００７１】
アクションは、「指定ポート（特定の１ポート）からパケットを出力する」との定義を含む。パケット処理部４２は、アクションで指定されたポートの情報とともに、パケットを入出力処理部４３へ送る。このようにパケット処理部４２は、フローテーブル４４の参照によって、パケットを出力するポートを決定する。
【００７２】
入出力処理部４３は、複数のポートを有する。複数のポートは、「複数の入力ポート」及び「複数の出力ポート」の一例である。スイッチ２が備える複数のポート間の接続（折
り返しを含む）を行い、各ポートから入力されたパケットを、出力先のポートに接続し、パケットを出力先のポートから出力させる。
【００７３】
図７は、入出力処理部４３の処理例を示すフローチャートである。図７の処理部は、各ポートからパケットが入力されることを契機に開始される。０１では、入出力処理部４３は、パケットの入力ポート（入力ポートと一致するエントリ）がＬポートテーブル４５に登録されているか否かを判定する。入力ポートがＬポートテーブル４５に登録されている場合には、０２に処理が進み、そうでない場合には、処理が０３に進む。
【００７４】
０２では、入出力処理部４３は、Ｌポートテーブル４５で指定された出力ポートからパケットを出力する。すなわち、入出力処理部４３は、入力ポートと一致するエントリに含まれた出力ポートにパケットを接続し、当該出力ポートからパケットを出力する。
【００７５】
０３では、入出力処理部４３は、パケットの出力ポートをパケット処理部４２に問い合わせる。例えば、入出力処理部４３は、パケットをパケット処理部４２に転送する。これにより、パケット処理部４２は、フローテーブル４４の参照によって、パケットの出力ポートを決定する。決定された出力ポートを示す情報及びパケットは、入出力処理部４３に渡される。
【００７６】
上記処理は、以下のように変形できる。例えば、パケットは入出力処理部４３で保持しておき、入出力処理部４３は、パケットのマッチ条件と照合する情報をパケット処理部４２へ送り、パケット処理部４２から、出力ポートの決定結果（出力ポートの指定）を受け取る。この場合も、入出力処理部４３は、フローテーブル４４の参照によって得られた出力ポートの指定情報を取得することができる。
【００７７】
０４では、入出力処理部４３は、パケット処理部４２から指定された出力ポートからパケットを出力する。このように、入出力処理部４３は、Ｌポートテーブル４５を参照し、パケットの入力ポートを含むエントリがＬポートテーブルに登録されていれば、パケット処理部４２に対するパケットの出力ポートの問い合わせを行わない。入出力処理部４３は、Ｌポートテーブル４５において入力ポートと関連づけられた出力ポートからパケットを出力する。すなわち、フローテーブル４４の参照（パケット処理部４２の処理）がカットスルーされる。
【００７８】
これに対し、Ｌポートテーブル４５に登録された入力ポート及び出力ポート以外のポート（通常パスのポート）から入力されるパケットについては、フローテーブル４４の参照によって出力ポートが決定される。入出力処理部４３は、決定された（指定された）出力ポートからパケットを出力する。
【００７９】
図４の例では、入出力処理部４３は、ポート１〜６（Ｐ１〜Ｐ６）と接続されており、ポート１（Ｐ１）とポート４（Ｐ４）、ポート２（Ｐ２）とポート６（Ｐ６）との組み合わせは、通常パスのパケット転送に使用される。このため、パケット処理部４２の処理（フローテーブル４４の参照）を経由している。これに対し、ポート３（Ｐ３）とポート５（Ｐ５）との組み合わせは、専有ポート（Ｌポート）であるので、パケット処理部４２の処理がカットスルーされる。
【００８０】
＜動作例＞
次に、実施形態の動作例について説明する。一例として、図２の左側に示したような、ホスト２からホスト６への通常パスが設定されている状態において、Ｌパス要求に応じて図２の右側に示すようなＬパスを設定する場合の動作及び処理を説明する。
【００８１】
図８は、Ｌパス設定時におけるコントローラ１の処理例を示すフローチャートである。図８の処理は、例えば、Ｌパス要求の受付部３８がＬパス要求を受け付けることによって開始される。実施形態では、ホスト３からホスト７へのＬパスの新規設定が要求された場合を例として説明する。
【００８２】
１１の処理では、フロースケジューラ３４は、Ｌポートを通らない経路（ルート）があるか否かを判定する。経路がないと判定された場合には、図８の処理が終了する。この場合Ｌパスは設定されない。これに対し、経路があると判定された場合には、処理が１２へ進む。
【００８３】
１１の処理において、フロースケジューラ３４は、ＬポートＤＢ３７を参照し、Ｌポートを通らないルートの有無をチェックする。図２の例では、この時点で、ＬポートＤＢ３７にＬポートは登録されていない。したがって、フロースケジューラは、Ｌポートを通らない経路（ルート）があると判定し、処理が１２へ進む。
【００８４】
１２の処理では、フロースケジューラ３４は、経路処理部３９を用いて、Ｌパスの経路（ルート）を決定する。例えば、ＮＷ  ＤＢ３６を参照して、図２を用いて説明したような経路（ルート）を決定することができる。或いは、既存の通常パス（ホスト２→ホスト６）のルートを用い、Ｌパスのルートを決定することができる。
【００８５】
１３の処理では、フロースケジューラ３４は、通常パスのフロー（通常フロー）を退避させるためのＬポートを通らない経路（ルート）があるか否かを判定する。１３の処理は、例えば、ＮＷ  ＤＢ３６に記憶されたネットワークの構成情報、或いは、退避路の情報を用いて判定される。図２の例では、図２の右側に示したようなホスト２からホスト６への退避ルート（迂回ルート）が見つかるので、１３の判定はＹｅｓとなる。退避ルートがない場合には、図８の処理が終了し、Ｌパスは設定されない。
【００８６】
１４の処理では、フロースケジューラ３４は、Ｌパス上を通常フローを退避させる。すなわち、フロースケジューラ３４は、通常フローのパケットを退避ルートで転送するためのフローエントリを含んだＯＦメッセージ（FlowModメッセージ）を生成し、対応するス
イッチ２へ送信する。ＯＦメッセージの送信は、メッセージ送受信部３３によって行われる。図２の例では、退避ルート上にあるスイッチＡ，スイッチＢ，スイッチＥ，スイッチＨ，スイッチＦ，スイッチＤ，スイッチＣに、ＯＦメッセージが送信される。
【００８７】
図９は、FlowModメッセージを受信したスイッチ（ＯＦ−ＳＷ）２の処理例を示すフロ
ーチャートである。FlowModメッセージは、メッセージ送受信部４１で受信され、パケッ
ト処理部４２に渡される。
【００８８】
パケット処理部４２は、FlowModメッセージに基づいて、フローテーブル４４を更新す
る（２１）。例えば、スイッチＡのパケット処理部４２は、ホスト２からのパケットがポート４ではなくポート５から出力されるように、FlowModメッセージ中の指示に従い、フ
ローテーブル４４のフローエントリを更新する。
【００８９】
また、スイッチＢのパケット処理部４２は、ホスト２からのパケットをポート４から出力するためのフローエントリをフローテーブル４４に追加する。このようにして、残りの退避ルート上の各スイッチ２でも、フローテーブル４４が更新される。
【００９０】
なお、各スイッチ２のフローテーブルの更新に伴って、コントローラ１のフローテーブル３５も同様に更新される。なお、必要に応じて、退避によって通常フローのルートから外れたスイッチ２（例えばスイッチＧ）に対し、通常フロー向けのフローエントリの削除
を指示するＯＦメッセージが送信されるようにしても良い。
【００９１】
図８の１５では、Ｌパスモードがオンに設定される。すなわち、フロースケジューラ３４は、Ｌパスのルート上にあるスイッチ２向けに、Ｌポートテーブル４５用のエントリ（第２のエントリと称する）を生成する。第２のエントリを含むメッセージ（Ｌポート設定メッセージ）は、Ｌパス上の各スイッチ２へ送信される。Ｌポート設定メッセージの送信は、例えば、メッセージ送受信部３３で行われる。
【００９２】
図１０は、Ｌポート設定メッセージ受信時におけるスイッチ２の処理例を示すフローチャートである。Ｌポート設定メッセージは、例えば、メッセージ送受信部４１で受信され、入出力処理部４３に渡される。
【００９３】
図１０の２２の処理において、入出力処理部４３は、Ｌポートテーブル４５にＬポート設定メッセージ中の第２のエントリを書き込む（登録する）。これによって、入出力処理部４３は、第２のエントリで指定された入力ポートから入力されたホスト３からのパケットを当該第２のエントリで指定された出力ポートから出力し、パケット処理部４２の処理をカットスルーする状態となる。
【００９４】
図８に戻って、１６の処理では、フロースケジューラ３４は、Ｌポートをデータベースに記録する。すなわち、フロースケジューラ３４は、Ｌパスの情報を、ＬポートＤＢ３７に登録する。これによって、ＬポートＤＢ３７には、図５に示したような内容が登録される。Ｌパスの情報は、新たなＬパス要求時に使用される。
【００９５】
なお、図８の処理では、１３及び１４の処理において、Ｌパスの設定により対象フロー以外のフローを退避ルートに退避させる。但し、既存のフローが存在しないルートにＬパスを設定する場合もあり得る。この場合、１３及び１４の処理は省略可能である。既存のフローが存在するか否かは、例えば、ＮＷ  ＤＢ３６に、既存のフローのルートを記憶しておき、Ｌパスのルートを１２の処理で決定したときに、既存のルートと重複する部分があるか否かを判定することによって行うことができる。
【００９６】
＜実施形態の効果＞
実施形態では、スイッチ２（パケット伝送装置）は、コントローラ１（制御装置）から供給される、通常フロー（第１のフロー）のフローエントリ（パケットの識別情報に対するパケット処理）をフローテーブル４４（第１テーブル）に登録する。また、スイッチ２は、広帯域フロー（対象フロー：第１のフローと異なる第２のフロー）のパケットの入力ポート及び出力ポートの対応関係を示す第２エントリをＬポートテーブル４５（第２テーブル）に登録する。
【００９７】
スイッチ２の入出力処理部４３は、第２エントリで特定される入力ポートによって受信される対象フローのパケットを当該第２エントリで特定する出力ポートから出力する。これによって、フローテーブル４４の参照（パケット処理部４２の処理）を回避（カットスルー）する。
【００９８】
フローテーブル４４の参照のカットスルー（回避）によって、スイッチ２内における対象フローのパケットに係る処理時間が短縮される。また、Ｌポートテーブル４５を用いた判定は、パケットの入力ポートがＬポートテーブル４５に登録されているかの判定であり、パケットが有するパラメータ（パケットのヘッダ情報）を参照しない。すなわち、入力ポートの判定は、通常のフローテーブルにおけるマッチ条件とパケットのマッチングよりも単純な処理である。このため、Ｌポートテーブル４５を用いた出力ポートの決定に要する時間は、フローテーブル４４の用いた出力ポート決定に要する時間より短くできる。
【００９９】
また、フローテーブル４４には、全ての通常パスに対するフローエントリが登録されるため、エントリ数が多数、或いは膨大となり、マッチ条件がパケットと合致するフローエントリの探索に時間がかかる場合がある。これに対し、Ｌポートテーブル４５は、通常パスより少ないＬパスについてのエントリが登録される。この点でも、出力ポートの決定に要する時間を短くできる。
【０１００】
これらによって、Ｌパスの回線速度を通常パスより速めることができる。スイッチ２におけるパケット転送時間を短くでき、広帯域フローのパケットを高速で転送することが可能となる。また、頻繁なフローテーブル４４のルックアップ（パケット処理部４２の処理）が回避されることで、スイッチ２の負荷を低減することができる。
【０１０１】
なお、広帯域フローのパケットについて、フローテーブルのルックアップ回数を減らす方法として、以下が考えられる。例えば、複数のパケットを纏めたフローテーブルの参照を行う方法（パケットバッチングと呼ばれる）が考えられる。或いは、パケットのMaximum Transmission Unit (ＭＴＵ)のサイズを大きくする（例えば１５００byteから９０００byteにする）方法が考えられる。実施形態で説明したフローテーブルの参照を回避する方法は、上記のフローテーブルのルックアップの回数を減らす方法よりも、スイッチ２におけるパケットの滞留時間を短くすることができる。
【０１０２】
また、Ｌパス設定時に、対象フローに専有される入力ポートと出力ポートとの少なくとも一方が対象フロー以外のフローのパケット転送に使用されている場合には、パケット処理部４２は、以下を行う。すなわち、パケット処理部４２は、対象フロー以外のフローを退避ルートで転送するためのフローテーブル更新を行う。
【０１０３】
すなわち、パケット処理部４２は、第２テーブルに対応関係が登録された入力ポート及び出力ポートの少なくとも一方が前記対象フロー以外のフローによって使用中である場合に、以下を行う。すなわち、パケット処理部４２は、対象フロー以外のフローのパケットが入力ポート及び出力ポート以外のポートを用いて転送されるように第１テーブルを更新する。
【０１０４】
このようにして、他のフローが退避ルートに退避されることで、所定フローによるＬポートの専有状態を確保する。対象フローがＬポートを専有し、対象フロー以外のフローに対する処理が排除されることで、対象フローに対するパケット処理の効率を高めることができる。
【０１０５】
なお、実施形態では、複数のスイッチ２の動作をコントローラ１が一元的に管理するために、各スイッチ２に対するフローエントリや第２のエントリの生成及び供給をコントローラ１が行っている。但し、各スイッチ２に供給されるフローエントリ及び第２のエントリは、コントローラ１以外の装置との通信や、フローエントリや第２のエントリを記憶した記憶媒体からの読み出し等によって各スイッチ２で取得されるようにしても良い。なお、第２のフローが広帯域フローである例について説明したが、広帯域フロー以外のフローが第２のフローとして扱われる場合もあり得る。
【０１０６】
＜変形例１＞
上述した例では、ホスト間における対象フローの経路の全てをＬパスに設定する例について説明した。但し、Ｌパスは、ホスト間の経路の一部に設定されても良い。例えば、図１１（Ａ）に示すように、ホスト２からホスト６へのパケットの通常フローと、ホスト３からホスト７への通常フローが存在する（図１１（Ａ）の矢印で示す経路参照）と仮定する。このとき、スイッチＧが高負荷状態であると仮定する。
【０１０７】
各スイッチ２は、自身の負荷状況を、定期的に、或いはコントローラ１からの要求に応じてコントローラ１へ送ることができる。コントローラ１は、各スイッチ２から報告される負荷状態に基づいて、各スイッチ２が高負荷か否かを判定する。コントローラ１は、スイッチＧが高負荷と判定すると以下の処理を行う。
【０１０８】
すなわち、コントローラ１は、ホスト３からホスト７へのフローに関して、スイッチＧのポート１とスイッチＧのポート２との間の経路をＬパスにする（スイッチＥとスイッチＧとの間、及びスイッチＧとスイッチＦとの間をＬパスにする）設定を行う。
【０１０９】
このとき、スイッチＧのポート１とポート２との間を、ホスト３からホスト７へのフローに専有させるため、ホスト２からホスト６へのフローのルートは、スイッチＥからスイッチＨへ進む退避ルートに変更される。この結果、ホスト３からホスト６へ転送されるパケットがスイッチＧを経由するのが回避される。これによって、スイッチＧの処理負荷が軽減される。
【０１１０】
このような、経路の一部をＬパスとする設定は、図８，図９及び図１０に示した処理で実行できる。具体的には、図８の１５の処理で、スイッチＧに、第２エントリを含むＬポート設定メッセージを送信し、スイッチＧがＬポートテーブル４５に第２エントリを登録することでなされる。
【０１１１】
＜変形例２＞
実施形態のコントローラ１及びスイッチ２は、以下のように変形できる。すなわち、Ｌパスは、Ｌパスの設定要求に応じて所定時間継続する一時的なパスとし、或るフローが長時間に亘ってスイッチ２のポートを専有しないようにしても良い。
【０１１２】
図１２は、変形例２に係るコントローラ１及びスイッチ２の構成例を示す。図１２に示すコントローラ１は、フロースケジューラ３４がタイマ５１をさらに含む点で、図４に示したコントローラ１と異なる。
【０１１３】
図１３は、変形例２におけるコントローラ１の処理例を示すフローチャートである。１１〜１６までの処理は、図８に示した処理と同じであるので説明を省略する。１７の処理で、フロースケジューラ３４は、タイマ５１をＯＮにして、所定期間（タイマ設定時間）の計時を開始する。
【０１１４】
１８の処理において、フロースケジューラ３４は、タイマ５１の満了、すなわちタイマ設定時間の経過を検出すると、カットスルーの解除処理を行う（１９の処理）。すなわち、フロースケジューラ３４は、Ｌポートテーブル４５の第２エントリの削除指示を含むメッセージを生成する。削除指示のメッセージは、メッセージ送受信部３３を介してスイッチ２へ送信される。
【０１１５】
図１４は、削除指示メッセージを受信した場合におけるスイッチ２の処理例を示すフローチャートである。図１４の３３の処理において、削除指示メッセージを受信した入出力処理部４３は、第２エントリに対応するフローエントリを生成する。このとき、削除が指示された第２エントリ中の「入力ポート」がフローエントリのマッチ条件に設定される。また、削除が指示された第２エントリ中の「出力ポートへのパケット出力」がフローエントリのアクションに設定される。フローエントリは、パケット処理部４２に与えられ、パケット処理部４２がフローエントリをフローテーブル４４に登録する。
【０１１６】
３４の処理では、入出力処理部４３は、削除対象の第２エントリをＬポートテーブル４
５から削除する。このとき、Ｌポートテーブル４５の登録エントリ数が零になる場合には、Ｌポートテーブル４５を削除しても良い。この場合、新たなＬパスの設定を契機に、Ｌポートテーブル４５が生成される。
【０１１７】
入出力処理部４３は、第２エントリを削除すると、第２エントリの削除完了を示すメッセージをコントローラ１へ送信する。また、パケット処理部４２は、フローテーブル４４の変更を示す（追加されたフローエントリを含む）ＯＦメッセージをコントローラ１へ送る。コントローラ１のフローエントリ管理部３２は、ＯＦメッセージ中のフローエントリをフローテーブル３５に登録し、スイッチ２との同期をとる。
【０１１８】
３６では、パケット処理部４２は、周期的に、例えば、単位時間の経過毎に、３３の処理で追加されたフローエントリを用いて転送されたパケットの数又は量（対象フローのパケット数又はパケット量）の計測結果を含むＯＦメッセージを生成する。ＯＦメッセージは、メッセージ送受信部４１を介してコントローラ１へ送信される。
【０１１９】
図１３に戻って、１９の処理が終了すると、２０の処理において、フロースケジューラ３４は、削除指示に係るＬポートの情報（Ｌパスの情報）をＬポートＤＢ３７から削除する。
【０１２０】
図１３の２１Ａの処理において、フロースケジューラ３４は、図１４の３６の処理でスイッチ２から送信された統計情報を参照し、パケット数又はパケット量が所定の閾値を超過するか否かを判定する（２２Ａの処理）。パケット数又はパケット量が所定の閾値を超過する場合、対象フロー（大容量のデータ転送）が継続していると判定される。これに対し、パケット数又はパケット量が閾値未満であれば、対象フロー（大容量のデータ転送）が終了していると判定される。
【０１２１】
パケット数又はパケット量が所定の閾値を超過する場合、フロースケジューラ３４は、Ｌパス要求が発行された場合と同様の処理、すなわち、１１以降の処理を行い、第２エントリを削除したルートについてＬパスを再設定する。
【０１２２】
以上説明したように、変形例２では、入出力処理部４３は、「所定時間の経過に応じて前記第２テーブルから前記入力ポート及び出力ポートの対応関係を削除」する処理を行う。また、入出力処理部４３は、パケット処理部４２は、「前記入力ポートに入力されるパケットを前記出力ポートから出力することを示すアクション情報を前記第１テーブルに登録ための処理」を行う。さらに、入出力処理部４３は、「当該アクション情報を用いて転送されるパケットの統計情報を制御装置に送信する処理」を行う。
【０１２３】
コントローラ１では、メッセージ送受信部３３が、「前記第２テーブルからの前記対応関係の削除指示を送信」する。また、フロースケジューラ３４（制御部）は、「前記対応関係で特定される出力ポートから出力されるパケットの統計情報を削除指示を受信したパケット伝送装置から受信」する。フロースケジューラ３４は、「パケットの統計情報に基づいて前記対象フローに係る入力ポートと出力ポートとの対応関係の送信を制御」する。
【０１２４】
これによって、変形例２では、コントローラ１は、タイマ５１の満了を契機に第２エントリを削除してカットスルーを解除し、入出力ポートが対象フロー以外のフローにも割り当て可能とする。その後、削除された第２エントリで特定されるルート上で閾値以上のデータ量のパケット転送が行われていると判定される場合に、Ｌパスの再設定を行い、大容量のデータ転送に合わせて通信速度を上昇させる（対象フローに対する広帯域化を図る）ことができる。
【０１２５】
なお、上記した変形例２の説明では、タイマ設定時間をコントローラ１が計時し、タイマ設定時間の満了を契機に削除指示を送信している。この構成に代えて、図１５に示すように、Ｌポートテーブル４５への第２エントリの登録（２２）を契機に、タイマ設定時間野の計時をスイッチ２で行い（図１５、３２の処理）、タイマ設定時間の経過後に、３３以降の処理が行われるようにしても良い。この場合、コントローラ１でのタイマ５１の計時及び削除指示メッセージの送信は省略可能である。
【０１２６】
＜変形例３＞
図１６は、実施形態の変形例３に係るコントローラ１及びスイッチ２の構成例を示す。図１６に示すように、変形例３に係るコントローラ１は、フロースケジューラ３４がさらにポート情報取得部５２を含む点で、変形例２（図１２）と異なる。一方、スイッチ２は、ポートを監視して、出力ポートから出力されるパケット量やパケット数を計測し、計測結果をコントローラ１へ送るポート監視部４６を備えている。
【０１２７】
変形例３では、スイッチ２は、Ｌポートテーブル４５に登録された入力ポートと出力ポートとの対応関係を用いたパケットの転送状況を示す情報をコントローラ１（制御装置）へ送信する。また、スイッチ２は、コントローラ１からの「前記転送状況に基づく指示に応じて前記対応関係を前記第２テーブルから削除する」処理を行う。
【０１２８】
また、変形例３では、フロースケジューラ３４（制御部）は、対象フローの経路上にあるスイッチ２（パケット伝送装置）のそれぞれから、対応関係を用いたパケットの転送状況を受信する。フロースケジューラ３４は、転送状況に基づいて、対象フローの経路上にあるスイッチ２（パケット伝送装置）のそれぞれに、対応関係をＬポートテーブル４５（第２テーブル）から削除する指示を供給する。
【０１２９】
具体的には、変形例３では、以下のような動作及び処理が行われる。図１７は、変形例３におけるコントローラ１の処理例を示すフローチャートである。図１８は、変形例３におけるスイッチ２の処理例を示すフローチャートである。図１７における１１〜１６の処理は、実施形態（図８）と同じであるので説明を省略する。
【０１３０】
スイッチ２では、Ｌポート設定メッセージを受信して第２エントリをＬポートテーブル４５に書き込むと、タイマ設定時間を計時する（３２Ａ）。タイマ設定時間が経過すると、ポート監視部４６がポートの統計情報（例えば、各ポートから出力される、単位時間当たりのパケット量やパケット数）をスイッチ２へ送信する（３７）。
【０１３１】
コントローラ１のフロースケジューラ３４は、ポート監視部４６からのポートの統計情報（ポート情報）を取得する（図１７の２３）。フロースケジューラ３４は、統計情報（パケット量又はパケット数）が所定の閾値を超過していない否か（或いは、所定範囲に低下しているか否か）を判定する（図１７の２４）。
【０１３２】
パケット量又はパケット数が閾値を超過していない（所定範囲に低下している）場合には、フロースケジューラ３４は、第２エントリの削除指示を生成し、対応するスイッチ２へ送信する（図１７の１９）。
【０１３３】
スイッチ２では、削除指示を受信すると（図１８の３８）、入出力処理部４３が、第２エントリがＬポートテーブル４５を削除し、削除が完了すると、スイッチ２へ完了報告が送信される（図１８の３９）。
【０１３４】
第２エントリの削除完了がスイッチ２から報告されると、フロースケジューラ３４は、ＬポートＤＢ３７から対応するエントリを削除する（図１７の２０）。なお、スイッチ２
におけるタイマ設定時間の計時は、第２エントリが削除されるまで、定期的に実行される。
【０１３５】
また、図１７及び図１８の処理では、スイッチ２がタイマ設定時間を計時している。但し、コントローラ１がタイマ設定時間を計時し、タイマ設定時間が満了すると、コントローラ１がスイッチ２に統計情報の送信を要求し、ポート監視部４６が要求に応じて統計情報を送信するようにしても良い。
【０１３６】
変形例３は、Ｌポートの設定（対象フローによるポートの専有）が維持されたままで、タイマ設定時間が経過する毎に、専有されたポートにおけるパケット量やパケット数が所定範囲に低下しているかが判定される。所定範囲に低下していると判定されることは、対象フローの終了を意味する。変形例３によれば、対象フローの終了を検出して、第２エントリをＬポートテーブル４５から削除して、ポートの専有状態を解除することができる。第２エントリの削除に応じて、第２実施形態と同様の３３〜３６の処理が行われるようにしても良い。以上説明した実施形態の構成は、適宜組み合わせることができる。
【符号の説明】
【０１３７】
１・・・コントローラ（ＯＦＣ）
２・・・スイッチ（ＯＦ−ＳＷ）
１０・・・情報処理装置（コンピュータ）
１１・・・ＣＰＵ
１２・・・メモリ
１５・・・通信インタフェース
３３，４１・・・メッセージ送信部
３４・・・フロースケジューラ
４２・・・パケット処理部
４３・・・入出力テーブル
４４・・・フローテーブル
４５・・・Ｌポートテーブル
【図１】
2017143344.tif 000003
【図２】
2017143344.tif 000004
【図３】
2017143344.tif 000005
【図４】
2017143344.tif 000006
【図５】
2017143344.tif 000007
【図６】
2017143344.tif 000008
【図７】
2017143344.tif 000009
【図８】
2017143344.tif 000010
【図９】
2017143344.tif 000011
【図１０】
2017143344.tif 000012
【図１１】
2017143344.tif 000013
【図１２】
2017143344.tif 000014
【図１３】
2017143344.tif 000015
【図１４】
2017143344.tif 000016
【図１５】
2017143344.tif 000017
【図１６】
2017143344.tif 000018
【図１７】
2017143344.tif 000019
【図１８】
2017143344.tif 000020