JP2016005285A - パケットからデータを抽出する方法およびその装置 - Google Patents

パケットからデータを抽出する方法およびその装置 Download PDF

Info

Publication number
JP2016005285A
JP2016005285A JP2015122563A JP2015122563A JP2016005285A JP 2016005285 A JP2016005285 A JP 2016005285A JP 2015122563 A JP2015122563 A JP 2015122563A JP 2015122563 A JP2015122563 A JP 2015122563A JP 2016005285 A JP2016005285 A JP 2016005285A
Authority
JP
Japan
Prior art keywords
layer
protocol
field
token
packet
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
JP2015122563A
Other languages
English (en)
Other versions
JP6590545B2 (ja
Inventor
ヴィシャル・アナンド
Anand Vishal
ツァヒ・ダニエル
Daniel Tsahi
ジェラルド・シュミット
Schmidt Gerald
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.)
Xpliant Inc
Original Assignee
Xpliant Inc
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 Xpliant Inc filed Critical Xpliant Inc
Publication of JP2016005285A publication Critical patent/JP2016005285A/ja
Application granted granted Critical
Publication of JP6590545B2 publication Critical patent/JP6590545B2/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/12Protocol engines
    • 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
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses
    • 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/03Protocol definition or specification 

Landscapes

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

Abstract

【課題】パケットからデータを抽出する方法およびその装置を提供する。【解決手段】パーサエンジンを実現する方法は、パケット内のプロトコルレイヤを特定する過程と、プロトコルレイヤのそれぞれを、そのプロトコルレイヤの特定したことの結果に基づいて、汎用フォーマットに拡張する過程と、拡張後のプロトコルレイヤからコンテンツを選択する過程であって、これにより、最終的なトークンを形成する、過程とを含む。【選択図】図6

Description

