JP6424496B2 - パケット転送システム,及びパケット転送装置 - Google Patents

パケット転送システム,及びパケット転送装置 Download PDF

Info

Publication number
JP6424496B2
JP6424496B2 JP2014137863A JP2014137863A JP6424496B2 JP 6424496 B2 JP6424496 B2 JP 6424496B2 JP 2014137863 A JP2014137863 A JP 2014137863A JP 2014137863 A JP2014137863 A JP 2014137863A JP 6424496 B2 JP6424496 B2 JP 6424496B2
Authority
JP
Japan
Prior art keywords
packet
packets
message
buffer
packetin
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014137863A
Other languages
English (en)
Other versions
JP2016015687A (ja
Inventor
優 有松
優 有松
将樹 朴
将樹 朴
宏二郎 瀬戸
宏二郎 瀬戸
雅之 佐通
雅之 佐通
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014137863A priority Critical patent/JP6424496B2/ja
Publication of JP2016015687A publication Critical patent/JP2016015687A/ja
Application granted granted Critical
Publication of JP6424496B2 publication Critical patent/JP6424496B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

本開示は、パケット転送システム,及びパケット転送装置に関する。
近年、ネットワークの分野では、Software Defined Networking(SDN)が注目され
ている。SDNは、ソフトウェアでネットワーク全体の挙動を制御する技術である。SDNを実現する標準として、OpenFlow(オープンフロー)技術が注目されている。
OpenFlowネットワークは、データ転送機能を備える“OpenFlowスイッチ”(OFS:以下「スイッチ」と表記することもある)と、経路制御を司る“OpenFlowコントローラ”(OFC:以下「コントローラ」と表記することもある)を備え、コントローラとスイッチとは“OpenFlowプロトコル”に従って、コミュニケーションを図る。
各スイッチは、自身に入力されたパケットに対する動作(アクション)を決定するための情報が記憶されたフローテーブルを備える。フローテーブルは、“マッチ条件(パケットの識別条件)”及び“アクション(Action:パケットの処理内容)”を含んだエントリ(フローエントリ)の集合体である。
フローエントリは、コントローラによって作成され、“OpenFlowプロトコル”を用いて各スイッチに送信される。各スイッチは、コントローラから受信したフローエントリをフローテーブルに記憶する。このように、コントローラは、コントローラ自身の配下にある各スイッチが有するフローテーブルを一元管理する。
各スイッチは、受信されたパケットに対応するフローエントリが自身のフローテーブルに登録されていない場合には、“PacketIn”と呼ばれるメッセージをコントローラへ送信する。PacketInはパケットに対する処理内容をコントローラに問い合わせる問い合わせメッセージである。
コントローラは、“PacketIn”メッセージに含まれたパケットに対応するフローエントリを作成し、スイッチへ送る。スイッチは、フローエントリを自身のフローテーブルに登録する。これによって、スイッチは、同様のパケットの受信時に、対応するフローエントリ中の“アクション”の内容に従ってパケットを処理することができる。
国際公開第2010/116606号公報 特表2014−502796号公報
“PacketIn”メッセージの送信は、パケット毎に実行される。一方で、対応するフローエントリがフローテーブルに登録されていないパケットをスイッチがバースト的に受信することが起こり得る。この場合、スイッチは、各パケットに対する“PacketIn”メッセージをコントローラへ送信する。これによって、スイッチとコントローラとの間でのメッセージのやりとりに使用されるネットワークの負荷が増大する虞があった。
一側面は、パケット転送装置とその制御装置とを結ぶネットワークの負荷を低減可能な
技術を提供することを目的とする。
一つの側面は、パケット転送装置と、
前記パケット転送装置とネットワークを介して接続され、前記パケット転送装置で受信されるパケットの処理内容を前記パケット転送装置へ送る制御装置とを備え、
前記パケット転送装置は、
前記制御装置から受信された前記パケットの処理内容を記憶した記憶部と、
受信されたパケットのうち前記記憶部に処理内容が記憶されておらず且つ蓄積が指定されたパケットを蓄積するバッファと、
前記バッファに蓄積された複数のパケットの夫々の処理内容を問い合わせる問い合わせメッセージであって前記複数のパケットの集合を含んだ問い合わせメッセージを前記制御装置へ前記ネットワークを介して送信する処理を行う制御部とを含み、
前記制御装置は、
前記問い合わせメッセージを受信した場合に前記問い合わせメッセージ中の各パケットに対応する処理内容を前記パケット転送装置へ送信する処理を行う処理部を含む
パケット転送システムである。
一側面によれば、パケット転送装置とその制御装置とを結ぶネットワークの負荷を低減することができる。
図1は、実施形態におけるOpenFlow(OF)ネットワークシステムの一例を模式的に示す図である。 図2は、コントローラ及びスイッチのそれぞれとして適用可能な情報処理装置のハードウェア構成例を示す図である。 図3は、情報処理装置のCPUがプログラムを実行することによって動作するコントローラ(OFC)の機能を模式的に示す。 図4は、情報処理装置のCPUがプログラムを実行することによって動作するスイッチ(OFS)の機能を模式的に示す。 図5は、コントローラ(CPU)で実行される処理(PacketIn制御条件メッセージ作成処理)の一例を示すフローチャートである。 図6は、PacketIn制御条件メッセージの一例の説明図である。 図7は、PacketIn制御条件メッセージの一例の説明図であり、アクションタイプの一覧を示す。 図8は、スイッチにおけるPacketIn制御条件メッセージ(拡張FlowMod)の受信時における処理例を示すフローチャートである。 図9は、フローテーブルを形成する1エントリ(フローエントリ)に含まれる情報を示す図である。 図10は、スイッチにおける、パケット受信時における処理例を示すフローチャートである。 図11は、スイッチにおける、パケット受信時における処理例を示すフローチャートである。 図12は、通常のPacketInメッセージのフォーマットを示す。 図13は、集約PacketInメッセージ送信処理の一例を示すフローチャートである。 図14は、集約PacketInメッセージのフォーマット例を示す図である。 図15は、コントローラにおけるPacketInメッセージ(集約PacketInメッセージ)の受信処理を示す図である。 図16は、実施形態1の作用効果の説明図である。 図17は、イーサネットフレームのフォーマットを示し、TCPヘッダ,IPヘッダ,イーサネットヘッダ,FCSのサイズを示す。 図18は、実施形態2の第1のケースにおけるスイッチの動作例を示すフローチャートである。 図19は、実施形態2の第2のケースにおけるスイッチの動作例を示すフローチャートである。
以下、図面を参照して実施形態について説明する。実施形態の構成は例示であり、実施形態の構成に限定されない。
〔実施形態1〕
実施形態1では、一例として、コントローラ(OFC)とスイッチ(OFS)とが制御ネットワークで接続されたOpenFlow(OF)ネットワークシステムについて説明する。実施形態1のOFネットワークシステムでは、フローテーブルに処理内容としてバッファへの蓄積が指定されたパケットをバッファに蓄積し、バッファに蓄積された複数のパケットを一纏めにした集約PacketInメッセージを生成し、PacketInメッセージを含んだパケットをコントローラ1へ送る。これによって、制御ネットワークへ送信されるパケット数を低減し、制御ネットワークの負荷低減を図る。
また、実施形態1では、コントローラ1が、バッファへ蓄積するパケットと、バッファへ蓄積することなくPacketInメッセージでコントローラ1へ送信するパケットとを指定可能とする。PacketIn制御に係る指定は、一例として、FlowModメッセージを拡張した拡張FlowModメッセージで行われる例について説明する。
<OpenFlowネットワークシステムの構成例>
図1は、実施形態におけるOpenFlow(OF)ネットワークシステムの一例を模式的に示す図である。図1において、OFネットワークシステムは、コントローラ(OFC)1と、コントローラ1の制御下にある(コントローラ1によって制御される)少なくとも1つのスイッチ(OFS)2とで形成される。図1の例では、2つのスイッチ2が制御ネットワーク3を介してコントローラ1に接続されている。但し、スイッチ2の数は適宜設定可能である。コントローラ1は、「パケット転送装置の制御装置」の一例であり、スイッチ2は、「パケット転送装置」の一例である。
図1の例では、複数のスイッチ2A,2Bが例示されている。スイッチ2Aはスイッチ2Bと接続されている。以下の説明において、スイッチ2A,2Bを区別しない場合には、スイッチ2と表記する。各スイッチ2は、ルータ5のような中継装置を介してホスト(端末)6と接続される。或いは各スイッチ2は、直接にホスト(端末)6と接続されることもある。また、各スイッチ2は、基地局を介して無線端末であるホスト6と接続されることもある。但し、スイッチ2がホスト6を収容しない場合もある。
スイッチ2Aは、非OFネットワーク4(4A)と接続されており、スイッチ2Bは、非OFネットワーク4(4B)と接続されている。非OFネットワーク4は、OpenFlowと異なる規格で構築されたネットワークである。
上記構成によって、例えば、非OFネットワーク4Aから各スイッチ2A,2Bを通って非OFネットワーク4Bへ至るパケット、又は逆方向を流れるパケットの転送が行われる。或いは、各非OFネットワーク4A,4Bからのパケットがスイッチ2A,2Bを介
してホスト6へ転送される。もちろん、スイッチ2Aに接続されたホスト6とスイッチ2Bに接続されたホスト6との間でのパケット通信も可能である。
コントローラ1は、各スイッチ2との間でOFプロトコルに基づくメッセージを送受信するためのセッションを確立する。セッションの確立手順は、例えば以下の通りである。最初に、スイッチ2は、コントローラ1との間でTransmission Control Protocol(TC
P)のハンドシェイク手順(3ウェイハンドシェイク)を行い、TCPセッションを確立する。
TCPセッションは、「セッション」の一例である。
次に、スイッチ2は、コントローラ1との間でOF規格に基づくハンドシェイク手順を行う。ハンドシェイク手順の中で、スイッチ2とコントローラ1とは、Hellowメッセージと呼ばれるメッセージを相互に交換する。続いて、スイッチ2は、“features request”と呼ばれるスイッチ2の情報を含んだメッセージを送り、コントローラ1は、“features
request”の応答メッセージ(“features reply”と呼ばれる)を返信する。これによって、OF規格に基づくハンドシェイクが成立する。その後、スイッチ2とコントローラ1とは、echoメッセージを相互に送り、セッションを維持する。
<コントローラ,スイッチのハードウェア構成例>
図2は、コントローラ1及びスイッチ2の夫々として適用可能な情報処理装置10のハードウェア構成例を示す図である。図2に示す情報処理装置10は、一例として、パーソナルコンピュータ(PC),ワークステーション(WS),サーバマシンのような専用又は汎用のコンピュータが備えるハードウェアアーキテクチャを備えている。但し、情報処理装置10の種類は、上記の例示に制限されない。また、スイッチ2は、既存のルータやスイッチ(L2スイッチ,L3スイッチなど)が備えるハードウェア構成を用い、スイッチ2として動作するためのソフトウェア(プログラム)を実装することによって実装可能である。
図2において、情報処理装置10は、バスBを介して相互に接続されたCentral Processing Unit(CPU)11と、主記憶装置(メインメモリ)12と、補助記憶装置13と
、ネットワークインタフェース(NWI/F)14及び15と、入力装置16と、出力装置17と、入出力(Input/Output:I/O)装置18とを備えている。
主記憶装置12は、例えば、Random Access Memory(RAM)12と、Read Only Memory(ROM)13とを含んでいる。主記憶装置12は、CPU11の作業領域として使用される。補助記憶装置13は、CPU11によって実行されるプログラムやプログラムの実行に際して使用されるデータを記憶した不揮発性記憶媒体(不揮発性メモリ)である。不揮発性記憶媒体は、例えば、ハードディスクドライブ(HDD),Solid State Drive
(SSD),Electrically Erasable Programmable Read-Only Memory(EEPROM)
,フラッシュメモリ,コンパクトフラッシュ等から少なくとも1つが選択される。但し、不揮発性記憶媒体の種類は上記例示に限定されない。主記憶装置12及び補助記憶装置13の夫々は、「記憶部」、「メモリ」、「記憶装置」、「コンピュータ読み取り可能な記憶媒体」の一例である。
各NWI/F(通信I/F)14,15は、通信機能を司るインタフェース回路を含む。例えば、NWI/Fとして、LAN(構内交換網)カードのようなネットワークインタフェースカード(NIC)を適用することができる。各NWI/F14,15は、「送信装置」、「受信装置」、「通信装置」の一例である。なお、図2では、2つのNWI/F14,15を例示しているが、NWI/Fの数は、収容する通信回線の数に応じて1以上の適宜の数を有していれば良い。
入力装置16は、情報やデータの入力に使用される。入力装置16は、例えば、キー,ボタン,ポインティングデバイス(マウスなど),タッチパネルなどの少なくとも1つを含む。入力装置16は、マイクロフォンのような音声入力装置を含むことができる。
出力装置17は、情報の出力に使用される。例えば、出力装置17は、ディスプレイ装置(表示装置)である。出力装置17として、音声出力装置(スピーカ)や印刷装置(プリンタ)を含む場合もある。
I/O装置18は、情報処理装置10と他の情報処理装置とを接続するための入出力制御を行う装置(回路)であり、例えば、OFネットワークの保守者の端末19が接続される。I/O装置18は、保守者の端末19と通信を行う通信インタフェース(NWI/F)であっても良い。
CPU11は、補助記憶装置13に記憶されたプログラムを主記憶装置12にロードして実行する。これによって、CPU11は、コントローラ(OFC)の動作を実行したり、スイッチ(OFS)の動作を実行したりすることができる。CPU11は、「プロセッサ」,「制御装置」,「制御部」の一例である。プロセッサの語は、CPUの他、Digital Signal Processor(DSP)やNetwork Processing Unit(NPU)を含む。
<コントローラ(OFC)の構成例>
図3は、情報処理装置10のCPU11がプログラムを実行することによって動作するコントローラ(OFC)1の機能を模式的に示す。コントローラ1は、処理部21と、処理部21と接続された記憶部22,入出力装置23,及びOFSとの通信部24とを備えた装置として動作する。
コントローラ1は、各スイッチ2が受信するパケットに対して行う処理内容(動作(アクション))を定義した制御情報を生成する。制御情報は、OFにおいて「フロー」と呼ばれる。フローは、少なくとも“マッチ条件(「ルール」とも呼ばれる)”及び“アクション(Action)”を含む。フローは、さらに“統計情報(Statistics)”を含むこともある。“マッチ条件”は、各スイッチ2で受信されるパケットの識別条件(パケットフローの識別条件)を示す情報(パケットフローの識別情報)であり、主にパケットのヘッダフィールドに設定されるパラメータの組み合わせで表現される。
“アクション”には、マッチ条件に合致するパケットに対する動作(処理)内容が定義される。“アクション”として複数の動作を定義することができる。また、“アクション”の定義がないときには、“Drop:パケットの廃棄”が行われるようにすることもできる。“統計情報”として、“マッチ条件”に合致するパケット数やパケット量がカウントされる。このような統計情報は、“アクション”を実行するための条件として使用することができる。
コントローラ1は、1つのフローを1エントリとしたエントリ(フローエントリ)の集合体(「フローテーブル」と呼ばれる)をスイッチ2毎に作成する。コントローラ1は、スイッチ2に対応するフローエントリを含むメッセージ(「FlowMod」と呼ばれる)を作
成する。FlowModメッセージは、各スイッチ2との間で確立したセッションを用いて各ス
イッチ2に送信される。
各スイッチ2は、コントローラ1から受信されたFlowModメッセージ中のフローエント
リを各スイッチ2が備えるフローテーブルに登録する。各スイッチ2は、パケットを受信すると、パケットと合致するマッチ条件を含むフローエントリをフローテーブルから検索
する。このとき、パケットと合致する(パケットに対応する)フローエントリが発見された場合には、当該フローエントリ中の“アクション”の定義に従ってパケットを処理する。このように、各スイッチ2は、コントローラ1(制御装置)が指定したパケットの処理内容に従って自装置で受信されるパケットの処理を行う。
これに対し、パケットに対応するフローエントリがない場合には、スイッチ2は、当該パケットの処理内容を問い合わせるメッセージ(PacketIn)を生成し、コントローラ1へ送信する。PacketInメッセージには、問い合わせに係るパケットが含まれる。
コントローラ1は、PacketInメッセージを受信すると、PacketInメッセージ中のパケットに対する経路計算を行い、経路計算結果に応じたフローを作成し、当該フロー(フローエントリ)を含んだFlowModメッセージを作成し、スイッチ2へ送信する。
図3において、入出力装置23は、図2に示したI/O装置18の機能であり、保守者から入力される情報を処理部21に受け渡す。入力情報は、例えば、パケットのフロー情報や、PacketIn制御条件を示す情報を含む。パケットのフロー情報は、例えば、送信元及び宛先IPアドレス,送信元及び宛先ポート番号,プロトコルIDなどを含む。また、入出力装置23は、処理部21からの情報を保守者へ向けて出力する。但し、保守者からの情報入力及び保守者への情報出力は、図2に示した入力装置16及び出力装置17の少なくとも一方を用いて行うこともできる。
処理部21は、図2に示したCPU11の機能である。処理部21は、一例として、パケット処理規則の計算処理211と、パケット処理規則の作成処理212と、OFメッセージ処理(メッセージ処理)213とを実行する。
計算処理211では、保守者から入力されたパケットのフロー情報を元に、OFネットワークにおけるパケットの転送経路が計算される。作成処理212では、計算処理211で計算された転送経路に基づいて、各スイッチ2へ送信するフロー(フローエントリ)を作成する処理が実行される。
メッセージ処理213では、各スイッチ2と送受信されるメッセージに対する処理が実行される。例えば、メッセージ処理213では、作成処理212で作成されたフローエントリを含んだFlowModメッセージを作成し、スイッチ2へ送信する処理が行われる。或い
は、メッセージ処理213では、スイッチ2から受信されたPacketInメッセージ中のパケットを計算処理211での経路計算のために計算処理211に渡す処理が行われる。
通信部24は、例えば、図2に示したNWI/F14又は15の機能であり、OFメッセージを含んだパケットの送受信処理を司る。OFメッセージは、少なくとも上記したFlowModメッセージ及びPacketInメッセージを含む。通信部24は、各スイッチ2から受信
されるPacketInメッセージを処理部21へ渡す処理や、処理部21から渡されたFlowMod
メッセージを宛先のスイッチ2へ送信する処理を実行する。
記憶部22は、図2に示した主記憶装置12及び補助記憶装置13の少なくとも一方の機能である。記憶部22は、受信OFメッセージの記憶領域221と、パケット処理規則の記憶領域222とを含む。記憶領域221には、PacketInメッセージが記憶される。PacketInメッセージは、計算処理211や作成処理212での処理に使用される。記憶領域222には、処理部21で作成された各スイッチ2のフローテーブル(各スイッチ2向けのフローエントリの集合体)が記憶される。
<スイッチ(OFS)の構成例>
図4は、情報処理装置10のCPU11がプログラムを実行することによって動作するスイッチ(OFS)2の機能を模式的に示す図である。スイッチ2は、処理部31と、処理部31と接続された記憶部32,入出力装置33,及びコントローラ1(OFC)との通信部34,通信部35とを備えた装置として動作する。
入出力装置33は、図2に示したI/O装置18の機能であり、保守者と処理部31との間での情報の受け渡しを司る。但し、情報の受け渡しは、図2に示した入力装置16及び出力装置17を用いて行われても良い。
通信部34は、図2に示した例えばNWI/F14の機能である。通信部34は、OFメッセージ(PacketInメッセージ,FlowModメッセージなど)を含んだパケットの送受信
処理を行う。通信部34は、コントローラ1と処理部31との間で、OFメッセージ(PacketInメッセージ,FlowModメッセージなど)の受け渡しを行う。
通信部35は、図2に示した例えばNWI/F15の機能である。通信部35は、複数のポート351を含んでいる。各ポート351は、ルータ(スイッチ)5やホスト(端末)6と接続されている。通信部35は、処理部31から受け取ったパケットを宛先に対応するポート351から送信したり、各ポート351で受信されたパケットを処理部31へ渡したりする処理を行う。
記憶部32は、図2に示した主記憶装置12及び補助記憶装置13の少なくとも一方の機能である。記憶部32は、例えば、受信パケットの記憶領域321と、パケット処理規則の記憶領域322とを含む。記憶領域321は、通信部35で受信されたパケット一時的に蓄積する複数のバッファを含む。複数のバッファは、パケットの転送処理などのためにパケットを一時的に蓄積する第1のバッファと、後述する集約PacketInメッセージで一纏めにしてコントローラ1へ送る複数のパケットを蓄積するための第2のバッファとを含む。記憶領域322には、スイッチ2がコントローラ1から受信したフローエントリの集合体であるフローテーブルが記憶される。
本実施形態では、フローテーブルには、“アクション”で定義される処理内容(アクションタイプ)の相違に基づく2種類のフローエントリが登録される。一つは、“アクション”としてPacketInに係る動作(PacketIn制御条件)が定義されたフローエントリである。もう一つは、PacketInに係る動作以外の動作が“アクション”として定義されたフローエントリである。後者を第1のフローエントリと称し、前者を第2のフローエントリと称する。第1のフローエントリに含まれるマッチ条件を第1のフローと称し、第2のフローエントリに含まれるマッチ条件を第2のフローと称することもある。
処理部31は、図2に示したCPU11の機能である。処理部31は、例えば、OFメッセージ処理311と、パケット処理規則の比較処理312と、パケット処理313と、タイマ314とを実行する。
OFメッセージ処理311では、FlowModメッセージでコントローラ1から供給された
フローエントリを記憶領域322中のフローテーブルに登録する処理が行われる。また、OFメッセージ処理311では、PacketInメッセージや後述する集約PacketInメッセージを作成してコントローラ1へ送る処理が実行される。
比較処理312では、通信部35で受信されたパケットと、フローテーブルに登録された各フローエントリのマッチ条件との比較(マッチング)が実行される。比較結果は、パケット処理313に渡される。パケット処理313では、比較結果に応じたパケットの処理を行う。
すなわち、比較結果として、パケットとマッチするマッチ条件を含んだフローエントリが発見された場合には、パケット処理313では、パケットに対し発見されたフローエントリ中の“アクション”で定義された処理を行う。例えば、発見されたフローエントリが第2のフローエントリであれば、当該エントリ中の“アクション”で定義された内容に基づきPacketIn に係る処理が実行される。すなわち、パケットが第2のバッファに蓄積さ
れたり、パケットを含むPacketInの作成がOFメッセージ処理311に指示されたりする。
これに対し、発見されたフローエントリが第1のフローエントリであれば、当該エントリ中の“アクション”に基づき、パケットを所定の出力ポートへ転送したり、パケットを廃棄したりする処理がなされる。
<動作例>
以下、上述したコントローラ1及びスイッチ2における動作例について説明する。図5は、コントローラ1(CPU11)で実行される処理(PacketIn制御条件メッセージの送信処理)の一例を示すフローチャートである。
図5に示す処理は、例えば、保守者がPacketIn制御条件を示す情報をコントローラ1へ入力することによって開始される。PacketIn制御条件として、保守者は所定のパケットについて、第2のバッファに蓄積し集約PacketInメッセージでコントローラ1へ送るか第2のバッファに蓄積すること無く直ちに通常のPacketInで送る(即時のPacketIn)かを指定することができる。集約PacketInメッセージは、「(第1の)問い合わせメッセージ」の一例であり、通常のPacketInメッセージは、「第2の問い合わせメッセージ」の一例である。
保守者は、将来において、スイッチ2を用いて転送されるパケットのフロー情報を知っている。保守者は、そのようなパケットのフローを、即時性の高いパケットのフローと即時性が低いフローとに分類し、即時性の高いフローについては即時のPacketInを指定し、即時性が低いフローについては集約PacketIn(まとめてPacketIn)を指定する。
即時性の高いパケットのフローは、例えば、音声通信や動画配信に使用されるパケットのフローである。一方、即時性が低いパケットのフローは、Webサイトのブラウジングや電子メールの転送に使用されるパケットである。
所定のパケットに対するPacketIn制御条件は、入出力装置23(I/O装置18)を介して処理部21(CPU11)に入力される。以下の動作例の説明は、CPU11の処理として説明する。
最初の01では、CPU11は、入力情報(PacketIn制御条件)を受信する。次の02では、CPU11は、作成処理212を行い、入力情報を元にPacketIn制御条件メッセージを作成する。図6及び図7は、PacketIn制御条件メッセージの一例の説明図である。
PacketIn制御条件メッセージは、OpenFlowで規格されたFlowModメッセージを拡張する
ことによって作成することができる。制御条件メッセージは、ヘッダ部と、パラメータ“match(マッチ条件)”と、パラメータ“thresholdSize(閾値サイズ)”と、パラメータ“Cycle(周期)”とを含む。パラメータ“thresholdSize(閾値サイズ)”と、パラメータ“Cycle(周期)”とは、FlowModの拡張により含められたパラメータである。
ヘッダ部は、OFプロトコルにおける共通ヘッダ部である。パラメータ“match”は、
マッチ条件(パケットの識別条件)を示し、第1及び第2のフローエントリにおけるマッチ条件を示す。
マッチ条件は、パケットのフロー情報で設定することができる。フロー情報は、TCPやUDPのポート番号(宛先及び送信元),IPアドレス(宛先及び送信元),プロトコルID,MACアドレス(宛先及び送信元),VLAN(仮想構内交換網)−IDなどのヘッダ情報を含む。
マッチ条件は、例えば、上記したヘッダ情報中のパラメータの組み合わせで設定される。例えば、即時性の低いパケットについて第2のバッファへの蓄積を指定する場合には、以下のようなマッチ条件が指定される。すなわち、Webサイトのブラウジングに係るパケットについては、ポート番号として“80”(HyperText Transfer Protocol:HTT
P)が指定されたマッチ条件が設定される。また、電子メールに係るパケットであれば、マッチ条件として各種のメールサービスに応じたポート番号が指定される。これに対し、即時性の高いパケットについては、保守者が認識しているパケットのヘッダ情報を用いたマッチ条件が設定される。
マッチ条件として、上記したポート番号やアドレスの固定値だけでなく、ポート番号やアドレスの範囲を指定することもできる。これによって、1つのフローエントリで複数のパケットに対するPacketInの制御を行うことができる。但し、1つのPacketIn制御条件メッセージにおいて、即時のPacketInを行うパケットと集約PacketInを行うパケットとの双方を指定することはできない。
パラメータ“thresholdSize”は、第2のバッファに蓄積されるパケットの合計サイズ
に対する閾値を示す。パラメータ“Cycle”は、集約PacketInメッセージを送信する周期
を示す。スイッチ2において、“thresholdSize”及び “Cycle”の各値は、後述する“buffer_id”で指定される第2のバッファと紐づけされ、当該第2のバッファに対して適用される。
制御条件メッセージは、さらに、アクション情報を含む。アクション情報は、“command(コマンド)”,“timeout(タイムアウト:寿命)”,“priority(優先度)”,“buffer_id(バッファID)”,“out_port(アウトポート)”及びフラグの各パラメータ
を含む。パラメータ“command”は、スイッチ2におけるフローテーブルに対する振る舞
い(フローテーブルへのフローエントリの追加,フローエントリの内容変更,フローエントリの削除)を示す情報である。
パラメータ“timeout”は、フローエントリのフローテーブルにおける保存期間を示す
。保存期間が過ぎたフローエントリはフローテーブルから削除される。パラメータ“priority”は、フローエントリの優先度を示す。例えば、同一のマッチ条件を含む複数のフローエントリが登録されることがあり、そのときにいずれのフローエントリを優先的に使用するかを決定するために使用される。
パラメータ“buffer_id”は、バッファの識別子(ID)である。本実施形態では、集
約PacketInメッセージで送信するパケットの蓄積に用いるバッファ(第2のバッファ)を指定するために使用される。バッファIDの使い分けにより、集約PacketInメッセージに含める複数のパケットを蓄積するための複数の第2のバッファを設定することができる。
“out_port”は、コマンド“command”が削除(delete)の場合に使用される。すなわ
ち、“out_port”と一致するフローエントリがフローテーブルから削除される。フラグは固定値が設定される。
アクション情報には、具体的なアクション内容が定義される。アクション内容としてn個(nは自然数)を定義することができ、複数のアクションを定義することができる。1つのアクションに関して、少なくともアクションタイプ“type”と、サイズ“length”とが指定される。アクションタイプは、処理内容を示し、サイズ“length”は、アクションのサイズ(メッセージ中での“アクション”情報の相対位置)を示す。
図7には、アクションタイプとして採り得るパラメータの一覧が示されている。具体的には、アクションタイプとして“Forward(フォワード)”,“Enqueue(エンキュー)”,“Drop(ドロップ)”,“Modify-field(モディファイフィールド)”,“OutPut”が例示される。“Forward(フォワード)”及び“Enqueue(エンキュー)”は、実施形態におけるPacketIn制御のために使用されるアクションタイプである。“Forward”及び“Enqueue”は、「指定情報」、「第2の処理内容」の一例である。“Forward”及び“Enqueue”以外のアクションタイプは、「(第1の)処理内容」の一例である。“Forward”が指
定されたマッチ条件は、「転送指定情報」の一例であり、“Enqueue”が指定されたマッ
チ条件は「蓄積指定情報」の一例である。
“Forward(フォワード)”は、パケットを通常のPacketInにてコントローラ1へ転送
することを示す。“Forward”は、所定のパケット(例えば、即時性が高いパケット)を
通常のPacketInでコントローラ1へ送る場合に指定される。
“Enqueue”は、パケットを“buffer_id”で指定されたバッファ(第2のバッファ)へ格納(蓄積)することを示す。“Enqueue”は、所定のパケット(例えば、即時性の低い
パケット)を第2のバッファに蓄積し、集約PacketInで送る場合に指定される。
“Drop(ドロップ)”は、マッチ条件にマッチするパケットを廃棄する場合に指定される。“Modify-field(モディファイフィールド)”は、フローテーブルの指定フィールドを変更する場合に指定される。“OutPut”は指定したポートからパケットを出力する場合に指定される。
図5に戻って、PacketIn制御条件メッセージが作成されると、CPU11は、メッセージ処理213として、PacketIn制御条件メッセージの送信処理を行う(03)。これによって、PacketIn制御条件メッセージは、通信部24から送出され、制御ネットワーク3を介して宛先のスイッチ2で受信される。
図8は、スイッチ2におけるPacketIn制御条件メッセージ(拡張FlowMod)の受信時に
おける処理例を示すフローチャートである。図8の11において、スイッチ2の処理部31(CPU11)は、通信部34で受信されたPacketIn制御条件メッセージを受信する。
次の12において、CPU11は、OFメッセージ処理311を行い、PacketIn制御条件メッセージ中のフローエントリを記憶領域322のフローテーブルへ登録する。図9は、フローテーブルを形成する1エントリ(フローエントリ)に含まれる情報を示す図である。図9に示すように、フローエントリは、マッチ条件と、アクションと、統計情報と、その他オプションとを含む。
マッチ条件は、上述したパケットの識別条件であり、統計情報は、マッチ条件にマッチしたパケット数やバイト数などである。アクションは、パケット出力などのマッチ条件にマッチしたパケットに対するスイッチ2の振る舞いを示す。その他オプションは、フローエントリの優先度(“priority”)や、寿命(“timeout”)などを示す。
図8に戻って、CPU11は、12で登録したフローエントリ中のアクションが“Enqueue”であり、且つPacketIn制御条件メッセージにおいて、“cycle”値が設定されていた場合には、タイマ214を用いてPacketIn制御タイマを起動する。すなわち、集約PacketInメッセージを送る周期の計時を開始する。また、CPU11は、PacketIn制御条件メッセージに“thresholdSize”が指定されている場合には、その値を記憶部32の所定記憶
領域に設定する。
なお、“cycle”や“thresholdSize”の値は、PacketIn制御条件メッセージ毎に設定しなくても良い。すなわち、或るPacketIn制御条件メッセージで或る“buffer_id”に対し
て“cycle”や“thresholdSize”が一旦指定されると、スイッチ2は当該“buffer_id”
で指定された第2のバッファに関して“cycle”や“thresholdSize”で指定された値を使用し続ける。その後に受信されたPacketIn制御条件メッセージで同一の“buffer_id”に
対して“cycle”や“thresholdSize”が指定されていれば、周期や閾値を当該PacketIn制御メッセージ中の値で更新する。このような処理がなされても良い。
図10及び図11は、スイッチ2における、パケット受信時における処理例を示すフローチャートである。図10の21において、処理部31(CPU11)は、OFメッセージ処理311を行い、通信部35で受信されたパケットを受け取る。
次の22において、CPU11は、比較処理312を行い、記憶部32の記憶領域322にあるフローテーブルからパケットにマッチするマッチ条件を含んだフローエントリを検索する。次の23では、CPU11は、パケットとマッチするマッチ条件(フローエントリ)があるか否かを判定する。
23において、パケットとマッチするマッチ条件(フローエントリ)がない場合、すなわち、パケットに対応する処理内容がフローテーブルに登録されていない場合には、処理が24へ進む、これに対し、パケットにマッチするマッチ条件(フローエントリ)がある場合には、処理が25へ進む。
処理が24へ進んだ場合には、通常の方法でコントローラ1へPacketInが送信される。パケットに対する即時性が高いか低いかが不明であるからである。この場合、CPU11は、OFメッセージ処理311を行い、当該パケットを含むPacketInメッセージを生成して通信部34へ送る。通信部34は、PacketInメッセージを含むパケットをコントローラ1へ制御ネットワーク3を介して送る。
図12は、通常のPacketInメッセージのフォーマットを示す。PacketInメッセージは、共通ヘッダと、データフレームとを有する。データフレームには、パケットデータのサイズ(メッセージ中での相対位置)を示す“length”と、パケットデータを示す“packetData”とが含まれる。パケットデータは、受信パケット全体を含んでも良く、パケットのヘッダのようなパケットの一部(部分)であっても良い。要は、PacketInにコントローラ1でのフローエントリ作成に要する情報が含まれていれば良い。また、パケットの“packetData”に格納される部分のみが第2のバッファに格納されるようにしても良い。この場合、第2のバッファの記憶容量を節約することができる。
図10に戻って、25へ処理が進んだ場合には、CPU11は、検索されたエントリ(パケットとマッチするフローエントリ)中のアクションを参照する。このとき、アクションの内容が即時(Forward)であれば処理が27に進む。アクションの内容が集約(Enqueue)であれば処理が29に進む。アクションの内容がForward及びEnqueue以外であれば、処理が28へ進む。
27に処理が進んだ場合には、CPU11は、パケット処理313及びOFメッセージ処理311として、当該パケットを第2のバッファに蓄積することなく当該パケットを含んだPacketInメッセージを作成し、コントローラ1へ送る処理を行う。これによって、即時性の高いパケットについてのフローエントリがスイッチ2へ登録されるタイミングを早めることができる。
28へ処理が進んだ場合には、CPU11は、パケット処理313として、アクションの内容に応じたパケットに対する処理を行う。例えば、パケットをアクションで指定された出力ポート(ポート351)へ送る処理を行う。
29へ処理が進んだ場合には、CPU11は、パケット処理313として、PacketIn制御条件メッセージの“buffer_id”で指定されたバッファ(第2のバッファ)において、
同一のパケットが既に登録されているか否かをチェックし、同一のパケット(パケット中の所定情報が同一のパケット)が第2のバッファに蓄積されているか否かを判定する(30)。
上記判定は、パケットに含まれる所定情報が同一か否かを以てなされる。例えばパケットのヘッダを比較し、ヘッダ中の所定情報(所定パラメータ)が同一か否かを以てなされる。例えば、パケットの送信元及び宛先IPアドレス,送信元及び宛先ポート番号,送信元及び宛先MACアドレス,プロトコルIDが同一か否かを以てパケットの同一性判定が行われる。但し、パケットの同一性判定に用いるパラメータは上記例に限定されない。換言すれば、本実施形態では、パケットの同一とは、パケットに含まれたパケットの送受信に関する所定の情報が同一であることを意味し、パケットのペイロードに格納されたユーザデータまでの同一は要求されない。但し、ヘッダ情報だけでなくペイロードに格納されたデータを含めてパケットの同一性が判断されることはあり得る。
30において、同一のパケットが既に蓄積されている場合には、CPU11は、パケット処理313として、パケットを破棄(廃棄)する(31)。同一のパケットに対する無駄なフロー計算等がコントローラ1で重複して実行されるのを回避するためである。また、送信対象のパケットの数が減ることで、単位時間当たりの集約PacketInの送信回数を減らすことを期待できる。これに対し、同一のパケットが蓄積されていなければ、CPU11は、パケットを第2のバッファに蓄積(格納)する(32)。
次の33(図11)では、CPU11は、タイマ314を用いたPacketin制御タイマが満了しているか否かを判定する。このとき、Packetin制御タイマが満了している場合には、処理が36へ進む。これに対し、Packetin制御タイマが満了していない場合には、処理が34へ進む。
34では、CPU11は、バッファに蓄積されているパケットの合計サイズをチェックし、合計サイズが閾値(“thresholdSize”で指定された値)を超過するか否かを判定す
る(35)。このとき、合計サイズが閾値を超過しない場合には、処理が21へ戻り、次の受信パケットに対する処理へ進む。これに対し、合計サイズが閾値を超過する場合には、処理が36へ進む。なお、35の判定において、合計サイズが閾値以上か否かの判定がなされるようにしても良い。
36では集約PacketInメッセージ送信処理が実行される。図13は、集約PacketInメッセージ送信処理の一例を示すフローチャートである。図13の361では、CPU11は、第2のバッファに格納(蓄積)されているパケットを収集する。
次の362では、CPU11は、集約PacketInメッセージのデータフレーム部へ全パケ
ットを格納する。図14は、集約PacketInメッセージのフォーマット例を示す図である。図14に示すように、集約PacketInメッセージでは、通常のPacketInメッセージ(図12)のデータフレーム部が拡張されて、所定数n(nは自然数)のパケットデータ及びサイズを格納可能となっている。すなわち、複数のパケットを1つのPacketInに格納することができる。各“length”は、メッセージ中の“packetData”の相対位置を示す。
図13に戻って、次の363では、CPU11は、集約PacketInメッセージをコントローラ1へ送信する処理を行う。集約PacketInは、通信部34から制御ネットワーク3を通じてコントローラ1で受信される。
なお、PacketIn制御タイマによる集約PacketInの送信タイミング制御と、閾値に基づく集約PacketInの送信タイミング制御とは、双方が実行されることは必須要件ではなく、少なくとも一方が実行されるようにしても良い。また、PacketIn制御タイマの計時は、図10及び図11の処理から独立して(並列に)実行されるようにしても良い。
図15は、コントローラ1におけるPacketInメッセージ(集約PacketInメッセージ)の受信処理を示す図である。図15における41で、コントローラ1の処理部21(CPU11)は、通信部24を介してPacketInメッセージ(集約PacketInメッセージ)を受信する。
次の42で、CPU11は、PacketIn中のパケット“length”及び“packetData”を用いて、パケットに対する経路計算を行い、対応するフローエントリを作成する。次の43で、CPU11は、フローエントリを含むFlowModメッセージを作成し、宛先(問い合わ
せ元)のスイッチ2へ送信する処理を行う。
次の44では、CPU11は、PacketIn中の全てのパケット(“packetData”)に対する42及び43の処理が終了したか否かを判定する。処理が終了していない場合(44,N(集約PacketInの場合))には、CPU11は、“length”を用いてPacketIn中の次のパケットを指定し、処理を42に戻す。これに対し、処理が終了している場合(44,Y)には、CPU11は図15の処理を終了する。なお、上記処理では、各パケットに対するフローエントリの作成処理がシーケンシャルに実行される例を示したが、各パケットに対するフロー計算やフローエントリ作成が並列に実行されるようにしても良い。
なお、フローテーブルに登録された第2のフローエントリを削除する場合、コントローラ1は、当該第2のフローエントリを削除するためのFlowModメッセージを作成しスイッ
チ2へ送信する。スイッチ2(CPU11)は、FlowModメッセージに従って、フローテ
ーブルから第2のフローエントリを削除する。
また、第2のフローエントリには、同じマッチ条件を有する第1のフローエントリよりも低い優先度“priority”が設定される。スイッチ2のフローテーブルにおいて、同じマッチ条件を有する第1のフローエントリと第2のフローエントリが登録されている場合には、第1のフローエントリが優先的に使用される。これによって、第1のフローエントリが存在するパケットについてPacketInが送信されることが回避される。
<実施形態1の作用効果>
実施形態1によれば、図16に示すように、コントローラ1がスイッチ2に対し、PacketIn制御条件メッセージ(拡張FlowMod)を送信し、通常のPacketInで送るパケットと、
第2のバッファに一時蓄積し集約PacketInで送るパケットと指定する指定情報を含んだ第2のフローエントリを送る(図16<1>)。第2のフローエントリは、フローテーブルに登録される。
その後、スイッチ2で受信されたパケットのうち、第1のフローエントリ(PacketIn制御条件(Forward及びEnqueue)以外の処理内容がアクションタイプで設定されたエントリ)が登録されていないパケット、すなわち、未知のパケットが受信されたとき、スイッチ2は以下の処理を行う。
すなわち、パケットが第2のフローエントリにおいて、Enqueue(第2のバッファへの
蓄積)が指定されたパケットであれば、第2のバッファに蓄積される。その後、複数のパケットが一纏めにされた集約PacketInに含まれてコントローラ1へ送信される(図16<2>)。これによって、制御ネットワーク3へのトラフィック量の削減を図り、制御ネットワークへの負荷を低減することができる。
また、第2のフローエントリにおいて、Forward(即時のPacketIn)が指定されたパケ
ットについては、第2のバッファに蓄積されることなく、通常のPacketInメッセージに含まれてコントローラ1へ送信される(図16<3>)。これによって、即時性の高いパケットについて、第1のフローエントリがフローテーブルに登録されるタイミングを早めることができる。
トラフィック削減(制御ネットワーク負荷低減)の効果として、以下のようなデータを示すことができる。出願人が開発したソフトウェアによるスイッチで、サイズの異なるパケットに関して1秒当たりのパケット数(Packet/Second:pps)、及び帯域(Mbit/Second:Mbps)を測定したところ、以下のデータが得られた。
(1)サイズ64[byte]の場合:200102[pps],102.45[Mbps]
(2)サイズ1450[byte]の場合:95805[pps],1111.34[Mbps]
上記のデータによれば、サイズが大きく、パケット数が少ない程、帯域が大きくなる特性が認められた。このような特性は、通常のルータやスイッチに対しても当てはまる。上記結果を踏まえた上で、TCP−SYNパケット,Dynamic Host Configuration Protocol(DHCP)リクエストパケットを例として集約PacketInを送信する場合について説明
する。TCP−SYNパケット、及びDHCPリクエストパケットは、パケットの送受信が開始される際に最初に転送されるパケットの例である。
PacketInの共通ヘッダ部のサイズは8バイトである、TCP−SYNパケットのサイズは60バイトである。DHCPリクエストのサイズは300バイトである。図17は、イーサネットフレームのフォーマットを示し、TCPヘッダ,IPヘッダ,イーサネットヘッダ,FCS(Frame Check Sequence)のサイズを示す。
図17において、上記のように、PacketInの共通ヘッダ部のサイズは8バイトである。TCPヘッダのサイズは20バイトである。MSS(Maximum Segment Size)は、TCPユーザデータで受信可能なセグメントサイズの最大値を示す。IPヘッダは20バイトである。MTU(Maximum Transmission Unit)は、一回のデータ転送で送信可能なIPデ
ータグラムの最大サイズを示す。MTUは、46〜1500[byte]の値を採る。IPデータグラムの先頭側にイーサネットヘッダ(14バイト)が付与され、最後尾にFCS(4バイト)が付与される。イーサネットフレームのサイズは、64〜1518[byte]となる。
MTU(最大1500バイト)のうち、IPヘッダとTCPヘッダとが40バイトを占める。残りの可変長データの格納領域において、PacketInの共通ヘッダ部が8バイトを占める。残りのバイト数(1452バイト)においてTCP−SYNパケットをまとめる場合では、1つの集約PacketInで、約24個のTCP−SYNパケットを送信することがで
きる。一方、残りのバイト数(1452バイト)においてDHCPリクエストをまとめる場合では、1つの集約PacketInで約4個のDHCPリクエストを送信することができる。
このように、実施形態で説明した集約PacketInを用い、PacketInを含むパケットのサイズを大きくし、PacketInの送信数を減らすことで、制御ネットワーク3の帯域を大きくすることができる。すなわち、制御ネットワーク3の負荷を低減することができる。
<変形例>
なお、実施形態1では、所定のパケットに対する第2のバッファへの蓄積、及び即時のPacketInを指定する情報は、PacketIn制御条件メッセージを用いてスイッチ2へ伝達されている。そして、これらの指定情報は、第2のフローエントリとしてフローテーブルに登録されている。但し、上記指定情報は、拡張FlowMod以外のメッセージを用いてコントロ
ーラ1からスイッチ2へ伝達されるようにしても良い。或いは、上記指定情報は、保守者がスイッチ2のフローテーブルに直接に(例えばマニュアルで)入力するようにしても良い。また、上記指定情報は、フローテーブルと異なる記憶領域にて記憶されるようにしても良い。もっとも、実施形態1で説明した拡張FlowMod及びフローテーブルを用いること
で、OFの規格の枠組みを適用し、開発量を少なくすることができる。
〔実施形態2〕
次に、実施形態2について説明する。実施形態2は、実施形態1と共通点を含むので、主として相違点について説明し、共通点については説明を省略する。実施形態1では、スイッチ2のフローテーブルに第1及び第2のフローエントリが登録されていないパケットが受信された場合には、当該パケットを含む通常のPacketInが送信されていた。実施形態2では、第1及び第2のフローエントリが登録されていないパケットを、集約PacketInメッセージでの送信対象(第2のバッファへの蓄積対象)とする。実施形態2では、PacketIn制御条件メッセージを使用しない場合(第1のケース)と、PacketIn制御条件メッセージを使用する場合(第2のケース)とについて説明する。
<第1のケース>
図18は、実施形態2の第1のケースにおけるスイッチ2の動作例を示すフローチャートである。第1のケースでは、PacketIn制御条件メッセージが使用されない。このため、スイッチ2のフローテーブルには、実施形態1で説明した第1のフローエントリが登録され、第2のフローエントリは登録されない。また、第1のケースでは、第1実施形態で説明した“buffer_id”,“thresholdSize”,及び“cycle”のような第2のバッファ制御
用のパラメータは、例えば、保守者がスイッチ2に入力し、スイッチ2のCPU11が設定を行う。
図18の51において、スイッチ2の処理部31(CPU11)は、通信部35で受信されたパケットを受信する。次の52において、CPU11は、記憶部32の記憶領域322にあるフローテーブルからパケットにマッチするマッチ条件を含んだフローエントリ(第1のフローエントリ)を検索する。次の53では、CPU11は、パケットとマッチするマッチ条件(フローエントリ)があるか否かを判定する。
53において、パケットにマッチするマッチ条件(フローエントリ)がある場合には、CPU11は、当該フローエントリ中の“アクション”に従ってパケットを処理する(54)。これに対し、パケットとマッチするマッチ条件(フローエントリ)がない場合、すなわち、パケットに対応する処理内容がフローテーブルに登録されていない場合には、処理が55へ進む、
処理が55へ進んだ場合には、CPU11は、記憶部32に記憶されているPacketIn集
約制御フラグをチェックし、PacketIn集約制御フラグがオンかオフかを判定する(56)。ここに、PacketIn集約制御フラグは、スイッチ2において、未知のパケット(フローテーブルにフローエントリが登録されていないパケット)について集約PacketInメッセージを用いたパケットの集約を実行するか否かを示すフラグである。
CPU11は、PacketIn集約制御フラグがオフであれば、PacketIn集約制御、すなわち、未知のパケットの第2のバッファへの蓄積を行わず、通常のPacketIn処理を実行する(57)。これに対し、PacketIn集約制御フラグがオンであれば、CPU11は、処理を58に進める。なお、PacketIn集約制御フラグを用いたオンオフ判定はオプションであり、53の処理でパケットに対応するフローエントリが無ければ直ちに処理が58に進むようにしても良い。PacketIn集約制御フラグのオンオフ制御によって、例えば、制御ネットワーク3のトラフィック量に応じて集約PacketInを利用し、トラフィック量を減らすことが可能となる。
処理が58に進むと、CPU11は、パケットの蓄積が指定された第2のバッファ(“buffer_id”で指定)に、同一のパケットが既に蓄積されているか否かを判定する。この
とき、同一のパケットが第2のバッファに蓄積されている場合には、CPU11は、パケットを廃棄する(59)。これに対し、同一のパケットが蓄積されていなければ、CPU11は、パケットを第2のバッファに蓄積(格納)する(60)。
次の61では、CPU11は、タイマ314を用いたPacketin制御タイマが満了しているか否かを判定する。このとき、Packetin制御タイマが満了している場合には、処理が63へ進む。これに対し、Packetin制御タイマが満了していない場合には、処理が62へ進む。
62では、CPU11は、第2のバッファに蓄積されているパケットの合計サイズが閾値(“thresholdSize”で指定された値)を超過するか否かを判定する。このとき、合計
サイズが閾値を超過しない場合には、処理が51へ戻り、次の受信パケットに対する処理へ進む。これに対し、合計サイズが閾値を超過する場合には、処理が63へ進む。
63では、図13を用いて説明した集約PacketInメッセージ送信処理が実行される。集約PacketInメッセージ送信処理の内容は実施形態1と同じであるので説明を省略する。以上を除き、第1のケースは実施形態1と同じであるので説明を省略する。
第1のケースでは、未知のパケット(フローテーブルに処理内容が登録されていないパケット)が第2のバッファに蓄積され、第2のバッファに蓄積された複数のパケットの集合を含む集約PacketInメッセージがコントローラ1へ送信される。第1のケースでも、制御ネットワーク3を介してコントローラ1へ送信されるPacketInを含むパケットサイズを大きくし、送信数(パケット数)を減らすことができる。このため、実施形態1と同様に、制御ネットワーク3の負荷を低減することができる。
<第2のケース>
次に、実施形態2における第2のケースについて説明する。第2のケースでは、実施形態1と同様に、PacketIn制御条件メッセージが使用され、所定パケットに対する第2のフローエントリがスイッチ2のフローテーブルに登録される。但し、実施形態1と異なり、フローテーブルに第1及び第2のフローエントリが登録されていないパケット(未知のパケット)も、第2のバッファへの蓄積対象(集約PacketInでの送信対象)となる。
図19は、第2のケースにおけるスイッチ2のパケット受信時における処理を示すフローチャートである。図19に示す処理は、図15に示した処理とほぼ同様であるので、同
じ処理については同じ番号を付してある。図19の23において、フローテーブルからパケットにマッチするマッチ条件(フローエントリ)が発見されない場合には、29へ処理が進む。そして、同一のパケットが既に蓄積されていなければ、パケットが第2のバッファへ蓄積される(32)。
第2のバッファへの蓄積は、第2のフローエントリでアクションタイプ“Enqueue”が
指定されたパケットについても実行される(26,集約)。これに対し、第2のフローエントリでアクションタイプ“Forward”が指定されたパケットについては、通常のPacketInでの送信が行われる(27)。従って、第2のケースでは、即時性の高いパケットにつ
いてのみ、第2のフローエントリが登録されるようにしても良い。これにより、例えば、フローエントリを記憶する記憶装置の容量を節約できる。なお、図19の結合子(丸数字の1及び2)は、図11の結合子と結合している。
以上の説明を除き、第2のケースは実施形態1と同じであるので説明を省略する。第2のケースでは、未知のパケット及び第2のバッファへの蓄積が指定されたパケットが第2のバッファに蓄積され、集約PacketInメッセージでコントローラ1へ送信される。この場合でも、実施形態1と同様に、制御ネットワーク3へ送信するPacketInの数を減らし、制御ネットワーク3の負荷を低減することができる。
なお、実施形態では、OpenFlowのOFC及びOFSを例示として挙げたが、コントローラ(制御装置)及びスイッチ(パケット転送装置)は、OFC及びOFSに限定されない。上記した実施形態は、以下の付記を開示する。以下の付記は適宜組み合わせることができる。
(付記1) パケット転送装置と、
前記パケット転送装置とネットワークを介して接続され、前記パケット転送装置で受信されるパケットの処理内容を前記パケット転送装置へ送る制御装置とを備え、
前記パケット転送装置は、
前記制御装置から受信された前記パケットの処理内容を記憶した記憶部と、
受信されたパケットのうち前記記憶部に処理内容が記憶されておらず且つ蓄積が指定されたパケットを蓄積するバッファと、
前記バッファに蓄積された複数のパケットの夫々の処理内容を問い合わせる問い合わせメッセージであって前記複数のパケットの集合を含んだ問い合わせメッセージを前記制御装置へ前記ネットワークを介して送信する処理を行う制御部とを含み、
前記制御装置は、
前記問い合わせメッセージを受信した場合に前記問い合わせメッセージ中の各パケットに対応する処理内容を前記パケット転送装置へ送信する処理を行う処理部を含む
パケット転送システム。(1)
(付記2) 前記制御部は、前記バッファへの蓄積対象のパケット中の所定情報と同一の情報を含むパケットが既に前記バッファに蓄積されている場合には、前記蓄積対象のパケットを廃棄する
付記1に記載のパケット転送システム。(2)
(付記3) 前記制御部は、前記受信部で受信され、前記記憶部に処理内容が記憶されておらず、且つ前記蓄積の指定もないパケットのうち所定のパケットについては前記バッファに蓄積することなく前記所定パケットを単独で含んだ第2の問い合わせメッセージを前記制御装置へ前記ネットワークを介して送信する処理を行う
付記1又は2に記載のパケット転送システム。(3)
(付記4) 前記所定のパケットは、前記バッファに蓄積することなく前記第2の問い合わせメッセージでの送信が指定されたパケットを含む
付記3に記載のパケット転送システム。
(付記5) 前記制御部は、前記制御装置から受信される蓄積指定情報であって前記バッファへの蓄積が指定されるパケットを示す蓄積指定情報に従って、前記蓄積指定情報に対応するパケットを前記バッファに蓄積する
付記1から4のいずれか1項に記載のパケット転送システム。
(付記6) 前記制御部は、前記制御装置から受信される転送指定情報であって前記バッファへ蓄積することなく前記第2の問い合わせメッセージにて送信するパケットを示す転送指定情報に従って、前記転送指定情報に対応するパケットを含む前記第2の問い合わせメッセージを送信する処理を行う
付記4又は5に記載のパケット転送システム。
(付記7) 前記蓄積指定情報は、前記制御装置から前記パケット転送装置へ送信される、パケットの処理内容を送信するためのメッセージに含まれ、前記記憶部において第2の処理内容として記憶される
付記5又は6に記載のパケット転送システム。
(付記8) 前記転送指定情報は、前記制御装置から前記パケット転送装置へ送信される、パケットの処理内容を送信するためのメッセージに含まれ、前記記憶部において第2の処理内容として記憶される
付記6又は7に記載のパケット転送システム。
(付記9) 前記制御部は、所定時間を計時するタイマが満了したときに前記バッファに蓄積されている複数のパケットを含んだ前記問い合わせメッセージを送信する
付記1から8のいずれか1項に記載のパケット転送システム。
(付記10) 前記制御部は、前記バッファに蓄積された複数のパケットの合計サイズが所定値を越えたときに前記バッファに蓄積されている複数のパケットを含んだ前記問い合わせメッセージを送信する
付記1から9のいずれか1項に記載のパケット転送システム。
(付記11) 制御装置とネットワークを介して接続され、前記制御装置が指定したパケットの処理内容に従って自装置で受信されるパケットに対する処理を行うパケット転送装置であって、
前記パケットの処理内容を記憶する記憶部と、
受信されたパケットのうち前記記憶部に処理内容が記憶されておらず且つ蓄積が指定されたパケットを蓄積するバッファと、
前記バッファに蓄積された複数のパケットの夫々の処理内容を問い合わせる問い合わせメッセージであって前記複数のパケットの集合を含んだ問い合わせメッセージを前記制御装置へ前記ネットワークを介して送信する処理を行う制御部と
を含むパケット転送装置。(4)
(付記12) 制御装置とネットワークを介して接続され、前記制御装置が指定したパケットの処理内容に従って自装置で受信されるパケットに対する処理を行うパケット転送装置であって、
前記パケットの処理内容を記憶する記憶部と、
受信されたパケットのうち前記記憶部に処理内容が記憶されていないパケットを蓄積す
るバッファと、
前記バッファに蓄積された複数のパケットの夫々の処理内容を問い合わせる問い合わせメッセージであって前記複数のパケットの集合を含んだ問い合わせメッセージを前記制御装置へ前記ネットワークを介して送信する処理を行う制御部と
を含むパケット転送装置。(5)
(付記13) 制御装置とネットワークを介して接続され、前記制御装置が指定したパケットの処理内容に従って自装置で受信されるパケットに対する処理を行うパケット転送装置のメッセージ送信制御方法であって、
パケット転送処理装置が、
受信されたパケットのうち前記パケットの処理内容が記憶されておらず且つ蓄積が指定されたパケットをバッファに蓄積し、
前記バッファに蓄積された複数のパケットの夫々の処理内容を問い合わせる問い合わせメッセージであって前記複数のパケットの集合を含んだ問い合わせメッセージを前記制御装置へ前記ネットワークを介して送信する
ことを含むパケット転送装置のメッセージ送信制御方法。(6)
(付記14) 制御装置とネットワークを介して接続され、前記制御装置が指定したパケットの処理内容に従って自装置で受信されるパケットに対する処理を行うパケット転送装置のメッセージ送信制御方法であって、
受信されたパケットのうち前記パケットの処理内容が記憶されていないパケットをバッファに蓄積し、
前記バッファに蓄積された複数のパケットの夫々の処理内容を問い合わせる問い合わせメッセージであって前記複数のパケットの集合を含んだ問い合わせメッセージを前記制御装置へ前記ネットワークを介して送信する
ことを含むパケット転送装置のメッセージ送信制御方法。(7)
1・・・OpenFlowコントローラ(OFC)
2・・・OpenFlowスイッチ(OFS)
3・・・制御ネットワーク
10・・・情報処理装置(コンピュータ)
11・・・CPU(プロセッサ)
12・・・主記憶装置
13・・・補助記憶装置
14,15・・・ネットワークインタフェース
18・・・入出力装置
21,31・・・処理部
22,32・・・記憶部
24・・・OFS通信部
34・・・OFC通信部
321・・・受信パケット記憶部(バッファ)

Claims (7)

  1. パケット転送装置と、
    前記パケット転送装置とネットワークを介して接続され、前記パケット転送装置で受信されるパケットの処理内容を前記パケット転送装置へ送る制御装置とを備え、
    前記パケット転送装置は、
    前記制御装置から受信された前記パケットの処理内容を記憶する記憶部と、
    受信されたパケットのうち前記記憶部に処理内容が記憶されておらず且つ蓄積が指定されたパケットを蓄積するバッファと、
    前記バッファに蓄積された複数のパケットの夫々の処理内容を問い合わせる問い合わせメッセージであって前記複数のパケットの集合を含んだ問い合わせメッセージを前記制御装置へ前記ネットワークを介して送信する処理を行う制御部とを含み、
    前記制御装置は、
    前記問い合わせメッセージを受信した場合に前記問い合わせメッセージ中の各パケットに対応する処理内容を前記パケット転送装置へ送信する処理を行う処理部を含む
    パケット転送システム。
  2. 前記制御部は、前記バッファへの蓄積対象のパケット中の所定情報と同一の情報を含むパケットが既に前記バッファに蓄積されている場合には、前記蓄積対象のパケットを廃棄する
    請求項1に記載のパケット転送システム。
  3. 前記制御部は、前記パケット転送装置で受信され、前記記憶部に処理内容が記憶されておらず、且つ前記蓄積の指定もないパケットのうち所定のパケットについては前記バッファに蓄積することなく前記所定パケットを単独で含んだ第2の問い合わせメッセージを前記制御装置へ前記ネットワークを介して送信する処理を行う
    請求項1又は2に記載のパケット転送システム。
  4. 制御装置とネットワークを介して接続され、前記制御装置が指定したパケットの処理内容に従って自装置で受信されるパケットに対する処理を行うパケット転送装置であって、
    前記パケットの処理内容を記憶する記憶部と、
    受信されたパケットのうち前記記憶部に処理内容が記憶されておらず且つ蓄積が指定されたパケットを蓄積するバッファと、
    前記バッファに蓄積された複数のパケットの夫々の処理内容を問い合わせる問い合わせメッセージであって前記複数のパケットの集合を含んだ問い合わせメッセージを前記制御装置へ前記ネットワークを介して送信する処理を行う制御部と
    を含むパケット転送装置。
  5. 制御装置とネットワークを介して接続され、前記制御装置が指定したパケットの処理内容に従って自装置で受信されるパケットに対する処理を行うパケット転送装置であって、
    前記パケットの処理内容を記憶する記憶部と、
    受信されたパケットのうち前記記憶部に処理内容が記憶されていないパケットを蓄積するバッファと、
    前記バッファに蓄積された複数のパケットの夫々の処理内容を問い合わせる問い合わせメッセージであって前記複数のパケットの集合を含んだ問い合わせメッセージを前記制御装置へ前記ネットワークを介して送信する処理を行う制御部と
    を含むパケット転送装置。
  6. 制御装置とネットワークを介して接続され、前記制御装置が指定したパケットの処理内容に従って自装置で受信されるパケットに対する処理を行うパケット転送装置のメッセージ送信制御方法であって、
    パケット転送装置が、
    受信されたパケットのうち前記パケットの処理内容が記憶されておらず且つ蓄積が指定されたパケットをバッファに蓄積し、
    前記バッファに蓄積された複数のパケットの夫々の処理内容を問い合わせる問い合わせメッセージであって前記複数のパケットの集合を含んだ問い合わせメッセージを前記制御装置へ前記ネットワークを介して送信する
    ことを含むパケット転送装置のメッセージ送信制御方法。
  7. 制御装置とネットワークを介して接続され、前記制御装置が指定したパケットの処理内容に従って自装置で受信されるパケットに対する処理を行うパケット転送装置のメッセージ送信制御方法であって、
    パケット転送装置が、
    受信されたパケットのうち前記パケットの処理内容が記憶されていないパケットをバッファに蓄積し、
    前記バッファに蓄積された複数のパケットの夫々の処理内容を問い合わせる問い合わせメッセージであって前記複数のパケットの集合を含んだ問い合わせメッセージを前記制御装置へ前記ネットワークを介して送信する
    ことを含むパケット転送装置のメッセージ送信制御方法。
JP2014137863A 2014-07-03 2014-07-03 パケット転送システム,及びパケット転送装置 Active JP6424496B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014137863A JP6424496B2 (ja) 2014-07-03 2014-07-03 パケット転送システム,及びパケット転送装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014137863A JP6424496B2 (ja) 2014-07-03 2014-07-03 パケット転送システム,及びパケット転送装置

Publications (2)

Publication Number Publication Date
JP2016015687A JP2016015687A (ja) 2016-01-28
JP6424496B2 true JP6424496B2 (ja) 2018-11-21

Family

ID=55231556

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014137863A Active JP6424496B2 (ja) 2014-07-03 2014-07-03 パケット転送システム,及びパケット転送装置

Country Status (1)

Country Link
JP (1) JP6424496B2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5402688B2 (ja) * 2010-02-02 2014-01-29 日本電気株式会社 パケット転送システム、パケット転送システム内におけるパケット集中回避方法
WO2013146808A1 (ja) * 2012-03-28 2013-10-03 日本電気株式会社 コンピュータシステム、及び通信経路変更方法

Also Published As

Publication number Publication date
JP2016015687A (ja) 2016-01-28

Similar Documents

Publication Publication Date Title
JP6418261B2 (ja) 通信システム、ノード、制御装置、通信方法及びプログラム
JP5621778B2 (ja) コンテンツベーススイッチシステム、及びコンテンツベーススイッチ方法
JP5958570B2 (ja) ネットワークシステム、コントローラ、スイッチ、及びトラフィック監視方法
JP5768861B2 (ja) 通信システム、ノード、制御サーバ、通信方法およびプログラム
JP5967090B2 (ja) 通信システム、制御装置、ノードの制御方法およびプログラム
US9998364B2 (en) Method for processing packet and forwarder
KR101618985B1 (ko) Sdn 환경에서 트래픽의 동적 제어를 위한 방법 및 장치
WO2022033340A1 (zh) 数据处理方法、用户面功能及装置
JP5725236B2 (ja) 通信システム、ノード、パケット転送方法およびプログラム
US20150229574A1 (en) Communication system, communication method, information processing apparatus, communication control method, and program
US20150341235A1 (en) Packet Processing Method, Forwarder, Packet Processing Device, and Packet Processing System
JP7103883B2 (ja) 通信システム、通信制御方法、及び通信装置
JP2008118281A (ja) 通信装置
JP6424496B2 (ja) パケット転送システム,及びパケット転送装置
JP5657505B2 (ja) ネットワークシステム、中継装置、通信方法、中継方法及び中継プログラム
WO2019119836A1 (zh) 报文处理的方法和设备
JP5752644B2 (ja) 通信路終端装置、データサイズ決定方法およびデータサイズ決定プログラム
JP6160101B2 (ja) 通信装置、制御装置、通信システム、制御メッセージの送信方法
JP6314970B2 (ja) 通信システム、制御装置、通信方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170406

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180605

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180612

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180925

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181008

R150 Certificate of patent or registration of utility model

Ref document number: 6424496

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150