JP2017117448A - アプリケーションレベルネットワークキューイング - Google Patents

アプリケーションレベルネットワークキューイング Download PDF

Info

Publication number
JP2017117448A
JP2017117448A JP2016234995A JP2016234995A JP2017117448A JP 2017117448 A JP2017117448 A JP 2017117448A JP 2016234995 A JP2016234995 A JP 2016234995A JP 2016234995 A JP2016234995 A JP 2016234995A JP 2017117448 A JP2017117448 A JP 2017117448A
Authority
JP
Japan
Prior art keywords
application
queue
network
thread
socket
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.)
Granted
Application number
JP2016234995A
Other languages
English (en)
Other versions
JP6513627B2 (ja
Inventor
ヴァスデヴァン アニル
Vasudevan Anil
ヴァスデヴァン アニル
エー. パティル キラン
A Patil Kiran
エー. パティル キラン
チェホフ イランゴ アルン
Chekov Ilango Arun
チェホフ イランゴ アルン
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2017117448A publication Critical patent/JP2017117448A/ja
Application granted granted Critical
Publication of JP6513627B2 publication Critical patent/JP6513627B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2475Traffic characterised by specific attributes, e.g. priority or QoS for supporting traffic characterised by the type of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)

Abstract

【課題】アプリケーションレベルネットワークキューイングのためのシステムおよび方法を提供すること。
【解決手段】一例において、複数のキューを提供するように構成されているネットワークインターフェースと、アプリケーションと、入来するパケットを検査し、入来するパケットを分類子に基づいてアプリケーションの専用キューに割り当てるためのキューイングエンジンを備える1つまたは複数の論理要素とを有するコンピューティング装置が開示される。キューイングエンジンを提供する方法、および、キューイングエンジンを提供するための実行可能命令が記憶されている1つまたは複数の有形非一時的コンピュータ可読記憶媒体も開示される。
【選択図】図1

Description