本発明は、ネットワークパケット(ネットワーク上のパケット)に関する。詳細には、本発明は、パケットからデータを抽出する方法およびその装置に関する。
例えばイーサネット(Ethernet)パケットなどのネットワークパケットを処理する際には、そのネットワークパケットからフィールドを抽出する必要がある。抽出したフィールド内に含まれる数値から、パケットをどのように取り扱うのかを決定することができる。一例として、スイッチング時には、イーサネットヘッダ内の48ビットのMAC宛先アドレスを利用することにより、パケットをどのポートに送信するのかを決定することができる。同様に、ルーティング時には、IPv4レイヤ内に含まれる32ビットの宛先IPアドレスを利用する。今日のハードウェアソリューションでは、これらの情報をパケットから抽出するのに、決まった抽出メカニズムを利用する。抽出すべき必要な情報がパケット内のどこに存在するのかについては、実装時に判断される。このようなハードウェアソリューションでは、進化し続けるネットワークプロトコルに対処しきれなくなる。
各実施形態において、パケットからデータを抽出する装置は、パケットからフィールドを抽出することを可能にするプログラマブルな(設定可能な)レイヤ命令に関する。具体的に述べると、パケットを、個々のレイヤに分割する。個々のレイヤには、そのレイヤを特定する固有のレイヤタイプ番号が供与される。個々のレイヤは、そのレイヤタイプに基づいて汎用フォーマットに拡張される。個々のレイヤには、そのレイヤに対する汎用的なレイヤ命令のセットがある。各レイヤ命令におけるフィールドは、レイヤ内において抽出すべきフィールドが開始するオフセットを指定するフィールドオフセット(fieldOffset)、およびその指定されるオフセットからの抽出すべきバイト数を指定するフィールド長さ(fieldLen)である。上記レイヤ命令を用いることにより、パケット内の情報をプログラマブルに抽出することができる。各プロトコルレイヤについて、そのプロトコルレイヤから抽出したフィールドを互いに連結することにより、トークンレイヤを形成する。全てのトークンレイヤを連結することにより、最終的なトークンを形成する。そして、この最終的なトークンを、パケットのさらなる処理に用いる。
一態様では、パーサエンジンを実現する方法が提供される。このパーサエンジンは、ネットワークスイッチに含まれてもよい。この方法は、パケット内のプロトコルレイヤを特定する過程と、前記プロトコルレイヤのそれぞれを、そのプロトコルレイヤの前記特定したことの結果に基づいて、汎用フォーマットに拡張する過程と、拡張後のプロトコルレイヤからコンテンツを選択する過程であって、これにより、最終的なトークンを形成する、過程とを含む。
一部の実施形態では、前記パケット内の前記プロトコルレイヤのそれぞれを、そのプロトコルレイヤの固有のレイヤタイプ番号に基づいて特定する。
一部の実施形態では、前記汎用フォーマットが、前記プロトコルレイヤが有する可能性のある全てのフィールドを含む最高セットを規定している。
一部の実施形態では、前記プロトコルレイヤのそれぞれを拡張する前記過程が、拡張後のプロトコルレイヤに対するビットベクトルを保持することであって、当該ビットベクトルが、その拡張後のプロトコルレイヤの各バイトに対して1ビットを有すること、有効フィールドのそれぞれにおける全てのバイトに対する各ビットを、有効である(利用可能である(available))とマークすることであって、有効フィールドは、前記パケットのプロトコルレイヤ内に存在するフィールドであること、および無効フィールドのそれぞれにおける全てのバイトに対する各ビットを、無効である(利用不可能である(unavailable))とマークすることであって、無効フィールドは、前記パケットのプロトコルレイヤ内に存在しないフィールドであることを含む。
一部の実施形態において、前記方法は、さらに、圧縮フォーマットを用いる過程であって、拡張後のプロトコルレイヤを当該圧縮フォーマットにより表現する、過程を含む。
一部の実施形態において、前記方法は、さらに、汎用的なレイヤ命令のセットから、少なくとも1つのレイヤ命令を、拡張後のプロトコルレイヤに適用することにより、その拡張後のプロトコルレイヤからフィールドを抽出する、過程を含む。前記汎用的なレイヤ命令の各レイヤ命令におけるフィールドは、拡張後のレイヤ内において抽出すべきフィールドが開始するオフセットを指定するフィールドオフセット(fieldOffset)、およびその指定されるオフセットからの抽出すべきバイト数を指定するフィールド長さ(fieldLen)であり得る。一部の実施形態では、前記汎用的なレイヤ命令の各レイヤ命令におけるフィールドを、ソフトウェアで定義することを含む。
一部の実施形態において、前記方法は、さらに、少なくとも前記抽出されたフィールドに基づいて、トークンレイヤを形成する過程と、少なくとも前記トークンレイヤに基づいて、前記最終的なトークンを形成する過程とを含む。前記抽出されたフィールドを、その拡張後のプロトコルレイヤから抽出された他のフィールドと共に間隙を設けずに配置することにより、前記トークンレイヤを形成し得る。前記トークンレイヤを、他のトークンレイヤと共に間隙を設けずに配置することにより、前記最終的なトークンを形成し得る。この最終的なトークンは、前記パケットのさらなる処理に用いられ得る。
他の態様では、ネットワークスイッチを実現する方法が提供される。この方法は、前記ネットワークスイッチの受信ポートでパケットを受信する過程と、前記パケットの各プロトコルヘッダを、そのプロトコルの汎用フォーマットに従って汎用化する過程と、汎用化後の各プロトコルヘッダについて、その汎用化後のプロトコルヘッダから、1つ以上のフィールドを抽出する過程と、汎用化後の各プロトコルヘッダについて、その汎用化後のプロトコルヘッダから抽出された前記1つ以上のフィールドを連結することにより、トークンレイヤを形成する、過程と、全てのトークンレイヤを連結することにより、最終的なトークンを形成する、過程とを含む。
一部の実施形態では、前記ネットワークスイッチがパーサエンジンを備えており、当該パーサエンジンが、各プロトコルヘッダの汎用化、汎用化後のプロトコルヘッダからの1つ以上のフィールドの抽出、汎用化後のプロトコルヘッダから抽出された前記1つ以上のフィールドを連結することによるトークンレイヤの形成、および全てのトークンレイヤを連結することによる最終的なトークンの形成を実行する。
一部の実施形態では、各プロトコルヘッダを汎用化する過程が、前記パーサエンジンが、そのプロトコルヘッダのレイヤタイプおよび当該レイヤタイプの変種を判定すること、前記パーサエンジンが、それらレイヤタイプおよび変種に基づいて、そのプロトコルヘッダから、欠けているフィールドを検出すること、および前記パーサエンジンが、前記検出の結果に基づいて、そのプロトコルヘッダを前記汎用フォーマットに拡張することを含む。
一部の実施形態では、1つ以上のフィールドを抽出する過程が、1つ以上の汎用的なレイヤ命令を、汎用化後のプロトコルヘッダに適用することを含む。前記汎用的なレイヤ命令の各レイヤ命令におけるフィールドは、拡張後のレイヤ内において抽出すべきフィールドが開始するオフセットを指定するフィールドオフセット(fieldOffset)、およびその指定されるオフセットからの抽出すべきバイト数を指定するフィールド長さ(fieldLen)であり得る。
一部の実施形態において、前記方法は、さらに、パケットを受信する過程に先立って、前記1つ以上の汎用的なレイヤ命令の各レイヤ命令におけるフィールドを、ソフトウェアによりプログラムする過程を含む。
一部の実施形態において、前記方法は、さらに、パケットを受信する過程に先立って、プロトコルの汎用フォーマットについての、ソフトウェア定義のマッピングを可能にする過程と、前記ソフトウェア定義のマッピングを、前記ネットワークスイッチのメモリに記憶する過程とを含む。
さらなる他の態様では、ネットワークスイッチが提供される。このネットワークスイッチは、パケットを送受信する入力ポートおよび出力ポートを備える。このネットワークスイッチは、さらに、プロトコルの汎用フォーマットについてのソフトウェア定義のマッピングのセット、およびフィールドを抽出するための汎用的なレイヤ命令の複数のセットを記憶するメモリを備える。このネットワークスイッチは、さらに、前記パケットにヘッダ汎用化プロセスを実行するパーサエンジンであって、当該パケットにおける各プロトコルヘッダを、前記ソフトウェア定義のマッピングのうち、そのプロトコルに特有であるマッピングに従って汎用化し、汎用化後のプロトコルヘッダからコンテンツを選択することにより、最終的なトークンを形成するパーサエンジンを備える。前記ヘッダ汎用化プロセスは、あるプロトコルの、互いに異なる変種、あるいは、互いに異なるプロトコル、あるいは、両方に適用され得る。
一部の実施形態において、前記パケットは、前記パーサエンジンにより処理された後に、正準化されたプロトコルレイヤを有する。正準化後のプロトコルレイヤのそれぞれは、そのプロトコルの汎用フォーマットに従って拡張されたプロトコルレイヤであり得る。
一部の実施形態において、前記パーサエンジンは、さらに、汎用的なレイヤ命令の前記複数のセットのうちの1つのセットからの少なくとも1つのレイヤ命令を、汎用化後の各プロトコルレイヤに適用することにより、その汎用化後のプロトコルレイヤからフィールドを抽出する。一部の実施形態では、前記汎用的なレイヤ命令の前記複数のセットのうちの前記1つのセットが、前記対応するプロトコルに特有である。一部の実施形態では、前記汎用的なレイヤ命令の各レイヤ命令におけるフィールドが、ソフトウェアで定義される。
一部の実施形態では、前記抽出されたフィールドが、その汎用化後のプロトコルレイヤから抽出された他のフィールドと連結されることにより、トークンレイヤが形成される。一部の実施形態では、前記トークンレイヤが、他のトークンレイヤと互いに連結されることにより、最終的なトークンが形成される。一部の実施形態では、前記最終的なトークンが、前記パケットのさらなる処理に用いられる。
さらなる他の態様では、パーサエンジンが提供される。このパーサエンジンは回路を備えているか、または、回路から構成されている。その回路が、パケット内のプロトコルレイヤを特定し、前記プロトコルレイヤのそれぞれを、そのプロトコルレイヤの前記特定したことの結果に基づいて、汎用フォーマットに拡張し、拡張後のプロトコルレイヤからコンテンツを選択することにより、最終的なトークンを形成する。
一部の実施形態では、前記パケット内の前記プロトコルレイヤのそれぞれが、そのプロトコルレイヤの固有のレイヤタイプ番号に基づいて特定される。一部の実施形態では、前記汎用フォーマットが、そのプロトコルレイヤが有する可能性のある全てのフィールドを含む、最大のセットを規定している。すなわち、前記汎用フォーマットは、そのプロトコルレイヤが有する可能性のある全てのフィールドの集合を含む。
一部の実施形態では、前記回路が、さらに、汎用的なレイヤ命令のセットからの少なくとも1つのレイヤ命令を、拡張後のプロトコルレイヤに適用することにより、その拡張後のプロトコルレイヤからフィールドを抽出する。一部の実施形態では、前記汎用的なレイヤ命令の各レイヤ命令におけるフィールドが、拡張後のレイヤ内において抽出すべきフィールドが開始するオフセットを指定するフィールドオフセット(fieldOffset)、およびその指定されるオフセットからの抽出すべきバイト数を指定するフィールド長さ(fieldLen)である。一部の実施形態では、前記汎用的なレイヤ命令の各レイヤ命令におけるフィールドが、ソフトウェアで定義される。
一部の実施形態では、前記回路が、さらに、少なくとも前記抽出されたフィールドに基づいて、トークンレイヤを形成し、少なくとも前記トークンレイヤに基づいて、前記最終的なトークンを形成する。一部の実施形態では、前記抽出されたフィールドを、その拡張後のプロトコルレイヤから抽出された他のフィールドと共に間隙を設けずに配置することにより、前記トークンレイヤが形成される。一部の実施形態では、前記トークンレイヤを、他のトークンレイヤと共に間隙を設けずに配置することにより、前記最終的なトークンが形成される。
前述の内容は、添付の図面に示す本発明の例示的な実施形態についての以下の詳細な説明から明らかになる。図面において同一の符号は、異なる図をとおして同一の構成要素を指す。図面は必ずしも縮尺どおりではなく、本発明の実施形態を示すことに重点を置いている。
本発明の一部の実施形態において、受信パケットにおける様々なレイヤのヘッダを汎用フォーマットに拡張する様子を示す図である。 本発明の一部の実施形態での、プロトコルヘッダの汎用化の一例を示す図である。 本発明の一部の実施形態での、プロトコルヘッダの汎用化の一例を示す他の図である。 本発明の一部の実施形態での、プロトコルヘッダの汎用化の他の例を示す図である。 本発明の一部の実施形態での、プロトコルヘッダの汎用化の他の例を示す他の図である。 本発明の一部の実施形態での、プロトコルヘッダの汎用化の他の例を示すさらなる他の図である。 本発明の一部の実施形態での、プロトコルヘッダの汎用化のさらなる他の例を示す図である。 本発明の一部の実施形態での、プロトコルヘッダの汎用化のさらなる他の例を示す他の図である。 本発明の一部の実施形態での、プロトコルヘッダの汎用化のさらなる他の例を示すさらなる他の図である。 本発明の一部の実施形態において、拡張後のレイヤからデータを抽出する様子を示すブロック図である。 本発明の一部の実施形態において、全てのレイヤから抽出された情報を連結することにより、1つのバスデータを形成する様子を示すブロック図である。 本発明の一部の実施形態での、パーサエンジンの動作方法のフローチャートである。 本発明の一部の実施形態での、パーサエンジンの他の動作方法のフローチャートである。 本発明の一部の実施形態での、ネットワークスイッチの動作方法を示すフローチャートである。
以降では、説明目的の具体例を幾つか述べる。当業者であれば、それらの具体例以外でも本発明を実施できることを理解するであろう。すなわち、本発明は図示の実施形態に必ずしも限定されず、本明細書で述べる原理及び特徴に沿った最大限の範囲を包含する。
各実施形態において、パケットからデータを抽出する装置は、パケットからフィールドを抽出することを可能にするプログラマブルな(設定可能な)レイヤ命令に関する。具体的に述べると、パケットを、個々のレイヤに分割する。個々のレイヤには、そのレイヤを特定する固有のレイヤタイプ番号が供与される。個々のレイヤは、そのレイヤタイプに基づいて汎用フォーマットに拡張される。個々のレイヤには、そのレイヤに対する汎用的なレイヤ命令のセットがある。各レイヤ命令におけるフィールドは、レイヤ内において抽出すべきフィールドが開始するオフセットを指定するフィールドオフセット(fieldOffset)、およびその指定されるオフセットからの抽出すべきバイト数を指定するフィールド長さ(fieldLen)である。上記レイヤ命令を用いることにより、パケット内の情報をプログラマブルに抽出することができる。各プロトコルレイヤについて、そのプロトコルレイヤから抽出したフィールドを互いに連結することにより、トークンレイヤを形成する。全てのトークンレイヤを連結することにより、最終的なトークンを形成する。そして、この最終的なトークンを、パケットのさらなる処理に用いる。
ネットワークスイッチ等のネットワークデバイスは、ネットワーク上のトラフィックのスイッチングつまりルーティングを行うことができる。ネットワークスイッチは、パケットを受信する少なくとも1つの入力ポートつまり受信ポート、およびパケットを送信する少なくとも1つの出力ポートつまり送信ポートを備える。一部の実施形態において、ネットワークスイッチは、さらに、パーサ(パース処理手段)およびリライタ(書き換え手段)を備える。パーサ(解析手段)は、ネットワーク上のパケット(ネットワークパケット)のコンテンツを特定する少なくとも1つのパーサエンジンを含み得る。リライタ(再書込手段)は、パケットを、ネットワークスイッチから送出する前に変更する少なくとも1つのリライトエンジンを含み得る。これら少なくとも1つのパーサエンジンおよび少なくとも1つのリライトエンジンは、自由に変更可能であり、プログラマブル(設定可能)に動作し得る。
上記ネットワークスイッチは、さらに、当該ネットワークスイッチが使用するデータを記憶するメモリを備える。一例において、このメモリは、汎用的なレイヤ命令のセットを記憶する。簡単に述べると、これら汎用的なレイヤ命令は、プロトコルヘッダからフィールドを抽出するために典型的に使用される。他の例において、そのメモリは、さらに、プロトコルの汎用フォーマットについてのソフトウェア定義のマッピングのセットを記憶する。簡単に述べると、各プロトコルヘッダは、そのソフトウェア定義のマッピングのうち、そのプロトコルに特有であるマッピングに従った表現に変換され得る。後で詳述するように、これらのマッピングは、あるプロトコルの、互いに異なる変種にも、互いに異なるプロトコルにも適用可能であると共に、将来の新しいプロトコルにも適用(対応)可能である。さらなる他の例において、上記メモリは、さらに、計数値(counter)および統計量(statistic)を記憶する。
イーサネット(登録商標)では、パケットが複数のプロトコルレイヤを含む。各プロトコルレイヤは、互いに異なる情報を伝達する。そのようなレイヤとして、例えば:イーサネット;PBBイーサネット;ARP;IPv4;IPv6;MPLS;FCoE;TCP;UDP;ICMP;IGMP;GRE;ICMPv6;VxLAN;TRILL;CNM;等が周知である。
理論的に言えば、プロトコルレイヤは任意の順番であってもよい。しかし実際には周知のレイヤ組合せとなる。有効なレイヤ組合せとして、例えば:イーサネット;イーサネット,ARP;イーサネット,CNM;イーサネット,FCoE;イーサネット,IPv4;イーサネット,IPv4,ICMP;イーサネット,IPv4,IGMP;等がある。
パケットのパース処理(及びリライト処理)にあたって、パケットをレイヤに分解する。このような分割過程は、上記のような周知のレイヤに基づいて実行される。パケット内に含まれる各レイヤ内のフィールドの組合せには、多くの場合、様々な組合せが存在する。このような様々なフィールド組合せを効率的に取り扱えるように、これらのレイヤを汎用フォーマットに拡張する。汎用フォーマットを用いることにより、レイヤ内の特定のフィールドに依存しない例えばレイヤ命令などの命令を使用することが可能になる。汎用フォーマットは、所与の既知のレイヤが有し得る全てのフィールドを含む、最大のセットを規定している。
図1は、本発明の一部の実施形態において、受信パケットにおける様々なレイヤのヘッダを汎用フォーマットに拡張する様子を示す概略構成100である。図1の受信パケットは、8層のプロトコルレイヤを含む。典型的に、各プロトコルレイヤは、そのプロトコルに対応したヘッダ(プロトコルヘッダ)を有する。なお、プロトコルレイヤの層数は、8層を超える場合も8層未満の場合もあり得る。パーサエンジンは、各レイヤおよびその変種を特定することができる。また、パーサエンジンは、各プロトコルレイヤを、そのレイヤの特定の結果および当該レイヤの変種に基づいて、図1に示すように拡張することができる。「正準レイヤ」つまり「正準化されたレイヤ」とは、汎用フォーマットに拡張されたプロトコルレイヤのことを指す。手短に言って、正準レイヤのそれぞれは、無効フィールドについてはビットが0にマークされて有効フィールドについてはビットが1にマークされたビットベクトルを備える。
以下の説明では、パーサエンジンが所与のレイヤをイーサネットパケットヘッダであると特定した場合を考える。図2A〜図4Cに、本発明の一部の実施形態において、パーサエンジンがイーサネットプロトコルを扱う各種例を示す。図2A〜図4Cに示された各種例は、本発明にかかるパーサエンジンにより、あるプロトコル(これらの例では、イーサネットプロトコル)の、互いに異なる変種を扱うことができることを証明している。各例には、イーサネットプロトコルの受信時のヘッダと、その汎用フォーマットとが描かれている。他種のプロトコルの場合の説明は省略するが、本発明にかかるパーサエンジンは、他種のプロトコル合も同様に扱うことができる。
図2Aに、受信パケット内のイーサネットパケットヘッダのフォーマットの一例200を示す。このイーサネットパケットヘッダ200は、22バイトであり、送信元アドレス(SA)フィールド、宛先アドレス(DA)フィールド、サービスVLANタグフィールド、カスタマVLANタグフィールドおよびイーサタイプフィールドの、5つのフィールドを有する。SAフィールドおよびDAフィールドは、いずれも6バイトである。サービスVLANタグフィールドおよびカスタマVLANタグフィールドは、いずれも4バイトである。イーサタイプフィールドは、2バイトである。このイーサネットパケットヘッダ100を含むパケットは、イーサネットパケットの変種のなかでも最も大きい変種であり、そのサイズは最大22バイトであり得る。
パーサエンジンは、イーサネットパケットヘッダ200を処理して、当該イーサネットパケットヘッダ200には欠けているフィールドがないと判断する。このように、イーサネットパケットヘッダ200は想定されるフィールド全てを備えていることから、このイーサネットパケットヘッダ200の汎用フォーマットは、イーサネットパケットヘッダ200と全く同一になる。図2Bに、図2Aのイーサネットパケットヘッダ200を表したビットベクトル205を示す。ビットベクトル205の各ビットは、イーサネットパケットヘッダ200の22バイトのうちの1バイトにそれぞれ対応する。イーサネットパケットヘッダ200には、フィールド全てが存在していることから、当該イーサネットパケットヘッダ200のフィールド全てが有効フィールドとなる(すなわち、数値を有する)。したがって、ビットベクトル205のビットは全て「1」である。つまり、イーサネットパケットヘッダ200は、{22’b111111_111111_1111_1111_11}という汎用フォーマットで表現することができる。
図3Aに、受信パケットのイーサネットパケットヘッダのフォーマットの他の例300を示す。このイーサネットパケットヘッダ300は、18バイトであり、SAフィールド、DAフィールド、カスタマVLANタグフィールドおよびイーサタイプフィールドの、4つのフィールドしか有していない。すなわち、イーサネットパケットヘッダ300には、サービスVLANタグフィールドが欠けている。このイーサネットパケットヘッダ300を含むパケットも、イーサネットパケットの変種である。
パーサエンジンは、イーサネットパケットヘッダ300を処理して、当該イーサネットパケットヘッダ300にはサービスVLANタグフィールドが欠けていると判断し、当該イーサネットパケットヘッダ300の汎用フォーマットにおける適切な位置に、欠けているサービスVLANタグフィールドを含めることにより、そのイーサネットパケットヘッダ300を最大サイズである22バイトに拡張する。図3Bに、拡張後のイーサネットパケットヘッダの汎用フォーマット300’を示す。拡張後のイーサネットパケットヘッダ300’は、欠けていたサービスVLANタグフィールドも含め、イーサネットプロトコルについて想定されるフィールド全てを備えている。拡張後のイーサネットパケットヘッダ300’内の有効フィールドは、拡張前のイーサネットパケットヘッダ300から存在していたSAフィールド、DAフィールド、カスタマVLANタグフィールドおよびイーサタイプフィールドである。拡張後のイーサネットパケットヘッダ300’内の無効フィールドは、拡張前のイーサネットパケットヘッダ300内には存在せずに拡張後のイーサネットパケットヘッダ300’で追加された、サービスVLANタグフィールドである。
図3Cに、図3Bの拡張後のイーサネットパケットヘッダ300’を表したビットベクトル305を示す。ビットベクトル305の各ビットは、拡張後のイーサネットパケットヘッダ300’の22バイトのうちの1バイトにそれぞれ対応する。ビットベクトル305は、SAフィールド、DAフィールド、カスタマVLANタグフィールドおよびイーサタイプフィールドからなる有効フィールド全てについて「1」である。また、ビットベクトル305は、サービスVLANタグフィールドのみからなる無効フィールド全てについて「0」である。つまり、イーサネットパケットヘッダ300は、{22’b111111_111111_0000_1111_11}という汎用フォーマットで表現することができる。
図4Aに、受信パケットのイーサネットパケットヘッダのフォーマットのさらなる他の例400を示す。このイーサネットパケットヘッダ400は、14バイトであり、SAフィールド、DAフィールドおよびイーサタイプフィールドの、3つのフィールドしか有していない。すなわち、イーサネットパケットヘッダ400には、サービスVLANタグフィールドとカスタマVLANタグフィールドとが欠けている。このイーサネットパケットヘッダ400を含むパケットは、イーサネットパケットの変種のなかでも最も小さい変種である。
パーサエンジンは、イーサネットパケットヘッダ400を処理して、当該イーサネットパケットヘッダ400にはサービスVLANタグフィールドとカスタマVLANタグフィールドとが欠けていると判断し、当該イーサネットパケットヘッダ400の汎用フォーマットにおける適切な位置に、欠けているサービスVLANタグフィールドとカスタマVLANタグフィールドとを含めることにより、そのイーサネットパケットヘッダ400を最大サイズである22バイトに拡張する。図4Bに、拡張後のイーサネットパケットヘッダの汎用フォーマット400’を示す。拡張後のイーサネットパケットヘッダ400’は、欠けていたサービスVLANタグフィールドおよびカスタマVLANタグフィールドも含め、イーサネットプロトコルについて想定される全てのフィールドを備えている。拡張後のイーサネットパケットヘッダ400’内の有効フィールドは、拡張前のイーサネットパケットヘッダ400から存在していたSAフィールド、DAフィールドおよびイーサタイプフィールドである。拡張後のイーサネットパケットヘッダ400’内の無効フィールドは、拡張前のイーサネットパケットヘッダ400内に存在せずに拡張後のイーサネットパケットヘッダ400’で追加された、サービスVLANタグフィールドおよびカスタマVLANタグフィールドである。
図4Cに、図4Bの拡張後のイーサネットパケットヘッダ400’を表したビットベクトル405を示す。ビットベクトル405の各ビットは、拡張後のイーサネットパケットヘッダ400’の22バイトのうちの1バイトにそれぞれ対応する。ビットベクトル405は、SAフィールド、DAフィールドおよびイーサタイプフィールドからなる有効フィールド全てについて「1」である。また、ビットベクトル405は、サービスVLANタグフィールドおよびカスタマVLANタグフィールドからなる無効フィールド全てについて「0」である。つまり、イーサネットパケットヘッダ400は、{22’b111111_111111_0000_0000_11}という汎用フォーマットで表現することができる。
図2A〜図4Cから分かるように、イーサネットヘッダを汎用フォーマットに拡張することにより、フィールドのオフセットは、受信時のイーサネットヘッダの変種にかかわらず、最大サイズを有するイーサネットヘッダ(これらの例では、図2Aのイーサネットパケットヘッダ200)のオフセットと同一になる。このようにイーサネットヘッダを、最大サイズを有するイーサネットヘッダに拡張することにより、受信時のイーサネットヘッダにかかわらず、同一のセットのソフトウェア命令での処理が可能になるので有利である。よって、例えばイーサタイプフィールドを抽出するレイヤ命令は、どのようなイーサネットヘッダを受信したのかにかかわらず常に同一のオフセットを指すことができる。
一部の実施形態では、受信時の所与のヘッダ内に存在するフィールドを、圧縮フォーマットをにより表現する。このコンパクトなフォーマットは、連続バイト(contBytes)フィールドと有効バイト(validBytes)との2つのフィールドの組合せで構成される。連続バイト(contBytes)は、そのレイヤの先頭からの有効なバイト数を示す。有効バイト(validBytes)は、そのレイヤの各バイトの有効性を示すビットベクトルである。
例えば、連続バイト(contBytes)が8であり、かつ、有効バイト(validBytes)が4h’0111である場合、そのレイヤは、0〜7番目のバイトが有効で、その後に、1個のヌルバイトと3個の有効なバイトが続くことを意味する。このような圧縮フォーマットを用いることにより、レイヤを表現するのに必要なビット数を節約することができる。総バイト数(バイトの総数)を算出したい場合、以下の表1に示すような疑似コードを使用することが考えられる。
Figure 2016005285
パケットヘッダの汎用フォーマットを用いることにより、そのパケットヘッダからフィールドを抽出する際のハードウェア面およびソフトウェア面での柔軟性が向上する。ハードウェアは、そのパケットヘッダからのフィールドの抽出を、当該パケットヘッダ内におけるフィールドの位置に関係なく実施することができる。ソフトウェアにより、新しいプロトコルを支援するようにハードウェアをプログラムすることができる。また、ソフトウェアにより、ハードウェアのテーブル内に、ヘッダの各種プロトコルに用いる汎用フォーマットをプログラムすることができる。
プロトコルヘッダが拡張された後は、プログラマブルなレイヤ命令を用いることにより、パケットからフィールドを抽出することができる。個々のレイヤにはN個のレイヤ命令のセットがあり、Nはプロトコルに特有の数である。一部の実施形態では、個々のレイヤに、8つのプログラマブルなレイヤ命令がある。以下の表2に、各レイヤ命令のフィールドを示す。これらのフィールドは、ソフトウェアで定義される。
Figure 2016005285
このような汎用的なレイヤ命令を用いることにより、パケット内の情報をプログラマブルに抽出することができる。一例としてイーサネットの場合を考えるが、従来の方法とは異なり、MAC DA(MAC宛先アドレス)を抽出したいときには、レイヤ命令によりオフセット=0および長さ=6バイトを指定すればよい。これにより、このレイヤから、MAC DAを保持する先頭から6バイト分を抽出することができる。同様に、IP DAを抽出したいときには、レイヤ命令によりオフセット=16および長さ=4バイトを指定すればよい。これにより、このレイヤから、IP DAを保持するオフセット=16から開始する4バイト分を抽出することができる。
図5は、本発明の一部の実施形態において、拡張後のレイヤからデータを抽出する様子を示すブロック概略構成500である。図中では、拡張後のレイヤのことを「レイヤNヘッダ(正準ヘッダ)」と記載している。パーサエンジンによりレイヤタイプが判定されて、このレイヤタイプについてメモリが参照される。このメモリは、その拡張後のレイヤからフィールドを抽出するためのN個のレイヤ命令のうち、1つ以上のレイヤ命令を指定する。各レイヤ命令には、フィールドオフセット(fieldOffset)とフィールド長さ(fieldLen)の2つのフィールドが含まれる。図5では、第1のレイヤ命令によりフィールド0が抽出され、第2のレイヤ命令によりフィールド1が抽出され、第3のレイヤ命令によりフィールド15が抽出される。これらの抽出された情報は、図5に「トークンレイヤN」と記載されたバス内に記憶される。抽出されたフィールドは、互いに間隙なく隣り合わせで順次配置されることにより、トークンレイヤを形成する。すなわち、抽出されたフィールドが互いに連結されることにより、トークンレイヤが形成される。レイヤから抽出された情報の長さの合計は、そのレイヤに対して適用された各レイヤ命令におけるフィールド長さ(fieldLen)の合計に等しい。
図6は、本発明の一部の実施形態において、全てのレイヤから抽出された情報を連結することにより、1つのバスデータを形成する様子を示すブロック概略構成600である。図中では、レイヤ0からフィールドを抽出してトークンレイヤ0を形成するのに、2つのレイヤ命令(すなわち、命令0および命令1)が用いられている。また、レイヤ1からフィールドを抽出してトークンレイヤ1を形成するのに、3つのレイヤ命令(すなわち、命令0、命令1および命令2)が用いられている。その他のトークンレイヤについても同様である。これら全てのトークンレイヤが互いに間隙なく隣り合わせで順次配置されることにより、最終的なトークンが形成される。すなわち、トークンレイヤ0からトークンレイヤ7が連結されることにより、最終的なトークンが形成される。典型的に、この最終的なトークンは、パケットのさらなる処理に用いられる。
図7Aに、本発明の一部の実施形態での、パーサエンジンの動作方法700を示す。このパーサエンジンは、ネットワークスイッチの一部であり、ネットワークパケットのコンテンツを特定する。典型的に、このパーサエンジンは、そのパケットを最初にプロトコルレイヤ単位に分割する。過程705で、パケット内のプロトコルレイヤを特定する。具体的に述べると、プロトコルレイヤのそれぞれを、そのプロトコルレイヤの固有のレイヤタイプ番号に基づいて特定し得る。
過程710で、これらプロトコルレイヤのそれぞれを、その特定したことに基づいて、汎用フォーマットに拡張する。この汎用フォーマットは、プロトコルレイヤが有する可能性のある全てのフィールドを含む、最大のセットを規定している。拡張後のプロトコルレイヤに対するビットベクトルを保持し得る。このビットベクトルは、その拡張後のプロトコルレイヤの各バイトに対して1ビットを有し得る。有効フィールドのそれぞれにおける全てのバイトに対する各ビットを、有効であるとマークし得る。有効フィールドは、パケットのそのプロトコルレイヤ内に存在するフィールドであり得る。無効フィールドのそれぞれにおける全てのバイトに対する各ビットを、無効であるとマークし得る。無効フィールドのそれぞれは、パケットのそのプロトコルレイヤ内に存在しないフィールドであり得る。一部の実施形態では、拡張後のプロトコルレイヤを、圧縮フォーマットにより表現する。
過程715で、拡張後のプロトコルレイヤからコンテンツを選択することにより、最終的なトークンを形成する。
図7Bに、本発明の一部の実施形態での、パーサエンジンの他の動作方法750を示す。典型的に、このパーサエンジンは、前述した方法700に続いてこの方法750を実行する。過程755で、汎用的なレイヤ命令のセットから、少なくとも1つのレイヤ命令を、拡張後のプロトコルレイヤに適用することにより、その拡張後のプロトコルレイヤからフィールドを抽出する。汎用的なレイヤ命令の各レイヤ命令におけるフィールドは、拡張後のレイヤ内において抽出すべきフィールドが開始するオフセットを指定するフィールドオフセット(fieldOffset)、およびその指定されるオフセットからの抽出すべきバイト数を指定するフィールド長さ(fieldLen)であり得る。汎用的なレイヤ命令の各レイヤ命令におけるフィールドを、ソフトウェアで定義し得る。
過程760で、少なくとも前記抽出されたフィールドに基づいて、トークンレイヤを形成する。抽出されたフィールドを、その拡張後のプロトコルレイヤから抽出された他のフィールドと共に間隙を設けずに配置することにより、前記トークンレイヤを形成し得る。
過程765で、前記トークンレイヤに基づいて、前記最終的なトークンを形成する。前記トークンレイヤを、他のトークンレイヤと共に間隙を設けずに配置することにより、前記最終的なトークンを形成し得る。典型的に、この最終的なトークンは、パケットのさらなる処理に用いられる。
図8に、本発明の一部の実施形態での、ネットワークスイッチの動作方法800を示す。一部の実施形態において、このネットワークスイッチは、プロトコルの汎用フォーマットについての、ソフトウェア定義のマッピングを可能にし、これらソフトウェア定義のマッピングを、当該ネットワークスイッチのメモリに記憶する。過程805で、当該ネットワークスイッチの受信ポートでパケットを受信する。
過程810で、そのパケットの各プロトコルヘッダを、そのプロトコルの汎用フォーマットに従って汎用化する。パーサエンジンが、そのプロトコルヘッダのレイヤタイプおよび当該レイヤタイプの変種を判定し得る。パーサエンジンが、それらレイヤタイプおよび変種に基づいて、そのプロトコルヘッダから、欠けているフィールドを検出し得る。パーサエンジンが、前記検出の結果に基づいて、そのプロトコルヘッダを前記汎用フォーマットに拡張し得る。
過程815で、汎用化後の各プロトコルヘッダについて、その汎用化後のプロトコルヘッダから、1つ以上のフィールドを抽出する。この1つ以上のフィールドを抽出するために、1つ以上の汎用的なレイヤ命令を、汎用化後のプロトコルヘッダに適用し得る。汎用的なレイヤ命令の各レイヤ命令におけるフィールドは、拡張後のレイヤ内において抽出すべきフィールドが開始するオフセットを指定するフィールドオフセット(fieldOffset)、およびその指定されるオフセットからの抽出すべきバイト数を指定するフィールド長さ(fieldLen)であり得る。典型的には、過程805に先立って、汎用的なレイヤ命令の各レイヤ命令におけるフィールドを、ソフトウェアによりプログラムする。
過程820で、汎用化後の各プロトコルヘッダについて、その汎用化後のプロトコルヘッダから抽出された前記1つ以上のフィールドを連結することにより、トークンレイヤを形成する。具体的に述べると、抽出された前記1つ以上のフィールド同士を、間隙を設けずに配置することにより、前記トークンレイヤを形成し得る。
過程825で、全てのトークンレイヤを連結することにより、最終的なトークンを形成する。具体的に述べると、前記トークンレイヤを、他のトークンレイヤと共に間隙を設けずに配置することにより、前記最終的なトークンを形成し得る。典型的に、この最終的なトークンは、パケットのさらなる処理に用いられる。
以上のように、パケットからのデータはレイヤ命令を用いて抽出される。この抽出過程は、その各レイヤを汎用フォーマットに拡張してから実行する。ヘッダの汎用フォーマットを用いるのに加えて、パケットのレイヤ内の特定のフィールドに依存しないレイヤ命令を使用するので、パケットヘッダからフィールドを抽出する際のハードウェア面およびソフトウェア面での柔軟性が向上する。さらに、抽出すべき必要な情報がパケット内のどこに存在するのかについて、実装時に判断する必要性がなくなる。
当業者であれば、上記以外にも用途や利点が存在することが理解できるであろう。これまでの本発明の説明は幾つかの具体例に基づいたものであったが、当業者であれば、本発明の精神を逸脱することなく本発明をその他の具体的な形態でも実施可能であることを理解できるであろう。すなわち、当業者であれば、本発明が前述の具体例に限定されるものではなく、添付の特許請求の範囲により規定されるものであることを理解するであろう。

