JP2017517951A - ネットワークプロトコル更新に適応させるためのシステムおよび方法 - Google Patents

ネットワークプロトコル更新に適応させるためのシステムおよび方法 Download PDF

Info

Publication number
JP2017517951A
JP2017517951A JP2016565022A JP2016565022A JP2017517951A JP 2017517951 A JP2017517951 A JP 2017517951A JP 2016565022 A JP2016565022 A JP 2016565022A JP 2016565022 A JP2016565022 A JP 2016565022A JP 2017517951 A JP2017517951 A JP 2017517951A
Authority
JP
Japan
Prior art keywords
packet
header
new
protocol
classification
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
JP2016565022A
Other languages
English (en)
Other versions
JP6310573B2 (ja
Inventor
マオ,ユホン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of JP2017517951A publication Critical patent/JP2017517951A/ja
Application granted granted Critical
Publication of JP6310573B2 publication Critical patent/JP6310573B2/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
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/50Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

ネットワークプロトコルを更新するためのシステムおよび方法が提供される。少なくとも1つのパケット編集プログラムを有する新たなASICは、将来のネットワークプロトコルに適応するように設計されている。ASICは、受信されたパケットを分類して(820)更新されるパケットの新たなプロトコルを決定し、パケットの選択された既存のヘッダを削除し(830)、分類に基づいて新たなヘッダをパケット内に挿入し(840)、選択されたヘッダを分類に基づいて変更する(850)ように構成されている。

Description

関連出願の相互参照
本願は、2014年5月9日に出願された米国特許出願第14/273,953号の継続出願であり、その開示を引用により本明細書に援用する。
背景
ほとんどのネットワーキング特定用途向け集積回路(ASIC:application specific integrated circuit)は、既定のネットワークプロトコルのための小規模な一定の1セットのパケットヘッダ編集機能を実現する。特定のネットワークプロトコルのためのこのようなヘッダ編集機能の例として、GRE(generic routing encapsulation)トンネルカプセル化および非カプセル化、VLAN/MPLS(virtual local area network:仮想ローカルエリアネットワーク/multiprotocol label switching:マルチプロトコルラベルスイッチング)タグプッシュ/ポップなどが挙げられる。新たなネットワークプロトコルによってASICのリスピンまたは完全な再設計が必要となり、それには費用も時間も両方かかる。たとえば、ネットワーク内のASICの再設計および交換には数年の時間と何百万ドルものコストがかかる可能性がある。
概要
ネットワークプロトコルを好都合に更新するためのシステムおよび方法が提供される。将来のネットワークプロトコルに適応可能なASICは、プロトコル非依存パケットエディタ(PIPE:Protocol Independent Packet Editor)を含み、これは現在の、および将来あり得るネットワークプロトコルのパケットヘッダ編集要件をサポートするようにプログラムされ得る。
上記技術の一局面は、パケットを受信するステップと、1つ以上のプロセッサを用いてパケットを分類するステップとを含む方法を提供する。分類するステップは、更新されるパケットの新たなプロトコルを決定するステップを含む。上記方法はさらに、1つ以上のプロセッサを用いてパケットの既存のヘッダを削除するステップと、1つ以上のプロセッサを用いて分類に基づいて新たなヘッダをパケット内に挿入するステップと、1つ以上のプロセッサを用いて分類に基づいて新たなヘッダを変更するステップとを含む。いくつかの例によれば、更新されるパケットの新たなプロトコルを決定するステップは、パケット編集プログラムへのポインタを識別するステップを含む。既存のパケットヘッダを削除するステップは、既存のヘッダのうち、新たなプロトコルによって用いられない選択された部分を削除するステップを含み得る。さらに、新たなパケットヘッダを挿入するステップは、新たなパケットヘッダのうち新たなプロトコルに基づく部分と、前のパケットヘッダからの残留部分とを挿入するステップを含み得る。新たなヘッダを含むパケットは、新たなヘッダに基づいてネットワークを介して送信され得る。
本開示の別の局面は、少なくとも1つのメモリと、当該少なくとも1つのメモリと通信する少なくとも1つのプロセッサとを含むシステムを提供する。少なくとも1つのプロセッサは、パケットを受信し、パケットを分類するように構成されている。当該分類は、更新されるパケットの新たなプロトコルを決定することを含む。少なくとも1つのプロセッサはさらに、パケットの既存のヘッダを削除し、分類に基づいて新たなヘッダをパケット内に挿入し、分類に基づいて新たなヘッダを変更するように構成されている。
少なくとも1つのメモリは少なくとも1つのパケット編集プログラムを含んでもよく、各パケット編集プログラムは、その編集命令へのポインタと、静的データ、共有データ、および動的データのセットへのポインタとを含み得る。少なくとも1つのメモリは、編集命令によってアクセス可能なメタデータとレジスタデータとをさらに含み得る。さらに、少なくとも1つのメモリおよび少なくとも1つのプロセッサは、特定用途向け集積回路(ASIC)上に設けられ得る。
本開示のさらに別の局面は、方法を実施するための、1つ以上のプロセッサによって実行可能な命令を格納する非一時的なコンピュータ読取可能媒体を提供する。上記方法は、パケットを受信するステップと、パケットを分類するステップとを含む。分類するステップは、更新されるパケットの新たなプロトコルを決定するステップを含む。上記方法はさらに、パケットの既存のヘッダを削除するステップと、分類に基づいて新たなヘッダをパケット内に挿入するステップと、分類に基づいて新たなヘッダを変更するステップとを含む。
本開示の一局面に係るシステム図である。 本開示の局面に係る別のシステム図である。 本開示の局面に係る命令形式の例を示す図である。 本開示の局面に係る命令形式の例を示す図である。 本開示の局面に係る別のシステム図である。 本開示の局面に係る命令の例を示す図である。 本開示の局面に係る命令の例を示す図である。 本開示の局面に係る命令の例を示す図である。 本開示の局面に係る命令の例を示す図である。 本開示の局面に係る命令の例を示す図である。 本開示の局面に係る命令の例を示す図である。 本開示の局面に係る命令の例を示す図である。 本開示の局面に係る命令の例を示す図である。 本開示の局面に係る命令の例を示す図である。 本開示の局面に係る命令の例を示す図である。 本開示の局面に係る命令の例を示す図である。 本開示の局面に係る命令の例を示す図である。 本開示の局面に係る別のシステム図である。 本開示の局面に係る方法の一例の流れ図である。
詳細な説明
本開示は、ネットワークプロトコルを好都合に更新するためのシステムおよび方法を提供する。ネットワークプロトコルが更新された際に特定用途向け集積回路(ASIC)を再設計および交換するのではなく、新たなASICが、将来のネットワークプロトコルに適応するように設計されている。ASICはプロトコル非依存パケットエディタ(PIPE)を含み、このプロトコル非依存パケットエディタは、現在の、および将来あり得るネットワークプロトコルのパケットヘッダ編集要件をサポートするようにプログラムされ得る。
一実施形態によれば、ASICは、パケットヘッダを処理するための編集プログラムを実行する中央編集ユニット(CEU:Central Editing Unit)を含む。中央編集ユニットは、削除ユニット、挿入ユニット、および変更ユニットの、3つの別個の編集ユニットの処理パイプラインである。各ユニットは、前のユニットから変更されたパケットを処理する。このCEUパイプラインによって、シリコンで効率的にハードウェアを実装して、高い帯域幅およびパケットレートでのフレキシブルなパケットヘッダ編集が可能になる。
削除ユニットは、パケットからの任意のプロトコルヘッダの除去を可能にする。挿入ユニットは、パケットへの任意のプロトコルヘッダの挿入を可能にする。変更ユニットは、ヘッダフィールドのフレキシブルな書換え(上書きまたはリードモディファイライト)を可能にする。
CEUによって実行されたパケット編集プログラムは、1セットの編集命令(削除、挿入、およびフィールド変更)と、1セットの編集データ(構成、メタ、共有、および動的)とを含む。1つ以上のさまざまな編集プログラムは、カプセル化、非カプセル化、暗号化、復号化などのさまざまなパケットヘッダ編集機能のために存在し得る。論理部は、受信パケットを構文解析および分類して、プログラム命令および関連データセットへのポインタを決定する。
編集命令は、たとえば32バイトまたは64バイトの長さであり得る。編集命令は、さまざまなネットワーク処理のためのさまざまな編集プログラムによって共有され得る。各編集プログラムは、3セットのデータへのポインタを含み得る。すなわち、静的データ、共有データ(たとえば、さまざまなパケット編集プログラムの間で共有されるセキュリティフロー状態の[flowID、pkt_cnt、encryption key])、および動的データ(たとえばプログラムに専用のデータ)である。さらに、編集命令が利用することのできる2セットのグローバルデータがある。すなわち、メタデータおよび定型データである。
図1は、本開示の局面に係るASIC100を示す。ASIC100は、パケット150などのパケットを受信して、更新されたネットワークプロトコルに従ってパケットを更新するように適合されている。いくつかの例によれば、更新されたネットワークプロトコルは、現時点では開発されていない将来のネットワークプロトコルであり得る。この点に関して、プロトコルが更新される度にネットワーク内の各ASICを交換するのではなく、ASICと、ネットワークを介して送信されたパケットとが効率的に更新され得る。
ASIC100はネットワーク内で相互接続されたいくつかのASICのうちいずれであってもよい。別の例によれば、ASICはプロトコル更新のために設計され得る。ASIC100は特定の構成要素を有するものとして説明するが、ASICにおいて典型的に見られるような他の構成要素も含み得ると理解すべきである。さらに、構成要素はASIC100内にあるものとして示すが、構成要素は、ASIC100と通信するネットワーク内の他のどこにあってもよいと理解すべきである。
ASIC100は、ユーザ論理部110とパケットエディタ120とを含む。パケットエディタ120はさらに、編集命令132および編集データ134を含む少なくとも1つの編集プログラム130と、中央編集ユニット140とを含む。
ユーザ論理部110は、ASICで受信したパケットを構文解析し、パケットを分類する。たとえば、ユーザ論理部110は、いくつかの編集プログラムのうちいずれがパケット150を処理すべきかを決定し得る。異なる編集プログラムが作成されて、異なるタイプのパケットが更新され得る。たとえば、第1の編集プログラムを用いて第1のプロトコルから新たなプロトコルにパケットを更新し得る一方、第2の編集プログラムを用いて第2のプロトコルから新たなプロトコルにパケットを更新し得る。別の例によれば、カプセル化されたパケットを第3の編集プログラムを用いて更新し得る一方、非カプセル化されたパケットを第3の編集プログラムを用いて更新し得る。
各編集プログラムは編集データと編集命令とを含む。たとえば、編集プログラム130は編集命令132と編集データ134とを含む。編集プログラムのさらなる詳細については図4に関連して後述する。
中央編集ユニット140は、ユーザ論理部110によって識別された編集プログラムに従ってパケット150を更新する処理パイプラインである。したがって、ASIC100は、更新されたパケット150′をネットワークを介して送信可能である。
図2は中央編集ユニット140のさらなる詳細を示す。図示するように、中央編集ユニット140は、削除ユニット210と、挿入ユニット220と、変更ユニット230とを含む。これらのユニット210、220、230の各々は、特定の編集プログラムのための1セットの命令、たとえば命令132などに従って、受信パケット150を処理する。図4に関連して後述するように、命令132は、ユニット210、220、230の各々について別々の命令のセットを含み得る。挿入ユニット220は、パケット150が削除ユニット210によって変更された後に当該パケットを処理する。同様に、変更ユニット230は、パケットが挿入ユニット220によって変更された後に当該パケットを処理する。各ユニットは、その処理の後、かつパケットを次のユニットに渡す前に、パケットのバイトストリームを再編成し得る。この中央編集ユニットパイプラインによって、高い帯域幅およびパケットレートでのフレキシブルなパケットヘッダ編集が可能になる。さらに、このパイプラインによって、シリコンでの効率的なハードウェア実装が提供される。
削除ユニット210は、パケットからの任意のプロトコルヘッダの除去を可能にする。たとえば、削除ユニット210は、トンネリングされたネットワーク内の内部IPヘッダおよび外部IPヘッダなどの複数のヘッダを含むパケットについて、すべてのパケットヘッダまたは選択されたパケットヘッダを除去し得る。別の例によれば、削除ユニット210は、パケットの特定のフィールドを削除し得る一方、更新されたネットワークプロトコルに関連する他のフィールドを維持し得る。
挿入ユニット220は、パケットへの任意のプロトコルヘッダの挿入を可能にする。たとえば、挿入ユニット220は、更新ネットワークプロトコルに関係する1セットの新たなヘッダフィールドを生成して、これらの生成されたフィールドをパケット150に付加し得る。特定のフィールドのみが削除ユニット210によって削除される例において、挿入ユニット220は、残りのフィールドを再生成する必要がないと判断して、その代わり必要なフィールドのみを生成し得る。他の例において、挿入ユニット220は、ヘッダ全体を生成し得る。
変更ユニット230は、ヘッダフィールドのフレキシブルな書換え、たとえば上書きまたはリードモディファイライト(read-modify-write)などを可能にする。たとえば、変更ユニット230は、更新されたネットワークを介してパケットを適切に送信することを可能にする情報によって、パケットヘッダフィールドを埋めてもよい。
図1に関連して上述したように、各パケット編集プログラムは編集命令と編集データセットとを含む。たとえば、プログラムは、その編集命令への16ビットのポインタを有し得る。いくつかの例によれば、編集命令は、さまざまな編集プログラムによって共有可能である。たとえば、第1のネットワークプロトコルに基づくカプセル化と、第2のネットワークプロトコルに基づくカプセル化とは、同一の編集命令を利用し得る。
図3Aおよび図3Bは、編集命令の形式の例を示す。図3Aの例では、命令は32B(32バイト)である。バイト0〜7は削除にあてられ、バイト8〜15は挿入にあてられ、バイト16〜31は変更にあてられている。図3Bの例では、命令は64B(64バイト)である。32B形式と同様、ここでもバイト0〜7は削除にあてられている。しかしながら、32B形式と異なり、64B形式では、バイト8〜31が挿入にあてられ、バイト32〜63が変更にあてられている。
図4は、編集プログラム430をより詳細に示す。編集プログラム430は、編集命令440と編集データ450とを含む。
編集データ450は、静的データ452と、共有データ454と、動的データ456とを含む。たとえば、各編集プログラムはこれらのデータセットへのポインタを含んでもよく、それらはASICと通信するメモリ内に記憶され得る。一例によれば、静的データ452および共有データ454の各々は32Bの、動的データ456は32B〜64Bの、特定の編集プログラムに専用のデータであり得る。一例によれば、マルチパスロードバランシングは、選択されたn−タプル(n-tuple)のヘッダフィールドから生成されたハッシュを用いて1群の共有/動的データセットから共有/動的データセットを選択することによってサポートされ得る。
図示はしないが、メタデータやレジスタデータなどの追加のデータが編集命令に利用可能であってもよい。たとえば、第1の8×2B(2バイト)ハーフワードがpkt_length、ip_pkt_id、flow_hash、slice_IDなどのメタデータである32Bのメタデータが利用可能であり得る。第2の8×2Bハーフワードは、たとえばIP_PROTO、TTL、TOSなどの、パケットヘッダから集められた2Bのヘッダフィールドである。たとえばユーザ論理部の構文解析によって、パケット形式が識別され、8×2Bオフセットが指定されて、所望のヘッダフィールドが選択される。別の例として、8×8B(8バイト)のレジスタを有する64Bのレジスタデータが編集命令に利用可能であってもよい。この例では、レジスタ0はすべてゼロにハードコード化されており、レジスタ1には64ビットのパケットカウントが任意にロードされており、レジスタ2には64ビットのタイムスタンプが任意にロードされており、レジスタ3〜7は静的データを用いてソフトウェアにより構成される。
編集命令440は、削除命令442と、挿入命令444と、変更命令446とを含む。<INS NOP>および<INS MOV>などの個々の挿入命令444の例が図5A〜図5Fでさらに詳細に図示および記載される。また、<MOD NOP>および<MOD WRITE META>などの個々の変更命令446の例も、図6A〜図6Fでさらに詳細に図示および記載される。
削除命令442は、たとえば8Bの長さであってもよく、各ビットは128B(128バイト)パケットヘッダの2Bハーフワードを表わし得る。ビットが設定されると、対応する2Bハーフワードがパケットヘッダから削除される。64ビットのゼロは、実質的にノーオペレーション(NOP:no operation)削除命令である。
挿入命令444は、たとえば図2の挿入ユニット220によって実行され得る。一例によれば、挿入ユニット220は、ゼロで始まるアクティブヘッダポインタを(たとえば、2Bハーフワード単位で)維持する。図5Aに関連して以下でより詳しく説明するが、MOV命令はヘッダポインタを順方向に移動させる。挿入命令は、現在のアクティブヘッダポインタにおいて指定データを挿入して、当該ヘッダポインタを、挿入されたハーフワードの数だけ順方向へ移動させる。すべての挿入命令444は、たとえば8ビット幅であり得る。
図5A〜図5Fは、移動を含む挿入命令444の例および特定のデータセットに対する処理の例を示す。ノーオペレーション挿入命令は図示しない。たとえば、8ビットのゼロはNOPであり、これは挿入命令の終わりを示す。
図5AはINS MOV命令の一例を示す。この命令は、指定されたカウント(cnt:count)の分だけ現在の挿入ポインタを進める。たとえば、図示するように、ビット0〜5はカウントを含み、ビット7〜8は0に設定される。
図5BはINS STATIC命令の一例を示す。この命令は、静的データセット(たとえば図4の静的データ452)から指定された(cnt)ハーフワードを挿入する。h=0ならば、データは下位16B(16バイト)から始まる。h=1ならば、データは上位16Bから始まる。
図5CはINS SHARED命令の一例を示す。この命令は、INS STATIC命令が静的データセットを処理するのと同じ方法で、共有データセット(たとえば図4の共有データ454)を処理し得る。同様に、図5Dは、同じ方法で図4の動的データ456などの動的データの第1の32Bを処理するINS DYNAMIC L命令の一例を示す。さらに図5Eは、同じ方法で動的データの第2の32Bを処理するINS DYNAMIC H命令の一例を示す。
図5FはINS REG命令の一例を示している。このINS REG命令は、選択されたグローバルレジスタデータからcntハーフワードを挿入するものである。
変更命令446は概して、任意のビットまたはバイトがいくつかの命令において選択された状態で、ハーフワードを処理し得る。いくつかの例によれば、2つの変更命令が同一のハーフワードを処理してもよく、その各々が異なるバイトを処理してもよい。MOD NOPはノーオペレーション変更命令を表わし、16ビットの0によって表現され得る。これは変更命令の終わりを表わす。
図6AはMOD WRITE META命令の一例を示す。この命令によれば、指定されたop_codeに従い、書込み処理が、メタデータセットから選択された(sel[3:0])2Bフィールドで、(ハーフワード単位で)オフセットにおいて行なわれる。4ニブルのメタデータを書換えるサポートされた書込みop_codeの例として、1.ABCD>ABCD;2.ABCD>ABXX;3.ABCD>XXCD;4.ABCD>XXAB;5.ABCD>CDXX;6.ABCD>XCDX;7.ABCD>XXBC、が挙げられる。これらの例において、「X」はそのニブルが変更されないことを表わす。例6および例7は、たとえばIPv4ヘッダとIPv6ヘッダとの間でDSCP/ECNをコピーするのに有用であり得る。
図6BはMOD_CHKSUM命令の一例を示す。この命令は、hdr_lenハーフワードについて、(ヘッダの第1の64B内の)hdr_offsetで始まる(IPv4ヘッダにおけるような)1の補数チェックサムを計算し、hdr_offsetフィールドに対して指定されたcsum_offset位置に、計算されたチェックサムフィールドを書込む。チェックサムフィールド自体はチェックサムの蓄積の中に含まれない。
図6CはMOD_ALU命令の一例を示している。このMOD_ALU命令は、ヘッダオフセットにおいて、(バイトイネーブル「ben」によって指定された)バイト/ハーフワードについて、op_codeによって指定された処理を実行するものである。サポートされたop_codeの例として、0−set to zero、1−set to 1、2−add 1、3−add 1 but stops at 8hF or 16hFF、4−subtract 1、5−subtract 1 but stops at zero、が挙げられる。
図6DはMOD_CKSUM_INC命令の一例を示している。このMOD_CKSUM_INC命令は、imm_dataにおいて指定されたインクリメンタル値で、csum_offsetにおいてチェックサムフィールドのインクリメンタルチェックサム更新を行なうものである。
図6EはMOD_WRITE_IMM命令の一例を示している。このMOD_WRITE_IMM命令は、16ビット即値データimm_dataでオフセットにおいてヘッダフィールドを上書きするものである。nibble_enの各ビットによって、ハーフワード内の1ニブルの上書きが可能になる。
図6FはMOD_WRITE_META_IMM命令の一例を示している。このMOD_WRITE_META_IMM命令は、imm_dataと、メタデータから選択された(sel[3:0])2Bフィールドとの間の(op_codeによって指定された)処理の結果を、オフセットにおいて(ハーフワード単位で)書込むものである。サポートされたop_codeの例として、0−Add、1−Bitwide OR、2−Bitwide AND、が挙げられる。
命令のいくつかの例を説明してきたが、これらの例は網羅的なものではなく、パケットヘッダを更新するために追加の命令を用い得ると理解すべきである。さらに、これらの命令の例は変更されてもよく、それでも意図した効果を達成し得ると理解すべきである。
図7は、本明細書で説明されるような、パケットヘッダを更新するために実装され得るコンピューティング装置の一例を示す。コンピューティング装置は、プロセッサ730とメモリ720とを含む、ASICもしくは他の装置または互いに通信する複数のコンピューティング装置もしくは構成要素であり得る。コンピューティング装置700は、データパケットまたは他の情報を他のコンピューティング装置から受信するための1つ以上の入力ポート750を、さらに含み得る。同様に、コンピューティング装置700は、たとえばパケットヘッダが新たなネットワークプロトコルに従って更新された後にパケットを送信するための1つ以上の出力ポート760を含み得る。
メモリ720は、プロセッサ730によってアクセス可能な情報を記憶する。この情報は、プロセッサ730によって実行されるかまたは他の方法で用いられ得るデータ722および命令728を含む。メモリ720は、プロセッサによってアクセス可能な情報を記憶することのできる如何なる種類のメモリであってもよく、ハードドライブ、メモリカード、ROM、RAM、DVDまたは他の光学ディスク、ならびに他の書込み可能および読出し専用のメモリなどの、コンピュータ読取可能媒体、または電子装置を用いて読出され得るデータを記憶する他の媒体を含む。一例によれば、図4に戻って、編集データ450および編集命令440は1つの論理SRAMを共有し得る。これにより、これらの間でのSRAMリソースの動的割当てが可能になる。システムおよび方法は、上述した事項のさまざまな組合せを含んでもよく、命令およびデータのさまざまな部分がさまざまな種類の媒体に記憶され得る。
命令728は、プロセッサ730によって直接的に(たとえば機械語など)または間接的に(たとえばスクリプトなど)実行される如何なる命令のセットであってもよい。たとえば、命令はコンピュータコードとしてコンピュータ読取可能媒体に記憶され得る。この点に関して、「命令」および「プログラム」との用語は本明細書では区別なく用いられ得る。命令は、プロセッサによって直接処理されるようなオブジェクトコード形式で記憶されてもよく、または、要求に応じて解釈されるかもしくは予めコンパイルされる独立したソースコードモジュールのスクリプトもしくは集まりを含む他の如何なるコンピュータ言語で記憶されてもよい。プロセッサ730は、パケットを受信すると、たとえばパケットを分類し、パケットヘッダを削除し、分類に基づいて新たなパケットヘッダを挿入し、および分類に基づいてパケットヘッダを変更するように命令728を実行し得る。
命令728に従って、データ722はプロセッサ730によって抽出、記憶、または変更され得る。システムおよび方法は如何なる特定のデータ構造によっても限定されないが、データは、たとえば複数のさまざまなフィールドおよびレコードを有するテーブル、XMLドキュメント、またはフラットファイルとして、コンピュータレジスタ内のリレーショナルデータベースに記憶され得る。また、データは如何なるコンピュータ読取可能な形式でフォーマットされてもよい。データは、数、記述テキスト、プロプライエタリコード(proprietary codes)、同一メモリの他の領域もしくは異なるメモリ(他のネットワークロケーションを含む)に記憶されたデータへの参照、または関連データを計算する機能によって用いられる情報などの、関連情報を識別するのに十分な如何なる情報も含み得る。
プロセッサ730は、市販のルータにおけるプロセッサなど、従来の如何なるプロセッサであってもよい。代替的には、プロセッサは、ASICなどの専用コントローラまたは他のハードウェアベースのプロセッサであってもよい。プロセッサおよびメモリは、複数のプロセッサおよびメモリを実際に含んでもよく、それらは同一の物理筐体内に収容されてもよいし同一の物理筐体内に収容されなくてもよい。たとえば、メモリは、データセンタのサーバファーム内に置かれたハードドライブまたは他の記憶媒体であってもよい。したがって、プロセッサ、メモリまたはコンピュータに言及する場合、これは、複数のプロセッサ、メモリ、またはコンピュータの集まりへの言及を含み、これら複数のプロセッサ、メモリ、またはコンピュータは並行して動作してもよいし並行して動作しなくてもよいと理解されるだろう。
コンピューティング装置700は、たとえばネットワークを介して他のコンピューティング装置と通信し得る。たとえば、装置は有線接続を介してまたは無線で通信し得る。ネットワーク、および介在するノードは、インターネット、ワールドワイドウェブ、イントラネット、仮想プライベートネットワーク、広域ネットワーク、ローカルネットワーク、1つ以上の企業独自の通信プロトコルを用いたプライベートネットワーク、イーサネット(登録商標)、Wi−Fi(登録商標;802.11、802.11b、g、n、または他の同類の規格など)、HTTP、およびこれらのさまざまな組合せを含む、さまざまな設定とプロトコルとを含み得る。このような通信は、モデム(たとえば、ダイヤルアップ式、ケーブル、または光ファイバ)および無線インターフェイスなどの、他のコンピュータとの間でデータを送受信可能な如何なる装置によっても手助けされ得る。
図8は、新たなネットワークプロトコルに準拠するようにパケットを更新する方法の一例を示す。たとえばこの方法は、上述したコンピューティング装置などのコンピューティング装置によって行なわれ得る。この方法に含まれる処理は、記載された通りの順序で行なわなくてもよいと理解すべきである。その代りに、さまざまな処理は、異なる順序でまたは同時に行なわれてもよく、処理が追加または省略されてもよい。
ブロック810では、パケットが受信される。ブロック820では、受信されたパケットが分類される。たとえば、分類は、受信されたパケットの形式を決定することと、受信されたパケットが更新される際に従うべき新たなプロトコルを決定することとを含み得る。一例によれば、分類は、受信されたパケットが、特定のパケット編集プログラムおよび関連データセットへのポインタを含んでいるか否かを決定することを含む。
ブロック830では、パケットヘッダが削除される。たとえば、ヘッダは、新たなプロトコルヘッダ形式に基づいて全体または一部が削除され得る。
ブロック840では、分類に基づいて新たなプロトコルヘッダが挿入される。たとえば、新たなヘッダは、上記削除に基づいて全体または一部が挿入され得る。ヘッダは、たとえば、図4および図5A〜図5Fに関連して上述した処理のうちいずれかを用いて挿入され得る。
ブロック850では、ヘッダが変更され得る。たとえば、新たなヘッダフィールドが書込まれてもよく、および/または既存のヘッダフィールドが上書きもしくは変更されてもよい。ヘッダフィールドの変更は、たとえば、図4および図6A〜図6Fに関連して上述した命令のうちいずれかを用いて行なわれ得る。パケットヘッダが変更されると、更新されたパケットは、たとえば、コンピューティング装置の出力ポートを通じて出力され得る。
上述したシステム、方法、および例は、まだ定義されていない新たなプロトコルに既存のネットワークを適応させることにおいて有利である。プロトコルの更新が起る度に多数のASICを再設計および交換するのではなく、パケットヘッダが既存のASICによって用いられるように変更され得る。この点に関して、かなりの時間、労力、およびコストが省かれる。
上述した特徴のこれらおよび他の変形例ならびに組合せは、特許請求の範囲によって定義された主題から逸脱することなく用いることができる。したがって、上述の実施形態の記載は、特許請求の範囲によって定義された主題を限定するものではなく、例示のためのものであると考えられるべきである。一例として、上述の処理は、上述の通りの順序で行なう必要はない。代わりに、さまざまなステップは異なる順序でまたは同時に処理されてもよい。別段の記載がない限り、ステップを省略することも可能である。さらに、本明細書に記載された例の条件ならびに「などの(such as)」および「含む(including)」などで表現された節は、特許請求の範囲の主題を特定の例に限定するものとして解釈されるべきではなく、例は、多くの可能な実施形態のうちの1つを例示するよう意図されているに過ぎない。さらに、異なる図中の同一の参照符号は、同一または同様の要素を識別し得る。

Claims (20)

  1. 方法であって、
    パケットを受信するステップと、
    1つ以上のプロセッサを用いて前記パケットを分類するステップとを含み、前記分類するステップは、
    更新される前記パケットの新たなプロトコルを決定するステップを含み、前記方法はさらに、
    1つ以上のプロセッサを用いて、前記パケットの既存のヘッダを削除するステップと、
    1つ以上のプロセッサを用いて、前記分類に基づいて新たなヘッダを前記パケット内に挿入するステップと、
    1つ以上のプロセッサを用いて、前記分類に基づいて前記新たなヘッダを変更するステップとを含む、方法。
  2. 前記更新されるパケットの新たなプロトコルを決定するステップは、パケット編集プログラムへのポインタを識別するステップを含む、請求項1に記載の方法。
  3. 前記既存のパケットヘッダを削除するステップは、前記既存のヘッダのうち、前記新たなプロトコルによって用いられない選択された部分を削除するステップを含む、請求項1に記載の方法。
  4. 前記新たなパケットヘッダを挿入するステップは、前記新たなパケットヘッダのうち前記新たなプロトコルに基づく部分と、前のパケットヘッダからの残留部分とを挿入するステップを含む、請求項3に記載の方法。
  5. 前記新たなパケットヘッダを変更するステップは、上書き処理またはリードモディファイライト処理のうち少なくとも1つを実行するステップを含む、請求項1に記載の方法。
  6. 前記新たなヘッダを含む前記パケットを、前記新たなヘッダに基づいてネットワークを介して送信するステップをさらに含む、請求項1に記載の方法。
  7. システムであって、
    少なくとも1つのメモリと、
    前記少なくとも1つのメモリと通信する少なくとも1つのプロセッサとを備え、前記少なくとも1つのプロセッサは、
    パケットを受信し、
    前記パケットを分類し、前記分類は、更新される前記パケットの新たなプロトコルを決定することを含み、前記少なくとも1つのプロセッサはさらに、
    前記パケットの既存のヘッダを削除し、
    前記分類に基づいて新たなヘッダを前記パケット内に挿入し、
    前記分類に基づいて前記新たなヘッダを変更する、システム。
  8. 前記少なくとも1つのメモリは少なくとも1つのパケット編集プログラムを含み、各パケット編集プログラムは、編集命令へのポインタと、静的データ、共有データ、および動的データのセットへのポインタとを含む、請求項7に記載のシステム。
  9. 前記少なくとも1つのメモリは、前記編集命令によってアクセス可能なメタデータとレジスタデータとをさらに含む、請求項8に記載のシステム。
  10. 前記少なくとも1つのメモリおよび前記少なくとも1つのプロセッサは、特定用途向け集積回路(ASIC)上に設けられている、請求項7に記載のシステム。
  11. 前記更新されるパケットの新たなプロトコルを決定することは、パケット編集プログラムへのポインタを識別することを含む、請求項7に記載のシステム。
  12. 前記既存のパケットヘッダを削除することは、前記既存のヘッダのうち、前記新たなプロトコルによって用いられない選択された部分を削除することを含む、請求項7に記載のシステム。
  13. 前記新たなパケットヘッダを挿入することは、前記新たなパケットヘッダのうち前記新たなプロトコルに基づく部分と、前のパケットヘッダからの残留部分とを挿入することを含む、請求項12に記載のシステム。
  14. 前記新たなパケットヘッダを変更することは、上書き処理またはリードモディファイライト処理のうち少なくとも1つを実行することを含む、請求項7に記載のシステム。
  15. 前記少なくとも1つのプロセッサはさらに、前記新たなヘッダを含む前記パケットを、前記新たなヘッダに基づいてネットワークを介して送信するように構成されている、請求項7に記載のシステム。
  16. 方法を実施するための、1つ以上のプロセッサによって実行可能な命令を格納する非一時的なコンピュータ読取可能媒体であって、前記方法は、
    パケットを受信するステップと、
    前記パケットを分類するステップとを含み、前記分類するステップは、更新される前記パケットの新たなプロトコルを決定するステップを含み、前記方法はさらに、
    前記パケットの既存のヘッダを削除するステップと、
    前記分類に基づいて新たなヘッダを前記パケット内に挿入するステップと、
    前記分類に基づいて前記新たなヘッダを変更するステップとを含む、非一時的なコンピュータ読取可能媒体。
  17. 前記更新されるパケットの新たなプロトコルを決定するステップは、パケット編集プログラムへのポインタを識別するステップを含む、請求項16に記載の非一時的なコンピュータ読取可能媒体。
  18. 前記既存のパケットヘッダを削除するステップは、前記既存のヘッダのうち、前記新たなプロトコルによって用いられない選択された部分を削除するステップを含み、
    前記新たなパケットヘッダを挿入するステップは、前記新たなパケットヘッダのうち前記新たなプロトコルに基づく部分と、前のパケットヘッダからの残留部分とを挿入するステップを含む、請求項16に記載の非一時的なコンピュータ読取可能媒体。
  19. 前記新たなパケットヘッダを変更するステップは、上書き処理またはリードモディファイライト処理のうち少なくとも1つを実行するステップを含む、請求項16に記載の非一時的なコンピュータ読取可能媒体。
  20. 前記新たなヘッダを含む前記パケットを、前記新たなヘッダに基づいてネットワークを介して送信するステップをさらに含む、請求項16に記載の非一時的なコンピュータ読取可能媒体。
JP2016565022A 2014-05-09 2015-05-07 ネットワークプロトコル更新に適応させるためのシステムおよび方法 Active JP6310573B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/273,953 2014-05-09
US14/273,953 US9503552B2 (en) 2014-05-09 2014-05-09 System and method for adapting to network protocol updates
PCT/US2015/029736 WO2015171922A1 (en) 2014-05-09 2015-05-07 System and method for adapting to network protocol updates

Publications (2)

Publication Number Publication Date
JP2017517951A true JP2017517951A (ja) 2017-06-29
JP6310573B2 JP6310573B2 (ja) 2018-04-11

Family

ID=53269723

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016565022A Active JP6310573B2 (ja) 2014-05-09 2015-05-07 ネットワークプロトコル更新に適応させるためのシステムおよび方法

Country Status (8)

Country Link
US (1) US9503552B2 (ja)
EP (1) EP3120528B1 (ja)
JP (1) JP6310573B2 (ja)
KR (2) KR102146947B1 (ja)
CN (2) CN113765892A (ja)
DE (1) DE202015009279U1 (ja)
DK (1) DK3120528T3 (ja)
WO (1) WO2015171922A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10412009B2 (en) * 2016-03-10 2019-09-10 Arista Networks, Inc. Next hop groups
US9800514B1 (en) 2016-12-15 2017-10-24 Red Hat, Inc. Prioritizing data packets in a network
CN107770071B (zh) * 2017-10-19 2021-03-23 盛科网络(苏州)有限公司 一种基于OpenFlow的MPLS报文处理方法及装置
KR102079028B1 (ko) * 2018-04-05 2020-02-19 국방과학연구소 모의 네트워크 트래픽 트레이스 모의 생성을 위한 장치 및 방법
US11438266B2 (en) * 2020-02-04 2022-09-06 Mellanox Technologies, Ltd. Generic packet header insertion and removal

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010033580A1 (en) * 1997-11-19 2001-10-25 Dorsey Paul C. Multi-protocol packet translator
JP2002077269A (ja) * 2000-05-24 2002-03-15 Alcatel Internetworking (Pe) Inc フロー解決論理を有するプログラム可能パケットプロセッサ
US20020163935A1 (en) * 2001-05-04 2002-11-07 Terago Communications, Inc. System and method for providing transformation of multi-protocol packets in a data stream

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802287A (en) 1993-10-20 1998-09-01 Lsi Logic Corporation Single chip universal protocol multi-function ATM network interface
US6975628B2 (en) 2000-12-22 2005-12-13 Intel Corporation Method for representing and controlling packet data flow through packet forwarding hardware
US6901052B2 (en) 2001-05-04 2005-05-31 Slt Logic Llc System and method for policing multiple data flows and multi-protocol data flows
US7573876B2 (en) * 2002-12-05 2009-08-11 Intel Corporation Interconnecting network processors with heterogeneous fabrics
US7353362B2 (en) * 2003-07-25 2008-04-01 International Business Machines Corporation Multiprocessor subsystem in SoC with bridge between processor clusters interconnetion and SoC system bus
US20050078704A1 (en) * 2003-10-14 2005-04-14 International Business Machines Corporation Method and apparatus for translating data packets from one network protocol to another
US20050198336A1 (en) * 2004-01-22 2005-09-08 Edward Eytchison Methods and apparatuses for automatic adaptation of different protocols
US9043862B2 (en) * 2008-02-06 2015-05-26 Qualcomm Incorporated Policy control for encapsulated data flows
CN101534199A (zh) * 2008-03-10 2009-09-16 上海十进制网络信息科技有限公司 一种字符排列路由器
JP2011520336A (ja) * 2008-04-22 2011-07-14 テレフオンアクチーボラゲット エル エム エリクソン(パブル) シグナリングゲートウェイ及びアプリケーションサーバを動作させる方法、並びにシグナリングゲートウェイ及びアプリケーションサーバ
US7920569B1 (en) * 2008-05-05 2011-04-05 Juniper Networks, Inc. Multi-link transport protocol translation
US8249104B2 (en) * 2008-10-30 2012-08-21 Futurewei Technologies, Inc. Optical network terminal management and control interface over Ethernet
US8705524B1 (en) * 2010-06-17 2014-04-22 Adtran, Inc. Systems and methods for embedding metadata in data packets
EP2632086B1 (en) * 2011-04-14 2016-04-06 Huawei Technologies Co., Ltd. Linkage strategy implementation method and module, open platform board and device
IN2014DN09322A (ja) * 2012-05-10 2015-07-10 Ericsson Telefon Ab L M

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010033580A1 (en) * 1997-11-19 2001-10-25 Dorsey Paul C. Multi-protocol packet translator
JP2002077269A (ja) * 2000-05-24 2002-03-15 Alcatel Internetworking (Pe) Inc フロー解決論理を有するプログラム可能パケットプロセッサ
US20020085560A1 (en) * 2000-05-24 2002-07-04 Jim Cathey Programmable packet processor with flow resolution logic
US20020163935A1 (en) * 2001-05-04 2002-11-07 Terago Communications, Inc. System and method for providing transformation of multi-protocol packets in a data stream

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"動的リコンフィギャラブルプロセッサを用いたIPsecアクセラレータの設計と実装 The Design and Imple", 電子情報通信学会技術研究報告 VOL.104 NO.476 IEICE TECHNICAL REPORT, JPN6017044212, 25 November 2004 (2004-11-25), pages 第29−33頁 *

Also Published As

Publication number Publication date
CN113765892A (zh) 2021-12-07
DE202015009279U1 (de) 2017-01-19
JP6310573B2 (ja) 2018-04-11
DK3120528T3 (da) 2021-12-06
US9503552B2 (en) 2016-11-22
KR20160138519A (ko) 2016-12-05
CN106256112A (zh) 2016-12-21
EP3120528A1 (en) 2017-01-25
WO2015171922A1 (en) 2015-11-12
KR20180088531A (ko) 2018-08-03
KR102146947B1 (ko) 2020-08-21
EP3120528B1 (en) 2021-09-08
US20150326696A1 (en) 2015-11-12

Similar Documents

Publication Publication Date Title
JP6310573B2 (ja) ネットワークプロトコル更新に適応させるためのシステムおよび方法
US10764181B2 (en) Pipelined evaluations for algorithmic forwarding route lookup
US10652366B2 (en) Providing efficiencies in processing and communicating internet protocol packets in a network using segment routing
US10057192B2 (en) Information processing system, control device and control method
US9019837B2 (en) Packet modification to facilitate use of network tags
CN102427446B (zh) 分组合并
US20170359252A1 (en) Techniques for efficient service chain analytics
US9860168B1 (en) Network packet header modification for hardware-based packet processing
US10958770B2 (en) Realization of a programmable forwarding pipeline through packet header summaries in a data processing unit
US9979648B1 (en) Increasing entropy across routing table segments
US9985892B1 (en) System and method for providing congestion notification in layer 3 networks
JP6189898B2 (ja) アクティブメッセージによるrmaapiのサポート
US20170171167A1 (en) Calculation device, calculation method, communication apparatus, and storage medium
CN111026324B (zh) 转发表项的更新方法及装置
CN108683606B (zh) IPsec防重放的方法、装置、网络设备及可读存储介质
CN101969404B (zh) 报文处理的方法及设备
US9985885B1 (en) Aggregating common portions of forwarding routes
US10084613B2 (en) Self adapting driver for controlling datapath hardware elements
US8365045B2 (en) Flow based data packet processing
JP2009218743A (ja) Ipプロトコル処理装置及びその処理方法
US20090240925A1 (en) Device, method, and computer program product that process message
US20230269148A1 (en) High-Speed Packet Filtering
US10256992B2 (en) Tunnel encapsulation
JP2016149669A (ja) 転送装置
JP2007194885A (ja) パケット分類装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171004

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

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180316

R150 Certificate of patent or registration of utility model

Ref document number: 6310573

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250