本開示は、概して、コンピュータネットワーキングの分野に関し、排他的にではないが、より詳細には、アプリケーションレベルネットワークキューイングのためのシステムおよび方法に関する。
「ビジーウェイト」または「スピニング」としても知られているビジーポーリングは、条件が真になったか否かを確かめるために、条件を繰り返しモニタリングするプロセスである。たとえば、プロセスが入力を必要とする場合、プロセスは、データが利用可能になったか否かを確かめるために入力バッファを監視しながら、連続的にループすることができる。他の用途は、キーが押下されたか否かを確かめること、または、ロックが利用可能であるか否かを確かめることであり得る。別の用途は、指定ミリ秒数にわたって「何もしない」ことなどによって、既知の時間遅延をもたらすことであるが、プロセッサ速度には変動があるため、これは完全に信頼できるとは言えないものである可能性がある。
ビジーポーリングは、割り込み駆動処理が非効率的であるかまたは煩わしいものであり得る低レベルプログラミングにおいて特に有用な技法であり得る。
本開示は、添付の図面とともに読まれる時に、以下の詳細な説明から最良に理解される。業界における標準的な実践に従って、様々な特徴は必ずしも原寸に比例して図示されてはおらず、例示のみを目的として使用されている。スケールが明示的または黙示的に示されている場合、これは、1つの説明例を与えているに過ぎない。他の実施形態において、様々な特徴の寸法は、論述を明瞭にするために任意に増大または低減されている場合がある。
一例において、複数のキューを提供するように構成されているネットワークインターフェースと、アプリケーションと、入来するパケットを検査し、入来するパケットを分類子に基づいてアプリケーションの専用キューに割り当てるためのキューイングエンジンを備える1つまたは複数の論理要素とを有するコンピューティング装置が開示される。キューイングエンジンを提供する方法、および、キューイングエンジンを提供するための実行可能命令が記憶されている1つまたは複数の有形非一時的コンピュータ可読記憶媒体も開示される。
本明細書の1つまたは複数の例によるセキュリティ有効ネットワークのブロック図である。 本明細書の1つまたは複数の例によるクライアントデバイスのブロック図である。 本明細書の1つまたは複数の例によるサーバデバイスのブロック図である。 本明細書の1つまたは複数の例によるネットワークキューイングシステムのブロック図である。 本明細書の1つまたは複数の例によるネットワークキューイングシステムのブロック図である。 本明細書の1つまたは複数の例による開放型システム間相互接続モデル(OSI)7層スタックのブロック図である。 本明細書の1つまたは複数の例によるネットワークデバイスによって実施される方法の流れ図である。 本明細書の1つまたは複数の例によるアプリケーションによって実施される方法の流れ図である。 本明細書の1つまたは複数の例によるアプリケーションによって実施される方法の流れ図である。 本明細書の1つまたは複数の例による送信動作の流れ図である。
以下の開示は、本開示の種々の特徴を実装するための多くの異なる実施形態または例を提供する。本開示を単純化するために、構成要素および構成の具体的な例を下記に記載する。無論、これらは例に過ぎず、限定であるようには意図されていない。さらに、本開示は、様々な例において参照数字および/または文字を繰り返す場合がある。この繰り返しは単純かつ明瞭にすることを目的としており、それ自体が論述されている様々な実施形態および/または構成の間の関係を決定づけるものではない。異なる実施形態が異なる利点を有し得、いかなる特定の利点も、任意の実施形態に必ず必要とされるものではない。
例として、最新のデータセンター層は、「Hadoop」ソフトウェアフレームワークのような「ビッグデータ」バックエンドを有するウェブサーバおよびデータキャッシュサーバを含むことができる。これらは、リーフスパインアーキテクチャを使用してネットワーク接続することができる。一例において、これらの層は、それ自体で分散型のシステムであり、一般的に、数千の同時接続にサービスし、終点ノード上のコアの数が増大するにつれて、接続の数は将来増大すると予測される。
いくつかのデータセンターは、契約要求事項を満たすため、または、競争上の差別化要因としてのような、目標性能決定論を有し得る。この環境における分散型システムアプリケーションに対して所望の性能決定論(たとえば、一貫したスループットおよびCPU利用で99.99パーセンタイルの待ち時間)を提供することが課題であり得る。多くの事例において、ネットワーク接続インターフェースは、ビジーなハイエンドサーバにおけるアプリケーション性能に対するボトルネックになり得るため、この問題に寄与する主要な要因の1つである。
本明細書は、ネットワークインターフェースボトルネックにスケーラブルに対処する、アプリケーションレベルネットワークキューイング(ALNQ)のためのシステムおよび方法を記載する。ALNQの一実施形態において、改善されたネットワークインターフェースカード(NIC)が提供され、開放型システム間相互接続(OSI)または伝送制御プロトコル/インターネットプロトコル(TCP/IP)スタックのような、既存のネットワークスタックに対する調整を行うこともできる。代替的に、いくつかの実施形態において、ホストネットワークスタックが全体的にまたは部分的にバイパスされ、並列なオフロードまたはオンロードされるスタックを作動することができる。
多くのNICは、入来するトラフィックを複数の別個の「キュー」に分割し、トラフィックは、たとえば、発信元媒体アクセス制御アドレス(MAC)、宛先MAC、および/またはプロトコルを含むソケットタプルに基づくハッシュアルゴリズムに基づいてキューに対して負荷平衡される。ALNQは、アプリケーションが、それら自体の「見える」キュー、および、オペレーティングシステムのネットワーキングスタックを使用した負荷平衡制御を有することを所望し得ることのような問題に対処する。ALNQは、ソケット層可視性を有するNIC上でスケーラブルなアプリケーション特有のキューを作成すること、ならびに、「EPOLL」および「KQUEUE」のようなカーネル事象多重化インターフェースに適用される類縁化および起動アルゴリズムによって可能になる。選択される実施形態において、これによって、平均およびテイルレイテンシがより低く、決定論的になり、レイテンシ許容範囲境界内でスループットがより高くなり、分散型システムをスケーリングするのを助けることができる。
一実施形態において、ALNQは、アプリケーションに対するトラフィックの誘導および低レイテンシ通信の送達に関してトップダウンの視点をとる。アプリケーションは、ネットワーキングの観点から、それら自体をポート番号によってシステム内で区別することができる。たとえば、HTTPデーモンは、ポート80上でリッスンすることができ、一方で、電子メールデーモンは、ポート25上でリッスンすることができる。ALNQは、ポート番号(他の関連する識別情報とともに)を、トラフィックをキュー、すなわち、アプリケーション特有のキューに割り当てるための主キーとして使用することができる。これらのキューに入るトラフィックは、ハッシュベース負荷平衡のための「Receive Side Scaling」(RSS)、または、決定論的なマッチングのためのIntel(登録商標)Ethernet Flow Directorのような既存の方式によって多重化することができる。
割り当てられるキューに関する情報は、不透明な識別子としてアプリケーションまでわたすことができる。その後、アプリケーションは、位置整合のヒントのためにこの識別子を使用することができる。たとえば、EPOLLを使用するアプリケーションは、ファイル記述子を取り扱うアプリケーションスレッドをキューに位置整合し、したがって、アクセスを合理化し、ソケットおよびプロトコル関連データ構造のキャッシュラインバウンスからの影響を軽減することができる。これらのキューはコア間ではなくアプリケーション間で分散することができるため、アプリケーション挙動により良好に一致するように割り込みを調節することもでき、それによって、それらのキューがアプリケーションの間で共有されるようにすることができる。したがって、属性としての低レイテンシを、オープンであるソケット(またはフロー)ではなく、アプリケーション全体、すなわちキューセットに適用することができる。この分離によってまた、プロトコル処理が実施される前に起動するための直接アプリケーションシグナリング方式が可能になる。
有利には、ALNQは、インターフェースもしくは仮想ソケットインターフェース(VSI)を通じて、または、VMもしくはトラフィッククラスによってではなく、ポート番号を通じてキューを割り当てることによってNICトラフィックを誘導し、ポート番号はアプリケーション識別子として機能する。ネットワーキングの観点から、ポート番号は、特定の機械上でアプリケーションを識別するための有用な基礎として動作することができる。アプリケーション識別子は、ポート番号以外の任意の適切なアプリケーション識別子であってもよいことは留意されたい。
さらに有利には、ALNQは、RSSのような既知のハッシュベース方式またはFlow Directorのような正確なマッチ方式を使用して、アプリケーション/ポート番号に割り当てられるキューを負荷平衡させることができる。
さらに有利には、ALNQは、ソケットインターフェース選択肢に対する増強などによって、キュー情報をトークンとしてアプリケーションにわたすことができる。
さらに有利には、アプリケーションは、これらのトークンを使用してスレッドをキューに位置整合させることができる。
さらに有利には、アプリケーション特有のトラフィックを早期に分離することによって、Busy Poll Sockets(BPS)のような既存の低レイテンシ方法を使用すること、キューをアプリケーションスレッドにスケーラブルに位置整合させることを可能にすること、または、サービス品質もしくはセキュリティポリシーを適用することのような、様々な類縁化選択肢を提供する。
さらに有利には、ALNQは、割り込みが休止しているアプリケーションスレッドを直にシグナリングし、その後、デバイスキューからデータを引き出すことができる、割り込みシグナリング方式を有効にする。
ここで、添付の図面をより特定的に参照して、アプリケーションレベルネットワークキューイングのためのシステムおよび方法を説明する。図面全体を通じて、複数の図面にわたって特定のデバイスまたはブロックが完全にまたは実質的に一貫していることを示すために、特定の参照符号が繰り返されている場合があることに留意されたい。しかしながら、これは、開示されている様々な実施形態の間のいかなる特定の関係も暗示するものではない。特定の例において、ある属の要素が、特定の参照符号(「ウィジェット10」)によって参照される場合があり、一方で、その属の個々の種または例が、ハイフンで結ばれた符号(「第1の特定のウィジェット10−1」および「第2の特定のウィジェット10−2」)によって参照される場合がある。
図1は、本明細書の1つまたは複数の例による、安全確保された企業100のネットワークレベル図である。この例において、安全確保された企業100は、外部ネットワーク172を介して情報またはサービスにアクセスし得る1者または複数の顧客160にサービスまたはデータを提供するように構成することができる。これには、安全確保された企業100が、特定のサービスおよびネットワークを少なくとも部分的に外界に露出させ、したがって、論理的なセキュリティの開口部を作成する必要があり得る。
安全確保された企業内で、1者または複数のユーザ120が、1つまたは複数のクライアントデバイス110を操作する。各デバイスは、Microsoft Windows、Linux(登録商標)、Android、Mac OSX、Apple iOS、Unixなどのような、適切なオペレーティングシステムを含んでもよい。上記のいくつかは、別のタイプのデバイスよりも、1つのタイプのデバイス上でより頻繁に使用され得る。たとえば、デスクトップコンピュータまたはエンジニアリングワークステーションは、Microsoft Windows、Linux(登録商標)、Unix、またはMac OSXの1つを使用する傾向がより強いものであり得る。通常、カスタマイズオプションがより少ない既製のポータブルデバイスであるラップトップコンピュータは、Microsoft WindowsまたはMac OSXを作動させる傾向がより強いものであり得る。モバイルデバイスは、AndroidまたはiOSを作動させる傾向がより強いものであり得る。しかしながら、これらの例は限定であるようには意図されていない。
クライアントデバイス110は、企業ネットワーク170を介して互いに、および、他のネットワークリソースに通信可能に結合することができる。企業ネットワーク170は、たとえば、非限定例として、ローカルエリアネットワーク、イントラネット、仮想ネットワーク、広域ネットワーク、無線ネットワーク、セルラネットワーク、またはインターネット(任意選択的にプロキシ、仮想機械、または他の同様のセキュリティメカニズムを介してアクセスされる)を含む、1つまたは複数の適切なネットワーク接続プロトコル上で動作する任意の適切なネットワークまたは1つもしくは複数のネットワークの組み合わせであってもよい。企業ネットワーク170はまた、一例においてワークロードクラスタ142内で仮想化することができる、1つまたは複数のサーバ、ファイアウォール、ルータ、スイッチ、セキュリティアプライアンス、アンチウイルスサーバ、または他の有用なネットワークデバイスをも含んでもよい。この図解において、企業ネットワーク170は、単純にするために単一のネットワークとして図示されているが、いくつかの実施形態においては、企業ネットワーク170は、インターネットに接続されている1つまたは複数の企業イントラネットのような、より多数のネットワークを含んでもよい。企業ネットワーク170はまた、外部ネットワーク172を介してインターネットのような外部ネットワークへのアクセスを可能にすることもできる。外部ネットワーク172は同様に、任意の適切なタイプのネットワークであってもよい。
ワークロードクラスタ142は、たとえば、複数のラックマウント式ブレードサーバ上のハイパーバイザ内で作動する仮想クラスタ、または、物理サーバのクラスタとして提供されてもよい。ワークロードクラスタ142は、1つもしくは複数のサーバ機能、または、1つもしくは複数のハイパーバイザ内の1つもしくは複数の「マイクロクラウド」を提供することができる。たとえば、vCenterのような仮想化環境は、複数の「テナント」を規定する機能を提供することができ、各テナントは、各他のテナントから機能的に別個のものであり、各テナントは、単一目的マイクロクラウドとして動作する。各マイクロクラウドは、個別の機能を供給することができ、エージェント有りおよびエージェント無しの仮想機械(VM)を含む、多くの異なる特色の複数のVMを含むことができる。
エンドポイントデバイス110のいくつかの機能を、ワークロードクラスタ142を介して提供することもできることは留意されたい。たとえば、1つのマイクロクラウドは、エンドポイント110を操作するユーザ120がリモート企業デスクトップにリモートでログインし、企業アプリケーション、ワークスペース、およびデータにアクセスすることを可能にする、Citrixワークスペースのようなリモートデスクトップハイパーバイザを提供することができる。その事例において、エンドポイント110は、余分な機能を取り除いたオペレーティングシステムのみを作動させる、Google Chromebookのような「シンクライアント」であってもよく、依然としてユーザ120に、企業リソースに対する有用なアクセスを提供する。
管理コンソール140として構成されている1つまたは複数のコンピューティングデバイスもまた、企業ネットワーク170上で動作することができる。管理コンソール140は、管理コンソール140が企業ネットワーク170に対して、ならびに、クライアントデバイス110およびワークロードクラスタ142にわたって強制することができる企業セキュリティポリシーを規定するための、セキュリティ管理者150のためのユーザインターフェースを提供することができる。一例において、管理コンソール140は、Linux(登録商標)、Unix、またはWindows Serverのような、サーバクラスオペレーティングシステムを作動させることができる。他の事例において、管理コンソール140は、デスクトップクラスマシン上に、または、ワークロードクラスタ142内でセットアップされているVMを介して、ウェブインターフェースとして提供することができる。
安全確保された企業100は、企業境界104を越えて外部ネットワーク172と通信することができる。企業境界104は、物理的、論理的、または他の境界を表すことができる。外部ネットワーク172は、たとえば、ウェブサイト、サーバ、ネットワークプロトコル、および他のネットワークベースのサービスを含んでもよい。別の例において、安全確保された企業100は、単に、セキュリティ管理者150の役割を負う親がいる家族であってもよい。親は、自身の子を、非限定例として、ポルノ、アドウェア、スパイウェア、年齢にふさわしくないコンテンツ、特定の政治的、宗教的、もしくは社会的運動の意見、または、違法もしくは危険な活動を論じるためのフォーラムのような、望ましくないコンテンツから保護することを所望し得る。この事例において、親は、セキュリティ管理者150の任務のいくつかまたはすべてを実施することができる。
ワークロードクラスタ142は、クライアントデバイス110およびエンドユーザデバイス180のようなクライアントデバイスに任意の適切なネットワークサービスを提供するように構成することができる。たとえば、ワークロードクラスタ142は、非限定例として、ファイアウォール、ウイルス対策、ディープパケットインスペクション、負荷平衡、およびスイッチングのようなセキュリティおよびインフラストラクチャサービスを提供するラックマウントクラウドシステムであってもよい。ワークロードクラスタ142はまた、非限定例として、法人ファイルサーバ、データベースファイルシステム、イントラネットサーバ、またはデータベースサーバのような実体的なネットワークサービスを提供することもできる。企業ユーザ120は、企業ネットワーク170を介してワークロードクラスタ142上のサービスにアクセスするために、クライアントデバイス110上のクライアントアプリケーション112を使用することができる。
エンドユーザ160もまた、ネットワークリソースにアクセスすることができる。エンドユーザ160は、エンドユーザデバイス180上のエンドユーザアプリケーション162を操作して、外部ネットワーク172および企業ネットワーク170を介してワークロードクラスタ142にアクセスすることができる。良好な法人セキュリティ実践によれば、安全確保された企業100の外部からのネットワークは、企業トラフィックおよび外部トラフィックを異なるサブネットワーク上に配置することなどによって、法人ネットワークトラフィックから分離することができる。
ワークロードクラスタ142は、外部エンドユーザ160に、ハイパーテキスト転送プロトコル(HTTP)を介したウェブサイト、簡易メール転送プロトコル(SMTP)を介した電子メール、ファイル転送プロトコル(FTP)、セキュアFTP(SFTP)を介したファイル共有、または、テルネットもセキュアシェル(SSH)のようなプロトコルを介した仮想シェルのような、様々な適切なネットワークサービスを提供することができる。
エンドユーザ160および法人ユーザ120は、ここでは非限定例として2つの別個の異なるエンティティとして開示されているが、厳密な分離は必要ないことに留意されたい。エンドユーザ160はまた法人ユーザでもあってもよく、Citrixまたはリモートデスクトッププロトコル(RDP)のようなリモートクライアントを介して法人リソースにアクセスすることができる。法人ユーザ120はまた、企業リソースに対してフルアクセスよりも制限されたアクセス権を有するゲストユーザでもあってもよい。
例示として単純化された例を提供するために、本明細書は、ワークロードクラスタ142が、1つまたは複数のネットワークインターフェースカード(NIC)を有する単一のワークロードサーバ142であると仮定する。しかしながら、本明細書において開示されている方法は、独立型サーバ、サービスアプライアンス、複数のプロトコルを操作する個々のサーバ、または、1つもしくは複数の物理デバイス上で動作する複数の仮想サーバのような、任意の適切な様式で構成されている任意の適切な数のサーバにスケーリングされてもよい。
この例において、ワークロードサーバ142は、ポート80上でトラフィックを受信するHTTPウェブサーバと、ポート25上でトラフィックを受信するSMTPメールサーバの両方をホストする。ワークロードサーバ142は、クライアントデバイスとの各接続のために、固有の通信「ソケット」または他の論理接続を開くことができる。したがって、たとえば、法人ユーザ120もしくはエンドユーザ160、またはそれらの任意の組み合わせである、100,000人のユーザが所与の一時点においてウェブサイトにアクセスしている場合、100,000個のHTTPソケットがポート80上でオープンである。同様に、50,000人の電子メールユーザが電子メールサービスにアクセスしている場合、50,000個のSMTPソケットがポート25上でオープンである。これらの量は例示のみを目的として与えられている。より少数のまたは独立したサーバは、はるかにより少数の同時ソケットをオープンにし得る一方、大規模な、一般的なウェブサービスはより多くのソケットをオープンにし得る。
本明細書において示されているように、同時接続が多数ある場合、キューイングが大きな課題になり得る。パケットがOSIネットワークモデルのより低いレベルから開始してハッシュされる、RSSのような従来の「ボトムアップ」ハッシュベースキューイングの特定の実施形態は、同じキューを共有する他のアプリケーションからのトラフィックに起因して相当のレイテンシをもたらす場合がある。したがって、本明細書は、レイテンシを低減し、性能を改善するために、アプリケーションレベルネットワークキューイングを提供するためのシステムおよび方法を提供する。例示的な論理的実施形態が図4および図5に示されており、一方で、例示的な方法が、図7〜図9に示されている。
図2は、本明細書の1つまたは複数の例によるクライアントデバイス200のブロック図である。クライアントデバイス200は、任意の適切なコンピューティングデバイスであってもよい。様々な実施形態において、「コンピューティングデバイス」は、非限定例として、コンピュータ、ワークステーション、サーバ、メインフレーム、仮想機械(エミュレートされるか、または「ベアメタル」ハイパーバイザ上にある)、内蔵コンピュータ、内蔵コントローラ、内蔵センサ、個人情報端末、ラップトップコンピュータ、携帯電話、IP電話、スマートフォン、タブレットコンピュータ、コンバーチブルタブレットコンピュータ、コンピューティングアプライアンス、ネットワークアプライアンス、受信機、ウェアラブルコンピュータ、ハンドヘルドコンピュータ、または、データを処理および通信するための任意の他の電子、マイクロ電子、もしくは微小電気機械デバイスもしくは装置であってもよく、または、それらを含んでもよい。任意のコンピューティングデバイスは、ネットワーク上のホストとして指定することができる。各コンピューティングデバイスは、それ自体「ローカルホスト」として参照することができ、一方で、その外部の任意のコンピューティングデバイスは、「リモートホスト」として指定することができる。
特定の実施形態において、クライアントデバイス110はすべて、クライアントデバイス200の例であってもよい。
クライアントデバイス200は、オペレーティングシステム222および少なくともクライアントエージェント224のソフトウェア部分を提供するための実行可能命令を記憶されているメモリ220に接続されているプロセッサ210を含む。クライアントデバイス200の他の構成要素は、ストレージ250と、ネットワークインターフェース260と、周辺インターフェース240とを含む。このアーキテクチャは、例示としてのみ与えられており、非排他的で非限定的であるように意図されている。さらに、開示されている様々な部品は、論理的区分であるように意図されているに過ぎず、必ずしも物理的に別個のハードウェアおよび/またはソフトウェア構成要素を表している必要はない。特定のコンピューティングデバイスは、たとえば、単一の物理メモリデバイス内にメインメモリ220およびストレージ250を提供し、他の事例においては、メモリ220および/またはストレージ250は、多くの物理デバイスにわたって機能的に分散される。仮想機械またはハイパーバイザの事例において、機能のすべてまたは部分は、開示されている論理機能を提供するために仮想化層にわたって作動しているソフトウェアまたはファームウェアの形態で提供されてもよい。他の例において、ネットワークインターフェース260のようなデバイスは、その論理演算を実施するために必要な最小限のハードウェアインターフェースのみを提供することができ、追加の必要な論理を提供するために、ソフトウェアドライバに依拠することができる。したがって、本明細書において開示されている各論理ブロックは、そのブロックの開示されている論理演算を提供するように構成されており、動作可能である1つまたは複数の論理要素を含むように広範に意図されている。本明細書全体を通じて使用されているものとしては、「論理要素」は、ハードウェア、外部ハードウェア(デジタル、アナログ、または混合信号)、ソフトウェア、レシプロケーティングソフトウェア、サービス、ドライバ、インターフェース、コンポーネント、モジュール、アルゴリズム、センサ、ファームウェア、マイクロコード、プログラム可能論理、または、論理演算を達成するように協働することができるオブジェクトを含んでもよい。
一例において、プロセッサ210は、メモリバス270−3を介してメモリ220に通信可能に結合されており、当該バスは、たとえば、例としてダイレクトメモリアクセス(DMA)バスであってもよいが、メモリ220がシステムバス270−1または何らかの他のバスを介してプロセッサ210と通信するものを含む、他のメモリアーキテクチャが可能である。プロセッサ210は、システムバス270−1を介して他のデバイスに通信可能に結合することができる。本明細書全体を通じて使用されているものとしては、「バス」は、任意の有線もしくは無線相互接続線、ネットワーク、接続、バンドル、単一のバス、複数のバス、クロスバーネットワーク、単段ネットワーク、多段ネットワーク、または、コンピューティングデバイスの部品間、もしくは、コンピューティングデバイス間でデータ、信号、もしくは電力を搬送するように動作可能な他の伝導媒体を含む。これらの用途は非限定例としてのみ開示されていること、および、いくつかの実施形態は上記のバスの1つまたは複数を省略してもよく、一方で、他の実施形態は追加のまたは異なるバスを利用してもよいことに留意されたい。
様々な例において、「プロセッサ」は、非限定例として、マイクロプロセッサ、デジタル信号プロセッサ、フィールドプログラマブルゲートアレイ、グラフィックスプロセッシングユニット、プログラム可能論理アレイ、特定用途向け集積回路、または仮想機械プロセッサを含む、メモリからロードされるか、または、ハードウェア内に直に実装されるかを問わない、命令を実行するように動作可能な論理要素の任意の組み合わせを含んでもよい。特定のアーキテクチャにおいて、マルチコアプロセッサが提供されてもよく、その事例において、プロセッサ210は適宜、マルチコアプロセッサの1つのコアとしてのみ取り扱われてもよく、または、マルチコアプロセッサ全体として取り扱われてもよい。いくつかの実施形態において、1つまたは複数のコプロセッサはまた、特殊化した機能またはサポート機能のために提供されてもよい。
プロセッサ210は、DMAバス270−3(または他の同様のメモリ相互接続)を介してDMA構成でメモリ220に接続されてもよい。本開示を単純にするために、メモリ220は、単一の論理ブロックとして開示されているが、物理的な実施形態においては、たとえば、DDR RAM、SRAM、DRAM、キャッシュ、L1またはL2メモリ、オンチップメモリ、レジスタ、フラッシュ、ROM、光媒体、仮想メモリ領域、磁気またはテープメモリなどを含む、1つまたは複数の任意の適切な揮発性または不揮発性メモリ技術の1つまたは複数のブロックを含んでもよい。特定の実施形態において、メモリ220は、相対的にレイテンシの低い揮発性メインメモリを含んでもよく、一方で、ストレージ250は、相対的にレイテンシの高い不揮発性メモリを含んでもよい。しかしながら、メモリ220およびストレージ250は、物理的に別個のデバイスである必要はなく、いくつかの例においては、単純に機能の論理的分離を表してもよい。非限定例としてDMAが開示されているが、DMAは本明細書と適合する唯一のプロトコルではないこと、および、他のメモリアーキテクチャが利用可能であることにも留意されたい。
ストレージ250は、任意の種類のメモリ220であってもよく、または、別個のデバイスであってもよい。ストレージ250は、非限定例として、ハードドライブ、ソリッドステートドライブ、外部ストレージ、独立ディスクの冗長アレイ(RAID)、ネットワーク接続ストレージ、光ストレージ、テープドライブ、バックアップシステム、クラウドストレージ、または上記の任意の組み合わせを含む、1つまたは複数の非一時的コンピュータ可読媒体を含んでもよい。ストレージ250は、1つもしくは複数のデータベースまたは他の構成で記憶されるデータであってもよく、またはそれらを内部に含んでもよく、オペレーティングシステム222およびクライアントエージェント224のソフトウェア部分のような動作ソフトウェアの記憶されているコピーを含んでもよい。多くの他の構成も可能であり、本明細書の広範な範囲内に包含されるように意図されている。
ネットワークインターフェース260は、クライアントデバイス200を有線または無線ネットワークに通信可能に結合するために提供することができ、ネットワークインターフェースカード(NIC)、ホストファブリックインターフェース(HFI)、または任意の他の適切なデバイスであってもよい。本明細書全体を通じて使用されているものとしての「ネットワーク」は、非限定例として、アドホックローカルネットワーク、コンピューティングデバイスに電子的対話の機能を提供するインターネットアーキテクチャ、コンピューティングデバイスが人間のオペレータによって支援され得るかまたはコンピューティングデバイスが手動でデータを電話もしくは他の適切な電子機器にキーイングすることができるトランザクションを実施するためにコンピューティングデバイスが使用し得る一般電話回線(POTS)、システム内の任意の2つのノードの間に通信インターフェースまたは交換を提供する任意のパケットデータネットワーク(PDN)、もしくは、任意のローカルエリアネットワーク(LAN)、都市規模ネットワーク(MAN)、広域ネットワーク(WAN)、無線ローカルエリアネットワーク(WLAN)、仮想プライベートネットワーク(VPN)、イントラネット、または、ネットワークもしくは電話環境における通信を促進する任意の他の適切なアーキテクチャもしくはシステムを含む、コンピューティングデバイスの中または間でデータまたは情報を交換するように動作可能な任意の通信プラットフォームを含んでもよい。
クライアントエージェント224は一例において、本明細書において記載されているようなコンピュータ実施方法を実行するように動作可能である。クライアントエージェント224は、プロセッサに、クライアントエージェント224を提供するように命令するように動作可能な実行可能命令が記憶されている1つまたは複数の有形非一時的コンピュータ可読媒体を含んでもよい。本明細書全体を通じて使用されているものとしては、「エンジン」は、エンジンによって提供される1つまたは複数の方法を実施するように動作可能であり、そのように構成されている、同様のまたは異なる種類の1つまたは複数の論理要素の任意の組み合わせを含む。したがって、クライアントエージェント224は、本明細書において開示されるような方法を提供するように構成されている1つまたは複数の論理要素を含んでもよい。いくつかの事例において、クライアントエージェント224は、方法またはその一部分を実行するように設計されている専用集積回路を含んでもよく、また、プロセッサに、当該方法を実施するように命令するように動作可能であるソフトウェア命令をも含んでもよい。いくつかの事例において、クライアントエージェント224は、「デーモン」プロセスとして作動してもよい。「デーモン」は、バックグラウンドプロセス、常駐プログラム、サービス、システム拡張、コントロールパネル、起動手順、BIOSサブルーチン、または、直接ユーザと対話することなく動作する任意の同様のプログラムとして作動する、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせにおいて実装されるかを問わない、任意のプログラムまたは一連の実行可能命令を含んでもよい。特定の実施形態において、デーモンプロセスは、「ドライバ空間」内で高位の特権をもって、または、保護リングアーキテクチャ内のリング0、1、もしくは2において作動することができる。クライアントエージェント224はまた、非限定例として、構成ファイル、レジストリエントリ、対話またはユーザモードソフトウェアを含む、他のハードウェアおよびソフトウェアをも含んでもよいことにも留意されたい。
一例において、クライアントエージェント224は、本明細書による方法を実施するように動作可能な非一時的媒体上に記憶されている実行可能命令を含む。クライアントデバイス200の起動時、または、オペレーティングシステム222もしくはユーザ120からのコマンドを受けてなど、適切な時点において、プロセッサ210は、ストレージ250から命令のコピーを取り出し、これをメモリ220にロードすることができる。プロセッサ210はその後、所望の方法を提供するために、クライアントエージェント224の命令を反復的に実行することができる。
クライアントエージェント224は、法人ユーザ120または顧客160のようなエンドユーザが、サーバ300によって提供されるサービスにアクセスするためのインターフェースおよびサービスを提供することができる。たとえば、クライアントエージェント224は、ウェブブラウザ、電子メールクライアント、または、ファイル転送プロトコル(FTP)、テルネット、セキュアシェル(SSH)、ネットワークタイムプロトコル(NTP)、もしくは任意の他の適切なネットワークベースのプログラムのようなプログラムのためのクライアントであってもよく、または、それらを含んでもよい。
周辺インターフェース240は、クライアントデバイス200に接続するが、必ずしもクライアントデバイス200のコアアーキテクチャの一部分であるとは限らない任意の補助デバイスとインターフェースするように構成することができる。周辺機器は、クライアントデバイス200に拡張機能を提供するように動作可能であってもよく、全体的にクライアントデバイス200に依存してもよく、または、依存しなくてもよい。いくつかの事例において、周辺機器は、独立しているコンピューティングデバイスであってもよい。周辺機器は、非限定例として、ディスプレイ、端子、プリンタ、キーボード、マウス、モデム、データポート(たとえば、シリアル、パラレル、USB、ファイアワイヤなど)、ネットワークコントローラ、光媒体、外部ストレージ、センサ、トランスデューサ、アクチュエータ、コントローラ、データ取得バス、カメラ、マイクロフォン、またはスピーカのような入力および出力デバイスを含んでもよい。
一例において、周辺機器は、ディスプレイアダプタ242、オーディオドライバ244、および入出力(I/O)ドライバ246を含む。ディスプレイアダプタ242は、コマンドラインインターフェース(CLI)、または、Microsoft Windows、Apple OSXデスクトップ、もしくはUnix/Linux(登録商標) X Windowシステムベースデスクトップのようなグラフィカルデスクトップのような、人間が読解可能な視覚出力を提供するように構成することができる。ディスプレイアダプタ242は、非限定例として、同軸出力、コンポジットビデオ、コンポーネントビデオ、VGA、または、DVIもしくはHDMI(登録商標)のようなデジタル出力のような、任意の適切なフォーマットの出力を提供することができる。いくつかの例において、ディスプレイアダプタ242は、それ自体のメモリおよびそれ自体のグラフィックスプロセッシングユニット(GPU)を有することができる、ハードウェアグラフィックスカードを含んでもよい。オーディオドライバ244は、可聴音のためのインターフェースを提供することができ、いくつかの例において、ハードウェアサウンドカードを含んでもよい。音声出力は、アナログ(3.5mmステレオジャックなど)、コンポーネント(「RCA」)ステレオ、または、非限定例として、S/PDIF、AES3、AES47、HDMI(登録商標)、USB、Bluetooth(登録商標)またはWi−Fiオーディオのようなデジタルオーディオフォーマットで提供されてもよい。
図3は、本明細書の1つまたは複数の例によるサーバクラスデバイス300のブロック図である。サーバ300は、図2に関連して記載されているような、任意の適切なコンピューティングデバイスまたは装置であってもよい。概して、図2の定義および例は、別途具体的に記述されない限り、図3に等しく適用可能であると考えることができる。サーバ300は、特定の実施形態において、本明細書による論理演算をクライアント−サーバモデルに沿って分割することができ、クライアントデバイス200は特定の局在化されたタスクを提供し、一方でサーバ300は特定の他の集中化されたタスクを提供することを示すために、本明細書においては別個に記載される。現代の実践において、サーバ300はクライアントデバイス200よりも、コンピューティングクラスタ上で作動する「ヘッドレス」VMとして、または、独立型アプライアンスとして提供される傾向が強いが、これらの構成は必須ではない。
サーバ300は、複数のコアを含むことができ、オペレーティングシステム322および少なくともサーバエンジン324のソフトウェア部分を提供するための実行可能命令が記憶されているメモリ320に接続することができるプロセッサ310を含む。サーバ300の他の構成要素は、ストレージ350、およびネットワークインターフェース360を含む。図2に記載されているように、各論理ブロックは、1つまたは複数の同様のまたは異なる論理要素によって提供することができる。
一例において、プロセッサ310は、たとえば、ダイレクトメモリアクセス(DMA)バスまたは保管および適切なメモリ相互接続であってもよいメモリバス370−3を介してメモリ320に通信可能に結合される。プロセッサ310は、システムバス370−1を介して他のデバイスに通信可能に結合することができる。
プロセッサ310は、DMAバス370−3を介して、または、任意の他の適切なメモリ相互接続を介してDMA構成でメモリ320に接続されてもよい。図2において論じられているように、メモリ320は、任意の適切なタイプの1つまたは複数の論理要素を含んでもよい。
ストレージ350は、図2のストレージ250に関連して記載されているように、任意の種類のメモリ320であってもよく、または、別個のデバイスであってもよい。ストレージ350は、1つもしくは複数のデータベースまたは他の構成で記憶されるデータであってもよく、またはそれらを内部に含んでもよく、オペレーティングシステム322およびサーバエンジン324のソフトウェア部分のような動作ソフトウェアの記憶されているコピーを含んでもよい。
ネットワークインターフェース360は、図2において記載されているように、サーバ140を有線または無線ネットワークに通信可能に結合することができ、1つまたは複数の論理要素を含むことができる。ネットワークインターフェース360は、NIC、HFI、または任意の他の適切なデバイスであってもよい。
サーバエンジン324は、図2において記載されているようなエンジンであり、一例において、本明細書において記載されているようなコンピュータ実施方法を実行するように動作可能な1つまたは複数の論理要素を含む。サーバエンジン324のソフトウェア部分は、デーモンプロセスとして作動することができる。
サーバエンジン324は、プロセッサに、セキュリティエンジンを提供するように命令するように動作可能な実行可能命令が記憶されている1つまたは複数の非一時的コンピュータ可読媒体を含んでもよい。サーバ140の起動時、または、オペレーティングシステム322もしくはユーザ120もしくはセキュリティ管理者150からのコマンドを受けてなど、適切な時点において、プロセッサ310は、ストレージ350からサーバエンジン324(またはそのソフトウェア部分)のコピーを取り出し、これをメモリ320にロードすることができる。プロセッサ310はその後、所望の方法を提供するために、サーバエンジン324の命令を反復的に実行することができる。
サーバエンジン324は、ネットワークベースのサービスを提供するための、デーモンを含む、任意の適切なサーバプログラムであってもよい。これらは、非限定例として、HTTPもしくはウェブサーバ、電子メールサーバ、FTPサーバ、テルネットサーバ、SSHサーバ、NTPサーバ、または任意の他の適切なサーバを含んでもよい。特定の実施形態において、サーバエンジン324は、本明細書において記載されているようなALNQの「アプリケーション」である。特定の実施形態において、サーバエンジン324は、図8の方法または関連方法を実施することができる。
キューイングエンジン326も提供することができ、これは、本明細書において記載されているようなエンジンであってもよい。キューイングエンジン326は、図7の方法または関連方法を実施することを含む、ALNQキューイングサービスを提供するように構成することができる。
図4は、本明細書の1つまたは複数の例によるサーバ300の選択された要素のブロック図である。この例において、NIC360がサーバ300をネットワーク170に接続しており、ネットワーク170は、複数のエンドユーザデバイス462に通信可能に結合されている。数千またはそれ以上のエンドユーザデバイス462を含む、多くのエンドユーザデバイス462があってもよい。エンドユーザデバイス462は、サーバエンジン324または任意の他の適切なアプリケーションなどを介して、サーバ300によって提供されるサービスにアクセスする目的で、サーバ300にアクセスする。
この例において、サーバ300は8つのコア310を含む。各コア310は適宜、異なるサービスまたはサービスのスレッドに専用のものとすることができるが、これは非限定例に過ぎず、プロセッサ310が複数の異なるプロセスを共有することも可能である。この例において、ウェブサーバ420が提供される。ウェブサーバ420は、4つの別個のスレッドに分割される。具体的には、ウェブ0 420−0はコア0 310−0上で作動する。ウェブ1 420−1はコア1 310−1上で作動する。ウェブ2 420−2はコア2 310−2上で作動する。ウェブ3 420−3はコア3 310−3上で作動する。
電子メールサーバ430も提供される。この例において、2つのコアが電子メールサーバ430に専用とされる。具体的には、電子メール0 430−0はコア4 310−4上で作動する。電子メール1 430−1はコア5 310−5上で作動する。
最後の2つのコアは、バックグラウンドプロセスをサポートすることに寄与する。具体的には、サポートアプリケーション450がコア6 310−6上で作動する。オペレーティングシステム322が、コア7 310−7上で作動する。コアの数、スレッドの数、および、いくつかのコアの間でのスレッドの分散は、非限定例として与えられている。他の実施形態においては、他の構成が可能である。いくつかの事例において、機械はより多くのコアを有してもよく、より多くのスレッドを有してもよい。他の事例において、機械はより少ないコアを有してもよく、より少ないスレッドを有してもよい。コアおよびスレッドの任意の適切な組み合わせが利用可能である。
この例において、NIC360は、0〜15の番号を付されたキュー450を露出させる。本明細書において開示されている例によれば、グループ452を含むキュー0〜3は、ポート80上のトラフィックに専用とされる。グループ454を含むキュー4および5は、ポート25上のトラフィックに専用とされる。キュー6〜15は補助キューと考えられ、オペレーティングシステム322およびサポートアプリケーション450によって使用されるために割り当てられる。
入来するパケットがNIC360に対してネットワーク170から来ると、キューイングエンジン326は、パケットをトップダウン式に検査する。言い換えれば、キューイングエンジン326は、上層の情報を最初に検査する。この例において、キューイングエンジン326は具体的には、いずれの論理ポートにパケットが指定されているかを見ている。一例において、パケットは、パケットがポート80トラフィックである時かつその時に限り、グループ452に割り当てられる。したがって、すべてのポート80トラフィックがグループ452に割り当てられ、ポート80トラフィックでないトラフィックはグループ452には割り当てられない。
同様に、入力するトラフィックがポート25上の電子メールトラフィックである時かつその時に限り、トラフィックはグループ454に割り当てられる。言い換えれば、すべてのポート25トラフィックがグループ454に割り当てられ、ポート25トラフィックでないトラフィックはグループ454には割り当てられない。
ポート80またはポート25のいずれでもない任意のトラフィックは、標準的な割り当て方法に従って、6〜15の番号を付された補助ポートの1つに割り当てられる。この方法は、ハッシングなどを含んでもよい。これは、ウェブサーバ420には、そのトラフィックのすべてがグループ452内に現れることになり、外部トラフィックはそのグループ内には現れないことが分かることを意味する。同様に、電子メールサーバ430には、そのトラフィックのすべてがグループ454内に現れることになり、外部トラフィックはそのグループ内には現れないことが分かる。反対に、オペレーティングシステム322には、それら2つのグループがそれらのそれぞれのアプリケーションによって完全に「占有」されていることが分かり、そのため、OS322は、適切な状況において、その通常のセキュリティ手順のいくらかを迂回し、それらのアプリケーションがそれら自体の内部セキュリティを処理するようにすることができる。
補助ポート6〜15へのトラフィックの割り当ては、いくつかの実施形態においては、RSS、Flow Directorなどのような従来技術の方法を含む、任意の適切な方法を用いて達成することができる。同様に、パケットがグループ452または454のいずれかに割り当てられると、グループ内のキューへのパケットの割り当ては、RSS、Flow Directorなどを含む任意の適切な手段によって達成することができる。
有利には、グループ452がウェブサーバ420に指定されているポート80上のトラフィックしか含まないことは分かっているため、ここでオペレーティングシステムは、アプリケーション特有のポリシーおよび最適化を直に課すための柔軟性を有する。一例として、オペレーティングシステムは、他のアプリケーションからのトラフィックを有することに起因するセキュリティ違反を考慮する必要なしに、キューをアプリケーションに直にわたすことができる。
図5は、本明細書の1つまたは複数の例による追加の実施形態の図である。図5の例において、グループ452および454は、図4の例におけるそれらの2倍の大きさである。これは、キューとスレッドとの間の1対1のマッピングが可能である時、1よりも大きい任意のnについて、n対1のマッピングも可能であることを示すためのものである。
図5の例において、グループ452および454は両方とも、各スレッドについて2つの別個のキューを確保する。これは、ウェブサーバ420および電子メールサーバ430が、サーバ300の機能に対して、サポート機能450およびオペレーティングシステム322よりも相対的に重要であり得るという原則を示している。したがって、特定の実施形態において、各スレッドに対して追加のキューを割り当て、通信におけるボトルネックを回避することが有利であり得る。したがって、この例では、キュー0および1がウェブサーバスレッド420−0のために確保されている。キュー2および3は、ウェブサーバスレッド420−1のために確保されている。キュー4および5は、ウェブサーバスレッド420−2のために確保されている。キュー6および7は、ウェブサーバスレッド420−3のために確保されている。
同様に、キュー8および9は、電子メールサーバスレッド430−0のために確保されている。キュー10および11は、電子メールサーバスレッド430−1のために確保されている。
最後に、キュー12〜15は汎用に割り当てられており、ポート80か25上にないすべてのトラフィックを含め、サポート機能450およびオペレーティングシステム322のために使用することができる。
図4および図5の例は、可能性のある構成の非限定例であることに留意されたい。キューの数がコアの数に正確に一致する構成、または、キューの数が非整数関数によってコアの数に関連付けられる構成を含む、他の構成が可能である。
図6は、従来のOSIネットワークスタックモデルのブロック図解である。従来のOSIモデルにおいて、ネットワークスタックは7つの層、具体的には、物理層610、データリンク層620、ネットワーク層630、トランスポート層640、セッション層650、プレゼンテーション層660、およびアプリケーション層670を含む。OSIモデルはここでは例示を目的として提示されており、OSIモデルは非限定例に過ぎないことは理解されたい。「インターネットプロトコル群」(TCP/IPとして参照されることが多い)も、一般的に使用される。TCP/IP層は、OSI層と同様であり得るが、同一ではない。
OSIモデルの7つの層は、ここでは、本明細書の関連部分の文脈の目的のために、簡潔に記載されている。これらの層は、要約すると以下の通りである。
物理層610−物理層(レイヤ1)は、ネットワーキングハードウェアおよび送信技術を提供する。この層は、物理ワイヤ、クロック、電圧、および、論理データパケットではなく生のビットの送信を可能にするための他の物理構造を含む。各ビットストリームはコード語またはシンボルにグループ化され、ハードウェア伝送媒体を介して送信される物理信号に変換されてもよい。物理層は、伝送媒体に対する電気的、機械的、および手続き的インターフェースを提供する。7層モデルの文脈の中で、物理層は、データリンク層からの論理通信要求をハードウェア特有の動作に変換して、電子信号の送信または受信を実行する。
データリンク層620−データリンク層(レイヤ2)は、ネットワークエンティティ間のデータの機能的および手続き的転送を可能にするために、隣接するネットワークノード間でデータを転送するプロトコル層である。特定の実施形態において、データリンク層はまた、エラー検出および補正をも可能にする。この層における基本データ単位はデータリンクフレームであり、これは、ローカルネットワーク境界をまたぐようには意図されていない。ネットワーク間のルーティングおよび大域的アドレス指定は、より高い層において実施される。これによって、データリンク層がローカルな送達、アドレス指定、および媒体仲裁に集中することが可能である。データリンクプロトコルは、デバイスがどのように衝突を検出し、衝突から回復するかを指定し、それらを低減または防止するためのメカニズムを提供することができる。したがって、特定の既存のアーキテクチャにおいて、パケットのキューイングは、MACアドレスのような、この層において利用可能な値または絶対値のハッシュを使用することに基づく。
ネットワーク層630−レイヤ3はネットワーク層である。ネットワーク層は、中間ルータを通じたルーティングを含む、パケット転送の役割を担う。ネットワーク層は、サービス品質機能を維持しながら、発信元から1つまたは複数のネットワークを介して宛先ホストへと可変長データシーケンスを転送する機能的および手続き的手段を提供する。ネットワーク層の機能は、以下を含む。
接続モデル:コネクションレス通信。たとえば、IPは、受信者が確認応答を送信する必要なしに、データグラムが送信者から受信者へと進行することができるという点において、コネクションレスである。OSIモデルの他のより高い層にはコネクション型のプロトコルが存在する。
ホストアドレス指定。ネットワーク内のすべてのホストは、それがどこにあるかを決定づける固有のアドレスを有しなければならない。このアドレスは通常、階層システムから割り当てられる。TCP/IPにおいて、これは、32ビットIPv4(たとえば、192.168.1.1)、または、128ビットIPv6(たとえば、2001:0DB8:AC10:FE01:0000:0000:0000:0000)のいずれかのIPアドレスである。IPv4アドレスは、大域的に固有であってもよく、または、ローカルに固有(すなわち、ローカルサブネットワークにおいて使用される場合)であってもよい。IPv6アドレスは、大域的に固有であるように意図されている。
メッセージ転送。多くのネットワークがサブネットワークに区分化され、広域通信のために他のネットワークに接続するため、ネットワークは、ネットワーク間でパケットを転送するために、ゲートウェイまたはルータと呼ばれる専用のホストを使用する。これはまた、ユーザが1つの箇所から別の箇所へと移動する場合があり、ユーザのメッセージがユーザに追従するように構成されなければならないモバイルアプリケーションにとっても関心事である。
ネットワーク層は、トランスポート層からのサービス要求に応答し、データリンク層にサービス要求を発行する。
トランスポート層640−レイヤ4は、アプリケーションのエンドツーエンドまたはホストツーホスト通信サービスを可能にするトランスポート層である。トランスポート層は、接続型データストリームサポート、信頼性、フロー制御、および多重化のようなサービスを提供する。単純なコネクションレス(ステートレス)実施態様は、レイヤ4におけるユーザデータグラムプロトコル(UDP)を使用することができ、一方で、コネクション型(ステートフル)実施態様は、伝送制御プロトコル(TCP)を使用することができる。非限定例として、データグラム輻輳制御プロトコル(DCCP)およびストリーム制御転送プロトコル(SCTP)も提供される。
セッション層650−レイヤ5はセッション層である。セッション層は、図1のエンドユーザアプリケーション162またはクライアントアプリケーション112のようなエンドユーザアプリケーションおよび図4のウェブサーバ420の間のセッションを開き、閉じ、管理する。通信セッションは、アプリケーション間で発生する要求および応答から構成される。セッション層サービスは、遠隔手続き呼び出し(RPC)を利用するアプリケーション環境において一般的に使用されている。セッション層は、プレゼンテーション層からのサービス要求に応答することができ、トランスポート層にサービス要求を発行する。
プレゼンテーション層660−レイヤ6は、構文層とも呼ばれるプレゼンテーション層である。プレゼンテーション層は、データ構造のフラットなバイト配列へのシリアライゼーションを含む、さらなる処理または表示のためのアプリケーション層への情報の送達およびフォーマット化の役割を担う。この層は、エンドユーザシステム内でのデータ表現の構文上の相違を処理する。たとえば、EBCDICコード化データは、アプリケーションによって使用するためにASCIIに変換することができる。この層はまた、多様なデータ型の問題も処理する。たとえば、明確な整数長を有するパスカル形式文字列は、Cスタイルヌル終端文字列とは別様に解釈される必要があり得る。適切な場合、暗号化もこの層において実施されてもよい。
アプリケーション層670−レイヤ7は、アプリケーション層である。OSIモデルにおいて、レイヤ7は、受信された情報をユーザに表示する役割を担う。
特定の既存のネットワーキングアーキテクチャにおいて、NIC360のようなネットワークインターフェースへと入来するトラフィックは、キュー450のようなキューに割り当てられる。
図7は、本明細書の1つまたは複数の例による、キューイングエンジン326によって、特に受信されるパケットに対して実施される方法700の流れ図である。
ブロック720において、NIC360が、入来するパケットを受信する。これは、物理インターフェースが、入来するデータパケットを提供する電気信号を受信することを意味する。
ブロック730において、キューイングエンジン326が、パケットをトップダウン式に構文解析する。具体的には、この例においては、キューイングエンジン326は、パケットの宛先ポートを抽出するが、他の値が使用されてもよい。
ブロック740において、キューイングエンジン326は、ポートが「リッスン」するポートとして構成されているか否かを判定する。そうである場合、キューイングエンジン326は、このポートに割り当てられているグループ内のいくつかのキューを識別する。
ブロック750において、キューイングエンジン326は、パケットを負荷平衡させて、その割り当てられているキューへと分散させる。たとえば、グループ452がHTTPトラフィックのために指定されている場合、かつ、入来するパケットがポート80に対するものである場合、キューイングエンジン326は、パケットを、適切な負荷平衡アルゴリズムに従ってグループ452内のキューの1つに割り当てることができる。パケットを割り当てるための特定のキューを識別するためにRSS、Flow Directorなどを使用することができる。パケットはその後、適切な場合にプロセッサから独立してアクセスすることができるように、ダイレクトメモリアクセス(DMA)を介して利用可能にすることができる。
ブロック760において、割り込みが有効化され(たとえば、「ビジーポーリング」ではなく)、割り込み抑止タイマが満了している場合、キューイングエンジン326は、割り込みをホストに送信する。言い換えれば、割り込みドライバは、すべての入来するパケットについて割り込みをトリガするのではない。むしろ、割り込みは、パケットの閾値または時間に達した時にのみトリガされる。その後、割り込みサービスルーチンが、サーバエンジン324に直にシグナリングする。割り込みは、トリガ論理に応じてアサートされ、アサートされる場合、アプリケーションにシグナリングする。いずれにせよ、サーバエンジン324からのポーリングが、パケットフローをトリガし得る。
ブロック780において、キューイングエンジン326は、キューイング通知を、サーバエンジン324のスレッドのような、適切なプロセスに送信する。たとえば、ウェブサーバ420の事例において、キューイングエンジン326は、プロセスのスレッド0 420−0のような適切なスレッドに通知を送信することができる。具体的には、ドライバは、キューからパケットを拾い出し、そのパケットとともに、特定のキューを識別した不透明な情報をわたすことができる。この情報は、ソケット層内に記憶され、アプリケーションに対して利用可能である。
ブロック799において、方法は終了する。
図8は、本明細書の1つまたは複数の例による、サーバエンジン324のようなアプリケーションによって実施される方法800の流れ図である。
ブロック810において、アプリケーションスレッドが非同期ポール呼び出しを行う。たとえば、Linux(登録商標)オペレーティングシステムは、EPOLLとして知られている呼び出しを与える。EPOLLなどを使用する場合、アプリケーションは、アプリケーションが監視しているソケットの不透明なキュー識別子を取得し、特定のイベントファイル記述子について監視している他のソケットのキュー識別子と一致するか否かを調べるためにチェックする。そうである場合、アプリケーションはこのソケットをウォッチリストに追加する。そうでない場合、アプリケーションは、一致するキュー記述子を有し、そのウォッチリストに追加されるイベントファイル記述子にソケットをわたす。一例において、単一のスレッドが、単一のイベントファイル記述子に対して動作する。したがって、監視しているソケットの、同じキュー識別子との一致を作成することによって、他のアプリケーションからの干渉なしにトラフィックフローが合理化される。
ブロック820において、アプリケーションスレッドが、非同期ポーリングによって提供されるソケット/イベントファイル記述子に従って、その割り当てられているキューをポーリングする。データがない(また、それ故にそのためにする作業がない)ためにスレッドが休止した場合、休止しているスレッドに対して起動を直に実施することができ、スレッドが復帰してそのキューからパケットを引き出すことが可能になる。言い換えれば、プロトコルおよび記述子処理は、割り込み、または、割り込みの結果としてスケジューリングされる遅延プロシージャコール(DPC)(Windows)/SoftIRQ(Linux(登録商標))の文脈においてではなく、スレッドの文脈において行われる。その際に、スケジューリング親和性が確保される。アプリケーション(サーバエンジン326など)のスケジューラ起動によって、同じキャッシング/スケジューリング領域内のパケット送達および送信と関連付けられる、すべての共有カーネル構造が保持され、オペレーティングシステム/ハイパーバイザのスケジューリングポリシーと整合される。
ブロック830において、アプリケーションスレッドは、タイムアウトになるまでビジーポーリングを実施する。ソケットのビジーポーリングは、アプリケーション特有のキューからパケットを直に引き出すために合理化することができる。
判断ブロック840において、データが利用可能である場合、ブロック870において、図9の方法900が実施される。
データが利用可能でない場合、ブロック880において、スレッドは、割り込みが有効化されて休止状態になる。
ブロック899において、方法は終了する。
図9は、本明細書の1つまたは複数の例による、データ消費の追加の詳細を開示する方法900の流れ図である。
ブロック940において、NIC360は、パケットと関連付けられるキュー識別子トークンをスタンピングし、識別子を、ネットワークスタックを上方へと伝播させる。アプリケーション324がその後、NIC360からキュー識別子を受信する。2つ以上のNIC360がある場合、これはまた、デバイス識別子(たとえば、NIC0,キュー1、NIC1,キュー1など)をも含み得ることに留意されたい。
ブロック960において、ソケット層が、キュー識別子をその状態の一部分として記憶する。ここでも、キュー識別子はデバイス特有であり得る。
ブロック980において、アプリケーション324がデータを消費する。
ブロック999において、方法は終了する。
図10は、本明細書の1つまたは複数の例による、ALNQを用いて送信動作を実施する方法1000の流れ図である。この方法は、非限定例として理解され、特に、特定のネットワーク層が、例としてこの流れ図の動作を割り当てられる。
ブロック1010において、アプリケーション324が、拡張ソケットオプションなどを介して、ソケットのキューマッピングを設定することができる。これは、送信先のキューが最後の送信動作と異なる場合にのみ必要とされ得ることに留意されたい。
ブロック1030において、アプリケーション324は、通常のパケットSENDコールを使用してパケットを送信する。
ブロック1040において、ネットワークスタックのソケット層が、キュー識別子を送信パケットに付加する。
ブロック1050において、プロトコルおよびネットワーク層が、それらの通常の、知られている機能を実施する。
ブロック1060において、デバイス層が、キュー識別子をチェックし、パケットを送信のために指定されているキューに配置する。
ブロック1080において、デバイス層が、パケットが送信のために準備ができていることを、適切なNIC360にシグナリングする。
ブロック1090において、NIC360がパケットを送信する。
ブロック1099において、方法は終了する。
上記は、いくつかの実施形態の特徴を、当業者が本開示の様々な態様をよりよく理解することができるように、概説している。当業者は、自身が本明細書において紹介されている実施形態の同じ目的を実行し、および/または、同じ利点を達成するために、他のプロセスおよび構造を設計または修正するための基礎として、本開示を容易に使用することができることを了解するはずである。当業者はまた、そのような均等な構造が本開示の趣旨および範囲から逸脱しないこと、ならびに、自身が本開示の趣旨および範囲から逸脱することなく本発明において様々な変更、置換、および改変を行うことができることも認識するはずである。クライアントデバイス200およびサーバ300は両方とも、コンピューティング装置または他のコンピューティングデバイスの例であり得ることに留意されたい。
本明細書において開示されている任意のハードウェア要素のすべてまたは一部分は、中央処理装置(CPU)パッケージを含むシステムオンチップ(SoC)において容易に提供することができる。SoCは、コンピュータまたは他の電子システムの構成要素を単一のチップに集積する集積回路(IC)を表す。したがって、たとえば、クライアントデバイス110かサーバデバイス300は、全体的にまたは部分的に、SoC内に設けることができる。SoCは、デジタル、アナログ、混合信号、および無線周波数機能を含むことができ、それらのすべてを、単一のチップ基板上に設けることができる。他の実施形態は、複数のチップが単一の電子パッケージ内に配置され、電子パッケージを通じて互いと近密に相互作用するように構成されている、マルチチップモジュール(MCM)を含んでもよい。様々な他の実施形態において、本明細書において開示されているコンピューティング機能は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、および他の半導体チップ内の1つまたは複数のシリコンコアにおいて実装されてもよい。
また、特定の実施形態において、構成要素のいくつかは省略または統合されてもよいことも留意されたい。一般的な意味において、図面に示されている構成は、それらの表現においてより論理的であり得、一方で、物理アーキテクチャは、これらの要素の様々な置換、組み合わせ、および/またはハイブリッドを含んでもよい。本明細書において概説されている動作目的を達成するために無数の可能な設計構成を使用することができることに留意しなければならない。したがって、関連するインフラストラクチャは、無数の代替的な構成、設計選択肢、デバイスの可能性、ハードウェア構成、ソフトウェア実施態様、および機器オプションを有する。
一般的な意味において、プロセッサ310のような任意の適切に構成されているプロセッサが、本明細書において詳述されている動作を達成するために、データと関連付けられる任意のタイプの命令を実行することができる。本明細書において開示されている任意のプロセッサは、要素または物品(たとえば、データ)を、1つの状態または物から別の状態または物へと変換し得る。別の例において、本明細書において概説されているいくつかの活動は、固定論理またはプログラム可能論理(たとえば、プロセッサによって実行されるソフトウェアおよび/またはコンピュータ命令)によって実施されてもよく、本明細書において識別されている要素は、何らかのタイプのプログラム可能プロセッサ、プログラム可能デジタル論理(たとえば、フィールドプログラマブルゲートアレイ(FPGA)、消去可能プログラマブル読み出し専用メモリ(EPROM)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM))、デジタル論理を含むASIC、ソフトウェア、コード、電子命令、フラッシュメモリ、光ディスク、CD−ROM、DVD ROM、磁気もしくは光カード、電子命令を記憶するのに適した他のタイプの機械可読媒体、または、それらの任意の適切な組み合わせであってもよい。
動作時、ストレージ350のようなストレージが、適宜、特定の需要に基づいて、任意の適切なタイプの有形非一時的記憶媒体(たとえば、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、フィールドプログラマブルゲートアレイ(FPGA)、消去可能プログラマブル読み出し専用メモリ(EPROM)、電気的消去可能プログラマブルROM(EEPROM)など)、ソフトウェア、ハードウェア(たとえば、プロセッサ命令またはマイクロコード)内、または、任意の他の適切な構成要素、デバイス、要素、またはオブジェクト内に情報を記憶することができる。さらに、追跡、送信、受信、またはプロセッサ内に記憶される情報は、特定の需要および実施態様に基づいて、任意のデータベース、レジスタ、テーブル、キャッシュ、キュー、制御リスト、またはストレージ構造において提供されてもよく、それらのすべてが任意の適切な時間枠内で参照され得る。メモリ320およびストレージ350のような、本明細書において開示されているメモリまたは記憶要素のいずれかは、適宜、「メモリ」および「ストレージ」という広範な用語の中に包含される物として解釈されるべきである。非一時的記憶媒体は本明細書において、開示されている動作を提供し、または、プロセッサ310のようなプロセッサに開示されている動作を実施させるように構成されている任意の非一時的専用またはプログラム可能ハードウェアを含むように明示的に意図されている。
本明細書において記載されている機能のすべてまたは一部分を実施するコンピュータプログラム論理は、決して限定はされないが、ソースコード形態、コンピュータ実行可能形態、機械命令またはマイクロコード、プログラム可能ハードウェア、および様々な中間形態(たとえば、アセンブラ、コンパイラ、リンカ、またはロケータによって生成される形態)を含む、様々な形態で具現化される。一例において、ソースコードは、オブジェクトコード、アセンブリ言語、または、様々なオペレーティングシステムや動作環境とともに使用するためのOpenCL、Fortran、C、C++、JAVA(登録商標)、もしくはHTMLのような高水準言語、または、Spice、Verilog、およびVHDLのようなハードウェア記述言語において実装される一連のコンピュータプログラム命令を含む。ソースコードは、様々なデータ構造および通信メッセージを定義し、使用することができる。ソースコードは、(たとえば、インタープリタを介して)コンピュータ実行可能形態にあってもよく、または、ソースコードは、(たとえば、変換装置、アセンブラ、またはコンパイラを介して)コンピュータ実行可能形態に変換されてもよく、もしくは、バイトコードのような中間形態に変換されてもよい。適宜、上記のいずれかを、順序、組み合わせ、状態機械、またはその他であるかを問わず、適切なディスクリートまたは集積回路を構築または記述するために使用することができる。
1つの例示的な実施形態において、図面の任意の数の電気回路を、関連電子デバイスの基板上に実装することができる。基板は、電子デバイスの内部電子システムの様々な構成要素を保持し、さらに、他の周辺機器のためのコネクタを提供することができる、一般的な回路基板であってもよい。より具体的には、基板は、それによってシステムの他の構成要素が電気的に通信することができる、電気接続を提供することができる。任意の適切なプロセッサおよびメモリが、特定の構成需要、処理需要、およびコンピューティング設計に基づいて基板に適切に結合することができる。外部ストレージ、追加のセンサ、オーディオ/ビデオディスプレイのためのコントローラ、および周辺デバイスのような他の構成要素が、プラグインカードとして、ケーブルを介して基板に付加されてもよく、または、基板自体に集積されてもよい。別の例において、図面の電気回路は、独立型モジュール(たとえば、特定のアプリケーションまたは機能を実施するように構成されている関連構成要素および回路を有するデバイス)として実装されてもよく、または、プラグインモジュールとして、電子デバイスの特定用途向けハードウェア内に実装されてもよい。
本明細書において与えられている多数の例によれば、相互作用は、2つ、3つ、4つ、またはそれ以上の電気的構成要素に関して説明され得ることに留意されたい。しかしながら、これは、明瞭にすることおよび例示することのみを目的として行われている。システムは、任意の適切な様式で統合または再構成することができることは了解されたい。同様の設計代替形態に沿って、図面の例示されている構成要素、モジュール、および要素は、様々な可能な構成において組み合わされてもよく、それらのすべてが、本明細書の広範な範囲内にある。特定の事例において、限られた数の電気的要素のみを参照することによって、所与のフローセットの機能の1つまたは複数を説明することがより容易であり得る。図面の電気回路およびその教示は容易にスケーラブルであり、多数の構成要素、ならびにより複雑な/洗練された配列および構成に適合することができることは了解されたい。したがって、与えられている例は、無数の他のアーキテクチャに適用される可能性があるような、電気回路の範囲を限定すべきではなく、または、その広範な教示を阻害するべきではない。
多数の他の変更、置換、変形、代替、および修正が当業者によって究明され得、本開示は、添付の特許請求項の範囲内に入るものとしての、すべてのそのような変更、置換、変形、代替、および修正を包含することが意図されている。米国特許商標庁(USPTO)、および、加えて、本出願に対して発行される任意の特許の任意の読者が本明細書に添付されている特許請求項を解釈するのを補助するために、本出願人が、(a)「〜するための手段」または「〜するステップ」という文言が特定の特許請求項において具体的に使用されていない限り、特許請求項は本明細書の出願日付で存在するため、添付の特許請求項のいずれも、米国特許法第112条(旧法)の第6段落または同条項(改正法)の段落(f)を行使するようには意図せず、(b)本明細書におけるいずれの陳述によっても、添付の特許請求項に別途明示的に反映されていないいずれの様式においても、本開示を限定することを意図しないことに留意することを、本出願人は所望する。
例示的な実施態様
複数のキューを提供するように構成されているネットワークインターフェースと、アプリケーションと、入来するパケットを検査し、入来するパケットを分類子に基づいてアプリケーションの専用キューに割り当てるためのキューイングエンジンを備える1つまたは複数の論理要素とを備える装置が、実施例1において開示される。
分類子がアプリケーション識別子を含む、実施例1の装置が、実施例2において開示される。
分類子がポート番号を含む、実施例1の装置が、実施例3において開示される。
アプリケーションに割り当てを通知するための手段をさらに備える、実施例1の装置が、実施例4において開示される。
アプリケーションが割り込みメカニズムを迂回し、スレッドごとに干渉のないビジーポーリングを実施することを可能にするための手段を備える、実施例1の装置が、実施例5において開示される。
キューイングエンジンがさらに、拡張ソケットオプションを介してソケットのキューマッピングを受信する、実施例1の装置が、実施例6において開示される。
アプリケーションが、ソケットのキュー割り当てを含むキュー割り当て通知をネットワークインターフェースから受信し、ソケットを、キュー割り当てと関連付けられるスレッドに割り当てる、実施例1の装置が、実施例7において開示される。
スレッドが、1対1構成においてキュー割り当てと一意に関連付けられる、実施例7の装置が、実施例8において開示される。
複数のキュー割り当てがn対1構成においてスレッドと関連付けられる、実施例7の装置が、実施例9において開示される。
アプリケーションが割り込みメカニズムを迂回し、スレッドごとに干渉のないビジーポーリングを実施する、実施例7の装置が、実施例10において開示される。
アプリケーションが、拡張ソケットオプションを介してソケットのキューマッピングを設定する、実施例7の装置が、実施例11において開示される。
ネットワークインターフェース上で入来するパケットを検査し、入来するパケットを、分類子に基づいてアプリケーションの専用キューに割り当てるためのキューイングエンジンを提供するための命令が記憶されている1つまたは複数の有形非一時的コンピュータ可読媒体が、実施例12において開示される。
分類子がアプリケーション識別子を含む、実施例12の1つまたは複数の有形非一時的コンピュータ可読記憶媒体が、実施例13において開示される。
分類子がポート番号を含む、実施例12の1つまたは複数の有形非一時的コンピュータ可読記憶媒体が、実施例14において開示される。
アプリケーションに割り当てを通知するための命令をさらに含む、実施例12の1つまたは複数の有形非一時的コンピュータ可読記憶媒体が、実施例15において開示される。
アプリケーションが割り込みメカニズムを迂回し、スレッドごとに干渉のないビジーポーリングを実施することを可能にするための命令をさらに含む、実施例12の1つまたは複数の有形非一時的コンピュータ可読記憶媒体が、実施例16において開示される。
キューイングエンジンがさらに、拡張ソケットオプションを介してソケットのキューマッピングを受信する、実施例12の1つまたは複数の有形非一時的コンピュータ可読記憶媒体が、実施例17において開示される。
ソケットのキュー割り当てを含むキュー割り当て通知をネットワークインターフェースから受信し、ここで、キュー割り当てはアプリケーションに固有であり、ソケットを、キュー割り当てと関連付けられるスレッドに割り当てるためのアプリケーションを提供するための命令が記憶されている1つまたは複数の有形非一時的コンピュータ可読媒体が、実施例18において開示される。
スレッドが、1対1構成においてキュー割り当てと一意に関連付けられる、実施例18の1つまたは複数の有形非一時的コンピュータ可読記憶媒体が、実施例19において開示される。
複数のキュー割り当てがn対1構成においてスレッドと関連付けられる、実施例18の1つまたは複数の有形非一時的コンピュータ可読記憶媒体が、実施例20において開示される。
アプリケーションが割り込みメカニズムを迂回し、スレッドごとに干渉のないビジーポーリングを実施する、実施例18の1つまたは複数の有形非一時的コンピュータ可読記憶媒体が、実施例21において開示される。
アプリケーションが、拡張ソケットオプションを介してソケットのキューマッピングを設定する、実施例18の1つまたは複数の有形非一時的コンピュータ可読記憶媒体が、実施例22において開示される。
ネットワークインターフェース上で複数のキューを提供するステップと、ネットワーク機能アプリケーションを提供するステップと、キューイングエンジンを備える1つまたは複数の論理要素が、入来するパケットを検査するステップと、入来するパケットを分類子に基づいてアプリケーションの専用キューに割り当てるステップとを含む、アプリケーションレベルネットワークキューイングを提供する方法が、実施例23において開示される。
分類子がアプリケーション識別子を含む、実施例23の方法が、実施例24において開示される。
分類子がポート番号を含む、実施例23の方法が、実施例25において開示される。
アプリケーションに割り当てを通知するステップをさらに含む、実施例23の方法が、実施例26において開示される。
アプリケーションが割り込みメカニズムを迂回し、スレッドごとに干渉のないビジーポーリングを実施することを可能にすることをさらに含む、実施例23の方法が、実施例27において開示される。
拡張ソケットオプションを介してソケットのキューマッピングを受信するステップをさらに含む、実施例23の方法が、実施例28において開示される。
アプリケーションが、ソケットのキュー割り当てを含むキュー割り当て通知をネットワークインターフェースから受信するステップと、ソケットを、キュー割り当てと関連付けられるスレッドに割り当てるステップとをさらに含む、実施例23の方法が、実施例29において開示される。
スレッドが、1対1構成においてキュー割り当てと一意に関連付けられる、実施例29の方法が、実施例30において開示される。
複数のキュー割り当てがn対1構成においてスレッドと関連付けられる、実施例31の方法。
アプリケーションが割り込みメカニズムを迂回するステップと、スレッドごとに干渉のないビジーポーリングを実施するステップとをさらに含む、実施例29の方法が、実施例32において開示される。
アプリケーションが、拡張ソケットオプションを介してソケットのキューマッピングを設定する、実施例29の方法が、実施例33において開示される。
実施例23〜33のいずれかの方法を実施するための手段を備える装置が、実施例34において開示される。
方法を実施するための手段が、プロセッサおよびメモリを含む、実施例34の装置が、実施例35において開示される。
メモリが、実行されると装置に実施例23〜33のいずれかの方法を実施させる機械可読命令を含む、実施例35の装置が、実施例36において開示される。
装置がコンピューティングシステムである、実施例34〜36のいずれかの装置が、実施例37において開示される。
実行されると、実施例23〜37のいずれかに記載の方法を実施するかまたは装置を実現する命令を含む、少なくとも1つのコンピュータ可読媒体が、実施例38において開示される。
ネットワークスタックのレイヤ1において入来するパケットを受信するステップと、アプリケーションに一意に割り当てられる高レベル分類属性を抽出するために、パケットをトップダウン式に構文解析するステップと、アプリケーションに割り当てられているいくつかのキューを判定するステップと、アプリケーションに割り当てられているいくつかのキューからのキューに対するパケットを負荷平衡させるステップと、キュー通知をアプリケーションに送信するステップとを含む、アプリケーションレベルネットワークキューイングを提供する方法が、実施例39において開示される。
高レベル分類属性がアプリケーション識別子である、実施例39の方法が、実施例40において開示される。
高レベル分類属性がポート番号である、実施例39の方法が、実施例41において開示される。
パケットを負荷平衡させるステップが、ハッシングを含む、実施例39の方法が、実施例42において開示される。
パケットを負荷平衡させるステップが、決定論的負荷平衡アルゴリズムを含む、実施例39の方法が、実施例43において開示される。
実施例39〜43のいずれかの方法を実施するための手段を備える装置が、実施例44において開示される。
方法を実施するための手段が、プロセッサおよびメモリを含む、実施例44の装置が、実施例45において開示される。
メモリが、実行されると装置に実施例39〜43のいずれかの方法を実施させる機械可読命令を含む、実施例45の装置が、実施例46において開示される。
装置がコンピューティングシステムである、実施例44〜46のいずれかの装置が、実施例47において開示される。
実行されると、実施例39〜47のいずれかに記載の方法を実施するかまたは装置を実現する命令を含む、少なくとも1つのコンピュータ可読媒体が、実施例48において開示される。
ソケットまたはイベントファイル記述子に従って複数の専用の割り当てられるキューをポーリングするために非同期ポール動作を呼び出すステップと、タイムアウトが満了するまでキューをビジーポーリングするステップと、1つまたは複数のデータが利用可能であることを判定するステップと、ネットワークインターフェースデバイスからキュー識別子通知を受信するステップと、ソケット状態を有するキュー識別子を記憶するステップと、データを消費するステップとを含む、アプリケーションがアプリケーションレベルネットワークキューイングを使用する方法が、実施例49において開示される。
実施例49の方法を実施するための手段を備える装置が、実施例50において開示される。
方法を実施するための手段が、プロセッサおよびメモリを含む、実施例50の装置が、実施例51において開示される。
メモリが、実行されると装置に実施例49の方法を実施させる機械可読命令を含む、実施例51の装置が、実施例52において開示される。
装置がコンピューティングシステムである、実施例50〜52のいずれかの装置が、実施例53において開示される。
実行されると、実施例49〜53のいずれかに記載の方法を実施するかまたは装置を実現する命令を含む、少なくとも1つのコンピュータ可読媒体が、実施例54において開示される。
25 ポート
80 ポート
100 安全確保された企業
104 企業境界
110 クライアントデバイス、エンドポイントデバイス
112 クライアントアプリケーション
120 ユーザ
140 管理コンソール、サーバ
142 ワークロードクラスタ、ワークロードサーバ
150 セキュリティ管理者
160 エンドユーザ、顧客
162 エンドユーザアプリケーション
170 企業ネットワーク
172 外部ネットワーク
180 エンドユーザデバイス
200 クライアントデバイス
210 プロセッサ
220 メモリ
222 オペレーティングシステム
224 クライアントエージェント
240 周辺インターフェース
242 ディスプレイアダプタ
244 オーディオドライバ
246 入出力ドライバ
250 ストレージ
260 ネットワークインターフェース
270−1 システムバス
270−3 メモリバス、DMAバス
300 サーバ、サーバデバイス
310 コア、プロセッサ
310−0 コア0
310−1 コア1
310−2 コア2
310−3 コア3
310−4 コア4
310−5 コア5
310−6 コア6
310−7 コア7
320 メモリ
322 オペレーティングシステム
324 サーバエンジン
326 キューイングエンジン
350 ストレージ
360 ネットワークインターフェース
370−1 システムバス
370−3 メモリバス
420 ウェブサーバ
420−0 ウェブサーバスレッド
420−1 ウェブサーバスレッド
420−2 ウェブサーバスレッド
420−3 ウェブサーバスレッド
430 電子メールサーバ
430−0 電子メールサーバスレッド
430−1 電子メールサーバスレッド
450 キュー、 サポートアプリケーション サポート機能
452 グループ
454 グループ
462 エンドユーザデバイス
610 物理層
620 データリンク層
630 ネットワーク層
640 トランスポート層
650 セッション層
660 プレゼンテーション層
670 アプリケーション層
700 方法
800 方法
900 方法
1000 方法