Claims (38)

  1. パーサエンジンを実現する方法であって、
    パケット内のプロトコルレイヤを特定する過程と、
    前記プロトコルレイヤのそれぞれを、そのプロトコルレイヤの前記特定したことの結果に基づいて、汎用フォーマットに拡張する過程と、
    拡張後のプロトコルレイヤからコンテンツを選択する過程であって、これにより、最終的なトークンを形成する、過程と、
    を含む、方法。
  2. 請求項1に記載の方法において、前記パケット内の前記プロトコルレイヤのそれぞれを、そのプロトコルレイヤの固有のレイヤタイプ番号に基づいて特定する、方法。
  3. 請求項1に記載の方法において、前記汎用フォーマットが、前記プロトコルレイヤが有する可能性のある全てのフィールドを含む、最大のセットを規定している、方法。
  4. 請求項1に記載の方法において、前記プロトコルレイヤのそれぞれを拡張する前記過程が、
    拡張後のプロトコルレイヤに対するビットベクトルを保持することであって、当該ビットベクトルが、その拡張後のプロトコルレイヤの各バイトに対して1ビットを有すること、
    有効フィールドのそれぞれにおける全てのバイトに対する各ビットを、有効であるとマークすることであって、有効フィールドのそれぞれは、前記パケットの前記プロトコルレイヤ内に存在するフィールドであること、および
    無効フィールドのそれぞれにおける全てのバイトに対する各ビットを、無効であるとマークすることであって、無効フィールドのそれぞれは、前記パケットの前記プロトコルレイヤ内に存在しないフィールドであること、
    を含む、方法。
  5. 請求項4に記載の方法において、さらに、
    圧縮フォーマットを用いる過程であって、拡張後のプロトコルレイヤを当該圧縮フォーマットにより表現する、過程、
    を含む、方法。
  6. 請求項1に記載の方法において、さらに、
    汎用的なレイヤ命令のセットから、少なくとも1つのレイヤ命令を、拡張後のプロトコルレイヤに適用することにより、その拡張後のプロトコルレイヤからフィールドを抽出する、過程、
    を含む、方法。
  7. 請求項6に記載の方法において、前記汎用的なレイヤ命令の各レイヤ命令におけるフィールドが、拡張後のレイヤ内において抽出すべきフィールドが開始するオフセットを指定するフィールドオフセット(fieldOffset)、およびその指定されるオフセットからの抽出すべきバイト数を指定するフィールド長さ(fieldLen)である、方法。
  8. 請求項6に記載の方法において、前記汎用的なレイヤ命令の各レイヤ命令におけるフィールドを、ソフトウェアで定義することを含む、方法。
  9. 請求項6に記載の方法において、さらに、
    少なくとも前記抽出されたフィールドに基づいて、トークンレイヤを形成する過程と、
    少なくとも前記トークンレイヤに基づいて、前記最終的なトークンを形成する過程と、
    を含む、方法。
  10. 請求項9に記載の方法において、前記抽出されたフィールドを、その拡張後のプロトコルレイヤから抽出された他のフィールドと共に間隙を設けずに配置することにより、前記トークンレイヤを形成する、方法。
  11. 請求項9に記載の方法において、前記トークンレイヤを、他のトークンレイヤと共に間隙を設けずに配置することにより、前記最終的なトークンを形成する、方法。
  12. ネットワークスイッチを実現する方法であって、
    前記ネットワークスイッチの受信ポートでパケットを受信する過程と、
    前記パケットの各プロトコルヘッダを、そのプロトコルの汎用フォーマットに従って汎用化する過程と、
    汎用化後の各プロトコルヘッダについて、その汎用化後のプロトコルヘッダから、1つ以上のフィールドを抽出する過程と、
    汎用化後の各プロトコルヘッダについて、その汎用化後のプロトコルヘッダから抽出された前記1つ以上のフィールドを連結することにより、トークンレイヤを形成する、過程と、
    全てのトークンレイヤを連結することにより、最終的なトークンを形成する、過程と、
    を含む、方法。
  13. 請求項12に記載の方法において、前記ネットワークスイッチがパーサエンジンを備えており、当該パーサエンジンが、各プロトコルヘッダの汎用化、汎用化後のプロトコルヘッダからの1つ以上のフィールドの抽出、汎用化後のプロトコルヘッダから抽出された前記1つ以上のフィールドを連結することによるトークンレイヤの形成、および全てのトークンレイヤを連結することによる最終的なトークンの形成を実行する、方法。
  14. 請求項13に記載の方法において、各プロトコルヘッダを汎用化する過程が、
    前記パーサエンジンが、そのプロトコルヘッダのレイヤタイプおよび当該レイヤタイプの変種を判定すること、
    前記パーサエンジンが、それらレイヤタイプおよび変種に基づいて、そのプロトコルヘッダから、欠けているフィールドを検出すること、および
    前記パーサエンジンが、前記検出の結果に基づいて、そのプロトコルヘッダを前記汎用フォーマットに拡張すること、
    を含む、方法。
  15. 請求項12に記載の方法において、1つ以上のフィールドを抽出する過程が、1つ以上の汎用的なレイヤ命令を、汎用化後のプロトコルヘッダに適用することを含む、方法。
  16. 請求項15に記載の方法において、前記1つ以上の汎用的なレイヤ命令の各レイヤ命令におけるフィールドが、拡張後のレイヤ内において抽出すべきフィールドが開始するオフセットを指定するフィールドオフセット(fieldOffset)、およびその指定されるオフセットからの抽出すべきバイト数を指定するフィールド長さ(fieldLen)である、方法。
  17. 請求項15に記載の方法において、さらに、パケットを受信する過程に先立って、
    前記1つ以上の汎用的なレイヤ命令の各レイヤ命令におけるフィールドを、ソフトウェアによりプログラムする過程、
    を含む、方法。
  18. 請求項12に記載の方法において、さらに、パケットを受信する過程に先立って、
    プロトコルの汎用フォーマットについての、ソフトウェア定義のマッピングを可能にする過程と、
    前記ソフトウェア定義のマッピングを、前記ネットワークスイッチのメモリに記憶する過程と、
    を含む、方法。
  19. パケットを送受信する入力ポートおよび出力ポートと、
    プロトコルの汎用フォーマットについてのソフトウェア定義のマッピングのセット、およびフィールドを抽出するための汎用的なレイヤ命令の複数のセットを記憶するメモリと、
    前記パケットにヘッダ汎用化プロセスを実行するパーサエンジンであって、当該パケットにおける各プロトコルヘッダを、前記ソフトウェア定義のマッピングのうち、そのプロトコルに特有であるマッピングに従って汎用化し、汎用化後のプロトコルヘッダからコンテンツを選択することにより、最終的なトークンを形成するパーサエンジンと、
    を備える、ネットワークスイッチ。
  20. 請求項19に記載のネットワークスイッチにおいて、前記ヘッダ汎用化プロセスが、あるプロトコルの、互いに異なる変種に適用される、ネットワークスイッチ。
  21. 請求項19に記載のネットワークスイッチにおいて、前記ヘッダ汎用化プロセスが、互いに異なるプロトコルに適用される、ネットワークスイッチ。
  22. 請求項19に記載のネットワークスイッチにおいて、前記パケットは、前記パーサエンジンにより処理された後に、正準化されたプロトコルレイヤを有する、ネットワークスイッチ。
  23. 請求項22に記載のネットワークスイッチにおいて、正準化後のプロトコルレイヤのそれぞれは、そのプロトコルの汎用フォーマットに従って拡張されたプロトコルレイヤである、ネットワークスイッチ。
  24. 請求項19に記載のネットワークスイッチにおいて、前記パーサエンジンは、さらに、汎用的なレイヤ命令の前記複数のセットのうちの1つのセットからの少なくとも1つのレイヤ命令を、汎用化後の各プロトコルレイヤに適用することにより、その汎用化後のプロトコルレイヤからフィールドを抽出する、ネットワークスイッチ。
  25. 請求項24に記載のネットワークスイッチにおいて、前記汎用的なレイヤ命令の前記複数のセットのうちの前記1つのセットが、前記対応するプロトコルに特有である、ネットワークスイッチ。
  26. 請求項24に記載のネットワークスイッチにおいて、前記汎用的なレイヤ命令の各レイヤ命令におけるフィールドが、ソフトウェアで定義される、ネットワークスイッチ。
  27. 請求項24に記載のネットワークスイッチにおいて、前記抽出されたフィールドが、その汎用化後のプロトコルレイヤから抽出された他のフィールドと連結されることにより、トークンレイヤが形成される、ネットワークスイッチ。
  28. 請求項27に記載のネットワークスイッチにおいて、前記トークンレイヤが、他のトークンレイヤと互いに連結されることにより、最終的なトークンを形成する、ネットワークスイッチ。
  29. 請求項28に記載のネットワークスイッチにおいて、前記最終的なトークンが、前記パケットのさらなる処理に用いられる、ネットワークスイッチ。
  30. 回路を備えるパーサエンジンであって、前記回路が、
    パケット内のプロトコルレイヤを特定し、
    前記プロトコルレイヤのそれぞれを、そのプロトコルレイヤの前記特定したことの結果に基づいて、汎用フォーマットに拡張し、
    拡張後のプロトコルレイヤからコンテンツを選択することにより、最終的なトークンを形成する、パーサエンジン。
  31. 請求項30に記載のパーサエンジンにおいて、前記パケット内の前記プロトコルレイヤのそれぞれが、そのプロトコルレイヤの固有のレイヤタイプ番号に基づいて特定される、パーサエンジン。
  32. 請求項30に記載のパーサエンジンにおいて、前記汎用フォーマットが、そのプロトコルレイヤが有する可能性のある全てのフィールドを含む、最大のセットを規定している、パーサエンジン。
  33. 請求項30に記載のパーサエンジンにおいて、前記回路が、さらに、汎用的なレイヤ命令のセットからの少なくとも1つのレイヤ命令を、拡張後のプロトコルレイヤに適用することにより、その拡張後のプロトコルレイヤからフィールドを抽出する、パーサエンジン。
  34. 請求項33に記載のパーサエンジンにおいて、前記汎用的なレイヤ命令の各レイヤ命令におけるフィールドが、拡張後のレイヤ内において抽出すべきフィールドが開始するオフセットを指定するフィールドオフセット(fieldOffset)、およびその指定されるオフセットからの抽出すべきバイト数を指定するフィールド長さ(fieldLen)である、パーサエンジン。
  35. 請求項33に記載のパーサエンジンにおいて、前記汎用的なレイヤ命令の各レイヤ命令におけるフィールドが、ソフトウェアで定義される、パーサエンジン。
  36. 請求項33に記載のパーサエンジンにおいて、前記回路が、さらに、少なくとも前記抽出されたフィールドに基づいて、トークンレイヤを形成し、少なくとも前記トークンレイヤに基づいて、前記最終的なトークンを形成する、パーサエンジン。
  37. 請求項36に記載のパーサエンジンにおいて、前記抽出されたフィールドを、その拡張後のプロトコルレイヤから抽出された他のフィールドと共に間隙を設けずに配置することにより、前記トークンレイヤが形成される、パーサエンジン。
  38. 請求項36に記載のパーサエンジンにおいて、前記トークンレイヤを、他のトークンレイヤと共に間隙を設けずに配置することにより、前記最終的なトークンが形成される、パーサエンジン。
