(57)【特許請求の範囲】
【請求項１】
受信パケットを処理する装置であって、
複数のパケットプロセッサと、
前記複数のパケットプロセッサの間で受信パケットを分配するセッションアクティブチェッカと、
前記セッションアクティブチェッカから対応する前記複数のパケットプロセッサの一つに送信されるパケットを格納する、それぞれ所定数のスロットを有する複数の先入れ先出し（ＦＩＦＯ）キューと、を備え、
前記セッションアクティブチェッカは、
前記複数のＦＩＦＯキューにおけるスロットに応じた複数のセッション識別子を格納するように構成されたセッションアクティブメモリと、
受信パケットと関連するセッションを識別するために受信パケットからセッション識別子を抽出する論理と、
前記複数のＦＩＦＯキューのいずれかに現在格納される前記識別されたセッションに属する他のパケットがあるかどうか判定するために、前記受信パケットから抽出されたセッション識別子を前記セッションアクティブメモリに格納されたセッション識別子と比較するコンパレータと、
前記複数のＦＩＦＯキューに現在格納される前記識別されたセッションに属するパケットがない場合、前記受信パケットを前記複数のパケットプロセッサのうちの選択されたパケットプロセッサに送信する論理と、を含み、
前記複数のＦＩＦＯキュー各々は、前記複数のパケットプロセッサのうちで対応するパケットプロセッサによって現在読み取り中および処理中のスロットを示す読取ポインタおよび次に転送されるパケットを受信する予定のスロットを示す書込ポインタを含み、前記受信パケットを、選択されたパケットプロセッサに送信する前記論理は、前記読取ポインタおよび前記書込ポインタの数値に基づいて、前記複数のＦＩＦＯキューのうちの所定のスロットが選択され、該スロットに前記受信パケットが転送される論理を有し、
前記識別されたセッションに属する他のパケットが現在前記複数のＦＩＦＯキューに格納されたと前記セッションアクティブチェッカが判定する場合、前記受信パケットを選択されたパケットプロセッサに送信する以前、前記セッションアクティブチェッカは、前記他のパケットの処理が完了するまで待機する、装置。
【請求項２】
請求項１の装置において、
前記セッションアクティブメモリは、パケットが前記複数のＦＩＦＯキューにおける対応するスロットに格納される場合に指示す、複数のセッション識別子それぞれと関連する有効ビットを格納する。
【請求項３】
請求項２の装置において、
前記セッションアクティブメモリに格納された有効ビットは、前記複数のＦＩＦＯキューと関連する前記読取ポインタおよび書込ポインタの値に従ってセットおよびリセットされる。
【請求項４】
請求項１の装置において、
複数の受信パケットを格納するように構成された入力バッファをさらに備え、
前記識別されたセッションに属する他のパケットが現在前記複数のＦＩＦＯキューに格納されると前記セッションアクティブチェッカが判定すると、前記セッションアクティブチェッカは一時的に受信パケットを格納し、前記入力バッファから他の受信パケットを読み出す。
【請求項５】
受信パケットを処理するプロセスであって、
少なくとも一つの受信パケットを入力バッファに保持する過程と、
対応する複数のパケットプロセッサで処理するためのパケットを、それぞれパケットを格納する所定数のスロットを有する複数の先入れ先出し（ＦＩＦＯ）キューに格納する過程と、
前記複数のＦＩＦＯキューにおけるスロットに応じた複数のセッション識別子をセッションアクティブメモリに格納する過程と、
前記受信パケットを前記入力バッファから前記複数のＦＩＦＯキューの一つへと送信するよりも先に、
前記受信パケットと関連するセッションを識別するために前記受信パケットからセッション識別子を抽出する過程と、
前記ＦＩＦＯキューに現在格納される前記識別されたセッションに属する他のパケットがあるかどうか判定するために、前記受信パケットから抽出されたセッション識別子を前記セッションアクティブメモリに格納された複数のセッション識別子と比較する過程と、を含み、
前記ＦＩＦＯキューに現在格納される識別されたセッションに属するパケットがない場合、前記ＦＩＦＯキューの選択された一つに前記受信パケットを送信する過程と、
を含み、
前記複数のＦＩＦＯキュー各々は、前記複数のパケットプロセッサのうちで対応するパケットプロセッサによって現在読み取り中および処理中のスロットを示す読取ポインタおよび次に転送されるパケットを受信する予定のスロットを示す書込ポインタを含み、前記受信パケットを送信する前記過程は、前記読取ポインタおよび前記書込ポインタの数値に基づいて、前記複数のＦＩＦＯキューのうちの所定のスロットが選択され、該スロットに前記受信パケットが転送される過程を有し、
前記識別されたセッションに属する他のパケットが前記複数のパケットプロセッサの一つによって現在処理中の場合、受信パケットを前記選択されたＦＩＦＯキューに送信する以前、前記他のパケットの処理が完了するまで待機する、プロセス。
【請求項６】
請求項５のプロセスにおいて、
前記セッションアクティブメモリは、前記複数のＦＩＦＯキューにおける対応するスロットにパケットが格納される場合に指示す、前記セッション識別子それぞれと関連する有効ビットを記憶する。
【請求項７】
請求項６のプロセスにおいて、
前記セッションアクティブメモリに格納された前記有効ビットは、前記複数のＦＩＦＯキューに関連する前記読取ポインタおよび前記書込ポインタの値に従ってセットおよびリセットする。
【請求項８】
請求項５のプロセスにおいて、
前記入力バッファ内の複数の受信パケットを格納する過程と、
前記識別されたセッションに属する他のパケットが前記複数のＦＩＦＯキューの一つに現在格納されると前記セッションアクティブチェッカが判定する場合には、前記受信パケットを一時的に保存するとともに前記入力バッファから別の受信パケットを読み出す。
【請求項９】
格納されたプログラミングコードを有する非一時的でコンピュータ読み取り可能な記憶媒体であって、プログラミングするのにフィールドプログラマブルゲートアレイが使われる場合、当該フィールドプログラマブルゲートアレイが受信パケットを処理する装置として構成され、前記装置は、
複数のパケットプロセッサと、
前記複数のパケットプロセッサの間で受信パケットを分配するセッションアクティブチェッカと、
前記セッションアクティブチェッカから対応する前記複数のパケットプロセッサの一つに送信されるパケットを格納する、それぞれ所定数のスロットを有する複数の先入れ先出し（ＦＩＦＯ）キューと、を備え、
前記セッションアクティブチェッカは、
前記複数のＦＩＦＯキューにおけるスロットに応じた複数のセッション識別子を格納するように構成されたセッションアクティブメモリと、
受信パケットと関連するセッションを識別するために受信パケットからセッション識別子を抽出する論理と、
前記複数のＦＩＦＯキューのいずれかに現在格納される前記識別されたセッションに属する他のパケットがあるかどうか判定するために、前記受信パケットから抽出されたセッション識別子を前記セッションアクティブメモリに格納されたセッション識別子と比較するコンパレータと、
前記複数のＦＩＦＯキューに現在格納される前記識別されたセッションに属するパケットがない場合、前記受信パケットを前記複数のパケットプロセッサのうちの選択されたパケットプロセッサに送信する論理と、を含み、
前記複数のＦＩＦＯキュー各々は、前記複数のパケットプロセッサのうちで対応するパケットプロセッサによって現在読み取り中および処理中のスロットを示す読取ポインタおよび次に転送されるパケットを受信する予定のスロットを示す書込ポインタを含み、前記受信パケットを、選択されたパケットプロセッサに送信する前記論理は、前記読取ポインタおよび前記書込ポインタの数値に基づいて、前記複数のＦＩＦＯキューのうちの所定のスロットが選択され、該スロットに前記受信パケットが転送される論理を有し、
前記識別されたセッションに属する他のパケットが現在前記複数のＦＩＦＯキューに格納されたと前記セッションアクティブチェッカが判定する場合、前記受信パケットを選択されたパケットプロセッサに送信する以前、前記セッションアクティブチェッカは、前記他のパケットの処理が完了するまで待機する、装置。
【請求項１０】
請求項９の非一時的でコンピュータ読み取り可能な記憶媒体において、
前記セッションアクティブメモリは、前記複数のＦＩＦＯキューにおいて対応する前記スロットにパケットが格納される場合に指示す、前記複数のセッション識別子それぞれと関連する有効ビットを格納する。
【請求項１１】
請求項１０の非一時的でコンピュータ読み取り可能な記憶媒体において、
前記セッションアクティブメモリに格納された前記有効ビットは、前記複数のＦＩＦＯキューに関連する読取ポインタおよび書込ポインタの数値に従ってセットおよびリセットされる。
【請求項１２】
請求項９の非一時的でコンピュータ読み取り可能な記憶媒体において、前記装置は、
複数の受信パケットを格納するように構成された入力バッファをさらに備え、
前記識別されたセッションに属する他のパケットが前記複数のＦＩＦＯキューの一つに現在格納されると前記セッションアクティブチェッカが判定する場合には、前記セッションアクティブチェッカは前記受信パケットを一時的に格納し、前記入力バッファから別の受信パケットを読み出す。
【請求項１３】
受信パケットを処理する装置であって、
複数のパケットプロセッサと、
受信パケットと関連するセッションを識別する論理と、
前記複数のパケットプロセッサのいずれかにより現在処理される識別されたセッションに属する他のパケットがあるかどうか判定する論理と、
現在処理中の識別されたセッションに属するパケットがない場合において前記複数のパケットプロセッサのうちの選択されたパケットプロセッサに前記受信パケットを送信する論理と、
を含むセッションアクティブチェッカと、
それぞれ前記セッションアクティブチェッカから前記複数のパケットプロセッサの対応する一つに送信されるパケットを格納するように構成された複数の先入れ先出し（ＦＩＦＯ）キューと、を備え、
前記複数のＦＩＦＯキュー各々は、前記複数のパケットプロセッサのうちで対応するパケットプロセッサによって現在読み取り中および処理中のスロットを示す読取ポインタおよび次に転送されるパケットを受信する予定のスロットを示す書込ポインタを含み、前記受信パケットを、選択されたパケットプロセッサに送信する前記論理は、前記読取ポインタおよび前記書込ポインタの数値に基づいて、前記複数のＦＩＦＯキューのうちの所定のスロットが選択され、該スロットに前記受信パケットが転送される論理を含み、
前記識別されたセッションに属する他のパケットが特定のパケットプロセッサによって現在処理されると前記セッションアクティブチェッカが判定する場合、前記特定のパケットプロセッサに対応するＦＩＦＯキューにおいてスロットが利用可能となるまで待機する、装置。
【請求項１４】
請求項１３の装置において、前記セッションアクティブチェッカは、
前記受信パケットからセッション識別子を抽出する論理と、
前記複数のパケットプロセッサのいずれかによる現在処理中のすべてのパケットのセッション識別子を格納するセッションアクティブメモリと、
前記受信パケットから抽出されたセッション識別子を、前記セッションアクティブメモリに格納された前記セッション識別子と比較するコンパレータと、
をさらに含む。
【請求項１５】
請求項１４の装置において、
前記セッションアクティブメモリは、前記複数のＦＩＦＯキューに格納されたすべてのパケットのためのセッション識別子を格納する。
【請求項１６】
請求項１５の装置において、
前記ＦＩＦＯキューのそれぞれは、パケットを格納する所定数のスロットを含み、
前記セッションアクティブメモリは、前記複数のＦＩＦＯキューにおける前記スロットに対応する複数のセッション識別子を格納するように構成されている。
【請求項１７】
請求項１６の装置において、前記セッションアクティブメモリは、前記複数のＦＩＦＯキューにおいて対応する前記スロットにパケットが格納される場合に指示す、前記複数のセッション識別子それぞれに関連する有効ビットを格納する。
【請求項１８】
請求項１７の装置において、
前記セッションアクティブメモリに格納された有効ビットは、前記複数のＦＩＦＯキューに関連した読取ポインタおよび書込ポインタの値に従ってセットおよびリセットされる。
【請求項１９】
受信パケットを処理するプロセスであって、
少なくとも一つの受信パケットを入力バッファに保持する過程と、
前記受信パケットを前記入力バッファから複数のパケットプロセッサの一つへと送信するよりも先に、
前記受信パケットに関連するセッションを識別する過程と、
前記複数のパケットプロセッサのいずれかにより現在処理中のセッションに属するパケットがあるかどうか判定する過程と、を含み、
現在処理されている前記識別されたセッションに属するパケットがない場合、複数のパケットプロセッサの選択された一つに前記受信パケットを送信する過程と、を含み、
前記複数のパケットプロセッサの対応する一つに送信されるパケットを格納するように構成された複数の先入れ先出し（ＦＩＦＯ）キューを備え、
前記複数のＦＩＦＯキュー各々は、前記複数のパケットプロセッサのうちで対応するパケットプロセッサによって現在読み取り中および処理中のスロットを示す読取ポインタおよび次に転送されるパケットを受信する予定のスロットを示す書込ポインタを含み、前記受信パケットを送信する前記過程は、前記読取ポインタおよび前記書込ポインタの数値に基づいて、前記複数のＦＩＦＯキューのうちの所定のスロットが選択され、該スロットに前記受信パケットが転送される過程を含み、
前記識別されたセッションに属する他のパケットが特定のパケットプロセッサによって現在処理中の場合、前記特定のパケットプロセッサに対応するＦＩＦＯキューにおいて空きスロットが利用可能になるまで待機し、その後前記受信パケットを前記特定のパケットプロセッサに送信する、プロセス。
【請求項２０】
請求項１９のプロセスにおいて、
複数のパケットプロセッサにより処理されたすべてのパケットのセッション識別子をセッションアクティブメモリに格納する過程をさらに含み、
セッションを識別する過程は、前記受信パケットからセッション識別子を抽出する過程を含み、
受信パケットから抽出された前記セッション識別子を前記セッションアクティブメモリに格納された前記複数のセッション識別子と比較する過程を含む複数のパケットプロセッサのいずれかにより現在処理される前記セッションに属する他のパケットがあるかどうか判定する過程を含む。
【請求項２１】
請求項２０のプロセスにおいて、
複数のＦＩＦＯキューは、前記複数のパケットプロセッサと結合し、それぞれのＦＩＦＯキューは、前記セッションアクティブチェッカから対応するプロセッサへ送信されたパケットを格納するように構成され、
前記セッションアクティブメモリは、前記複数のＦＩＦＯキューに格納されたすべてのパケットのためのセッション識別子を格納する。
【請求項２２】
請求項２１のプロセスにおいて、
前記ＦＩＦＯキューのそれぞれは、パケットを格納するために、所定数のスロットを含み、
前記セッションアクティブメモリは、前記複数のＦＩＦＯキューにおける前記スロットそれぞれに対応するセッション識別子を格納するように構成されている。
【請求項２３】
請求項２２のプロセスにおいて、
前記セッションアクティブメモリは、パケットが前記複数のＦＩＦＯキューの前記対応するスロットに格納される場合に指示す、前記セッション識別子のそれぞれと関連する有効ビットを格納する。
【請求項２４】
請求項２３のプロセスにおいて、
前記プロセスはさらに、前記複数のＦＩＦＯキューに関連する前記読取ポインタおよび書込ポインタの値に従って前記セッションアクティブメモリに格納された前記有効ビットのセットとリセットを含む。
【請求項２５】
格納されたプログラミングコードを有する非一時的でコンピュータ読み取り可能な記憶媒体であって、プログラミングするのにフィールドプログラマブルゲートアレイが使われる場合、当該フィールドプログラマブルゲートアレイが受信パケットを処理する装置として構成され、前記装置は、
複数のパケットプロセッサと、
受信パケットに関連するセッションを識別する論理と、
前記複数のパケットプロセッサのいずれかにより現在処理される識別されたセッションに属する他のパケットがあるかどうか判定する論理と、
現在処理中の識別されたセッションに属するパケットがない場合において前記複数のパケットプロセッサの選択された一つに前記受信パケットを送信する論理と、
を含むセッションアクティブチェッカと、
前記セッションアクティブチェッカから対応する前記複数のパケットプロセッサの一つに送信されるパケットを格納する、それぞれ所定数のスロットを有する複数の先入れ先出し（ＦＩＦＯ）キューと、を備え、
前記複数のＦＩＦＯキュー各々は、前記複数のパケットプロセッサのうちで対応するパケットプロセッサによって現在読み取り中および処理中のスロットを示す読取ポインタおよび次に転送されるパケットを受信する予定のスロットを示す書込ポインタを含み、前記受信パケットを、選択されたパケットプロセッサに送信する前記論理は、前記読取ポインタおよび前記書込ポインタの数値に基づいて、前記複数のＦＩＦＯキューのうちの所定のスロットが選択され、該スロットに前記受信パケットが転送される論理を含み、
前記セッションアクティブチェッカが、前記識別されたセッションに属する他のパケットが特定のパケットプロセッサによって現在処理中と判定する場合、前記セッションアクティブチェッカは、前記特定のパケットプロセッサに対応するＦＩＦＯキューにおいて空きスロットが利用可能になるまで待機し、その後前記受信パケットを前記特定のパケットプロセッサに送信する、装置。
【請求項２６】
請求項２５のコンピュータ読み取り可能な記憶媒体において、前記装置は、
前記受信パケットからセッション識別子を抽出する論理と、
前記複数のパケットプロセッサのいずれかによる現在処理中のすべてのパケットのセッション識別子を格納するセッションアクティブメモリと、
前記受信パケットから抽出されたセッション識別子を、前記セッションアクティブメモリに格納された前記セッション識別子と比較するコンパレータと、
をさらに備える。
【請求項２７】
請求項２６のコンピュータ読み取り可能な記憶媒体において、前記装置は、
前記セッションアクティブメモリは、前記複数のＦＩＦＯキューに格納されたすべてのパケットのためのセッション識別子を格納する。
【請求項２８】
請求項２６のコンピュータ読み取り可能な記憶媒体において、前記装置は、
前記ＦＩＦＯキューのそれぞれは、パケットを格納する所定数のスロットを含み、
前記セッションアクティブメモリは、前記複数のＦＩＦＯキューにおける前記スロットに対応する複数のセッション識別子を格納するように構成されている。
【請求項２９】
請求項２６のコンピュータ読み取り可能な記憶媒体において、前記セッションアクティブメモリは、前記複数のＦＩＦＯキューにおいて対応する前記スロットにパケットが格納される場合に指示す、前記複数のセッション識別子それぞれに関連する有効ビットを格納する。
【請求項３０】
請求項２９のコンピュータ読み取り可能な記憶媒体において、
前記セッションアクティブメモリに格納された有効ビットは、前記複数のＦＩＦＯキューに関連した読取ポインタおよび書込ポインタの値に従ってセットおよびリセットされる。
【請求項３１】
請求項１〜４、９〜１８及び２５〜３０のうちいずれかに記載の装置において、
セッション構成情報およびセッション統計を格納するメモリ、をさらに備え、
前記パケットプロセッサは、前記セッションアクティブチェッカから配信されるパケット又は前記ＦＩＦＯキューに格納されていたパケットを処理し、既に前記メモリに格納されているセッション情報およびセッション統計に基づいて処理中のパケットが正しく受信されたか否かを決定すると共に、それまでのセッション情報およびセッション統計を更新する、装置。
【請求項３２】
請求項５〜８及び１９〜２４のうちいずれかに記載のプロセスにおいて、
セッション構成情報およびセッション統計を格納するメモリ、をさらに備え、
前記パケットプロセッサは、前記セッションアクティブチェッカから配信されるパケット又は前記ＦＩＦＯキューに格納されていたパケットを処理し、既に前記メモリに格納されているセッション情報およびセッション統計に基づいて処理中のパケットが正しく受信されたか否かを決定すると共に、それまでのセッション情報およびセッション統計を更新する、プロセス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、通信ネットワークを検査するための受信パケットの処理に関する。
【０００２】
［著作権とトレードドレスの表示］
本特許文献の開示の一部は、著作権保護の対象となるマテリアルを含む。本特許文献は、所有者のトレードドレスである事項またはなり得る事項を示しおよび／または記載し得る。著作権およびトレードドレス権の所有者は、特許商標庁のファイルまたは記録にあることから、本特許開示について任意の者によるファクシミリによる複製に対しては異議を有さないが、他の場合にはいかなる著作権およびトレードドレス権もすべて留保する。
【背景技術】
【０００３】
通信ネットワークの多くの種類において、送信されるべき各メッセージは、固定長または可変長の部分に分割される。これらの部分は、パケット、フレーム、セル、データグラム、またはデータユニットと呼ばれることがあり、本文献においては、これらのすべてをパケットと称する。メッセージをパケットとして送信する通信ネットワークは、パケット交換ネットワークと呼ばれる。
【０００４】
各パケットは、一般にパケットのボディと呼ばれる、オリジナルメッセージの一部を含む。それに加えて、各パケットは、一般にパケットヘッダと呼ばれる、識別およびルーティングの情報を含む。パケットは、多数のスイッチまたはノードを介し、ネットワークを通じて個々に送信され、次に、ターゲット装置またはエンドユーザに配信される前に、最終送信先においてパケットヘッダに含まれる情報を用いて再構築される。受信先において、再構築されたメッセージは、ユーザの機器と互換性のある形式でエンドユーザに渡される。
【０００５】
ほとんどのパケット交換ネットワークは、プロトコルスタックとして公知の、インタフェースされたレイヤの集合において実現される、確立されたプロトコルのセットに従って動作する。送信プロセスにおけるプロトコルスタックの各レイヤは、受信側プロセスにおける対応するレイヤに情報を提供するそれぞれのヘッダを、パケットに追加してもよい。従って、パケットが送信システム上のプロトコルスタックを下方に通過する際に、パケットは、各レイヤにおいて更なるヘッダを得てもよい。スタックの最下部において、送信プロセスは、パケットをフレーミングし、ネットワークを通じてパケットを送信先に向けて物理的に送信してもよい。パケットがその送信先に達すると、パケットは、送信先システムのプロトコルスタックを上方に通過することになる。送信先システムにおけるプロトコルスタックの各レイヤは、その関連するヘッダから有益な情報を得てもよく、処理のために次のレイヤにパケットを渡す前に、そのヘッダをパケットから分離することになる。
【０００６】
パケット交換ネットワーク用の様々な規格が公知である。これらのなかで最も公知なものの１つであるＴＣＰ／ＩＰプロトコル群は、インターネットおよび他のＩＰネットワークにわたるパケットの確実な送信を管理するために一般的に用いられるものである。次に一般的に用いられるプロトコルは、ＵＤＰ（ユーザデータグラムプロトコル）である。ＴＣＰとは異なり、ＵＤＰは、エラーリカバリまたは信頼性メカニズムを提供しない。この単純性により、ＵＤＰパケットは、ＴＣＰパケットよりも短いヘッダを有するので、より少ないシステムリソースを消費する。他の用途のなかでも、ＵＤＰは、リアルタイムの音声またはビデオコンテンツを送信するために用いられ得る。
【０００７】
プロトコルスタックの上位レベルは、アプリケーションレイヤである。最も公知のアプリケーションレイヤプロトコルは、ワールドワイドウェブ上でページを通信するために一般に使用されるＨＴＴＰ（ハイパーテキストトランスポートプロトコル）であり得る。別の重要なアプリケーションレイヤプロトコルは、リアルタイム特性を有するデータを配信するために一般に使用されるＲＴＰ（リアルタイムトランスポートプロトコル）である。ＲＴＰの一般的な用途は、対話型セッションに参加する１名以上の受信者に音声またはビデオコンテンツを配信することである。ＲＴＰは、ＶｏＩＰ（インターネットプロトコルの上の音声）呼び出しを配信するために一般に使用される。ＲＴＰは、通常はＵＤＰとともに使われるが、ＴＣＰまたは他のトランスポートレイヤプロトコルとともに使われてもよい。ＲＴＰパケットは、順番に送信され、（適切なシーケンスを再構築するために受信において使われ得る）埋め込まれたシーケンス番号および／またはタイムスタンプを含む。
【０００８】
ネットワークを使用する前に、ネットワーク、およびネットワークに含まれるネットワーク機器、ネットワーク媒体、ネットワークセグメント、およびネットワークアプリケーションは、良好な操作を確実にするために検査され得る。ネットワークの媒体、セグメント、装置およびアプリケーションは、例えば、意図された通りに機能し、サポートされるプロトコルに準拠し、予想されるトラフィック要求に耐えられる、ということを確実にするために検査され得る。そのような検査はまた、すでに展開されているネットワーク機器、ネットワークセグメント、およびネットワークアプリケーション上で実行されてもよい。
【０００９】
通信ネットワークに含まれる交換ネットワークまたはネットワーク機器を検査するために、多くの場合、ネットワーク検査システムは、ネットワーク経路またはネットワーク装置の回線速度または最大可能データ転送速度に近いかまたは等しいデータ転送速度を有するネットワークトラフィックを、送信および／または受信することが望ましい。ネットワーク検査システムはまた、ネットワーク性能統計を蓄積するために、受信されたパケットの一部またはすべてを処理してもよい。受信されたパケットを処理するために、マルチプロセッサが必要とされ得る。
【００１０】
単一の発信源から単一の送信先へ送信され、情報の単体に属する一連のパケットは、本文献において「セッション」と称される。セッションは、例えば、単一方向のインターネット通話、またはストリーミングオーディオまたは映像伝送であってもよい。単一のネットワーク経路またはネットワーク機器は、数千または数万ものセッションを並行して送信する能力があってもよい。本出願において、「並行して」は、「同一の時間の範囲内で」を意味し、「同時に」は、「正確に同一の時刻において」を意味する。
【図面の簡単な説明】
【００１１】
【図１】ネットワーク検査環境の略図である。
【図２】受信されたパケットを処理するためのプロセッサのブロック図である。
【図３】セッションアクティブメモリの例示的な構成図である。
【図４】受信されたパケットを処理するためのプロセスのフローチャートである。
【図５】受信されたパケットを処理するためのプロセスのフローチャートである。
【図６】受信されたパケットを処理するためのプロセスのフローチャートである。
【００１２】
本文献の記述を通して、ブロック図に見られる構成要素は、３桁の参照番号が割り当てられており、最上位桁の数字は図番号で、下位２桁の数字は構成要素に特有のものである。図とともに記載されていない構成要素は、同じ下位２桁の数字の付いた参照番号を有する前述の構成要素としての同じ特徴や機能を有すると推定できる。
【発明の概要】
【００１３】
［装置の説明］
図１は、ネットワークを検査用の環境１００のブロック図を示す。環境は、ネットワークカード１１４を介して通信経路１９２を通じてネットワーク１９０に接続される、ネットワーク検査システム１１０を含む。ネットワーク検査システム１１０は、性能アナライザ、適合性検証システム、ネットワークアナライザ、データユニットブラスタ、ネットワーク管理システム、これらの組み合わせ、および／または他のもののうち、１つ以上のものを含むか、あるいは１つ以上のものであり得る。ネットワーク検査システム１１０は、通信回線または通信システムの特性および性能（ネットワークトラフィックの処理能力、ドロップされたデータユニットの数、ジッタ、および他の多くのものを含む）を、評価および／または測定するために用いてもよい。ネットワーク検査システム１１０は、サーバおよびネットワーク装置（例えばルータ、ゲートウェイ、ロードバランサ等）ならびにネットワーク応用プログラムおよび他のソフトウェアの性能を評価するために用いてもよい。
【００１４】
ネットワーク検査システム１１０は、図１に示すように、シャーシまたはカードラックの形であってもよく、または統合された装置であってもよい。それに代わって、ネットワーク検査システム１１０は、例えばネットワーク解析、ネットワーク適合性試験および他の作業を提供するように協同する２つ以上のシャーシ等、多数の個別の装置を備えてもよい。ネットワーク検査システム１１０のシャーシは、１つ以上のネットワークカード１１４およびバックプレーン１１２を備えてもよい。ネットワークカード１１４は、バックプレーン１１２に接続されてもよい。１つ以上のネットワークカード１１４は、ネットワーク検査システム１１０に含まれてもよい。ネットワークカード１１４は、ネットワーク検査システム１１０に恒久的に設置されていてもよく、着脱自在であってもよく、またはそれらの組み合わせであってもよい。
【００１５】
ネットワークカード１１４は、通信経路１９２を介してネットワーク１９０に接続される。通信経路１９２を通じた１つの接続のみが示されるが、ネットワークカード１１４の各々は、通信経路１９２等の通信経路を通じてネットワーク１９０に接続されてもよい。通信経路は、例えばイーサネット（登録商標）ケーブル、光ファイバーケーブルおよび同軸ケーブル等の有線回線であってもよく、無線であってもよい。
【００１６】
ネットワーク検査システム１１０およびネットワークカード１１４は、リアルタイムトランスポートプロトコル（ＲＴＰ）およびユーザデータグラムプロトコル（ＵＤＰ）を含む１つ以上の周知の上位レベル通信規格またはプロトコルをサポートしてもよく、例えば、１０ギガビットおよび／または１００ギガビットイーサネット（登録商標）規格、ファイバーチャネル規格、ＩＥＥＥ８０２イーサネット（登録商標）規格の１つ以上の種類、Ｓｏｎｅｔ、ＣＤＭＡ、非同期転送モード（ＡＴＭ）、Ｘ．２５、統合サービスデジタルネットワーク（ＩＳＤＮ）、トークンリング、フレームリレー、ポイントツーポイントプロトコル（ＰＰＰ）、ファイバー分布データインタフェース（ＦＤＤＩ）、ユニバーサルシリアルバス（ＵＳＢ）、ＩＥＥＥ１３９４（別名ｉ．ｌｉｎｋ（登録商標）およびファイアワイア（登録商標））、およびブルートゥース等の、１つ以上の周知の下位レベル通信規格またはプロトコルをサポートしてもよく、商標つきのプロトコルをサポートしてもよく、他のプロトコルをサポートしてもよい。
【００１７】
各ネットワークカード１１４は、単一の通信プロトコルをサポートしてもよく、多数の関係するプロトコルをサポートしてもよく、または多数の無関係なプロトコルの組み合わせをサポートしてもよい。
【００１８】
本文献で用いられる用語「ネットワークカード」は、ラインカード、検査カード、分析カード、ネットワークラインカード、ロードモジュール、インタフェースカード、ネットワークインタフェースカード、データインタフェースカード、データユニットエンジンカード、サービスカード、スマートカード、スイッチカード、リレーアクセスカード、ＣＰＵカード、ポートカード等を含む。特に、プロセッサがネットワークカードに含まれる場合には、ネットワークカード１１４は、ブレードと呼ばれることがある。ネットワークカード１１４は、１つ以上のプロセッサ１２０および１つ以上のネットワーク通信装置（ＮＣＵ）１１８を含んでもよい。
【００１９】
バックプレーン１１２は、ネットワークカード１１４のためのバスまたは通信媒体としての役割を果たしてもよい。バックプレーン１１２はまた、ネットワークカード１１４に電力を提供してもよい。
【００２０】
ネットワーク検査システム１１０には、コンピュータ（図示せず）が接続されてもよい。コンピュータは、ネットワーク検査システム１１０に対してローカルであってもリモートであってもよい。別の実施形態において、ネットワーク検査システム１１０はまた、シャーシがコンピュータワークステーションとしての役割を果たすことを可能にするＣＰＵを、カード、マザーボードまたはバックプレーン上に備えてもよい。ネットワーク検査システム１１０にはまた、図１に示さないディスプレイおよび１つ以上のユーザ入力デバイスが接続されてもよい。
【００２１】
ネットワーク検査システム１１０は、パーソナルコンピュータ、サーバ、またはワークステーション等のコンピュータ、ならびに図示するシャーシにおいて実現されてもよい。ネットワーク検査システム１１０は、単独で、または１つ以上の他のネットワーク検査システム１１０と併用して使われてもよい。ネットワーク検査システム１１０は、ネットワーク１９０内の装置１９５に対して、物理的に隣接しておよび／またはリモートに配置されてもよい。ネットワーク検査システム１１０は、ネットワーク１９０および／またはその部分、ネットワーク対応の装置１９５、ネットワーク対応の装置１９５上で実行するアプリケーションプログラム、および／またはネットワーク１９０によって提供されるサービス、および／またはネットワーク対応の装置１９５を、検査および評価するために用いてもよい。
【００２２】
ネットワーク１９０は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、ストレージエリアネットワーク（ＳＡＮ）、またはこれらの組み合わせであってもよい。ネットワーク１９０は、有線、無線、またはこれらの組み合わせであってもよい。ネットワーク１９０は、インターネットを含んでもよく、またはインターネットであってもよい。ネットワーク１９０は、パブリックネットワークまたはプライベートネットワークであってもよく、分離した検査ネットワークであってもよく、データユニット交換ネットワークであってもよく、回路交換ネットワークであってもよく、これらの組み合わせであってもよい。ネットワーク１９０は、伝えるデータユニットのための多数の物理的経路および論理的経路を提供する単一または多数のノードから成ってもよい。
【００２３】
ネットワーク能力のある装置１９５は、ネットワーク１９０を通じて通信する能力、および／またはネットワーク１９０上のネットワークトラフィックを受信、挿入、遅延、ドロップおよび／または変更する能力のある装置であってもよい。ネットワーク対応の装置１９５は、コンピューティング装置（例えばコンピュータワークステーション、パーソナルコンピュータ、サーバ、ポータブルコンピュータ、セットトップボックス、ビデオゲームシステム、パーソナルビデオレコーダ、電話、携帯情報端末（ＰＤＡ）、コンピューティングタブレット等）、周辺機器（例えばプリンタ、スキャナ、ファクシミリ装置等）、ネットワーク対応の記憶装置（例えばネットワーク接続ストレージ（ＮＡＳ）およびストレージエリアネットワーク（ＳＡＮ）装置等のディスクドライブを含む）、試験装置（例えば分析装置、ネットワーク適合性システム、エミュレーションシステム、ネットワークモニタ装置、およびネットワークトラフィックジェネレータ）、およびネットワーク装置（例えばルータ、リレー、ファイアウォール、ハブ、スイッチ、ブリッジ、トラフィックアクセラレータ、およびマルチプレクサ）であってもよい。それに加えて、ネットワーク対応の装置１９５は、ネットワークを通じて通信する能力のある、冷蔵庫、洗濯機等の家庭電化器具、ならびに住宅用または商業用の暖房、換気および空調（ＨＶＡＣ）システム、アラームシステム、および他の装置またはシステムを含んでもよい。ネットワーク対応の装置１９５のうちの１つ以上は、検査される装置であってもよく、これを被検査装置と呼ぶこともある。
【００２４】
ネットワーク検査システム１１０のハードウェア部品およびファームウェア部品は、本文献に記載される機能および特徴を提供するための、様々な特殊化された装置、回路およびインタフェースを含んでもよい。プロセッサ１２０およびＮＣＵ１１８は、１つ以上のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、プログラマブルロジックアレイ（ＰＬＡ）、他の種類の装置、およびこれらの組み合わせとして実現されてもよい。本文献に記載される機能および特徴は、全体的にあるいは部分的に、コンピュータ上で動作するソフトウェアにおいて実現されてもよく、ファームウェア、アプリケーションプログラム、アプレット（例えばＪａｖａ（登録商標）アプレット）、ブラウザプラグイン、ＣＯＭオブジェクト、ダイナミックリンクライブラリ（ＤＬＬ）、スクリプト、１つ以上のサブルーチン、デバイスドライバ、またはオペレーティングシステムのコンポーネントまたはサービスという形をとってもよい。ソフトウェアは、少なくとも部分的に、コンピュータ可読記憶媒体上に格納されてもよい。本発明およびその機能のハードウェアおよびソフトウェアは、分散型であってもよい。本文献に記載されるシステムおよび装置を達成するために、追加のおよびより少数の、装置、モジュール、またはソフトウェア、ハードウェアおよびデータ構造の他の組み合わせを用いてもよい。
【００２５】
ここで図２を参照し、受信されたパケットを処理するためのプロセッサ２２０のブロック図を示す。プロセッサ２２０は、システム１１０等のネットワーク検査システム内部のラインカード上に配置されたプロセッサ１２０等の、プロセッサの全体または一部であってもよい。
【００２６】
プロセッサ２２０は、複数のパケットプロセッサ２３２Ａ、２３２Ｂ、…２３２Ｎを含んでもよい。各パケットプロセッサ２３２Ａ乃至Ｎは、任意の瞬間において、単一のパケットを処理してもよい。各パケットプロセッサ２３２Ａ乃至Ｎは、処理待ちパケットを格納するために、関連する先入れ先出し（ＦＩＦＯ）キュー２３４Ａ、２３４Ｂ、…２３４Ｎを有してもよい。各ＦＩＦＯキュー２３４Ａ乃至Ｎは、処理待ちのパケットを保持するために、複数の記憶領域またはスロット（時間枠）を有してもよい。
【００２７】
パケットを処理するために、各パケットプロセッサ２３２Ａ乃至Ｎは、パケットが属する特定のセッションを示すセッション識別子をパケットから抽出してもよい。例えば、セッション識別子は、パケットのＩＰヘッダ部分からのＩＰ宛先アドレスと、パケットのＵＤＰヘッダ部分からの宛先ポート番号との組み合わせであってもよい。パケットヘッダおよび内容の他の部分は、パケットが属するセッションを識別するために用いてもよい。
【００２８】
パケットプロセッサ２３２Ａ乃至Ｎは、次にセッション構成情報およびセッション統計２４４をメモリ２４０から読み出してもよい。メモリ２４０は、共通のメモリコントローラ２３６を介して、すべてのパケットプロセッサ２３２Ａ乃至２３２Ｎによって共有されてもよい。セッション構成およびセッション統計を読み出すために、パケットプロセッサ２３２Ａ乃至Ｎは、セッション識別子を短いアドレスに変換するハッシュ関数を最初に用いてもよく、短いアドレスは、メモリ２４０に格納されたハッシュルックアップテーブル２４２にアクセスするために用いてもよい。ハッシュルックアップテーブル２４２は、同じくメモリ２４０に格納された適切なセッション構成情報およびセッション統計２４４に対するポインタを提供してもよい。
【００２９】
ひとたびセッション構成情報が読み出されると、パケットプロセッサ２３２Ａ乃至Ｎは、処理中のパケットが正しく受信されたか否かを決定してもよい。例えば、セッション構成情報は、セッションにおいて予想される次のパケットのシーケンス番号を含んでもよい。パケットプロセッサ２３２Ａ乃至Ｎは、処理中のパケットからシーケンス番号を抽出してもよく、処理中のパケットが予想の順序で受信されたか否かを決定してもよい。パケットプロセッサ２３２Ａ乃至Ｎはまた、処理中のパケットが正しく受信されたか否かを決定するために、処理中のパケット内の１つ以上のチェックサムを確認してもよく、他のチェックおよび比較を実行してもよい。
【００３０】
パケットプロセッサ２３２Ａ乃至２３２Ｎは、次に、メモリ２４０に格納されたセッション構成情報およびセッション統計のすべてまたは一部を更新してもよい。例えば、予想されるパケットシーケンス番号がセッション構成情報に含まれる場合には、シーケンス番号は、処理中のパケットの到着を反映するように更新される必要があり得る。セッション統計は、例えば受信されたパケットの合計数、エラー回数、および適切に更新されなければならない障害パケットの数等の、統計データを含んでもよい。セッション統計はまた、例えば平均または最大の待ち時間、および／または各パケットが受信された後に更新され得るジッタ等の、定量的性能データを含んでもよい。
【００３１】
同一のセッションからの２つのパケットが、パケットプロセッサ２３２Ａ乃至Ｎのうちの２つによって並行してまたは部分的に並行して処理される場合には、潜在的問題が生じることがある。例えば、パケットプロセッサ２３２Ａが、特定のセッションからのパケットを処理中であり、パケットプロセッサ２３２Ａが終了する前に、パケットプロセッサ２３２Ｂが同一のセッションからのパケットを処理し始める、と想定する。この場合、パケットプロセッサ２３２Ａがデータを更新する前に、パケットプロセッサ２３２Ｂは、メモリ２４０からセッション構成情報およびセッション統計の一部またはすべてを読み取り得る。従って、パケットプロセッサ２３２Ｂによって処理されているパケットは、順番誤りで受信されたものである、という誤った決定がなされ得る。更に、パケットプロセッサ２３２Ｂがセッション統計を更新すると、パケットプロセッサ２３２Ａによって処理されたパケットのセッション統計への寄与が失われ得る。
【００３２】
更に例えば、パケットプロセッサ２３２Ａによって処理されているパケットが、セッションにおけるパケット番号１００であると想定する。パケットプロセッサ２３２Ａは、パケット番号１００が次に予想され、すでに９９個のパケットが受信された、ということを示すセッション構成情報を読み取り得る。パケット１００の処理終了後、パケットプロセッサ２３２Ａは、パケット１０１が次に予想され、１００個のパケットが受信された、ということを示すようにメモリ内の情報を更新し得る。しかしながら、パケットプロセッサ２３２Ｂが、セッションのパケット１０１を処理しながら、パケットプロセッサ２３２Ａによって更新される前のセッション構成情報およびセッション統計を読み取る場合には、エラーが生じ得る。この場合、パケットプロセッサ２３２Ｂはまた、パケット番号１００が次に予想され、すでに９９個のパケットが受信された、ということを示すセッション構成情報を読み取り得る。パケット１０１の処理終了後、パケットプロセッサ２３２Ｂは、パケット１０２が次に予想されるということを正しく示すように、メモリ内の情報を更新する。しかしながら、パケットプロセッサ２３２Ｂは、パケット１０１が順番誤りで受信され、パケット１００が失われ、合計１００個のパケットが受信された、というふうに誤って示すようにメモリの情報を更新することになる。
【００３３】
上記段落に記載したそのようなエラーを回避するために、セッションから１つのパケットのみを並行して処理するようにしてもよい。セッションからの１つのパケットのみを処理することを確実にする従来の方法は、パケットの処理を開始する前に、各パケットプロセッサ２３２Ａ乃至Ｎに、他のパケットプロセッサとの確認を行わせることである。しかしながら、この方法は、プロセッサ間の通信経路を必要とするので、各パケットプロセッサの処理速度を低下させ得る。
【００３４】
別の従来の方法は、各セッションを特定のパケットプロセッサに割り当てることである。例えば、所与のセッションにおけるすべてのパケットが同一のパケットプロセッサに常にルーティングされるように、受信されたパケットに関連するセッション識別子は、ハッシュ関数または他の技術を用いて、プロセッサ識別子に変換されてもよい。この方法は、セッションにおけるパケットが、常に受信された順序で順次処理される、ということを保証する。しかしながら、この方法は、他のプロセッサが活用されていない間に、１つのプロセッサに過負荷がかかる、という危険を冒す。
【００３５】
それに加えて、セッションごとに、パケットが現在処理中であるか否かを示すフラグを保持するために、メモリ２４０または別のメモリの一部が提供されてもよい。各プロセッサは、パケットを処理する前に、パケットからセッション識別を抽出してメモリにアクセスすることにより、セッションに属する別のパケットが現在処理中であるか否かを決定してもよい。セッションに属する別のパケットが進行中である場合には、パケットプロセッサは、単にアイドル状態であってもよく、処理中のパケットの処理が完了するまで、繰り返しメモリにアクセスしてもよい。この方法は、アイドル状態のパケットプロセッサの平均処理速度を低下させるので、メモリへのアクセスを試みる他のパケットプロセッサによるパケットの処理を妨げ得る。更に、ネットワークまたはネットワーク装置の網羅的な検査は、数万または数十万のセッションに関わり得るので、各セッションの処理状態を格納するために非常に多くのメモリが必要となり得る。
【００３６】
より優れた解決策として、同一のセッションから２つ以上のパケットが並行して処理されることを防止するために、プロセッサ２２０は、セッションアクティブチェッカ２２５を含んでもよい。セッションアクティブチェッカ２２５は、受信されたパケットが属するセッションを識別するように適合させられてもよく、それにより、セッションからの他の任意のパケットがパケットプロセッサ２３２Ａ乃至Ｎのいずれかによって処理中であるか否かを決定し、同一のセッションから２つのパケットを並行して処理することを防止するように受信されたパケットを処理する。この文脈において、「処理中」または「進行中」のものは、複数のＦＩＦＯキュー２３４Ａ乃至２３４Ｎのいずれかに格納されるすべてのパケットを含む。受信されたパケットがＦＩＦＯキュー２３４Ａ乃至Ｎのうちの１つに送信される前に、セッションアクティブチェッカ２２５は、新たに受信された各パケットに対してこれらの機能を実行し得るので、セッションアクティブチェッカ２２５は、パケットプロセッサ２３２Ａ乃至Ｎの操作を妨げない。セッションアクティブチェッカ２２５を組み込むことにより、任意のパケットプロセッサが任意のセッションからのパケットを確実に処理し得るので、受信されたパケットの順序に関係なく、パケットプロセッサアレイの完全な利用が可能となる。
【００３７】
セッションアクティブチェッカ２２５は、フィルタ２２１、入力バッファ２２２、セッションＩＤエクストラクタ２２６、セッションアクティブメモリ２２８、コンパレータ２２７、およびパケット転送論理２２９を備えてもよい。入力バッファ２２２は、ＮＣＵ（図示せず）または任意フィルタ２２１から受信されたパケットを一時的に格納してもよい。フィルタ２２１は、プロセッサ２２０によって処理されない予定のパケットを捨ててもよい。例えば、フィルタ２２１は、別のプロセッサ（図示せず）によって処理される予定のパケットを捨ててもよい。フィルタ２２１は、入力バッファ２２２に到達するパケットのうち選択された部分のみ（例えばＲＴＰパケットのみ）を通過させてもよい。更に、フィルタ２２１は、チェックサムエラーまたはＣＲＣエラーのために少なくとも部分的に不明瞭になっているパケットを捨ててもよい。フィルタ２２１がない場合には、入力バッファ２２２は、ＮＣＵから到達するすべてのパケットを受信してもよい。入力バッファは、先入れ先出しキューとして機能してもよい。入力バッファは、例えば、高速なスタティックランダムアクセスメモリ、読取ポインタおよび書込ポインタによって実現されてもよい。読出しポインタおよび書込みポインタは、それぞれ、パケットデータの読込みまたは書込みが行われるべきアドレスを保持するレジスタであってもよい。入力バッファから読み取られる次のパケットは、キューの「トップ」パケットと称することがある。入力バッファ２２２のために他のメモリ構成を用いてもよい。
【００３８】
セッションＩＤエクストラクタ２２６は、入力バッファのトップパケットが属するセッションを識別してもよい。セッションＩＤエクストラクタ２２６は、入力バッファ２２２内のトップパケットに組み込まれたセッション識別子を抽出して一時的に保持する論理を備えてもよい。本出願において、「論理」という用語は、組み合わせ論理回路、ラッチおよびレジスタ等の順次素子、適応論理回路、および／またはファームウェアによって制御されるプロセッサ、および他のデジタル回路を含むことを意図する。セッション識別子は、トップパケットの１つ以上のフィールドの部分またはすべてであってもよい。例えば、セッション識別子は、ＩＰ宛先アドレスおよびＵＤＰ宛先ポートのすべてまたは部分から成ってもよい。セッションＩＤエクストラクタは、論理を含んでもよく、当該論理は、パケットの適切なフィールドを読み取り、読み取られたフィールドのすべてまたは部分を連結または組み合わせてセッション識別子を形成する。
【００３９】
コンパレータ２２７は、セッションＩＤエクストラクタ２２６によって抽出されたセション識別子を、セッションアクティブメモリ２２８に格納された複数のセッション識別子と比較してもよい。セッションアクティブメモリ２２８は、パケットプロセッサ２３２Ａ乃至Ｎのいずれかによって現在「進行中」のすべてのパケット（ＦＩＦＯキュー２３４Ａ乃至Ｎのいずれかにおいて現在保持されているすべてのパケットであり得る）のセッション識別子を格納してもよい。
【００４０】
コンパレータ２２７は、抽出されたセッション識別子と、セッションアクティブメモリ２２８に格納された複数のセッション識別子とを順次比較する、単一の比較回路を備えてもよい。コンパレータ２２７は、２つ以上の比較が並行して行われ得るように、２つ以上の比較回路を備えてもよい。コンパレータ２２７は、抽出されたセッション識別子とセッションアクティブメモリ２２８に格納されたすべてのセッション識別子との同時比較を可能にするのに充分な比較回路を備えてもよい。
【００４１】
抽出されたセッション識別子が、セッションアクティブメモリ２２８に格納された複数のセッション識別子のいずれとも一致しない場合には、コンパレータ２２７は、トップパケットと同一のセッションに属する他のパケットがパケットプロセッサ２３２Ａ乃至Ｎによって処理されていない、と決定してもよい。この場合、パケット転送論理２２９は、パケットプロセッサ２３２Ａ乃至Ｎの１つを選択することにより、トップパケットを処理し、選択されたパケットプロセッサに関連するＦＩＦＯキュー２３４Ａ乃至Ｎに対してトップパケットを転送してもよい。パケット転送論理２２９は、関連するＦＩＦＯキューにおいて最も少ないパケットを有するパケットプロセッサ２３２Ａ乃至Ｎを選択してもよい。パケットプロセッサを選択するための他の理論またはアルゴリズムを用いてもよい。選択されたＦＩＦＯキュー２３４Ａ乃至Ｎにトップパケットを送信後または送信中に、パケット転送論理２２９は、このセッションが現在「進行中である」ことを示すために、トップパケットのセッション識別子をセッションアクティブメモリ２２８に書き込んでもよい。パケット転送論理２２９はまた、パケットの処理が完了する時間を決定してもよく、関連するセッション識別子をセッションアクティブメモリ２２８から除去してもよい。
【００４２】
抽出されたセッション識別子が、セッションアクティブメモリ２２８に格納された複数のセッション識別子の１つと一致する場合には、コンパレータ２２７は、トップパケットと同一のセッションに属する第２パケットが「進行中」であると決定してもよい。この場合、セッションアクティブチェッカ２２５は、トップパケットをＦＩＦＯキュー２３４Ａ乃至Ｎの１つに送信する前に、第２パケットの処理が完了するのを待って一時停止するように適合させられてもよい。コンパレータ２２７が、トップパケットと同一のセッションに属する第２パケットが「進行中」であると決定した場合には、セッションアクティブチェッカ２２５は、第２パケットを現在処理中の複数のパケットプロセッサ２３２Ａ乃至Ｎのパケットプロセッサを識別するように適合させられてもよい。転送論理２２９は、キューが空きスロットを有する場合には、識別されたパケットプロセッサに関連するＦＩＦＯキュー２３４Ａ乃至Ｎにトップパケットを送信してもよい。識別されたパケットプロセッサに関連するＦＩＦＯキューが、空きスロットを有しない場合には、転送論理２２９は、そのＦＩＦＯキューにおけるスロットが利用可能になるまで待ってもよい。
【００４３】
コンパレータ２２７が、トップパケットと同一のセッションに属する第２パケットが「進行中」であると決定した場合には、セッションアクティブチェッカ２２５は、そのトップパケットをスキップし、入力バッファ２２２における次のパケットに移動するように適合させられてもよい。例えば、アクティブセッションは、そのトップパケットを、入力バッファ２２２における次のパケットと論理的に交換してもよい。この交換は、入力バッファメモリ内でトップパケットを再配置することによってではなく、ポインタ値を変えることによって、またはトップパケットをスキップされたパケットとして識別するフラグをセットすることによって、達成されてもよい。セッションアクティブチェッカは、スキップされたパケットを一時的に保持するスキップパケットメモリ（図２に図示せず）を含んでもよい。
【００４４】
プロセッサ２２０のすべてまたは部分（セッションアクティブチェッカ２２５、複数のパケットプロセッサ２３２Ａ乃至Ｎ、複数のＦＩＦＯキュー２３４Ａ乃至Ｎ、およびメモリコントローラ２３６を含む）は、１つ以上のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）または他のプログラミング可能な論理回路に含まれてもよい。１つ以上のＦＰＧＡまたはプログラミング可能な論理回路を構成するために用いられるプログラムコードは、コンピュータ可読記憶媒体（例えばコンパクトディスク（ＣＤ）、デジタル多目的ディスク（ＤＶＤ）、テープ、または他の記憶媒体）に格納されてもよい。各ＦＰＧＡは、格納されたプログラミングコードを用いてプログラムされる際に、プロセッサ２２０のすべてまたは一部として構成されてもよい。各ＦＰＧＡは、テストシステム１１０に電力が加えられるたびにプログラムされてもよく、電力が落とされた際に、プログラムされていない状態に戻ってもよい。
【００４５】
図３は、セッションアクティブメモリ３２８の例示的な論理構成を示すものであり、これはプロセッサ２２０のセッションアクティブメモリ２２８として使用するのにふさわしくあり得る。図３の例において、セッションアクティブメモリは、４つのパケットプロセッサ３３２Ａ、３３２Ｂ、３３２Ｃ、３３２Ｄに接続される。各パケットプロセッサは、対応するＦＩＦＯキュー３３４Ａ、３３４Ｂ、３３４Ｃ、３３４Ｄを含む。４つのパケットプロセッサおよびＦＩＦＯキューを使用することは、一つの例であって、プロセッサ（例えばプロセッサ２２０）が含むパケットプロセッサおよびＦＩＦＯキューは、これより多くても少なくてもよい。
【００４６】
各ＦＩＦＯキュー３３４Ａ乃至Ｄは、対応するパケットプロセッサ３３２Ａ乃至Ｄによって処理されるべきパケットを保持するための４つのスロットを含んでもよい。この例において、各スロットは、予想される最も長いパケットと同等以上の固定長を有してもよい。例えば、ＶｏＩＰ呼び出しを送信するために用いるＲＴＰパケットは、一般的に数百バイト以下である。ＶｏＩＰネットワークまたはＶｏＩＰ機器を検査するためのプロセッサの内部で、５１２バイトのＦＩＦＯキュースロットが使われてもよい。各ＦＩＦＯキュー３３４Ａ乃至Ｄは、対応するパケットプロセッサ３３２Ａ乃至Ｄによって現在読み取り中および処理中のスロットを示す読取ポインタＲＰを含んでもよい。各ＦＩＦＯキュー３３４Ａ乃至Ｄはまた、ＦＩＦＯキューに転送される次のパケットを受信する予定のスロットを示す書込ポインタＷＰを含んでもよい。各ＦＩＦＯキューにおいて４つのスロットを使用することは、一つの例である。プロセッサ（例えばプロセッサ２２０）が各ＦＩＦＯキューにおいて含むスロットは、これより多くても少なくてもよい。他のキュー構造（例えば各パケットのヘッドに対するポインタを有する不揮発性メモリに格納された可変長パケット等）が使われてもよい。
【００４７】
セッションアクティブメモリ３２８は、複数のＦＩＦＯキュー３３４Ａ乃至Ｄにおけるスロットの各々に対応するセッション識別子を格納するように適合させられてもよい。図３の例において、セッションアクティブメモリ３２８は、４つのＦＩＦＯキュー３３４Ａ乃至Ｄの各々における４つのスロットに対応する１６のセッション識別子を格納する能力を有してもよい。上記の例の続きとして、セッション識別子がＩＰ宛先アドレスとＵＤＰ宛先ポートとから成る場合には、各セッション識別子の長さは４８ビットであってもよい。それに加えて、セッションアクティブメモリ３２８は、セッション識別子が現在有効であるか否か、または単にまだ上書きされていない古いデータであるか否かを示す、各セッション識別子に関連する更なる「有効」ビットを格納してもよい。
【００４８】
図３の例において、転送論理３２９は、セッションアクティブメモリ３２８と、複数のＦＩＦＯキュー３３４Ａ乃至Ｄとに接続される。パケットがパケットプロセッサ３３２Ａ乃至Ｄの１つに転送されるときに、転送論理３２９は、ＦＩＦＯキュー３３４Ａ乃至３３４Ｄの読取ポインタＲＰおよび書込ポインタＷＰの数値を検査してもよい。書込ポインタの数値と読取ポインタの数値との差は、関連するＦＩＦＯキューにおける空のスロットの数を示してもよい。従って、転送論理３２９は、読取ポインタおよび書込ポインタの数値に基づいて、どのパケットプロセッサ３３２Ａ乃至Ｄが、転送されるべきパケットを受信する予定かを選択してもよい。
【００４９】
選択されたパケットプロセッサ３３２Ａ乃至Ｄへのパケットの転送中または転送直後に、転送論理３２９は、転送されるパケットのセッション識別子をセッションアクティブメモリ３２８の中に書き込んでもよい。転送論理３２９は、選択されたパケットプロセッサ３３２Ａ乃至Ｄに関連するＦＩＦＯキュー３３４Ａ乃至Ｄの書込ポインタＷＰを読み取ることにより、ＦＩＦＯキュー内のどのスロットが、転送されたパケットを受信する予定であるかを決定してもよい。次に、転送論理３２９は、転送されたパケットのためのセッション識別子を、セッションアクティブメモリ３２８内の対応する位置に書き込んで、関連する有効ビットをセットしてもよい。
【００５０】
図３の例において、転送論理３２９はまた、ＦＩＦＯキュー３３４Ａ乃至Ｄにおける読取ポインタＲＰを監視することにより、パケットの処理が完了する時間を決定してもよい。各読取ポインタＲＰは、関連するパケットプロセッサ３３２Ａ乃至Ｄによって現在処理中のパケットを含むＦＩＦＯスロットを指し示すので、読取ポインタの数値の変化は、パケットの処理の完了を示してもよい。読取ポインタＲＰの数値の変化が生じるときに、転送論理３２９は、セッションアクティブメモリ３２８における対応する位置に関連する有効ビットをリセットしてもよい。読取ポインタＲＰの数値の変化と、セッションアクティブメモリ３２８における関連する有効ビットのリセットとは、同時であってもよいし連続的であってもよい。いずれの場合においても、対応するセッションアクティブメモリエントリがリリースされ、かつＦＩＦＯ読取ポインタが変化するまでは、ＦＩＦＯスロットは再利用できない。
【００５１】
［プロセスの説明］
図４は、受信されたパケットを処理するためのプロセス４５０のフローチャートである。フローチャートは、開始４５２および終了４８０を有するが、プロセス４５０は本質的に循環するものであり、受信されたパケットごとにステップ４５４乃至ステップ４６６が実行される。
【００５２】
４５４において、ネットワークインタフェース装置から受信された１つ以上のパケットを格納する入力キューから、トップパケットを引き出すかまたは読み取ってもよい。４５６において、セッション識別子は、パケットから抽出されてもよい。セッション識別子は、トップパケットが属する特定のセッションを示すパケットヘッダおよび／またはパケットペイロードにおける、１つ以上のフィールドのすべてまたは部分であってもよい。
【００５３】
４５８において、抽出されたセッション識別子は、現在処理中のすべてのパケットのセッション識別子を格納するセッションアクティブメモリの内容と比較されてもよい４６０において、抽出されたセッション識別子と、セッションアクティブメモリ４２８に格納されたセッション識別子のいずれかとが同じであるか否かが決定されてもよく、そのことは特定のセッションが現在進行中であることを示し得る。４６０において、特定のセッションが進行中であると決定された場合には、プロセス４５０は、特定のセッションが進行中でなくなるまで、４５８乃至４６０を単にループしてもよい。
【００５４】
４６０において、特定のセッションが進行中ではない、すなわち抽出されたセッション識別子が、セッションアクティブメモリ４２４に格納されたセッション識別子のいずれとも同じでない、と決定された場合には、４６２において、複数のパケットプロセッサのうちの１つにトップパケットが転送されてもよい。トップパケットを受信するプロセッサは、複数のプロセッサにかかる負荷のバランスを図るという規則に従って選択されてもよい。例えば、トップパケットは、次に利用可能になることが予想されるプロセッサ、または関連する入力キューにおいてパケット数が最も少ないプロセッサ、または他の何らかの方法で選択されるプロセッサに対して、送信されてもよい。それに加えて、４６２において、トップパケットのセッション識別子がセッションアクティブメモリ４２８に書き込まれることにより、特定のセッションが現在進行中であることを示す。トップパケットのセッション識別子が有効であることを示す有効フラグはまた、セッションアクティブメモリ４２８内にセットされてもよい。
【００５５】
４６２において複数のパケットプロセッサの１つにトップパケットが転送された後、４７８において、更なるパケットが入力バッファ格納されるか否かが決定されてもよい。更なるパケットが利用可能である場合には、プロセス４５０は、４５４から繰り返してもよい。更なるパケットが入力バッファにおいて利用可能でない場合には、プロセス４５０は、破線４７９で示すように４７８においてループしてもよく、または４８０において終了してもよい。
【００５６】
４６２において、選択されたパケットプロセッサにトップパケットが転送された後、４６４においてトップパケットが処理されてもよい。選択されたパケットプロセッサは、処理されるべきラインにおける２つ以上のパケットを保持するＦＩＦＯキューを含み得るので、トップパケットは、４６４において直ちに処理されなくてもよい。４６４におけるトップパケットの処理は、セッション識別子をトップパケットから抽出すること、セッション構成情報およびパケット統計をメモリから読み出すこと、トップパケットが正しく受信されたか否かを決定すること、トップパケットの到着を反映するように性能統計を更新すること、および他の処理を含んでもよい。ひとたび４６４における処理が完了すると、４６６において、セッションアクティブメモリの内容は、トップパケットがもはや進行中でないことを示すように変更される。例えば、４６６において、トップパケットのセッション識別子は、ヌルセッション識別子によって上書きされてもよく、またはトップパケットのセッション識別子に関連する有効フラグは、リセットされてもよい。
【００５７】
図５は、受信されたパケットを処理するための別のプロセス５５０のフローチャートである。プロセス５５０は、５６０において（トップパケットが属する）識別されたセッションが進行中であるか否かを決定する処置を除いて、プロセス４５０とほぼ同一である。５６０において、識別されたセッションが進行中であると決定されると、５７０において、特定のセッションを現在処理中の特定のパケットプロセッサに関連するＦＩＦＯキューにおいて、利用可能なスロットがあるか否かが決定されてもよい。特定のプロセッサのＦＩＦＯキューにおいて利用可能なスロットがある場合には、５６２において、トップパケットは特定のプロセッサに転送されてもよい。特定のプロセッサのＦＩＦＯキューが満杯である場合には、識別されたセッションが進行中でなくなるまで、または特定のプロセッサのＦＩＦＯキューにおいてスロットが利用可能になるまで、プロセスは５５８からループしてもよい。
【００５８】
図６は、受信されたパケットを処理するための別のプロセス６５０のフローチャートである。プロセス６５０は、６６０において（トップパケットが属する）識別されたセッションが進行中であるか否かを決定する処置を除いて、プロセス４５０およびプロセス５５０とほぼ同一である。６６０において、識別されたセッションが進行中であると決定されると、トップパケットはスキップされてもよい。トップパケットは、一時的に格納されてもよく、６６８において、入力バッファにおける次のパケットが新たなトップパケットとして識別されてもよい。トップパケットは、特にスキップされたパケットを保持するためのメモリに一時的に格納されてもよく、またはトップパケットは、入力バッファに残されて、フラグまたはポインタによって、スキップされたパケットとして識別されてもよい。プロセス６５０は、次に、新たなトップパケットを用いて６５４から繰り返してもよい。
【００５９】
６６２においてパケットがパケットプロセッサに転送された後、６７８において、入力バッファに新たに受信されたパケットと、スキップされたパケットとの両方を含む、より多くのパケットがあるか否かが決定されてもよい。より多くのパケットが利用可能である場合には、６８２において、１つ以上のスキップされたパケットがあるか否かが決定されてもよい。６８２において、スキップされたパケットがあると決定された場合には、スキップされたパケットは、新たなトップパケットとして定義されてもよく、プロセス６５０は、６５４から繰り返してもよい。複数のパケットがスキップされた場合には、最も古いスキップされたパケットは、新たなトップパケットとして定義されてもよい。６８２において、スキップされたパケットがないと決定された場合には、プロセス６５０は、新たなトップパケットとして入力バッファにおける次のパケットを用いて、６５４から繰り返してもよい。
【００６０】
［結びのコメント］
上記は、単に例示的なものであり、限定するものではなく、例によって提示しただけのものである。例を示して説明したが、変更、修正および／または改変が行われ得ることは、当業者にとって明らかである。
【００６１】
本文献に示される例の多くは、方法行為またはシステム要素の特定の組み合わせを含むが、それらの行為および要素は、同一の目的を達成する他の方法と組み合わせられ得ることが理解されるべきである。フローチャートに関しては、更なるステップやより少ないステップをとり得るものであり、図示したステップは、組み合わせられるかまたは更に洗練されることにより、本文献に記載される方法を達成し得る。一実施形態のみに関連して説明した行為、要素および特徴は、他の実施形態における同様の役割から除外されることを意図しない。
【００６２】
特許請求の範囲に記載される任意のミーンズプラスファンクション（手段プラス機能）の限定に関して、手段は、記載される機能を実行するために本文献に開示される手段に限定されることを意図するものではなく、記載される機能を実行するための、現在公知のまたは後に開発される任意の手段を範囲として含むものである。
【００６３】
本文献で用いられる「複数」は、２つ以上であるということを意味する。
【００６４】
本文献で用いられる、項目の「セット」は、そのような項目の１つ以上を含み得る。
【００６５】
明細書または特許請求の範囲のいずれにおいても、本文献で用いられる「備える」、「含む」、「持つ」、「有する」、「包含する」、「伴う」等の用語は、オープンエンド、すなわち含むが限定しないことを意味すると理解されるべきである。
【００６６】
特許請求の範囲に関しては、「から成る」および「から基本的に成る」という移行句のみが、それぞれ、閉じた移行句またはやや閉じた移行句である。
【００６７】
特許請求の範囲において請求項要素を修飾する「第１」「第２」「第３」等の序数用語の使用は、それ自身ではいかなる優先順、優先度、または他の請求項に対するある請求項の順序、あるいは方法の行為が実行される時間的順序を暗示するものではなく、同一の名称を有する別の要素から特定の名称を有する１つの要素を区別し、請求項要素を区別するためのラベルとして単に使用されるものである（序数用語の使用を除く）。
【００６８】
本文献で用いられる「および／または」は、列挙される項目が選択肢であることを意味するが、選択肢もまた列挙される項目の任意の組み合わせを含む。
【図１】
0005497564.tif 000002
【図２】
0005497564.tif 000003
【図３】
0005497564.tif 000004
【図４】
0005497564.tif 000005
【図５】
0005497564.tif 000006
【図６】
0005497564.tif 000007