Claims (26)

  1. 複数のキューを提供するように構成されているネットワークインターフェースと、
    アプリケーションと、
    入来するパケットを検査し、
    前記入来するパケットを分類子に基づいて前記アプリケーションの専用キューに割り当てるためのキューイングエンジンを備える1つまたは複数の論理要素と
    を備える、装置。
  2. 前記分類子がアプリケーション識別子を含む、請求項1に記載の装置。
  3. 前記分類子がポート番号を含む、請求項1に記載の装置。
  4. 前記アプリケーションに前記割り当てを通知するための手段をさらに備える、請求項1に記載の装置。
  5. 前記アプリケーションが割り込みメカニズムを迂回し、スレッドごとに干渉のないビジーポーリングを実施することを可能にするための手段を備える、請求項1に記載の装置。
  6. 前記キューイングエンジンがさらに、拡張ソケットオプションを介してソケットのキューマッピングを受信する、請求項1に記載の装置。
  7. 前記アプリケーションが、ソケットのキュー割り当てを含むキュー割り当て通知を前記ネットワークインターフェースから受信し、前記ソケットを、前記キュー割り当てと関連付けられるスレッドに割り当てる、請求項1〜6のいずれか一項に記載の装置。
  8. 前記スレッドが、1対1構成において前記キュー割り当てと一意に関連付けられる、請求項7に記載の装置。
  9. 複数のキュー割り当てがn対1構成において前記スレッドと関連付けられる、請求項7に記載の装置。
  10. 前記アプリケーションが割り込みメカニズムを迂回し、スレッドごとに干渉のないビジーポーリングを実施する、請求項7に記載の装置。
  11. 前記アプリケーションが、拡張ソケットオプションを介して前記ソケットのキューマッピングを設定する、請求項7に記載の装置。
  12. キューイングエンジンに、
    ネットワークインターフェース上で入来するパケットを検査させ、
    前記入来するパケットを、分類子に基づいてアプリケーションの専用キューに割り当てさせる、コンピュータプログラム。
  13. 前記分類子がアプリケーション識別子を含む、請求項12に記載のコンピュータプログラム。
  14. 前記分類子がポート番号を含む、請求項12に記載のコンピュータプログラム。
  15. 前記アプリケーションに前記割り当てを通知するための命令をさらに含む、請求項12に記載のコンピュータプログラム。
  16. 前記アプリケーションが割り込みメカニズムを迂回し、スレッドごとに干渉のないビジーポーリングを実施することを可能にするための命令をさらに含む、請求項12のコンピュータプログラム。
  17. 前記キューイングエンジンがさらに、拡張ソケットオプションを介してソケットのキューマッピングを受信する、請求項12〜16のいずれか一項に記載のコンピュータプログラム。
  18. アプリケーションに、
    ソケットのキュー割り当てを含むキュー割り当て通知をネットワークインターフェースから受信させ、ここで、前記キュー割り当てはアプリケーションに固有であり、
    前記ソケットを、前記キュー割り当てと関連付けられるスレッドに割り当てさせる、コンピュータプログラム。
  19. 前記スレッドが、1対1構成において前記キュー割り当てと一意に関連付けられる、請求項18に記載のコンピュータプログラム。
  20. 複数のキュー割り当てがn対1構成において前記スレッドと関連付けられる、請求項18に記載のコンピュータプログラム。
  21. 前記アプリケーションが割り込みメカニズムを迂回し、スレッドごとに干渉のないビジーポーリングを実施する、請求項18〜20のいずれか一項に記載のコンピュータプログラム。
  22. 前記アプリケーションが、拡張ソケットオプションを介して前記ソケットのキューマッピングを設定する、請求項18に記載のコンピュータプログラム。
  23. ネットワークインターフェース上で複数のキューを提供するステップと、
    ネットワーク機能アプリケーションを提供するステップと、
    キューイングエンジンを備える1つまたは複数の論理要素が、
    入来するパケットを検査するステップと、
    前記入来するパケットを分類子に基づいて前記アプリケーションの専用キューに割り当てるステップと
    を含む、アプリケーションレベルネットワークキューイングを提供する方法。
  24. 前記分類子がアプリケーション識別子を含む、請求項23に記載の方法。
  25. 前記分類子がポート番号を含む、請求項23に記載の方法。
  26. 請求項12乃至22のうちいずれか1項記載のコンピュータプログラムを記憶した1つまたは複数の有形非一時的コンピュータ可読記憶媒体。