JP2015122563A 2014-06-19 2015-06-18 パケットからデータを抽出する方法およびその装置 Active JP6590545B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/309,726 US9516145B2 (en) 2014-06-19 2014-06-19 Method of extracting data from packets and an apparatus thereof
US14/309,726 2014-06-19

Publications (2)

Publication Number Publication Date
JP2016005285A true JP2016005285A (ja) 2016-01-12
JP6590545B2 JP6590545B2 (ja) 2019-10-16

Family

ID=53541505

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015122563A Active JP6590545B2 (ja) 2014-06-19 2015-06-18 パケットからデータを抽出する方法およびその装置

Country Status (7)

Country Link
US (1) US9516145B2 (ja)
EP (1) EP2958285A3 (ja)
JP (1) JP6590545B2 (ja)
KR (1) KR102337516B1 (ja)
CN (1) CN105282134B (ja)
HK (1) HK1220831A1 (ja)
TW (1) TW201607274A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7220814B1 (ja) 2022-01-21 2023-02-10 エヌ・ティ・ティ・アドバンステクノロジ株式会社 データ取得装置及びデータ取得方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10911579B1 (en) * 2016-03-01 2021-02-02 Amazon Technologies, Inc. Generating programmatically defined fields of metadata for network packets
CN111092880B (zh) * 2019-12-13 2022-08-09 支付宝(杭州)信息技术有限公司 一种网络流量数据提取方法及装置
CN116156027B (zh) * 2023-04-20 2023-07-18 中国人民解放军国防科技大学 一种支持rmt的动作执行引擎及其执行方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005036834A1 (ja) * 2003-10-10 2005-04-21 Fujitsu Limited 統計情報採取方法及び装置
JP2006020317A (ja) * 2004-06-30 2006-01-19 Zarlink Semiconductor Inc 交換環境用の結合パイプライン化パケット分類およびアドレス探索方法および装置
US20120281714A1 (en) * 2011-05-06 2012-11-08 Ralink Technology Corporation Packet processing accelerator and method thereof
US20130039278A1 (en) * 2010-05-03 2013-02-14 Nokia Corporation Protocol overhead reduction
US20130163427A1 (en) * 2011-12-22 2013-06-27 Ludovic Beliveau System for flexible and extensible flow processing in software-defined networks

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5805808A (en) 1991-12-27 1998-09-08 Digital Equipment Corporation Real time parser for data packets in a communications network
US6088356A (en) 1997-06-30 2000-07-11 Sun Microsystems, Inc. System and method for a multi-layer network element
US6341129B1 (en) 1998-04-03 2002-01-22 Alteon Networks, Inc. TCP resegmentation
US7333484B2 (en) 1998-08-07 2008-02-19 Intel Corporation Services processor having a packet editing unit
FI106504B (fi) 1998-10-06 2001-02-15 Nokia Networks Oy Datan segmentointimenetelmä tietoliikennejärjestelmässä
US6789116B1 (en) 1999-06-30 2004-09-07 Hi/Fn, Inc. State processor for pattern matching in a network monitor device
AU1555501A (en) 1999-12-02 2001-06-12 Matsushita Electric Industrial Co., Ltd. Optical disc medium, recording method thereof and recorder
JP3613102B2 (ja) 1999-12-14 2005-01-26 日本電気株式会社 フレーム構成方法、フレーム構成装置およびフレーム構成転送システム
ATE319249T1 (de) * 2000-01-27 2006-03-15 Ibm Verfahren und vorrichtung für klassifizierung von datenpaketen
JP4099930B2 (ja) 2000-06-02 2008-06-11 株式会社日立製作所 ルータ装置及びvpn識別情報の設定方法
GB0023169D0 (en) 2000-09-20 2000-11-01 Ibm Message parsing in message processing systems
US6904057B2 (en) 2001-05-04 2005-06-07 Slt Logic Llc Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification
US6944168B2 (en) 2001-05-04 2005-09-13 Slt Logic Llc System and method for providing transformation of multi-protocol packets in a data stream
US7580408B2 (en) 2001-11-21 2009-08-25 Alcatel Lucent Configurable packet processor
US7236501B1 (en) 2002-03-22 2007-06-26 Juniper Networks, Inc. Systems and methods for handling packet fragmentation
US7187694B1 (en) 2002-03-29 2007-03-06 Pmc-Sierra, Inc. Generic packet parser
JP2003308206A (ja) 2002-04-15 2003-10-31 Fujitsu Ltd プロセッサ装置
US20050232303A1 (en) 2002-04-26 2005-10-20 Koen Deforche Efficient packet processing pipeline device and method
US7408957B2 (en) 2002-06-13 2008-08-05 International Business Machines Corporation Selective header field dispatch in a network processing system
US7415596B2 (en) 2003-01-24 2008-08-19 Gigafin Networks, Inc. Parser table/production rule table configuration using CAM and SRAM
US20050281281A1 (en) 2003-01-24 2005-12-22 Rajesh Nair Port input buffer architecture
US7706363B1 (en) 2003-06-11 2010-04-27 Radlan Computer Communications, Ltd Method and apparatus for managing packets in a packet switched network
US7411957B2 (en) 2004-03-26 2008-08-12 Cisco Technology, Inc. Hardware filtering support for denial-of-service attacks
US7822032B1 (en) 2004-03-30 2010-10-26 Extreme Networks, Inc. Data structures for supporting packet data modification operations
US7606263B1 (en) 2004-03-30 2009-10-20 Extreme Networks, Inc. Packet parser
US7568047B1 (en) 2004-04-30 2009-07-28 Nortel Networks Limited Method and apparatus for adaptive service label management
JP4392294B2 (ja) 2004-06-15 2009-12-24 株式会社日立製作所 通信統計収集装置
JP4156568B2 (ja) 2004-06-21 2008-09-24 富士通株式会社 通信システムの制御方法、通信制御装置、プログラム
US7474619B2 (en) 2004-07-22 2009-01-06 International Business Machines Corporation Method and apparatus for providing fragmentation at a transport level along a transmission path
US7570661B2 (en) 2005-06-14 2009-08-04 Microsoft Corporation Script-based parser
US7603474B2 (en) 2005-10-05 2009-10-13 Microsoft Corporation Efficient endpoint matching using a header-to-bit conversion table
US9143585B2 (en) * 2006-07-07 2015-09-22 Wi-Lan Inc. Method and system for generic multiprotocol convergence over wireless air interface
CA2669932A1 (en) 2006-12-19 2008-06-26 International Business Machines Corporation Apparatus and method for analysing a network flow
US7822875B1 (en) 2006-12-22 2010-10-26 Marvell International Ltd. Method for flexible modifications to a packet
CN101543018B (zh) * 2007-01-12 2012-12-26 庆熙大学校产学协力团 网络提取层单元的分组格式、使用该格式的视频编解码算法和装置以及使用该格式进行IPv6标签交换的QoS控制算法和装置
IL190134A (en) 2007-03-12 2012-07-31 Marvell Israel Misl Ltd Method and system for determining the location of fields in information units
US8825592B2 (en) 2008-03-12 2014-09-02 Web Access, Inc. Systems and methods for extracting data from a document in an electronic format
US7843919B2 (en) * 2008-03-20 2010-11-30 International Business Machines Corporation Ethernet virtualization using a network packet alteration
KR101456563B1 (ko) * 2008-05-14 2014-10-31 삼성전자주식회사 멀티 홉 릴레이 환경에서 대역폭 할당 요청과 할당 방법 및시스템
US8234369B2 (en) 2008-12-23 2012-07-31 Verizon Patent And Licensing Inc. Web page response monitoring
US8902886B2 (en) * 2009-04-23 2014-12-02 International Business Machines Corporation Canonicalization of network protocol headers
US8111704B2 (en) 2009-06-26 2012-02-07 Intel Corporation Multiple compression techniques for packetized information
US9008082B2 (en) * 2009-12-07 2015-04-14 Telefonaktiebolaget L M Ericsson (Publ) Handling data packets received at a routing node
US8472438B2 (en) * 2010-04-23 2013-06-25 Telefonaktiebolaget L M Ericsson (Publ) Efficient encapsulation of packets transmitted on a packet-pseudowire over a packet switched network
US8537815B2 (en) 2010-06-17 2013-09-17 Apple Inc. Accelerating data routing
US8705533B1 (en) 2010-12-10 2014-04-22 Juniper Networks, Inc. Fast packet encapsulation using templates
US8711860B2 (en) 2011-12-22 2014-04-29 Telefonaktiebolaget L M Ericsson (Publ) Controller for flexible and extensible flow processing in software-defined networks
US9282173B2 (en) 2012-02-17 2016-03-08 Viavi Solutions Inc. Reconfigurable packet header parsing
JP6186355B2 (ja) * 2012-10-17 2017-08-23 サターン ライセンシング エルエルシーSaturn Licensing LLC データ処理装置、データ処理方法、及び、プログラム
EP2915287B1 (en) * 2012-10-30 2018-12-05 Viavi Solutions Inc. Method and system for identifying matching packets
US9219694B2 (en) 2013-03-15 2015-12-22 Wisconsin Alumni Research Foundation Content addressable memory with reduced power consumption
US9769701B2 (en) * 2013-06-14 2017-09-19 Texas Instruments Incorporated Header compression for wireless backhaul systems
US9444914B2 (en) * 2013-09-16 2016-09-13 Annapurna Labs Ltd. Configurable parser and a method for parsing information units
US9628382B2 (en) * 2014-02-05 2017-04-18 Intel Corporation Reliable transport of ethernet packet data with wire-speed and packet data rate match

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005036834A1 (ja) * 2003-10-10 2005-04-21 Fujitsu Limited 統計情報採取方法及び装置
JP2006020317A (ja) * 2004-06-30 2006-01-19 Zarlink Semiconductor Inc 交換環境用の結合パイプライン化パケット分類およびアドレス探索方法および装置
US20130039278A1 (en) * 2010-05-03 2013-02-14 Nokia Corporation Protocol overhead reduction
US20120281714A1 (en) * 2011-05-06 2012-11-08 Ralink Technology Corporation Packet processing accelerator and method thereof
US20130163427A1 (en) * 2011-12-22 2013-06-27 Ludovic Beliveau System for flexible and extensible flow processing in software-defined networks

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7220814B1 (ja) 2022-01-21 2023-02-10 エヌ・ティ・ティ・アドバンステクノロジ株式会社 データ取得装置及びデータ取得方法
JP2023106807A (ja) * 2022-01-21 2023-08-02 エヌ・ティ・ティ・アドバンステクノロジ株式会社 データ取得装置及びデータ取得方法

