(57)【要約】  パケットを処理するネットワークインターフェースデバイス及びその方法が開示される。ネットワークインターフェースデバイスは、複数のキューを含み，物理的なネットワークを通じてパケットを受信すると、パケットのフローを識別して、フローの単位で複数のキューに、パケットを保存した後、複数のプロセッサを介して並列処理する。【選択図】図４
2017521806.tif 000002
【特許請求の範囲】
【請求項１】
多重プロセッシング装置においてスケジューリングの方法であって、
複数のプロセッサの全体またはその一部を、少なくとも１つ以上のプロセッサグループにグルーピングする段階と、
受信したパケットのフローに対して、既に指定されたプロセッサグループまたはプロセッサが存在すれば、前記のフローを既に指定されたプロセッサグループまたはプロセッサに割り当てる段階と、及び
受信したパケットのフローに対して、既に指定されたプロセッサグループまたはプロセッサが存在しなければ、前記フローのための新しいプロセッサグループを生成して割り当てたり、あるプロセッサグループにも属していないプロセッサに、前記フローを割り当てる段階とを、含むことを特徴とするスケジューリングの方法。
【請求項２】
新しいプロセッサグループを生成して割り当てる段階は、
複数のプロセッサにおいてのグルーピングされていないプロセッサの全体またはその一部を、新しいプロセッサグループにグルーピングする段階と、及び
新しいプロセッサグループに、受信したパケットのフローを割り当てる段階とを、含むことを特徴とする請求項１に記載のスケジューリングの方法。
【請求項３】
プロセッサグループ別に、プロセッサグループ内のプロセッサ中のいずれかに割り込み信号を送信する段階と、及び
割り込み信号を受信したプロセッサは、以前実行していた作業を割り込んで、スケジューリング動作を実行した後、再度、以前の実行していた作業を再開する段階とを、更に含むことを特徴とする請求項１に記載のスケジューリングの方法。
【請求項４】
多重プロセッシング装置においてスケジューリングの方法であって、
複数のプロセッサの負荷状態や処理容量または受信パケットの属性に基づいて、単一のスケジューリングまたは多重プロセッシングを決定する段階と、
前記単一のスケジューリングの場合に、複数のプロセッサ中のいずれかをスケジューラにより指定する段階と、及び
前記多重プロセッシングの場合に、複数のプロセッサを少なくとも２つ以上のプロセッサグループにグルーピングし、それぞれのプロセッサグループ内のプロセッサ中のいずれかを、それぞれのプロセッサグループのスケジューラにより指定する段階とを、含むことを特徴とするスケジューリングの方法。
【請求項５】
前記多重プロセッシングの場合に、受信したパケットのフローに対して、既に指定されたプロセッサグループまたはプロセッサが存在しなければ、前記フローのための新しいプロセッサグループを生成する段階を、更に含むことを特徴とする請求項４に記載のスケジューリングの方法。
【請求項６】
前記新しいプロセッサグループを生成する段階は、
複数のプロセッサにおいてのグルーピングされていないプロセッサの全体またはその一部を新しいプロセッサグループに生成する段階を、含むことを特徴とする請求項５に記載のスケジューリングの方法。
【請求項７】
物理的なネットワークを介して受信されたパケットから、物理的なネットワークのフレームにカプセル化された、仮想化環境ネットワーク層の情報を含むディープパケットを獲得する段階と、
前記ディープパケットに含まれる前記仮想化環境ネットワーク層の情報に基づいて、前記ディープパケットをディープフローとして識別する段階と、及び
前記ディープパケットを、前記識別されたディープフローの単位に分割して、対応するキューに割り当てる段階とを、含むことを特徴とするスケジューリングの方法。
【請求項８】
１つ以上のキューを仮想マシン別にグルーピングする段階を更に含むことを特徴とする請求項７に記載のスケジューリングの方法。
【請求項９】
前記識別する段階は、前記ディープパケットの目的地の仮想マシンを識別する段階を含み、
前記割り当てる段階は、前記目的地の仮想マシンと、前記ディープフローに基づいて、前記ディープパケットを対応するキューに割り当てる段階を、含むことを特徴とする請求項７に記載のスケジューリングの方法。
【請求項１０】
前記仮想化環境ネットワーク層の情報は、仮想マシンに形成されたネットワーク層内のパケットの転送のために、物理的なネットワークのフレームにカプセル化された、仮想マシンに形成されたネットワーク層の情報を意味し、
前記ディープパケットは、物理的なネットワークにおいて一般的な通信プロトコルによって認識されて、円滑な転送が行われるように、物理的なネットワークのフレームにカプセル化されたことを特徴とする請求項７に記載のスケジューリングの方法。
【請求項１１】
前記割り当てる段階は、
少なくとも１つ以上のキューを含む複数のキューグループにおいての目的地の仮想マシンに基づいて、キューグループを選択する段階と、及び
前記ディープフローに基づいて、前記選択されたキューグループ内のパケットを保存するキューを選択する段階とを、含むことを特徴とする請求項７に記載のスケジューリングの方法。
【請求項１２】
各仮想マシンに割り当てられるキューの数は、仮想マシンに関する情報を含む仮想化環境情報または負荷分布に基づいて、動的に決定されることを特徴とする請求項７に記載のスケジューリングの方法。
【請求項１３】
少なくとも１つ以上のキューを含む仮想マシン別に割り当てられた複数のキューグループを含み、
スケジューラは、前記ディープパケットに対して、ディープパケットの目的地の仮想マシンに基づいて、前記複数のキューグループの中で１つを割り当てて、前記ディープフローに基づいて選択されたキューグループ内のキューを割り当てることを特徴とする請求項７に記載のスケジューリングの方法。
【請求項１４】
物理的なネットワークを介して受信されたパケットから、物理的なネットワークのフレームにカプセル化された、仮想化環境ネットワーク層の情報を含むディープパケットを獲得するパケット受信部と、
前記ディープパケットに含まれる前記仮想化環境ネットワーク層の情報に基づいて、前記ディープパケットをディープフローに識別するパケット分析部と、及び
前記ディープパケットを、前記識別されたディープフローの単位に分割して、対応するキューに割り当てるスケジューラとを、含むことを特徴とするネットワークインターフェースデバイス。
【請求項１５】
前記スケジューラは、少なくとも１つ以上のキューを含む複数のキューグループにおいての目的地の仮想マシンに基づいて、キューグループを選択し、前記ディープフローに基づいて、前記選択されたキューグループ内のパケットを保存するキューを選択することを特徴とする請求項１４に記載のネットワークインターフェースデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多重プロセッシングの方法及びその装置に関し、更に詳細的には、パケットを並列処理する多重プロセッシング環境でスケジューリングする方法及びその装置に関する。
【背景技術】
【０００２】
多重プロセッシングシステムは、複数のＣＰＵ（中央処理装置、Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ)コア(ｃｏｒｅ)を利用して、複数の過程を並列処理する。しかし、多重プロセッシングの場合、中央処理装置コアの間に、負荷を均等に分布させる問題、ＣＰＵコアの間に共有するリソースの衝突、キャッシュの効率の低下などの問題がある。
【０００３】
特に、パケットを並列処理する多重プロセッシングシステムの場合、パケットの処理効率を高めるためには、同一なフローに属するパケットを、同一なＣＰＵにおいて処理するようにし、ＣＰＵに対するフローの親和度(ｆｌｏｗ ａｆｆｉｎｉｔｙ)を維持することが好ましいが、この場合、特定のＣＰＵに負荷が加重されて、全体のＣＰＵの間に負荷分布の不均衡が発生することがあり、このため、多重プロセッシングシステムの全体の処理効率が低下されることがある問題がある。
【０００４】
これを解決するために、ＣＰＵの間の負荷分散(ｌｏａｄ ｂａｌａｎｃｉｎｇ)を、周期的に実行すべきであるが、この場合、フローを処理するＣＰＵが、負荷分散の過程で変わって、フローの親和度が低くなり、パケットの処理手順が変わって、パケットの順位の再組立て(Ｐａｃｋｅｔ ｒｅ-ｏｒｄｅｒｉｎｇ)の過程が必要になる理由などで、多重プロセッシングシステムのパケットの処理効率が低くなる問題点がある。
【０００５】
このように、多重プロセッシングシステムの処理効率を高めるために、フローの親和度を高め、適切な負荷分散が必要であるが、両方が互いに矛盾になるので、これを適切に補完する必要がある。
【０００６】
また、最近、インターネットを通じる通信量が急増して、それに応じてサーバーの大容量化、高速化が急速に進められている。サーバーの大容量化に伴う物理的体積の増加を解消し、コストの削減などを図るために、サーバーの仮想化が加速されている。サーバーの大容量化、高速化、仮想化によって、物理的なネットワークから受信された仮想化環境で生成されたデータパケットを含む大容量のデータの並列処理の高効率化が必須的に要求されており、仮想化サーバーで、仮想スイッチ機能が実行される時、サーバーの負荷増加に起因する性能の低下が生じることに伴い、仮想スイッチの機能に従うサーバーの負荷を、物理的ネットワークインターフェースデバイスに移転する技術の概念の実現が求められている。
【０００７】
従来の仮想化環境を支援するＮＩＣの場合、物理的ネットワークインターフェースデバイスで、仮想化環境を支援する方法として、仮想マシンの単位でキューを生成管理して、ネットワークインターフェースデバイスとサーバーの仮想スイッチとの間のボトルネックを減少させる試みがある。しかし、従来の場合には、受信されたデータパケットの並列処理のためのプロセッサの割り当て及びキューの再分配時、仮想マシンの単位でのみ行われる。即ち、仮想化環境の物理的層のみが考慮されたプロセッサの割り当てが形成される。従って、並列処理でプロセシング効率を高める非常に重要な要素の１つであるプロセッサ親和度が考慮されることがなく、プロセッサの使用負荷だけを考慮して、プロセッサの割り当て及びキューの再分配が起こる。これは、並列処理の効率を低下させる要因として作用することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明が解決しようとする技術的課題は、パケットの並列処理を実行する多重プロセッシング環境で、フローの親和度(ｆｌｏｗ ａｆｆｉｎｉｔｙ)と負荷分散(ｌｏａｄ ｂａｌａｎｃｉｎｇ)の対立性を緩和させ、全体のプロセッサの使用効率を増加させるスケジューリングの方法及びその装置を提供することにある。
【課題を解決するための手段】
【０００９】
前記本発明の技術課題を達成するための、本発明によるスケジューリングの方法の一例は、多重プロセッシング装置においてスケジューリングの方法であって、複数のプロセッサの全体またはその一部を、少なくとも１つ以上のプロセッサグループにグルーピングする段階と、及び受信したパケットのフローに対して、既に指定されたプロセッサグループまたはプロセッサが存在すれば、前記のフローを既に指定されたプロセッサグループまたはプロセッサに割り当てる段階と、及び受信したパケットのフローに対して、既に指定されたプロセッサグループまたはプロセッサが存在しない場合、前記フローのための新しいプロセッサグループを生成して割り当てたり、あるプロセッサグループにも属していないプロセッサに、前記フローを割り当てる段階とを含む。
【００１０】
前記本発明の技術課題を達成するための、本発明によるスケジューリングの方法の一例は、多重プロセッシング装置においてスケジューリングの方法であって、複数のプロセッサの負荷状態や処理容量または受信パケットの属性に基づいて、単一のスケジューリングまたは多重プロセッシングを決定する段階と、前記単一のスケジューリングの場合に、複数のプロセッサ中のいずれかをスケジューラにより指定する段階と、及び前記多重プロセッシングの場合に、複数のプロセッサを少なくとも２つ以上のプロセッサグループにグルーピングし、それぞれのプロセッサグループ内のプロセッサ中のいずれかを、それぞれのプロセッサグループのスケジューラにより指定する段階とを含む。
【００１１】
前記本発明の技術課題を達成するための、本発明によるスケジューリングの方法の一例は、物理的なネットワークを介して受信されたパケットから、物理的なネットワークのフレームにカプセル化された、仮想化環境ネットワーク層の情報を含むディープパケットを獲得する段階と、前記ディープパケットに含まれる前記仮想化環境ネットワーク層の情報に基づいて前記ディープパケットをディープフローとして識別する段階と、及び前記ディープパケットを、前記識別されたディープフロー単位に分割して、対応するキューに割り当てる段階とを含む。
【００１２】
前記本発明の技術課題を達成するための、本発明によるネットワークインターフェースデバイスの一例は、物理的なネットワークを介して受信されたパケットから、物理的なネットワークのフレームにカプセル化された、仮想化環境ネットワーク層の情報を含むディープパケットを獲得するパケット受信部と、前記ディープパケットに含まれる前記仮想化環境ネットワーク層の情報に基づいて前記ディープパケットをディープフローに識別するパケット分析部と、及び前記ディープパケットを、前記識別されたディープフローの単位に分割して、対応するキューに割り当てるスケジューラを含む。
【発明の効果】
【００１３】
本発明によると、フローの親和度と負荷分散の対立性を緩和して、並列処理の性能を向上させることができる。また、動的に指定される複数のスケジューラを利用することにより、パケットスケジューリングとキューイングによる待ち時間（ｌａｔｅｎｃｙ）を減少することができる。また、複数のスケジューラを通じて、トラフィック属性に応じる様々なスケジューリングのアルゴリズムを容易に適用することができる。また、複数の仮想マシンを含む仮想化環境を備えるサーバーの負荷が低減される。ディープフローの単位で、パケットを処理することにより、ディープパケットとプロセッサとの間の親和度を高めて、並列プロセシングの効率を高める。また、仮想スイッチの負荷を、ネットワークインターフェースカードに分散させて、仮想ネットワークプロセシングの効率を高めることができる。また、ディープフローの単位でキューイングして処理することにより、仮想マシンのエンドツーエンドのディープフローの単位のＱｏＳが保証されるスケーラブルな通信処理を実現することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明に係る、単一のスケジューリングを実行する多重プロセッシング装置の一例を図示した図である。
【図２】本発明に係る、単一のスケジューリングを実行する多重プロセッシング 方法の一例を図示した図である。
【図３】本発明に係る多重プロセッシングのための分類ポリシーの一例を図示した図である。
【図４】本発明に係る多重プロセッシングの方法が適用された多重プロセッシング装置の一例の構成を図示した図である。
【図５】本発明に係る多重プロセッシング部の詳細な構成の一例を図示した図である。
【図６】本発明に係る多重プロセッシング環境での多重プロセッシングの方法の一例を図示したフローチャートである。
【図７】本発明に係る多重プロセッシング環境での多重プロセッシングの方法の他の一例を図示したフローチャートである。
【図８】本発明に係る多重プロセッシング環境で、プロセッサグループ内のスケジューラにより指定されたプロセッサのスケジューリングの方法の一例を図示したフローチャートである。
【図９】本発明に係る多重プロセッシングのためのプロセッサグルーピングの一例を図示した図である。
【図１０】本発明に係る多重プロセッシングのために、プロセッサを動的にグルーピングする方法の一例を図示した図である。
【図１１】本発明に係る多重プロセッシングのためのネットワークインターフェースデバイスを含むシステムの概略的な構造の一例を図示した図である。
【図１２】本発明に係るＮＩＣのリソースを動的に設定する方法の一例を図示した図である。
【図１３】本発明に係るＮＩＣの一実施例の構成を図示した図である。
【図１４】本発明に係るＮＩＣのディープフローベースのキューの割り当ての一例を図示した図である。
【図１５】本発明に係るＮＩＣのディープフローベースのキューの割り当ての他の一例を図示した図である。
【図１６】本発明に使用されるディープパケットの一例を図示した図である。
【図１７】本発明に係る仮想マシンの環境のためのパケットの処理方法の一例を図示したフローチャートである。
【発明を実施するための形態】
【００１５】
以下は、添付された図面を参照して、本発明に係る多重プロセッシング環境での多重プロセッシングの方法及びその装置に関して、詳細に調べてみる。
【００１６】
図１は、本発明に係る単一のスケジューリングを実行する多重プロセッシング装置の一例を図示した図である。
【００１７】
図１を参照すると、多重プロセッサ装置１００は、パケット識別部１０５、パケット伝送部１４０、パケットの割り当てテーブル１３０、メモリ１０４、複数のキュー１１０、１１２、１１４、複数のプロセッサ１２０、１２２、１２４及び制御部１５０を含む。
【００１８】
パケット識別部１０５は、有線または無線ネットワーク、または他の機器からのパケットを受信し、受信したパケットのフロー(ｆｌｏｗ)を識別する。また、パケット識別部１０５は、受信したパケットフローに割り当てられたプロセッサが存在するかパケットの割り当てテーブル１３０を参照して、把握する。
【００１９】
パケットの割り当てテーブル１３０は、パケットフロー別にそれぞれ割り当てられたプロセッサの情報を含む。例えば、パケットの割り当てテーブル１３０は、第１フローと第２フローを処理するためのプロセッサで、第１プロセッサが割り当てられていて、第３フローを処理するためのプロセッサで、第２プロセッサが割り当てられている情報を含む。パケットの割り当てテーブル１３０に保存される情報は、この後に考察するスケジューラによって、生成され、更新される。
【００２０】
メモリ１０４は、パケット識別部１０５が受信したパケットを保存する。この時、メモリ１０４は、パケット識別部１０５によって把握されたパケットのフロー情報、パケットの割り当てテーブル１３０を参照して、把握したプロセッサ情報などを一緒に保存することができる。
【００２１】
パケット伝送部１４０は、メモリ１０４に保存されたパケットを、該当プロセッサのキューに伝送する。パケット伝送部１４０は、メモリに保存されたパケットを順次にプロセッサキューに伝送したり、ＱｏＳ(Ｑｕａｌｉｔｙ ｏｆ Ｓｅｒｖｉｃｅ)、優先順位(ｐｒｉｏｉｒｔｙ) など、様々な条件などを考慮し、非順次的にパケットをプロセッサのキューに伝送することもできる。
【００２２】
キュー１１０、１１２、１１４は、各プロセッサが処理するパケットを、メモリ１０４から伝送を受けて、保存する。本実施例において、キュー１１０、１１２、１１４は、プロセッサ１２０、１２２、１２４ごとにそれぞれ１つずつ存在することを図示したが、必ずこれに限定されるものではなく、１つのプロセッサに２つ以上のキューが存在するか、または１つのキューを２つ以上のプロセッサが共有することができる。または、キュー１１０、１１２、１１４は、図１１ないし図１７に開示された方法によってグルーピングすることができる。
【００２３】
また、キュー１１０、１１２、１１４は、先入れ先出し(ＦＩＦＯ) 構造や、必ずしもこれに限定されるものではなく、後入れ先出し(ＬＩＦＯ)または優先順位(ｐｒｉｏｒｉｔｙ) ベースの出力など、多様な形態の構造で体現されることができるなど、各プロセッサで処理するパケットを保存することができる形態であればよい。
【００２４】
パケットの割り当てテーブル１３０にパケットフロー情報が存在しない場合に、制御部１５０は、複数のプロセッサの中の１つを、スケジューラにより指定した後、割り込み要求信号を伝送する。割り込み要求信号を受信したプロセッサは、パケットを処理するプロセッサを選択し、パケットの割り当てテーブルに関する情報を保存する。
【００２５】
複数のプロセッサ１２０、１２２、１２４は、それぞれパケットを処理する。また、多重プロセッシングシステムの効率と製造コストの削減などを考慮して、パケットのスケジューリングのための別のスケジューラを備えていなく、複数のプロセッサの中の１つ(例えば、プロセッサ１１２０)をスケジューラとして活用することができる。複数のプロセッサの中の１つをスケジューラとして活用する方法に対しては、図２を参照して、調べてみる。もちろん、本実施例で複数のプロセッサの以外に、別途のスケジューラを備えて体現することもできる。
【００２６】
図２は、本発明に係る、単一のスケジューリングを実行する多重プロセッシング 方法の一例を図示した図である。
【００２７】
図１及び図２を一緒に参照すると、パケット識別部１０５は、受信したパケットを分析して、パケットフローを識別する(段階Ｓ２００、段階Ｓ２１０)。ここで、フロー識別方法は、受信したパケットのネットワークの前の層のトラフィック属性を分析して、既に設定されたネットワーク通信ポリシーに基づいて分類する。一例として、受信したパケットの送信ノードアドレス、宛先アドレス、セッション及びアプリケーション層などの属性を要素に、既に設定された通信ポリシーによって、１つのフローを区別することができる。パケット識別部１０５は、パケットの割り当てテーブル１３０を参照して、フローを処理するプロセッサの情報が存在するかを把握する(段階Ｓ２２０)。パケットと該当パケットのフロー情報、プロセッサ 情報などはメモリ１０４に保存される。
【００２８】
パケットの割り当てテーブル１３０にフローを処理するプロセッサの情報が存在する場合(段階Ｓ２３０)、パケット伝送部１４０は、パケットを該当プロセッサのキューに伝送する(段階Ｓ２６０)。例えば、パケット識別部１０５によって、受信パケットが第１フローに識別され、パケットの割り当てテーブル１３０に第１フローを処理するプロセッサで、第２プロセッサが割り当てされていると、パケット伝送部１４０は、パケットを第２プロセッサ１２２のキュー１１２へ伝送する。
【００２９】
一方、パケットの割り当てテーブル１３０にフローを処理するプロセッサの情報が存在しなければ(即ち、新しいフローである場合)(段階Ｓ２３０)、制御部１５０は、複数のプロセッサの中のスケジューラにより指定されたプロセッサに、割り込み要求信号を伝送する(段階Ｓ２４０)。制御部１５０は、複数のプロセッサのうち、現在の負荷が最も少ないプロセッサをスケジューラにより指定したり、既に設定されたスケジューラ決定アルゴリズムを通じて、スケジューラをしていしたり、既に設定されたプロセッサをスケジューラにより指定することができる。本実施例の場合、プロセッサ１１２０がスケジューラにより指定されている。
【００３０】
割り込み要求信号を受信したプロセッサ１２０は、以前実行した作業を中断して、スケジューリング動作を実行する(段階Ｓ２５０)。例えば、スケジューラにより指定されたプロセッサ１２０は、新しいフローを処理するプロセッサを選択し(段階Ｓ２５０)、選択したプロセッサに関する情報を、パケットの割り当てテーブル１３０に保存する(段階Ｓ２６０)。スケジューラにより指定されたプロセッサに割り込み要求が伝送されている場合、新たに入力されるパケットを処理するための割り込み要求は許されない。
【００３１】
また、スケジューラにより指定されたプロセッサ１２０は、プロセッサの負荷 不均衡が一定水準以上の場合などの特定のイベントが発生した場合、または周期的に従来の複数の負荷分散(ｌｏａｄ ｂａｌａｎｃｉｎｇ)アルゴリズムを適用して、各プロセッサの間の負荷再分散(ｒｅ-ｂａｌａｎｃｉｎｇ)を試みることができる。
【００３２】
図１、２の場合、１つのスケジューラ１２０が選択されて、該当作業を実行する間、システムから新しい割り込みが許可されず、要求されている割り込みが解除されるまで、他の新しいフローの処理が遅延される。また、負荷不均衡を解消するための負荷再分散を複数のプロセッサの全体に対して実行するので、フローの親和度と負荷分布との間の対立性がより深化されている問題点がある。これは、図４の多重プロセッシングを介して緩和することができる。
【００３３】
図３は、本発明に係る多重プロセッシングのための分類ポリシーの一例を図示した図である。
【００３４】
図３を参照すると、分類ポリシーは複数のプロセッサをグループに分割するためのポリシーを含む。図４で調べてみるが、多重プロセッシングの場合複数のプロセッサを少なくとも２以上のグループに分け、そのためには複数のプロセッサをグループに分割のためのポリシーが必要である。
【００３５】
分類ポリシーの一例として、図３に示すように、パケットフローベースのポリシーがある。パケットフローを階層的に分けることができる属性をベースに、フローを２つのグループＡ、Ｂに分割することができる。この場合、複数のプロセッサでは、現在処理しているフローがどのグループに属するかに応じて２つのグループに分割することができる。
【００３６】
他の一例として、各プロセッサの負荷をベースにする分類ポリシーがある。各グループ別の負荷分布が均一になるようにプロセッサを既に設定されたグループの数に応じて分割することができる。
【００３７】
複数のプロセッサをグループに分割するための分類ポリシーは、複数であることができる。例えば、第１ポリシーは複数のプロセッサを、フローベースで２つのグループに分割するポリシーであり、第２ポリシーは複数のプロセッサをフローベースで三つのグループに分割するポリシーであり、第３ポリシーは複数のプロセッサを負荷の程度に応じて、少なくとも２つのグループに分割するポリシーであることができる。
【００３８】
本発明は、図３の実施例に限定されるものではなく、このほか、各プロセッサを分割するための様々な分類ポリシーを適用することができる。分類ポリシーは、あらかじめ設定されており、ユーザーが別途の入出力インターフェースを介して分類ポリシーを更新することができる。図４では、多重プロセッシングのために複数のプロセッサを分ける基準、即ち、分類ポリシーが既に設定されているものとする。
【００３９】
図４は、本発明に係る多重プロセッシングの方法が適用された多重プロセッシング装置の一例の構成を図示した図である。
【００４０】
図４を参照すると、多重プロセッシング装置４００は、パケット識別部４１０、パケット伝送部４８０、パケットの割り当てテーブル４２０、多重スケジューリング部４３０、メモリ４４０、複数のキュー４５０及び複数のプロセッサ４６０、４６２、４６４、４６６、４７０、４７２、４７４を含む。
【００４１】
パケット識別部４１０、パケット伝送部４８０、パケットの割り当てテーブル４２０、メモリ４４０、複数のキュー４５０、プロセッサ４６０、４６２、４６４、４６６、４７０、４７２、４７４などは、図１で説明した構成と機能を全て含む。従って、本実施例は、図１と同一な構成と機能に対する重複説明は省略し、本実施例による多重プロセッシングのために必要な構成と機能を中心に説明する。
【００４２】
多重スケジューリング部４３０は、負荷分布の状態、トラフィック属性、トラフィックの処理容量など、多重プロセッシングシステムの状態情報にもとに、単一のスケジューリングを実行するか、それとも多重プロセッシングを実行するかを決定する。例えば、多重スケジューリング部４３０は、単一のスケジューリングを実行している途中、多重プロセッシングに変更するか、その逆に、多重プロセッシングを実行している途中、単一のスケジューリングに変更することができる。
【００４３】
多重スケジューリング部４３０は、図３のような分類ポリシーが複数個存在する場合、状態情報に基づいて、どのような分類ポリシーを適用するかを決定することができる。多重プロセッシング部４３０は、多重プロセッシングをすると決定した場合、分類ポリシーによって、複数のプロセッサを、少なくとも２つ以上のグループに分類し、各グループ別にスケジューリングを実行するスケジューラを指定する。多重プロセッシング部の詳細な構成は、図５に示されている。
【００４４】
例えば、図４の例のように、多重スケジューリング部４３０は、７つのプロセッサを２つのプロセッサグループ(第１グループ：プロセッサ１〜４、第２グループ：プロセッサ５〜７)に分割し、各グループ内の１つのプロセッサ４６６、４７４を既に設定されたスケジューラ決定アルゴリズムによって、スケジューラにより指定する。多重プロセッシング部４３０で、プロセッサをグループ別に分割すると、パケットの割り当てテーブル４２０にプロセッサグループに関する情報を保存することができる。
【００４５】
例えば、図３のように、フローベースで プロセッサをグルーピングする場合に、多重スケジューリング部４３０は、フローがどのグループに属するかに関する情報をパケットの割り当てテーブル４２０に保存する。新しく受信したパケットフローに関する情報がパケットの割り当てテーブル４２０に存在しない場合、パケット識別部４１０は、新しいフローがどのグループに属するかを把握し、該当パケットと該当パケットに関する識別情報をメモリ４４０に保存する。多重プロセッシング部４３０は、負荷程度または既に設定されたスケジューラ決定アルゴリズムによって、該当グループ内に、該当パケットを処理するスケジューラを指定し、指定されたスケジューラにより該当パケットを処理するように、割り込み要求信号を伝送する。スケジューラにより指定されたプロセッサは、図１で説明したように、該当フローを処理するグループ内プロセッサを選択するなどのスケジューリング動作を実行する。
【００４６】
例えば、図３のグルーピングポリシーにより、フロー グループ Ａ３００に対して、プロセッサ１〜４を含むプロセッサの第１グループ４９０が、割り当てされていて、フロー グループＢ３１０に対して、プロセッサ５〜７を含むプロセッサの第２グループ４９５が、割り当てされているとしよう。受信したパケットのフローが、フロー グループＡ３００に属すると、多重スケジューリング部４３０は、プロセッサの第１グループ４９０に属するプロセッサの中の１つをスケジューラにより指定して、該当グループ４９０内スケジューリング動作が実行することができるようにする。この時、プロセッサの第２グループ４９５は、第１グループ４９０のスケジューリング動作するかどうかとは無関係に新しいパケットの処理またはスケジューリング動作を実行することができて、全体のプロセッサの処理効率が向上される。つまり、プロセッサの第１グループ４９０と、プロセッサの第２グループ４９５のスケジューリング動作が並列で実行することができる。
【００４７】
別の例として、多重プロセッシングにおいて、プロセッサのグルーピングは、プロセッサの負荷、あるいは複数のポリシーなどによって、随時に変更することができて、グルーピングされていないプロセッサを新しい受信パケットのフローのためのプロセッサグループに、新しくグルーピングすることができる。これに対しては、図９及び図１０で再び説明する。
【００４８】
図５は、本発明に係る多重プロセッシング部の詳細な構成の一例を図示した図である。
【００４９】
図５を参照すると、多重スケジューリング部４３０は、ポリシー判断部５００と、グループ分割部５１０と、スケジューラ指定部５２０とを含む。
【００５０】
ポリシー判断部５００は、多重プロセッシング環境の複数の状態情報、例えば、負荷分布状態、トラフィック属性、トラフィック処理容量などの情報を利用して、単一のスケジューリングまたは多重プロセッシングを決定する。また、ポリシー判断部５００は、多重プロセッシングを実行する場合、複数のプロセッサをどのように分割するか、または分割されたグループ別どんなポリシーを適用するかを決定する。
【００５１】
例えば、ポリシー判断部５００は、多重プロセッシング装置の全体のトラフィック処理容量が一定水準以下である場合に、多重プロセッシングを実行することに決定し、分類ポリシーに、 図３のようなフローベースのポリシーを選択することができる。
【００５２】
グループ分割部５１０は、ポリシー判断部５００によって決定される分類ポリシーに従って、複数のプロセッサを少なくとも２つ以上のグループに分割する。
【００５３】
スケジューラ指定部５２０は、負荷程度または既に設定されたスケジューラ選択アルゴリズムによって、各グループ内プロセッサの中の１つをスケジューラにより指定する。例えば、スケジューラ指定部５２０は、各グループ別に、負荷が最も少ないプロセッサを、スケジューラにより指定することができる。これ以外、特定のプロセッサをスケジューラにより固定したり、他の複数の選択方法を適用して、動的にスケジューラを指定することができる。
【００５４】
図６は、本発明に係る多重プロセッシング環境での多重プロセッシングの方法の一例を図示したフローチャートである。
【００５５】
図４及び図６を一緒に参照すると、多重スケジューリング部４３０は、トラフィック容量、またはフロー属性、負荷分布状態など、複数の状態情報を把握する。(段階Ｓ６００)。このような状態情報に基づいて、多重スケジューリング部４３０は、単一のスケジューリングを実行するか、それとも多重プロセッシングを実行するかどうかを判断する(段階Ｓ６１０)。単一のスケジューリングを実行する場合、多重プロセッシング部４３０は、複数のプロセッサの中の１つをスケジューラにより指定する。多重プロセッシングを実行する場合、多重スケジューリング部４３０は、分類ポリシーによって、複数のプロセッサを少なくとも２つ以上のグループに分割して(段階Ｓ６２０)、各グループ別に、スケジューラにより動作するプロセッサを指定する(段階Ｓ６３０)。各グループ別に指定されたプロセッサは、図１のように、割り込み要求信号によって、該当パケットに対するスケジューリング作業をし、全体のプロセッサを対象として、スケジューリングを実行することではなく、自分が属しているグループ内プロセッサにのみ、スケジューリングを実行する。従って、２つ以上に分割された各グループは、グループ別に指定されたスケジューラによって、独立的に、同時にスケジューリング作業が実行可能である。つまり、各グループ別のスケジューラは、多重プロセッシング部４３０から、各割り込み信号を受信し、他のグループのスケジューラに対する割り込みを解除するかどうかとは関係なく、パケット処理のためのプロセッサの選択などのようなスケジューリング作業を実行することができる。そして、分割された各グループは、必要によって、独立的に互いに異なるポリシーまたはアルゴリズムが適用されることができる。
【００５６】
図７は、本発明に係る多重プロセッシング環境での多重プロセッシングの方法の他の一例を図示したフローチャートである。図７は、先に調べた多重プロセッシング部によって複数のプロセッサがグルーピングされている場合を想定する。
【００５７】
図４及び図７を参照すると、パケット識別部４１０は、パケットを受信すると(段階Ｓ７００)、パケットを分析して、フローを識別する(段階Ｓ７１０)。パケットの割り当てテーブル４２０に、該当フローに関する情報が存在する場合に(段階Ｓ７３０)、パケット識別部４１０は、新しいフローがどのようなグループに属するかなどを把握して、該当パケットと該当パケットに対する識別情報を、メモリ４４０に保存する。多重プロセッシング部４３０は、該当スケジューラに該当パケットを処理するように割り込み要求信号を伝送する。
【００５８】
パケットの割り当てテーブル４２０に、該当フローに関する情報が存在しない場合に(段階Ｓ７３０)、多重スケジューリング部４３０は、分類ポリシーを参照して、フローが属するグループを把握する(段階Ｓ７４０)。例えば、プロセッサグループが、図３のようなフローベースに分けられる場合、多重スケジューリング部４３０は、フローを階層的に区分する上位属性を基準として、新しく認識したフローが、どのグループに属するかを把握する。別の例として、プロセッサグループが、負荷分布によって、分けられる場合、多重スケジューリング部４３０は、負荷が相対的に低いグループを新しく認識したフローが属するグループに選択することができる。
【００５９】
多重スケジューリング部４３０は、新しいフローがどのようなグループに属するかを把握した後、負荷程度または既に設定されたスケジューラ決定アルゴリズムを利用して、該当グループ内に、該当パケットを処理するスケジューラを指定し、指定されたスケジューラに該当パケットを処理するように割り込み要求信号を伝送する。
【００６０】
割り込み信号を受信したプロセッサは、スケジューラにより動作し、新しいフローを処理するプロセッサを選択し、関連情報をパケットの割り当てテーブル４２０に保存する(段階Ｓ７５０、段階Ｓ７６０)。
【００６１】
例えば、図４を再び参照すると、新しいフローがプロセッサ１〜４に構成されたグループに割り当てられる場合、多重スケジューリング部４３０は、スケジューラにより指定されたプロセッサ４(４６６)に、割り込み信号を伝送する。プロセッサ４(４６６)は、既に指定されたプロセッサ決定アルゴリズムによって、該当パケットを処理するプロセッサで、プロセッサ１(４６０)を選択し、該当情報をパケットの割り当てテーブル４２０に保存する。この後、同一なフローのパケットが受信された場合に、パケット伝送部４８０は、該当パケットをプロセッサ１(４６０)に割り当てする。
【００６２】
図８は、本発明に係る多重プロセッシング環境で、プロセッサグループ内スケジューラにより指定されたプロセッサのスケジューリングの方法の一例を図示したフローチャートである。
【００６３】
図８を参照すると、複数のプロセッサは、割り込み信号を受信する前には、一般的なフロー処理過程などを実行する(段階Ｓ８００)。新しく受信したパケットのフローに、割り当てられたプロセッサグループまたはプロセッサが存在すると、多重スケジューリング部４３０は、既に指定されたプロセッサグループまたはプロセッサにフローを割り当てする。新しく受信したパケットのフローに、割り当てられたプロセッサグループまたはプロセッサが存在しなければ、多重スケジューリング部４３０は、新しいパケットのフローのためのプロセッサグループを生成した後、新しく生成したプロセッサグループ内のある１つのプロセッサに割り込み信号を伝送する(段階Ｓ８１０)。
【００６４】
割り込み信号を受信したプロセッサは、前に実行した動作を停止し(段階Ｓ８２０)、新しいパケットフローをどのようなプロセッサに割り当てするかどうかを決定するスケジューリング動作を実行した後(段階Ｓ８３０)、割り込み信号の受信前に、実行した動作を再び再開する(段階Ｓ８４０)。多重プロセッシング部４３０は、割り込み信号をプロセッサグループ別にそれぞれ伝送することができ、従って、各プロセッサグループは、同時に、各スケジューリング動作を実行することができる。
【００６５】
図９は、本発明に係る多重プロセッシングのためのプロセッサグルーピングの一例を図示した図である。
【００６６】
図９を参照すると、多重スケジューリング部４３０は、単一のスケジューリングの場合には、複数のプロセッサ(９００) の中の１つを、スケジューラにより指定し、多重プロセッシングの場合には、プロセッサの全体またはその一部を、少なくとも１つ以上のグループ９１０、９２０にグルーピングし、各グループ別スケジューラを指定する。
【００６７】
多重スケジューリング部４３０は、プロセッサの負荷状態、または既に設定された様々なポリシーによって、新しいプロセッサグループを生成したり、または既存のプロセッサグループを更新することができる。
【００６８】
例えば、多重プロセッシングの場合、多重スケジューリング部４３０は、複数のプロセッサをプロセッサ１〜３の第１グループ９１０、プロセッサ４〜５の第２グループ９２０の２つのグループにグルーピングされ、残りのプロセッサをグルーピングしないことができる。
【００６９】
多重プロセッシング動作の中に、新しいプロセッサグループの生成が必要な場合に、多重スケジューリング部４３０は、現在のグルーピングされていないプロセッサの全体またはその一部をグルーピングして、新しいプロセッサグループを生成したり、既存のプロセッサグループを変更して、新しいプロセッサグループを生成することができる。
【００７０】
別の例として、多重スケジューリング部４３０は、多重プロセッシング動作の中に、既にグルーピングされているグループ、例えば、プロセッサ１〜３の第１グループ９１０と、プロセッサ４〜５の第２グループ９２０に、新しいプロセッサを追加したり、グループ内プロセッサの中の一部をグループから除外するなどの更新動作を実行することができる。
【００７１】
図１０は 本発明に係る多重プロセッシングのためにプロセッサを動的にグルーピングする方法の一例を図示した図である。
【００７２】
図１０を参照すると、多重スケジューリング部４３０は、受信したパケットのフローのための新しいプロセッサグループが必要になったり、前のプロセッサグループの変更が必要になると、プロセッサグループを新しく生成したり、既存のプロセッサグループを更新する(段階Ｓ１０００)。例えば、新しく受信したパケットのフローに割り当てられたプロセッサグループとか、プロセッサが存在しない場合、多重スケジューリング部４３０は、プロセッサの中のグルーピングされていないプロセッサの全体、またはその一部を新しいプロセッサグループに生成する。別の例として、プロセッサグループ内負荷程度または全体のプロセッサの負荷程度が、一定の水準に達するか、既に設定されたポリシーによって、多重スケジューリング部４３０は、プロセッサグループの全体を、再び新しく構成したり、特定のプロセッサグループに新しいプロセッサを追加したり、グループ内の既存のプロセッサの中の少なくとも１つをグループから除外することができる。
【００７３】
多重スケジューリング部４３０は、生成または更新されたプロセッサグループ内のある１つのプロセッサをスケジューラにより指定する(段階Ｓ１０１０)。各グループ内のある１つのプロセッサは、常にスケジューラにより動作するではなく、図８で説明したように、割り込み信号を受信した場合のみ、スケジューラにより動作し、スケジューリング動作が完了すると、他の一般的なプロセッサと同じ動作を実行する。
【００７４】
今までは、主に複数のプロセッサをグルーピングして、スケジューリングする方法に対して調べてみたが、以下では、主に複数のプロセッサと接続されたキューをグルーピングして、スケジューリングする方法に対して調べてみる。図１〜１０の技術的構成が、図１１〜１７の技術的構成に付加されたり、逆に図１１〜１７の構成が、図１〜１０の構成に付加されることができる。つまり、図１〜１０で説明した複数のプロセッサのグルーピングと図１１〜１７で説明した複数のキューのグルーピングが、同時に実行することもできる。多重プロセッシング装置は、ネットワークインターフェースデバイスで体現されることができる。
【００７５】
図１１は、本発明に係る多重プロセッシングのためのネットワークインターフェースデバイスを含むシステムの概略的な構造の一例を図示した図である。
【００７６】
図１１を参照すると、ネットワークインターフェースデバイスは、ネットワークインターフェースカード(Ｎｅｔｗｏｒｋ Ｉｎｔｅｒｆａｃｅ Ｃａｒｄ、ＮＩＣ)１１００で体現される。しかし、ネットワークインターフェースデバイスは、ネットワークインターフェースカード１１００に必ずしも限定されるのではなく、サーバー内外で、ハードウェアまたはソフトウェアなどの様々な形で体現されることができる。説明の便宜のために以下、ネットワークインターフェースデバイスをＮＩＣで表現する。
【００７７】
サーバー１１２０は、複数の仮想マシン１１５０、１１５２、１１５４と、仮想スイッチ１１４０及び接続スロット１１３０を含む。仮想スイッチ１１４０は、ＮＩＣ１１００を通じて受信したパケットを、目的地の仮想マシンに伝送する。接続スロット１１３０は、ＮＩＣ１１００と、サーバー１１２０を接続するインターフェースであり、一例として、ＰＣＩｅ(Ｐｅｒｉｐｈｅｒａｌ Ｃｏｍｐｏｎｅｎｔ Ｉｎｔｅｒｃｏｎｎｅｃｔ Eｘｐｒｅｓｓ)で体現することができる。この場合、ＮＩＣ１１００は、ＰＣＩｅスロットに着脱されることができる。
【００７８】
ＮＩＣ１１００は、ネットワーク１１１０から受信したパケットの上位層のトラフィック特性を分析して、フローを識別し、識別したフローを多重プロセッサを通じて、並列処理する。ここで、パケットは、複数の仮想マシンに伝送されることができるように、従来の様々なトンネリングのような技法などを利用して、仮想化環境ネットワーク層(Ｌａｙｅｒ)情報をカプセル化(ｅｎｃａｐｓｕｌａｔｉｏｎ)するパケットを意味する。仮想化環境ネットワーク層とは、仮想マシンに形成されたネットワーク層を意味し、仮想化環境ネットワーク層の情報は、仮想マシンに形成されたネットワーク層内のパケットの転送のために物理的なネットワークのフレームにカプセル化された、仮想マシンに形成されたネットワーク層の情報を意味する。以下では、本実施例で使用される仮想化環境ネットワーク層の情報に基づいて、識別されたパケットをディープパケット(ｄｅｅｐ ｐａｃｋｅｔ)という。ディープパケットは、物理的なネットワークにおいて一般的な通信プロトコルによって認識されて、円滑な転送が行われるように、物理的なネットワークのフレームにカプセル化される。また、ディープパケットの仮想化環境ネットワーク層情報を利用して分類したフローをディープフロー(ｄｅｅｐ ｆｌｏｗ)と称する。ディープフローは、通信サービスの構造上、仮想マシンで生成されたサービス終端のフローで説明される。
【００７９】
ディープフローは、ディープパケットの物理的なネットワークのフレームを除去した仮想化環境ネットワークのフレームでの上位層(ｖＬ３以上)のトラフィック属性によって分類された仮想化環境ネットワークでの特定のトラフィックに定義することができる。ディープフローは、既に設定された複数のポリシーによって分類され、識別されることができる。例えば、パケット分析部１３１０は、仮想マシンのＴＣＰフローをディープフローに識別することができる。ディープパケットの構造については、図１６を参照して説明する。
【００８０】
ＮＩＣ１１００は、受信したディープパケットを並列処理するための複数のキューと、複数のプロセッサとを含み、キューの大きさと数などは、固定されているが、ディープフローに関する情報、サーバーの仮想化環境情報、プロセッサの負荷などによって、動的に変更されることができる。
【００８１】
図１２は、本発明に係るＮＩＣのリソースを動的に設定する方法の一例を図示した図である。
【００８２】
図１１及び図１２を一緒に参照すると、ＮＩＣ１１００が、サーバー１１２０の接続スロット１１３０に付着されて、サーバー１１２０と接続される場合(段階Ｓ１２００)、ＮＩＣ１１００は、サーバー１１２０から仮想マシンの数を含む仮想化環境情報を受信する(段階Ｓ１２１０)。ＮＩＣ１１００は、ディープフローに関する情報、受信した仮想化環境情報またはプロセッサの負荷分布などによって、キューの大きさと数、キューグループの生成など、リソースを動的に設定する(段階Ｓ１２２０)。
【００８３】
例えば、ＮＩＣ１１００が、サーバー１１２０から仮想マシンが４つという仮想化環境情報を受信する場合、ＮＩＣ１１００は、１２個のキューを各仮想マシン別に３つずつ割り当てることができる。別の例として、ＮＩＣ１１００は、ディープフローに関する情報を基に、ディープフローを２つのグループに分割し、各グループに６つのキューを割り当てることができる。仮想マシン別の割り当てされるキューの数や、各キューの大きさなどは、既に設定されたルールに基づいて、多様に設定されることができる。
【００８４】
図１３は、本発明に係るＮＩＣの一実施例の構成を図示した図である。
【００８５】
図１３を参照すると、ＮＩＣ１１００は、パケット受信部１３００と、パケット分析部１３１０と、メモリ１３２０と、複数のキュー１３３０と、複数のプロセッサ１３４０と、スケジューラ１３５０と、モニタリング部１３６０及びキュー管理部１３７０を含む。パケット受信部１３００等を含む各構成要素の間の接続線は、本発明の理解を助けるための１つの一例で、キュー管理部１３７０とモニタリング部１３６０との間の接続、スケジューラ１３５０と複数のキュー１３３０との間の接続など、様々な接続関係が設定されることができるのは、もちろんである。
【００８６】
パケット受信部１３００は、外部ネットワークからの一般的なインターネットフレームとして認識されるように、従来の様々なトンネリングのような方法などにより、ディープパケットがカプセル化されたパケットを受信すると、これをデカプセル化して、物理的なネットワークに対応するヘッダ部分を除去し、仮想化環境でのデータパケットフレームを復元する。
【００８７】
パケット分析部１３１０は、復元されたディープパケットのディープフローを識別する。ディープフローを識別するためには、仮想化環境でのデータリンク層(ｖＬ２層)だけでなく、ネットワーク層(ｖＬ３層)以上の上位層まで解釈されるべきである。このために、パケット分析部１３１０は、ＤＰＩ(Ｄｅｅｐ Ｐａｃｋｅｔ Ｉｎｓｅｐｅｃｔｉｏｎ)過程を通じて、デカプセル化されたディープパケットの仮想データリンク層(ｖＬ２層)から、仮想アプリケーション層(ｖＬ７層)まで分析して、ディープフローを識別する。ディープフロー識別のためのディープパケットに関する分析は、仮想データリンク層から仮想 アプリケーション層の全般を分析するものに限定されるものではなく、ディープフロー識別ポリシーに基づいて、分析の範囲は変わることができる。
【００８８】
メモリ１３２０は、ディープパケットと、パケット分析部１３１０によって識別されたディープフロー情報などを保存し、また、ディープフローとキューとの間のマッピング関係を示すフローテーブルを保存して管理する。
【００８９】
一実施例として、パケット受信部１３００は、デカプセル化されたディープパケットをメモリ１３２０に保存し、ディープパケットの保存事実をパケット分析部１３１０に通報する。これにより、パケット分析部１３１０は、メモリ１３２０に保存された該当ディープパケットに対するディープフロー識別を実行する。即ち、新しいディープパケットの受信事実を知るようになるパケット分析部１３１０は、既に設定されたポリシーによって、該当ディープパケットのディープフロー特性を識別して、その情報を保存し、保存事実をスケジューラ１３５０に知らせる。
【００９０】
スケジューラ１３５０は、識別されたディープフローをそれぞれ対応するキューに割り当てて、各キューを多重プロセッサ１３４０に並列割り当てる。より具体的には、スケジューラ１３５０は、メモリ１３２０に保存されたフローテーブルを参照して、ディープパケットのディープフローがマッピングされたキューを検索し、メモリ１３２０に保存されたディープパケットを検索されたキューに伝送する。もし、テーブルに受信したディープパケットのディープフローに関するマッピング情報が存在しないと、スケジューラ１３５０は、従来の多様な方法を通じて、ディープフローを特定キューに割り当てて、ディープフローとキューとの間のマッピング関係をフローテーブルに保存する。
【００９１】
スケジューラ１３５０は、仮想マシン別のディープパケットを、ディープフローの単位でキューイングすることができる。例えば、ディープフローとキューとの間のマッピングの関係を設定する時、第１仮想マシンと第２仮想マシンに向ける同じ性質(例えば、同じＱｏＳ優先順位)の第１フローと第２フローが、同じキューに割り当てられることができる。本発明がこのような場合を排除することではないが、並列処理の効率をより高めるために、ディープフローを仮想マシン別に、互いに異なるグループのキューに割り当てることが望ましい。つまり、スケジューラ１３５０は、図１４のような仮想マシン別にキューをグルーピングする場合に、第１仮想マシンに対する第１フローは、第１グループ１４００のキューに、ディープフローの単位で割り当てて、第２仮想マシンに対する第２フローは、第２グループ１４１０のキューに、ディープフローの単位で割り当てる。
【００９２】
例えば、新しいディープパケットが、メモリ１３２０に積載された事実と、該当ディープパケットのディープフロー情報を受信すると、スケジューラ１３５０は、フロー テーブルを参照して、ディープフローがどのキューに割り当てられているかを検索し、メモリ１３２０に積載されているディープパケットを、検索された該当キューに積載することができるようにする。もし、識別されたディープフローに関する情報を、フローテーブルから見つけることができない場合、スケジューラ１３５０は、該当ディープパケットを既に設定されたポリシーに応じて、該当仮想マシンに属するキューのいずれかに割り当てることができる。ここで、既に設定されたポリシーは、実施例に基づいて多様になることができ、一例として、フローの親和度を考慮してキューを選択するポリシー、ディープパケットが伝送される仮想マシン内キューにおいての最も負荷が少ないキューを選択するポリシー、使用率が最も低いプロセッサに割り当てされているキューを選択するポリシーなどがある。
【００９３】
複数のキュー１３３０は、それぞれ少なくとも１つ以上のディープフローとマッピングされる。ディープフローの単位でキューイングする場合、プロセッサの親和度が高くなり、それに従って並列処理の効率も増加する。複数のキュー１３３０は、仮想マシン別に少なくとも１つ以上のキューを含むグループに分割されることができる。また、複数のキュー１３３０は、図１５のように、少なくとも２つ以上のパーティションに分割されることができる。
【００９４】
スケジューラ１３５０は、複数のプロセッサの中から選択されたプロセッサであることができる。例えば、全体のプロセッサ１３８０においての特定のプロセッサ１３５０をスケジューラにより指定するか、各プロセッサの負荷程度をモニタリング部１３６０を通じて把握した後、負荷が最も少ないプロセッサをスケジューラ１３５０に選択することができる。この他にも、スケジューラを選択するための多様な方法が適用することができる。プロセッサの中でスケジューラが指定される場合、制御部(図示せず)は、図８に図示された方法のように、スケジューリングが必要になるたびに、割り込み信号を発生して、スケジューラにより指定されたプロセッサに伝送し、割り込み信号を受信したプロセッサは、行ってした作業を停止し、スケジューラとしての動作を完了した後、再び以前の作業を実行する。
【００９５】
複数のプロセッサ１３４０は、各キューに保存されたディープパケットを並列処理して、サーバーの仮想マシンに伝送する。複数のプロセッサに対して、図１ないし図１０で調べた単一のスケジューリングまたは多重プロセッシングの方法が適用されることができる。即ち、複数のプロセッサは、グルーピングされて、各グループごとにスケジューリングされることができる。複数のプロセッサ１３４０は、少なくとも１つ以上のキューに接続される。
【００９６】
例えば、複数のプロセッサ１３４０は、フローの親和度を考慮して、キューに接続される。つまり、同一または類似のディープフロー属性を持つディープパケットを保存するキューをまとめて、プロセッサと接続する。
【００９７】
別の例として、複数のプロセッサ１３４０は、仮想マシン別にキューに接続されることができる。図１４を参照すると、第１プロセッサは、第１仮想マシンに割り当てられた第１ないし第３キュー１４００に接続され、第２プロセッサは、第２仮想マシンに割り当てられた第４ないし第６キュー１４１０に接続され、第３プロセッサは、第３仮想マシンに割り当てられた第７及び第８キュー１４２０に接続されることができる。
【００９８】
別の例として、第１プロセッサは、第１仮想マシンに割り当てられた第１ないし第３キューと一緒に、第２仮想マシンに割り当てられた第４キューに接続され、この場合、第２プロセッサは、第２仮想マシンに割り当てられた第５及び第６キューに接続されることができる。即ち、プロセッサは、少なくとも２つ以上の仮想マシンに割り当てられたキューの全部または一部に接続されることができる。
【００９９】
モニタリング部１３６０は、プロセッサ１３４０とキュー１３３０の負荷などを含む各種の状態をモニタリングする。
【０１００】
キュー管理部１３７０は、モニタリングの結果に基づいて、キューを、図１５のように、複数のパーティションに分割し、各パーティションごとにスケジューラを置いて処理したり、複数のキューを１つにまとめるか、分割して、または仮想マシンに割り当てられたキューの数を増減することなど、キューの大きさと数などを調整する。キュー管理部は、先に調べた図１２のプロセルを通じて把握されたサーバーの仮想化環境などに従っても、仮想マシン別キューの数や大きさなどを動的に設定することができる。
【０１０１】
図１４は、本発明に係るＮＩＣのディープフローベースのキューの割り当ての一例を図示した図である。
【０１０２】
図１４を参照すると、キュー１３３０は、仮想マシン別に区分される。例えば、第１ないし第３キュー１４００は、第１仮想マシンに割り当てられ、第４ないし第６キュー１４１０は、第２仮想マシンに割り当てられ、第７及び第８キュー１４２０は、第３仮想マシンに割り当てられる。スケジューラは、仮想マシン別にディープフローを参照してキューイングを実行する。
【０１０３】
例えば、第１仮想マシンに向かうディープフローを優先順位に基づいて識別する場合に、スケジューラ１３５０は、第１仮想マシンに割り当てられた第１ないし第３キュー１４００に優先順位に基づいて、ディープパケットを分類して保存する。即ち、第１仮想マシンに向かうディープフローの中で優先順位が最も高いディープフローは、第１キューに保存し、その次、優先順位のディープフローは、第２キューに保存して、残りの優先順位のディープフローは、第３キューに保存する。
【０１０４】
図１５は、本発明に係るＮＩＣのディープフローベースのキューの割り当ての他の一例を図示した図である。
【０１０５】
図１５を参照すると、キュー１３３０は、少なくとも２つ以上のパーティション１５２０、１５３０に区分される。各パーティション１５２０、１５３０ごとにスケジューラ１５００、１５１０が割り当てられる。例えば、第１パーティション１５２０に第１スケジューラ１５００が割り当てられ、第２パーティション１５３０に第２スケジューラ１５１０が割り当てられる。各スケジューラ１５００、１５１０は、割り当てられたパーティションにたいして、独立的にスケジューリング作業を並列実行する。本実施例は、キュー１３３０を２つのグループ１５２０、１５３０にグルーピングする例を図示しているが、実施例によって、３つ以上のグループにグルーピングされることができ、各グループのスケジューリングは、図１ないし図１０で説明した多重プロセッシングの方法が適用されることができる。スケジューラは、先に説明したように、複数のプロセッサ１３８０の中の所定の方法によって選択されたプロセッサであることができる。
【０１０６】
例えば、図１３のように、１つのスケジューラによるスケジューリングの実行中に、モニタリング部で測定したキューの負荷分布が、既に設定されたしきい値以下に下がると、キューの再分配またはプロセッサの再割り当てが決定されることができる。または、ネットワークから受信されるディープパケットの統計量と、ＮＩＣ内の総プロセッサによって実行されるプロセッサの能力を計算して、プロセッサの負荷がどのしきい値以下であれば、キューの再分配またはプロセッサの再割り当てが決定されることができる。キューの再分配またはプロセッサの再割り当て時、図１５のように、キューが複数のパーティションに区分され、追加的なスケジューラの指定が必要になる場合、最も負荷が少ないプロセッサを追加スケジューラにより指定することができる。
【０１０７】
各パーティションに属するキューは、仮想マシンベースにグルーピング１５４０されることができ、グループ１５４０内キューは、ディープフローベースで分類されることができる。この場合、パーティション−仮想マシン別のグループ−各グループ別のフロー単位キューの階層的構造が生成される。
【０１０８】
図１６は、本発明に使用されるディープパケットの一例を図示した図である。
【０１０９】
図１６を参照すると、ディープパケットは、物理的なネットワークのフレーム１６１０と、トンネリングフィールド１６２０と、仮想マシン間のネットワークフレーム１６３０と、データフィールド１６００とを含む。
【０１１０】
物理的なネットワークのフレーム１６１０は、Ｌ２、ＩＰ、ＴＣＰなど従来の物理的ネットワークの層を示す情報を含む。トンネリングフィールド１６２０は、トンネリング情報などを示す。仮想マシン間のネットワークフレーム１６３０は、仮想マシン間のネットワーク環境での各層(ｖＬ２〜ｖＬ７など)に関する情報を含む。データフィールド１６００は、データを含む。
【０１１１】
図１６のディープパケットの構造は、本発明の理解を助けるための一例だけで、本発明がこれに限定されるものではなく、仮想マシンの環境のための様々な形態のディープパケットの構造を定義して使用することができる。
【０１１２】
また、 メモリに保存されたディープパケットの構造と、キューに保存されたディープパケットの構造は、実施例に基づいて、同一または異なることができる。例えば、ネットワークから受信した図１６のパケットをデカプセル化して復元したディープパケットを、仮想マシンの環境で処理可能な最適の構造に変更したり、ディープパケットのフィールドにおいての仮想マシンの環境で不要なフィールドの一部または全部を削除するなど、多様に設計変更して、キューに保存することができる。
【０１１３】
図１７は、本発明に係る仮想マシンの環境のためのパケットの処理方法の一例を図示したフローチャートである。
【０１１４】
図１７を参照すると、ネットワークインターフェースデバイスは、ディープパケットを受信すると(段階Ｓ１７００)、ＤＰＩ過程などを通じてディープパケットを分析して、ディープパケットが伝送されるべき目的地の仮想マシンと、ディープフローを識別する(Ｓ１７１０)。ネットワークインターフェースデバイスは、仮想マシン別に割り当てられた少なくとも１つ以上のキューに対して、ディープフローの単位でディープパケットを保存する(Ｓ１７２０)。そして、ネットワークインターフェースデバイスは、複数のプロセッサを通じて各キューに保存されたディープパケットを処理して仮想マシンに伝送する(段階Ｓ１７３０)。
【０１１５】
本発明は、また、コンピュータで読み取り可能な記録媒体にコンピュータが読み取り可能なコードとして体現することが可能である。コンピュータが読み取り可能な記録媒体は、コンピュータシステムによって読み取ることができるデータが格納されるすべての種類の記録装置を含む。コンピュータが読み取り可能な記録媒体の例としては、様々な形態のＲＯＭ、ＲＡＭ、ＣＤ-ＲＯＭ、磁気テープ、フロッピーディスク、光データ保存装置などがある。また、コンピュータが読み取り可能な記録媒体は、ネットワークに接続されたコンピュータシステムに分散されて、分散方式でコンピュータが読み取り可能なコードが保存され、実行されることができる。
【０１１６】
これまで本発明について、その好ましい実施例を中心に調べてみた。本発明が属する技術分野で通常の知識を有する者は、本発明は、本発明の本質的な特性から逸脱しない範囲で変形された形態で具現されることがあることを理解できるだろう。従って、開示された実施例は、限定的な観点ではなく、説明的な観点から考慮されるべきである。本発明の範囲は、前述した説明ではなく、特許請求の範囲に示されており、それと同等の範囲内にあるすべての相違点は、本発明に含まれるものと解釈されるべきである。
【図１】
2017521806.tif 000003
【図２】
2017521806.tif 000004
【図３】
2017521806.tif 000005
【図４】
2017521806.tif 000006
【図５】
2017521806.tif 000007
【図６】
2017521806.tif 000008
【図７】
2017521806.tif 000009
【図８】
2017521806.tif 000010
【図９】
2017521806.tif 000011
【図１０】
2017521806.tif 000012
【図１１】
2017521806.tif 000013
【図１２】
2017521806.tif 000014
【図１３】
2017521806.tif 000015
【図１４】
2017521806.tif 000016
【図１５】
2017521806.tif 000017
【図１６】
2017521806.tif 000018
【図１７】
2017521806.tif 000019
【国際調査報告】
2017521806.tif 000020
2017521806.tif 000021
2017521806.tif 000022
2017521806.tif 000023
2017521806.tif 000024
2017521806.tif 000025
2017521806.tif 000026
2017521806.tif 000027