JP2016234995A 2015-12-26 2016-12-02 アプリケーションレベルネットワークキューイング Active JP6513627B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/998,138 2015-12-26
US14/998,138 US10547559B2 (en) 2015-12-26 2015-12-26 Application-level network queueing

Publications (2)

Publication Number Publication Date
JP2017117448A true JP2017117448A (ja) 2017-06-29
JP6513627B2 JP6513627B2 (ja) 2019-05-15

Family

ID=59086736

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016234995A Active JP6513627B2 (ja) 2015-12-26 2016-12-02 アプリケーションレベルネットワークキューイング

Country Status (5)

Country Link
US (4) US10547559B2 (ja)
EP (1) EP3395022A4 (ja)
JP (1) JP6513627B2 (ja)
CN (3) CN114615212A (ja)
WO (1) WO2017112326A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11966634B2 (en) 2021-12-02 2024-04-23 Kioxia Corporation Information processing system and memory system

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10547559B2 (en) 2015-12-26 2020-01-28 Intel Corporation Application-level network queueing
JP6982717B2 (ja) 2016-03-25 2021-12-17 ティーティーテック インダストリアル オートメーション アーゲー フォグコンピューティング促進型フレキシブル工場
US10798063B2 (en) 2016-10-21 2020-10-06 Nebbiolo Technologies, Inc. Enterprise grade security for integrating multiple domains with a public cloud
US10191911B2 (en) * 2017-05-27 2019-01-29 Plesk International Gmbh Permanent website hosting on mobile devices
US10747632B2 (en) * 2017-08-11 2020-08-18 T-Mobile Usa, Inc. Data redundancy and allocation system
US10972579B2 (en) * 2017-10-13 2021-04-06 Nebbiolo Technologies, Inc. Adaptive scheduling for edge devices and networks
US10735341B2 (en) 2018-04-26 2020-08-04 Nicira, Inc. Dynamic provisioning of multiple RSS engines
US10686716B2 (en) 2018-07-23 2020-06-16 Vmware, Inc. Dynamic processing of packets using multiple receive queue features
US11025546B2 (en) 2018-07-25 2021-06-01 Vmware, Inc. Selection of paired transmit queue
US11366753B2 (en) * 2018-07-31 2022-06-21 Marvell Asia Pte Ltd Controlling performance of a solid state drive
US11343193B2 (en) * 2020-01-03 2022-05-24 Realtek Singapore Private Limited Apparatus and method for rate management and bandwidth control
US20200241927A1 (en) * 2020-04-15 2020-07-30 Intel Corporation Storage transactions with predictable latency
CN113965561B (zh) * 2021-10-20 2023-08-25 中电科航空电子有限公司 一种基于异步事件驱动的机载文件传输系统
CN115396386B (zh) * 2022-08-09 2023-11-17 伟志股份公司 一种数据共享系统、方法及其应用

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08297626A (ja) * 1995-04-14 1996-11-12 Mitsubishi Electric Res Lab Inc ネットワーク・インタフェースおよびネットワーク・インタフェースにおけるパケット処理方法
JP2002185509A (ja) * 2000-12-14 2002-06-28 Sony Corp 通信装置及び通信方法
JP2005507612A (ja) * 2001-10-29 2005-03-17 エムピーネット・インターナショナル・インコーポレイテッド マルチメディア通信のための方法、システム及びデータ構造
WO2007138250A2 (en) * 2006-05-25 2007-12-06 Solarflare Communications Incorporated Computer system with lock- protected queues for sending and receiving data
JP2008020977A (ja) * 2006-07-11 2008-01-31 Sony Computer Entertainment Inc ネットワークプロセッサシステムおよびネットワークプロトコル処理方法
JP2009213065A (ja) * 2008-03-06 2009-09-17 Nec Corp Tcpバッファコピー分散並列処理装置、方法及びプログラム
WO2011096307A1 (ja) * 2010-02-03 2011-08-11 日本電気株式会社 プロキシ装置とその動作方法
EP2645674A1 (en) * 2006-07-10 2013-10-02 Solarflare Communications Inc Interrupt management
JP2014513466A (ja) * 2011-04-05 2014-05-29 テレフオンアクチーボラゲット エル エム エリクソン(パブル) パケットスケジューリング方法及び装置
JP2015019369A (ja) * 2013-07-09 2015-01-29 インテル コーポレイション イングレス制御を備えたトラフィック管理
JP2015511449A (ja) * 2012-02-03 2015-04-16 アップル インコーポレイテッド クライアント装置上でパケット送信をスケジュールするためのシステム及び方法
US20150201007A1 (en) * 2005-06-15 2015-07-16 Solarflare Communications, Inc. Reception according to a data transfer protocol of data directed to any of a plurality of destination entities
JP2015527755A (ja) * 2012-06-29 2015-09-17 日本電気株式会社 QoS制御システム、QoS制御方法及びプログラム
US20150277997A1 (en) * 2014-03-31 2015-10-01 Solarflare Communications, Inc. Ordered Event Notification
US20150334008A1 (en) * 2014-05-15 2015-11-19 Samsung Electronics Co., Ltd. Method of distributing data and device supporting the same
WO2015199366A1 (ko) * 2014-06-26 2015-12-30 정기웅 다중 프로세싱 환경에서의 스케줄링 방법 및 그 장치

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6256660B1 (en) * 1997-04-08 2001-07-03 International Business Machines Corporation Method and program product for allowing application programs to avoid unnecessary packet arrival interrupts
US6295532B1 (en) * 1999-03-02 2001-09-25 Nms Communications Corporation Apparatus and method for classifying information received by a communications system
WO2002019634A1 (en) * 2000-08-31 2002-03-07 Netrake Corporation Method for enforcing service level agreements
US9525696B2 (en) * 2000-09-25 2016-12-20 Blue Coat Systems, Inc. Systems and methods for processing data flows
CN1322752C (zh) * 2001-12-26 2007-06-20 好利集团有限公司 一种因特网协议互动电视系统及其实现方法
US7702739B1 (en) 2002-10-01 2010-04-20 Bao Tran Efficient transactional messaging between loosely coupled client and server over multiple intermittent networks with policy based routing
US8347313B2 (en) * 2003-05-21 2013-01-01 Resilient Networks, Inc. Method and apparatus for automating organization of processes
US7703138B2 (en) * 2004-12-29 2010-04-20 Intel Corporation Use of application signature to identify trusted traffic
US7606147B2 (en) * 2005-04-13 2009-10-20 Zeugma Systems Inc. Application aware traffic shaping service node positioned between the access and core networks
US8737579B2 (en) * 2005-08-03 2014-05-27 At&T Intellectual Property I, L.P. Methods of routing messages using a listener registry
US20070067770A1 (en) * 2005-09-16 2007-03-22 Thomasson Christopher M System and method for reduced overhead in multithreaded programs
US7512619B2 (en) * 2005-09-19 2009-03-31 International Business Machines Corporation Real time work queue notification
US20070130367A1 (en) * 2005-11-18 2007-06-07 Vivek Kashyap Inbound connection prioritization
US20070280105A1 (en) * 2006-05-31 2007-12-06 Omri Barkay Enabling client QoS middle layer based on application recognition
US8856783B2 (en) * 2010-10-12 2014-10-07 Citrix Systems, Inc. Allocating virtual machines according to user-specific virtual machine metrics
US8238324B2 (en) * 2009-07-24 2012-08-07 Broadcom Corporation Method and system for network aware virtual machines
US8462797B2 (en) * 2009-11-30 2013-06-11 Alcatel Lucent Method of priority based transmission of wireless video
CN102088470B (zh) * 2009-12-07 2014-03-05 中兴通讯股份有限公司 通信系统中文件传输协议死锁检测及自恢复的方法与装置
US8346999B2 (en) * 2009-12-15 2013-01-01 Intel Corporation Dynamic receive queue balancing with high and low thresholds
US8527993B2 (en) * 2010-06-01 2013-09-03 Qualcomm Incorporated Tasking system interface methods and apparatuses for use in wireless devices
US8547847B2 (en) * 2010-07-22 2013-10-01 International Business Machines Corporation Transparent quality of service
US8638795B2 (en) * 2010-08-12 2014-01-28 Citrix Systems, Inc. Systems and methods for quality of service of encrypted network traffic
US8990380B2 (en) * 2010-08-12 2015-03-24 Citrix Systems, Inc. Systems and methods for quality of service of ICA published applications
US8433783B2 (en) 2010-09-29 2013-04-30 Citrix Systems, Inc. Systems and methods for providing quality of service via a flow controlled tunnel
JP5320512B2 (ja) 2011-03-28 2013-10-23 パナソニック株式会社 中継器、中継器の制御方法、およびプログラム
US8831041B2 (en) * 2011-06-27 2014-09-09 Citrix Systems, Inc. Prioritizing highly compressed traffic to provide a predetermined quality of service
US8924501B2 (en) * 2011-11-30 2014-12-30 Red Hat Israel, Ltd. Application-driven shared device queue polling
US8990901B2 (en) 2012-05-05 2015-03-24 Citrix Systems, Inc. Systems and methods for network filtering in VPN
US9513950B2 (en) * 2012-07-25 2016-12-06 Vmware, Inc. Dynamic resource configuration based on context
US9094460B2 (en) * 2012-09-06 2015-07-28 Unisys Corporation Socket tables for fast data packet transfer operations
US9648363B2 (en) * 2012-09-28 2017-05-09 Marvell World Trade Ltd. Enhanced user experience for miracast devices
WO2014142809A1 (en) 2013-03-12 2014-09-18 Empire Technology Development, Llc Accelerator buffer access
KR102163357B1 (ko) * 2013-05-21 2020-10-08 삼성전자주식회사 애플리케이션 관리 방법 및 장치
US9558132B2 (en) 2013-08-14 2017-01-31 Intel Corporation Socket management with reduced latency packet processing
US20150055456A1 (en) 2013-08-26 2015-02-26 Vmware, Inc. Traffic and load aware dynamic queue management
US9241044B2 (en) * 2013-08-28 2016-01-19 Hola Networks, Ltd. System and method for improving internet communication by using intermediate nodes
US9378047B1 (en) * 2013-09-18 2016-06-28 Emc Corporation Efficient communication of interrupts from kernel space to user space using event queues
US9619286B1 (en) * 2014-03-20 2017-04-11 EMC IP Holding Company LLC Using request service time as fairness heuristic in locking techniques
US9930133B2 (en) * 2014-10-23 2018-03-27 Netapp, Inc. System and method for managing application performance
WO2016183028A2 (en) * 2015-05-10 2016-11-17 Apl Software Inc. Methods and architecture for enhanced computer performance
US9921991B2 (en) * 2015-11-24 2018-03-20 Nicira, Inc. Systems and methods for flipping NIC teaming configuration without interfering live traffic
US10547559B2 (en) 2015-12-26 2020-01-28 Intel Corporation Application-level network queueing

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08297626A (ja) * 1995-04-14 1996-11-12 Mitsubishi Electric Res Lab Inc ネットワーク・インタフェースおよびネットワーク・インタフェースにおけるパケット処理方法
JP2002185509A (ja) * 2000-12-14 2002-06-28 Sony Corp 通信装置及び通信方法
JP2005507612A (ja) * 2001-10-29 2005-03-17 エムピーネット・インターナショナル・インコーポレイテッド マルチメディア通信のための方法、システム及びデータ構造
US20150201007A1 (en) * 2005-06-15 2015-07-16 Solarflare Communications, Inc. Reception according to a data transfer protocol of data directed to any of a plurality of destination entities
WO2007138250A2 (en) * 2006-05-25 2007-12-06 Solarflare Communications Incorporated Computer system with lock- protected queues for sending and receiving data
EP2645674A1 (en) * 2006-07-10 2013-10-02 Solarflare Communications Inc Interrupt management
JP2008020977A (ja) * 2006-07-11 2008-01-31 Sony Computer Entertainment Inc ネットワークプロセッサシステムおよびネットワークプロトコル処理方法
JP2009213065A (ja) * 2008-03-06 2009-09-17 Nec Corp Tcpバッファコピー分散並列処理装置、方法及びプログラム
WO2011096307A1 (ja) * 2010-02-03 2011-08-11 日本電気株式会社 プロキシ装置とその動作方法
JP2014513466A (ja) * 2011-04-05 2014-05-29 テレフオンアクチーボラゲット エル エム エリクソン(パブル) パケットスケジューリング方法及び装置
JP2015511449A (ja) * 2012-02-03 2015-04-16 アップル インコーポレイテッド クライアント装置上でパケット送信をスケジュールするためのシステム及び方法
JP2015527755A (ja) * 2012-06-29 2015-09-17 日本電気株式会社 QoS制御システム、QoS制御方法及びプログラム
JP2015019369A (ja) * 2013-07-09 2015-01-29 インテル コーポレイション イングレス制御を備えたトラフィック管理
US20150277997A1 (en) * 2014-03-31 2015-10-01 Solarflare Communications, Inc. Ordered Event Notification
US20150334008A1 (en) * 2014-05-15 2015-11-19 Samsung Electronics Co., Ltd. Method of distributing data and device supporting the same
WO2015199366A1 (ko) * 2014-06-26 2015-12-30 정기웅 다중 프로세싱 환경에서의 스케줄링 방법 및 그 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11966634B2 (en) 2021-12-02 2024-04-23 Kioxia Corporation Information processing system and memory system

