(57)【要約】      （修正有）【課題】OpenFlowProtocolによりＳＦＣ制御を実現する。【解決手段】ＳＣＦ２０は、ForwardActionの際に、パケットの入力LogicalPortを利用し、パケットへの付加情報としてOXM_OF_TUNNEL_IDにServicePathID及びServiceIndexを埋込み、ForwardActionで指定したLogicalPortへパケットを送付する。LogicalPortは、パケットにServicePathID及びServiceIndexを付与し、指定されたPhysicalPortから出力する。ＳＦＦ３０は、入力LogicalPort、ServicePathID及びServiceIndexをもとにForwardのActionを実行することで、指定したServicePathID及びServiceIndexをパケットへ付与して目的のＳＦへパケットを転送する。【選択図】図１
2016149669.tif 000002
【特許請求の範囲】
【請求項１】
OpenFlowプロトコルに従ってパケットの転送制御を行う転送装置であって、
OpenFlowプロトコルのOpenFlow  Port情報に、サービスファンクション装置間でパケットのチェイニングを行う場合の経路を識別する経路識別情報と、該経路におけるチェイニングによりパケットが位置するサービスファンクション装置を示す位置情報とを含め、該経路識別情報及び該位置情報によりチェイニングに関するパケットの転送制御を行う転送制御部
を備えることを特徴とする転送装置。
【請求項２】
さらに、
前記転送制御部は、
チェイニング条件に、該チェイニング条件に合致するパケットに対して指定する論理ポート、物理ポート、前記経路識別情報及び前記位置情報を対応付けたテーブルを参照して、受信したパケットが該チェイニング条件に合致するか否かを判定し、
前記チェイニング条件に合致するパケットの、送信元ＭＡＣ（Media  Control  Access）へ自装置のＭＡＣアドレスを設定し、送信先ＭＡＣアドレスへ次のチェイニング先のサービスファンクション装置のＭＡＣアドレスを設定し、
パケットが合致する前記チェイニング条件に対応付けられた論理ポートを、該パケットが合致する前記チェイニング条件に対応付けられた前記経路識別情報及び前記位置情報を該パケットへ付加するポートに指定し、該パケットが合致する前記チェイニング条件に対応付けられた物理ポートを、該パケットを出力する出力ポートに指定する
ことを特徴とする請求項１に記載の転送装置。
【請求項３】
さらに、
前記転送制御部は、
パケットが入力された論理ポート番号と、該パケットに付加されている前記経路識別情報及び前記位置情報とが前記チェイニング条件に合致するか否かを判定する
ことを特徴とする請求項２に記載の転送装置。
【請求項４】
さらに、
前記位置情報は、チェイニングにより通過予定のサービスファンクション装置の数を初期値とし、サービスファンクション装置を通過する毎に１減算される数値であり、
前記転送制御部は、
前記位置情報が０である場合に、入力されたパケットの転送制御を行わず、該パケットのチェイニングを終了する
ことを特徴とする請求項２又は３に記載の転送装置。
【請求項５】
前記経路識別情報及び前記位置情報が、前記OpenFlow  Port情報のフィールドであるトンネル識別情報に設定される
ことを特徴とする請求項１〜４のいずれか１つに記載の転送装置。
【請求項６】
前記経路識別情報及び前記位置情報が、前記OpenFlow  Port情報のフィールドである、物理ポート番号及び論理ポート番号のいずれかを設定可能であるポート番号情報に設定され、該ポート番号情報を前記OpenFlow  Port情報の論理ポート番号とする
ことを特徴とする請求項１〜４のいずれか１つに記載の転送装置。
【請求項７】
前記位置情報が、３２ビットの前記ポート番号情報の下位８ビットに設定され、前記経路識別情報が、該ポート番号情報の上位２４ビットに設定され、
前記経路識別情報は１以上の値であり、前記OpenFlow  Port情報のフィールドである物理ポート番号情報は２５５以下の値であり、
前記転送制御部は、
前記ポート番号情報が２５６以上の値である場合に、パケットが前記チェイニング条件に合致すると判定する
ことを特徴とする請求項６に記載の転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、転送装置に関する。
【背景技術】
【０００２】
近年、ネットワークサービス処理（ＳＦ：Service  Function）を仮想化し、ＳＦの実行要否、順序等を自在に制御できるＳＦＣ（Service  Function  Chaining）の研究が進められている。ＳＦＣの転送方式の一例として、パケットへ付加した専用ヘッダにより転送制御を行う技術がある。また、ＳＤＮ（Software-Defined  Network)-Controller等から転送ルールを制御するプロトコルとして、OpenFlow  Protocolがある。OpenFlowは、OpenFlow  ControllerとOpenFlow  Switchの分離によるマルチベンダ指向等の利点がある。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】“draft-ietf-sfc-architecture-02”、［online］、２０１４年９月２０日、［２０１４年１２月１２日検索］、インターネット＜ＵＲＬ：https://tools.ietf.org/html/draft-ietf-sfc-architecture-02＞”
【非特許文献２】“draft-quinn-sfc-nsh-03”［online］、２０１４年７月３日、［２０１４年１２月１２日検索］、インターネット＜ＵＲＬ：https://tools.ietf.org/html/draft-quinn-sfc-nsh-03＞
【非特許文献３】“OpenFlow  Switch  Specification  Version1.4.0”、［online］、２０１３年１０月１４日、［２０１４年１２月１９日検索］、インターネット＜ＵＲＬ：https://www.opennetworking.org/images/stories/downloads/sdn-resources/onf-specifications/openflow/openflow-spec-v1.4.0.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、OpenFlow  Protocolは、ＭＡＣ（Media  Access  Control）アドレス、ＩＰ（Internet  Protocol）アドレス等のフィールド情報（Match  Field）と出力ポート指定等のアクション（Modify-Field）とを対応付けるルールの付加及び削除を行うものであるが、Match  Field及びModify-FieldにＳＦＣを制御するためのフィールドを有さない。このため、OpenFlow  Protocolでは、ＳＦＣを制御できない。
【０００５】
本願が開示する実施形態の一例は、上記に鑑みてなされたものであって、OpenFlow  ProtocolによりＳＦＣ制御を実現することを目的とする。
【課題を解決するための手段】
【０００６】
本願の実施形態の一例は、OpenFlowプロトコルに従ってパケットの転送制御を行う転送装置である。転送装置は、OpenFlowプロトコルのOpenFlow  Port情報に、サービスファンクション装置間でパケットのチェイニングを行う場合の経路を識別する経路識別情報と、経路におけるチェイニングによりパケットが位置するサービスファンクション装置を示す位置情報とを含め、経路識別情報及び位置情報によりチェイニングに関するパケットの転送制御を行う。
【発明の効果】
【０００７】
本願が開示する実施形態の一例によれば、例えば、OpenFlow  ProtocolによりＳＦＣ制御を実現することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施形態１に係るＳＦＣネットワークの構成の一例を示す図である。
【図２】図２は、実施形態１に係るＳＦＣパケットの構成の一例を示す図である。
【図３】図３は、実施形態１に係るＳＦＣで用いるOpenFlow  Port情報のフィールドの一例を示す図である。
【図４】図４は、実施形態１に係るOXM_OF_TUNNEL_IDへのService  Path  ID及びService  Indexの埋め込みの一例を示す図である。
【図５】図５は、実施形態１に係るOpenFlow  Switchの構成及び処理機能の概略の一例を示す図である。
【図６】図６は、実施形態１に係るＳＣＦの構成の一例を示す図である。
【図７】図７は、実施形態１に係るＳＣＦの処理手順の一例を示すフローチャートである。
【図８】図８は、実施形態１に係るＳＦＦの構成の一例を示す図である。
【図９】図９は、実施形態１に係るＳＦＦの処理手順の一例を示すフローチャートである。
【図１０】図１０は、実施形態２に係るOFPXMT_OFB_IN_PORTへのService  Path  ID及びService  Indexの埋め込みの一例を示す図である。
【図１１】図１１は、実施形態２に係るＳＦＣで用いるOpenFlow  Port情報のフィールドの一例を示す図である。
【図１２】図１２は、プログラムが実行されることによりＳＣＦ及びＳＦＦが実現されるコンピュータの一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、本願が開示する転送装置の実施形態を説明する。なお、以下の実施形態は、一例を示すに過ぎず、本願が開示する技術を限定するものではない。
【００１０】
［実施形態１］
（実施形態１に係るＳＦＣネットワークの構成）
図１は、実施形態１に係るＳＦＣネットワークの構成の一例を示す図である。実施形態１に係るＳＦＣネットワーク１は、Service  Function  Chaining（draft-ietf-sfc-architecture-02、draft-quinn-sfc-nsh-03参照。以下、ＳＦＣ）を行うネットワークであり、ＳＦＣ（Service  Function  Chaining）をOpenFlow  Protocolで制御する。
【００１１】
図１に示すように、ＳＦＣネットワーク１は、ＯＦＣ（OpenFlow  Controller）１０、ＳＣＦ（Service  Classification  Function)２０、ＳＦＦ（Service  Function  Forwarder）３０、ＳＦ（Service  Function）４０−１、ＳＦ４０−２を有する。ＳＦ４０−１及び４０−２を、ＳＦ４０と総称する。なお、図１に示すＳＣＦ２０、ＳＦＦ３０、ＳＦ４０の数は、一例であり、図示の数に限られない。
【００１２】
ＯＦＣ１０は、ＯＦＳ（OpenFlow  Switch）である、ＳＣＦ２０及びＳＦＦ３０へOpenFlow  ProtocolによりFlow  Tableの設定等の制御を行う。ＳＣＦ２０は、受信したパケットをＳＦＦ３０又はＳＦ４０へ転送する。ＳＦＦ３０は、受信したパケットを他のＳＦＦ３０又はＳＦ４０へ転送する。ＳＣＦ２０及びＳＦＦ３０は、転送装置の一例である。ＳＦ４０は、受信したパケットに対して所定のサービス処理を実行後、送信元のＳＦＦ３０へパケットを返信する。ＳＦ４０は、サービスファンクション装置の一例である。
【００１３】
なお、ＳＦ４０の形態には、ルータ型、リピータ型、サーバ型がある。ルータ型は、入力と出力が別ポートであり、それぞれ別segmentに属するＩＰアドレスを持つ。リピータ型は、入力と出力が別ポートであり、両端は同一のsegmentに属しＩＰアドレスを持たない。サーバ型は、入力と出力が同一ポートであり、端子はＩＰアドレスを持つ。実施形態１では、ＳＦ４０は、ルータ型を例として説明するが、他の型についても同様の構成とする。
【００１４】
（実施形態１に係るＳＦＣパケットの構成）
図２は、実施形態１に係るＳＦＣパケットの構成の一例を示す図である。図２に示すように、ＳＦＣ対象のＳＦＣパケットは、ヘッダ情報として、Src  Port、Dst  Port、Src  IP、Dst  IP、VLAN  ID、Priority、Src  MAC、Dst  MAC、Service  Path  ID、Service  Index、Outer、・・・を含む。Src  Portは、送信元ポート番号である。Dst  Portは、送信先ポート番号である。Src  IPは、送信元ＩＰアドレスである。Dst  IPは、送信先ＩＰアドレスである。VLAN（Virtual  Local  Area  Network）IDは、VLAN識別子である。Priorityは、パケットの優先度を表す。Src  MACは、送信元ＭＡＣアドレスである。Dst  MACは、送信先ＭＡＣアドレスである。Service  Path  IDは、ＳＦＣパケットが各ＳＦ４０を通過するＰａｔｈを識別するＩＤ（Identifier）情報である。Service  Indexは、ＳＦＣパケットがＰａｔｈのどの位置にいるかを示す情報であり、通過予定のＳＦ数を初期値とし、ＳＦを通過する毎に１減算される情報である。Outerは、Service  Path  ID及びService  Indexによるパケットのカプセル化後に、さらに付加されるアウタヘッダである。
【００１５】
（ＳＦＣで用いるOpenFlow  Port情報のフィールド）
図３は、実施形態１に係るＳＦＣで用いるOpenFlow  Port情報のフィールドの一例を示す図である。図３に示すように、実施形態１に係るＳＦＣでは、OpenFlow  Port情報のうち、OFPXMT_OFB_IN_PORT、OFPXMT_OFB_IN_PHY_PORT、OXM_OF_TUNNEL_IDを用いる。OFPXMT_OFB_IN_PORTは、物理ポート番号又は論理ポート番号のいずれも設定可能であるが、実施形態１では、パケットが入力された論理ポート番号が設定される、３２bit長のフィールドである。OFPXMT_OFB_IN_PHY_PORTは、パケットが入力された物理ポート番号が設定される、３２bit長のフィールドである。OXM_OF_TUNNEL_IDは、OFPXMT_OFB_IN_PORTに論理ポート番号が設定された場合の付加データとしてService  Path  ID及びService  Indexが設定される、６４bit長のフィールドである。
【００１６】
図４は、実施形態１に係るOXM_OF_TUNNEL_IDへのService  Path  ID及びService  Indexの埋め込みの一例を示す図である。図４に示すように、実施形態１では、OXM_OF_TUNNEL_IDには、２４bit長のService  Path  ID及び８bit長のService  Indexが格納される。
【００１７】
（実施形態１に係るOpenFlow  Switchの構成及び処理機能の概略）
図５は、実施形態１に係るOpenFlow  Switchの構成及び処理機能の概略の一例を示す図である。実施形態１は、ＳＦＣを、ＳＦＣヘッダによるencapsulation（tunnel）と見なし、OFPXMT_OFB_IN_PORTの付加データであるOXM_OF_TUNNEL_ID（Tunnel-ID）として、Service  Path  ID＋Service  Indexを用いる点に特徴がある。なお、ＳＣＦ２０及びＳＦＦ３０が、OpenFlow  Switchの例である。
【００１８】
例えば、図５に示すように、OpenFlow  Switchは、Physical  Port（物理ポート）３、Logical  Port（論理ポート）６からパケットが入力される。Logical  Port６は、OpenFlow  Switchに対して入力されたパケットの入力論理ポート番号（Logical  Port番号）等と、パケットのＳＦＣヘッダから抽出した、Service  Path  ID及びService  Indexから生成したTunnel-IDとを、パケットとともにOpenFlow  Pipelineへ送信する。
【００１９】
例えば、OpenFlow  Pipelineは、Flow  Tableを参照し、Logical  Port６から受信した、Ingress  PortであるLogical  Port番号６がFlow  TableのMatch  Fieldに設定されているＳＦＣ対象を示すIngress  Port番号（入力ポート番号）と合致し、かつ、Tunnel-IDから抽出したService  Path  ID及びService  IndexがMatch  Fieldに設定されているService  Path  ID及びService  Indexと合致する場合に、対応するModify  Field及びForwardに規定されるActionを実行する。すなわち、OpenFlow  Pipelineは、パケットに対してModify  Fieldに規定されるＭＡＣアドレスの書き替え等を実行する。そして、OpenFlow  Pipelineは、Forwardに規定されるLogical  Port番号７及びPhysical  Port番号４と、Tunnel-IDとしてのService  Path  ID及びService  Indexとを指定し、指定したLogical  Port７へTunnel-IDとともにパケットを転送する。
【００２０】
そして、例えば、OpenFlow  PipelineからTunnel-IDとともにパケットを受信したLogical  Port７は、Tunnel-IDに含まれるService  Path  ID及びService  IndexをパケットのＳＦＣヘッダへ付加して、Physical  Port４からＳＦへ送信する。
【００２１】
（実施形態１に係るＳＣＦの構成）
図６は、実施形態１に係るＳＣＦの構成の一例を示す図である。実施形態１に係るＳＣＦ２０は、ＳＦＣネットワーク１の外部から受信したパケットに対して、Tunnel-IDを付与するＯＦＳである。すなわち、ＳＣＦ２０は、Forward  Actionの際に、パケットの入力Logical  Portを利用し、パケットへの付加情報としてOXM_OF_TUNNEL_IDにService  Path  ID及びService  Indexを埋込み、Forward  Actionで指定したLogical  Portへパケットを送付する。Logical  Portは、パケットにService  Path  ID及びService  Indexを付与し、Outer（VxLAN等）ヘッダを付与し、指定されたPhysical  Portから出力する。
【００２２】
ＳＣＦ２０は、Physical  Port２１、OpenFlow  Pipeline２２、Physical  Port２３を有する。Physical  Port２３は、Logical  Port２３ａを有する。Physical  Port２１のPhysical  Port番号は、例えば３であるとする。Physical  Port２３のPhysical  Port番号は、例えば４であるとする。Logical  Port２３ａのLogical  Port番号は、例えば７であるとする。
【００２３】
OpenFlow  Pipeline２２は、Flow  Table２２ａを有する。図６に示すFlow  Table２２ａには、例えば、Match  Fieldに、Src  IP、Dst  IP、Src  MAC、Dst  MACが設定されている。
【００２４】
ＳＣＦ２０は、Physical  Port２１から入力されたパケットのヘッダから、Src  IP、Dst  IP、Src  MAC、Dst  MAC、Service  Path  ID、Service  Indexを抽出する。そして、OpenFlow  Pipeline２２は、入力されたパケットから抽出されたSrc  IP、Dst  IP、Src  MAC、Dst  MACが、Flow  Table２２ａのMatch  Fieldに設定されているSrc  IP、Dst  IP、Src  MAC、Dst  MACの全てと合致（ＳＦＣフロー条件に合致）するとき、対応するModyfy  FieldのActionとして、入力されたパケットのSrc  MACを自情報（自装置のＭＡＣアドレス）へ、Dst  MACを宛先ＳＦ情報（宛先ＳＦのＭＡＣアドレス）へ書き替える。
【００２５】
また、OpenFlow  Pipeline２２は、合致するＳＦＣフロー条件に対応するForwardのActionとして、Logical  Portとして７を指定し、Physical  Portとして４を指定し、OXM_OF_TUNNEL_ID（Tunnel-ID）へService  Path  ID及びService  Indexを埋め込み、パケットとともに、Output  Portとして指定したLogical  Port７（Logical  Port２３ａ）へ送信する。
【００２６】
そして、Logical  Port２３ａは、OpenFlow  Pipeline２２から受信したTunnel-IDからService  Path  ID及びService  Indexを抽出してパケットへ付与し、Outer（VxLAN等）ヘッダを付与するトンネリング処理を実行し、トンネリング処理したパケットをPhysical  Port２３（Physical  Port４）から出力する。
【００２７】
（実施形態１に係るＳＣＦの処理手順）
図７は、実施形態１に係るＳＣＦの処理手順の一例を示すフローチャートである。先ず、ＳＣＦ２０は、OpenFlow  Pipeline２２にて、受信パケットがＳＦＣ対象のフロー条件に合致するか否かを判定する（ステップＳ１１）。ＳＣＦ２０は、OpenFlow  Pipeline２２にて、受信パケットがＳＦＣ対象のフロー条件に合致すると判定した場合（ステップＳ１１Ｙｅｓ）、ステップＳ１２へ処理を移し、合致しないと判定した場合（ステップＳ１１Ｎｏ）、他の合致するフロー条件に従ってパケットを転送し（ステップＳ２０）、処理を終了する。
【００２８】
ステップＳ１２では、ＳＣＦ２０は、OpenFlow  Pipeline２２にて、受信パケットのSrc  MAC及びDst  MACを書き替える。次に、ＳＣＦ２０は、OpenFlow  Pipeline２２にて、Flow  Table２２ａに従って、Logical  Portを指定する（ステップＳ１３）。次に、ＳＣＦ２０は、OpenFlow  Pipeline２２にて、Flow  Table２２ａに従って、Physical  Portを指定する（ステップＳ１４）。次に、ＳＣＦ２０は、OpenFlow  Pipeline２２にて、Flow  Table２２ａに従って、Service  Path  ID及びService  Indexを指定する（ステップＳ１５）。次に、ＳＣＦ２０は、OpenFlow  Pipeline２２にて、OXM_OF_TUNNEL_ID（Tunnel-ID）へService  Path  ID及びService  Indexを埋め込む（ステップＳ１６）。
【００２９】
次に、ＳＣＦ２０は、OpenFlow  Pipeline２２にて、Service  Path  ID及びService  Indexを埋め込んだOXM_OF_TUNNEL_IDとともに、パケットを、ステップＳ１３で指定したLogical  Portへ転送する（ステップＳ１７）。次に、ＳＣＦ２０は、ステップＳ１３で指定したLogical  Portにて、パケットへOuterヘッダを付加する（ステップＳ１８）。次に、ＳＣＦ２０は、ステップＳ１４で指定したPhysical  Portからパケットを出力する（ステップＳ１９）。ＳＣＦ２０は、ステップＳ１９が終了すると、処理を終了する。
【００３０】
（実施形態１に係るＳＦＦの構成）
図８は、実施形態１に係るＳＦＦの構成の一例を示す図である。実施形態１に係るＳＦＦ３０は、ＳＣＦ２０又は他のＳＦＦ３０から受信したパケットに対して、入力Logical  Port及びTunnel-IDをもとにForwardのActionを実行することで、指定したLogical  Portにて指定したService  Path  ID及びService  Indexをパケットへ付与して目的のＳＦへパケットを転送するＯＦＳである。
【００３１】
すなわち、ＳＦＦ３０は、Logical  Portを利用し、Logical  Portにて入力パケットからService  Path  ID及びService  Indexを抽出し、付加情報としてのOXM_OF_TUNNEL_ID内にService  Path  ID及びService  Indexを埋込み、OpenFlow  Pipelineへ送付する。OpenFlow  Pipelineは、Flow  TableのMatch  FieldのIngress  Port、Service  Path  ID及びService  Indexが、パケットが入力されたLogical  Portと、OXM_OF_TUNNEL_IDから抽出したService  Path  ID及びService  Indexと一致する場合に、対応するModify  Field及びForwardに規定されるActionを実行することで、パケットを目的のＳＦへチェイニングする。
【００３２】
ＳＦＦ３０は、Physical  Port３１、OpenFlow  Pipeline３２、Physical  Port３３を有する。Physical  Port３１は、Logical  Port３１ａを有する。Physical  Port３３は、Logical  Port３３ａを有する。Physical  Port３１のPhysical  Port番号は、例えば４であるとする。Logical  Port３１ａのLogical  Port番号は、例えば６であるとする。また、Physical  Port３３のPhysical  Port番号は、例えば４であるとする。Logical  Port３３ａのLogical  Port番号は、例えば７であるとする。
【００３３】
OpenFlow  Pipeline３２は、Flow  Table３２ａを有する。図８に示すFlow  Table３２ａには、例えば、Match  Fieldに、Ingress  Port（ＳＦＣ入力を示すLogocal  Port番号）、OXM_OF_TUNNEL_IDとして、Service  Path  ID及びService  Indexが設定されている。
【００３４】
ＳＦＦ３０のLogical  Port３１ａは、Physical  Port３１から入力されたパケットのヘッダから、Service  Path  ID、Service  Indexを抽出する。また、Logical  Port３１ａは、入力パケットからOuter（VxLAN等）ヘッダ、ＳＦＣヘッダを削除する。また、Logical  Port３１ａは、抽出したService  Indexを１ディクリメントする。そして、OpenFlow  Pipeline３２は、Logical  Port３１ａのポート番号６、入力されたパケットから抽出されたService  Path  ID、Service  Indexが、Flow  Table３２ａのMatch  Fieldに設定されているIngress  Port、Service  Path  ID、Service  Indexの全てと合致（ＳＦＣフロー条件に合致）するとき、対応するModyfy  FieldのActionとして、入力されたパケットのSrc  MACを自情報（自装置のＭＡＣアドレス）へ、Dst  MACを宛先ＳＦ情報（宛先ＳＦのＭＡＣアドレス）へ書き替える。
【００３５】
また、OpenFlow  Pipeline３２は、合致するＳＦＣフロー条件に対応するForwardのActionとして、Logical  Portとして７を指定し、Physical  Portとして４を指定し、OXM_OF_TUNNEL_ID（Tunnel-ID）へService  Path  ID及びService  Indexを埋め込み、パケットとともに、Output  Portとして指定したLogical  Port７（Logical  Port３３ａ）へ送信する。
【００３６】
そして、Logical  Port３３ａは、OpenFlow  Pipeline３２から受信したTunnel-IDからService  Path  ID及びService  Indexを抽出してパケットへ付与し、Outer（VxLAN等）ヘッダを付与するトンネリング処理を実行し、トンネリング処理したパケットをPhysical  Port３３（Physical  Port４）から出力する。
【００３７】
（実施形態１に係るＳＦＦの処理手順）
図９は、実施形態１に係るＳＦＦの処理手順の一例を示すフローチャートである。先ず、ＳＦＦ３０は、パケットが入力されたLogical  Portにて、入力パケットからLogical  Port番号、Physical  Port番号、及び、Service  Path  ID、Service  Indexを取得する（ステップＳ２１）。次に、ＳＦＦ３０は、ステップＳ２１で取得したService  Indexが０より大であるか否かを判定する（ステップＳ２２）。ＳＦＦ３０は、ステップＳ２１で取得したService  Indexが０より大である場合（ステップＳ２２Ｙｅｓ）、ステップＳ２３へ処理を移し、Service  Indexが０である場合（ステップＳ２２Ｎｏ）、入力パケットを破棄し（ステップＳ３５）、処理を終了する。なお、ＳＦＦ３０は、ステップＳ３５で、パケットを破棄せず、パケットのチェイニングを終了し、予め定められた宛先へパケットを送信するとしてもよい。
【００３８】
ＳＦＦ３０は、パケットが入力されたLogical  Portにて、Service  Indexを１ディクリメントする（ステップＳ２３）。次に、ＳＦＦ３０は、パケットが入力されたLogical  Portにて、入力パケットからOuterヘッダを削除する（ステップS２４）。次に、ＳＦＦ３０は、OpenFlow  Pipeline３２にて、入力パケットがＳＦＣ対象のフロー条件に合致するか否かを判定する（ステップＳ２５）。ＳＦＦ３０は、OpenFlow  Pipeline３２にて、入力パケットがＳＦＣ対象のフロー条件に合致すると判定した場合（ステップＳ２５Ｙｅｓ）、ステップＳ２６へ処理を移す。一方、ＳＦＦ３０は、OpenFlow  Pipeline３２にて、入力パケットがＳＦＣ対象のフロー条件に合致しないと判定した場合（ステップＳ２５Ｎｏ）、他の合致するフロー条件に従ってパケットを転送し（ステップＳ３４）、処理を終了する。
【００３９】
ステップＳ２６では、ＳＦＦ３０は、OpenFlow  Pipeline３２にて、受信パケットのSrc  MAC及びDst  MACを書き替える。次に、ＳＦＦ３０は、OpenFlow  Pipeline３２にて、Flow  Table３２ａに従って、Logical  Portを指定する（ステップＳ２７）。次に、ＳＦＦ３０は、OpenFlow  Pipeline３２にて、Flow  Table３２ａに従って、Physical  Portを指定する（ステップＳ２８）。次に、ＳＦＦ３０は、OpenFlow  Pipeline３２にて、Flow  Table３２ａに従って、Service  Path  ID及びService  Indexを指定する（ステップＳ２９）。次に、ＳＦＦ３０は、OpenFlow  Pipeline３２にて、OXM_OF_TUNNEL_ID（Tunnel-ID）へService  Path  ID及びService  Indexを埋め込む（ステップＳ３０）。
【００４０】
次に、ＳＦＦ３０は、OpenFlow  Pipeline３２にて、Service  Path  ID及びService  Indexを埋め込んだOXM_OF_TUNNEL_IDとともに、パケットを、ステップＳ２７で指定したLogical  Portへ転送する（ステップＳ３１）。次に、ＳＦＦ３０は、ステップＳ２７で指定したLogical  Portにて、パケットへOuterヘッダを付加する（ステップＳ３２）。次に、ＳＦＦ３０は、ステップＳ２８で指定したPhysical  Portからパケットを出力する（ステップＳ３３）。ＳＦＦ３０は、ステップＳ３３が終了すると、処理を終了する。
【００４１】
［実施形態２］
実施形態２は、OpenFlow  Port情報へのService  Path  ID、Service  Indexの埋め込み先として、実施形態１のようにOXM_OF_TUNNEL_ID（Tunnel-ID）を用いるのではなく、図１０及び図１１に示すようにOFPXMT_OFB_IN_PORT（Logical  Port番号）を用いる。すなわち、実施形態２では、Service  Path  ID＋Service  IndexがLogical  Port番号となる。なお、図１１に示すように、実施形態２においても、OFPXMT_OFB_IN_PHY_PORTは、実施形態１同様、Physical  Port番号を表す。
【００４２】
実施形態２では、３２bit長のOFPXMT_OFB_IN_PORTが、同じく３２bit長のOFPXMT_OFB_IN_PHY_PORTと同値になることを回避するため、Service  Path  IDは１以上の値とし、Physical  Port番号が２５５以下であることを前提とする。ＳＦＣからの入力であることは、OFPXMT_OFB_IN_PORTが２５６以上であることから判断される。
【００４３】
［実施形態による効果］
実施形態１及び２によれば、ＮＳＨ（Network  Service  Header）のフィールドであるService  Path  ID及びService  Indexを、ＮＳＨを利用してパケットへ付加するのではなく、OpenFlow  Port情報の６４bit長のOXM_OF_TUNNEL_ID又は３２bit長のOFPXMT_OFB_IN_PORTを利用してパケットへ付与するため、２４byte長のＮＳＨの付加の処理と比較して、処理負荷を軽減できる。このため、OpenFlow  Switchが要求される高速処理性能を損ねることなく、OpenFlow  ProtocolによりＳＦＣ制御を実現することができる。
【００４４】
（ＳＣＦ及びＳＦＦの装置構成について）
図６に示すＳＣＦ２０及び図８に示すＳＦＦ３０の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要さない。すなわち、ＳＣＦ２０及びＳＦＦ３０の機能の分散及び統合の具体的形態は図示のものに限られず、全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散又は統合して構成することができる。
【００４５】
また、ＳＣＦ２０及びＳＦＦ３０において行われる各処理は、全部又は任意の一部が、ＣＰＵ（Central  Processing  Unit）もしくはＮＰ（Network  Processor）等の処理装置及び処理装置により解析実行されるプログラムにて実現されてもよい。また、ＳＣＦ２０及びＳＦＦ３０において行われる各処理は、ワイヤードロジックによるハードウェアとして実現されてもよい。
【００４６】
また、実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともできる。もしくは、実施形態において説明した各処理のうち、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上述及び図示の処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて適宜変更することができる。
【００４７】
（プログラムについて）
図１２は、プログラムが実行されることにより、ＳＣＦ及びＳＦＦが実現されるコンピュータの一例を示す図である。コンピュータ１０００は、例えば、メモリ１０１０、ＣＰＵ１０２０（もしくはＮＰ）を有する。また、コンピュータ１０００は、ハードディスクドライブインタフェース１０３０、ディスクドライブインタフェース１０４０、シリアルポートインタフェース１０５０、ビデオアダプタ１０６０、ネットワークインタフェース１０７０を有する。コンピュータ１０００において、これらの各部はバス１０８０によって接続される。
【００４８】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０３１に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１０４１に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１０４１に挿入される。シリアルポートインタフェース１０５０は、例えばマウス１０５１、キーボード１０５２に接続される。ビデオアダプタ１０６０は、例えばディスプレイ１０６１に接続される。
【００４９】
ハードディスクドライブ１０３１は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、ＳＣＦ２０及びＳＦＦ３０の各処理を規定するプログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュール１０９３として、例えばハードディスクドライブ１０３１に記憶される。例えば、ＳＣＦ２０及びＳＦＦ３０における機能構成と同様の情報処理を実行するためのプログラムモジュール１０９３が、ハードディスクドライブ１０３１に記憶される。
【００５０】
また、実施形態の処理で用いられる設定データは、プログラムデータ１０９４として、例えばメモリ１０１０やハードディスクドライブ１０３１に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０３１に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して実行する。
【００５１】
なお、プログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０３１に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１０４１等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、プログラムモジュール１０９３やプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール１０９３やプログラムデータ１０９４は、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【００５２】
上記実施形態は、本願が開示する技術に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００５３】
１        ＳＦＣネットワーク
１０      ＯＦＣ
２０      ＳＣＦ
２１      Physical  Port
２２      OpenFlow  Pipeline
２２ａ    Flow  Table
２３      Physical  Port
２３ａ    Logical  Port
３０      ＳＦＦ
３１      Physical  Port
３１ａ    Logical  Port
３２      OpenFlow  Pipeline
３２ａ    Flow  Table
３３      Physical  Port
３３ａ    Logical  Port
４０、４０−１、４０−２  ＳＦ
１０００  コンピュータ
１０１０  メモリ
１０２０  ＣＰＵ
【図１】
2016149669.tif 000003
【図２】
2016149669.tif 000004
【図３】
2016149669.tif 000005
【図４】
2016149669.tif 000006
【図５】
2016149669.tif 000007
【図６】
2016149669.tif 000008
【図７】
2016149669.tif 000009
【図８】
2016149669.tif 000010
【図９】
2016149669.tif 000011
【図１０】
2016149669.tif 000012
【図１１】
2016149669.tif 000013
【図１２】
2016149669.tif 000014