Also Published As

Publication number Publication date
EP2958285A2 (en) 2015-12-23
US9516145B2 (en) 2016-12-06
HK1220831A1 (zh) 2017-05-12
US20150373163A1 (en) 2015-12-24
CN105282134A (zh) 2016-01-27
CN105282134B (zh) 2020-09-25
KR102337516B1 (ko) 2021-12-09
TW201607274A (zh) 2016-02-16
EP2958285A3 (en) 2016-01-27
JP6590545B2 (ja) 2019-10-16
KR20150145728A (ko) 2015-12-30

Similar Documents

Publication Publication Date Title
US9178814B2 (en) Analysis of network packets using a generated hash code
JP6590546B2 (ja) パケットのコンテンツからハッシュ入力を形成する方法およびその装置
JP6590545B2 (ja) パケットからデータを抽出する方法およびその装置
US20160028860A1 (en) Method for parsing network packets having future defined tags
US11258886B2 (en) Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof
US9473601B2 (en) Method of representing a generic format header using continuous bytes and an apparatus thereof
JP6678401B2 (ja) 変更のためにパケットを個々のレイヤに分割し、変更後のレイヤを情報処理で継合する方法およびその装置
US10397113B2 (en) Method of identifying internal destinations of network packets and an apparatus thereof
JP6608628B2 (ja) パケットの固有の識別子を用いて、パケットの構造を特定する方法およびその装置
JP6594671B2 (ja) パケットを汎用フォーマットに変更して、プログラマブルな変更を可能にする方法およびその装置
JP6594672B2 (ja) 汎用的な変更の指示を用いて、パケットの柔軟な変更を可能にする方法およびその装置
US11968119B1 (en) Service Function Chaining using uSID in SRv6
US20240129228A1 (en) Service function chaining using uSID in SRv6

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180615

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20180615

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180615

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190314

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190325

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190625

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190917

R150 Certificate of patent or registration of utility model

Ref document number: 6590545

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250