Also Published As

Publication number Publication date
US20220124047A1 (en) 2022-04-21
US20200162396A1 (en) 2020-05-21
JP6513627B2 (ja) 2019-05-15
US10547559B2 (en) 2020-01-28
US20230300078A1 (en) 2023-09-21
US11706151B2 (en) 2023-07-18
WO2017112326A1 (en) 2017-06-29
EP3395022A1 (en) 2018-10-31
US20170187640A1 (en) 2017-06-29
CN114615212A (zh) 2022-06-10
EP3395022A4 (en) 2019-06-19
CN106921590A (zh) 2017-07-04
CN114745341A (zh) 2022-07-12

Similar Documents

Publication Publication Date Title
JP6513627B2 (ja) アプリケーションレベルネットワークキューイング
US9602636B1 (en) Stateless packet segmentation and processing
CN107771320B (zh) 用于改善安全套接字层(ssl)通信安全性的系统和方法
US9712538B1 (en) Secure packet management for bare metal access
US8155146B1 (en) Stateless packet segmentation and processing
US8640220B1 (en) Co-operative secure packet management
US9378381B2 (en) Systems and methods for queue level SSL card mapping to multi-core packet engine
US10523745B2 (en) Load balancing mobility with automated fabric architecture
WO2018126210A1 (en) Intercepting network traffic routed by virtual switches for selective security processing
US10284473B1 (en) Multifunctional network switch
US10911405B1 (en) Secure environment on a server
KR20180055882A (ko) 분산 패킷 스케줄링을 위한 시스템들 및 방법들
WO2007002710A1 (en) Offload stack for network, block and file input and output
US10091112B1 (en) Highly-scalable virtual IP addresses in a load balancing switch
KR20140107173A (ko) 이더넷 스위치들용 룩-업 테이블없이 레이어 2 패킷을 스위치하기
US11343190B2 (en) TCAM-based load balancing on a switch
US20220345422A1 (en) Adjustable bit mask for high-speed native load balancing on a switch
US10110668B1 (en) System and method for monitoring service nodes
Ni et al. Advancing network function virtualization platforms with programmable nics
WO2019165274A1 (en) Systems and methods for preventing malicious network traffic from accessing trusted network resources

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180731

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20181026

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181226

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: 20190312

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190410

R150 Certificate of patent or registration of utility model

Ref document number: 6513627

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250