(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-11-10
(54)【発明の名称】パケット処理方法及び装置、及びコンピュータ記憶媒体
(51)【国際特許分類】
H04L 1/00 20060101AFI20221102BHJP
H04L 47/431 20220101ALI20221102BHJP
【FI】
H04L1/00 B
H04L47/431
H04L1/00 E
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022515555
(86)(22)【出願日】2020-09-10
(85)【翻訳文提出日】2022-03-08
(86)【国際出願番号】 CN2020114600
(87)【国際公開番号】W WO2021047612
(87)【国際公開日】2021-03-18
(31)【優先権主張番号】201910854179.X
(32)【優先日】2019-09-10
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】201911207236.1
(32)【優先日】2019-11-29
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】シー,ジーユエン
(72)【発明者】
【氏名】チェン,チーン
(72)【発明者】
【氏名】ジャーン,ミーンリー
【テーマコード(参考)】
5K014
5K030
【Fターム(参考)】
5K014FA13
5K030GA12
5K030HD03
5K030JA05
5K030MA04
(57)【要約】
【要約】
データエンコード技術の分野に関連するパケット処理方法及び装置、及びコンピュータ可読な記憶媒体が開示される。この方法では、複数のオリジナルパケットの中で最も大きい第1パケット以外の他のオリジナルパケットに対して、連結処理を行う。連結パケットのサイズが最大パケットのサイズよりも小さい場合にのみ、パディング処理は、他の各オリジナルパケットのパディング処理を実行せずに、連結パケットに対して実行される。従って、パディング後に等長データブロックを取得するためには、一層少ないデータをパディングする必要がある。これは、FECエンコードパケットが送信された場合に占有されるネットワーク帯域幅を減少させ、ネットワーク資源の無駄を回避する。
【特許請求の範囲】
【請求項1】
複数のオリジナルパケットを取得するステップと、
少なくとも1つの連結パケットを取得するために、第1パケットのサイズに基づいて、前記複数のオリジナルパケットのうちの前記第1パケット以外の他のオリジナルパケットに対して連結処理を実行するステップであり、前記第1パケットは、前記複数のオリジナルパケットのうちの最大のパケットである、実行するステップと、
少なくとも1つの前記連結パケットのうちの任意の連結パケットのサイズが、前記第1パケットの前記サイズよりも小さい場合に、等長データブロックを取得するために、少なくとも1つの前記連結パケットに対してパディング処理を実行するステップであり、前記等長データブロック中の各データブロックのサイズは、前記第1パケットの前記サイズである、実行するステップと、
少なくとも1つの冗長パケットを取得するために、前記第1パケットと前記等長データブロックとに対して、順方向誤り訂正FECエンコード処理を実行するステップとを備えている、パケット処理方法。
【請求項2】
少なくとも1つの前記連結パケットを取得するために、前記第1パケットの前記サイズに基づいて、前記複数のオリジナルパケットのうちの前記第1パケット以外の他のオリジナルパケットに対して連結処理を実行するステップは、
少なくとも1つのパケットグループを取得するために、前記第1パケットの前記サイズに基づいて、前記複数のオリジナルパケットのうちの前記第1パケット以外の前記他のオリジナルパケットをグループ化するステップであり、各パケットグループは、少なくとも1つのオリジナルパケットを含み、各パケットグループでの全てのオリジナルパケットのサイズの合計は、前記第1パケットの前記サイズ以下である、グループ化するステップと、
少なくとも1つの前記連結パケットを取得するために、各パケットグループに対して連結処理を実行するステップであり、各連結パケットは1つのパケットグループに対応する、実行するステップと
を含む、請求項1記載の方法。
【請求項3】
少なくとも1つの前記連結パケットを取得するために、前記第1パケットの前記サイズに基づいて、前記複数のオリジナルパケットのうちの前記第1パケット以外の他のパケットに対して連結処理を実行するステップは、
少なくとも1つのパケットグループを取得するために、プロセッサにより、前記複数のオリジナルパケットのうちの前記第1パケットの前記サイズに基づいて、前記複数のオリジナルパケットのうちの前記第1パケット以外の前記他のオリジナルパケットをグループ化し、少なくとも1つの前記パケットグループに基づいてエンコードタスクを生成するステップであり、前記エンコードタスクは各パケットグループのアドレス情報を含む、生成するステップと、
目標ハードウェアエンジンにより、前記エンコードタスクに基づいて各パケットグループで連結処理を実行し、少なくとも1つの前記連結パケットを取得するステップと
を含む、請求項1記載の方法。
【請求項4】
少なくとも1つの前記連結パケットを取得するために、各パケットグループに対して連結処理を実行するステップは、
少なくとも1つのパケットグループの数量と、前記複数のオリジナルパケットでの前記第1パケットの数量との和が第1目標量に達し、前記複数のオリジナルパケット以外の前記他のオリジナルパケットが少なくとも1つの前記パケットグループに追加され得ない場合に、各パケットグループに対して連結処理を実行するステップであり、ただし前記第1目標量は、FECエンコードが実行される場合に、エンコードされるべき行列の次元である、実行するステップ、又は、
前記複数のオリジナルパケットの数量が第2目標量に等しく、前記第2目標量のオリジナルパケットが少なくとも1つのパケットグループにグループ化されている場合に、各パケットグループに対して連結処理を実行するステップであり、ただし前記第2目標量は、FECコーディングを1回実行するために必要なオリジナルパケットのプリセット量である、実行するステップ
を含む、請求項1記載の方法。
【請求項5】
方法は、
少なくとも1つの前記連結パケットの各連結パケットのサイズが前記第1パケットの前記サイズと等しい場合に、少なくとも1つの冗長パケットを取得するために、前記第1パケットと少なくとも1つの前記連結パケットとに対して、FECエンコード処理を実行するステップをさらに備えている、請求項1記載の方法。
【請求項6】
パケット処理装置であって、装置は、
複数のオリジナルパケットを取得するように構成されているプロセッサを備え、
少なくとも1つの連結パケットを取得するために、前記複数のオリジナルパケットのうちの第1パケットのサイズに基づいて、前記複数のオリジナルパケットのうちの前記第1パケット以外の他のオリジナルパケットに対して連結処理を実行するように、前記プロセッサはさらに構成され、前記第1パケットは、前記複数のオリジナルパケットのうちの最大データ量を有するパケットであり、
少なくとも1つの前記連結パケットのうちの任意の連結パケットのサイズが、前記第1パケットの前記サイズよりも小さい場合に、等長データブロックを取得するために、少なくとも1つの前記連結パケットに対してパディング処理を実行するように、前記プロセッサはさらに構成され、前記等長データブロック中の各データブロックのサイズは、前記第1パケットの前記サイズであり、
少なくとも1つの冗長パケットを取得するために、前記第1パケットと前記等長データブロックとに対して、順方向誤り訂正FECエンコード処理を実行するように、前記プロセッサはさらに構成されている、パケット処理装置。
【請求項7】
前記プロセッサは、以下のステップ、即ち、
少なくとも1つのパケットグループを取得するために、前記複数のオリジナルパケットのうちの前記第1パケットの前記サイズに基づいて、前記複数のオリジナルパケットのうちの前記第1パケット以外の前記他のオリジナルパケットをグループ化するステップであり、各パケットグループは、少なくとも1つのオリジナルパケットを含み、各パケットグループでの全てのオリジナルパケットのサイズの合計は、前記第1パケットの前記サイズ以下である、グループ化するステップと、
少なくとも1つの前記連結パケットを取得するために、各パケットグループに対して連結処理を実行するステップであり、各連結パケットは1つのパケットグループに対応する、実行するステップと
を行うように構成されている、請求項6記載の装置。
【請求項8】
装置は、目標ハードウェアエンジンをさらに備え、
前記プロセッサは、少なくとも1つのパケットグループを取得するために、前記複数のオリジナルパケットのうちの前記第1パケットの前記サイズに基づいて、前記複数のオリジナルパケットのうちの前記第1パケット以外の前記他のオリジナルパケットをグループ化するように構成され、少なくとも1つの前記パケットグループに基づいてエンコードタスクを生成するように構成され、前記エンコードタスクは各パケットグループのアドレス情報を含み、
前記目標ハードウェアエンジンは、前記エンコードタスクに基づいて各パケットグループで連結処理を実行し、少なくとも1つの前記連結パケットを取得するように構成されている、請求項7記載の装置。
【請求項9】
前記プロセッサは、以下のステップ、即ち、
少なくとも1つのパケットグループの数量と、前記複数のオリジナルパケットでの前記第1パケットの数量との和が第1目標量に達し、前記複数のオリジナルパケット以外の前記他のオリジナルパケットが少なくとも1つの前記パケットグループに追加され得ない場合に、各パケットグループに対して連結処理を実行するステップであり、ただし前記第1目標量は、FECエンコードが実行される場合に、エンコードされるべき行列の次元である、実行するステップ、又は、
前記複数のオリジナルパケットの数量が第2目標量に等しく、前記第2目標量のオリジナルパケットが少なくとも1つのパケットグループにグループ化されている場合に、各パケットグループに対して連結処理を実行するステップであり、ただし前記第2目標量は、FECコーディングを1回実行するために必要なオリジナルパケットのプリセット量である、実行するステップ
を行うようにさらに構成されている、請求項7記載の装置。
【請求項10】
前記プロセッサは、以下のステップ、即ち、
少なくとも1つの前記連結パケットの各連結パケットのサイズが前記第1パケットの前記サイズと等しい場合に、少なくとも1つの冗長パケットを取得するために、前記第1パケットと少なくとも1つの前記連結パケットとに対して、順方向誤り訂正FECエンコード処理を実行するステップを行うようにさらに構成されている、請求項8記載の装置。
【請求項11】
記憶媒体は命令を記憶し、前記命令はプロセッサによりロード及び実行されて、請求項1ないし5のいずれか1項に記載のパケット処理方法を実現する、コンピュータ可読な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、「PACKET PROCESSING METHOD AND APPARATUS, AND COMPUTER STORAGE MEDIUM」と題し、2019年11月29日に中国国家知的所有権庁に出願された中国特許出願第201911207236.1号、及び「METHOD, APPARATUS, AND SYSTEM FOR GENERATING EQUAL-LENGTH CODING BLOCK」と題し、2019年9月10日に中国国家知的所有権庁に出願された中国特許出願第201910854179.X号の利益を主張し、これは全体が参照により本明細書に組み込まれる。
【0002】
本出願は、データエンコード技術の分野に関し、特に、パケット処理方法及び装置、及びコンピュータ可読な記憶媒体に関する。
【背景技術】
【0003】
エンコード及びデコード技術の開発に伴い、データストリームを送信するとき、ネットワークデバイスは、まず、冗長パケットを取得するために、データストリーム内の複数のオリジナルパケットに対して順方向誤り訂正(forward error correction, FEC)エンコードを実行し、オリジナルパケットと冗長パケットとをデコーダへ送信する。
【0004】
現在、ネットワークデバイスによって複数のオリジナルパケットをエンコードするプロセスは、以下のようであってよい。即ち、ネットワークデバイスが、複数のオリジナルパケットのうちの最大パケット以外の他のパケットでのダミーデータをパディングしてよく、これにより、パディングされたパケットのサイズが全て、複数のオリジナルパケットのうちの最大パケットのサイズになる。ネットワークデバイスは、冗長パケットを取得するために、パディングされたパケットと最大パケットとに対してFECエンコードを実行する。
【0005】
前述のエンコード処理において、ネットワークデバイスは、最大パケットよりも小さい各オリジナルパケットのうちのダミーデータをパディングするので、大量のダミーデータがパディングされたオリジナルパケット中にパディングされる。パディングされたオリジナルパケットのデータ量は大きい。ネットワークデバイスがパディングされたオリジナルパケットをデコーダへ送信するとき、パディングされたオリジナルパケットは大量のネットワーク帯域を占有し、ネットワークリソースの無駄を引き起こす。
【発明の概要】
【0006】
本出願は、パケット伝送プロセスでの占有ネットワーク帯域幅を減少させ、ネットワークリソースの無駄を回避するために、パケット処理方法及び装置、及びコンピュータ可読な記憶媒体を提供する。技術的解決策は以下の通りである。
【0007】
第1の態様によれば、パケット処理方法が提供される。パケット処理方法は、
複数のオリジナルパケットを取得するステップと、
少なくとも1つの連結パケットを取得するために、第1パケットのサイズに基づいて、複数のオリジナルパケットのうちの第1パケット以外の他のオリジナルパケットに対して連結処理を実行するステップであり、第1パケットは、複数のオリジナルパケットのうちの最大のパケットである、実行するステップと、
少なくとも1つの連結パケットのうちの任意の連結パケットのサイズが、第1パケットのサイズよりも小さい場合に、等長データブロックを取得するために、少なくとも1つの連結パケットに対してパディング処理を実行するステップであり、等長データブロック中の各データブロックのサイズは、第1パケットのサイズである、実行するステップと、
少なくとも1つの冗長パケットを取得するために、第1パケットと等長データブロックとに対して、順方向誤り訂正FECエンコード処理を実行するステップとを備えている。
【0008】
この方法では、複数のオリジナルパケットの中で最も大きい第1パケット以外の他のオリジナルパケットに対して、連結処理を行う。連結パケットのサイズが最大パケットのサイズよりも小さい場合にのみ、パディング処理は、他の各オリジナルパケットのパディング処理を実行せずに、連結パケットに対して実行される。従って、パディング後に等長データブロックを取得するためには、一層少ないデータをパディングする必要がある。これは、FECエンコードパケットが送信された場合に占有されるネットワーク帯域幅を減少させ、ネットワーク資源の無駄を回避する。
【0009】
可能な実施では、少なくとも1つの連結パケットを取得するために、第1パケットのサイズに基づいて、複数のオリジナルパケットのうちの第1パケット以外の他のオリジナルパケットに対して連結処理を実行するステップは、
少なくとも1つのパケットグループを取得するために、第1パケットのサイズに基づいて、複数のオリジナルパケットのうちの第1パケット以外の他のオリジナルパケットをグループ化するステップであり、各パケットグループは、少なくとも1つのオリジナルパケットを含み、各パケットグループでの全てのオリジナルパケットのサイズの合計は、第1パケットのサイズ以下である、グループ化するステップと、
少なくとも1つの連結パケットを取得するために、各パケットグループに対して連結処理を実行するステップであり、各連結パケットは1つのパケットグループに対応する、実行するステップと
を含む。
【0010】
可能な実施では、少なくとも1つの連結パケットを取得するために、第1パケットのサイズに基づいて、複数のオリジナルパケットのうちの第1パケット以外の他のパケットに対して連結処理を実行するステップは、
少なくとも1つのパケットグループを取得するために、プロセッサにより、複数のオリジナルパケットのうちの第1パケットのサイズに基づいて、複数のオリジナルパケットのうちの第1パケット以外の他のオリジナルパケットをグループ化し、少なくとも1つのパケットグループに基づいてエンコードタスクを生成するステップであり、エンコードタスクは各パケットグループのアドレス情報を含む、生成するステップと、
目標ハードウェアエンジンにより、エンコードタスクに基づいて各パケットグループで連結処理を実行し、少なくとも1つの連結パケットを取得するステップと
を含む。
【0011】
可能な実施では、少なくとも1つのパケットグループを取得するために、複数のオリジナルパケットのうちの第1パケットのサイズに基づいて、複数のオリジナルパケットのうちの第1パケット以外の他のオリジナルパケットをグループ化するステップは、
複数のオリジナルパケットのうちの各オリジナルパケットのサイズに基づいて、複数のオリジナルパケットをソートし、各オリジナルパケットの順序iを取得するステップであり、ここでiは0以上の整数であり、順序が0であるオリジナルパケットは第1パケットである、取得するステップと;
i=1の場合に、順序が1であるオリジナルパケットを第1ターゲットパケットグループにグループ化するステップであり、ここで第1ターゲットパケットグループの順序は1である、グループ化するステップと;
i>1の場合に、第jターゲットパケットグループのサイズと、順序がiであるオリジナルパケットのサイズとの合計が、目標サイズ以下であるならば、第jターゲットパケットグループと、順序がiであるオリジナルパケットとを結合して、第iターゲットパケットグループとするステップであり、ここで、目標サイズは第1パケットのサイズであり、第jターゲットパケットグループは、少なくとも1つのターゲットパケットグループの中で最低の順序のパケットグループであり、第jターゲットパケットグループの順序はjであり、少なくとも1つのターゲットパケットグループの各パケットグループのサイズと、順序がiであるオリジナルパケットのサイズとの合計が、目標サイズ以下であり、0<j<iである、ステップと;
i>1の場合に、第jターゲットパケットグループが存在しないならば、1つの第iターゲットパケットグループを追加し、順序がiであるオリジナルパケットを第iターゲットパケットグループにグループ化するステップと;
複数のオリジナルパケットのうち最後のオリジナルパケットをグループ化した後、少なくとも1つのパケットグループの1つのパケットグループとして、現在残っている各ターゲットパケットグループを使用するステップと
を含む。
【0012】
可能な実施では、少なくとも1つの連結パケットを取得するために、各パケットグループに対して連結処理を実行するステップは、
少なくとも1つのパケットグループの数量と、複数のオリジナルパケットでの第1パケットの数量との和が第1目標量に達し、複数のオリジナルパケット以外の他のオリジナルパケットが少なくとも1つのパケットグループに追加され得ない場合に、各パケットグループに対して連結処理を実行するステップであり、ただし第1目標量は、FECエンコードが実行される場合に、エンコードされるべき行列の次元である、実行するステップ、又は、
複数のオリジナルパケットの数量が第2目標量に等しく、第2目標量のオリジナルパケットが少なくとも1つのパケットグループにグループ化されている場合に、各パケットグループに対して連結処理を実行するステップであり、ただし第2目標量は、FECコーディングを1回実行するために必要なオリジナルパケットのプリセット量である、実行するステップ
を含む。
【0013】
可能な実施では、方法は、
少なくとも1つの連結パケットの各連結パケットのサイズが第1パケットのサイズと等しい場合に、少なくとも1つの冗長パケットを取得するために、第1パケットと少なくとも1つの連結パケットとに対して、FECエンコード処理を実行するステップをさらに備えている。
【0014】
第2の態様によれば、複数の機能モジュールを含むパケット処理装置が提供され、複数の機能モジュールが協働して、第1の態様と第1の態様の実施による方法とを実施する。複数の機能モジュールは、ソフトウェア、ハードウェア、又はソフトウェアとハードウェアの組み合わせに基づいて実施されてよく、複数の機能モジュールは、特定の実施に基づいてランダムに組み合わせられてもよく、又は分割されてもよい。
【0015】
第3の態様によれば、コンピュータ可読な記憶媒体が提供される。記憶媒体は命令を記憶する。命令は、プロセッサによりロード及び実行されて、前述のパケット処理方法を実施する。
【図面の簡単な説明】
【0016】
本出願の実施形態での技術的解決策をさらに明確に説明するために、以下に、実施形態を記載するための添付の図面を簡単に説明する。以下の説明での添付の図面は、本出願の単なるいくつかの実施形態を示すものであり、当業者は、創造的努力を要することなく、これら添付の図面から他の添付の図面をさらに導き出すことができることは明らかである。
【0017】
【
図1】本出願の実施形態に係るパケット伝送システムの概略図である。
【
図2】本出願の実施形態に係るパケット処理方法のフローチャートである。
【
図3】本出願の実施形態に係るネットワークデバイスに実施されたパケット処理方法のフローチャートである。
【
図4】本出願の実施形態に係るパケットグループ決定プロセスの概略図である。
【
図5】本出願の実施形態に係るパケットのグループ化のフローチャートである。
【
図6】本出願の実施形態に係るオリジナルパケットのグループ化プロセスの概略図である。
【
図7】本出願の実施形態に係るエンコードタスクの概略図である。
【
図8】本出願の実施形態に係るFECパケットの概略図である。
【
図9】本出願の実施形態に係る、ネットワークデバイスでの相互作用の概略的なフローチャートである。
【
図10】本出願の実施形態に係るエンコード及びデコードのフローチャートである。
【
図11】本出願の実施形態に係るパケット処理装置の構造を示す概略図である。
【発明を実施するための形態】
【0018】
本出願の目的、技術的解決策及び利点をさらに明確にするために、添付の図面を参照して、さらに本出願の実施形態を詳細に記載する。
【0019】
図1は、本出願の一実施形態によるパケット伝送システムの概略図である。
図2は、第1端末101と、第1ネットワークデバイス102と、第2ネットワークデバイス103と、第2端末104とを示す。第1端末101は、データストリームを生成し、第1ネットワークデバイス102にデータストリームを送信するように構成されている。第1ネットワークデバイス102は、データストリーム内の複数のオリジナルパケットを1つの等長データブロックに連結し、等長データブロックの各データブロックは同じサイズを有する。FECエンコード処理は、複数のオリジナルパケットでの冗長パケットを取得するために、等長データブロックに対して実行される。第1ネットワークデバイス102は、同一のFECヘッダを等長データブロックの各データブロックと各冗長パケットとに付加し、それらを複数のFECパケットにカプセル化し、次に、FECパケットを含むコードストリームを第2ネットワークデバイス103へ送信する。第2ネットワークデバイス303は、コードストリーム内の失われたオリジナルFECパケットをデコードし、失われたオリジナルFECパケットを回復する。オリジナルFECパケットは、FECパケットの任意の1つである。第2ネットワークデバイス103は、回復されたオリジナルFECパケットと未損失のFECパケットとに基づいてデータストリームを回復し、第2端末104にデータストリームを送信する。第1端末101と第2端末104とは、携帯電話、ラップトップコンピュータなどであってよい。第1ネットワークデバイス102と第2ネットワークデバイス103とは、ルータ及びスイッチなどのデバイスであってよい。データストリームは、ビデオストリーム、オーディオストリームであってよく、又はテキストデータを含むテキストストリームであってよい。データストリームタイプは、本出願の実施形態において特に限定されない。
【0020】
図1は、ビデオストリームの一例を示す概略図である。第1ユーザと第2ユーザとがビデオセッションを行うとき、第1ユーザは、第1端末101においてカメラを使用して第1ユーザのビデオを記録し、ビデオストリーム(データストリーム)を形成するように、ビデオを構成するために使用されたオリジナルパケットを第1ネットワークデバイス102へ伝送してよい。第1ネットワークデバイス102は、冗長パケットを取得するために、ビデオストリーム内のオリジナルパケットに対してFECエンコードを実行し、対応するFECパケットを取得するために、各オリジナルパケット及び各冗長パケットにFECパケットヘッダを付加する。第1ネットワークデバイス102は、広域ネットワーク(wide area network, WAN)を介して、FECパケットを含むコードストリームを第2ネットワークデバイス103へ送信してよい。コードストリーム内のFECパケットを取得した後、第2ネットワークデバイス103は、どのオリジナルパケットが失われたかをFECパケットヘッダに基づいて決定し、受信したFECパケット(オリジナルパケットと冗長パケットとを含む)に基づいて失われたオリジナルパケットを回復する。第2ネットワークデバイス103は、回復されたオリジナルパケットと未損失のFECパケットとを使用してデータストリームを形成し、ローカルエリアネットワークAの第2端末104と、ローカルエリアネットワークBの第2端末104とに、それぞれデータストリームを送信する。ビデオストリームを受信した後、複数の第2端末104は、ビデオを再生する。従って、第2ユーザは、第2端末104上の第1ユーザのビデオが見られる。これは、第1ユーザと第2ユーザとの間でのLANを跨ぐビデオセッションを実現する。可能な実施では、第1端末101、第1ネットワークデバイス102、第2ネットワークデバイス103、及び第2端末104は、同じ又は異なるローカルエリアネットワーク内に分散されてよい。第1端末101、第1ネットワークデバイス102、第2ネットワークデバイス103、及び第2端末104の分散方式は、本出願の実施形態において特に限定されない。
【0021】
いくつかの可能な実施では、第1ネットワークデバイスは、等長データブロックを取得するために、プロセッサを使用して、データストリーム内のオリジナルパケットの連結処理を直接実行してよい。次いで、プロセッサは、等長データブロックに対してFECエンコードを実行する。いくつかの可能な実施では、第1ネットワークデバイスのプロセッサは、各オリジナルパケットのサイズに基づいて連結ソリューションを決定し、連結ソリューションを目標ハードウェアエンジンへ伝送してよい。目標ハードウェアエンジンは、プロセッサが提供する連結ソリューションに従って、データストリーム内のオリジナルパケットに対して連結処理を実行し、等長データブロックを取得し、等長データブロックに対してFECエンコードを実行する。プロセッサは、ネットワークプロセッサ(network processor, NP)、中央処理ユニット(central processing unit, CPU)、又はそれらの組み合わせであってよい。プロセッサは、ハードウェアチップをさらに含んでよい。ハードウェアチップは、特定用途向け集積回路(application-specific integrated circuit, ASIC)、プログラマブルロジックデバイス(programmable logic device, PLD)、又はそれらの組み合わせであってよい。PLDは、複雑なプログラマブル論理デバイス(complex programmable logic device, CPLD)、フィールドプログラマブル論理ゲートアレイ(field-programmable gate array, FPGA)、汎用アレイ論理(generic array logic, GAL)、又はそれらの任意の組み合わせであってよい。
【0022】
任意には、本出願の実施形態は、コンピュータ可読な記憶媒体、例えば命令を含むメモリをさらに提供する。命令は、以下の実施形態で提供される方法を完了するために、ネットワークデバイス内のプロセッサにより実行されてよい。例えば、コンピュータ可読な記憶媒体は、読み出し専用メモリ(read-only memory, ROM)、ランダムアクセスメモリ(random access memory, RAM)、コンパクトディスク読み出し専用メモリ(compact disc read-only memory, CD-ROM)、磁気テープ、フロッピーディスク、光データ記憶デバイスであってよい。
【0023】
第1ネットワークデバイスがデータストリーム内のオリジナルパケットをエンコードするプロセスの詳細な説明については、
図2に示した本出願の実施形態によるパケット処理方法のフローチャートを参照するものとする。本方法のプロセスは、具体的には、以下のステップ201ないし208を含んでよい。可能な実施形態では、
図2に示すプロセスが本出願に説明される場合に、
図2の全プロセスに含まれるステップが最初に説明され、ステップがさらに詳細に説明される。
【0024】
201:第1ネットワークデバイスは、複数のオリジナルパケットを取得する。
【0025】
第1ネットワークデバイスは、複数のデータストリームを取得してよい。複数のオリジナルパケットは、複数のデータストリームのうちの第1データストリーム内のパケットであり、第1ネットワークデバイスによってFECエンコードを1回実行するために使用されるパケットである。第1データストリームは、複数のデータストリームのうちの任意のデータストリームであり、複数のオリジナルパケットを含んでよい。各オリジナルパケットは、データを搬送するために使用される。オリジナルパケットで搬送されるデータは、ビデオデータ、オーディオデータ、テキストデータなどであってよい。第1データストリーム内のデータのタイプは、本出願のこの実施形態において特に限定されない。
【0026】
202:プロセッサは、複数のオリジナルパケットのうちの第1パケットのサイズに基づいて、複数のオリジナルパケットのうちの第1パケット以外の他のオリジナルパケットをグループ化し、少なくとも1つのパケットグループを取得する。ここで、各パケットグループは、少なくとも1つのオリジナルパケットを含み、各パケットグループ中の全てのオリジナルパケットのサイズの合計は、第1パケットのサイズ以下である。
【0027】
203:プロセッサは、少なくとも1つのパケットグループに基づいてエンコードタスクを生成し、エンコードタスクは、各パケットグループのアドレス情報を含む。
【0028】
204:プロセッサはエンコードタスクを目標ハードウェアエンジンへ伝送する。
【0029】
いくつかの可能な実施では、プロセッサは、さらに、エンコードタスクをメモリへ送達してよい。メモリから目標ハードウェアエンジンがエンコードタスクを読み出す。いくつかの可能な実施では、プロセッサは、データストリームの優先度に基づいて、エンコードタスクをメモリ又は目標ハードウェアエンジンにさらに送達してよい。プロセッサは、まず、優先度の高いデータストリームのエンコードタスクを送達し、次に、優先度の低いデータストリームのエンコードタスクを送達してよい。本出願のこの実施形態では、プロセッサによるエンコードタスクの送達方式は特に限定されない。
【0030】
205:目標ハードウェアエンジンは、少なくとも1つの連結パケットを取得するために、エンコードタスクに基づいて各パケットグループに対して連結処理を実行する。
【0031】
206:少なくとも1つの連結パケットのうちの任意の連結パケットのサイズが第1パケットのサイズよりも小さい場合に、目標ハードウェアエンジンは、等長データブロックを取得するために、少なくとも1つの連結パケットに対してパディング処理を実行する。ここで、等長データブロック中の各データブロックのサイズは、第1パケットのサイズである。
【0032】
目標ハードウェアエンジンは、第1パケットのサイズをサイズとするデータブロックを取得するために、その任意の連結パケットをターゲットデータでパディングしてよい。ターゲットデータは、0又は1などのデータであってよい。少なくとも1つの連結パケットをパディングした後、目標ハードウェアエンジンは等長データブロックを取得する。等長データブロックの各データブロックは1つの連結パケットに対応し、各データブロックのサイズは第1パケットのサイズである。
【0033】
可能な実施では、第1ネットワークデバイスがプロセッサを使用して複数のオリジナルパケットをエンコードする場合に、ステップ206がプロセッサにより実行されてよい。
【0034】
207:目標ハードウェアエンジンは、少なくとも1つの冗長パケットを取得するために、第1パケットと等長データブロックとに対して、順方向誤り訂正FECエンコード処理を実行する。
【0035】
208:少なくとも1つの連結パケットのうちの各連結パケットのサイズが第1パケットのサイズと等しい場合に、目標ハードウェアエンジンは、少なくとも1つの冗長パケットを取得するために、第1パケットと少なくとも1つの連結パケットとに対してFECエンコード処理を実行する。
【0036】
【0037】
ステップ201において、第1ネットワークデバイスは、データストリーム内の複数のオリジナルパケットに対してFECエンコードを実行してよく、FECエンコードが1回完了した後、第1ネットワークデバイスは、データストリーム内の複数の他のオリジナルパケットに対してFECエンコードを実行する。可能な実施において、ステップ201は、以下のステップ2011及び2012に示されるプロセスで実施されてよい。
【0038】
ステップ2011:第1ネットワークデバイスは、受信したデータストリームのオリジナルパケットを第1ネットワークデバイスのメモリに記憶する。
【0039】
例えば、
図3は、本発明の一実施形態によるネットワークデバイスに実施されるパケット処理方法のフローチャートである。データストリーム中の1つのオリジナルパケットを受信した後、第1ネットワークデバイスのネットワークポートは、オリジナルパケットをパケット解析エンジン(packet parse engine, PPE)へ伝送する。PPEがオリジナルパケットを受信するたびに、PPEはオリジナルパケットをメモリに記憶し、オリジナルパケットの記憶アドレスを記録する。これにより、データストリームにあるオリジナルパケットでありネットワークポートが受信したオリジナルパケットを、PPEは収集することができる。ネットワークポートは、ギガビットイーサネット(gigabit ethernet, GE)ネットワークポート又は10ギガビットイーサネット(ten-gigabit ethernet, GXE)ネットワークポートであってよい。
【0040】
ステップ2012:メモリ内のデータストリーム内の非符号化のオリジナルパケットの数量が第2目標量以上である場合に、プロセッサは、データストリーム内の非符号化のオリジナルパケットから第2目標量のオリジナルパケットを取得する。ここで、第2目標量は、FECコーディングを1回実行するために必要とされるオリジナルパケットのプリセット量である。
【0041】
第1ネットワークデバイスは、第2目標量のオリジナルパケットに対してFECエンコードを1回行った後、第2目標量の非符号化のオリジナルパケットの次のグループをエンコードする。従って、第1ネットワークデバイス内のメモリがデータストリーム内の第2目標量のオリジナルパケットを新たにバッファするたびに、第2目標量の新たにバッファされたオリジナルパケットが、次回エンコードされる複数のオリジナルパケットとして使用されてよい。
【0042】
プロセッサは、NPとCPUとのうちの少なくとも1つを含む。
図3は、説明のための例としてなお使用される。PPEが第1オリジナルパケットを収集するたびに、PPEは第1オリジナルパケットをメモリに記憶し、第1オリジナルパケットの記憶完成メッセージをNPへ送信する。第1オリジナルパケットの記憶完成メッセージは、第1オリジナルパケットが属する第1データストリームのストリーム識別子と、第1オリジナルパケットの記憶アドレスとを搬送してよい。ストリーム識別子は、第1データストリームの名称又は数であってよく、第1オリジナルパケットが第1データストリームに属することを示すために使用される。第1オリジナルパケットは、第1データストリーム内の任意のオリジナルパケットである。
【0043】
可能な実施では、第1ネットワークデバイスは、サービス要件に基づいて、各受信データストリームに対して対応する優先度を設定する。第1ネットワークデバイスは、優先度の高いデータストリームを優先的に処理してよい。これに対応して、記憶完成メッセージはさらに、データストリームの優先度を搬送してよい。このようにして、第1ネットワークデバイスのモジュールは、優先度に基づいて、データストリーム内のオリジナルパケットを処理してよい。優先度情報テーブルが、第1ネットワークデバイスに構成されてよい。優先度情報テーブルは、複数の優先度を降順に含み、各優先度はサービスタイプに対応する。1つのデータストリームを受信するとき、第1ネットワークデバイスは、データストリーム中のオリジナルパケット中に搬送されたデータに基づいて、データストリームのサービスタイプを決定し、優先度情報テーブルに従って、データストリームのサービスタイプに対応する優先度を決定する。このようにして、第1ネットワークデバイスは、データストリームに対して対応する優先度を設定してよい。
【0044】
図3は、説明のための例としてなお使用される。第1オリジナルパケットの記憶完成メッセージを受信した後、第1オリジナルパケットの記憶アドレスであり記憶完成メッセージで搬送される記憶アドレスに基づいて、NPは、メモリ内の第1オリジナルパケットを解析し、第1オリジナルパケットがエンコードされる必要があるか否かを決定する。第1オリジナルパケットがエンコードされる必要がある場合に、NPはエンコード通知メッセージを生成し、ここでエンコード通知メッセージは、第1オリジナルパケットの記憶アドレスと、第1オリジナルパケットのサイズと、第1データストリームのストリーム識別子と、第1データストリームの優先度とのうちの少なくとも1つを搬送してよい。NPは、プロトコルスタックにエンコード通知メッセージを伝送する。ユーザデータグラムプロトコル(user datagram protocol, UDP)プロキシは、プロトコルスタックからエンコード通知メッセージを収集してよい。UDPプロキシが第2目標量のエンコード通知メッセージを新たに収集するたびに、新たに収集された第2目標量のエンコード通知メッセージは、エンコードされるべきオリジナルパケットの第2目標量がメモリに新たに記憶されることを示してよい。従って、UDPプロキシは、第2目標量のエンコード通知メッセージをFECソフトウェアモジュールへ伝送してよい(このプロセスは、FECソフトウェアモジュールが通知メッセージをNPから取得するプロセスである)。FECソフトウェアモジュールは、オリジナルパケットの第2目標量に対して連結ソリューションを決定する。
【0045】
いくつかの可能な実施では、第1ネットワークデバイスは、FECエンコードが毎回実行されるオリジナルパケットの数量を制限せず、FECエンコードが毎回実行されるエンコードされるべきオリジナルパケットの数量を制限する。エンコードされるべきオリジナルパケットの数量は、FECコーディングが実行される場合に、エンコードされるべき行列の次元である。即ち、第1ネットワークデバイスは、第2目標量をプリセットせず、第1目標量をプリセットする。この場合に、UDPプロキシが1つのエンコード通知メッセージを受信するたびに、UDPプロキシは、FECソフトウェアモジュールにエンコード通知メッセージを送信し、これによりFECソフトウェアモジュールが複数のエンコード通知メッセージを取得することができる。FECソフトウェアモジュールが、複数のエンコード通知メッセージから複数のオリジナルパケットのサイズを取得することができる場合に、FECソフトウェアモジュールは、複数のオリジナルパケットからの最大の第1パケットを決定してよく、最大パケットのサイズ(目標サイズとして示される)と、複数のオリジナルパケットのうちの第1パケット以外のパケットのサイズ(即ち、FECソフトウェアモジュールが
図3中のオリジナルパケットについて連結ソリューションを決定するプロセス)とに基づいて、第3目標量の連結ソリューションを決定してよい。各連結ソリューションでは、少なくとも2つのオリジナルパケットが連結されて1つの連結パケットとされ、各連結パケットのサイズが目標サイズ以下であり、第3目標量と複数のオリジナルパケットでの第1パケットの数量との和が第1目標量に等しい。連結ソリューションを決定する特定のプロセスについては、ステップ202を参照するものとする。次に、FECソフトウェアモジュールは、連結ソリューションを目標ハードウェアエンジンへ伝送する。目標ハードウェアエンジンは、連結ソリューションに従ってオリジナルパケットを連結する。
【0046】
以下にステップ202を説明する。
【0047】
ステップ202において、第1パケットは、複数のオリジナルパケットのうちで最大のパケットであり、各パケットグループは、1つの連結ソリューションとみなされてよい。さらに、パケットグループを決定するプロセスは、連結ソリューションを決定するプロセスである。各パケットグループのサイズを第1パケットのサイズ以下にするためには、各パケットグループのサイズは、各パケットグループの全てのオリジナルパケットのサイズである。プロセッサは、最初に、複数のオリジナルパケットのサイズに基づいて複数のオリジナルパケットをソートし、次に、複数のオリジナルパケットのソートと第1パケットのサイズとに基づいて少なくとも1つのパケットグループを決定してよい。可能な実施では、ステップ202は、ステップ2021ないし2025に示される以下のプロセスで実行されてよい。可能な実施では、このステップは、プロセッサ内のFECソフトウェアモジュールによって実行してよい。
【0048】
ステップ2021:プロセッサは、複数のオリジナルパケットのサイズに基づいて複数のオリジナルパケットをソートし、各オリジナルパケットの順序iを取得する。ここで、iは、0以上の整数であり、順序が0であるオリジナルパケットは、第1パケットである。
【0049】
プロセッサが複数のオリジナルパケットをソートした場合に、一層大きいオリジナルパケットは、一層低い順序を有し、一層小さいオリジナルパケットは、一層高い順序を有する。第1パケットは複数のオリジナルパケットのうちで最大のパケットであるため、第1パケットは0である最低の順序を有する。複数のオリジナルパケットのうちの最小のオリジナルパケットは、最高の順序を有する。例えば、
図4は、本出願の一実施形態によるパケットグループ決定プロセスの概略図である。
図4は、左側部分、中央部分及び右側部分を含む。左側部分はオリジナルパケットシーケンスを含んでいる。オリジナルパケットシーケンスの5つのオリジナルパケットは、パケットP1ないしP5である。パケットP1は第1パケットである。図面に示した5つのパケットである、パケットP1、パケットP4、パケットP3、パケットP5及びパケットP2のソートを取得するために、プロセッサは、パケットP1ないしP5のサイズに基づいてパケットP1ないしP5をソートし、順序は0ないし4である。
【0050】
ステップ2022:i=1の場合に、プロセッサは、順序が1であるオリジナルパケットを、第1ターゲットパケットグループにグループ化する。ここで第1ターゲットパケットグループの順序は1である。
【0051】
第1パケットのサイズは目標サイズであるため、プロセッサは第1パケットをグループ化する必要はなく、あるいは、直接、各第1パケットを1つのパケットグループとみなしてよい。プロセッサは、複数のオリジナルパケットの昇順に従って、第1パケット以外の他のオリジナルパケットを順次グループ化してよい。
図4の中央部分を、例としてなお使用する。パケットP4の順序は1である。プロセッサは、パケットP4を第1ターゲットパケットグループに直接グループ化してよい。
【0052】
ステップ2023:i>1である場合に、第jターゲットパケットグループのサイズと、順序がiであるオリジナルパケットのサイズとの合計が、目標サイズ以下であるならば、プロセッサは、第jターゲットパケットグループと順序がiであるオリジナルパケットとを結合して、第iターゲットパケットグループとする。ここで、目標サイズは、第1パケットのサイズであり、第jターゲットパケットグループは、少なくとも1つのターゲットパケットグループの最低の順序のパケットグループであり、第jターゲットパケットグループの順序は、jであり、少なくとも1つのターゲットパケットグループでの任意のパケットグループのサイズと、順序がiであるオリジナルパケットのサイズとの合計は、目標サイズ以下であり、0<j<iである。
【0053】
ターゲットパケットグループのサイズは、ターゲットパケットグループ内の全てのパケットのサイズの合計である。第jターゲットパケットグループは、順序がjであるオリジナルパケットを含むパケットグループである。第iターゲットパケットグループは、順序がiであるオリジナルパケットを含むパケットグループである。言い換えると、j個のオリジナルパケットをグループ化した後、第jターゲットパケットグループが取得される。i個のオリジナルパケットがグループ化された後、第iターゲットパケットグループが取得される。プロセッサは複数のオリジナルパケットをグループ化するので、グループ化プロセスにおいて複数のターゲットパケットグループが存在してよい。簡単に説明するために、順序は各ターゲットパケットグループに割り当てられる。第jターゲットパケットグループの順序はjであり、第iターゲットパケットグループの順序はiである。言い換えれば、ターゲットパケットグループの順序は、それがどのようにソートされるかである。
【0054】
なお、
図4の中央部分を例として使用する。i=2の場合に、プロセッサは、順序が2であるパケットP3をグループ化する。この場合に、第1ターゲットパケットグループは、パケットP4のみを含む。第1ターゲットパケットグループのサイズと、順序が2であるパケットP3のサイズとの合計は、パケットP4及びP3のサイズの合計である。パケットP4及びP3のサイズの合計が、第1パケットP1のサイズ(即ち、目標サイズ)以下である場合に、プロセッサは、パケットP4及びP3を結合して第2ターゲットパケットグループとする。第1ターゲットパケットグループは、第2ターゲットパケットグループに結合されるため、現在、第2ターゲットパケットグループのみが残る。
【0055】
いくつかの可能な実施では、複数のターゲットパケットグループが、現在残ってよい。複数のターゲットパケットグループでの少なくとも1つのターゲットパケットグループ内の各パケットグループのサイズと、順序がiであるオリジナルパケットのサイズとの合計が、目標サイズ以下であるならば、プロセッサは、順序がiであるオリジナルパケットと第jターゲットパケットグループとを結合して、第iターゲットパケットグループとする。第jターゲットパケットグループは、少なくとも1つのターゲットパケットグループの中で最低の順序のパケットグループである。
【0056】
ステップ2024:i>1の場合に、第jターゲットパケットグループが存在しないならば、プロセッサは、第iターゲットパケットグループを追加し、順序がiであるオリジナルパケットを第iターゲットパケットグループにグループ化する。
【0057】
現在の複数の残っているターゲットパケットグループでの各ターゲットパケットグループのサイズと、順序がiであるオリジナルパケットのサイズとの合計が、目標サイズよりも大きい場合は、第jターゲットパケットグループが複数のターゲットパケットグループに存在しないことを示す。プロセッサは、第iターゲットパケットグループとして新しいターゲットパケットグループを追加し、順序がiであるオリジナルパケットを第iターゲットパケットグループにグループ化してよい。
【0058】
図4の中央部分を、例としてなお使用する。i=3の場合に、現在残っているターゲットパケットグループは、パケットP4及びP3を含む第2ターゲットパケットグループである。もし、パケットP4及びP3と、順序が3であるパケットP5とのサイズが目標サイズ以下なら、第2ターゲットパケットグループが、少なくとも1つのターゲットパケットグループの第jターゲットパケットグループであることを示す。パケットP4、P3及びP5は、第3ターゲットパケットグループに直接結合されてよい。パケットP4及びP3と、順序が3であるパケットP5とのサイズが目標サイズよりも大きい場合に、第jターゲットパケットグループが現在残っているターゲットパケットグループに存在しないことを示す。プロセッサは、第3ターゲットパケットグループを追加し、新たに追加された第3ターゲットパケットグループにパケットP5をグループ化する。この場合に、第2ターゲットパケットグループと第3ターゲットパケットグループとが残る。
【0059】
ステップ2025:複数のオリジナルパケットのうちの最後のオリジナルパケットをグループ化した後、プロセッサは、少なくとも1つのパケットグループ内の1つのパケットグループとして、各現在残っているターゲットパケットグループを使用する。
【0060】
プロセッサが最後のオリジナルパケットをグループ化した後、現在残っているターゲットパケットグループは最終的に決定されたパケットグループである。従って、プロセッサは、少なくとも1つのパケットグループ内の1つのパケットグループとして、現在残っている各ターゲットパケットグループを使用してよい。
【0061】
図4の右側部分を例として使用する。プロセッサは、パケットP4、P3及びP5を結合して第3ターゲットパケットグループとする。i=4の場合に、順序が4であるパケットP2は、パケットP1ないしP5の最後のパケットである。パケットP4、P3、P5及びP2のサイズの合計が目標サイズよりも小さい場合に、プロセッサは、第3ターゲットパケットグループとパケットP2とを結合して第4ターゲットパケットグループとする。現在、第4ターゲットパケットグループのみが残っている。従って、第4ターゲットパケットグループは、パケットP2ないしP5の最終グループである。第4ターゲットパケットグループもまた連結ソリューションである。各連結ソリューションは、第1パケットのサイズをサイズとする連結パケットを連結及び取得するために使用されるため、後続の連結パケットのサイズが第1パケットのサイズよりも小さい場合に、連結パケットのサイズが第1パケットのサイズと等しくなるように、データは連結パケットにパディングされてよい。
【0062】
プロセッサが、第2目標量の代わりに、オリジナルパケットの数量を第1目標量に設定する場合に、プロセッサは、プリセット時間の間隔で、プリセット時間内に第1ネットワークデバイスによってバッファされたオリジナルパケットをグループ化してよい。グループ化プロセスは、ステップ21ないし25に示されるプロセスであってよい。この場合に、目標サイズは、プリセット時間内に第1ネットワークデバイスによってバッファされたオリジナルパケットのうちの最大パケットのサイズであってよいし、又はプリセットされたパケットサイズであってよい。プリセットされたパケットサイズは、複数のオリジナルパケットが属する第1データストリーム内の最大パケットのパケットであってよい。プリセット時間内に第1ネットワークデバイスによってバッファされたオリジナルパケットが第3目標量のパケットグループにグループ化され、第3目標量のパケットグループのいずれも他のパケットを含むことができない場合に、グループ化は終了する。プリセット時間内に第1ネットワークデバイスによってバッファされたオリジナルパケットを少なくとも1つのパケットグループにグループ化した後、少なくとも1つのパケットグループの量が第3目標量に等しいが、少なくとも1つのパケットグループが他のパケットを含むことができる場合に、少なくとも1つのパケットグループが新しいオリジナルパケットを含むことができなくなるまで、プロセッサは、新しいオリジナルパケットを継続的に収集してよい。この場合に、グループ化は終了する。少なくとも1つのパケットグループの量が第3目標量よりも少ない場合に、プロセッサは、第3目標量のパケットグループが取得され、第3目標量のパケットグループのいずれも新しいオリジナルパケットを含まなくなるまで、継続的に新しいオリジナルパケットを収集し、収集された新しいオリジナルパケットをグループ化してよい。この場合に、グループ化は終了する。
【0063】
ステップ2021ないし2025に示されるプロセスを理解しやすくするために、
図5に示される本出願の実施形態によるパケットグループ化のフローチャートを参照するものとする。このプロセスは、ステップ501ないし509を含む。
【0064】
ステップ501:プロセッサは、ソートが1回行われるオリジナルパケットの数量を第2目標量Mとして設定する。ここで、Mは正の整数である。
【0065】
ステップ502:ネットワークポートは、M個のオリジナルパケットを合計で受信する。
【0066】
ステップ503:プロセッサは、M個のオリジナルパケットを、M個のオリジナルパケットのサイズに基づいて降順にソートし、M個のオリジナルパケットを含むオリジナルパケットシーケンスを取得する。ここで、M個のオリジナルパケットのうちの一層大きなオリジナルパケットは、一層低い順序を示し、一層小さなオリジナルパケットは、オリジナルパケットシーケンス中の一層高い順序を示す。
【0067】
ステップ504:プロセッサは、M個のオリジナルパケットのうちの最大パケットのサイズに基づいて仮想パケットを構築し、仮想パケットを仮想パケットシーケンスに挿入する。ここで、仮想パケットのサイズは、M個のオリジナルパケットのうちの最大パケットのサイズであり、仮想パケットは、仮想パケットシーケンス中に位置する。
【0068】
各仮想パケットは、1つの仮想記憶スペースとみなされてよい。仮想記憶スペースの仮想記憶サイズは、M個のオリジナルパケットのうちの最大パケットのサイズである。言い換えると、1つの仮想パケットを1つのパケットグループとみなしてよい。
【0069】
ステップ505:プロセッサは、オリジナルパケットシーケンスで順序がkであるパケットPkをトラバースする。ここで0≦k<Mである。
【0070】
ステップ506:プロセッサは、パケットPkを含む仮想パケットが仮想パケットシーケンス内に存在するか否かを問い合わせ、仮想パケットが存在する場合に、プロセッサは、仮想パケットシーケンス内でパケットPkを含むことができる第1仮想パケットに、パケットPkを記憶する。
【0071】
ステップ507:仮想パケットが存在しない場合に、プロセッサは仮想パケットを作成し、新しく作成した仮想パケットを仮想パケットシーケンスに挿入し、パケットPkを新しく作成した仮想パケットに位置させる。
【0072】
ステップ508:仮想パケット内にパケットPkを位置させた後、プロセッサは、オリジナルパケットのうちにまだトラバースされないオリジナルパケットが依然としてあるか否かを問い合わせ、まだトラバースされないオリジナルパケットがある場合は、ステップ505を実行するためにスキップし、そうでない場合はステップ509を実行する。
【0073】
ステップ509:オリジナルパケットシーケンス内の全てのオリジナルパケットをトラバースした後、プロセッサは、仮想パケットシーケンスでの各仮想パケットを最終パケットグループとみなす。
【0074】
いくつかの可能な実施では、複数のオリジナルパケットをグループ化するとき、プロセッサは、1つのオリジナルパケットに含まれるいくつかのデータを1つのパケットグループにグループ化し、オリジナルパケットに含まれる他のデータを他のパケットグループにグループ化してよい。可能な実施では、グループ化プロセスにおいて、プロセッサは、受信した第1オリジナルパケットを第1パケットグループにグループ化する。第1パケットグループのサイズは目標サイズであり、目標サイズは任意のプリセットサイズであってよい。オリジナルパケットのサイズが目標サイズ以下の場合に、プロセッサは、第1オリジナルパケットを第1パケットグループにグループ化する。第1オリジナルパケットのサイズが目標サイズよりも大きい場合に、プロセッサは、第1オリジナルパケットを少なくとも2つのデータブロックに仮想的に分割する。ここで、少なくとも2つのデータブロック内の最後のデータブロックのサイズが目標サイズ以下であり、少なくとも2つのデータブロック内の最後のデータブロック以外の他のデータブロックのサイズが全て目標サイズに等しい。プロセッサは、各データブロックをそれぞれに1つのパケットグループにグループ化する。プロセッサがその後新しいオリジナルパケットを受信した場合に、新しいオリジナルパケットのサイズと、現在の全パケットグループの中の最後のパケットグループのサイズとの合計が、目標サイズ以下の場合に、プロセッサは新しいオリジナルパケットを最後のパケットグループにグループ化する。もし、新しいオリジナルパケットのサイズと、現在の全パケットグループの最後のパケットグループのサイズとの合計が目標サイズよりも大きいならば、プロセッサは、新しいオリジナルパケットを、少なくとも1つの第1ターゲットデータブロックと、少なくとも1つの第2ターゲットデータブロックとに仮想的に分割する。ここで、第1ターゲットデータブロックのサイズは、最後のパケットの目標サイズと最後のパケットの現在のサイズとの間の差分であり、少なくとも1つの第2ターゲットデータブロックでの、最後のデータブロックのサイズは、目標サイズ以下であり、少なくとも1つの第2ターゲットデータブロックでの、最後のデータブロック以外のデータブロックのサイズは、全て目標サイズに等しい。プロセッサは、第1ターゲットデータブロックを最後のパケットグループにグループ化し、少なくとも1つのパケットグループを追加し、各第2ターゲットデータブロックを新しく追加されたパケットグループにグループ化する。プロセッサがオリジナルパケットの第2目標量をグループ化した後、又はプロセッサがパケットグループの第1目標量を決定した後、パケットグループの第1目標量は他のオリジナルパケットを含むことができず、グループ化が終了する。例えば、
図6は、本出願の一実施形態によるオリジナルパケットのグループ化プロセスの概略図である。今度は、オリジナルパケット1ないし8をグループ化し、各パケットグループのサイズは常に目標サイズとする。プロセッサは、オリジナルパケット1ないし2と、オリジナルパケット4の最初の部分とを、パケットグループ1に分類し、オリジナルパケット4の最後の部分と、オリジナルパケット5と、オリジナルパケット6の最初の部分とを、パケットグループ2に分類し、オリジナルパケット6の最後の部分と、オリジナルパケット7ないし8とを、パケットグループ2に分類する。パケットグループ3のサイズは、目標サイズよりも小さい。続いて、パケット3内のパケットを連結することによって取得された連結パケットに、データをパディングしてよく、パディングされたパケットのサイズが目標サイズとなるようにする。
【0075】
可能な実施では、第1ネットワークデバイスが、プロセッサを使用して、複数のオリジナルパケットに対してFECエンコードを直接実行した場合に、プロセッサは、具体的に述べると、以下のステップ205を直接実行し、少なくとも1つの連結パケットを取得するために、各パケットグループに対して連結処理を実行する。各連結パケットは、1つのパケットグループに対応する。プロセッサは目標ハードウェアエンジンと相互作用を行わない。目標ハードウェアエンジンを使用して、第1ネットワークデバイスが、複数のオリジナルパケットに対してFECエンコードを実行した場合に、プロセッサは、次のステップ203を実行する。
【0076】
以下にステップ203を説明する。
【0077】
ステップ203では、エンコードタスクを使用して、各パケットグループ内のオリジナルパケットを連結して1つの連結パケットとし、複数の連結パケットをエンコードする。各パケットグループのアドレス情報は、パケットグループ内の全てのオリジナルパケットの記憶アドレスを含む。いくつかの可能な実施では、各パケットグループのアドレス情報は、さらに連結識別子を含む。例えば、
図7は、本出願の一実施形態によるエンコードタスクの概略図である。
図7のエンコードタスクは、複数個のアドレス情報を含む。アドレス情報の各1個はオリジナルパケットの連結識別子と記憶アドレスとを含む。連結識別子は、1つのパケットグループ内の全てのオリジナルパケットを連結して1つの連結パケットとすることを示すために、使用されてよい。さらに連結識別子は、パケットグループのアドレス情報の全ての記憶アドレスが1つのグループを形成することを示すために、使用されてよい。連結識別子を表現する方式は、本出願のこの実施形態において特に限定されない。
【0078】
各パケットグループのアドレス情報は、集合の形式で表してよい。例えば、パケットグループ2は、オリジナルパケット3及び4を含む。集合1が、オリジナルパケット3及び4の記憶アドレスと連結識別子とを含む場合に、集合1はパケットグループ2のアドレス情報である。いくつかの可能な実施で、各パケットグループのアドレス情報が文字列の形式で表現されてよい。パケットグループ2が、例としてなお使用される。文字列1は、「オリジナルパケット3の記憶アドレス、オリジナルパケット4の記憶アドレス、及び連結識別子」である。文字列1はさらに、パケットグループ2のアドレス情報である。いくつかの可能な実施で、各パケットグループのアドレス情報が表の形式で表現されてよい。パケットグループ2が、例としてなお使用される。下記の表1を参照するものとする。表1のオリジナルパケット3及び4の記憶アドレスは、同じ連結識別子に対応する。表1はまた、パケットグループ2のアドレス情報である。
【表1】
【0079】
さらに、目標ハードウェアエンジンがその後、第1パケットの記憶アドレスに従って第1パケットの取得ができるようになるために、エンコードタスクは、第1パケットの記憶アドレスを搬送してよい。さらにエンコードタスクは、エンコードパラメータ、データストリーム識別子、又は第1データストリームの優先度識別子のうちの少なくとも1つを搬送してよい。第1データストリームは、複数のオリジナルパケットが位置するデータストリームである。エンコードパラメータは、エンコードされるべきパケットの数量(即ち、第1目標量)と、冗長パケットの数量と、目標サイズとを含んでよい。エンコードされるべきパケットの数量は、複数のオリジナルパケットのうちの第1パケットの数量と、少なくとも1つのパケットグループの数量との和である。目標ハードウェアエンジンは、その後、エンコードパラメータに基づいて複数のオリジナルパケットをエンコードしてよい。
【0080】
以下にステップ205を説明する。
【0081】
ステップ205において、目標ハードウェアエンジンは、エンコードタスク内のアドレス情報に基づいて、メモリから少なくとも1つのパケットグループを取得してよい。ここで、各パケットグループ内のオリジナルパケットは、1個のアドレス情報の中の1つの記憶アドレスに記憶されたパケットであり、各パケットグループ内のオリジナルパケットを連結して連結パケットとし、これにより目標ハードウェアエンジンは少なくとも1つの連結パケットが取得できる。
【0082】
第1ネットワークデバイスが、プロセッサを使用して複数のオリジナルパケットをエンコードした場合に、少なくとも1つのパケットグループの数量と複数のオリジナルパケットのうちの第1パケットの数量との和が第1目標量に達するならば、また、少なくとも1つのパケットグループ中の最後のパケットグループが複数のパケット以外の他のオリジナルパケットを含むことができない場合に、プロセッサは、各パケットグループに対して連結処理を行う。ただし第1目標量は、FECエンコードが実行される場合に、エンコードされるべき行列の次元である。
【0083】
これに代えて、複数のオリジナルパケットの数量が第2目標量に等しく、第2目標量のオリジナルパケットが少なくとも1つのパケットグループにグループ化されている場合に、プロセッサは、各パケットグループに対して連結処理を実行する。ここで、第2目標量は、FECコーディングを1回実行するために必要とされるオリジナルパケットのプリセット量である。プロセッサが各パケットグループに対して連結処理を実行するプロセスは、目標ハードウェアエンジンが各パケットグループに対して連結処理を実行するプロセスと類似する。プロセッサが各パケットグループに対して連結処理を実行するプロセスは、本出願のこの実施形態では再度説明しない。
【0084】
以下にステップ207を説明する。
【0085】
ステップ207において、目標ハードウェアエンジンは、エンコードタスクからエンコードパラメータを取得してよい。エンコードパラメータでのエンコードされるべきパケットの数量はQであり、冗長パケットの数量はRであり、目標サイズはLであると仮定する。ここで、Q及びRは、ともに正の整数であり、Lは、0よりも大きい値であり、冗長パケットの数量Rは、Q個のエンコードされるべきパケットに対してFECエンコードが実行された後に取得される冗長パケットの数量であり、Q個のエンコードされるべきパケットは、複数のオリジナルパケットでの第1パケットと等長データブロックとを含む。目標ハードウェアエンジンは、エンコードタスク内で搬送される第1パケットの記憶アドレスに基づいてメモリから第1パケットを取得し、取得された第1パケットと、ステップ206で取得された等長データブロックとを、エンコードされるべきパケットとして使用してよい。目標ハードウェアエンジンは、まず、Q*Lであるエンコードされるべき行列を形成するために、Q個のエンコードされるべきパケットを使用してよく、ここで、エンコードされるべき行列の各行は、1つの等長データブロック又は1つの第1パケットである。目標ハードウェアエンジンは、エンコードされるべきパケットの数量Qと冗長パケットの数量Rに基づいて(Q+R)*Q生成行列を構築する。生成行列は、第1部分行列と第2部分行列とを含む。第1部分行列はQ*Q単位行列であり、第2部分行列はR*Qコーシー行列である。
【0086】
第2部分行列での第i行と第j列との要素は、
【数1】
である。x
i-1及びy
i-1は、ガロア体(galois field, GF)(2
w)の要素であり、i及びjは両方とも0以上の整数であり、wは8であってよい。目標ハードウェアエンジンは、(Q+R)*Lコーディング行列を取得するために、生成行列とエンコードされるべき行列とに対して乗算を実行する。コーディング行列は、エンコードされるべき行列とR*L検査行列とを含む。検査行列の各行は1つの冗長パケットである。
【0087】
可能な実施では、ステップ205ないし207に示すプロセスは、目標ハードウェアエンジンが、エンコードタスクに基づいて各パケットグループに対して連結処理を実行するプロセスである。第1ネットワークデバイスが、プロセッサを使用して複数のオリジナルパケットをエンコードする場合に、プロセッサはステップ207を実行してよい。
【0088】
以下にステップ208を説明する。
【0089】
ステップ208において、少なくとも1つの連結パケット内の各連結パケットのサイズが、第1パケットのサイズと等しい場合に、少なくとも1つのパケットは、1つの等長データブロックとみなされてよい。従って、目標ハードウェアエンジンは、ステップ208を直接実行することができる。可能な実施では、第1ネットワークデバイスがプロセッサを使用して複数のオリジナルパケットをエンコードした場合に、プロセッサはステップ207を実行してよい。
【0090】
少なくとも1つの冗長パケットを取得した後、目標ハードウェアエンジンは、少なくとも1つの冗長パケットをメモリに記憶し、エンコード完成メッセージをプロセッサへ送信する。ここで、エンコード完成メッセージは、少なくとも1つの冗長パケットの記憶アドレスを搬送し、これによりプロセッサはメモリから少なくとも1つの冗長パケットが取得できるようになる。あるいは、目標エンジンは、少なくとも1つの冗長パケットをプロセッサに直接送信する。プロセッサが少なくとも1つの冗長パケットを取得する方式は、本出願のこの実施形態で特に限定されない。
【0091】
プロセッサは、少なくとも1つの連結パケットを取得するために、メモリから各パケットグループ内のオリジナルパケットを取得し、各パケットグループ上で連結処理を実行してよい。少なくとも1つの連結パケット内の任意の連結パケットのサイズが第1パケットのサイズよりも小さい場合に、プロセッサは、少なくとも1つの連結パケットに対してパディング処理を実行し、等長データブロックを取得し、複数のオリジナルパケットのうちの第1パケットをメモリから取得する。当然、目標ハードウェアエンジンは、さらに、等長データブロックと第1パケットとをプロセッサに直接送信してよい。プロセッサが等長データブロックと第1パケットとを取得する方式は、本出願のこの実施形態において特に限定されない。
【0092】
プロセッサが等長データブロックと、第1パケットと、少なくとも1つの冗長パケットとを取得した後、プロセッサは、複数のオリジナルFECパケットを取得するために、FECパケットヘッダを等長データブロックと第1パケット内の各データブロックとに付加し、少なくとも1つの冗長FECパケットを取得するために、FECパケットヘッダを各冗長パケットに付加する。FECパケットヘッダは、エンコードパラメータを搬送する。例えば、
図8は、本出願の一実施形態によるFECパケットの概略図である。FECパケットは、FECパケットとペイロードパケットとを含む。ペイロードパケットが等長データブロックの第1パケット又はデータブロックである場合に、FECパケットはオリジナルFECパケットである。FECパケットのペイロードパケットが冗長パケットである場合に、FECパケットは冗長FECパケットである。
【0093】
FECパケットヘッダは、複数のオリジナルパケットのエンコード状態を示すために使用される。FECパケットヘッダは、複数のオリジナルパケットのエンコードパラメータを搬送する。例えば、
図8のFECパケットヘッダは、エンコードされるべきパケットの数量、冗長パケットの数量、及び目標サイズを搬送する。さらに、FECパケットヘッダは、複数のオリジナルパケットのターゲット識別子を搬送してよい。ターゲット識別子は、複数のオリジナルパケットが属するデータストリームをエンコードする回数を示すために使用される。さらに、データストリーム内の複数のオリジナルパケットのシーケンス番号(即ち、連結前のオリジナルパケットのオリジナルシーケンス番号)、オリジナルパケットのサイズ、各第1パケットのシーケンス番号、及びエンコードされるべき行列内の等長データブロックの各データブロックのシーケンス番号、エンコード行列内の各冗長パケットのシーケンス番号、及び各データブロックに対応するターゲット連結識別子を、FECパケットヘッダは搬送してよい。ターゲット連結識別子は、データブロックが連結データブロックであることを示すために使用される。
【0094】
オリジナルFECパケットと冗長FECパケットとを取得した後、プロセッサは、オリジナルFECパケットと冗長FECパケットとを第2ネットワークデバイスへ伝送してよい。当然、いくつかの可能な実施では、目標ハードウェアエンジンは、第1パケットと等長データブロックとを直接、オリジナルFECパケットにカプセル化し、冗長パケットを冗長FECパケットにカプセル化し、オリジナルFECパケットと冗長FECパケットとを第2ネットワークデバイスへ伝送してよい。
【0095】
図9を参照すると、本出願の一実施形態は、ネットワークデバイスでの相互作用の概略的なフローチャートを提供する。このプロセスは、具体的には、ステップ901ないし907を含む。
図9は、第1ネットワークデバイスが複数のオリジナルパケットに対してFECエンコードを実行する場合の内部モジュールのスイッチングを示す。
【0096】
ステップ901:ネットワークポートがネットワークから1つのオリジナルパケットを受信するたびに、ネットワークポートはオリジナルパケットをPPEへ伝送する。
【0097】
ステップ902:PPEは、受信したオリジナルパケットをメモリに書き込む。
【0098】
ステップ903:PPEは、オリジナルパケットの記憶完成メッセージをNPへ伝送し、メモリ内のオリジナルパケットを処理するようにNPに指示する。
【0099】
ステップ904:NPが記憶完成メッセージを受信した後、NPはオリジナルパケットを解析して、オリジナルパケットがエンコードされる必要があるか否かを決定し、オリジナルパケットがエンコードされる必要がある場合に、NPはオリジナルパケットのエンコード通知メッセージをCPUへ伝送する。
【0100】
CPUは、プロトコルスタックとUDPプロキシとを使用して、エンコード完成メッセージをFECソフトウェアモジュールへ伝送してよい。具体的なプロセスについては、前述のステップ2012の関連する説明を参照するものとする。詳細は、ここでは再度説明しない。
【0101】
ステップ905:CPU内のFECソフトウェアモジュールが第2目標量のエンコード通知メッセージを収集した後、即ち、FECソフトウェアモジュールが第2目標量のエンコードされるべきオリジナルパケットを収集した後、FECソフトウェアモジュールは、第2目標量のオリジナルパケットに基づいて、第2目標量のオリジナルパケットに対するエンコードタスクを目標ハードウェアエンジンへ伝送する。
【0102】
エンコードタスクは、エンコードタスクに基づいてFECエンコードを実行するように目標ハードウェアプロセッサに指示する通知メッセージと等価である。
【0103】
ステップ906:目標ハードウェアエンジンは、エンコードタスクに基づいてメモリから第2目標量のオリジナルパケットを取得し、第2目標量のオリジナルパケットに対してFECエンコードを実行して、少なくとも1つの冗長パケットを取得する。
【0104】
ステップ906に示されるプロセスは、ステップ205ないし207に示されるプロセスと類似する。ステップ906に示されているプロセスは、本出願のこの実施形態ではここで再度説明しない。
【0105】
ステップ907:目標ハードウェアエンジンは、少なくとも1つの冗長パケットをメモリに書き込み、少なくとも1つの冗長パケットの記憶アドレスをFECソフトウェアモジュールへ伝送する。その結果、FECソフトウェアモジュールは、少なくとも1つの冗長パケットを取得し、第2目標量のオリジナルパケットと少なくとも1つの冗長パケットとを第2ネットワークデバイスへ伝送する。
【0106】
可能な実施形態では、FECソフトウェアモジュールは、NP内に設けられてよく、又はCPU内に設けられてよい。FECソフトウェアモジュールを設ける方式は、本出願のこの実施形態では特に限定されない。
【0107】
本出願のこの実施形態に提供される方法によれば、複数のオリジナルパケットのうちの最大の第1パケット以外の他のオリジナルパケットに対して、連結処理が実行される。連結パケットのサイズが最大パケットのサイズよりも小さい場合にのみ、パディング処理は、他の各オリジナルパケットのパディング処理を実行せずに、連結パケットに対して実行される。従って、パディング後に等長データブロックを取得するためには、一層少ないデータをパディングする必要がある。これは、FECエンコードパケットが送信されるときに占有されるネットワーク帯域幅を減少させ、ネットワーク資源の無駄を回避する。
【0108】
第2ネットワークデバイスが、第1ネットワークデバイスから伝送されたFECパケットを受信した場合に、伝送プロセスにおいてオリジナルFECパケットが失われた場合に、第2ネットワークデバイスは、失われたパケットを回復するために、未損失のFECパケットをデコードする。複数のオリジナルパケットのエンコード及びデコードプロセスをさらに説明する。
図10は、本出願の一実施形態によるエンコード及びデコードのフローチャートである。このプロセスは、以下のステップ1001ないし1006を含む。
【0109】
ステップ1001:第1ネットワークデバイス内のFECソフトウェアモジュールが第2目標量のオリジナルパケットを収集した後、FECソフトウェアモジュールは、第2目標量のオリジナルパケットに基づいて、第2目標量のオリジナルパケットの第1パケットと少なくとも1つのパケットグループとを決定し、エンコードタスクを目標ハードウェアエンジンへ伝送する。
【0110】
ステップ1001の前に、UDPプロキシは、第1端末によって伝送されたデータストリーム内のオリジナルパケットを収集し、収集されたオリジナルパケットの記憶アドレスとオリジナルパケットのサイズとをFECソフトウェアモジュールへ伝送する。FECソフトウェアモジュールは、第2目標量のオリジナルパケットの記憶アドレスとサイズとを受信した後、ステップ1001を実行する。例えば、第2目標量は6である。FECソフトウェアモジュールがUDPプロキシからオリジナルパケット1ないし6の記憶アドレスとサイズとを収集した後、FECソフトウェアモジュールが6つのオリジナルパケットを収集することを示す。FECソフトウェアモジュールは、第1パケットとしてオリジナルパケット1を使用し、オリジナルパケット2及び4をパケットグループ1にグループ化する。FECソフトウェアモジュールは、第1パケットとしてオリジナルパケット6を使用し、オリジナルパケット3及び5をパケットグループ2にグループ化する。さらに、FECソフトウェアモジュールは、オリジナルパケット2及び4を連結して連結パケット1とし、オリジナルパケット3及び5を連結して連結パケット2としてよい。任意の連結パケットのサイズがオリジナルパケット3のサイズよりも小さい場合に、FECソフトウェアモジュールは、パディングされたパケットを取得するために、任意の連結パケットに対してパディング処理を実行する。それ以外の場合に、FECソフトウェアモジュールは、任意の連結パケットに対してパディング処理を実行しない。
図10は、任意の連結パケットのサイズがオリジナルパケット3のサイズである例を示す。FECソフトウェアモジュールは、1つのエンコードされるべき行列として、オリジナルパケット1及び6、及び連結パケット1及び2を使用する。
図10において、オリジナルパケットは、エンコードされるべき行列内のパケット1として示される。連結パケット1及び2は、別々に、エンコードされるべき行列内のパケット2及び3として示され、オリジナルパケット6は、エンコードされるべき行列内のパケット4として示される。
【0111】
ステップ1002:目標ハードウェアエンジンは、エンコードタスク内のアドレス集合に基づいて、オリジナルパケット1及び6と連結パケット1及び2とによって形成されたエンコードされるべき行列を取得し、エンコードタスク内のエンコードパラメータに基づいて対応する生成行列を構成し、エンコードされるべき行列と生成行列とに基づいてFECエンコードを実行し、冗長パケットa、b及びcを取得し、冗長パケットa、b及びcをメモリに記憶し、冗長パケットa、b及びcの記憶アドレスをFECソフトウェアモジュールへ伝送する。
【0112】
ステップ1003:FECソフトウェアモジュールは、冗長パケットa、b及びcの記憶アドレスに基づいてメモリから冗長パケットa、b及びcを取得し、複数のFECパケットを取得するために、1つのFECパケットヘッダをパケット1ないし4及び冗長パケットaないしcにそれぞれに付加し、FECパケットによって形成されたコードストリームをUDPプロキシへ送信する。UDPプロキシは、WANを介して第2ネットワークデバイスにコードストリームを送信する。
【0113】
ステップ1004:第2ネットワークデバイスのUDPプロキシは、コードストリームを受信し、ここで、コードストリーム内のパケット1及び3が失われる。第2ネットワークデバイス内のFECソフトウェアモジュールが、パケット2及び4を収集し、冗長パケットa、b及びcの任意の2つの冗長パケットを収集した後、FECソフトウェアモジュールは、デコードタスクを、第2ネットワークデバイス内の目標ハードウェアエンジンへ送達する。ここで、デコードタスクは、パケット2及び4と、冗長パケットa、b及びcの任意の2つの冗長パケットとの、記憶アドレスとデコードパラメータとを搬送する。ここで、デコードパラメータは、エンコードパラメータを失ったパケットの数量と、エンコードされるべき行列内の損失パケットの位置と、目標サイズとを含む。
【0114】
ステップ1005:目標ハードウェアエンジンは、デコードタスク内の記憶アドレスに基づいて、パケット2及び4と、冗長パケットa、b及びcの任意の2つの冗長パケットとを、メモリから取得し、パケット2及び4と、冗長パケットa、b及びcの任意の2つの冗長パケットとを使用して、デコードされるべき行列を形成し、デコードパラメータに基づいて対応するデコード行列を構成し、デコードされるべき行列とデコード行列とに基づいてFECデコードを実行し、損失パケット1及び3を取得する。ここで、損失パケット1及び3は、メモリに記憶され、パケット1及び3の記憶アドレスをFECソフトウェアモジュールへ送信する。
【0115】
ステップ1006:FECソフトウェアモジュールは、オリジナルパケット1と連結パケット1との記憶アドレスに基づいて、メモリからオリジナルパケット1と連結パケット1との記憶アドレスを取得し、オリジナルパケット2と連結パケット2とを取得し、連結パケット1をオリジナルパケット2及び3に分割し、連結パケット2をオリジナルパケット3及び5に分割し、データストリームでのオリジナルパケット1ないし6の順序を復元し、オリジナルパケット1ないし6をUDPプロキシに順に伝送してデータストリームを形成する。UDPプロキシは、データストリームを第2端末へ伝送する。
【0116】
図11は、本出願の一実施形態に係るパケット処理装置の構造を示す概略図である。装置1100は、プロセッサ1101を含む。
【0117】
プロセッサ1101は、前述のステップ201を実行するように構成されている。
【0118】
少なくとも1つの連結パケットを取得するために、複数のオリジナルパケットのうちの第1パケットのサイズに基づいて、複数のオリジナルパケットのうちの第1パケット以外の他のオリジナルパケットに対して連結処理を実行するように、プロセッサ1101はさらに構成され、第1パケットは、複数のオリジナルパケットのうちの最大データ量を有するパケットである。
【0119】
少なくとも1つの連結パケットのうちの任意の連結パケットのサイズが、第1パケットのサイズよりも小さい場合に、等長データブロックを取得するために、少なくとも1つの連結パケットに対してパディング処理を実行するように、プロセッサ1101はさらに構成されている。ここで、等長データブロック中の各データブロックのサイズは、第1パケットのサイズである。
【0120】
プロセッサ1101は、さらに、少なくとも1つの冗長パケットを取得するために、第1パケットと等長データブロックとに、順方向誤り訂正FECエンコード処理を実行するように構成されている。
【0121】
任意には、装置はさらに、プログラム命令を記憶するように構成されたメモリを含む。プロセッサ1101は、
図2に示すパケット処理方法を実施するために、メモリに記憶された命令を実行するように構成されたCPUであってよい。
【0122】
可能な実施では、プロセッサ1101は、以下のステップ、即ち、
ステップ202を実行するステップと、
少なくとも1つの連結パケットを取得するために、各パケットグループで連結処理を実行するステップであり、各連結パケットは1つのパケットグループに対応する、実行するステップと、
を行うように構成されている。
【0123】
可能な実施では、パケット処理装置は、目標ハードウェアエンジン1102をさらに含む。
【0124】
プロセッサ1101は、前述のステップ202及び203を実行するようにさらに構成されている。
【0125】
目標ハードウェアエンジン1102は、前述のステップ205を実行するように構成されている。
【0126】
可能な実施では、プロセッサ1101は以下のステップ、即ち、
複数のオリジナルパケットのうちの各オリジナルパケットのサイズに基づいて、複数のオリジナルパケットをソートし、各オリジナルパケットの順序iを取得するステップであり、ここでiは0以上の整数であり、順序が0であるオリジナルパケットは第1パケットである、取得するステップと;
i=1の場合に、順序が1であるオリジナルパケットを第1ターゲットパケットグループにグループ化するステップであり、ここで第1ターゲットパケットグループの順序は1である、グループ化するステップと;
i>1の場合に、第jターゲットパケットグループのサイズと、順序がiであるオリジナルパケットのサイズとの合計が、目標サイズ以下であるならば、第jターゲットパケットグループと、順序がiであるオリジナルパケットとを結合して、第iターゲットパケットグループとするステップであり、ここで、目標サイズは第1パケットのサイズであり、第jターゲットパケットグループは、少なくとも1つのターゲットパケットグループの中で最低の順序のパケットグループであり、第jターゲットパケットグループの順序はjであり、少なくとも1つのターゲットパケットグループの各パケットグループのサイズと、順序がiであるオリジナルパケットのサイズとの合計が、目標サイズ以下であり、0<j<iである、ステップと;
i>1の場合に、第jターゲットパケットグループが存在しないならば、1つの第iターゲットパケットグループを追加し、順序がiであるオリジナルパケットを第iターゲットパケットグループにグループ化するステップと;
複数のオリジナルパケットのうち最後のオリジナルパケットをグループ化した後、少なくとも1つのパケットグループの1つのパケットグループとして、現在残っている各ターゲットパケットグループを使用するステップと
を行うように構成されている。
【0127】
可能な実施では、プロセッサ1101は以下のステップ、即ち、
少なくとも1つのパケットグループの数量と、複数のオリジナルパケットでの第1パケットの数量との和が第1目標量に達し、複数のオリジナルパケット以外の他のオリジナルパケットが少なくとも1つのパケットグループに追加され得ない場合に、各パケットグループに対して連結処理を実行するステップであり、ただし第1目標量は、FECエンコードが実行される場合に、エンコードされるべき行列の次元である、実行するステップ;又は、
複数のオリジナルパケットの数量が第2目標量に等しく、第2目標量のオリジナルパケットが少なくとも1つのパケットグループにグループ化されている場合に、各パケットグループに対して連結処理を実行するステップであり、ただし第2目標量は、FECコーディングを1回実行するために必要なオリジナルパケットのプリセット量である、実行するステップ
を行うように構成されている。
【0128】
可能な実施では、プロセッサ1101は以下のステップ、即ち、
少なくとも1つの連結パケットの各連結パケットのサイズが第1パケットのサイズと等しい場合に、少なくとも1つの冗長パケットを取得するために、第1パケットと少なくとも1つの連結パケットとに対して、順方向誤り訂正FECエンコード処理を実行するステップを行うように構成されている。
【0129】
可能な実施形態では、さらに目標ハードウェアエンジン1101は、ステップ208を実行するように構成されている。
【0130】
上述の任意の技術的解決策の全ては、任意の組み合わせによって、本開示の任意の実施形態を形成してよい。詳細は、ここで再度説明しない。
【0131】
なお、上述の実施形態で提供されたパケット処理装置がパケット処理を行う場合には、上述の機能モジュールに分割することは、例示のために例として使用されるに過ぎない。実際の応用では、上述の機能を異なる機能モジュールに割り当て、必要に基づいて実現してよい。即ち、装置の内部構造を異なる機能モジュールに分割し、上述した機能の全部又は一部を実現するものである。また、上述の実施形態で提供されたパケット処理装置と方法の実施形態とは、同じ概念に関係する。装置の特定の実施プロセスについては、方法の実施形態を参照するものとする。詳細は、ここでは再度説明しない。
【0132】
当業者であれば、実施形態のステップの全部又は一部は、関連するハードウェアに対して指示するハードウェア又はプログラムによって実施してよいことが理解可能である。プログラムは、コンピュータ可読な記憶媒体に記憶してよい。記憶媒体は、読み出し専用メモリ、磁気ディスク、光ディスクなどであってよい。
【0133】
以上の説明は、本出願の例示的な実施形態に過ぎないが、本出願を限定することを意図するものではない。本出願の原則から逸脱することなくなされた任意の修正、同等の置き換え、又は改良は、本出願の保護範囲に含まれるものとする。
【手続補正書】
【提出日】2022-03-08
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
複数のオリジナルパケットを取得するステップと、
少なくとも1つの連結パケットを取得するために、第1パケットのサイズに基づいて、前記複数のオリジナルパケットのうちの前記第1パケット以外の他のオリジナルパケットに対して連結処理を実行するステップであり、前記第1パケットは、前記複数のオリジナルパケットのうちの最大のパケットである、実行するステップと、
少なくとも1つの前記連結パケットのうちの任意の連結パケットのサイズが、前記第1パケットの前記サイズよりも小さい場合に、等長データブロックを取得するために、少なくとも1つの前記連結パケットに対してパディング処理を実行するステップであり、前記等長データブロック中の各データブロックのサイズは、前記第1パケットの前記サイズである、実行するステップと、
少なくとも1つの冗長パケットを取得するために、前記第1パケットと前記等長データブロックとに対して、順方向誤り訂正FECエンコード処理を実行するステップとを備えている、パケット処理方法。
【請求項2】
少なくとも1つの前記連結パケットを取得するために、前記第1パケットの前記サイズに基づいて、前記複数のオリジナルパケットのうちの前記第1パケット以外の他のオリジナルパケットに対して連結処理を実行するステップは、
少なくとも1つのパケットグループを取得するために、前記第1パケットの前記サイズに基づいて、前記複数のオリジナルパケットのうちの前記第1パケット以外の前記他のオリジナルパケットをグループ化するステップであり、各パケットグループは、少なくとも1つのオリジナルパケットを含み、各パケットグループでの全てのオリジナルパケットのサイズの合計は、前記第1パケットの前記サイズ以下である、グループ化するステップと、
少なくとも1つの前記連結パケットを取得するために、各パケットグループに対して連結処理を実行するステップであり、各連結パケットは1つのパケットグループに対応する、実行するステップと
を含む、請求項1記載の方法。
【請求項3】
少なくとも1つの前記連結パケットを取得するために、前記第1パケットの前記サイズに基づいて、前記複数のオリジナルパケットのうちの前記第1パケット以外の他の
オリジナルパケットに対して連結処理を実行するステップは、
少なくとも1つのパケットグループを取得するために、プロセッサにより、前記複数のオリジナルパケットのうちの前記第1パケットの前記サイズに基づいて、前記複数のオリジナルパケットのうちの前記第1パケット以外の前記他のオリジナルパケットをグループ化し、少なくとも1つの前記パケットグループに基づいてエンコードタスクを生成するステップであり、前記エンコードタスクは各パケットグループのアドレス情報を含む、生成するステップと、
目標ハードウェアエンジンにより、前記エンコードタスクに基づいて各パケットグループで連結処理を実行し、少なくとも1つの前記連結パケットを取得するステップと
を含む、請求項1記載の方法。
【請求項4】
少なくとも1つの前記連結パケットを取得するために、各パケットグループに対して連結処理を実行するステップは、
少なくとも1つのパケットグループの数量と、前記複数のオリジナルパケットでの前記第1パケットの数量との和が第1目標量に達し、前記複数のオリジナルパケット以外の前記他のオリジナルパケットが少なくとも1つの前記パケットグループに追加され得ない場合に、各パケットグループに対して連結処理を実行するステップであり、ただし前記第1目標量は、FECエンコードが実行される場合に、エンコードされるべき行列の次元である、実行するステップ、又は、
前記複数のオリジナルパケットの数量が第2目標量に等しく、前記第2目標量のオリジナルパケットが少なくとも1つのパケットグループにグループ化されている場合に、各パケットグループに対して連結処理を実行するステップであり、ただし前記第2目標量は、FEC
エンコードを1回実行するために必要なオリジナルパケットのプリセット量である、実行するステップ
を含む、請求項
2記載の方法。
【請求項5】
方法は、
少なくとも1つの前記連結パケットの各連結パケットのサイズが前記第1パケットの前記サイズと等しい場合に、少なくとも1つの冗長パケットを取得するために、前記第1パケットと少なくとも1つの前記連結パケットとに対して、FECエンコード処理を実行するステップをさらに備えている、請求項1記載の方法。
【請求項6】
パケット処理装置であって、装置は、
複数のオリジナルパケットを取得するように構成されているプロセッサを備え、
少なくとも1つの連結パケットを取得するために、前記複数のオリジナルパケットのうちの第1パケットのサイズに基づいて、前記複数のオリジナルパケットのうちの前記第1パケット以外の他のオリジナルパケットに対して連結処理を実行するように、前記プロセッサはさらに構成され、前記第1パケットは、前記複数のオリジナルパケットのうちの最大データ量を有するパケットであり、
少なくとも1つの前記連結パケットのうちの任意の連結パケットのサイズが、前記第1パケットの前記サイズよりも小さい場合に、等長データブロックを取得するために、少なくとも1つの前記連結パケットに対してパディング処理を実行するように、前記プロセッサはさらに構成され、前記等長データブロック中の各データブロックのサイズは、前記第1パケットの前記サイズであり、
少なくとも1つの冗長パケットを取得するために、前記第1パケットと前記等長データブロックとに対して、順方向誤り訂正FECエンコード処理を実行するように、前記プロセッサはさらに構成されている、パケット処理装置。
【請求項7】
前記プロセッサは、以下のステップ、即ち、
少なくとも1つのパケットグループを取得するために、前記複数のオリジナルパケットのうちの前記第1パケットの前記サイズに基づいて、前記複数のオリジナルパケットのうちの前記第1パケット以外の前記他のオリジナルパケットをグループ化するステップであり、各パケットグループは、少なくとも1つのオリジナルパケットを含み、各パケットグループでの全てのオリジナルパケットのサイズの合計は、前記第1パケットの前記サイズ以下である、グループ化するステップと、
少なくとも1つの前記連結パケットを取得するために、各パケットグループに対して連結処理を実行するステップであり、各連結パケットは1つのパケットグループに対応する、実行するステップと
を行うように構成されている、請求項6記載の装置。
【請求項8】
装置は、目標ハードウェアエンジンをさらに備え、
前記プロセッサは、少なくとも1つのパケットグループを取得するために、前記複数のオリジナルパケットのうちの前記第1パケットの前記サイズに基づいて、前記複数のオリジナルパケットのうちの前記第1パケット以外の前記他のオリジナルパケットをグループ化するように構成され、少なくとも1つの前記パケットグループに基づいてエンコードタスクを生成するように構成され、前記エンコードタスクは各パケットグループのアドレス情報を含み、
前記目標ハードウェアエンジンは、前記エンコードタスクに基づいて各パケットグループで連結処理を実行し、少なくとも1つの前記連結パケットを取得するように構成されている、請求項7記載の装置。
【請求項9】
前記プロセッサは、以下のステップ、即ち、
少なくとも1つのパケットグループの数量と、前記複数のオリジナルパケットでの前記第1パケットの数量との和が第1目標量に達し、前記複数のオリジナルパケット以外の前記他のオリジナルパケットが少なくとも1つの前記パケットグループに追加され得ない場合に、各パケットグループに対して連結処理を実行するステップであり、ただし前記第1目標量は、FECエンコードが実行される場合に、エンコードされるべき行列の次元である、実行するステップ、又は、
前記複数のオリジナルパケットの数量が第2目標量に等しく、前記第2目標量のオリジナルパケットが少なくとも1つのパケットグループにグループ化されている場合に、各パケットグループに対して連結処理を実行するステップであり、ただし前記第2目標量は、FEC
エンコードを1回実行するために必要なオリジナルパケットのプリセット量である、実行するステップ
を行うようにさらに構成されている、請求項7記載の装置。
【請求項10】
前記プロセッサは、以下のステップ、即ち、
少なくとも1つの前記連結パケットの各連結パケットのサイズが前記第1パケットの前記サイズと等しい場合に、少なくとも1つの冗長パケットを取得するために、前記第1パケットと少なくとも1つの前記連結パケットとに対して、順方向誤り訂正FECエンコード処理を実行するステップを行うようにさらに構成されている、請求項8記載の装置。
【請求項11】
記憶媒体は命令を記憶し、前記命令はプロセッサによりロード及び実行されて、請求項1ないし5のいずれか1項に記載のパケット処理方法を実現する、コンピュータ可読な記憶媒体。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0012
【補正方法】変更
【補正の内容】
【0012】
可能な実施では、少なくとも1つの連結パケットを取得するために、各パケットグループに対して連結処理を実行するステップは、
少なくとも1つのパケットグループの数量と、複数のオリジナルパケットでの第1パケットの数量との和が第1目標量に達し、複数のオリジナルパケット以外の他のオリジナルパケットが少なくとも1つのパケットグループに追加され得ない場合に、各パケットグループに対して連結処理を実行するステップであり、ただし第1目標量は、FECエンコードが実行される場合に、エンコードされるべき行列の次元である、実行するステップ、又は、
複数のオリジナルパケットの数量が第2目標量に等しく、第2目標量のオリジナルパケットが少なくとも1つのパケットグループにグループ化されている場合に、各パケットグループに対して連結処理を実行するステップであり、ただし第2目標量は、FECエンコードを1回実行するために必要なオリジナルパケットのプリセット量である、実行するステップ
を含む。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0019
【補正方法】変更
【補正の内容】
【0019】
図1は、本出願の一実施形態によるパケット伝送システムの概略図である。図
1は、第1端末101と、第1ネットワークデバイス102と、第2ネットワークデバイス103と、第2端末104とを示す。第1端末101は、データストリームを生成し、第1ネットワークデバイス102にデータストリームを送信するように構成されている。第1ネットワークデバイス102は、データストリーム内の複数のオリジナルパケットを1つの等長データブロックに連結し、等長データブロックの各データブロックは同じサイズを有する。FECエンコード処理は、複数のオリジナルパケットでの冗長パケットを取得するために、等長データブロックに対して実行される。第1ネットワークデバイス102は、同一のFECヘッダを等長データブロックの各データブロックと各冗長パケットとに付加し、それらを複数のFECパケットにカプセル化し、次に、FECパケットを含むコードストリームを第2ネットワークデバイス103へ送信する。第2ネットワークデバイス
103は、コードストリーム内の失われたオリジナルFECパケットをデコードし、失われたオリジナルFECパケットを回復する。オリジナルFECパケットは、FECパケットの任意の1つである。第2ネットワークデバイス103は、回復されたオリジナルFECパケットと未損失のFECパケットとに基づいてデータストリームを回復し、第2端末104にデータストリームを送信する。第1端末101と第2端末104とは、携帯電話、ラップトップコンピュータなどであってよい。第1ネットワークデバイス102と第2ネットワークデバイス103とは、ルータ及びスイッチなどのデバイスであってよい。データストリームは、ビデオストリーム、オーディオストリームであってよく、又はテキストデータを含むテキストストリームであってよい。データストリームタイプは、本出願の実施形態において特に限定されない。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0021
【補正方法】変更
【補正の内容】
【0021】
いくつかの可能な実施では、第1ネットワークデバイスは、等長データブロックを取得するために、プロセッサを使用して、データストリーム内のオリジナルパケットの連結処理を直接実行してよい。次いで、プロセッサは、等長データブロックに対してFECエンコードを実行する。いくつかの可能な実施では、第1ネットワークデバイスのプロセッサは、各オリジナルパケットのサイズに基づいて連結ソリューションを決定し、連結ソリューションを目標ハードウェアエンジンへ伝送してよい。目標ハードウェアエンジンは、プロセッサが提供する連結ソリューションに従って、データストリーム内のオリジナルパケットに対して連結処理を実行し、等長データブロックを取得し、等長データブロックに対してFECエンコードを実行する。プロセッサは、ネットワークプロセッサ(network processor, NP)、中央処理ユニット(central processing unit, CPU)、又はそれらの組み合わせであってよい。プロセッサは、ハードウェアチップをさらに含んでよい。ハードウェアチップは、特定用途向け集積回路(application-specific integrated circuit, ASIC)、プログラマブルロジックデバイス(programmable logic device, PLD)、又はそれらの組み合わせであってよい。PLDは、複雑なプログラマブル論理デバイス(complex programmable logic device, CPLD)、フィールドプログラマブル論理ゲートアレイ(field-programmable gate array, FPGA)、汎用アレイ論理(generic array logic, GAL)デバイス、又はそれらの任意の組み合わせであってよい。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0039
【補正方法】変更
【補正の内容】
【0039】
例えば、
図3は、本発明の一実施形態によるネットワークデバイスに実施されるパケット処理方法のフローチャートである。データストリーム中の1つのオリジナルパケットを受信した後、第1ネットワークデバイスのネットワークポートは、オリジナルパケットをパケット解析エンジン(packet parse engine, PPE)へ伝送する。PPEがオリジナルパケットを受信するたびに、PPEはオリジナルパケットをメモリに記憶し、オリジナルパケットの記憶アドレスを記録する。これにより、データストリームにあるオリジナルパケットでありネットワークポートが受信したオリジナルパケットを、PPEは収集することができる。ネットワークポートは、ギガビットイーサネット(gigabit ethernet, GE)ネットワークポート又は10ギガビットイーサネット(ten-gigabit ethernet,
10GE)ネットワークポートであってよい。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0040
【補正方法】変更
【補正の内容】
【0040】
ステップ2012:メモリ内のデータストリーム内の非符号化のオリジナルパケットの数量が第2目標量以上である場合に、プロセッサは、データストリーム内の非符号化のオリジナルパケットから第2目標量のオリジナルパケットを取得する。ここで、第2目標量は、FECエンコードを1回実行するために必要とされるオリジナルパケットのプリセット量である。
【手続補正7】
【補正対象書類名】明細書
【補正対象項目名】0045
【補正方法】変更
【補正の内容】
【0045】
いくつかの可能な実施では、第1ネットワークデバイスは、FECエンコードが毎回実行されるオリジナルパケットの数量を制限せず、FECエンコードが毎回実行されるエンコードされるべきオリジナルパケットの数量を制限する。エンコードされるべきオリジナルパケットの数量は、FEC
エンコードが実行される場合に、エンコードされるべき行列の次元である。即ち、第1ネットワークデバイスは、第2目標量をプリセットせず、第1目標量をプリセットする。この場合に、UDPプロキシが1つのエンコード通知メッセージを受信するたびに、UDPプロキシは、FECソフトウェアモジュールにエンコード通知メッセージを送信し、これによりFECソフトウェアモジュールが複数のエンコード通知メッセージを取得することができる。FECソフトウェアモジュールが、複数のエンコード通知メッセージから複数のオリジナルパケットのサイズを取得することができる場合に、FECソフトウェアモジュールは、複数のオリジナルパケットからの最大の第1パケットを決定してよく、最大パケットのサイズ(目標サイズとして示される)と、複数のオリジナルパケットのうちの第1パケット以外のパケットのサイズ(即ち、FECソフトウェアモジュールが
図3中のオリジナルパケットについて連結ソリューションを決定するプロセス)とに基づいて、第3目標量の連結ソリューションを決定してよい。各連結ソリューションでは、少なくとも2つのオリジナルパケットが連結されて1つの連結パケットとされ、各連結パケットのサイズが目標サイズ以下であり、第3目標量と複数のオリジナルパケットでの第1パケットの数量との和が第1目標量に等しい。連結ソリューションを決定する特定のプロセスについては、ステップ202を参照するものとする。次に、FECソフトウェアモジュールは、連結ソリューションを目標ハードウェアエンジンへ伝送する。目標ハードウェアエンジンは、連結ソリューションに従ってオリジナルパケットを連結する。
【手続補正8】
【補正対象書類名】明細書
【補正対象項目名】0057
【補正方法】変更
【補正の内容】
【0057】
複数の現在残っているターゲットパケットグループでの各ターゲットパケットグループのサイズと、順序がiであるオリジナルパケットのサイズとの合計が、目標サイズよりも大きい場合は、第jターゲットパケットグループが複数のターゲットパケットグループに存在しないことを示す。プロセッサは、第iターゲットパケットグループとして新しいターゲットパケットグループを追加し、順序がiであるオリジナルパケットを第iターゲットパケットグループにグループ化してよい。
【手続補正9】
【補正対象書類名】明細書
【補正対象項目名】0062
【補正方法】変更
【補正の内容】
【0062】
プロセッサが、第2目標量の代わりに、オリジナルパケットの数量を第1目標量に設定する場合に、プロセッサは、プリセット時間の間隔で、プリセット時間内に第1ネットワークデバイスによってバッファされたオリジナルパケットをグループ化してよい。グループ化プロセスは、ステップ2021ないし2025に示されるプロセスであってよい。この場合に、目標サイズは、プリセット時間内に第1ネットワークデバイスによってバッファされたオリジナルパケットのうちの最大パケットのサイズであってよいし、又はプリセットされたパケットサイズであってよい。プリセットされたパケットサイズは、複数のオリジナルパケットが属する第1データストリーム内の最大パケットのサイズであってよい。プリセット時間内に第1ネットワークデバイスによってバッファされたオリジナルパケットが第3目標量のパケットグループにグループ化され、第3目標量のパケットグループのいずれも他のパケットを含むことができない場合に、グループ化は終了する。プリセット時間内に第1ネットワークデバイスによってバッファされたオリジナルパケットを少なくとも1つのパケットグループにグループ化した後、少なくとも1つのパケットグループの量が第3目標量に等しいが、少なくとも1つのパケットグループが他のパケットを含むことができる場合に、少なくとも1つのパケットグループが新しいオリジナルパケットを含むことができなくなるまで、プロセッサは、新しいオリジナルパケットを継続的に収集してよい。この場合に、グループ化は終了する。少なくとも1つのパケットグループの量が第3目標量よりも少ない場合に、プロセッサは、第3目標量のパケットグループが取得され、第3目標量のパケットグループのいずれも新しいオリジナルパケットを含まなくなるまで、継続的に新しいオリジナルパケットを収集し、収集された新しいオリジナルパケットをグループ化してよい。この場合に、グループ化は終了する。
【手続補正10】
【補正対象書類名】明細書
【補正対象項目名】0074
【補正方法】変更
【補正の内容】
【0074】
いくつかの可能な実施では、複数のオリジナルパケットをグループ化するとき、プロセッサは、1つのオリジナルパケットに含まれるいくつかのデータを1つのパケットグループにグループ化し、オリジナルパケットに含まれる他のデータを他のパケットグループにグループ化してよい。可能な実施では、グループ化プロセスにおいて、プロセッサは、受信した第1オリジナルパケットを第1パケットグループにグループ化する。第1パケットグループのサイズは目標サイズであり、目標サイズは任意のプリセットサイズであってよい。オリジナルパケットのサイズが目標サイズ以下の場合に、プロセッサは、第1オリジナルパケットを第1パケットグループにグループ化する。第1オリジナルパケットのサイズが目標サイズよりも大きい場合に、プロセッサは、第1オリジナルパケットを少なくとも2つのデータブロックに仮想的に分割する。ここで、少なくとも2つのデータブロック内の最後のデータブロックのサイズが目標サイズ以下であり、少なくとも2つのデータブロック内の最後のデータブロック以外の他のデータブロックのサイズが全て目標サイズに等しい。プロセッサは、各データブロックをそれぞれに1つのパケットグループにグループ化する。プロセッサがその後新しいオリジナルパケットを受信した場合に、新しいオリジナルパケットのサイズと、現在の全パケットグループの中の最後のパケットグループのサイズとの合計が、目標サイズ以下の場合に、プロセッサは新しいオリジナルパケットを最後のパケットグループにグループ化する。もし、新しいオリジナルパケットのサイズと、現在の全パケットグループの最後のパケットグループのサイズとの合計が目標サイズよりも大きいならば、プロセッサは、新しいオリジナルパケットを、少なくとも1つの第1ターゲットデータブロックと、少なくとも1つの第2ターゲットデータブロックとに仮想的に分割する。ここで、第1ターゲットデータブロックのサイズは、最後のパケットの目標サイズと最後のパケットの現在のサイズとの間の差分であり、少なくとも1つの第2ターゲットデータブロックでの、最後のデータブロックのサイズは、目標サイズ以下であり、少なくとも1つの第2ターゲットデータブロックでの、最後のデータブロック以外のデータブロックのサイズは、全て目標サイズに等しい。プロセッサは、第1ターゲットデータブロックを最後のパケットグループにグループ化し、少なくとも1つのパケットグループを追加し、各第2ターゲットデータブロックを新しく追加されたパケットグループにグループ化する。プロセッサがオリジナルパケットの第2目標量をグループ化した後、又はプロセッサがパケットグループの第1目標量を決定した後、パケットグループの第1目標量は他のオリジナルパケットを含むことができず、グループ化が終了する。例えば、
図6は、本出願の一実施形態によるオリジナルパケットのグループ化プロセスの概略図である。今度は、オリジナルパケット1ないし8をグループ化し、各パケットグループのサイズは常に目標サイズとする。プロセッサは、オリジナルパケット1ないし
3と、オリジナルパケット4の最初の部分とを、パケットグループ1に分類し、オリジナルパケット4の最後の部分と、オリジナルパケット5と、オリジナルパケット6の最初の部分とを、パケットグループ2に分類し、オリジナルパケット6の最後の部分と、オリジナルパケット7ないし8とを、パケットグループ2に分類する。パケットグループ3のサイズは、目標サイズよりも小さい。続いて、パケット3内のパケットを連結することによって取得された連結パケットに、データをパディングしてよく、パディングされたパケットのサイズが目標サイズとなるようにする。
【手続補正11】
【補正対象書類名】明細書
【補正対象項目名】0083
【補正方法】変更
【補正の内容】
【0083】
これに代えて、複数のオリジナルパケットの数量が第2目標量に等しく、第2目標量のオリジナルパケットが少なくとも1つのパケットグループにグループ化されている場合に、プロセッサは、各パケットグループに対して連結処理を実行する。ここで、第2目標量は、FECエンコードを1回実行するために必要とされるオリジナルパケットのプリセット量である。プロセッサが各パケットグループに対して連結処理を実行するプロセスは、目標ハードウェアエンジンが各パケットグループに対して連結処理を実行するプロセスと類似する。プロセッサが各パケットグループに対して連結処理を実行するプロセスは、本出願のこの実施形態では再度説明しない。
【手続補正12】
【補正対象書類名】明細書
【補正対象項目名】0086
【補正方法】変更
【補正の内容】
【0086】
第2部分行列での第i行と第j列との要素は、
【数1】
である。x
i-1及びy
i-1は、ガロア体(
Galois field, GF)(2
w)の要素であり、i及びjは両方とも0以上の整数であり、wは8であってよい。目標ハードウェアエンジンは、(Q+R)*Lコーディング行列を取得するために、生成行列とエンコードされるべき行列とに対して乗算を実行する。コーディング行列は、エンコードされるべき行列とR*L検査行列とを含む。検査行列の各行は1つの冗長パケットである。
【手続補正13】
【補正対象書類名】明細書
【補正対象項目名】0090
【補正方法】変更
【補正の内容】
【0090】
少なくとも1つの冗長パケットを取得した後、目標ハードウェアエンジンは、少なくとも1つの冗長パケットをメモリに記憶し、エンコード完成メッセージをプロセッサへ送信する。ここで、エンコード完成メッセージは、少なくとも1つの冗長パケットの記憶アドレスを搬送し、これによりプロセッサはメモリから少なくとも1つの冗長パケットが取得できるようになる。あるいは、目標ハードウェアエンジンは、少なくとも1つの冗長パケットをプロセッサに直接送信する。プロセッサが少なくとも1つの冗長パケットを取得する方式は、本出願のこの実施形態で特に限定されない。
【手続補正14】
【補正対象書類名】明細書
【補正対象項目名】0127
【補正方法】変更
【補正の内容】
【0127】
可能な実施では、プロセッサ1101は以下のステップ、即ち、
少なくとも1つのパケットグループの数量と、複数のオリジナルパケットでの第1パケットの数量との和が第1目標量に達し、複数のオリジナルパケット以外の他のオリジナルパケットが少なくとも1つのパケットグループに追加され得ない場合に、各パケットグループに対して連結処理を実行するステップであり、ただし第1目標量は、FECエンコードが実行される場合に、エンコードされるべき行列の次元である、実行するステップ;又は、
複数のオリジナルパケットの数量が第2目標量に等しく、第2目標量のオリジナルパケットが少なくとも1つのパケットグループにグループ化されている場合に、各パケットグループに対して連結処理を実行するステップであり、ただし第2目標量は、FECエンコードを1回実行するために必要なオリジナルパケットのプリセット量である、実行するステップ
を行うように構成されている。
【国際調査報告】