特許第5863076号(P5863076)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ▲ホア▼▲ウェイ▼技術有限公司の特許一覧

特許5863076パケットを再構築し再順序付けするための方法、装置、およびシステム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5863076
(24)【登録日】2016年1月8日
(45)【発行日】2016年2月16日
(54)【発明の名称】パケットを再構築し再順序付けするための方法、装置、およびシステム
(51)【国際特許分類】
   H04L 12/953 20130101AFI20160202BHJP
【FI】
   H04L12/953
【請求項の数】15
【全頁数】30
(21)【出願番号】特願2014-525279(P2014-525279)
(86)(22)【出願日】2011年8月17日
(65)【公表番号】特表2014-522202(P2014-522202A)
(43)【公表日】2014年8月28日
(86)【国際出願番号】CN2011078504
(87)【国際公開番号】WO2012162949
(87)【国際公開日】20121206
【審査請求日】2014年3月28日
(73)【特許権者】
【識別番号】504277388
【氏名又は名称】▲ホア▼▲ウェイ▼技術有限公司
(74)【代理人】
【識別番号】100146835
【弁理士】
【氏名又は名称】佐伯 義文
(74)【代理人】
【識別番号】100140534
【弁理士】
【氏名又は名称】木内 敬二
(72)【発明者】
【氏名】ラミ・ゼチャリア
(72)【発明者】
【氏名】アレックス・ユマンスキー
(72)【発明者】
【氏名】王 研
【審査官】 菊地 陽一
(56)【参考文献】
【文献】 特開2002−208938(JP,A)
【文献】 米国特許出願公開第2008/0279195(US,A1)
【文献】 米国特許第07342887(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/953
(57)【特許請求の範囲】
【請求項1】
パケットを再構築し再順序付けするための方法であって、
ソース・ポートが送信したセルを受信するステップであって、前記セルはSID(Source Identification)、パケット・シーケンス番号およびセル・シーケンス番号を保持するステップと、
前記SIDに従って受信した前記セルを前処理して前記セルをパケット再構築データベースに挿入するかどうかを判定するステップと、
前記パケット・シーケンス番号に従って前記パケット再構築データベースの中でセルを順序付けて正しく順序付けられたパケットを取得するステップと、
前記正しく順序付けられたパケットが完全なパケットである場合には、前記正しく順序付けられたパケットのセルを前記セル・シーケンス番号に従って順序付けて正しく順序付けられたセルを取得するステップと、
前記正しく順序付けられたセルでパケット再構築を実施するステップと、
を含む、方法。
【請求項2】
前記SIDに従って受信した前記セルを前処理して前記セルをパケット再構築データベースに挿入するかどうかを判定するステップは、
受信したセルを到着時刻のローカル・タイム・スタンプでスタンプし、前記セルのセル・データを前記SIDに従ってロード・メモリに格納し、対応するロード・メモリのインデックス値を構成するステップと、
前記セルのセル情報を入力FIFO(IF)待ち行列に挿入するステップであって、前記セル情報は、前記SID、前記ローカル・タイム・スタンプ、前記ロード・メモリのインデックス値、前記パケット・シーケンス番号、および前記セル・シーケンス番号を含むステップと、
前記IF待ち行列の中の前記セル情報を、前記SID、前記パケット・シーケンス番号、および遅延FIFO(PF)待ち行列の状態に従って前処理して、前記セル情報をセル再構築データベースに挿入すべきかどうかを判定するステップと、
を含む、請求項1に記載の方法。
【請求項3】
前記IF待ち行列の中の前記セル情報を前記SID、前記パケット・シーケンス番号、および前記PF待ち行列の状態に従って前処理して、前記セル情報を前記セル再構築データベースに挿入すべきかどうかを判定するステップは、
各PF待ち行列の深さが事前設定閾値より小さい場合には、前記IF待ち行列の先頭セル情報に対応するセルのパケット・シーケンス番号と現在処理されているパケットの最小パケット・シーケンス番号の差分が第4の閾値より小さいかどうかを判定するステップと、
前記差分が前記第4の閾値より小さい場合には、前記IF待ち行列の前記先頭セル情報をポップするステップと、
前記差分が前記第4の閾値より小さくない場合には、前記IF待ち行列の前記先頭セル情報を前記PF待ち行列の1つにプッシュし、最も満杯なPF待ち行列の先頭セル情報をポップするステップと、
前記IF待ち行列のポップされた先頭セル情報に対応するセルまたは前記PF待ち行列のポップされた先頭セル情報に対応するセルがタイムアウトしたかどうかを判定するステップと、
タイムアウトした場合には、前記セル情報に対応するセルと前記セルが属するパケットを再利用するステップと、
タイムアウトしていない場合には、前記セルのパケット・シーケンス番号が前記パケット再構築データベースの同一ソースの最大パケット・シーケンス番号より小さいとき、前記セル情報を前記パケット再構築データベースに挿入するステップと、
前記セルのパケット・シーケンス番号が前記パケット再構築データベースの同一ソースの最大パケット・シーケンス番号より大きいとき、前記セル情報を前記PF待ち行列の1つに挿入するステップと、
を含む、請求項2に記載の方法。
【請求項4】
特定のPF待ち行列の深さが前記事前設定閾値より大きい場合には、オーバフローPF待ち行列の先頭セル情報に対応するセルのパケット・シーケンス番号と現在処理されているパケットの最小パケット・シーケンス番号の差分が第5の閾値より小さいかどうかを判定するステップと、
前記差分が前記第5の閾値より小さい場合には、前記オーバフローPF待ち行列の先頭セル情報に対応するセルを再利用し、前記IF待ち行列の先頭セル情報に対応するセルのパケット・シーケンス番号と現在処理されているパケットの最小パケット・シーケンス番号の差分が前記第4の閾値より小さいかどうかを判定するステップを実施するステップと、
前記IF待ち行列の先頭セル情報に対応するセルのパケット・シーケンス番号と現在処理されているパケットの最小パケット・シーケンス番号の差分が前記第の閾値より小さくない場合には、前記IF待ち行列の前記先頭セル情報を前記PF待ち行列の1つにプッシュするステップを実施し、最も満杯なPF待ち行列の先頭セル情報をポップするステップと、
をさらに含む、請求項3に記載の方法。
【請求項5】
前記パケット再構築データベースは、ソース記述子メモリ(SDM)およびソース待ち行列メモリ(SQM)を備え、前記SDMは、ソース記述子を格納しパケットのサービス・クラス(CoS)と前記SIDをインデックスとするように構成され、前記SQMは前記ソース記述子に対応するソース待ち行列を格納するように構成され、前記SQMは再順序パケット配列バッファを指すポインタを備え、前記ポインタは、順序付けを待機しているセルのパケット記述子を格納し、前記パケット記述子の各々は前記パケットに属する最後に受信したセルのセル記述子を指す、請求項1乃至4の何れか1項に記載の方法。
【請求項6】
前記パケット再構築データベースは、マルチキャスト・グループID(MGID)記述子メモリおよびMGID待ち行列メモリを備え、前記MGID記述子メモリはMGID記述子を格納し、パケットのCoS、前記MGID、および前記SIDをインデックスとするように構成され、前記MGID待ち行列メモリは、前記MGID記述子に対応するMGID待ち行列を格納するように構成され、前記MGID待ち行列メモリは再順序パケット配列バッファを指すポインタを備え、前記再順序パケット配列バッファは順序付けを待機しているセルのパケット記述子を格納し、前記パケット記述子の各々は前記パケットに属する最後に受信したセルのセル記述子を指す、
請求項1乃至4の何れか1項に記載の方法。
【請求項7】
前記再順序パケット配列バッファは動的パケット記述子配列であり、正の整数個のクラスの様々な容量のメモリ・ブロックを含む、請求項5または6に記載の方法。
【請求項8】
ソース・ポートが送信したセルを受信するように構成された受信ユニットであって、前記セルは、SID(Source Identification)、パケット・シーケンス番号、およびセル・シーケンス番号を保持する受信ユニットと、
前記SIDに従って前記受信ユニットにより受信したセルを前処理して前記セルをパケット再構築データベースに挿入するかどうかを判定するように構成された前処理ユニットと、
前記パケット・シーケンス番号に従って前記パケット再構築データベース内のセルを順序付けて正しく順序付けられたパケットを取得するように構成されたパケット順序付けユニットと、
前記パケットが完全なパケットと判定された場合には、前記正しく順序付けられたパケットのセルを前記セル・シーケンス番号に従って順序付けて、前記正しく順序付けられたセルを取得するように構成されたセル順序付けユニットと、
前記正しく順序付けられたセルにパケット再構築を実施するように構成された再構築ユニットと、
を備える、ネットワーク装置。
【請求項9】
前記前処理ユニットは、
受信したセルを到着時刻のローカル・タイム・スタンプでスタンプし、前記セルのセル・データを前記SIDに従ってロード・メモリに格納し、対応するロード・メモリのインデックス値を構成するように構成されたデータ格納サブユニットと、
前記セルのセル情報を入力FIFO(IF)待ち行列に挿入するように構成された情報挿入サブユニットであって、前記セル情報は、前記SID、前記ローカル・タイム・スタンプ、前記ロード・メモリのインデックス値、前記パケット・シーケンス番号、および前記セル・シーケンス番号を含む情報挿入サブユニットと、
前記SID、前記パケット・シーケンス番号、および遅延FIFO(PF)待ち行列の状態に従って前記IF待ち行列の中の前記セル情報を処理し、前記セル情報をセル再構築データベースに挿入すべきかどうかを判定するように構成された判定サブユニットと、
を備える、請求項8に記載のネットワーク装置。
【請求項10】
前記判定サブユニットは特に、各PF待ち行列の深さが事前設定閾値より小さい場合には、前記IF待ち行列の先頭セル情報に対応するセルのパケット・シーケンス番号と現在処理されているパケットの最小パケット・シーケンス番号の間の差分が第4の閾値より小さいと判定し、前記差分が前記第4の閾値より小さい場合には、前記IF待ち行列の前記先頭セル情報をポップし、前記差分が前記第4の閾値より小さくない場合には、前記IF待ち行列の前記先頭セル情報を前記PF待ち行列の1つにプッシュし、最も満杯なPF待ち行列の先頭セル情報をポップし、前記IF待ち行列のポップされた先頭セル情報に対応するセルまたは前記PF待ち行列の先頭セル情報に対応するセルがタイムアウトしたかどうかを判定し、タイムアウトした場合には、前記セル情報に対応するセルおよび前記セルが属するパケットを再利用し、タイムアウトしていない場合には、前記セルのパケット・シーケンス番号が前記パケット再構築データベースの同一ソースの最大パケット・シーケンス番号より小さいとき、前記セル情報を前記パケット再構築データベースに挿入し、前記セルのパケット・シーケンス番号が前記パケット再構築データベースの同一ソースの最大パケット・シーケンス番号より大きいとき、前記セル情報を前記PF待ち行列の1つに挿入するように構成された、請求項9に記載のネットワーク装置。
【請求項11】
前記判定サブユニットは特に、特定のPF待ち行列の深さが前記事前設定閾値より大きい場合には、オーバフローPF待ち行列の先頭セル情報に対応するセルのパケット・シーケンス番号と現在処理されているパケットの最小パケット・シーケンス番号の差分が第5の閾値より小さいかどうかを判定し、前記差分が前記第5の閾値より小さい場合には、前記オーバフローPF待ち行列の先頭セル情報に対応するセルを再利用し、次いで前記IF待ち行列の先頭セル情報に対応するセルのパケット・シーケンス番号と現在処理されているパケットの最小パケット・シーケンス番号の差分が前記第4の閾値より小さいかどうかを判定するステップを実施し、前記差分が前記第4の閾値より小さくない場合に、前記IF待ち行列の前記先頭セル情報を前記PF待ち行列の1つにプッシュし、最も満杯なPF待ち行列の先頭セル情報をポップするステップを実施するように構成された、請求項10に記載のネットワーク装置。
【請求項12】
前記パケット再構築データベースはソース記述子メモリ(SDM)とソース待ち行列メモリ(SQM)を備え、前記SDMは、ソース記述子を格納し、前記パケットのサービス・クラス(CoS)と前記SIDをインデックスとするように構成され、前記SQMは前記ソース記述子に対応するソース待ち行列を格納するように構成され、前記SQMは再順序パケット配列バッファを指すポインタを備え、前記再順序パケット配列バッファは順序付けを待機しているセルのパケット記述子を格納し、前記パケット記述子の各々は前記パケットに属する最後に受信したセルのセル記述子を指す、請求項8乃至11の何れか1項に記載のネットワーク装置。
【請求項13】
前記パケット再構築データベースは、マルチキャスト・グループID(MGID)記述子メモリとMGID待ち行列メモリを備え、前記MGID記述子メモリは、MGID記述子を格納しパケットのCoS、前記MGID、およびソース・ポート番号をインデックスとするように構成され、MGID待ち行列メモリは、前記MGID記述子に対応するMGID待ち行列を格納するように構成され、前記MGID待ち行列メモリは再順序パケット配列バッファを指すポインタを備え、前記再順序パケット配列バッファは順序付けを待機しているセルのパケット記述子を格納し、前記パケット記述子の各々は前記パケットに属する最後に受信したセルのセル記述子を指す、請求項8乃至11の何れか1項に記載のネットワーク装置。
【請求項14】
前記再順序パケット配列バッファは動的パケット記述子配列であり、正の整数個のクラスの様々な容量のメモリ・ブロックを含む、請求項12または13に記載のネットワーク装置。
【請求項15】
ソース・ポート装置と請求項9乃至14の何れか1項に記載のネットワーク装置とを備えた通信システムであって、 ソース・ポート装置は、セルを前記ネットワーク装置に送信するように構成され、前記セルは、SID(Source Identification)、パケット・シーケンス番号、およびセル・シーケンス番号を保持する、通信システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信技術の分野に関し、特に、パケットを再構築し再順序付けするための方法、装置、およびシステムに関する。
【背景技術】
【0002】
データ通信装置は、複数のライン・カードおよびファブリック・スイッチボードから構成される。ライン・カードおよびファブリック・スイッチボードは、互いと縦横に接続される。様々な宛先に向かう様々な長さのパケットを上流の装置から受信した後に、入力側のライン・カードは、当該パケットをパケット・プロセッサ(PP)に送信する。当該パケット・プロセッサは、パケットの宛先に従ってルーティング・テーブルを検索して、出力側を決定し、当該パケットをトラフィック管理(TM)に送信する。TMにより形を整えた後、パケットはファブリック・スイッチ・インタフェース(FI)で固定サイズの複数のセルに分割される。当該セルは連続的にファブリック・スイッチに送信される。当該ファブリック・スイッチは、セルごとに経路を独立に選択し、当該セルを宛先ポートに送信する。
【0003】
異なるセルがファブリック・スイッチの異なる経路を通って送信されうるので、宛先ポートに到着するセルが破棄される可能性があり(即ち、同一パケットに属するセルが、当該パケットにおけるその位置の順序で順番に到着しない)、したがって、破棄されたセルを再順序付け(再組立て)して、同一パケットに属するセルを完全なパケットに再構築する必要がある。次に、同一のソース・ポートが送信したパケットを当該ソース・ポートでその送信順序で配置し、最後に、出力ポートから下流の装置に送信する。ここで、一連の動作、即ち、同一パケットのセルを完全なパケットに再構築し、同一のソース・ポートから送信されたパケットをその送信順序で当該ソース・ポートで配置すること等は、一般に、パケット再構築および再順序付けと呼ばれる。先行技術では、様々なソースのパケットは通常、時間スケールを用いて宛先ポートで再構築され再順序付けされる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
この方法では、時間同期の必要性が高い。しかし、多数のソースが存在するときには、非常に正確な時間同期を実現するのは困難であるので、この方法は高性能な装置には適切ではない。しかし、時間スケールを用いずに、宛先ポートでソースに基づいて単純に再順序付けする場合には、大量のメモリと制御リソースが無駄になる。
【課題を解決するための手段】
【0005】
本発明の諸実施形態では、パケットを再構築し再順序付けするための方法、装置、およびシステムを提供する。これらは、高性能な装置に適しており、メモリや制御リソースをあまり占有しない。
【0006】
パケットを再構築し再順序付けするための方法は、ソース・ポートが送信したセルを受信するステップであって、当該セルはSID(Source Identification)、パケット・シーケンス番号およびセル・シーケンス番号を保持するステップと、当該SIDに従って、受信したセルを前処理して、当該セルをパケット再構築データベースに挿入するかどうかを判定するステップと、当該パケット・シーケンス番号に従ってパケット再構築データベースの中でセルを順序付けて正しく順序付けられたパケットを取得するステップと、当該正しく順序付けられたセルが完全なセルである場合には、当該正しく順序付けられたパケットのセルを当該セル・シーケンス番号に従って順序付けて正しく順序付けられたセルを取得するステップと、当該正しく順序付けられたセルでパケット再構築を実施するステップと、を含む。
【0007】
ネットワーク装置が、ソース・ポートが送信したセルを受信するように構成された受信ユニットであって、当該セルは、SID(Source Identification)、パケット・シーケンス番号、およびセル・シーケンス番号を保持する受信ユニットと、当該SIDに従って当該受信ユニットにより受信したセルを前処理して当該セルをパケット再構築データベースに挿入するかどうかを判定するように構成された前処理ユニットと、当該パケット・シーケンス番号に従ってパケット再構築データベース内のセルを順序付けて当該正しく順序付けられたパケットを取得するように構成されたパケット順序付けユニットと、当該パケットが完全なパケットと判定された場合には、当該正しく順序付けられたパケットのセルを当該セル・シーケンス番号に従って順序付けして、当該正しく順序付けられたセルを取得するように構成されたセル順序付けユニットと、当該正しく順序付けられたセルに対してパケット再構築を実施するように構成された再構築ユニットと、を備える。
【0008】
通信システムが、本発明の諸実施形態により提供されるソース・ポート装置と任意のネットワーク装置を備え、当該ソース・ポート装置は、セルを当該ネットワーク装置に送信するように構成され、当該セルは、SID(Source Identification)、パケット・シーケンス番号、およびセル・シーケンス番号を保持する。
【0009】
本発明の諸実施形態では、受信したセルをSIDに従って前処理し、受信したセルがパケット再構築データベースに挿入されるかどうかを判定し、パケット・シーケンス番号とセルのセル・シーケンス番号に従って当該データベース内のセルを直接順序付けし、最後にパケット再構築を実現する。当該解決策では、ソースに従ってパケットを直接再順序付けし再構築することができるので、時間同期に基づいてパケットを再順序付けし再構築する先行技術と比べて、高性能な装置に適している。さらに、当該解決策では受信したセル(即ち、再構築を待機しているパケット)を制御し管理できるので、リソースの利用率は高く、メモリと制御リソースはあまり占有されない。
【0010】
本発明の諸実施形態の技術的解決策をより明確に説明するために、諸実施形態の説明で使用する図面を以下で簡単に説明する。明らかに、以下の図面は本発明の幾つかの実施形態を例示するにすぎず、当業者は創造的作業なしにこれらの図面から他の図面を得ることができる。
【図面の簡単な説明】
【0011】
図1】本発明の実施形態1で提供するパケットを再構築し再順序付けするための方法の流れ図である。
図2A】本発明の1実施形態で提供するパケット再構築および再順序付けのプロセスのアーキテクチャ図である。
図2B】本発明の実施形態2で提供するパケットを再構築し再順序付けするための方法の流れ図である。
図2C】ユニキャストにおけるパケット順序付けおよびパケット再構築データベースの構造の略図である。
図2D】本発明の1実施形態における前処理方法の流れ図である。
図2E】本発明の1実施形態で提供するパケットを再構築し再順序付けするための方法におけるセル順序付け機構を示す略図である。
図3A】本発明の1実施形態で提供するネットワーク装置の構造図である。
図3B】本発明の1実施形態で提供するネットワーク装置の別の構造図である。
【発明を実施するための形態】
【0012】
以下で、本発明の諸実施形態における技術的解決策を、本発明の諸実施形態における図面を参照して明確かつ十分に説明する。明らかに、説明する実施形態は全ての実施形態ではなく本発明の諸実施形態の一部にすぎない。本発明の諸実施形態に基づいて、当業者が創造的作業なしに得る他の任意の実施形態は本発明の保護範囲に入る。
【0013】
本発明の諸実施形態では、パケットを再構築し再順序付けするための方法、装置、およびシステムを提供する。これらをそれぞれ以下で説明する。
【0014】
実施形態1
本実施形態を、宛先ポートの役割を果たすネットワークの観点から説明する。パケットを再構築し再順序付けするための方法は、ソース・ポートが送信したセルを受信するステップであって、当該セルはSID(Source Identification)、パケット・シーケンス番号およびセル・シーケンス番号を保持するステップと、当該SIDに従って、受信したセルを前処理して、当該セルをパケット再構築データベースに挿入するかどうかを判定するステップと、当該パケット・シーケンス番号に従ってパケット再構築データベースの中でセルを順序付けて正しく順序付けられたパケットを取得するステップと、当該正しく順序付けられたセルが完全なセルである場合には、当該正しく順序付けられたパケットのセルを当該セル・シーケンス番号に従って順序付けて正しく順序付けられたセルを取得するステップと、正しく順序付けられたセルに対してパケット再構築を実施するステップと、を含む。
【0015】
図1を参照すると具体的な流れは以下の通りである。101で、ソース・ポートが送信したセルを受信する。当該セルは、SID、パケット・シーケンス番号およびセル・シーケンス番号を含む。SIDは、ソースおよびセルのクラスを特定するように構成され、セルが送られてくるソース・ポートを当該SIDに従って取得することができる。SIDを、1組のソース・ポート番号とパケットのサービス・クラス(CoS)、即ち、{ソース・ポート番号、パケットのCoS}であるユニキャストSIDと、1組のソース・ポート番号、CoSおよびマルチキャスト・グループID(MGID)、即ち、{ソース・ポート番号、パケットのCoS、MGID}であるマルチキャストSIDに分類してもよい。ここで、MGIDは、ソースライン・カードのPPによりマルチキャスト・パケットに割り当てられる。パケット・シーケンス番号は、データ・ストリーム内のパケットの位置を特定するように構成される。セル・シーケンス番号は、パケット内のセルの位置を特定するように構成される。
【0016】
例えば、ソース・ポートから送信されたセルを、特に、ファブリック・スイッチにより受信してもよい。ここで、ソース・ポートはパケットを分割してセルを取得し、パケット・シーケンス番号とセル・シーケンス番号を当該セルに割り当てる。例えば、同一宛先ポートの2つのパケットをセルに分割する。第1のパケットはそれぞれシーケンス番号(1、1)、(1、2)および(1、3)の3つのセルに分割され、第2のパケットはそれぞれシーケンス番号(2、1)、(2、2)、(2、3)および(2、4)の4つのセルに分割される。括弧内の1番目の数字はパケット・シーケンス番号であり、括弧内の2番目の数はセル・シーケンス番号である。
【0017】
102で、当該SIDに従って、受信したセルを前処理して、当該セルをパケット再構築データベースに挿入するかどうかを判定する。ここで、セルはセル・データとセル情報を含んでもよい。リソースを節約するために、順序付けプロセスの最中にセル情報のみを操作し、パケット再構築を実施するときにのみ、セル情報に従って対応するセル・データを再構築のために抽出する。例えば、詳細は以下の通りであってもよい。
【0018】
(1)受信したセルを到着時刻のローカル・タイム・スタンプでスタンプした後、当該セルのセル・データをSIDに従ってロード・メモリに格納し、対応するロード・メモリのインデックス値を構成し、それに基づいて対応するセル・データをロード・メモリから取得することができる。
【0019】
(2)セルのセル情報を入力FIFO(IF)待ち行列に挿入する。当該セル情報は、SID、ローカル・タイム・スタンプ、ロード・メモリのインデックス値、パケット・シーケンス番号およびセルのセル・シーケンス番号のような幾つかのセル関連の情報を含んでもよい。ここで、ローカル・タイム・スタンプはローカルで待機しているセルの時刻を判定するために主に使用され、待機時間があまりに長い場合にはセルは破棄される。SID、ロード・メモリのインデックス値、パケット・シーケンス番号およびセル・シーケンス番号の機能に関する上の説明を参照されたい。それらの説明はここでは省略する。
【0020】
(3)SID、パケット・シーケンス番号および遅延FIFO(PF)待ち行列の状態に従ってIF待ち行列の中のセル情報を処理し、当該セル情報をセル再構築データベースに挿入すべきかどうかを判定する。即ち、各PF待ち行列の深さが事前設定閾値より小さい場合には、IF待ち行列の先頭セル情報に対応するセルを後処理するかどうかを判定する。処理する場合には、IF待ち行列の当該先頭セル情報をポップする。処理しない場合には、IF待ち行列の当該先頭セル情報をPF待ち行列の1つにプッシュし(複数のPF待ち行列を構築して、様々な待機時間のセルをバッファしてもよい)、最も満杯なPF待ち行列の先頭セル情報をポップする。IF待ち行列のポップされた先頭セル情報に対応するセルまたはPF待ち行列のポップされた先頭セル情報に対応するセルがタイムアウトしたかどうかを判定し、タイムアウトしたと判定する場合には、当該セル情報に対応するセルと当該セルが属するパケットを再利用し、タイムアウトしたと判定しない場合には、当該セルのパケット・シーケンス番号がパケット再構築データベースの同一ソースの最大パケット・シーケンス番号より小さいとき、当該セル情報をパケット再構築データベースに挿入し、当該セルのパケット・シーケンス番号がパケット再構築データベースの同一ソースの最大オープン・パケット・シーケンス番号より大きいとき、当該セル情報をPF待ち行列の1つに挿入する。
【0021】
対照的に、特定のPF待ち行列の深さが当該事前設定閾値より大きい場合には、オーバフローPF待ち行列の先頭セル情報に対応するセルが処理されるかどうかを判定し、処理されないと判定した場合には、当該オーバフローPF待ち行列の先頭セル情報に対応するセルを再利用し(即ち、PF待ち行列の深さが事前設定閾値より大きい、例えば、PF待ち行列が満杯である)、IF待ち行列内の先頭セル情報に対応するセルが処理されるかどうかを判定するステップを実施し(上述の説明を参照)、処理されると判定した場合には、IF待ち行列の当該先頭セル情報をPF待ち行列の1つにプッシュするステップと、最も満杯なPF待ち行列の先頭セル情報をポップするステップを実施する。
【0022】
ここで、PF待ち行列は主に、宛先ポートにあまりにも早く到着したセルを格納するために使用される。即ち、セルが宛先ポートにあまりに早く到達した場合には、セルは、並行に処理するのではなくPF待ち行列に入れられ、PF待ち行列から正しい時点に抽出され、パケット再構築データベースに挿入される。
【0023】
ここで、セルが処理されるかどうかを待ち行列の中のオープン・パケット(即ち、処理を待機しているセル)の量に従って、即ち、現在処理されているパケットの最小パケット・シーケンス番号と現在のセルのパケット・シーケンス番号の差分が事前設定された値より小さいかどうかを判定することによって、判定してもよい。事前設定された値より小さい場合には、セルを処理することを意味し、現在のセルを処理することができる。そうでない場合には、セルは処理されず、セルを遅延させる、即ち、PF待ち行列に入れてもよいことを意味する。例えば、待ち行列の中のオープン・パケットの最大数が16である場合には、現在処理されているパケットの最小パケット・シーケンス番号は1024であり、パケット・シーケンス番号が1024未満であるパケットのセルはすぐ破棄され、パケット・シーケンス番号が1024以上でありかつ「1024+16」以下であるパケットのセルは処理される。例えば、セルがタイムアウトしておらず、当該セルのパケット・シーケンス番号がパケット再構築データベースの同一ソースの最大パケット・シーケンス番号より小さいとさらに判定されたときには、セルをパケット再構築データベースに挿入し、シーケンス番号が「1024+16」より大きいパケットのセルはバッファされる、即ち、PF待ち行列に挿入される。
【0024】
即ち、「IF待ち行列の中のセル情報をSID、パケット・シーケンス番号および遅延FIFO(PF)待ち行列の状態に従って処理し、当該セル情報を当該セル再構築データベースに挿入すべきかどうかを判定する」ステップは、特に、各PF待ち行列の深さが事前設定閾値より小さい場合には、IF待ち行列の先頭セル情報に対応するセルのパケット・シーケンス番号と現在処理されているパケットの最小パケット・シーケンス番号の差分が第4の閾値より小さいかどうかを判定し、小さい場合には、IF待ち行列の当該先頭セル情報をポップし、小さくない場合には、IF待ち行列の当該先頭セル情報をPF待ち行列の1つにプッシュし、最も満杯なPF待ち行列の先頭セル情報をポップし、IF待ち行列のポップされた先頭セル情報に対応するセルまたはPF待ち行列のポップされた先頭セル情報に対応するセルがタイムアウトしたかどうかを判定し、タイムアウトした場合には、当該セル情報に対応するセルと当該セルが属するパケットを再利用し、タイムアウトしていない場合には、当該セルのパケット・シーケンス番号がパケット再構築データベースの同一ソースの最大オープン・パケット・シーケンス番号より小さいとき、当該セル情報をパケット再構築データベースに挿入し、当該セルのパケット・シーケンス番号がパケット再構築データベースの同一ソースの最大オープン・パケット・シーケンス番号より大きいとき、当該セル情報をPF待ち行列の1つに挿入するステップを含んでもよい。
【0025】
特定のPF待ち行列の深さが当該事前設定閾値より大きい場合には、オーバフローPF待ち行列の先頭セル情報に対応するセルのパケット・シーケンス番号と現在処理されているパケットの最小パケット・シーケンス番号の差分が第5の閾値より小さいかどうかを判定し、小さい場合には、当該オーバフローPF待ち行列の先頭セル情報に対応するセルを再利用し、IF待ち行列の先頭セル情報に対応するセルのパケット・シーケンス番号と現在処理されているパケットの最小パケット・シーケンス番号の差分が上記第4の閾値より小さいかどうかを判定するステップを実施し、小さくない場合には、IF待ち行列の当該先頭セル情報をPF待ち行列の1つにプッシュするステップと、最も満杯なPF待ち行列の先頭セル情報をポップするステップとを実施する。ここで、上記第4の閾値と上記第5の閾値を、実際の適用の要件に従って設定してもよい。
【0026】
ユニキャストまたはマルチキャストの何れかが、再構築と再順序付けを待機している幾つかのパケットを夫々が有する多数のパケット順序付け待ち行列を含んでもよい(再構築と再順序付けを待機しているこれらのパケットはオープン・パケットである)。ここで、ユニキャストは、パケットのサービス・クラス(CoS)とSID(Source Identification)に従ってパケット順序付け待ち行列を分類してもよい。即ち、パケットの異なるCoSのセルとSIDは様々なパケット順序付け待ち行列に入れられる。マルチキャストは、パケットのサービス・クラス(CoS)、SID(Source Identification)およびマルチキャスト・グループID(MGID)に従ってパケット順序付け待ち行列を分類してもよい。ここで、各パケット順序付け待ち行列は、順序付けすべきパケットを収容するためのデータの役割を担うパケット記述子配列(即ち、事前に割り当てたメモリ)を有する。パケット記述子配列の中の各エントリは実際にはパケットが属するセル記述子を指すポインタであり、当該セル記述子は次のセルを指すポインタも有する。したがって、1つのパケットに属する全てのセルはリンク・リストを構成し、パケット配列の最初のポインタから開始して全てのセルを訪問することができる。ここで、パケット記述子配列のサイズ(即ち、収容できるオープン・パケットの量)は動的に調整可能である。例えば、サイズが異なる幾つかのパケット記述子配列を事前に割り当ててもよい。順序付け待ち行列のオープン・パケットの数が増加し、パケット記述子配列がオーバフローした場合には、より大きなパケット記述子配列を使用して元の小さなパケット記述子配列を置き換えてもよい。
【0027】
ユニキャストに対しては、パケット再構築データベースはソース記述子メモリ(SDM)とソース待ち行列メモリ(SQM)を備えてもよい。SDMは、ソース記述子を格納し、パケットのCoSとソース・ポート番号をインデックスとする、即ち、{パケットのCoS、ソース・ポート番号}をインデックスとして使用するように構成され、SQMは、当該ソース記述子に対応するソース待ち行列を格納するように構成され、SQMは、当該再順序パケット配列バッファを指すポインタを含む。当該バッファは、順序付けを待機しているセルのパケット記述子を格納し、当該パケット記述子の各々は当該パケットに属する最後に受信したセルのセル記述子を指す。
【0028】
ここで、当該再順序パケット配列バッファを、動的パケット記述子配列により構築してもよく、当該バッファが特にN個のクラスの様々な容量のメモリ・ブロックを含んでもよい。ここで、Nは正の整数である。例えば、N=3であるとき、Xをパケット記述子の幅として、容量が(32*X)、(128*X)および(512*X)である3つのクラスのメモリ・ブロックを保護してもよい。
【0029】
マルチキャストに対しては、パケット再構築データベースがMGID記述子メモリとMGID待ち行列メモリを備えてもよい。MGID記述子メモリは、MGID記述子を格納し、パケットのCoS、MGIDおよびソース・ポート番号をインデックスとし、例えば、{パケットのCoS、MGID、ソース・ポート番号}のハッシュ値をインデックスとして使用するように構成され、MGID待ち行列メモリは、当該MGID記述子に対応するMGID待ち行列を格納するように構成され、MGID待ち行列メモリは、当該再順序パケット配列バッファを指すポインタを備えてもよい。当該バッファは、順序付けを待機しているセルのパケット記述子を格納し、当該パケット記述子の各々は当該パケットに属する最後に受信したセルのセル記述子を指す。
【0030】
ここで、当該再順序パケット配列バッファは動的パケット記述子配列であり、M個のクラスの様々な容量のメモリ・ブロックを含み、Mは正の整数である。これはユニキャストと同様であり、ここでは省略する。
【0031】
{パケットのCoS、MGID、ソース・ポート番号}で表される空間は非常に大きいので、{パケットのCoS、MGID、ソース・ポート番号}のインデックスごとに対応するパケット順序付け待ち行列を生成することは非常に困難である。その結果、リソースを節約するために、MGID記述子メモリとMGID待ち行列メモリがハッシュ関数をサポートできるようにしてもよい。即ち、各プロセス(例えば、IF待ち行列、PF待ち行列、完全待ち行列、再順序パケット配列バッファおよびセル順序付けバッファ)が、当該ハッシュ関数を介して、当該MGID記述子メモリと当該MGID待ち行列メモリにアクセスしてもよい。ここで、当該ハッシュ関数を複数のハッシュ・バケットとして構築してもよい。所謂ハッシュ関数は、{パケットのCoS、MGID、ソース・ポート番号}をより小さな空間にマップするものである。例えば、ハッシュ関数は{パケットのCoS、MGID、ソース・ポート番号}を入力として、1つまたは複数のパケット順序付け待ち行列(即ち、複数のハッシュ・バケット)に対応するインデックス値を計算してもよい。
【0032】
ハッシュ関数を使用するとリソース競合が生ずるおそれがあるので、フル・アソシアティブ犠牲テーブル(FAVT)を設けて、リソース競合が生じたとき、当該リソース競合が生じたセルを別のMGID待ち行列にプッシュするかまたは事前設定されたFAVTに従って破棄することができる。
【0033】
さらに、当該FAVTの情報量が事前設定された第1の閾値を超えたとき、現在の宛先ポートを起動して制御情報をマルチキャスト・ソースに送信し、それにより、現在の宛先ポートに送信されるマルチキャスト・データの量を削減してもよい。ここで、第1の閾値を実際の適用要件に従って設定してもよい。
【0034】
例えば、各ハッシュ・エントリは、2つのハッシュ・バケット(即ち、2つのパケットのハッシュ順序付け待ち行列)を備える。(1、2、128)、(7、0、256)、(11、3、567)等は全て16にマップされる。即ち、これらの組合せを入力としたとき、当該ハッシュ関数の結果は16である。(1、2、128)のセルが第1のパケット順序付け待ち行列を使用してもよく、(7、0、256)のセルが第2のパケット順序付け待ち行列を使用してもよく、(11、3、567)のセルのみを到着時に破棄することができる。なぜならば、各ハッシュ・エントリが2つのパケット順序付け待ち行列しか有さないからである。勿論、(1、2、128)のセルの全てを順序付け待ち行列の外で上手く再構築し再順序付けした場合には、第1のパケット順序付け待ち行列は空である。この時点で、(11、3、567)のセルが到着したとき、第1のパケット順序付け待ち行列を使用してもよい。FAVTは、どのインデックス値(SID、CoS、MGID)がパケット順序付け待ち行列を占有するかを示し、現在の状態に従って動的に維持される。
【0035】
103で、パケット・シーケンス番号に従ってパケット再構築データベースの中でセルを順序付けて正しく順序付けられたパケットを取得する。例えば、その詳細が以下のようであってもよい。
【0036】
パケット・シーケンス番号に従って当該再順序パケット配列バッファの中でパケット記述子を順序付けし、パケット再構築データベースにおいて同一のパケット・シーケンス番号を有するセル情報をパケット記述子に対応するパケット順序付け待ち行列に入れる。例えば、パケット再構築データベースに格納されたセル情報のシーケンス番号がそれぞれ(1、1)、(2、3)、(1、3)、(2、1)、(2、4)、(1、2)および(2、2)である場合には、パケット順序付けの後、
第1のパケット順序付け待ち行列:(1、1)、(1、3)、(1、2)
第2のパケット順序付け待ち行列:(2、3)、(2、1)、(2、4)、(2、2)
となる。ここで、括弧の中で、1番目の数字はパケット・シーケンス番号であり、2番目の数字はセル・シーケンス番号である。この時点でパケットが正しく順序付けされているが、パケット内のセルは依然として乱雑な状態にあることが分かる。
【0037】
104で、当該正しく順序付けられたセルが完全なセルである場合には、ステップ103で取得した正しく順序付けられたパケットのセルをセル・シーケンス番号に従って順序付けして正しく順序付けられたセルを取得する。完全なパケットとは、パケット内のセルが完全に受信されたことを意味する。例えば、その詳細が以下のようであってもよい。即ち、パケットが完全なパケットである場合には、ブロードキャスト・クラスのセルおよびパケットのCoSに従って、当該完全なパケットのパケット記述子を対応する完全FIFO(CF)待ち行列に追加し、対応するセル情報を、CF待ち行列内のパケット記述子に従ってセル順序付けバッファ(セル再順序付けバッファ、完全パケットFIFOとも称する)に挿入し、セル・シーケンス番号に従って、抽出したセル情報をセル順序付けバッファの中で順序付けする。ここで、セルのブロードキャスト・クラスがユニキャストまたはマルチキャストを含んでもよい。
【0038】
順序付けの効率を改善するために、セル順序付けバッファは、セル順序付けの最中に十分な空き空間が利用可能であることを保証する。したがって、セル順序付けバッファの空き空間が事前設定閾値より大きい、例えば、セル順序付けバッファの実際のデータ量が許容可能なデータ量の2分の1未満であるときにのみ、完全待ち行列の中のパケット記述子に従って対応するセル情報をセル順序付けバッファに挿入するように構成してもよい。
【0039】
ここで、セル・シーケンス番号に従って、抽出したセル情報をセル順序付けバッファの中で順序付けするステップは、特に、以下のようであってもよい。即ち、セル順序付けバッファは、パケット再構築を実施するために順序付けしたセルを1つずつ読み取る読取ポインタと、セル順序付けを現在実施しているパケットの開始位置を常に指す書込ポインタを維持する。したがって、当該書込ポインタにセル・シーケンス番号を追加することによって、挿入された当該セル情報のオフセット位置を計算することができ、当該パケット内の挿入された当該セル情報の位置(即ち、パケット内の正しい位置)を当該オフセット位置に従って調節し、正しく順序付けられたセルの情報を取得する。
【0040】
105で、当該正しく順序付けられたセルでパケット再構築を実施する。例えば、その詳細は以下の通りである。即ち、再構築リソースを当該正しく順序付けられたセルの情報が属するパケットに割り当て、当該セル順序付けバッファの中の正しく順序付けられたセルの情報を1つずつ読み取り、読み取ったセル情報に従って対応するセル・データを取得し、割り当てられた再構築リソースを用いてパケット再構築をセル・データに対して実施する。
【0041】
効率を改善するために、当該正しく順序付けられたセルの情報が属するパケットを少なくとも2つの再構築リソースに割り当ててもよい。リソース節約のために、再構築リソースをリソース・プールにおいて管理し、必要なとき、即ち、再構築を行うときにのみ各ソースに割り当てる。例えば、順序付けバッファ内のセルを正しく順序付けした後、パケット再構築を要求する識別信号(例えば、FIFO_RDY信号)をパケット再構築機構に送信してもよく、パケット再構築機構は、パケット再構築を要求する識別信号を受信した後に、順序付けバッファにおいてセルのパケット再構築を開始する。
【0042】
勿論、少なくとも2つのセル順序付けバッファが存在するとき、パケット再構築機構は、パケット再構築を要求する複数の識別信号を同時に受信してもよい。その場合、パケット再構築機構が、セル順序付けバッファを選択してパケットのCoSに従うプロセスを実施してもよい。即ち、この時点で、当該正しく順序付けられたセルでパケット再構築を実施するステップが特に以下を含んでもよい。即ち、パケットのCoSに従ってセル順序付けバッファを選択し、選択されたセル順序付けバッファの中の正しく順序付けられたセルの情報を1つずつ読み取り、読み取ったセル情報に従ってセル・データを抽出しパケット再構築を実施する。
【0043】
場合によっては、リソースを節約し、効率を改善し、特定のパケットで大量の時間を無駄にすることを回避するために、パケット再構築の時間を監視し、パケット再構築がタイムアウトしたとき当該パケットを破棄する。例えば、パケットの宛先ポートに最初に到着したセルの到着時刻(例えば、当該到着時刻をローカル・タイム・スタンプでスタンプしてもよい)と現在時刻の差分が事前設定された第2の閾値より大きいかどうかを判定してもよく、大きい場合には、当該パケット再構築がタイムアウトしたかどうかを判定して当該パケットを破棄し、そうでない場合には、パケット再構築がタイムアウトしていないと判定し、パケットの再構築を続ける。
【0044】
ここで、再構築超過時間はさらに、ファブリック・スイッチ遅延の推定時間を含んでもよい。ファブリック・スイッチ遅延を、パケット・シーケンス番号に従って推定してもよい。詳細については、先行技術を参照されたい。それらの説明はここでは省略する。次に、パケットがファブリック・スイッチ内であまりに長く遅延した場合には、待機して再構築タイムアウトとするケースで破棄するのではなく、すぐに破棄してもよい。即ち、場合によっては、正しく順序付けられたセルをパケットに再構築する前に、当該方法はさらに、ファブリック・スイッチ遅延の推定値が事前設定された第3の閾値を超過したと判定したときに、パケットを破棄するステップを含んでもよい。ここで、上記第2の閾値と第3の閾値を実際の適用要件に従って設定してもよい。
【0045】
例えば、特定のパケット順序付け待ち行列の先頭にあるパケットは123のパケット・シーケンス番号を有し、当該パケット(即ち、パケット・シーケンス番号が123であるパケット)には未到着のセルが存在する。このケースでは、124のパケット・シーケンス番号を有するパケットのような後続のパケットは、その全てのセルが到着した場合であっても、再構築することはできず、パケット・シーケンス番号が123であるパケットが全てのセルを受信した後に処理されるか、または、パケット・シーケンス番号が123であるパケットがタイムアウトを待機しているときに破棄されるにすぎない。タイムアウトの待機には通常長時間が必要であるので、パケット・シーケンス番号が123である特定のセルがファブリック・スイッチにおいて特に長期間遅延するときには、パケット・シーケンス番号が123であるパケットのタイムアウトを待機する必要はないが、ファブリック・スイッチ遅延の推定値が事前設定された第3の閾値を超過するかどうかを判定する必要はある。例えば、順序付け待ち行列の中のパケット・シーケンス番号が256であるパケットのセルをこの時点で受信した場合、256と123の差は第3の閾値(例えば、第3の閾値は100に設定される)より大きいので、パケット・シーケンス番号が123であるパケットのタイムアウトを待機する必要はなく、パケット・シーケンス番号が123であるパケットをすぐに破棄する。
【0046】
さらに、効率を改善するために、上述の再順序付けおよび再構築のプロセスを複数の並列な再構築および再順序付けエンジンに分割して、様々なCoSのユニキャストまたはマルチキャストのデータ・ストリームをサポートしてもよいことに留意されたい。ここで、パケットのCoSは、パケット優先度に対応する。
【0047】
本実施形態では、受信したセルをSIDに従って前処理し、受信したセルがパケット再構築データベースに挿入されるかどうかを判定し、パケット・シーケンス番号およびセルのセル・シーケンス番号に従って当該データベース内のセルを直接順序付けし、最後にパケット再構築を実現する。この解決策ではソースに従ってパケットを直接再順序付けし再構築できるので、時間同期に基づいてパケットを再順序付けし再構築する先行技術と比較したとき、高性能な装置に適している。さらに、この解決策では受信したセル(即ち、再構築を待機しているパケット)を制御し管理できるので、リソースの利用率は高く、メモリと制御リソースはあまり占有されない。
【0048】
実施形態2
以降、実施形態1に従って説明した方法を、種々の例を用いてさらに詳細に説明する。図2Aは、パケット再構築および再順序付けのプロセスのアーキテクチャ図であり、図2Aに示すように、主に以下のステップを含む。即ち、ステップ1で、セルが宛先ポートに到着した後に、メモリ割当てモジュールが受信したセルにロード・メモリを割り当て、前処理モジュールがSIDに従ってセルのセル・データをロード・メモリに格納し、セルのセル情報をセルのSIDに従って分類し、当該分類に従って、セル情報をそれぞれ異なるIFに格納する。例えば、図2Aに示すように、セル情報を、ブロードキャスト・クラスに従って分類し、ユニキャスト・データである場合にはユニキャスト入力FIFO(UIF)待ち行列に入れ、マルチキャスト・データの場合にはマルチキャスト入力FIFO(MIF)待ち行列に入れてもよい。ここで、セル情報は、SID、ローカル・タイム・スタンプ、ロード・メモリのインデックス値、パケット・シーケンス番号およびセルのセル・シーケンス番号のような幾つかのセル関連の情報を含んでもよい。
【0049】
前処理モジュールは、UIF待ち行列およびMIF待ち行列におけるセル情報をそれぞれSID、ローカル・タイム・スタンプおよびPF待ち行列の状態に従って処理して、セル情報をパケット順序付けモジュールのパケット再構築データベースに挿入するかどうかを判定する。ここで、UIF待ち行列とMIF待ち行列は、パケット再構築データベースにおける対応する処理モジュールを有する。例えば、図2Bに示すように、UIF待ち行列はパケット再構築データベースにおける「ユニキャスト」モジュールに対応し、MIF待ち行列はパケット再構築データベースにおける「マルチキャスト」モジュールに対応する。
【0050】
ステップ2のパケット順序付けでは、パケット順序付けモジュールが、様々なソースにおけるパケットをそれぞれ順序付けして正しく順序付けされたパケットを取得する。例えば、再順序パケット配列バッファにおけるパケット記述子をパケット・シーケンス番号に従って順序付けしてもよく、図2Aの「CoS0、CoS1、CoS2」を参照すると、パケット再構築データベースにおいて同じパケット・シーケンス番号を有するセルを同じパケット順序付け待ち行列に入れる。図2Aでは、CoS0、CoS1およびCoS2は、それぞれ、異なるパケットのCoSのパケット順序付け待ち行列を表す。このケースでは、パケットは正しく順序付けされるが、パケット内のセルは依然として乱雑な状態にある。即ち、CoS0、CoS1およびCoS2は正しく順序付けられているが、その中のセルは依然として乱雑な状態にある。
【0051】
ステップ3のセル順序付けでは、セル順序付けモジュールは様々な完全なパケットの中のセルをそれぞれ順序付けて、正しく順序付けられたセルを取得する。ここで、完全なパケットとは、その中の全てのセルが受信されたことを示す。
【0052】
ステップ4のパケット再構築では、パケット再構築モジュールは正しく再構築されたセルを完全なパケットに再構築する。図2Aに示すように、この時点で、メモリ割当ユニットは再構築リソースをパケット再構築モジュールに割り当ててもよい。次に、図2Aに示すように、パケット再構築モジュールは、セル順序付けモジュールの中の正しく順序付けられたセルの情報を1つずつ読み取り、読み取ったセル情報に従ってセル・データをロード・メモリから抽出して、パケットを再構築し、再構築したパケットを出力する。
【0053】
上述の再順序付けおよび再構築プロセスをさらに複数の並列な再構築エンジンに分割して、様々なCoSのユニキャストまたはマルチキャストトラフィックをサポートしてもよい。
【0054】
ここで、ロード・メモリの設計により、パケット再構築モジュールからの読取要求が1回のクロック・サイクルで満たされることに留意されたい。パケット再構築プロセスに割り込むことはできないので、パケット再構築モジュールにはパケット全体を収容できるFIFO待ち行列は必要でなく、2乃至4個のセルだけを収容できるFIFO待ち行列が必要である。パケットの再構築を開始した後、別のパケットの再構築を開始する前にパケットの再構築が完了する。
【0055】
さらに、メモリ割当ユニットを主に使用して、以下の分類のメモリ、即ち、セル記述子、パケット記述子配列、(マルチキャスト・データのための)MGID待ち行列メモリを割り当てて再利用する。メモリの各分類は、割り当て可能なバッファを管理するための少なくとも1つのFIFO待ち行列を含む。各FIFO待ち行列は、1つのバッファ・エントリを1つのクロック期間内に割り当てることができるものとする。
【0056】
パケットを待ち行列から取り出した後、パケット順序付けモジュールは、パケットをパケット再利用モジュールに送信し、パケット再利用モジュールが当該パケット内のセルを1つずつセル再利用モジュールに送信する。パケットが破棄されたとき、当該パケットはパケット再利用モジュールに送信され、パケット再利用モジュールは同じ処理を実施して当該パケットを破棄する。一方、破棄されたパケットよりも小さいパケット・シーケンス番号を有し依然としてパケット再構築データベースに存在する全てのパケットも破棄される。
【0057】
以降、ユニキャストを例としてさらに詳細な説明を行う。図2Bを参照すると、具体的な流れが以下を含んでもよい。
【0058】
201で、ソース・ポートがパケットをセルに分割し、各セルに対して対応するパケット・シーケンス番号とセル・シーケンス番号を割り当てる。例えば、ソース・ポートで、同一の宛先ポートに向かう2つのパケットをセルに分割する。第1のパケットはシーケンス番号がそれぞれ(1、1)、(1、2)、(1、3)および(1、4)である4つのセルに分割され、第2のパケットはシーケンス番号がそれぞれ(2、1)、(2、2)、(2、3)、(2、4)および(2、5)である5つのセルに分割される。括弧では、1番目の数字はパケット・シーケンス番号であり、2番目の数字はセル・シーケンス番号である。
【0059】
ソース・ポートで、パケット・シーケンス番号を各セルに挿入し、データ・ストリームに基づいて維持する。例えば、ユニキャスト・データの場合には、パケット・シーケンス番号が、宛先ポートとパケットのCoSに従って維持される。マルチキャスト・データの場合には、パケット・シーケンス番号がMGIDおよびパケットのCoSに従って維持される。
【0060】
202で、ソース・ポートはファブリック・スイッチを介してセルを宛先ポートに送信する。当該セルは、SID、パケット・シーケンス番号およびセル・シーケンス番号を保持する。
【0061】
203で、宛先ポートの前処理モジュールがセルを受信した後、受信したセルを到着のローカル・タイム・スタンプでスタンプし、メモリ割当てモジュールにより割り当てられたロード・メモリにセルのセル・データを格納し、対応するロード・メモリのインデックス値を割り当て、それに基づいて対応するセル・データをロード・メモリから取得することができる。
【0062】
204で、宛先ポートの前処理モジュールがSIDに従ってセルのセル情報をUIF待ち行列に挿入する。当該セル情報が、SID、ローカル・タイム・スタンプ、ロード・メモリのインデックス値、パケット・シーケンス番号およびセルのセル・シーケンス番号のような幾つかのセル関連の情報を含んでもよい。
【0063】
205で、宛先ポートの前処理モジュールがSID、パケット・シーケンス番号、およびPF待ち行列の状態に従って、UIF待ち行列内のセル情報を前処理して、セル情報をパケット再構築データベースに挿入するかどうかを判定する。
【0064】
ここで、図2Cを参照すると、パケット再構築データベースは、SDMとSQMから構成される。SDMは、各々がSQM内のソース待ち行列に対応するソース記述子を格納し、SQMは各々が再順序パケット配列バッファ内の複数のパケット記述子に対応するソース待ち行列を格納するうに構成され、SQMは、各々がパケットに属する最後に受信したセルのセル記述子を指す32乃至512個のパケット記述子を収容できる再順序パケット配列バッファを指すポインタを含む。各セル記述子は、ロード・メモリ内のセル・データを指すロード・メモリのインデックス値を含む。パケット・バッファに直接アクセスしてもよく、第1のパケット・シーケンス番号を現在のパケット・シーケンス番号から差し引く(パケット・シーケンス番号−第1のパケット・シーケンス)ことによってアクセス・インデックスを計算してもよい。
【0065】
SQMを、動的パケット記述子配列として構築してもよい。当該配列は、様々な容量のN個のクラスのメモリ・ブロックを含む。各ソース記述子は、かかるメモリ・ブロックを指すポインタを含み、メモリ・ブロックのクラスは必要なパケット記述子配列のサイズにより決まる。パケット記述子の挿入または削除には、或るメモリ・ブロックから別のメモリ・ブロックへの切り替えが必要となる場合がある。帯域幅を得るために、当該メモリ・ブロックは、同時読書きをサポートし、したがって、読取ポインタを維持する必要はない。なぜならば、パケットを抽出した後に、配列内のパケット記述子の位置がシフトし、読取ポインタは常に開始位置を指すからである。
【0066】
図2Dを参照すると、前処理の具体的な流れは以下のようであってもよい。A1では、宛先ポートの前処理モジュール(パケット準備)が、各PF待ち行列の深さが事前設定閾値より小さいかどうかを判定する。小さい場合には、ステップA2を実施し、そうでなければステップA7を実施する。ここで、特定のPF待ち行列の深さが事前設定閾値より小さいとき、これは、遅延すべき多くのセルをバッファするのに十分な空間がPF待ち行列にあることを意味する。当該閾値を実際の適用要件に従って設定してもよい。
【0067】
A2では、各PF待ち行列の深さが事前設定閾値より小さい場合に、宛先ポートの前処理モジュールは、UIF待ち行列の先頭セル情報に対応するセルをローカル・タイム・スタンプに従って処理するかどうかを判定し、処理する場合には、ステップA3を実施し、そうでない場合にはステップA9を実施する。
【0068】
A3では、UIF待ち行列の先頭セル情報に対応するセルを処理する場合には、宛先ポートの前処理モジュールはIF待ち行列の先頭セル情報をポップして、ステップA4を実施する。
【0069】
A4では、宛先ポートの前処理モジュールが、IF待ち行列のポップされた先頭セル情報に対応するセルまたはPF待ち行列のポップされた先頭セル情報に対応するセルがタイムアウトしたかどうかを判定し、タイムアウトした場合には、ステップA5を実施し、そうでない場合にはステップA10を実施する。
【0070】
A5では、セルがタイムアウトした場合には、宛先ポートの前処理モジュールが先頭セル情報に対応するセルおよび当該セルが属するパケットを再利用し、例えば、先頭セル情報に対応するセルをセル再利用モジュールに送信し、当該セルが属するパケットをパケット再利用モジュールに送信する。ここで、セル再利用モジュールは主にセルを再利用するために使用され、パケット再利用モジュールは主にパケットを再利用するために使用される。
【0071】
A6では、どのPF待ち行列の長さも事前設定閾値より短いというわけではない場合には、宛先ポートの前処理モジュールは、当該オーバフローPF待ち行列の先頭セル情報に対応するセルをローカル・タイム・スタンプに従って処理するかどうかを判定し、処理する場合には、ステップA7を実施し、そうでない場合にはステップA8を実施する。ここで、オーバフローPF待ち行列は事前設定閾値より大きい深さのPF待ち行列を指す。
【0072】
A7では、当該オーバフローPF待ち行列の先頭セル情報に対応するセルを処理しない場合には、前処理モジュールはオーバフローPF待ち行列の先頭セル情報をポップし、先頭セル情報に対応するセルを再利用し、例えば、先頭セル情報に対応するセルをセル再利用モジュールに送信し、ステップA2に戻る。
【0073】
A8では、当該オーバフローPF待ち行列の先頭セル情報に対応するセルを処理する場合には、前処理モジュールはIF待ち行列の当該先頭セル情報をポップし、当該先頭セル情報をPF待ち行列の1つにプッシュして、ステップA9を実施する。
【0074】
A9では、前処理モジュールが最も満杯なPF待ち行列の先頭セル情報をポップして、ステップA4に戻る。
【0075】
A10では、セルがタイムアウトしていない場合には、前処理モジュールは当該セルに対応する先頭セル情報をポップし、SIDに基づいてパケット再構築データベース内のSDMを読み取り、ステップA11を実施する。
【0076】
A11では、前処理モジュールは、先頭セル情報に対応するセルのパケット・シーケンス番号がSDM内の最大オープン・パケット・シーケンス番号より大きいかどうかを判定し、大きい場合には、ステップA12を実施し、そうでない場合にはステップA13を実施する。A12では、前処理モジュールが先頭セル情報をSDMに挿入する。A13では、前処理モジュールが先頭セル情報をPF待ち行列の1つに挿入する。
【0077】
上記の前処理の流れから分かるように、一般に前処理モジュールは、現在のオープン・パケット処理ウィンドウに配置されていないセルを、オープン・パケット処理ウィンドウが当該セルをカバーするまで遅延させる。
【0078】
場合によっては、PF待ち行列をチェックするための監視機構を設けてもよい。長時間アクセスされていない空でないPF待ち行列があることがチェックされた場合には、当該監視機構が前処理モジュールをトリガして当該PFを優先的に処理する。
【0079】
さらに、PF待ち行列の空間を十分に利用し、PF待ち行列からデータを抽出することによって生成されるバーストを回避するために、セルが必要な遅延時間に従ってPF待ち行列を複数の並列な待ち行列に分割してもよい。現在のパケット再構築データベースにおける最大パケット・シーケンス番号を現在のセルのパケット・シーケンス番号から差し引くことによって、セル遅延時間を推定してもよく、差分が大きいほど、セルが必要な遅延時間が長くなる。
【0080】
206では、パケット順序付けモジュールは、パケット記述子を再順序パケット配列バッファに置き、パケット・シーケンス番号に従って再順序パケット配列バッファにおいてパケット記述子を順序付けし、パケット再構築データベースにおいて同一のパケット・シーケンス番号を有するセル情報をパケット記述子に対応するパケット順序付け待ち行列に置く。この時点で、パケットは正しく順序付けられているが、その中のセルは依然として乱雑な状態にある。
【0081】
207では、正しく順序付けられたセルが完全なセルである場合には、セル順序付けモジュールが、セル・シーケンス番号に従って正しく順序付けられたパケットの中のセル情報を順序付けして正しく順序付けられたセルの情報を取得する。ここで、セル順序付けモジュールを複数の同期完全待ち行列として構築してもよく、各CoS(優先度とも称する)は、その制御論理部とデータ・バッファ待ち行列を用いて独立に動作してもよい。
【0082】
セル順序付けモジュールは、各完全なパケットのパケット記述子をパケット順序付け待ち行列から抽出し、当該記述子をブロードキャスト・クラスおよびパケットのCoSに従って対応する完全待ち行列に追加する。次に、セル順序付けモジュールは、完全待ち行列の中の当該パケット記述子に従って、対応するセル情報をセル順序付けバッファに挿入し、セル・シリアル番号に従って、抽出したセル情報をセル順序付けバッファにおいて順序付けする。
【0083】
ここで、完全なパケットとは、パケットの全てのセルがパケット再構築データベースにより受信されたことを意味する。セル順序付けバッファは、約20Kバイトの2つの巨大パケットを収容してもよい。データ量がその半分より小さいときにのみ、パケット記述子が抽出され、対応するセル情報が順序付けられる。
【0084】
図2Eを参照すると、図2Eは、セル順序付け機構、読取ポインタ(RD_PTR)および書込ポインタ(WR_PTR)を保持するセル順序付けバッファを示す図である。書込ポインタは、常に、現在順序付けられているパケットの開始位置を指し、書込ポインタをセル・シーケンス番号に加えることによって、挿入されたセル情報のオフセット位置を計算する。パケットに対するセル情報の順序付けは、パケットのサイズがセル順序付けバッファ内の空白位置のサイズより小さくなるまで実施されない。次のパケットに対するセル情報の順序付けを完了した後、読取ポインタが現在のパケットのセル情報を1つずつ読み取り始める。ここで、図2Eの「EOP」はパケット内の最後のセルを表し、「SOP」はパケットの開始位置を表す。
【0085】
ここで、連結セルを以下のように処理してもよい。即ち、第1のパケットを挿入したとき、第1のパケットの最後のセルのポインタを入力FIFOに2回挿入してもよい。一方、マークをセル同期バッファ(セル順序付けバッファ)に追加して、再構築機構に対して第1のセルを抽出できないことを示してもよい。第2のセルの再構築を完了した後、データが破棄される。
【0086】
この理由は、ソースの末端がパケットをセルに分割したとき、最後のセルは通常、データのブラック・ホールを有するからである。即ち、パケットは長さが限られているため幾つかの完全なセルに分割することはできず、最後のセルは以前の完全なセルよりあまり有効なデータを有さない。かかるセルにより、送信と処理の最中にリソースが無駄になる。最適化手段ではパケットをパケットごとにセルに分割せず、連続的なパケットをデータ・ストリームとみなし、当該データ・ストリームをセルに分割し、全てのセルが完全なデータ・セグメントを有するようにする。しかし、このケースでは、幾つかのセルは確実に以前のパケットのデータの最後のセグメントと次のパケットのデータの最初のセグメントの両方を含む。以前のパケットのデータの最後のセグメントと次のパケットのデータの最初のセグメントの両方を含むセルは、連結セルと呼ばれる。セル再順序付けの最中に、セルの属性は既知であり、「SOP」と「EOP」が消される。連結セルは以前のパケットのEOPセルだけでなく、次のパケットのSOPセルでもある。したがって、かかる連結セルを受信した後、当該セルを入力FIFO待ち行列に2回挿入する。一方は以前のパケットのEOPセルの役割を担い、他方は次のパケットのSOPセルの役割を担う。結果として、セルを再順序付けする必要があるとき、2つのセルはセル順序付けモジュールに連続的に存在する。しかし、この2つのセルの両方をパケット再構築ユニットに送信することはできない。なぜならば、この2つのセルは同じ内容を有するからである。したがって、EOPとして識別されるフラグを有する第1のセルをパケット再構築モジュールに送信することはできない。むしろ、第2のセルのパケット再順序付けが完了した後、第1のセルは破棄され、データの1つのコピーのみがパケット再構築モジュールに送信されることが保証される。パケットの再構築の準備が出来たとき、セル順序付けバッファは、パケット再構築を要求する識別信号(例えば、FIFO_RDY信号)を再構築機構に送信する。
【0087】
(セル順序付けバッファおよび完全待ち行列を含む)セル順序付け機構が複数の並列なFIFO待ち行列から構成され、これらのFIFO待ち行列はパケットのCoS(優先度とも称する)とブロードキャスト・クラスに基づいて区別され、それにより順序付け機構による追加の待ち行列の要求が排除されリソースが節約されることに留意されたい。
【0088】
208では、パケット再構築を要求する識別信号(例えば、FIFO_RDY信号)を受信した後、パケット再構築モジュールは、セル順序付けバッファの中の正しく順序付けられたセル情報を1つずつ読み取り、読み取ったセル情報に従って、パケット再構築に対するセル・データを抽出する。
【0089】
パケット再構築を要求する識別信号をパケット再構築モジュールに同時に送信する複数のセル順序付けバッファが存在しうる。このケースでは、パケット再構築モジュールは、パケットのCoS(即ち、優先度)に基づいて、パケット再構築を要求する識別信号(例えば、FIFO_RDY信号)を送信した複数のセル順序付けバッファの間で調停して、正しいセル順序付けバッファを選択し、選択されたセル順序付けバッファにおいて正しく順序付けられたセルの情報を1つずつ読み取り、読み取ったセル情報(特に、セル情報の中のロード・メモリのインデックス値)に従って、セル・データをロード・メモリから抽出し、パケットを再構築してもよい。
【0090】
以上の説明から分かるように、本実施形態では、受信したセル情報をSIDに従って前処理し、受信したセルをパケット再構築データベースに挿入するかどうかを判定し、セル情報におけるパケット・シーケンス番号とセル・シーケンス番号に従って当該データベース内のセル情報を直接順序付けし、最後に、順序付けしたセル情報に従って対応するセル・データを抽出し、パケット再構築を実現する。本解決策ではソースに従ってパケットを直接再順序付けし再構築できるので、時間同期に基づいてパケットを再順序付けし再構築する先行技術と比較して高性能な装置に適している。さらに、本解決策では、受信したセル(即ち、再構築を待機しているパケット)を制御し管理できるので、リソースの利用率は高く、メモリと制御リソースはあまり占有されない。
【0091】
実施形態3
実施形態2で説明した方法はマルチキャスト・データにも適している。マルチキャストは主に以下の点でユニキャストと異なる。即ち、ユニキャスト・パケットではSDMを必要とし、{優先度、ソース・ポート番号}をインデックスとして使用する。マルチキャスト・パケットはMGID記述子メモリを必要とし、{優先度、MGID、ソース・ポート番号}のハッシュ値をインデックスとして使用する。ここで、MGIDとは同一の複製領域に属する1群の宛先ポートを意味する。したがって、マルチキャストでは、ユニキャストのSQMがMGID待ち行列メモリで置き換えられている。即ち、マルチキャストに対するパケット再構築データベースは特に、以下のようであってもよい。
【0092】
即ち、マルチキャストに対するパケット再構築データベースは、MGID記述子メモリとMGID待ち行列メモリを備えてもよい。MGID記述子メモリは、MGID記述子を格納し、{優先度、MGID、ソース・ポート番号}のハッシュ値をインデックスとするように構成され、MGID待ち行列メモリはMGID記述子に対応するMGID待ち行列を格納するように構成される。MGID待ち行列メモリは、再順序パケット配列バッファを指すポインタを備えてもよく、当該バッファは順序付けを待機しているセルのパケット記述子を格納し、当該パケット記述子の各々は当該パケットに属する最後に受信したセルのセル記述子を指す。ここで、MGID待ち行列メモリを、Mを正の整数として、様々な容量のM個のクラスのメモリ・ブロックを含む動的パケット記述子配列として構築してもよい。各MGID記述子は、かかるメモリ・ブロックを指すポインタを含み、そのクラスは、必要なパケット記述子配列のサイズにより決まる。
【0093】
MGID記述子メモリとMGID待ち行列メモリにアクセスするためにハッシュ関数が使用されるので、メモリの行は複数のソース(即ち、{優先度、MGID、ソース・ポート番号})に対応してもよいことに留意されたい。メモリの行が1つのソースに適用されるので、新たなマルチキャスト・ソースに対してリソースが適用されるとき、当該行が解放されることをチェックするという新たな要件が提供される。この問題を解決するために、これらの情報を維持するための別のメモリが必要である。
【0094】
ハッシュ関数が使用されるので、リソース競合が生じうることにさらに留意されたい。したがって、フル・アソシアティブ犠牲テーブル(FAVT)を維持し、リソース競合が生じたとき、リソース競合が生じたセルを別のMGID待ち行列にプッシュするか、または、事前設定されたFAVTに従って破棄するようにしてもよい。FAVTが満杯になるのを防ぐために閾値を設定してもよい。当該閾値を本実施形態では第1の閾値と称する。FAVTにおける情報の量が第1の閾値を超えたとき、制御情報の一部をアクティブにしてソースに送信し、当該宛先ポートに送信されたマルチキャスト・データのトラフィックを削減する。
【0095】
マルチキャストの順序付け機構および再構築機構はユニキャストのものと同じであるので、それらの説明はここでは省略する。詳細については、実施形態2を参照されたい。
【0096】
以上の説明から分かるように、本発明の実施形態で提供するパケット再構築および再順序付けの方法は、ユニキャストおよびマルチキャストの両方に適しており、実施形態2と同じ有利な効果を奏することができる。
【0097】
実施形態4
特定のパケットの再構築および再順序付けに大量の時間が消費されることを防ぐ(即ち、トラフィックのタイムアウトを回避する)ために、上の方法の実施形態に基づいて、セルと当該セルが属するパケットがファブリック・スイッチにおいて、または、パケット再構築の最中に、大量の時間を消費しないことをローカル・タイム・スタンプに従ってさらにチェックしてもよい。詳細は以下の通りである。
【0098】
(I)再構築タイムアウト
パケットがパケット再構築の最中に大量の時間を消費しないことをチェックするために、各パケット記述子が、パケットの全てのセルのうち宛先ポートに最初に到着したセルの到着時刻を示す最早セル・タイム・スタンプを含むものとする。現在時刻と最早セル・タイム・スタンプの差分が事前設定された第2の閾値より大きい場合には、当該パケットを再構築タイムアウトとマークする。当該パケットがパケット記述子配列の先頭に到着したとき、パケットの全てのセルがまだ受信されていない場合であっても、当該パケットを待ち行列からポップして破棄する(パケットの他のセルの受信を待機しない)。それ以外の場合、パケットが順序付け配列の先頭に到着する前に、パケットが再構築タイムアウトしたかどうかを判定せず、以下の動作を実施する。即ち、各パケットの第1のセルを挿入したとき、パケット記述子内の最早セル・タイム・スタンプのフィールドを更新し、パケットがパケット記述子配列の先頭に到着したとき、最早セル・タイム・スタンプを、当該パケットが属するソース記述子に複製する。セルが挿入されたとき、到着したセルがどのパケットに属するかに関わらず、ソース記述子内の最早セル・タイム・スタンプをチェックする。例えば、特定のソースに到着データがないケースでは、サイレント・ソース検出(SSD)によりかかるチェックをトリガする。タイムアウト・パケットが、処理のためにパケット再利用機構に転送される。
【0099】
(II)ファブリック・タイムアウト
ファブリック・スイッチ内で大量の時間を消費するパケットを、再構築タイムアウトを待機せずにすぐに破棄することができる。即ち、パケット再構築および再順序付けの方法はさらに以下を含んでもよい。即ち、ファブリック・スイッチの遅延の推定値(即ち、ファブリック・スイッチ内のパケットの送信時間)が事前設定された第3の閾値を超えたと判定したとき、宛先ポートは当該パケットを破棄する。ここで、ファブリック・スイッチ内のパケットの送信時間を、パケット・シーケンス番号に従って宛先ポートで推定してもよい。詳細については先行技術を参照されたい。それらの説明はここでは省略する。
【0100】
以上の説明から分かるように、本実施形態は実施形態2および実施形態4と同じ有利な効果を奏するだけでなく、ファブリック・スイッチにおけるパケットの送信時間とパケット再構築時間をローカル・タイム・スタンプに従って監視し、それにより、あまりに長い遅延の発生を回避し、パケット再構築および再順序付けの効率改善を支援する。
【0101】
実施形態5
以上の方法をより良く実現するために、本発明の諸実施形態ではさらに、特に宛先ポートとして使用できるネットワーク装置を提供する。図3Aを参照すると、ネットワーク装置は、受信ユニット301、前処理ユニット302、パケット順序付けユニット303、セル順序付けユニット304および再構築ユニット305を備える。
【0102】
受信ユニット301は、ソース・ポートが送信したセルを受信するように構成される。当該セルは、SID、パケット・シーケンス番号およびセル・シーケンス番号を保持し、SIDを特にソース・ポート番号として使用してもよい。前処理ユニット302は、受信ユニット301により受信したセルをSIDに従って前処理して、セルをデータベースに挿入するかどうかを判定するように構成される。パケット順序付けユニット303は、当該パケット・シーケンス番号に従ってパケット再構築データベース内のセルを順序付けて当該正しく順序付けられたパケットを取得するように構成される。セル順序付けユニット304は、パケットを完全なパケットと決定した場合には、パケット順序付けユニット303により取得した正しく順序付けられたパケットのセルをセル・シーケンス番号に従って順序付けし、正しく順序付けられたセルを取得するように構成される。再構築ユニット305は、セル順序付けユニット304により取得された正しく順序付けられたセルに対してパケット再構築を実施するように構成される。ここで、セルはセル・データとセル情報を含んでもよい。リソースを節約するために、セル情報のみを順序付けプロセスの最中に操作し、パケット再構築を再構築ユニット305により実施するときだけ、対応するセル・データをセル情報に従って抽出し、再構築を実施する。
【0103】
図3Bを参照すると、前処理ユニット302が、データ格納サブユニット3021、情報挿入サブユニット3022および判定サブユニット3023を備えてもよい。
【0104】
データ格納サブユニット3021は、受信ユニット301により受信したセルを到着時刻のローカル・タイム・スタンプでスタンプし、当該セルのセル・データをSIDに従ってロード・メモリに格納し、対応するロード・メモリのインデックス値を構成するように構成される。情報挿入サブユニット3022は、受信ユニット301により受信したセルのセル情報をIF待ち行列に挿入するように構成される。セル情報は、SID、ローカル・タイム・スタンプ、ロード・メモリのインデックス値、パケット・シーケンス番号およびセル・シーケンス番号のような、セルの情報を含む。判定サブユニット3023は、SID、当該パケット・シーケンス番号、およびPF待ち行列の状態に従って、情報挿入サブユニット3022によりIF待ち行列に挿入されたセル情報を処理し、セル情報をパケット再構築データベースに挿入するかどうかを判定するように構成される。例えば、その詳細が以下のようであってもよい。
【0105】
判定サブユニット3023は特に、各PF待ち行列の深さが事前設定閾値より小さい場合には、IF待ち行列の先頭セル情報に対応するセルのパケット・シーケンス番号と現在処理されているパケットの最小パケット・シーケンス番号の間の差分が第4の閾値より小さいかどうかを判定し、小さい場合には、IF待ち行列の先頭セル情報をポップし、小さくない場合には、IF待ち行列の先頭セル情報をPF待ち行列の1つにプッシュし、最も満杯なPF待ち行列の先頭セル情報をポップし、IF待ち行列のポップされた先頭セル情報に対応するセルまたはPF待ち行列のポップされた先頭セル情報に対応するセルがタイムアウトしたかどうかを判定し、タイムアウトした場合には、当該セル情報に対応するセルおよび当該セルが属するパケットを再利用し、タイムアウトしていない場合には、当該セルのパケット・シーケンス番号がパケット再構築データベースの同一ソースの最大オープン・パケット・シーケンス番号より小さいとき、当該セル情報をパケット再構築データベースに挿入し、当該セルのパケット・シーケンス番号がパケット再構築データベースの同一ソースの最大オープン・パケット・シーケンス番号より大きいとき、当該セル情報をPF待ち行列の1つに挿入するように構成される。
【0106】
当該判定サブユニットはさらに、特定のPF待ち行列の深さが事前設定閾値より大きい場合には、オーバフローPF待ち行列の先頭セル情報に対応するセルのパケット・シーケンス番号と現在処理されているパケットの最小パケット・シーケンス番号の差分が第4の閾値より小さいかどうかをローカル・タイム・スタンプに従って判定し、小さい場合には、当該オーバフローPF待ち行列の先頭セル情報に対応するセルを再利用し、IF待ち行列の先頭セル情報に対応するセルのパケット・シーケンス番号と現在処理されているパケットの最小パケット・シーケンス番号の差分が当該第4の閾値より小さいかどうかを判定するステップを実施し、小さくない場合には、IF待ち行列の当該先頭セル情報をPF待ち行列の1つにプッシュし、最も満杯なPF待ち行列の先頭セル情報をポップするステップを実施するように構成される。詳細については、実施形態1および2の前処理のフローと図2Dを参照されたい。
【0107】
具体的には、パケット再構築データベースをユニキャストとマルチキャストに対してそれぞれ設計してもよい。例えば、1つのパケット再構築データベースで、ユニキャストおよびマルチキャストに対するパケット再構築データベースをそれぞれ提供してもよい。ここで、ユニキャストに対しては、パケット再構築データベースがSDMとSQMを含んでもよい。SDMは、ソース記述子を格納しパケットのCoSとソース・ポート番号をインデックスとする、即ち、{パケットのCoS、ソース・ポート番号}をインデックスとして使用するように構成され、SQMは、ソース記述子に対応するソース待ち行列を格納するように構成される。SQMは、再順序パケット配列バッファを指すポインタを含んでもよく、当該バッファは順序付けを待機しているセルのパケット記述子を格納し、当該パケット記述子の各々は当該パケットに属する最後に受信したセルのセル記述子を指す。ここで、SDMとSQMは、Nを正の整数としてN個のクラスの様々な容量のメモリ・ブロックを含む動的パケット記述子配列により構築してもよい。
【0108】
マルチキャストに対しては、パケット再構築データベースは、MGID記述子メモリとMGID待ち行列メモリを備える。ソースMGID記述子メモリは、MGID記述子を格納しパケットのCoS、MGID、およびソース・ポート番号をインデックスとする、例えば、{パケットのCoS、MGID、ソース・ポート番号}のハッシュ値をインデックスとして使用するするように構成され、MGID待ち行列メモリは、MGID記述子に対応するMGID待ち行列を格納するように構成される。MGID待ち行列メモリは再順序パケット配列バッファを指すポインタを含んでもよく、当該バッファは順序付けを待機しているセルのパケット記述子を格納し、当該パケット記述子の各々は当該パケットに属する最後に受信したセルのセル記述子を指す。ここで、MGID記述子メモリとMGID待ち行列メモリは、Mを正の整数として、M個のクラスの様々な容量のメモリ・ブロックを含む動的パケット記述子配列である。
【0109】
MGID記述子メモリとMGID待ち行列メモリはハッシュ関数をサポートする。即ち、各プロセス(例えば、IF待ち行列、PF待ち行列、完全待ち行列、再順序パケット配列バッファおよびセル順序付けバッファ)は、ハッシュ関数を介して、MGID記述子メモリとMGID待ち行列メモリにアクセスするしてもよい。即ち、パケット順序付けユニット303は特に、ハッシュ関数を介して、MGID記述子メモリとMGID待ち行列メモリにアクセスするように構成される。
【0110】
ここで、ハッシュ関数を複数のハッシュ・バケットとして構築してもよい。ハッシュ関数を使用することによりリソース競合が生じうるので、FAVTを維持して、リソース競合が生じたとき、事前設定されたFAVTに従って、リソース競合を生じさせたセルを別のMGID待ち行列にプッシュするかまたは破棄できるようにする必要がある。そこで、図3Bに示すように、上記ネットワーク装置がさらに競合処理ユニット306を備えてもよい。
【0111】
競合処理ユニット306は、リソース競合が生じたとき、事前設定されたFAVTに従って、リソース競合が発生したセルを別のMGID待ち行列にプッシュするかまたは当該セルを破棄(即ち、再利用)するように構成される。具体的には、パケット順序付けユニット303がハッシュ関数を介してMGID記述子メモリとMGID待ち行列メモリにアクセスしたとき、リソース競合が生じた場合には、リソース競合が生じたセルを、事前設定されたFAVTに従って別のMGID待ち行列にプッシュするかまたは破棄する。
【0112】
さらに、FAVTが満杯になることを防ぐために、閾値をさらに設定してもよい。当該閾値を本発明の実施形態では第1の閾値と称する。FAVTにおける情報の量が第1の閾値を超えたとき、制御情報の一部をアクティブにしてソースに送信し、宛先ポートに送信されたマルチキャスト・データのトラフィックを削減する。
【0113】
そこで、図3Bに示すように、上記ネットワーク装置がさらに制御メッセージ送信ユニット307を備えてもよい。制御メッセージ送信ユニット307は、FAVT内の情報の量が事前設定された第1の閾値を超えたとき、宛先ポートをアクティブにして制御情報をマルチキャスト・ソースに送信して、当該宛先ポートに送信されたマルチキャスト・データのトラフィックを削減するように構成される。
【0114】
ここで、図3Bに示すように、セル順序付けユニット304が、エンキューイング・サブユニット3041、バッファリング・サブユニット3042および順序付けサブユニット3043を備えてもよい。
【0115】
エンキューイング・サブユニット3041は、パケット順序付けユニット302により順序付けされたパケットが完全なパケットであると判定されたとき、セルのブロードキャスト・クラスおよび優先度に従って完全なパケットのパケット記述子を対応する完全待ち行列に追加するように構成される。バッファリング・サブユニット3042は、完全待ち行列の中の当該パケット記述子に従って対応するセル情報を当該セル順序付けバッファに挿入するように構成される。順序付けサブユニット3043は、セル・シーケンス番号に従って、当該セル順序付けバッファにおいて抽出されたセル情報を順序付けするように構成される。
【0116】
ここで、当該セル順序付けバッファはパケット再構築のために順序付けられたセル情報を1つずつ読み取る読取ポインタと、セル順序付けが現在実施されているパケットの開始位置を常に指す書込ポインタを維持する。したがって、挿入された当該セル情報のオフセット位置を、書込ポインタをセル・シーケンス番号に追加することによって計算してもよく、当該パケット内の挿入された当該セル情報の位置がオフセット位置に従って調節され、正しく順序付けられたセルの情報が取得される。即ち、順序付けサブユニット3043は特に、挿入された当該セル情報のオフセット位置を、書込ポインタをセル・シーケンス番号に追加することによって計算し、パケット内の挿入された当該セル情報の位置をオフセット位置に従って調節するように構成される。
【0117】
ここで、図3Bに示すように、再構築ユニット305が、割当てサブユニット3051、読取サブユニット3052および再構築サブユニット3053を備えてもよい。
【0118】
割当てサブユニット3051は、セル順序付けユニット304(具体的には、順序付けサブユニット3043であってもよい)によって正しく順序付けされたセル情報が属するパケットを再構築リソースに割り当てるように構成される。読取サブユニット3052は、セル順序付けバッファの中の正しく順序付けられたセルの情報を1つずつ読み取るように構成される。再構築サブユニット3053は、読取サブユニット3052により読み取ったセル情報に従って対応するセル・データを取得し、割当てサブユニット3051により割り当てられた再構築リソースを用いて、取得したセル・データに対してパケット再構築を実施するように構成される。例えば、再構築サブユニット3053が、読取サブユニット3052により読み取ったセル情報に従って、データ格納サブユニット3021によりロード・メモリに格納されたセル・データを読み取ってもよい。さらに、効率を改善するために、正しく順序付けられたセルの情報が属するパケットを少なくとも2つの再構築リソースで割り当ててもよい。即ち、割当てサブユニット3051はさらに、少なくとも2つの再構築リソースを当該正しく順序付けられたセルの情報が属するパケットに割り当てるように構成される。
【0119】
ここで、リソースを節約するために、再構築リソースをリソース・プールで管理し、必要なとき、即ち、再構築を行うべきときにのみ各ソースに割り当てる。例えば、順序付けバッファ内のセルを正しく順序付けした後、パケット再構築を要求する識別信号(例えば、FIFO_RDY信号)をパケット再構築機構に送信してもよく、パケット再構築機構はパケット再構築を要求する識別信号を受信した後に、順序付けバッファにおいてセルのパケット再構築を開始する。
【0120】
勿論、少なくとも2つのセル順序付けバッファが存在するときには、パケット再構築機構が、パケット再構築を要求する複数の識別信号を同時に受信することがある。このケースでは、パケット再構築機構は、処理するセル順序付けバッファをパケットのCoSに従って選択してもよい。即ち、当該再構築ユニットはさらに選択サブユニット3054を備えてもよい。選択サブユニット3054は、パケットのCoSに従ってセル順序付けバッファを選択するように構成される。
【0121】
次に、割当てサブユニット3051は特に、再構築リソースを、選択サブユニット3054により選択されたセル順序付けバッファの中の正しく順序付けられたセルの情報が属するパケットに割り当てるように構成される。
【0122】
読取サブユニット3052は選択サブユニット3054により選択されたセル順序付けバッファの中の正しく順序付けられたセルの情報を1つずつ読み取るように構成される。
【0123】
特定のパケットの再構築および再順序付けに大量の時間が消費されることを防ぐ(即ち、トラフィックのタイムアウトを回避する)ために、セルと、当該セルが属するパケットがファブリック・スイッチにおいてまたはパケット再構築の最中に大量の時間を消費しないことをローカル・タイム・スタンプに従ってさらにチェックしてもよい。
【0124】
そこで、図3Bに示すように、上記ネットワーク装置はさらに破棄ユニットを備えてもよい。当該破棄ユニットは、パケット再構築がタイムアウトしたと判定したときにパケットを破棄するように構成される。
【0125】
当該破棄ユニットは特に、パケットの中の宛先ポートに最初に到着したセルの到着時刻と現在時刻の差分が事前設定された第2の閾値より大きいとき、パケット再構築がタイムアウトしたと判定するように構成される。その詳細が以下のようであってもよい。即ち、各パケット記述子は、パケットの全てのセルのうち宛先ポートに最初に到着したセルの到着時刻を示す最早セル・タイム・スタンプを含む。現在時刻と最早セル・タイム・スタンプの差分が事前設定された第2の閾値より大きい場合には、パケットを再構築タイムアウトとマークする。パケット記述子配列の先頭に到着したとき、パケットを、当該パケットの全てのセルがまだ受信されていない場合であっても、当該パケットを待ち行列からポップして破棄する(パケットの他のセルの受信を待機しない)。
【0126】
さらに、ファブリック・スイッチにおいてあまりに遅延したパケットをすぐに破棄することもできる。このケースでは、再構築タイムアウトを待たなくともよい。その詳細が以下のようであってもよい。即ち、受信ユニット301は特に、ファブリック・スイッチを介してソース・ポートにより送信されたセルを受信するように構成される。次に、上記破棄ユニットはさらに、ファブリック・スイッチの遅延の推定値が事前設定された第3の閾値を超えたと判定されたときに、パケットを破棄するように構成される。ここで、ファブリック・スイッチにおけるパケットの送信時間を、パケット・シーケンス番号に従って宛先ポートで推定することによって取得してもよい。詳細については先行技術を参照されたい。それらの説明はここでは省略する。
【0127】
上記第2の閾値と第3の閾値を実際の適用要件に従って設定してもよい。具体的には、上記ユニットをそれぞれ独立なエンティティとして実装してもよく、または、同一もしくは幾つかのエンティティとして実装してもよい。例えば、前処理ユニット302を実施形態2の前処理モジュールによって実装してもよく、パケット順序付けユニット303を実施形態2のパケット順序付けモジュールによって実装してもよく、セル順序付けユニット304を実施形態2のセル順序付けモジュールによって実装してもよく、再構築ユニット305を実施形態2のパケット再構築モジュールによって実装してもよく、上記破棄ユニットを実施形態2のパケット再利用モジュールと信号再利用モジュールによって実装してもよい、等である。上述のユニットの実装に関する前の実施形態を参照されたい。それらの説明はここでは省略する。
【0128】
以上の説明から分かるように、本実施形態におけるネットワーク装置の前処理ユニット302は受信したセルをSIDに従って前処理して、受信したセルをパケット再構築データベースに挿入するかどうかを判定する。次に、パケット順序付けユニット303とセル順序付けユニット304がパケット・シーケンス番号およびセルのセル・シーケンス番号に従ってデータベース内のセルを直接順序付け、最後に、再構築ユニット305が、順序付けしたセルに従ってパケット再構築を実施する。当該解決策ではソースに従ってパケットを直接再順序付けし再構築できるので、時間同期に基づいてパケットを再順序付けし再構築する先行技術と比較して高性能な装置に適している。さらに、当該解決策は受信したセル(即ち、再構築を待機しているパケット)を制御し管理できるので、リソースの利用率は高く、メモリと制御リソースはあまり占有されない。
【0129】
実施形態6
そこで、本発明の諸実施形態ではさらに、ソース・ポート装置と本発明の諸実施形態により提供したネットワーク装置とを備える通信システムを提供する。当該ネットワーク装置は、宛先ポートの役割を担う(即ち、当該ネットワーク装置は宛先ポート装置とも呼ばれる)。詳細については例えば前の実施形態を参照されたい。
【0130】
例えば、宛先ポートの役割を担う宛先ポート装置は、ソース・ポートが送信した、SID、パケット・シーケンス番号およびセル・シーケンス番号を保持するセルを受信し、受信したセルをSIDに従って前処理して当該セルをパケット再構築データベースに挿入するかどうかを判定し、パケット再構築データベースにおいてセルをパケット・シーケンス番号に従って順序付けして、正しく順序付けられたパケットを取得し、正しく順序付けられたセルが完全なセルである場合には、当該正しく順序付けられたパケットのセルを当該セル・シーケンス番号に従って順序付けて正しく順序付けられたセルを取得し、パケット再構築を正しく順序付けられたセルに対して実施するように構成される。ソース・ポートの役割を担うソース・ポート装置は、セルを宛先ポート装置に送信するように構成される。当該セルは、SID、パケット・シーケンス番号およびセル・シーケンス番号を保持する。
【0131】
ここで、宛先ポート装置は特に、受信したセルを到着時刻のローカル・タイム・スタンプでスタンプし、当該セルのセル・データを当該SIDに従ってロード・メモリに格納し、対応するロード・メモリのインデックス値を構成し、SID、ローカル・タイム・スタンプ、ロード・メモリのインデックス値、パケット・シーケンス番号およびセル・シーケンス番号を含む、セルのセル情報をIF待ち行列に挿入し、SID、ローカル・タイム・スタンプおよびPF待ち行列の状態に従ってIF待ち行列の中のセル情報を処理し、セル情報をセル再構築データベースに挿入すべきかどうかを判定するするように構成される。詳細については、以前の方法の実施形態と図2Dを参照されたい。上述の装置の実装については以前の実施形態を参照されたい。それらの説明はここでは省略する。
【0132】
以上の説明から分かるように、本実施形態における通信システムの宛先ポート装置は、受信したセルをSIDに従って前処理し、受信したセルをパケット再構築データベースに挿入するかどうかを判定し、パケット・シーケンス番号とセルのセル・シーケンス番号に従ってデータベースの中でセルを直接再順序付けし、最後に、パケット再構築を実現する。当該解決策ではソースに従ってパケットを直接再順序付けし再構築できるので、時間同期に基づいてパケットを再順序付けし再構築する先行技術と比較して高性能な装置に適している。さらに、当該解決策は受信したセル(即ち、再構築を待機しているパケット)を制御し管理できるので、リソースの利用率は高く、メモリと制御リソースはあまり占有されない。
【0133】
上述の実施形態における様々な方法を実装するためのステップの全部または一部を、コンピュータ読取可能記憶媒体に格納できるプログラムを通じて関連するハードウェアに指示することによって実現できることは当業者に理解される。記憶媒体には、ROM(Read Only Memory)、RAM(Random Access Memory)、磁気ディスク、光ディスク等を含めてもよい。
【0134】
以上で、本発明の諸実施形態で提供したパケットを再構築し再順序付けするための方法、装置、およびシステムを詳細に説明し、本発明の原理と実装形態を具体的な例により説明した。しかし、以上の実施形態の説明は、本発明の方法とその中心的な思想を理解するのを支援するにすぎない。一方、当業者は、本発明の思想に従って具体的な実装形態と適用範囲を変更してもよい。したがって、本明細書の内容は本発明に対する限定として解釈すべきではない。
【符号の説明】
【0135】
301 受信ユニット
302 前処理ユニット
3021 データ格納サブユニット
3022 情報挿入サブユニット
3023 判定サブユニット
303 パケット順序付けユニット
304 セル順序付けユニット
3041 エンキューイング・サブユニット
3042 バッファリング・サブユニット
3043 順序付けサブユニット
305 再構築ユニット
3051 割当てサブユニット
3052 読取りサブユニット
3053 再構築サブユニット
3054 選択サブユニット
306 競合処理ユニット
307 制御メッセージ送信ユニット
図1
図2A
図2B
図2C
図2D
図2E
図3A
図3B