(57)【要約】【課題】ＣＰＵの輻輳を低減する。【解決手段】通信システム１は、パケットの転送及びキューイングを行うプログラマブルスイッチ１０と、パケットに対してネットワーク機能を実行する複数のＶＮＦ２０と、プログラマブルスイッチ１０を制御するコントローラ４０とを有し、プログラマブルスイッチ１０は、キュー群１１に対し、コントローラ４０の指示に従って、入力されたパケットをいずれかのＶＮＦ２０に振り分けるキュー振り分け部１２を有し、ＶＮＦ２０は、サーバリソースの消費量を測定して、コントローラ４０に負荷状況を通知する負荷測定部２２を有し、コントローラ４０は、一定のルールを基に各ＶＮＦ２０の負荷を分析する負荷分析部４１と、所定値よりも負荷の高いＶＮＦの数に基づく値が一定数を超えたか否かに応じて、キューの振り分けルールを変更するキュー制御部４２とを有する。【選択図】図１
2020022146.tif 000002
【特許請求の範囲】
【請求項１】
ＩＰ（Internet  Protocol）通信を実行する通信システムであって、パケットの転送及びキューイングを行うプログラマブルスイッチと、パケットに対してネットワーク機能を実行する複数のＶＮＦ（Virtual  Network  Function）と、ＶＮＦが動作するサーバと、前記プログラマブルスイッチを制御するコントローラと、を有する通信システムであって、
前記プログラマブルスイッチは、
複数のキューにより構成されるキュー群と、
前記キュー群に対し、前記コントローラの指示に従って、入力されたパケットをいずれかの前記ＶＮＦに振り分けるキュー振り分け部と、
を有し、
前記ＶＮＦは、
サーバリソースの消費量を測定して、前記コントローラに負荷状況を通知する負荷測定部
を有し、
前記コントローラは、
一定のルールを基に各ＶＮＦの負荷を分析する負荷分析部と、
所定値よりも負荷の高いＶＮＦの数に基づく値が一定数を超えたか否かに応じて、前記キュー振り分け部に対するキューの振り分けルールを変更するキュー制御部と、
を有することを特徴とする通信システム。
【請求項２】
前記キュー制御部は、前記ＶＮＦごとに、パケット内ヘッダの情報により分類可能な複数の種別のパケットが入力される場合、前記キュー群から利用可能なキュー数を取得し、前記負荷の高いＶＮＦの数とパケット種別数との積が、前記利用可能なキュー数よりも大きい場合には、ＶＮＦ単位でのキュー振り分けを行う振り分けルールに変更し、前記負荷の高いＶＮＦの数とパケット種別数との積が、前記利用可能なキュー数未満である場合には、前記ＶＮＦとパケット種別との組み合わせに応じてキュー振り分けを行う振り分けルールに変更することを特徴とする請求項１に記載の通信システム。
【請求項３】
ＩＰ（Internet  Protocol）通信を実行する通信システムであって、パケットの転送及びキューイングを行うプログラマブルスイッチと、パケットに対してネットワーク機能を実行する複数のＶＮＦ（Virtual  Network  Function）と、ＶＮＦが動作するサーバと、前記プログラマブルスイッチを制御するコントローラと、を有する通信システムが実行する通信方法であって、
前記プログラマブルスイッチは、複数のキューにより構成されるキュー群を有し、
前記ＶＮＦが、サーバリソースの消費量を測定して、前記コントローラに負荷状況を通知する工程と、
前記コントローラが、一定のルールを基に各ＶＮＦの負荷を分析する工程と、
前記コントローラが、所定値よりも負荷の高いＶＮＦの数に基づく値を超えたか否かに応じて、前記プログラマブルスイッチに対するキューの振り分けルールを変更する工程と、
前記プログラマブルスイッチが、前記キュー群に対し、前記コントローラが変更したキューの振り分けルールに従って、入力されたパケットをいずれかの前記ＶＮＦに振り分ける工程と、
を含んだことを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム及び通信方法に関する。
【背景技術】
【０００２】
従来、プログラマブルスイッチと仮想ネットワーク機能（ＶＮＦ（Virtual  Network  Function））群を分離して実装する方法において、ＣＰＵ（Central  Processing  Unit）向けトラヒックのうち、特に負荷の重い制御パケットについて流量の制限（レートリミット）を行うことによって、一部ユーザの制御パケット増大に起因してＶＮＦが配置されたＣＰＵのリソースが枯渇することを防ぐ方法が提案されている（例えば、非特許文献１，２参照）。
【０００３】
例えば、非特許文献１には、ソフトウェアの高負荷防止機構を搭載することによって、ソフトウェアで処理するパケットに対するレートリミット、優先制御により、ＤｏＳ攻撃などからソフトウェアを保護し、ルーティング処理等の安定した動作を実現する方法が記載されている。また、非特許文献２には、ＣＰＵに対するパケットのレート制限機能によって、ソフトウェアに渡すパケットのレートを制御し、サービス拒否攻撃を防止する方法が記載されている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Alaxala、［online］、［平成３０年６月２５日検索］、インターネット＜ＵＲＬ：https://www.alaxala.com/jp/products/archive/datasheet_pamphlet/pdf/ax8300s_ds_op_ver12_7_r2.pdf＞
【非特許文献２】Catalyst  6500/6000スイッチのCPU高使用率、［online］、［平成３０年６月２５日検索］、インターネット＜ＵＲＬ：https://www.cisco.com/c/jp_jp/support/docs/switches/catalyst-6500-series-switches/63992-6k-high-cpu.html＞
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の方法では、単一のＣＰＵに対するレートリミットのみが考慮されている。このため、従来の方法では、複数のＣＰＵに対してプログラマブルスイッチが接続されるケースでは、よりレートリミットに必要なキュー数が不足してしまい、一部のフローにレートリミットを実施できずＣＰＵが輻輳してしまうという問題があった。言い換えると、従来の方法では、単一の装置においてソフトウェア（ＣＰＵ）を保護するためのレートリミットを実行できるが、ＳＤＮ（Software-Defined  Networking）を適用したネットワークにおいては、ソフトウェア（ＣＰＵ）とハードウェア（プログラマブルスイッチ等）とが分離するため、単一のハードウェアに対して複数のＣＰＵが接続されると、ハードウェア側のレートリミット資源が枯渇する可能性がある。
【０００６】
本発明は、上記に鑑みてなされたものであって、ＣＰＵの輻輳を低減する通信システム及び通信方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明に係る通信システムは、ＩＰ（Internet  Protocol）通信を実行する通信システムであって、パケットの転送及びキューイングを行うプログラマブルスイッチと、パケットに対してネットワーク機能を実行する複数のＶＮＦ（Virtual  Network  Function）と、ＶＮＦが動作するサーバと、プログラマブルスイッチを制御するコントローラと、を有する通信システムであって、プログラマブルスイッチは、複数のキューにより構成されるキュー群と、キュー群に対し、コントローラの指示に従って、入力されたパケットをいずれかのＶＮＦに振り分けるキュー振り分け部と、を有し、ＶＮＦは、サーバリソースの消費量を測定して、コントローラに負荷状況を通知する負荷測定部を有し、コントローラは、一定のルールを基に各ＶＮＦの負荷を分析する負荷分析部と、所定値よりも負荷の高いＶＮＦの数に基づく値が一定数を超えたか否かに応じて、キュー振り分け部に対するキューの振り分けルールを変更するキュー制御部と、を有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、ＣＰＵの輻輳を低減する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態における通信システムの構成の一例を示す図である。
【図２】図２は、図１に示す通信システムにおける処理の流れを説明する図である。
【図３】図３は、図１に示す通信システムにおける処理の流れを説明する図である。
【図４】図４は、図１に示す通信システムにおける通信処理の処理手順を示すシーケンス図である。
【図５】図５は、プログラムが実行されることにより、プログラマブルスイッチ、サーバ、コントローラが実現されるコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【００１１】
［実施の形態］
本発明の実施の形態について説明する。図１は、実施の形態における通信システムの構成の一例を示す図である。
【００１２】
図１に示すように、実施の形態に係る通信システム１は、プログラマブルスイッチ１０と、複数のＶＮＦ２０と、ＶＮＦ２０が動作するサーバ３０と、コントローラ４０とを有し、ＩＰ通信を実行する。
【００１３】
プログラマブルスイッチ１０は、パケットの転送及びキューイングを行う。プログラマブルスイッチ１０は、複数のキューにより構成されるキュー群１１と、キュー群１１に対し、コントローラ４０の指示に従って入力されたパケットをいずれかのＶＮＦ２０に振り分けるキュー振り分け部１２と、を有する。
【００１４】
サーバ３０は、ＶＮＦ２０が動作するために必要なサーバリソースを有する。サーバ３０は、ＮＦＶ（Network  Function  Virtualization）を構築するための基盤となり、クラウド上に用意された仮想的なサーバであってもよい。
【００１５】
各ＶＮＦ２０は、ＮＦＶの機能を提供するための専用ソフトであり、専用ハードで提供されていた機能をソフトウェアで再実装したものである。各ＶＮＦ２０は、各種ネットワーク機能を提供する。例えば、ＶＮＦ２０は、パケットに対してネットワーク機能を実行する。ＶＮＦ２０は、プログラマブルスイッチ１０から転送されたパケットを処理するパケット処理部２１を有する。ＶＮＦ２０は、サーバリソースの消費量を測定して、コントローラ４０に負荷状況を通知する負荷測定部２２を有する。
【００１６】
コントローラ４０は、プログラマブルスイッチ１０を制御する。コントローラ４０は、一定のルールを基に各ＶＮＦ２０の負荷を分析する負荷分析部４１と、キュー振り分け部１２に対するキューの振り分けルールを変更するキュー制御部４２と、を有する。
【００１７】
例えば、キュー制御部４２は、所定値よりも負荷の高いＶＮＦの数に基づく値が一定数を超えたか否かに応じて、キュー振り分け部１２に対するキューの振り分けルールを変更する。具体的には、キュー制御部４２は、所定値よりも負荷の高いＶＮＦの数が一定数を超えたか否かに応じて、キュー振り分け部１２に対するキューの振り分けルールを変更する。また、キューの振り分けルールの変更タイミングは、これに限らない。
【００１８】
例えば、キュー制御部４２は、ＶＮＦ２０ごとに、パケット内ヘッダの情報により分類可能な複数の種別のパケットが入力される場合、キュー群１１から利用可能なキュー数（キューリソース情報でもよい。）を取得する。そして、キュー制御部４２は、所定値よりも負荷の高いＶＮＦの数とパケット種別数との積が、利用可能なキュー数よりも大きい場合には、ＶＮＦ２０単位でのキュー振り分けを行う振り分けルールに変更する。一方、キュー制御部４２は、所定値よりも負荷の高いＶＮＦ２０の数とパケット種別数との積が、利用可能なキュー数未満である場合には、ＶＮＦ２０とパケット種別と組み合わせに応じてキュー振り分けを行う振り分けルールに変更する。このように、コントローラ４０は、所定値よりも負荷の高いＶＮＦの数とパケット種別数との積と、利用可能なキュー数とを比較し、より適切なキュー振り分けを行ってもよい。
【００１９】
［処理の流れ］
次に、通信システム１における処理の流れについて説明する。図２及び図３は、図１に示す通信システム１における処理の流れを説明する図である。
【００２０】
まず、図２では、複数のＶＮＦが輻輳している場合を例に説明する。図２に示すように、ＶＮＦ２０Ａ〜２０Ｃは、サーバリソースの消費量を測定して、コントローラ４０に負荷状況（負荷測定結果）を通知する（図２の（１）参照）。続いて、コントローラ４０は、ＶＮＦ２０Ａ〜２０Ｃの負荷を分析する。コントローラ４０は、分析の結果、複数のＶＮＦ２０Ａ〜２０Ｃが輻輳していると判定した場合、キューの振り分けルールを変更する（図２の（２）参照）。
【００２１】
この例では、コントローラ４０は、ＶＮＦ２０Ａ〜２０Ｃのそれぞれにキューを振り分けるルールに変更し、変更したキューの振り分けルールをプログラマブルスイッチ１０に通知する（図２の（３）参照）。この結果、プログラマブルスイッチ１０では、ＶＮＦ２０Ａ〜２０Ｃのそれぞれにキューが振り分けられる。このように、通信システム１では、複数のＶＮＦ２０で輻輳している場合には、ＣＰＵ単位で荒くレートリミットを行うことによって、細かくレートリミットを行う場合と比して、サービスレベルは低下するものの網を保護し、ＣＰＵの輻輳を低減する。
【００２２】
また、図３では、単一のＶＮＦ２０Ｂのみが輻輳している場合を例に説明する。図３に示すように、ＶＮＦ２０Ａ〜２０Ｃがコントローラ４０に負荷状況（負荷測定結果）を通知すると（図３の（１）参照）、コントローラ４０は、ＶＮＦ２０Ａ〜２０Ｃの負荷を分析する。コントローラ４０は、分析の結果、ＶＮＦ２０Ｂのみが輻輳していると判定した場合、キューの振り分けルールを変更する（図３の（２）参照）。
【００２３】
この例では、コントローラ４０は、ＶＮＦ２０Ｂのみにキューを振り分けるルールに変更し、変更したキューの振り分けルールをプログラマブルスイッチ１０に通知する（図３の（３）参照）。この結果、プログラマブルスイッチ１０では、ＶＮＦ２０Ｂのみにキューが振り分けられる。このように、通信システム１では、輻輳が生じているＶＮＦ２０のみに、きめ細かくレートリミットを行うことによって、サービスレベルを向上する。
【００２４】
［処理手順］
図４は、図１に示す通信システム１における通信処理の処理手順を示すシーケンス図である。
【００２５】
図４に示すように、サーバ３０では、各ＶＡＮ２０が、サーバリソースの消費量を測定する負荷測定を行い（ステップＳ１〜ステップＳ３）、それぞれ、負荷状況をコントローラ４０に通知する（ステップＳ４〜ステップＳ６）。
【００２６】
コントローラ４０は、各ＶＮＦの各ＶＮＦ２０の負荷を分析して（ステップＳ７）、所定値よりも負荷の高いＶＮＦの数に基づく値が一定数を超えたか否かを判定する（ステップＳ８）。コントローラ４０は、所定値よりも負荷の高いＶＮＦの数に基づく値が一定数を超えていないと判定した場合（ステップＳ８：Ｎｏ）、改めて、各ＶＮＦ２０による負荷状況を受ける。
【００２７】
一方、コントローラ４０は、所定値よりも負荷の高いＶＮＦの数に基づく値が一定数を超えたと判定した場合（ステップＳ８：Ｙｅｓ）、ＣＰＵの輻輳を低減するために、プログラマブルスイッチ１０に対するキューの振り分けルールを変更する（ステップＳ９）。
【００２８】
そして、プログラマブルスイッチ１０は、コントローラ４０から、変更されたキューの振り分けルールの通知を受けると（ステップＳ１０）、変更されたキューの振り分けルールにしたがって、キューを振り分けて（ステップＳ１１）、ＣＰＵの輻輳を低減する。
【００２９】
［実施の形態の効果］
このように、本実施の形態では、コントローラ４０が、複数のＶＮＦ２０の負荷をそれぞれ分析し、所定値よりも負荷の高いＶＮＦの数に基づく値が一定数を超えたか否かに応じて、プログラマブルスイッチ１０に対するキューの振り分けルールを変更する。そして、プログラマブルスイッチ１０は、複数のキューで構成されるキュー群に対し、コントローラ４０が変更した振り分けルールに従って、入力されたパケットをいずれかのＶＮＦ２０に振り分けている。
【００３０】
したがって、本実施の形態では、各ＶＮＦ２０の負荷状況に応じて、プログラマブルスイッチ１０のキューを振り分けることによって、ＣＰＵの輻輳を低減している。例えば、実施の形態では、荒い粒度でのレートリミットと細かい粒度でのレートリミットとになる２種の振り分けルールを用いることによって、複数のＶＮＦ２０で輻輳が発生した場合にはＶＮＦ単位の荒い粒度でレートリミットを行い、一部のＶＮＦ２０で輻輳が発生した場合は、このＶＮＦ２０に応じた細かい粒度でレートリミットを行う。このように、本実施の形態では、負荷状況に応じたレートリミットを実施することによって、ＣＰＵの輻輳を低減している。
【００３１】
［システム構成等］
図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部又は任意の一部が、ＣＰＵ及び当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００３２】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行なうこともでき、あるいは、手動的に行なわれるものとして説明した処理の全部又は一部を公知の方法で自動的に行なうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００３３】
［プログラム］
図５は、プログラムが実行されることにより、プログラマブルスイッチ１０、サーバ３０、コントローラ４０が実現されるコンピュータの一例を示す図である。コンピュータ１０００は、例えば、メモリ１０１０、ＣＰＵ１０２０を有する。また、コンピュータ１０００は、ハードディスクドライブインタフェース１０３０、ディスクドライブインタフェース１０４０、シリアルポートインタフェース１０５０、ビデオアダプタ１０６０、ネットワークインタフェース１０７０を有する。これらの各部は、バス１０８０によって接続される。
【００３４】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、例えばディスプレイ１１３０に接続される。
【００３５】
ハードディスクドライブ１０９０は、例えば、ＯＳ（Operating  System）１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、プログラマブルスイッチ１０、サーバ３０、コントローラ４０の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール１０９３として実装される。プログラムモジュール１０９３は、例えばハードディスクドライブ１０９０に記憶される。例えば、プログラマブルスイッチ１０、サーバ３０、コントローラ４０における機能構成と同様の処理を実行するためのプログラムモジュール１０９３が、ハードディスクドライブ１０９０に記憶される。なお、ハードディスクドライブ１０９０は、ＳＳＤ（Solid  State  Drive）により代替されてもよい。
【００３６】
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ１０９４として、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して実行する。
【００３７】
なお、プログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、プログラムモジュール１０９３及びプログラムデータ１０９４は、ネットワーク（ＬＡＮ、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール１０９３及びプログラムデータ１０９４は、他のコンピュータから、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【００３８】
以上、本発明者によってなされた発明を適用した実施形態について説明したが、本実施形態による本発明の開示の一部をなす記述及び図面により本発明は限定されることはない。すなわち、本実施形態に基づいて当業者等によりなされる他の実施形態、実施例及び運用技術等は全て本発明の範疇に含まれる。
【符号の説明】
【００３９】
１  通信システム
１０  プログラマブルスイッチ
１１  キュー群
１２  キュー振り分け部
２０  ＶＮＦ
２１  パケット処理部
２２  負荷測定部
３０  サーバ
４０  コントローラ
４１  負荷分析部
４２  キュー制御部
【図１】
2020022146.tif 000003
【図２】
2020022146.tif 000004
【図３】
2020022146.tif 000005
【図４】
2020022146.tif 000006
【図５】
2020022146.tif 000007