JP2022122478A - ストレージコントローラのネットワークインタフェース - Google Patents

ストレージコントローラのネットワークインタフェース Download PDF

Info

Publication number
JP2022122478A
JP2022122478A JP2021019731A JP2021019731A JP2022122478A JP 2022122478 A JP2022122478 A JP 2022122478A JP 2021019731 A JP2021019731 A JP 2021019731A JP 2021019731 A JP2021019731 A JP 2021019731A JP 2022122478 A JP2022122478 A JP 2022122478A
Authority
JP
Japan
Prior art keywords
error correction
network
packet
processing
network interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021019731A
Other languages
English (en)
Inventor
伸浩 横井
Nobuhiro Yokoi
央翔 井原
Hiroka Ihara
彰 出口
Akira Deguchi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2021019731A priority Critical patent/JP2022122478A/ja
Priority to US17/472,857 priority patent/US11855778B2/en
Publication of JP2022122478A publication Critical patent/JP2022122478A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/08Arrangements for detecting or preventing errors in the information received by repeating transmission, e.g. Verdan system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1835Buffer management
    • H04L1/1845Combining techniques, e.g. code combining
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1812Hybrid protocols; Hybrid automatic repeat request [HARQ]
    • H04L1/1819Hybrid protocols; Hybrid automatic repeat request [HARQ] with retransmission of additional or different redundancy

Abstract

【課題】ストレージコントローラの通信処理におけるパケットロスを効果的に解決する。【解決手段】ストレージコントローラのネットワークインタフェースは、プロセッサと、プロセッサが実行する命令コードを格納するメモリと、を含む。プロセッサは、ネットワークを介してパケットを送信及び受信するための、プロトコル処理を実行する。プロセッサは、ネットワークから受信していない第1パケットを、第1パケットと同一のエラー訂正パケットグループに含まれる受信済みの他の複数パケットから再生する。【選択図】図1

Description

本発明は、ストレージコントローラのネットワークインタフェースに関する。
情報システム及びストレージシステムは、例えば、一例としてユーザアプリケーション等が動作するサーバシステムと保存するデータの管理、信頼性を向上させるストレージコントローラとサーバシステムで利用するデータを格納、保持するドライブが複数格納されたドライブボックスで構成される。
ストレージシステムは、サーバシステムからのコマンドを受信し、例えばリードコマンドの場合、ストレージコントローラがドライブボックス内のドライブからデータを読み出し、サーバシステムへデータ転送を行う。
従来、特にエンタープライズ製品のストレージコントローラのフロントエンドネットワークは、FC(Fibre Channel)ネットワーク、バックエンドネットワークはSAS(Serial Attached SCSI)ネットワークが主流であり、ドライブボックスは、JBOD(Just a Bunch Of Disks)で、ドライブボックスのスロットに、データを格納するSAS/SATAドライブを複数搭載する構成が一般的であった。
近年、ストレージシステムの性能向上のために、高性能なドライブであるSSD(Solid State Drive)等のフラッシュドライブの採用が進み、フラッシュドライブにアクセスするために最適なNVMe(Non-Volatile Memory Express)プロトコルが規格化され、更に、バックエンドネットワークのドライブ接続の高拡張性に向けて、NVMeプロトコルをインターネットプロトコル(IP)上で使用することができるNVMe over Fabrics(NVMe-oF)規格が登場した。
また、フロントエンドネットワークにも、このNVMe-oFを適用し、サーバシステムからストレージコントローラを介してドライブボックスまでの接続すべてをNVMe-oF化するEnd-to-End-NVMe-oFの考え方が広まりつつあり、NVMe-oFに対応したフラッシュドライブ搭載のドライブボックス(FBOF:Fabric-attached Bunch of Flash)や、複数のストレージコントローラをネットワークで接続したComposable Storageが登場してきており、エンタープライズストレージの分野でIP接続の活用が広がってきている。
一方で、IPをベースとした通信を行うためのネットワークインタフェース装置は、従来は専用ハードウェアで物理層やデータリンク層のみを処理するNIC(Network Interface Card)や、ネットワークプロトコル処理の主にステートレスな部分の一部をオフロードするTOE(TCP Offload Engine)が一般的であった。これに対して、ネットワークインタフェース装置にも変化があり、汎用プロセッサやメモリを内蔵し、オペレーティングシステムを動作させて、そのうえでソフトウェアを動かし、ネットワークプロトコルの処理を行うSmartNICが登場している。
SmartNICでは、例えばサーバシステム上で動くようなものと同じオペレーティングシステムを動作させることができ、そこで利用されているソフトウェアプロトコルスタックや、アプリケーション等を動作させることができる。処理をソフトウェア実装できるため、複数のプロトコルや、新しプロトコルへの早急な対応、プロトコル処理のアップデートにも柔軟に対応することができる。
このようにIP接続が広がる中、IP接続を利用する際の経路中のネットワーク機器のバッファ溢れや、高処理理負荷による取りこぼし、障害等々で、通信途中で送受信パケットが失われてしまうパケットロスの現象が、レイテンシ増加やスループット低下の要因となり、高性能化、安定性能の実現に対する重大な課題となっている。
パケットロスの対策としては、受信側でパケットロスを検出した際に、パケットロスを送信側に通知し、再送を促すARQ(Auto Repeat Request)の特性を持ったプロトコルを利用することが一般的で公知である。しかし、ARQ技術は、パケット転送時に送信側と受信側でのやり取りが増えるため、パケット転送にかかる時間が増えてしまい、データ転送効率が低下する問題がある。ネットワーク遅延は距離に比例して大きくなるため、特に、長距離のデータ転送が必要となるストレージのディザスタリカバリシステム等で問題となる。
一方、ARQによるパケット転送効率の悪化を避けるため、パケットロスに対する他の対策として、ロスレスを保証する機器でネットワークを構成する方法がある。しかし、ロスレス機器は機器コストが高く、通信経路すべてをロスレス機器で構成することは、コストパフォーマンスの観点で悪くなる懸念がある。
これらの問題の回避方法として、再送やロスレス機器を使わずに、パケットロスを対策する方法として、送信側で冗長パケットを転送パケットに混ぜ込むことで、受信側で誤りを訂正するFEC(Forward Error Correction:前方エラー訂正)機能を持つネットワーク中継器の利用が開示されている。
例えば、特許文献1によれば、FEC技術を採用したiSCSIプロトコルに準拠したストレージ装置間でのデータ交換において、パケットが失われた場合でもデータを復元できるストレージシステムの発明が開示されている。
米国特許第7305605号
本発明が解決しようとする問題点は、ストレージコントローラの通信処理におけるパケットロスを効果的に解決することである。
本開示の代表的な例は、ストレージコントローラのネットワークインタフェースであって、プロセッサと、前記プロセッサが実行する命令コードを格納するメモリと、を含む。前記プロセッサは、ネットワークを介してパケットを送信及び受信するための、プロトコル処理を実行し前記ネットワークから受信していない第1パケットを、前記第1パケットと同一のエラー訂正パケットグループに含まれる受信済みの他の複数パケットから再生する。
本発明の代表的な実施例によれば、ストレージコントローラの通信処理におけるパケットロスを効果的に解決できる。前記した以外の課題、構成および効果は、以下の実施例の説明により明らかにされる。
本発明の実施例にかかるストレージシステムの構成図 ストレージインタフェースの説明図 ストレージインタフェースのプログラム構成図 ストレージインタフェースのプログラムの関係の一例を示す説明図 リモートコピーシステムについての説明図 エラー訂正対象パケットの一例を示す説明図(ネットワークヘッダを含まない形式) エラー訂正対象パケットの一例を示す説明図(ネットワークヘッダを含まない形式) エラー訂正対象パケットの一例を示す説明図(ネットワークヘッダを含む形式) エラー訂正対象パケットの一例を示す説明図(ネットワークヘッダを含む形式) エラー訂正ヘッダの一例を示す説明図 エラー訂正管理テーブルに登録されている情報の一例を示す説明図 エラー訂正通信登録を説明するためのフローチャート データ送信時のエラー訂正処理動作を説明するためのフローチャート コネクション処理コマンド送信時のエラー訂正処理動作を説明するためのフローチャート エラー訂正通信における応答受信時の再送または完了処理を説明するためのフローチャート エラー訂正通信における再送タイマ割り込み時の再送または完了処理を説明するためのフローチャート エラー訂正方式及びエラー訂正レベルに応じて転送順番を変更する動作を説明するためのフローチャート エラー訂正方式及びエラー訂正レベルに応じて転送順番を変更する動作を説明するためのフローチャート データ受信時のエラー訂正処理動作を説明するためのフローチャート コネクション処理コマンド受信時のエラー訂正処理動作を説明するためのフローチャート エラー訂正通信における応答処理タイマ割り込み時の再送または完了処理を説明するためのフローチャート エラー訂正不可の時の再送処理の動作を説明するためのフローチャート エラー訂正レベルの変更処理の動作を説明するためのフローチャート
以下、図面に基づいて、本発明の実施の形態を説明する。なお、以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされており、本発明は、他の種々の形態でも実施する事が可能であり、特に限定しない限り、各構成要素は単数でも複数でも構わない。
また、以下に説明する実施例は特許請求の範囲に係る発明を限定するものではなく、実施例の中で説明されている要素の組み合わせの全てが、発明の解決手段に必須であるとは限らない。
以下の説明では、「テーブル」、「リスト」、「キュー」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよく、データ構造に依存しないことを示すため、「xxxのテーブル」、「xxxのリスト」、「xxxのキュー」等を「xxx情報」等と称することがある。以下の説明では、識別情報について説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
以下の説明では、同一あるいは同様な機能を有する構成要素が複数ある場合には、基本的に同一の符号を付して説明するが、機能が同じであっても機能を実現するための手段が異なる場合がある。さらに、後述する本発明の実施例は、汎用コンピュータ上で稼動するソフトウェアで実装してもよいし、専用ハードウェア又はソフトウェアとハードウェアの組み合わせで実装してもよい。
また、以下の説明では「プログラム」を主語として処理を説明することがあるが、プログラムはプロセッサ(例えば、CPU:Central Processing Unit) によって実行されることによって、定められた処理に対して、適宜に記憶資源(例えば、メモリ)、および/または、インタフェースデバイス(通信ポート)等を用いながら行うため、処理の主体がプロセッサとして説明してもよい。
プログラムを主語として説明された処理は、プロセッサを有する計算機(例えば、計算ホスト、ストレージ装置)が行う処理としてもよい。また、以下の説明では、「コントローラ」の表現で、プロセッサ又はプロセッサが行う処理の一部又は全部を行うハードウェア回路を指してもよい。
プログラムは、プログラムソース(例えば、プログラム配布サーバや、計算機が読み取り可能な記憶メディア)から、各計算機にインストールされてもよく、この場合、プログラム配布サーバはCPUと記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムを記憶し、配布プログラムをCPUが実行することで、プログラム配布サーバのCPUは配布対象のプログラムを他の計算機に配布してもよい。
また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、以下の説明において、記憶ドライブ又は単にドライブは、物理的な記憶デバイスを意味し、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でもよい。ドライブは、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)でもよい。ストレージシステムに異なる種類のドライブが混在していてもよい。
また、以下の説明において、ドライブはVOLを持ち、「VOL」はボリュームの略であり、物理的な記憶デバイスまたは、論理的な記憶デバイスでもよい。VOLは、実体的なVOL(RVOL)であってもよいし、仮想的なVOL(VVOL)であってもよい。「RVOL」は、そのRVOLを有するストレージシステムが有する物理的な記憶資源(例えば、1以上のRAIDグループ)に基づくVOLでよい。
「VVOL」は、外部接続VOL(EVOL)と、容量拡張VOL(TPVOL)と、スナップショットVOLとのうちのいずれでもよい。EVOLは、外部のストレージシステムの記憶空間(例えばVOL)に基づいており、ストレージ仮想化技術に従うVOLでよい。TPVOLは、複数の仮想領域(仮想的な記憶領域)で構成されており容量仮想化技術(典型的にはThin Provisioning)に従うVOLでよい。
また、以下の説明では、ホストから認識されるVOL(ホストに提供されるVOL)を「LDEV」と言う。以下の説明では、LDEVは、TPVOL(又はRVOL)であり、プールは、TPプールである。しかし、本発明は、容量拡張技術(Thin Provisioning)が採用されていないストレージ装置にも適用できる。
「プール(POOL)」は、論理的な記憶領域(例えば複数のプールVOLの集合)であり、用途ごとに用意されてよい。例えば、プールとして、TPプールであってよい。TPプールは、複数のページ(実体的な記憶領域)で構成された記憶領域でよい。ストレージコントローラが、ホストコンピュータ(以下、ホスト)から受信したライト要求が指定するアドレスが属する仮想領域(TPVOLの仮想領域)にページが割り当てられていない場合、その仮想領域(ライト先仮想領域)にTPプールからページを割り当てる(ライト先仮想領域にページが割り当て済であってもページが新たにライト先仮想領域に割り当てられてもよい)。「プールVOL」は、プールの構成要素となるVOLでよい。プールVOLは、RVOLであってもよいしEVOLであってもよい。
また、以下の説明では、VOLはSCSIにおける「Logical Unit(以降、LU)」でも、NVMeにおける「Name Space(以降、NS)」でもよい。
また、以下の説明において、「RAID」は、Redundant Array of Inexpensive Disksの略である。RAIDグループは、複数のドライブ(典型的には同種のドライブ)で構成され、そのRAIDグループに関連付けられたRAIDレベルに従いデータを記憶する。RAIDグループは、パリティグループと呼ばれてもよい。パリティグループは、例えば、パリティを格納するRAIDグループのことでよい。
本明細書の一実施形態は、ストレージコントローラとの通信処理におけるパケットロスの問題を解決する。すなわち、エラー訂正を含む通信の導入の障害となる、リピータなどの追加のネットワーク機器による性能劣化、コストの増加や、設置スペースの拡張が必要になってしまう点を解決する。または、受信側でエラー訂正出来なかった場合に、送信側から応答が返ってこないパケット以降のパケットをすべて再送してネットワーク帯域を効率的に使えない点を解決する。または、さらには、iSCSIの他にNVMe-oF等、新規プロトコルへの対応を増やすたびにハードウェアを更新しなければならない点を解決する。
本明細書の一実施形態のネットワークインタフェース装置は、サーバシステム及びストレージシステムを含む情報処理システムに実装され得る。ストレージシステムは、ストレージコントローラ、及びドライブボックスを含むことができる。ネットワークインタフェース装置は、例えば、汎用プロセッサ、メモリ、ネットワークコントローラ、アシストシステム、内部スイッチ、ネットワークとのインタフェース、及びホストシステムとのインタフェースを含むことことができる。
本明細書の一実施形態において、送信側のネットワークインタフェース装置は、ネットワークインタフェース装置のホストシステムからパケット送信要求を取得し、送信先がエラー訂正通信を行う送信先であるかを判定する。送信先がエラー訂正通信を行う送信先であれば、エラー訂正計算処理のグループが既に形成されているかを判定する。グループが形成されてなければ、新規にグループを作成する。
ネットワークインタフェース装置は、そのグループを示す制御情報を含むエラー訂正ヘッダを生成して、ネットワークパケットを生成し、エラー訂正のレベルを加味しながら送信順序、送信間隔の制御、及びエラー訂正のための必要な冗長パケット数を判定する。冗長パケットが必要であれば、ネットワークインタフェース装置は、上記グループ内で冗長パケットを生成し、通常ネットワークパケット共に、ネットワークパケットとして送信する。
送信側ネットワークインタフェース装置は、受信側からの、ネットワークパケットのエラー訂正不能の受信応答に応じて、ネットワークパケットを再送する。ネットワークインタフェース装置は、一定時間応答がない場合も、再度ネットワークパケットを再送する。
受信側の上記ネットワークインタフェース装置は、送信側からネットワークパケットを受信し、エラー訂正開始条件が満たされているか判定する。エラー訂正開始条件が満たされていれば、当該グループ内でエラー訂正管理テーブルの情報を用いて、不足しているネットワークパケットを再生し、ネットワークパケット受信完了の応答を送信側へ返送する。もし、再生不能であれば、不足しているネットワークパケットのみを再送するように、不足したネットワークを識別できる情報を含んだ応答を作成し、送信側へ応答する。必要に応じて、不足状況等からエラー訂正管理テーブルを更新する。例えば、エラー訂正レベル等を変更する場合は、送信側へ通知する。
これらのエラー訂正処理可能であればエラー訂正し、エラー訂正不可であれば、再送要求を行う通信において、例えば、iSCSIからNVMe-oFへの切り替えや、NVMe-oFの仕様アップデートによる変化、また、更に新しいプロトコルに変化しても迅速に対応できるように、汎用プロセッサやメモリ等を用いて、ネットワークインタフェースのソフトウェアの入れ替えで対応することで変化に追従し、ストレージコントローラとの通信処理におけるパケットロスの問題を解決するエラー訂正機能を有したネットワークインタフェースを実現する。
ネットワークインタフェース上で、エラー訂正を実現することで、不要なプロトコル変換を省略する。これにより、通信性能の性能劣化、ネットワーク機器の追加によるコストの増加、設置スペースの増加を抑制できる。また、エラー訂正不可時の不足パケットのみの再送要求により、応答が返ってこないパケット以降の全パケットを送信側が再送してネットワーク帯域を効率的に使えなくすることを避けることができる。
ソフトウェアベースのプロトコル処理を実現できる汎用プロセッサとメモリを用いた構成は、iSCSIの他にNVMe-oF等、新規プロトコルへの対応を増やすたびにハードウェアを更新しなければならない点を解決する。また、NVMe-oF環境のように、特にレイテンシ性能が求められる環境において、再送によるRTT(Round Trip Time)の増加による性能影響を抑えることができる。
図1は、実施例にかかる情報処理システムの構成例を示す図である。情報処理システムは、1または複数のサーバシステム100と、ストレージシステムと、を含む。ストレージシステムは、1または複数のストレージコントローラ101と、1または複数のドライブボックス102と、を含む。ストレージコントローラ101は、フロントエンドネットワーク104を介して、1または複数のサーバシステム100に接続されている。
ドライブボックス102は、1または複数のドライブを搭載し、1または複数のストレージコントローラ101とバックエンドネットワーク105を介して接続される。また、ストレージコントローラ101は、ストレージコントローラ間ネットワーク106による近距離の接続の他に、中、遠距離の別のストレージコントローラ101と外部ネットワーク107を介して接続する。
サーバシステム100は、ユーザアプリケーション等が動作するホストマシンであり、1又は複数のプロセッサを有し、メモリ、補助記憶装置の1又は複数の記憶装置を含んで構成される。例えば、データベースやWebサービスが動作し、サーバシステム100は、それらにより作られたデータを、ネットワークインタフェース103を介してストレージコントローラ101にライト及びリードする。また、サーバシステム100は、ストレージコントローラ101とフロントエンドネットワーク104を介して接続し、そのインタフェース装置としてネットワークインタフェース103を持つ。サーバシステム100は、複数のサーバ群で構成されてもよく、それぞれにネットワークインタフェース103を持ちストレージコントローラ101や、他のサーバシステム100と接続してもよい。
サーバシステム100にストレージとしての機能を提供するため、ストレージコントローラ101Aとストレージコントローラ101Bとは、冗長化されたコントローラを構成する。ストレージコントローラ101A、101Bは、それぞれ、1又は複数のプロセッサ及び1又は複数の記憶装置を備える。ストレージコントローラ101Aとストレージコントローラ101Bは同じ構成を有する。
ストレージコントローラ101A、101Bは、それぞれ、1又は複数のプロセッサを有し、各プロセッサのコアは、サーバシステム100からのリードコマンドやライトコマンドに応じて、対応するドライブボックス102に格納されたデータを転送指示する。ストレージコントローラ101のメモリは、例えば、SDRAM(Synchronous Dynamic Random Access Memory)等の半導体メモリで構成される。メモリは、揮発メモリとSCM(Storage Class Memory)などの不揮発メモリと組み合わせて構成してもよい。
メモリは、プロセッサの主記憶として、実行プログラム(ストレージ制御プログラム等)や、プロセッサが参照する管理テーブル等を格納する。また、メモリは、ストレージコントローラ101のディスクキャッシュ(キャッシュメモリ)としても使用される。ストレージコントローラ101は、ドライブボックス102に対するインタフェース装置としてネットワークインタフェース103を持つ。ネットワークインタフェース103は、サーバシステム100から指示されたデータ転送や、データコピー等のストレージ処理にかかる処理に関する情報をドライブボックス102と通信する。
ドライブボックス102は、SSDやHDD等のドライブを複数搭載し、それら複数ドライブとストレージコントローラ101A、101Bを接続するために、内部スイッチ、並びに、転送処理に利用するプロセッサ及びメモリを含む。サーバシステム100にて生成されたデータを、ストレージコントローラ101を介して受信し、格納、保持する。
ドライブボックス102は保持しているデータの可用性を確保するために、内蔵されているドライブ間でRAIDを組んでもよいし、複数のドライブボックス102間でRAIDを組んでもよい。また、ドライブボックス102はストレージコントローラ101A、101Bとバックエンドネットワーク105を介して接続し、そのインタフェース装置としてネットワークインタフェース103を持つ。
ネットワークインタフェース103は、サーバシステム100、ストレージコントローラ101A、101B、及びドライブボックス102それぞれに搭載され、各種装置と各種ネットワークとの接続インタフェースとなる装置である。実施例におけるエラー訂正処理は、当該ネットワークインタフェース103にて実行する。
ネットワークインタフェース103は、例えば、SmartNICでもよい。SmartNICの各種機能は、SmartNIC搭載の汎用プロセッサ及び、一部ハードウェアオフロードエンジンを用いて実施される。また、SmartNICはFPGA(Field Programmable Gate Array)を用いた構成でもよく、その場合は、各機能はFGPA上で実現される。さらに、その他の形態として、全体がハードウェア実装された専用インタフェースハードウェアとしての構成であってもよい。ネットワークインタフェース103の詳細は後述する。
フロントエンドネットワーク104は、ストレージコントローラ101A、101Bとサーバシステム100の間を接続するネットワークで、例えば、FC(Fibre Channel)が用いられるが、iSCSI、NVMe-oF(NVMe over Fabrics)等のIPネットワークも利用される。
バックエンドネットワーク105は、ストレージコントローラ101とドライブボックス102の間を接続するネットワークであり、例えば、SAS等が用いられる。ドライブボックス102内のドライブにフラッシュドライブが採用されるにつれ、PCI-Express接続でNVMeも用いられている。また、NVMe-oF等のIPネットワークも利用される。
ストレージコントローラ間ネットワーク106は、ストレージコントローラ101の冗長化のために利用するネットワークで、広帯域のインタコネクトで構成される。当該ネットワークを使って、ライトデータの2重化やメタデータの共有等を行い、一方のストレージコントローラ101Aが保守や障害等で閉塞しても、もう一方のストレージコントローラ101Bにより、ストレージ処理を継続可能となる。
外部ネットワーク107は、Wide Area Network(WAN)、または、Local Area Network(LAN)で例えば、データリンク層がイーサネット(登録商標)、インターネット層がインターネットプロトコル、トランスポート層がTCP、または、UDP等のネットワークで、iSCSIやNVMe-oFのProtocol Data Unit(PDU)を用いた通信を行う。当該ネットワークは、インターネット回線又は専用回線の形態をとることができる。距離に応じて、通信遅延が大きくなり、ネットワーク機器をロスレス機器のみで構成しない場合、上記回線種によって発生率は異なるが、パケットロスの発生が想定される。
なお、情報システム、ストレージシステムは、ここで示したもの以外も含んでよい。例えば、各ネットワークには、スイッチやルーター等のネットワーク機器が間に接続されてもよいし、監視や保守のための装置が接続されてもよい。また、パブリッククラウド上のストレージサービスに外部ネットワーク107を経由して接続する構成でもよい。その際は、ストレージコントローラ101のネットワークインタフェース103と上記ストレージサービス上のエラー訂正処理サービスの組み合わせで、エラー訂正通信を実現する構成をでもよい。
図2は、本発明の実施例にかかるストレージインタフェースの構成例を示す図である。ネットワークインタフェース103は、ホストバス200を介して、ネットワークインタフェース103を搭載する機器、例えば、ストレージコントローラ101やサーバシステム100やドライブボックス102等と接続される。ネットワークインタフェース103は、ネットワークパス202を介して、例えばIPネットワーク接続で他の機器と接続する。
ネットワークインタフェース103は、ホストバス200に接続するためのホストインタフェース201、ネットワークパス202と接続してネットワークプロトコルの処理を行うネットワークコントローラ203を含む。さらに、ネットワークインタフェース103内の各種機能をつなぐ内部スイッチ207、プロセッサ204、メモリ205、及びアシストシステム206を含む。
ホストバス200は、ネットワークインタフェース103をストレージコントローラ101A、101Bやサーバシステム100、ドライブボックス102等と接続するバスである。ホストバス200は、広帯域で高速なインタコネクトであり、例えば搭載する機器のプロセッサ等とPCIeで接続する構成をとる。
ホストインタフェース201は、ホストバス200を介してネットワークインタフェース103とホストシステムを接続するためのインタフェースである。例えば、ホストバス200がPCIeの場合、例えばPCIeのPHYを含むことができる。ホストインタフェース201は、ネットワークインタフェース103内のメモリ205とホストシステムのメモリ間でデータをやり取りするためのDMA(Direct Memory Access)を搭載していてもよい。
なお、ホストシステムのメモリとデータをやり取りするDMAは、ネットワークコントローラ203、または、アシストシステム206に搭載してもよい。ホストインタフェース201は、内部スイッチ207を介して、ネットワークインタフェース103の各モジュールと接続する。
ネットワークパス202は、例えば、IPネットワークのパスで、WAN、LAN、または、SAN(Storage Area Network)のネットワーク形態をとる。ネットワークインタフェース103は、1つのネットワークパス202、または、冗長化することも考慮して2以上のネットワークパス202を介して通信を行う。ネットワークパス202は、ロスレス構成を取らない場合、パケットロスが発生する可能性のあるパスである。
ネットワークコントローラ203は、ネットワークパス202にネットワークインタフェース103を接続するためのインタフェースある。ネットワークコントローラ203は、例えば、PHY等の物理層の処理、並びに、データリンク層、インターネット層、及びトランスポート層のステートレスな処理を実行する。ネットワークコントローラ203は、例えばチェックサムやフレーム処理を行う。ネットワークコントローラ203は、送受信するパケットのバッファを含み、そのバッファと各メモリのDMA処理機能を持つ。
ネットワークコントローラ203は、例えば、イーサネット、IP、TCP、UDP等に対応する。更に、IPsec(Internet Security Protocol)やTLS(Transport Layer Security)、DIF(Data Integrity Field)等のオフロードエンジンを含んでもよい。また、光ケーブルやカッパーケーブル等との接続に対応した構成をとる。
プロセッサ204は、例えば、汎用プロセッサであり、ネットワークインタフェース103では、例えば、サーバシステム100等でも利用されるオペレーティングシステムを動作させる。プロセッサ204は、さらに、他のソフトウェアを実行して、ネットワークプロトコル処理やネットワークインタフェース103の管理等の処理を行う。プロセッサ204は、任意の構成を有することができ、例えば、1又は複数のCPU又はMPU(Micro Processing Unit)を含み、1又は複数のコアを含むことができる。
ネットワークプロトコル処理は、ネットワークコントローラ203とインタフェースを取り、例えば、ソケットプログラムや、iSCSIイニシエータまたはターゲット、NVMe-oFイニシエータまたはターゲット等のプログラムを実行する。ネットワークプロトコル処理は、更に、ホストインタフェース201とインタフェースを取り、ホストとのコマンドやデータのやり取りの制御を行う。加えて、プロセッサ204は、ネットワークインタフェース103内のアシストシステム206、内部スイッチ207等の制御も行う。本実施例のエラー訂正処理に関しても、当該プロセッサ204で処理を行う。
メモリ205は、例えば、SDRAM等の半導体メモリで構成され、SCMなどの不揮発メモリと組み合わせて構成してもよい。メモリ205は、プロセッサ204の主記憶として、実行プログラム(ネットワークプロトコル処理やエラー訂正処理等の命令コード)や、プロセッサが参照する管理テーブル等を格納する。また、メモリ205は、ネットワークと送受信するコマンドやデータのバッファとしても利用される。更に、ネットワークコントローラ203やホストインタフェース201とキューイングインタフェースをとり、キューのディスクリプタやインデックス等を格納してもよい。
アシストシステム206は、専用処理のハードウェアオフロードエンジンであり、プロセッサ204処理の一部をオフロードすることで、ネットワークインタフェース103の処理パフォーマンスを向上させる。例えば、IPsecやTLS、DIF、CRC、ハッシュ計算、パリティ計算、フィルタリング処理、圧縮、重複排除等の専用ハードウェアで構成する。アシストシステム206はプロセッサ204が管理して利用し、ホストシステムからも利用してもよい。
内部スイッチ207は、ネットワークインタフェース103内の各モジュールを相互に接続して、それぞれのモジュールが通信できるようにする。
なお、情報システム、ストレージシステムは、ここで示したもの以外も含んでよいものとし、例えば、監視や保守のためのモジュールやインタフェース、ネットワークインタフェース103上で動作するオペレーティングシステムやソフトウェアプログラムが格納される不揮発の記憶装置が追加されてもよい。
図3は実施例にかかるストレージインタフェースのプログラム構成を示す図である。ネットワークインタフェース103は、ネットワークプロトコル処理及びネットワーク通信の際に、経路途中で失ったパケットの再生を行うためのエラー訂正処理を実行する。ソフトウェアベースの変更可能な処理機能を実現するために、ネットワークインタフェース103は、汎用的なプロセッサ204とメモリ205を用いて、オペレーティングシステム300を動作させ、その上で各種処理のソフトウェアプログラムを動作させる。
ソフトウェアプログラム300~312は、メモリ205に展開され、プロセッサ204処理される。なお、DIF(Data Integrity Field)やCRC(Cyclic Redundancy Check)、暗号、圧縮、ハッシュ、パリティ処理などハードウェア化したほうが効率の良くなる処理部分は、アシストシステム206または、各種DMAハードウェアに実装し、ソフトウェアにより制御できる。
オペレーティングシステム300は、ネットワークインタフェースを動作させるための基盤となる基本ソフトウェアプログラムであり、ネットワークインタフェース全体を管理する。オペレーティングシステム300は、ネットワークインタフェースのプロセッサ上で動作する各ソフトウェアに共通する利用環境を提供する。オペレーティングシステム300は、組込み向けオペレーティングシステムでもよいし、サーバ上で動くような汎用オペレーティングシステム、例えばLinux(登録商標)等でもよい。
以下、他のプログラム301~312の説明を行う。初期化/保守/障害処理301は、ネットワークインタフェース103を構成するハードウェアの初期化及び、各種ソフトウェアの初期化処理を行う。また、ネットワークインタフェース103のソフトエアの更新や、ハードウェア故障の検出及びホストシステムへの通知等をサポートする。
制御コマンド処理302は、ホストシステムからネットワークインタフェース103を制御するためのコマンドを受信し、ネットワークインタフェース103を制御する。ネットワークプロトコルの処理要求をホストシステムから受け、ネットワークプロトコル処理306を起動し、ネットワークプロトコル処理306の処理結果をホストシステムへ応答する。また、ホストシステムで確保されたメモリとのデータ転送のために、DMA制御処理303を起動し、応答処理も行う。更に、初期設定や設定変更、ネットワークインタフェース103のソフトウェア交換や、障害時のホストシステムへの通知等を行う。
DMA制御処理303は、例えば、ホストシステム側で確保されたメモリと、ネットワークインタフェース103上のメモリ205と、の間のデータ転送を制御するため、DMAハードウェアとのインタフェース処理を行う。
アシストシステム処理304は、DIFやCRC、暗号、圧縮、ハッシュ、パリティ処理などハードウェア化したほうが効率が良くなる処理をアシストシステム206にて実現した際に、そのハードウェアを制御する。アシストシステム206は、キューイングインタフェース等を取る。アシストシステム処理304は、アシストシステム206を制御するキューディスクリプタの生成、発行、及び、アシストシステム206からの応答刈り取り、処理を実施する。
ネットワークコントローラドライバ305は、ネットワークコントローラ203を制御するためのドライバソフトウェエアである。ネットワークコントローラドライバ305は、パケット生成またはパケット受信時にオフロードするパケット処理のパラメータセットをネットワークコントローラ203へ渡す。さらに、ネットワークプロトコル処理306が生成したパケットをネットワークコントローラ203へ渡して送信させる。また、ネットワークコントローラ203から受信したパケットを、ネットワークプロトコル処理306へ渡す。
ネットワークプロトコル処理306は、ホストシステムの指示を受けて、制御コマンド処理302、アシストシステム処理304、DMA制御処理303、ネットワークコントローラドライバ305と連携して、パケットの生成及びその送信処理を行う。また、受信したパケットの解析処理を行い、ホストシステムへコマンドまたはデータを転送する。
例えば、ネットワークプロトコル処理306は、インターネットプロトコル層のIPヘッダ処理、トランスポート層のTCPヘッダ処理やUDPヘッダ処理、そして、iSCSI処理やNVMe-oF処理を行う。これにより、送受信データ及びコマンドをホストシステムと、または、ネットワークを介して対向システムと、やり取りできるようにする。また、ネットワークプロトコル処理306は、取得したパケットと未取得のパケットの情報を取得し、未取得のパケットに対して、エラー訂正処理307及び再送処理381と連携して、エラー訂正処理もしくは再送処理を実施する。
エラー訂正処理307は、ネットワークプロトコル処理306の処理結果を受けて、エラー訂正処理の制御を行う。エラー訂正処理307は、ネットワークパケットの送受信状態を見て、必要な際には、エラー訂正処理を行う。エラー訂正処理は、コマンドに対する処理、または、データに対する処理である。エラー訂正処理307では、エラー訂正グループを作成する。
エラー訂正グループは、冗長データを生成するときに使用するための複数のデータ(ユーザデータ)及び、生成した冗長データで構成される。ここで、コマンドと対応付けられているデータを、一般的なデータ又は冗長データと区別するため、ユーザデータと呼ぶことがある。エラー訂正グループは、当該グループに属した複数のデータを使って冗長データを生成する計算を行い、当該グループに属した複数のデータと冗長データを使って当該グループ内で計算を行い、失われたデータを再生したりするために使用する。
例えば、送信側では、当該グループに属した複数のデータ(ユーザデータ)は、ネットワークに送信するパケットに格納される。パケット送信毎にデータをバッファメモリに格納していき、冗長度に応じた数のデータ量がそろったら、それらデータを使って冗長データの生成を行い、その冗長データもネットワークに送信する。冗長データ及びそれを生成するために利用したデータには、同じエラー訂正グループの識別子を付与し、受信側で冗長データと同じエラー訂正グループの識別子の組み合わせで、エラー訂正をできるようにする。同一のエラー訂正グループの識別子を格納するパケットは、エラー訂正パケットグループを構成する。
そして、受信側ではエラー訂正グループの識別子に従って、受信データ(冗長データを含む)をバッファメモリ格納していき、もし、同じ識別子のエラー訂正グループ内で、一部データ(ユーザデータ)が不足し、冗長データを使った再生が必要となった場合は、そのバッファメモリに格納したデータ(冗長データを含む)を使って、データ再生成の計算を行い、失われたデータを再生する。
エラー訂正グループの範囲に対して、冗長データをどれぐらい設定するかは、エラー訂正レベルで決定する。エラー訂正グループには、エラー訂正レベルが割り当てられている。エラー訂正レベルは、データ量とそれに応じた冗長度を示す。例えば、8KBのデータ100個に対して冗長度2のエラー訂正レベルであれば、8KBのデータを100個送信して、受信側で98個と冗長データを受信すれば、データを2つ失っていても、受信側でデータを再生できる。
エラー訂正グループは、受信側でエラー訂正による再生も含めて、データ(ユーザデータ)をすべて受信できた時点で、そのデータに関するバッファメモリを開放する。例えば、受信側のバッファメモリは、データがそろって、他のエラー訂正処理でもそのデータを利用しなくなった場合に開放される。送信側のバッファメモリは、送信側が受信側からの応答により送信したデータが受信側に届いたことを判定し、他のエラー処理でもそのデータを利用しなくなった場合に開放する。なお、エラー訂正ができないときは、エラー訂正処理307は、再送処理を行うと決定する。
データ送信時エラー訂正処理308は、受信側がエラー訂正時に利用する制御情報を含むエラー訂正ヘッダ、及び、エラー訂正用の冗長データの適用範囲のグループを管理する。データ送信時エラー訂正処理308は、グループ内で、エラー訂正アルゴリズムより、エラー訂正処理を実施する。エラー訂正レベルより冗長度を決定して、その冗長度に対応した冗長データを生成して、ネットワークパケットとして送信する。これにより、送信データを含むネットワークパケットがネットワーク経路上で失われても、受信側でエラー訂正処理により再生できる。
データ受信時エラー訂正処理309は、受信データを含むネットワークパケットがネットワーク経路上で失われた際に、既に受信しているネットワークパケットのエラー訂正ヘッダ情報及び、冗長データを用いて、失ったネットワークパケットの再生を行う。再生のためのエラー訂正アルゴリズムやエラー訂正可能かを判別するためのエラー訂正レベルは、送信側と連携して、あらかじめ決定し、エラー訂正管理テーブルにて管理を行う。
エラー訂正可能であれば、既に受信しているネットワークパケット及び冗長データより、再生のための処理を行い、ネットワークパケットを再生する。なお、ネットワークパケットがネットワーク経路上で実際に失われていなく、到着が遅れている場合でも、エラー訂正条件がそろえば、エラー訂正を行い、あとから遅れてきたネットワークパケットは破棄してもよい。これにより、ネットワーク環境が良くない場合でも、効率的にデータ転送を行える。
複数のコネクションを張る際に、それらコネクションのパケット間でエラー訂正グループを設定してもよい。例えば、コマンド送信などで、イニシエータ側が発行したコマンドに対して、Ready TO Transfer(R2T)でターゲット側がイニシエータ側にデータ送信を要求してから、イニシエータがデータを送信するような場合がある。イニシエータからのコマンド損失に対応するために、1コネクション内のコマンドだけでエラー訂正を設定する場合、1コマンドに対して冗長コマンド1つになってしまう。同じ宛先の複数コネクションのコマンド間でエラー訂正グループを設定することで、複数コマンドに対して一つの冗長データを生成でき、効率的なエラー訂正の通信を実現できる。
コマンド送信時エラー訂正処理310は、受信側のエラー訂正時に利用する制御情報を含むエラー訂正ヘッダ、及び、エラー訂正用の冗長データの適用範囲のグループを管理する。コマンド送信時エラー訂正処理310は、グループ内で、エラー訂正アルゴリズムより、エラー訂正処理を実施する。エラー訂正レベルより冗長度を決定して、その冗長度に対応した冗長データを生成して、ネットワークパケットとして送信する。これにより、送信コマンドを含むネットワークパケットがネットワーク経路上で失われても、受信側でエラー訂正処理により再生できる。
コマンド送信では、エラー訂正のグループを同一コネクション内のデータで構成する以外に、エラー訂正のグループに異なるコネクションのデータを含めてもよい。例えば、ディザスタリカバリ構成を取っている、正サイトと副サイト間のネットワーク通信において、複数コネクションで定期的にコマンドを送信するケースがある。
これら複数コネクションの間でエラー訂正グループを作成し、そのエラー訂正グループにエラー訂正アルゴリズムを適用する。エラー訂正レベルに応じて冗長度を決定し、冗長パケットを生成して送信する。複数コネクションの情報を利用することで、コネクション内では少ないコマンド数でも、複数コネクション間のコマンドを一つのグループに含めることで、より適切なエラー訂正を可能とする。
コマンド受信時エラー訂正処理311は、受信コマンドを含むネットワークパケットがネットワーク経路上で失われた際に、既に受信しているネットワークパケットのエラー訂正ヘッダ情報及び冗長データを用いて、失ったネットワークパケットの再生を行う。再生のためのエラー訂正アルゴリズムやエラー訂正可能かを判別するためのエラー訂正レベルは、送信側と連携して、あらかじめ決定し、エラー訂正管理テーブルにて管理を行う。
エラー訂正可能であれば、コマンド受信時エラー訂正処理311は、既に受信しているネットワークパケット及び冗長データより、再生のための処理を行い、ネットワークパケットを再生する。なお、ネットワークパケットがネットワーク経路上で実際に失われていなく、到着が遅れている場合でも、エラー訂正条件がそろえば、エラー訂正を行い、あとから遅れてきたネットワークパケットを破棄してもよい。これにより、ネットワーク環境が良くない場合でも、効率的にデータ転送を行える。
コマンド受信では、では、エラー訂正のグループを同一コネクション内のデータで構成する以外に、エラー訂正のグループに異なるコネクションのデータを含めてもよい。例えば、ディザスタリカバリ構成を取っている、正サイトと副サイト間のネットワーク通信において、複数コネクションで定期的にコマンドを送信するケースがある。これら複数コネクションの間でエラー訂正グループを作成してもよい。複数コネクションの情報を利用することで、コネクション内では少ないコマンド数でも、複数コネクション間のコマンドを一つのグループに含めることで、より適切なエラー訂正を可能とする。
再送処理312は、受信側でエラー訂正処理が不可の場合、または、エラー訂正処理が適用されていないパケットが失われた場合に、送信側に、失われたパケットのみの再送を依頼する応答パケットを生成して、返送する。送信側は、受け取った応答パケットから、失われたパケットのみを再送する。このように、失われたパケット情報を返答することで、既に受信済みのデータの再送を行うことがなくなり、ネットワーク帯域を効率的に利用することが可能となる。
また、再送処理312では、受信側からの応答パケットが失われてしまい、送信側が受け取れない場合を想定し、送信側で再送タイマを設定し、一定時間応答がなかった場合に、再度、応答返答がないパケットを再送する。これにより、ネットワーク経路上でネットワークパケットが失われても、エラー訂正と失われた部分の再送により、再送の発生頻度を抑えて、効率的にネットワーク帯域を使いながら、ネットワークパケットを送受信することができる。
図4は、図3に示したストレージインタフェースのプログラムの関係の一例を示す図である。ネットワークインタフェース103では、オペレーティングシステム300が動作し、各ソフトウェアプログラムはそれをベースに動作する。また、初期化/保守/障害処理301により、ネットワークインタフェース103は、初期設定、ソフトウェア更新等の保守、及び障害処理等を実行する。障害処理は、例えば、障害検出、並びに統計情報及びエラー情報などのダンプトレース情報の収集等を含む。
ネットワークインタフェース103の制御コマンド処理302は、ホストインタフェース201を制御し、ホストシステムとネットワーク通信の送信コマンドまたは受信コマンド、例えば、iSCSIやNVMe-oFのコマンドをやりとりをする。コマンドは、キューインタフェースを用いて、ホストシステムとやり取りされる。
制御コマンド処理302は、ネットワークプロトコル処理306の結果より、ホストシステムが処理できるディスクリプタフォーマットを生成して、キューに格納する。また、ホストシステムが生成したディスクリプタをキューから取得し、ネットワークプロトコル処理306等、ネットワークインタフェース103内の各機能を設定、利用する。なお、キューのディスクリプタやデータ等は、DMA制御処理303によりDMAを用いてホストシステムとネットワークインタフェース103でやり取りする。
ネットワークコントローラドライバ305は、ネットワークコントローラ203を制御し、ネットワークコントローラ203のパケットバッファに対して送信パケットを格納し、パケットバッファから受信パケットを取得する。また、データリンク層、インターネットプロトコル層、トランスポート層のフレーム処理や、ステートレスな処理、例えば、チェックサム計算等をオフロードするための設定を行う。
ネットワークコントローラドライバ305の動作を受けて、ネットワークプロトコル処理306は、IP、TCP、UDP、iSCSI PDU処理、NVMe-oF PDU処理等のネットワークプロトコル処理を行う。なお、ARPやICMP等の処理や、IPもバージョン4やバージョン6の処理を行ってもよい。また、トランスポート層のプロトコルは、UDPやTCPに加えて、QUIC等のプロトコルでもよい。
ネットワークプロトコル処理306では、処理した結果を用いて、制御コマンド処理302と連携し、ホストシステムとネットワーク通信のためのやり取りを行う。この時、ネットワークプロトコル処理306のうち、専用ハードウェアで処理したほうが効率の良い、例えば、チェックサムやダイジェスト計算、暗号化処理や圧縮、重複排除処理、ハッシュ、パリティ処理は、アシストシステム処理304を介してアシストシステム206にハードウェアオフロードして実施しても良い。
一方で、ネットワーク送信の際には、ネットワークプロトコル処理306とエラー訂正処理307が連携し、必要に応じて、送信パケットにエラー訂正処理を適用する。エラー訂正処理307では、送信する対象が、コマンドかデータかを判定する。データの場合は、データ送信/受信エラー訂正処理400が、送信するデータパケット間でエラー訂正処理を行い、エラー訂正ヘッダを付与する。ネットワークプロトコル処理306は、ネットワークプロトコル処理を実施して、パケットを送信する。
コマンドの場合は、コマンド送信/受信エラー訂正処理401が、送信するコマンドパケット間及び宛先が同じ複数コネクション間で、エラー訂正処理を行い、エラー訂正ヘッダを付与する。ネットワークプロトコル処理306は、ネットワークプロトコル処理を実施して、パケットを送信する。なお、複数コネクション間でのエラー訂正処理は、データの場合も実施してもよく、コマンド送信も同一コネクションで実施してもよい。データとコマンドが混在する時は、データとコマンドを合わせてエラー訂正グループとして、エラー訂正処理を適用してもよい。
エラー訂正処理307では、受信したパケットが、コマンドかデータかを判定する。データの場合は、データ送信/受信エラー訂正処理400が、受信したデータパケット間で、エラー訂正処理を行う。コマンドの場合は、コマンド送信/受信エラー訂正処理401が、受信したコマンドパケット間および、複数コネクション間でエラー訂正処理を行う。なお、複数コネクション間でのエラー訂正処理は、データの場合も実施してもよく、同一コネクションのコマンドでエラー訂正処理を実施してもよく、データとコマンドが混在する時は、データとコマンドを合わせてエラー訂正グループとして、エラー訂正処理を適用してもよい。
もし、エラー訂正処理307の判定結果が、エラー訂正ができないことを示す場合は、再送処理381が実行される。受信側の再送処理381では、受信できなかったパケットのみを再送するように送信側へ応答を返す。一方で、送信側は一定時間応答がない場合、パケットの再送を行う。
図5は、実施例にかかるリモートコピーシステムについての説明図である。ネットワーク通信におけるエラー訂正処理を、ストレージシステムのディザスタリカバリのリモートコピー等に利用する場合について説明する。ディザスタリカバリ可能な構成は、正サイト500と副サイト501で構成する。正サイト500のプライマリボリューム502に対するデータライト504を、ペアを組んだ副サイト501のセカンダリボリューム503に反映する。正サイト500のプライマリボリューム502が機器故障などの障害や、災害などによる正サイト500自体の停止時にも、副サイト501のセカンダリボリューム503に切り替えることで、データを利用することができ、業務継続が可能となる。
プライマリボリューム502へのデータライト504に対して、リモートコピーのシステムでは、コピー505を生成し、そのコピー505を副サイト501へデータ転送する。リモートコピー方法は、スナップショットベースのリモートコピーでもよいし、ジャーナルベースのリモートコピーでもよい。
スナップショットベースのリモートコピーは、はじめにプライマリボリューム502全体を副サイト501へ転送してコピー505を形成し、セカンダリボリューム503を構成する。その後、プライマリボリューム502への新規データライト504による変化分のみをコピー505に蓄えて、差分転送する。ジャーナルベースのリモートコピーは、データライト504をそのままジャーナル情報としてコピーして、それをデータ転送する。
なお、リモートコピーは、正サイト500側契機で副サイト501へデータ転送しなくてもよい。副サイト501側で定期的に正サイト500側のデータを取得してもよい。正サイト500及び副サイト501は、アクティブ-アクティブ構成又はアクティブ-スタンバイ構成を有することができる。
上記ディザスタリカバリ構成でのリモートコピーにおいて、正サイト500と副サイト501は外部ネットワーク107で接続される。外部ネットワーク107は、例えば、正サイト500と副サイト501の距離が大きく離れているときは、WANを利用する構成が考えられる。
WANを使った場合は、他の通信も並行して実施されているため、パケットロストする可能性が高くなる。この時、正サイト500と副サイト501の距離が離れていれば離れているほど、送受信ネットワークパケットをロストした際の再転送には、再送要求の往復時間がかかり性能影響が大きくなる。また、パケットロストが発生しているネットワークに対して、再送タイマですべてのパケットを再送すると、帯域を圧迫してしまい、性能に影響がある。
このような環境において、実施例のエラー訂正処理を適用すると、再送のラウンドトリップタイムを削減することができるため、高効率にネットワークを利用することができる。
エラー訂正処理の一例を示す。上術した副サイト501側で定期的に正サイト500側のデータを取得する方法では、定期的に副サイト501から正サイト500のジャーナルデータをリードする。このデータリードは、複数コネクションを張って実施することで広帯域化し、データ転送性能及び可用性を高めている。エラー訂正処理では、これら複数コネクションのコマンド及びデータをそれぞれ、複数コネクション間で、エラー訂正グループにし、エラー訂正処理を実行する。これにより、例えば単発のコマンドに対してもエラー訂正を効果的に適用することができる。
図6A及び6Bは実施例にかかるエラー訂正対象パケットの一例を示す説明図(ネットワークヘッダを含まない形式)である。図6A及び6Bのどちらも、例えば、iSCSIまたはNVMe-oFのPDUに対して、エラー訂正対象602を指定している例を示している。図6Aにおいて、エラー訂正対象602が単体のヘッダ600とデータ601の組みであり、図6Bにおいて、エラー訂正対象602が複数のヘッダ600とデータ601の組である。
ヘッダ600は、例えば、iSCSIまたはNVMe-oFにおける、PDUヘッダであり、データ601は、ペイロードに該当する。ネットワーク通信では、ネットワーク経路のMaximum Transmission Unit(MTU)サイズに合わせて、PDUの分割が必要であれば分割して送信する。
図6Aの例では、分割したPDUに対して、エラー訂正対象602を示すエラー訂正グループを設定し、エラー訂正レベルより冗長度を決めて、エラー訂正ヘッダ603を付与する。エラー訂正用データ604は、その冗長度に合わせて生成して、エラー訂正ヘッダ603付与する。エラー訂正ヘッダ603については後述する。以上によって作成した部分をネットワークペイロード606として、ネットワークヘッダ605を付与して送信する。
図6Bの例では、複数のPDU、つまり、ヘッダ600とデータ601の複数の組みに対して、エラー訂正対象602を示すエラー訂正グループを設定し、エラー訂正レベルより冗長度を決めて、エラー訂正ヘッダ603を付与する。エラー訂正用データ604は、その冗長度に合わせて生成し、エラー訂正ヘッダ603付与する。エラー訂正ヘッダ603については後述する。以上によって作成した部分をネットワークペイロード606として、ネットワークヘッダ605を付与して送信する。
上記のようにヘッダ600とデータ601の組みをエラー訂正対象602とすることで、ネットワークヘッダ605を追加することなく、エラー訂正処理を適用できる。これにより、送受信時のネットワークヘッダの処理負荷を低減できる。
なお、ネットワークヘッダ605は、例えば、データリンク層はイーサネット(登録商標)、インターネットプロトコル層はIPv4、トランスポート層はTCPまたはUDPとする。なお、TCPを用いる場合は、再送判定や応答処理に対して、エラー訂正処理に応じた対応を行ってもよい。
図7A及び7Bは実施例にかかるエラー訂正対象パケットの一例を示す説明図(ネットワークヘッダを含む形式)である。図7A及び7Bは、ネットワークヘッダ605を付与したパケットを、エラー訂正対象602に指定している例を示している。図7Aにおいて、エラー訂正対象602は単体のヘッダ600、データ601及びネットワークヘッダ605の組みである。図7Bにおいて、エラー訂正対象602は、複数のヘッダ600、データ601及びネットワークヘッダ605の組である。
ヘッダ600は、例えば、iSCSIまたはNVMe-oF等における、PDUヘッダであり、データ601は、ペイロードに該当する。ネットワーク通信では、ネットワーク経路のMaximum Transmission Unit(MTU)サイズに合わせて、分割が必要であれば、分割して送信する。本例では、このヘッダ600とデータ601の組みに対して、ネットワークヘッダ605を付与し他ものに対して、エラー訂正対象602を設定する。
図7Aの例では、単体のヘッダ600とデータ601の組みを分割し、分割した部分それぞれにネットワークヘッダ605を適用する。これらに対して、エラー訂正対象602を示すエラー訂正グループを設定し、エラー訂正レベルより冗長度を決めて、エラー訂正ヘッダ603を付与する。エラー訂正用データ604は、その冗長度に合わせて、生成して、エラー訂正ヘッダ603を付与する。エラー訂正ヘッダ603については後述する。以上によって作成した部分をネットワークペイロード606として、ネットワークヘッダ605を付与して送信する。
図7Bの例では、複数のヘッダ600とデータ601の組みそれぞれに対してネットワークヘッダ605を適用する。これらに対し、エラー訂正対象602を示すエラー訂正グループを設定し、エラー訂正レベルより冗長度を決めて、エラー訂正ヘッダ603を付与する。エラー訂正用データ604は、その冗長度に合わせて、生成して、エラー訂正ヘッダ603を付与する。エラー訂正ヘッダ603については後述する。以上によって作成した部分をネットワークペイロード606として、ネットワークヘッダ605を付与して送信する。
上記のようにネットワークヘッダ605を適用したものに対して、エラー訂正対象602とし、その外にネットワークヘッダ605を再度付与することで、既存のネットワーク処理への影響を小さくしつつ、エラー訂正処理を適用できる。なお、ネットワークヘッダ605は、例えば、データリンク層はイーサネット(登録商標)、インターネットプロトコル層はIPv4、トランスポート層はTCPまたはUDPとする。
ネットワークインタフェース103は、エラー訂正対象のパケット構成を指定する、ユーザ設定可能な管理上を保持し、その管理情報に従って、エラー訂正対象のパケット構成を決定してよい。具体的には、管理情報は、ネットワークヘッダを含まないパケット構成又はネットワークヘッダを含むパケット構成を、エラー訂正対象として指定できる。
図8は実施例にかかるエラー訂正ヘッダの一例を示す説明図である。エラー訂正処理可能なネットワークパケットは、ネットワークヘッダ605とエラー訂正ヘッダ603とエラー訂正ペイロード800から構成される。
エラー訂正ヘッダ603は、例えば、コントロール情報801とエラー訂正コントロール情報802を含む。コントロール情報801は、バージョン情報、オペコード、ヘッダ長、ペイロード長、ネクストヘッダ情報等を含む。バージョン情報は、エラー訂正ヘッダ603がサポートするエラー訂正処理の対応バージョンを示す。オペコードは、エラー訂正ヘッダ603が冗長データに関するものか、エラー訂正管理テーブルの更新に関するものか、の種別を示す。ヘッダ長は、エラー訂正ヘッダ603の長さを示す。ペイロード長は、エラー訂正ペイロード800の長さを示す。ネクストヘッダ情報は、次にどのようなプロトコル種別のヘッダが来るかを示す。
エラー訂正コントロール情報802は、例えば、エラー訂正処理を適用可能な冗長データを含むデータ範囲を示すグループ番号、グループ内でのシーケンス番号、エラー訂正処理のアルゴリズム種別、エラー訂正処理の冗長度を示すエラー訂正処理レベルを示す。なお、エラー訂正処理のアルゴリズム種別やエラー訂正処理の冗長度は、エラー訂正管理テーブルを更新する際にやり取りするネットワークパケットのみでサポートし、コマンドやデータの送受信のパケットに含めなくてもよい。
図9は実施例にかかるエラー訂正管理テーブルに登録されている情報の一例の説明図である。エラー訂正管理情報900は、エラー訂正処理に関する情報を管理するテーブルである。ネットワークインタフェース103上のメモリ205で管理し、プロセッサ204で処理する。エラー訂正管理情報900は、複数のテーブル901、940及び909を含む。
エラー訂正通信先管理テーブル901は、エラー訂正処理を適用するか否かを設定するテーブルである。エラー訂正処理307は、当該テーブル901の設定をベースにしてエラー訂正処理を行う。エラー訂正通信先管理テーブル901は、ホストシステムから設定する。オペレータは、管理画面やコマンドライン設定などから行ってもよい。
エラー訂正通信先管理テーブル901は、例えば、エラー訂正通信適用先情報902と初期パラメータ903を含む。エラー訂正通信適用先情報902は、例えば、エラー訂正通信を行う接続先の識別子を登録する。識別子は、例えば、IQN(iSCSI Qualified Name)やNQN(NVMe Qualified Name)でもよいし、IPアドレスとポート番号の組み合わせでもよい。
初期パラメータ903は、接続先とのエラー訂正処理に対して、どのようなエラー訂正アルゴリズムを利用するか、どれぐらいの頻度で冗長データを転送するかのエラー訂正レベル等の初期値を設定する。また、初期パラメータ903には、エラー訂正不可だった場合の動作を設定してもよい。例えば、エラー訂正不可だった場合、受信側から失った部分だけの再送を行う、失った部分から後の部分すべての再送を行う、または、再送要求の応答は行わずに送信側でタイマを設定して再送を行うか、を設定する。
また、初期パラメータ903には、再送タイマ値、リトライ回数等の初期値を設定してもよい。更に、本テーブルの初期パラメータ903は、エラー訂正通信を行った後に通信状況に応じて変更されたエラー訂正アルゴリズムやエラー訂正レベル等の情報を実測値として格納してもよい。次回の接続時に、初期設定を使うか、実測値を使用するかの選択を指定するフィールドを持ってもよい。初期パラメータ903は、エラー訂正対象のパケットの構成を指定してもよい。図6A及び6Bを参照して説明したようにネットワークヘッダを含まないパケット構成又は図7A及び7Bを参照して説明したようにネットワークヘッダを含むパケット構成がエラー訂正対象として指定されてよい。
エラー訂正管理テーブル(送信管理)904は、送信側のエラー訂正処理に関する情報を設定、管理するテーブルである。データ送信時エラー訂正処理308は、当該テーブルの設定をベースにエラー訂正の送信処理を行う。本テーブル904は、エラー訂正通信先管理テーブル901を用いてネゴシエーションが実施される際に、生成される。テーブル情報は、コネクション終了と共に、テーブル内容をエラー訂正通信先管理テーブル901に反映して、削除されてもよいし、コネクション終了と共に、キャッシュとして保持し、キャッシュ量が許すまで保持し続けてもよい。
エラー訂正管理テーブル(送信管理)904は、例えば、宛先905、エラー訂正レベル906、エラー訂正方式907、制御情報908を含む。宛先905は、例えば、受信側のIPアドレス、ポート番号、IQNまたはNQNを示す。エラー訂正レベル906は、エラー訂正処理において、どれぐらいの冗長データを利用するかを判定するために利用する。例えば、レベル1は100パケットにつき、1パケット分、レベル2は100パケットにつき10パケット分等の定義を設定する。
エラー訂正方式907は、エラー訂正処理のアルゴリズムを指定する。制御情報908は、例えば、送信側からパケットを再送する際のタイマの情報や、他コネクションと合わせてエラー訂正処理を行うか否か等のエラー訂正対象602の指定、を含む。
エラー訂正管理テーブル(受信管理)909は、受信側のエラー訂正処理に関する情報を設定、管理するテーブルである。データ受信時エラー訂正処理309は、当該テーブルの設定をベースにエラー訂正の受信処理を行う。本テーブル909は、エラー訂正通信先管理テーブル901を用いて、ネゴシエーションが実施される際に、生成される。テーブル情報は、コネクション終了と共に、テーブル内容をエラー訂正通信先管理テーブル901に反映して、削除されてもよいし、コネクション終了と共にキャッシュとして保持し、キャッシュ量が許すまで、保持し続けてもよい。
エラー訂正管理テーブル(受信管理)909は、例えば、送信元910、パケットロス率911、ロス傾向(ランダム)912、ロス傾向(バースト)913、エラー訂正レベル906、エラー訂正方式907、制御情報908を含む。送信元910は、例えば、送信側のIPアドレス、ポート番号、IQNまたはNQNを示す。
パケットロス率911の計算方法は設計に依存する。例えば、エラー訂正処理を実施する条件がそろったときに、そのエラー訂正グループにおいて、どのぐらいパケットロスしているかから算出する。再送要求されたパケットは、ロストしたパケットに含まれる。パケットロス率911には、例えば、過去のエラー訂正グループにおけるパケットロス率の平均値が格納されてもよい。
もしくは、パケットの送受信量に対して、どれぐらいパケットがロストしているかから算出してもよい。パケットロス率911は、パケットロス率911は、長期間の継続的なロス率と、より短い期間であって直近のロス率、例えば、所定コネクション数又は所定エラー訂正グループ数の通信におけるロス率と、を示してもよい。
パケットロス率911に対して、パケットロスがどのような傾向で発生しているかをロス傾向(ランダム)912とロス傾向(バースト)913に格納する。例えば、1パケットのみが失われた場合は、ロス傾向(ランダム)912の数値を増やし、連続してパットが失われた場合は、ロス傾向(バースト)913の数値を増やす。
エラー訂正レベル906は、あらかじめエラー訂正通信先管理テーブル901に設定された値を用いつつ、例えばパケットロス率911を踏まえて変更して利用する。どのようなタイミングで変更するかは、制御情報908等で指定する。エラー訂正方式907は、あらかじめエラー訂正通信先管理テーブル901に設定された値を用いつつ、例えばロス傾向(ランダム)912とロス傾向(バースト)913の傾向を踏まえて、頻度が多い方に最適なアルゴリズムを選択して調整する。制御情報908は、例えば、応答を返答する際のタイマの情報や、他コネクションと合わせてエラー訂正処理を行うか等のエラー訂正対象602の指定を含む。
エラー訂正管理テーブル(受信管理)909は、さらに、送信元からのパケットの再送回数を格納してもよい。パケット再送回数は、例えば、現在のエラー訂正レベルにおける再送回数を示してよい。後述するように、エラー訂正レベルは通信状況に応じて更新され得る。
図10は実施例にかかるエラー訂正通信登録を説明するためのフローチャートを示す。ネットワークインタフェース103がエラー訂正処理を実施できるようにするために、初期化/保守/障害処理301は、エラー訂正通信先管理テーブル901の登録表示を行う(ステップS1000)。表示は管理装置のGUIの管理画面でもよいし、ホストシステム等から、CUIで表示してもよい。
初期化/保守/障害処理301は、オペレータの指示に従って、エラー訂正通信を登録するかを判定する。登録しない場合は終了する(ステップS1001:FALSE)。一方で、登録する場合(ステップS1001:TRUE)、初期化/保守/障害処理301は、オペレータの指示に従って、エラー訂正通信先管理テーブル901を操作する(ステップS1002)。
エラー訂正通信先管理テーブル901の操作として、エラー訂正通信適用先の識別情報の登録を行い(ステップS1003)、エラー訂正の初期方式を選択し(ステップS1004)、エラー訂正の初期レベルの選択を行う(ステップS1005)。そして、初期パラメータ903を設定する(ステップS1006)。なお、設定する値は、前述の項目とする。最後に、登録完了となる(ステップS1007)。本フローにより、前述のエラー訂正通信先管理テーブル901の登録作業を実施し、エラー訂正処理を実施できる状態を構成する。
図11は実施例にかかるデータ送信時のエラー訂正処理動作を説明するためのフローチャートである。ネットワークインタフェース103は、ストレージコントローラ101から送信要求を取得する(ステップS1100)。送信要求は、サーバシステム100からのリード要求に対する送信起動、ストレージコントローラ101からのドライブボックス102への送信起動、または、ストレージコントローラ101から外部ネットワーク107を介した別サイトのストレージコントローラ101へのリモートコピーの送信起動でもよい。
次に、制御コマンド処理302は、送信要求が、コネクション処理かを判定する(ステップS1101)。コネクション処理の場合(ステップS1101:TRUE)、エラー訂正処理307は、コネクション処理(ステップS1112)を実行する。コネクション処理(ステップS1112)に関しては後述する。
コネクション処理でない場合(ステップS1101:FALSE)、制御コマンド処理302は、エラー訂正管理テーブル(送信管理)904に宛先が登録済みかを判定する(ステップS1102)。登録済みの場合(ステップS1102:TRUE)、ネットワークインタフェース103は、エラー訂正処理可能なネットワークパケットの送信処理を行う。登録済みでない場合(ステップS1102:FALSE)、ネットワークプロトコル処理306は、エラー訂正なしで(ステップS1110)、ネットワークパケットの送信処理を行う(ステップS1113)。
登録済みの場合(ステップS1102:TRUE)、エラー訂正処理307は、エラー訂正処理の範囲を管理するエラー訂正グループがすでに登録されているかを判定する(ステップS1103)。エラー訂正グループが登録されていない場合(ステップS1103:FALSE)、エラー訂正処理307は、新規にエラー訂正グループを作成する(ステップS1109)。このとき、エラー訂正グループでは、冗長データを計算するために、エラー訂正グループに関係する送信パケットを管理するバッファメモリもしくはエラー訂正グループに関係する送信パケットの格納先アドレス情報を管理する。
エラー訂正グループがすでに登録されている場合(ステップS1103:TRUE)、エラー訂正処理307は、既存グループを利用すると決定する。データ送信時エラー訂正処理308又はコマンド送信時エラー訂正処理310は、送信パケットにエラー訂正ヘッダを付与する(ステップS1104)。ネットワークプロトコル処理306は、ネットワークパケット生成送信処理を行う(ステップS1105)。ネットワークパケット生成送信処理については後述する。
データ送信時エラー訂正処理308又はコマンド送信時エラー訂正処理310は、エラー訂正管理テーブル(送信管理)904の制御情報更新を行う(ステップS1106)。データ送信時エラー訂正処理308又はコマンド送信時エラー訂正処理310は、エラー訂正レベルを確認し(ステップS1107)、冗長パケット不要かを判定する(ステップS1108)。
冗長パケット不要の場合(ステップS1108:TRUE)、ネットワークパケット送信を完了する。一方で、冗長パケットが必要な場合(ステップS1108:FALSE)、データ送信時エラー訂正処理308又はコマンド送信時エラー訂正処理310は、エラー訂正グループより、冗長データを生成する(ステップS1111)。ネットワークプロトコル処理306は、ネットワークパケット生成送信処理を行い(ステップS1105)、ネットワークパケット送信を完了する。本フローにより、エラー訂正処理可能なネットワークパケットを送信される。
図12は実施例にかかるコネクション処理コマンド送信時のエラー訂正処理動作を説明するためのフローチャートを示す図である。コネクション処理では、エラー訂正処理307は、コネクション確立処理かを判定する(ステップS1200)。コネクション確立処理の場合(ステップS1200:TRUE)、エラー訂正処理307は、エラー訂正通信先管理テーブル901に登録があるかを判定する(ステップS1201)。
登録がある場合(ステップS1201:TRUE)、エラー訂正処理307は、エラー訂正管理テーブル(送信管理)904に登録する(ステップS1202)。エラー訂正管理テーブル(送信管理)904がキャッシュとして存在する場合、新規に作成するか、キャッシュを利用するか決定する。登録がない場合(ステップS1201:FALSE)、ネットワークインタフェース103は、図11の結合子2からの処理を行う。
また、エラー訂正処理307は、コマンド間エラー訂正条件を満たしているかを判定する(ステップS1203)。満たしている場合(ステップS1203:TRUE)、ネットワークインタフェース103は、図11の結合子1からの処理を行う。満たしていない場合(ステップS1203:FALSE)、ネットワークインタフェース103は、図11の結合子2からの処理を行う。
一方、コネクション確立処理でない場合(ステップS1200:FALSE)、エラー訂正処理307は、エラー訂正管理テーブル(送信管理)904に登録があるかを判定する(ステップS1204)。登録がない場合(ステップS1204:FALSE)、図11の結合子1からの処理を行う。登録がある場合は(ステップS1204:true)、コマンド間エラー訂正条件を満たしているかを判断する(ステップS1203)。満たしている場合は(ステップS1203:TRUE)、ネットワークインタフェース103は、図11の結合子1からの処理を行う。満たしていない場合(ステップS1203:FALSE)、ネットワークインタフェース103は、図11の結合子2からの処理を行う。
本フローにより、コネクション確立とエラー訂正処理の関連性をつけ、各種エラー訂正管理テーブルの生成を行うか否かを判定する。
図13は実施例にかかるエラー訂正通信における再送または完了処理を説明するためのフローチャートを示す。応答受信では、送信側のエラー訂正処理307は、受信側からネットワークパケットの送信に対する応答を受信し、その応答に再送要求がないか判定する(ステップS1300)。再送要求がない場合(ステップS1300:TRUE)、エラー訂正処理307は、エラー訂正通信対象かを判定する(ステップS1301)。エラー訂正通信でない場合(ステップS1301:FALSE)、ネットワークインタフェース103は、応答に対する処理を実施して、ネットワークパケット送信に利用した開放すべき各種リソースを開放して完了する。
エラー訂正通信の場合(ステップS1301:TRUE)、更に、エラー訂正グループを開放可能か判定する(ステップS1302)。まだ、エラー訂正処理のための冗長データ計算などで応答受信した範囲の情報を利用する場合は、開放できないと決定する(ステップS1302:FALSE)。ネットワークインタフェース103は、応答に対する処理を実施して、完了する。
エラー訂正グループ範囲のパケットを受信側がすべて受信して、コネクションをクローズするなど、冗長データ計算のためなどにエラー訂正グループが不要となり、開放可能でる(ステップS1302:TRUE)。エラー訂正処理307は、エラー訂正グループを開放する(ステップS1303)。ネットワークインタフェース103は、応答に対する処理を実施して、完了する。また、応答を受けたネットワークパケット送信に利用したデータが、冗長データの生成等に不要であれば、エラー訂正処理307は、当該ネットワークパケット送信に利用した開放すべき各種リソースを開放する。
一方で、再送要求がある場合は(ステップS1300:FALSE)、再送処理312は、パケットの再送処理を行って(ステップS1304)、応答に対する処理を完了する。再送処理312は、応答の中で指定されたネットワークパケットを再送する。その指定は、例えば、単体のネットワークパケットでもよく、複数ネットワークパケットになる範囲で指定されてもよい。
パケット再送では、送信するパケットに対して、図11に示した、データ送信を再度実施する。なお、再送であることを加味して、必要でなければその中のいくつかの処理を行わなくてもよく、例えば、ネットワークパケット生成送信処理(ステップS1105)等でバッファしているネットワークパケットを、再度送信してもよい。また、再送用に別の冗長レベル等を管理して、冗長パケットの送信を行ってもよい。
応答受信にエラー訂正処理に関する情報の更新要求が含まれていた場合は、エラー訂正処理307、データ送信時エラー訂正処理308又はコマンド送信時エラー訂正処理310は、エラー訂正通信先管理テーブル901やエラー訂正管理テーブル(送信管理)904を、その更新要求内容に従って更新する。
本フローにより、応答要求に対して、エラー訂正通信の場合の処理を実施し、エラー訂正通信において、エラー訂正が不可だった場合にも再送処理にて、データを再送信することで、受信側にネットワークパケットを転送することができる。
図14は実施例にかかるエラー訂正通信における、再送側での再送タイマ割り込みに起因する再送または完了処理を説明するためのフローチャートを示す。ネットワークプロトコル処理306は、ネットワークインタフェース103上のタイマ割り込みに対して、再送が必要な時間が経過しているかを判定する(ステップS1400)。再送が必要な時間を経過していなければ、ネットワークプロトコル処理306は、処理を完了する(ステップS1400:FALSE)。この時、必要であれば、再送タイマを再設定してもよい(ステップS1401)。
再送が必要な時間が経過していた場合(ステップS1400:TRUE)、ネットワークプロトコル処理306は、その再送対象がエラー訂正通信かを判定する(ステップS1402)。エラー訂正通信でなければ(ステップS1402:FALSE)、ネットワークインタフェース103は、図11の結合子2からの処理を行って、必要であれば、再送タイマを再設定して(ステップS1401)、処理を完了する。
一方で、エラー訂正通信の場合は(ステップS1402:TRUE)、ネットワークインタフェース103は、図11の結合子1からの処理を行って、必要であれば、再送タイマを再設定して(ステップS1401)、処理を完了する。なお、再送は、ネットワークパケットを再送してもよいし、エラー訂正通信の設定によっては、冗長データを再送してもよい。また、再送時の冗長度はエラー訂正通信の設定と状況に応じて、変更しても良い。更に、再送タイマ更新は通信状況や再送回数等に応じて変更してもよく、同一パケットの再送回数を管理して、その回数に従ってそのパケットの再送を打ち切ってもよい。
本フローにより、受信側からの応答が失われてしまったなど、受信側からの応答がなくとも、ネットワークパケットを再送することで、受信側にネットワークパケットを転送することができる。また、エラー訂正の冗長パケットのみを送ることは、ネットワーク帯域の効率的な利用を可能とする。
図15A及び15Bは実施例にかかるエラー訂正方式及びエラー訂正レベルに応じて転送順番を変更する動作を説明するためのフローチャートを示す。図15Aを参照して、ネットワークパケット生成送信処理(ステップS1105)では、ネットワークプロトコル処理306は、ネットワークパケット生成を行う(ステップS1500)。
ネットワークプロトコル処理306は、エラー訂正通信先管理テーブル901を参照し、宛先のエラー訂正方式、エラー訂正レベル及びロス傾向を確認し、送信順番変更対象であるか判定する(ステップS1501)。エラー発生がバースト的で、同一エラー訂正のグループのパケットが連続しない送信にした方が、エラー訂正方式が効果的と判定した場合に、送信順番変更対象であると判定する。
例えば、バーストのロス傾向のカウント数がランダムのロス傾向のカウント数より大きい場合に、エラー発生がバースト的と判定される。エラー訂正方式に対して閾値が設定され、エラー訂正レベルの冗長度が閾値より低い場合、送信順番変更対象と判定してもよい。
送信順番変更対象でない場合(ステップS1501:FALSE)、ネットワークプロトコル処理306は、ネットワークパケット送信を行う(ステップS1505)。送信順番変更対象の場合(ステップS1501:TRUE)、ネットワークプロトコル処理306は、順序入れ替えバッファに対する格納位置情報を取得し(ステップS1502)、順序入れ替えバッファに格納する(ステップS1503)。そして、送信タイマを設定する(ステップS1504)。
順序入れ替えは、同一グループ及び同一コネクションのネットワークパケットの送出をなるべく異なるグループ及び別コネクションと混ぜることで、バーストエラー発生時もランダムエラーになる確立が上がるように制御する。
図15Bを参照して、設定した送信タイマの起動処理では、タイマ時間が来た際に、送信処理が再度起動される。ネットワークプロトコル処理306は、順序入替えバッファ情報を取得し(ステップS1506)、未送信パケットがあるかを判断し(ステップS1507)、未送信パケットがない場合(ステップS1507:FALSE)、処理を終了する。未送信パケットがある場合(ステップS1507:TRUE)、ネットワークプロトコル処理306は、送信パケットを選択し(ステップS1508)、ネットワークパケットを送信する(ステップS1509)。そして、再度、送信タイマを設定して(ステップS1510)、処理を完了する。
本フローにより、エラー訂正方式及びエラー訂正レベルに応じて、転送順番を変更することで、例えば、バーストエラーが発生して、エラー訂正ができない場合に、バーストエラーをランダムエラー化して、エラー訂正できるようにする。
図16は実施例にかかるデータ受信時のエラー訂正処理動作を説明するためのフローチャートを示す。ネットワークインタフェース103は、ネットワークパケットを受信する(ステップS1600)。制御コマンド処理302は、そのネットワークパケットがコネクション処理かを判定する(ステップS1601)。
コネクション処理の場合(ステップS1601:TRUE)、エラー訂正処理307は、コネクション処理を行う(ステップS1621)。コネクション処理でない場合(ステップS1601:FALSE)、制御コマンド処理302は、宛先ポート番号がエラー訂正通信かを判定する(ステップS1602)。エラー訂正通信でない場合(ステップS1602:FALSE)、ネットワークインタフェース103は、エラー訂正なしで受信パケットを処理する(ステップS1615)。
エラー訂正通信の場合(ステップS1602:TRUE)、エラー訂正処理307は、エラー訂正管理テーブル(受信管理)909に、送信元が登録済みかを判定する(ステップS1603)。登録がない場合は(ステップS1603:FALSE)、ネットワークインタフェース103は、エラー訂正なしで受信パケットを処理する(ステップS1615)。
登録がある場合は(ステップS1603:TRUE)、エラー訂正処理307は、受信したネットワークパケットがエラー訂正管理情報更新のパケットかを判定する(ステップS1604)。エラー訂正管理情報の更新の場合(ステップS1604:TRUE)、エラー訂正処理307は、ネットワークパケットを処理して、エラー訂正管理情報900を更新する(ステップS1616)。
エラー訂正管理情報の更新でない場合(ステップS1604:FALSE)、エラー訂正処理307は、タイムアウト済みネットワークパケットかを判定する(ステップS1605)。タイムアウト済みネットワークパケットの場合(ステップS1605:TRUE)、エラー訂正処理307は、ネットワークパケットロスト判定されているパケットが遅れて届いたと判定し、不図示の管理情報内のパケットロス判定の情報を訂正更新し(ステップS1617)、ネットワークパケット受信処理を完了する。
タイムアウト済みネットワークパケットでない場合(ステップS1605:FALSE)、エラー訂正処理307は、不図示の管理情報を参照して、エラー訂正処理済みのパケットかを判定する(ステップS1606)。エラー訂正処理済みネットワークパケットの場合(ステップS1606:TRUE)、エラー訂正処理307は、ネットワークパケットロスト判定されているパケットが遅れて届いたと判定する。エラー訂正処理307は、不図示の管理情報内のパケットロス判定の情報を訂正更新し(ステップS1617)、ネットワークパケット受信処理を完了する。エラー訂正処理済みパケットには、冗長パケットを使用したエラー訂正処理によって復活済みパケットを含む。
エラー訂正処理済みネットワークパケットでない場合(ステップS1606:FALSE)、エラー訂正処理307は、エラー訂正ヘッダ603が示すエラー訂正グループ内のパケット正常受信として、そのエラー訂正グループのパケット受信数を更新する(ステップS1607)。
そして、エラー訂正処理307は、エラー訂正ヘッダに示されるエラー訂正処理の範囲を管理するエラー訂正グループが、不図示の管理情報にすでに登録されているかを判定する(ステップS1608)。登録されていない場合(ステップS1608:FALSE)、エラー訂正処理307は、新規にエラー訂正ヘッダが示すエラー訂正グループを登録する(ステップS1619)。
登録されている場合(ステップS1608:TRUE)、エラー訂正処理307は、既存グループを利用し、受信パケットを該当バッファに格納する(ステップS1609)。このとき、エラー訂正グループでは、冗長データを計算するために、エラー訂正グループに関係する受信パケットを管理するバッファメモリもしくはエラー訂正グループに関係する受信パケットの格納先アドレス情報を管理する。
次に、エラー訂正処理307は、応答処理を実施するかを判定する(ステップS1610)。受信パケット量が閾値より少ない場合(ステップS1610:FALSE)、受信パケットがたまってからまとめて応答処理するため、エラー訂正処理307は、次回応答処理のためにタイマ設定を行い(ステップS1625)、受信処理を完了する。応答処理はTCPのWindow制御のようにある程度受信パケットをまとめてから、応答を返すことで、応答返答のトランザクション性能負荷を軽減する。
応答処理を実施する場合(ステップS1610:TRUE)、エラー訂正処理307は、エラー訂正開始条件が満たされているかを判定する(ステップS1611)。エラー訂正処理対象でない、または、エラー訂正処理を開始するためのエラー訂正方式やエラー訂正レベルを満たす受信状況になっておらずパケット再生ができない場合(ステップS1611:FALSE)、エラー訂正処理307は、再送が必要かを判定する(ステップS1624)。
再送が不要であれば(ステップS1624:FALSE)、制御コマンド処理302は、受信パケットの応答処理を行って(ステップS1623)、ネットワークパケットの受信処理を完了する。再送が必要であれば(ステップS1624:FALSE)、再送処理381は、再送処理を行う(ステップS1620)、なお、再送処理については後述する。
エラー訂正開始条件が満たされている場合(ステップS1611:TRUE)、データ受信エラー訂正処理309又はコマンド受信エラー訂正処理311は、受信済みパケットからエラー訂正処理を行って失ったネットワークパケットを再生するエラー訂正処理を行う(ステップS1618)。
更に、エラー訂正処理307は、エラー訂正管理テーブル(受信管理)909の情報を更新して(ステップS1613)、エラー訂正情報更新を送信側へ伝えるかを判定する(ステップS1614)。通知しない場合(ステップS1614:FALSE)、制御コマンド処理302は、受信パケットの応答処理を行って(ステップS1623)、ネットワークパケットの受信処理を完了する。
通知する場合(ステップS1614:TRUE)、エラー訂正処理307は、エラー訂正情報更新を行った結果を応答に反映する(ステップS1622)。制御コマンド処理302は、受信パケットの応答処理を行って(ステップS1623)、ネットワークパケットの受信処理を完了する。なお、エラー訂正管理テーブル(受信管理)909の情報更新については後述する。
応答処理(ステップS1623)によって、エラー訂正グループ内の対象のネットワークパケットが、エラー訂正処理に不要になった場合に、エラー訂正グループは開放される。コネクションをクローズする際も、エラー訂正グループは開放される。
なお、冗長パットをネットワーク経路上でロストした際に、本来転送すべきネットワークパケットがすべて受信されていれば、冗長パケットの再送は要求しなくてもよい。本フローにより、受信したネットワークパケットに対して、エラー訂正処理可能かどうかを判定して、エラー訂正処理可能であればエラー訂正処理を実施して、ネットワーク経路上で失ったネットワークパケットを受信側で再生する。
図17は実施例にかかるコネクション処理コマンド受信時のエラー訂正処理動作を説明するためのフローチャートを示す。コネクション処理(ステップS1621)では、まず、エラー訂正処理307は、コネクション確立処理かを判定する(ステップS1700)。コネクション確立処理でない場合(ステップS1700:FALSE)、エラー訂正処理307は、エラー訂正管理テーブル(受信管理)909に登録があるかを判定する(ステップS1704)。登録がない場合(ステップS1704:FALSE)、図16の結合子4からの処理が実行される。登録がある場合(ステップS1704:TRUE)、エラー訂正処理307は、コマンド間エラー訂正条件を満たしているかの判定(ステップS1703)に進む。
コネクション確立の場合(ステップS1700:TRUE)、エラー訂正処理307は、エラー訂正通信先管理テーブル901に登録があるかを判定する(ステップS1701)。登録がない場合は(ステップS1701:FALSE)図16の結合子5からの処理を行う。登録がある場合は(ステップS1701:TRUE)、エラー訂正管理テーブル(受信管理)909に登録があるかを判断し(ステップS1705)、登録がない場合は(ステップS1705:FALSE)、エラー訂正管理テーブル(受信管理)909に登録し(ステップS1702)、コマンド間エラー訂正条件を満たしているかの判定(ステップS1703)に進む。
エラー訂正管理テーブル(受信管理)909に登録がある場合(ステップS1705:TRUE)、エラー訂正処理307は、テーブル情報を再利用するかを判定する(ステップS1706)。例えば、テーブル情報がキャッシュとしてある場合、エラー訂正処理307は、制御情報の設定に応じて、再利用する(ステップS1706:TRUE)。再利用しない場合(ステップS1706:FALSE)、エラー訂正処理307は、エラー訂正管理テーブル(受信管理)909に登録し(ステップS1702)、コマンド間エラー訂正条件を満たしているかの判定(ステップS1703)に進む。
コマンド間エラー訂正条件を満たしているかの判判(ステップS1703)では、コマンド間のエラー訂正条件を満たしていない場合(ステップS1703:FALSE)、図16の結合子4からの処理が実行される。一方で、送信側においてコマンド間でエラー訂正グループを組んで場合等、コマンド間でエラー訂正条件を満たしている場合(ステップS1703:TRUE)、図16の結合子3からの処理が実行される。
本フローにより、コマンド受信の際のエラー訂正処理を判定し、コマンドをネットワーク経路上で失った場合でも、コマンドを再生することができる。
図18は実施例にかかるエラー訂正通信における再送または完了処理を説明するためのフローチャートを示す。応答処理をするかの判断により(ステップS1610)、すぐに応答をせずに、まとめて応答するためにタイマ設定をした場合(ステップS1625)、エラー訂正処理307は、タイマ割り込み発生時に、応答処理必要な時間が経過したかを判定する(ステップS1800)。応答処理必要な時間が経過していない場合(ステップS1800:FALES)、エラー訂正処理307は、タイマ割り込み処理を完了し、応答処理必要な時間が経過した場合(ステップS1800:TRUE)、図16の結合子5からの処理が実行される。
本フローにより、受信側から送信側への応答処理をまとめて行うことで、応答処理にかかる受信側のネットワークインタフェース103の負荷低減や、ネットワーク帯域の効率利用ができる。
図19は実施例にかかるエラー訂正不可の時の再送処理の動作を説明するためのフローチャートを示す。受信側のネットワークインタフェース103の再送処理(ステップS1620)では、まず、再送処理308は、再送が必要なネットワークパケットのシーケンス番号等の範囲情報を取得して(ステップS1901)、エラー訂正管理テーブル(受信管理)909を確認して(ステップS1902)、エラー訂正再送要求を発行するかを判定する(ステップS1903)。
発行しない場合、または、エラー訂正通信でない場合(ステップS1903:FALSE)、再送処理308は、再送データを決定する(ステップS1905)。再送処理308は、再送要求を生成して、再送要求を含んだネットワークパケットを送信側へ応答する(ステップS1900)。
一方で、再送処理308は、エラー訂正管理テーブル(受信管理)909を確認して(ステップS1902)、例えば、パケットロスの状況や再送回数に基づき、エラー訂正レベルを上げた方が良いと判定した場合に、エラー訂正再送要求を発行すると決定する(ステップS1903:TRUE)。
例えば、パケットロス率がエラー訂正レベルに対する閾値を超える場合、エラー訂正レベルを上げると判定してもよい。パケットロス率に代えて、再送回数を参照してもよい。また、再送回数とパケットロス率の双方を参照してもよい。例えば、再送回数が閾値を超えており、直近のパケットロス率も閾値を超えている場合に、訂正レベルを上げると判定してもよい。
再送処理308は、再送データと冗長データ量を決定し、エラー訂正情報のエラー訂正レベル等のパラメータ更新情報を反映し(ステップS1904)、再送要求性生成して、再送要求を含んだネットワークパケットを送信側へ応答する(ステップS1900)
本フローにより、エラー訂正処理によるネットワークパケットの再生が不可な場合でも、再送処理によって送信側から受信側へネットワークパケットを転送することができる。また、エラー訂正レベルを更新することで、ネットワーク経路の状況が良くなくネットワークパケットのロス率が高くなっていても、エラー訂正処理を実施できるようにする。
図20は実施例にかかるエラー訂正レベルの変更処理の動作を説明するためのフローチャートを示す。受信側のネットワークインタフェース103において、エラー訂正管理テーブル(受信管理)909の情報更新(ステップS1613)では、まず、エラー訂正処理307は、情報を更新するかを判定する(ステップS2000)。エラー訂正処理307は、例えば、所定回数に1回の頻度で、情報を更新すると判定する。情報更新が不要であれば(ステップS2000:FALSE)、処理を完了する。情報更新が必要であれば(ステップS2000:TRUE)、エラー訂正管理テーブル(受信管理)909の各種情報を更新する。
例えば、パケットロス率更新では(ステップS2001)、エラー訂正処理307は、送信元910毎に、設定した期間にどれぐらいパケットを失ったかを計測して算出する。パケットロス率は、継続的なロス率と、直近の通信におけるロス率等、様々な観点で計算して保持してもよい。
ロス傾向のカウンタ更新では(ステップS2002)、エラー訂正処理307は、パケットの失い方の傾向を計測する。例えば、連続してパケットを失った場合は、エラー訂正処理307は、バーストエラーと判定し、バースト傾向のカウンタを更新する。なお、最大何パケット連続で失ったかなどの付加情報を取得、保持してもよい。更に、単発でパケットを失った場合は、エラー訂正処理307は、ランダムエラーと判定し、ランダム傾向のカウンタを更新する。なお、期間を決めてランダムエラー発生率を計算して、保持してもよい。
エラー訂正方式の見直しでは(ステップS2003)、エラー訂正処理307は、パケットロス率、ロス傾向(バースト、ランダム)の情報等を解析して、宛先のエラー訂正情報を変更すべきかを判定する。上記項目の他、パケット再送回数の情報を参照してもよい。
変更する場合は、例えば、バーストロス傾向が強い場合は、バーストに強いアルゴリズムに変更する。また、ランダムロス傾向が強い場合は、ランダムに強いアルゴリズムに変更する。それぞれの傾向は、カウント数で表されている。アルゴリズムの変更は、二つのロス傾向のカウント数の差が閾値を超えることを条件としてもよい。なお、バーストロス傾向をランダムロス傾向に変えるために、エラー訂正グループ単位でみるとランダム傾向になるように、ネットワークパケットの送信タイミングを変更する設定をしてもよい。
エラー訂正レベルの見直しでは(ステップS2004)、エラー訂正307は、パケットロス率に基づいて、宛先のエラー訂正レベルを変更すべきかを判定する。変更する場合は、例えば、パケットロス率がエラー訂正レベルに対応する閾値より高い場合に、冗長度を増やす及び/またはエラー訂正グループの送信データパケット数を減らすレベル変更を行、パケットロス率がエラー訂正レベルに対応するもう一つの閾値より低い場合は、冗長度を減らすレベル変更を行う。
エラー訂正レベルの変更は、長期のロス率と直近のロス率の双方に基づき判定されてもよい。例えば、双方のロス率がそれぞれの閾値を超える場合に、エラー訂正レベルを上げてもよい。また、エラー訂正グループの再送回数の平均が、エラー訂正レベルに対応する閾値を超える場合に、エラー訂正レベルを上げてもよい。再送回数とロス率の双方にもとづいて、エラー訂正レベルの変更が判定されてもよい。なお、エラー訂正方式及びエラー訂正レベルの一方のみが変更可能でもよい。エラー訂正レベルは、冗長度とデータ量(パケット数)の一方のみが変更可能でもよい。
制御情報の見直しでは(ステップS2005)、エラー訂正処理307は、各種タイマ情報や再送回数等のパラメータをエラー訂正通信状況に合わせて変更する。
エラー訂正処理307は、上記更新に応じて、送信側へフィードバックが必要かを判定する(ステップS2006)。フィードバックが不要な場合(ステップS2006:FALSE)、エラー訂正処理307は、処理を完了する。フィードバックが必要な場合(ステップS2006:TRUE)、エラー訂正処理307は、エラー訂正情報更新通知処理実施フラグを有効にし(ステップS2007)、エラー訂正情報更新の付与(ステップS1622)の処理を実施する。
本フローにより、最新のネットワーク経路状況に合わせて、エラー訂正処理を更新することで、効率的にネットワークを利用することができる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
100 サーバシステム、101 ストレージコントローラ、102 ドライブボックス、103 ネットワークインタフェース、104 フロントエンドネットワーク、105 バックエンドネットワーク、106 ストレージコントローラ間ネットワーク、107 外部ネットワーク、200 ホストバス、201 ホストインタフェース、202 ネットワークパス、203 ネットワークコントローラ、204 プロセッサ、205 メモリ、206 アシストシステム、207 内部スイッチ、300 オペレーティングシステム、301 初期化/保守/障害処理、302 制御コマンド処理、303 DMA制御処理、304 アシストシステム処理、305 ネットワークコントローラドライバ、306 ネットワークプロトコル処理、307 エラー訂正処理、308 データ送信時エラー訂正処理、309 データ受信時エラー訂正処理、310 コマンド送信時エラー訂正処理、311 コマンド受信時エラー訂正処理、381 再送処理、400 データ送信/受信エラー訂正処理、401 コマンド送信/受信エラー訂正処理、500 正サイト、501 副サイト、502 プライマリボリューム、503 セカンダリボリューム、504 データライト、505 コピー、600 ヘッダ、601 データ、602 エラー訂正対象、603 エラー訂正ヘッダ、604 エラー訂正用データ、605 ネットワークヘッダ、606 ネットワークペイロード、800 エラー訂正ペイロード、801 コントロール情報、802 エラー訂正コントロール情報、900 エラー訂正管理情報、901 エラー訂正通信先管理テーブル、902 エラー訂正通信適用先情報、903 初期パラメータ、904 エラー訂正管理テーブル(送信管理)、905 宛先、906 エラー訂正レベル、907 エラー訂正方式、908 制御情報、909 エラー訂正管理テーブル(受信管理)、910 送信元、911 パケットロス率、912 ロス傾向(ランダム)、913 ロス傾向(バースト)

Claims (12)

  1. ストレージコントローラのネットワークインタフェースであって、
    プロセッサと、
    前記プロセッサが実行する命令コードを格納するメモリと、を含み、
    前記プロセッサは、
    ネットワークを介してパケットを送信及び受信するための、プロトコル処理を実行し、
    前記ネットワークから受信していない第1パケットを、前記第1パケットと同一のエラー訂正パケットグループに含まれる受信済みの他の複数パケットから再生する、ネットワークインタフェース。
  2. 請求項1に記載のネットワークインタフェースであって、
    前記プロセッサは、
    前記エラー訂正パケットグループにおいて、前記第1パケットの再生のために必要であって未受信のパケットを前記エラー訂正パケットグループから選択して、前記エラー訂正パケットグループの送信元に再送要求する、ネットワークインタフェース。
  3. 請求項1に記載のネットワークインタフェースであって、
    前記エラー訂正パケットグループは、複数のコネクションのパケットを含む、ネットワークインタフェース。
  4. 請求項3に記載のネットワークインタフェースであって、
    前記エラー訂正パケットグループは、コマンドを格納するパケットを含む、ネットワークインタフェース。
  5. 請求項1に記載のネットワークインタフェースであって、
    前記メモリは、パケットの送信元に関連付けられた、未受信のパケットを再生するエラー訂正の管理情報を格納し、
    前記エラー訂正の管理情報は、エラー訂正レベル及びエラー訂正アルゴリズムの少なくとも一つを示し、
    前記プロセッサは、前記送信元からのパケットの受信状況に基づいて、前記エラー訂正レベル及び前記エラー訂正レベルの少なくとも一方を変更する、ネットワークインタフェース。
  6. 請求項5に記載のネットワークインタフェースであって、
    前記エラー訂正レベルは、エラー訂正パケットグループのユーザデータパケット数及び冗長パケット数の少なくとも一つを示す、ネットワークインタフェース。
  7. 請求項5に記載のネットワークインタフェースであって、
    前記プロセッサは、前記受信状況に基づいて、パケットのバーストロス又はランダムロスに適したエラー訂正アルゴリズムを選択する、ネットワークインタフェース。
  8. 請求項1に記載のネットワークインタフェースであって、
    前記プロセッサは、異なるエラー訂正パケットグループの間でパケット送信順序を入れ替える、ネットワークインタフェース。
  9. 請求項1に記載のネットワークインタフェースであって、
    前記プロセッサは、予め設定された情報に基づいて、前記ネットワークのネットワークヘッダを含むパケット又は前記ネットワークヘッダを含まないパケットに、エラー訂正ヘッダを付与する、ネットワークインタフェース。
  10. 請求項1に記載のネットワークインタフェースであって、
    前記プロセッサは、
    前記エラー訂正パケットグループの一部の受信済パケットから、前記エラー訂正パケットグループのユーザデータを格納する未受信パケットを再生し、
    前記ユーザデータを格納する未受信のパケットを再生した後に、前記ネットワークを介して受信した同一ユーザデータのパケットを破棄する、ネットワークインタフェース。
  11. ストレージシステムであって、
    請求項1に記載のネットワークインタフェースを含む第1ストレージコントローラと、
    第2ネットワークインタフェースを含む第2ストレージコントローラと、を含み、
    前記第1ストレージコントローラの前記ネットワークインタフェースと前記第2ネットワークインタフェースとは、ネットワークを介して、パケットを送信及び受信し、
    前記第2ネットワークインタフェースは、
    プロセッサと、
    前記プロセッサが実行する命令コードを格納する1以上のメモリと、を含み。
    前記プロセッサは、
    ネットワークを介してパケットを送信及び受信するための、プロトコル処理を実行し、
    前記ネットワークから受信していない第2パケットを、前記第2パケットと同一のエラー訂正パケットグループに含まれる受信済みの他の複数パケットから再生する、ストレージシステム。
  12. ストレージシステムであって、
    請求項1に記載のネットワークインタフェースを含むストレージコントローラと、
    ドライブボックスと、を含み、
    前記ドライブボックスは、
    複数の記憶ドライブと、
    前記ストレージコントローラのネットワークインタフェースと前記ネットワークを介してパケットの送信及び受信を行う、第3ネットワークインタフェースと、を含み、
    前記第3ネットワークインタフェースは、
    プロセッサと、
    前記プロセッサが実行する命令コードを格納する1以上のメモリと、を含み。
    前記プロセッサは、
    前記ネットワークを介してパケットを送信及び受信するための、プロトコル処理を実行し、
    前記ネットワークから受信していない第3パケットを、前記第3パケットと同一のエラー訂正パケットグループに含まれる受信済みの他の複数パケットから再生する、ストレージシステム。
JP2021019731A 2021-02-10 2021-02-10 ストレージコントローラのネットワークインタフェース Pending JP2022122478A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021019731A JP2022122478A (ja) 2021-02-10 2021-02-10 ストレージコントローラのネットワークインタフェース
US17/472,857 US11855778B2 (en) 2021-02-10 2021-09-13 Network interface for storage controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021019731A JP2022122478A (ja) 2021-02-10 2021-02-10 ストレージコントローラのネットワークインタフェース

Publications (1)

Publication Number Publication Date
JP2022122478A true JP2022122478A (ja) 2022-08-23

Family

ID=82705089

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021019731A Pending JP2022122478A (ja) 2021-02-10 2021-02-10 ストレージコントローラのネットワークインタフェース

Country Status (2)

Country Link
US (1) US11855778B2 (ja)
JP (1) JP2022122478A (ja)

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6081907A (en) * 1997-06-09 2000-06-27 Microsoft Corporation Data delivery system and method for delivering data and redundant information over a unidirectional network
US6288739B1 (en) * 1997-09-05 2001-09-11 Intelect Systems Corporation Distributed video communications system
US6718347B1 (en) * 1999-01-05 2004-04-06 Emc Corporation Method and apparatus for maintaining coherence among copies of a database shared by multiple computers
US6704364B1 (en) * 1999-12-29 2004-03-09 Advanced Micro Devices, Inc. Method and apparatus for generating a plurality of CRC digits for data packets having different prescribed network protocols using one CRC generator
JP2004171206A (ja) * 2002-11-19 2004-06-17 Hitachi Ltd ストレージシステム
US7181675B2 (en) * 2003-10-06 2007-02-20 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for checksum offloading
WO2006134373A2 (en) * 2005-06-15 2006-12-21 Solarflare Communications Incorporated Reception according to a data transfer protocol of data directed to any of a plurality of destination entities
US8296337B2 (en) * 2006-12-06 2012-10-23 Fusion-Io, Inc. Apparatus, system, and method for managing data from a requesting device with an empty data token directive
WO2009014951A1 (en) * 2007-07-20 2009-01-29 Bigfoot Networks, Inc. Remote access diagnostic device and methods thereof
US8230316B2 (en) * 2008-01-25 2012-07-24 Nevion Usa, Inc. Forward error correction for burst and random packet loss for real-time multi-media communication
US20120054583A1 (en) * 2010-08-27 2012-03-01 Raytheon Company Method and system of sub-packet error correction
US9172506B2 (en) * 2013-03-12 2015-10-27 Cellco Partnership Packet loss recovery
US20140286440A1 (en) * 2013-03-19 2014-09-25 Nvidia Corporation Quality of service management system and method of forward error correction
US10135746B2 (en) * 2015-07-07 2018-11-20 Strong Force Iot Portfolio 2016, Llc Cross-session network communication configuration
FR3041194B1 (fr) * 2015-09-16 2017-09-01 Vogo Procede d'optimisation de transmission de flux de donnees video dans un reseau sans fil
US20200348662A1 (en) * 2016-05-09 2020-11-05 Strong Force Iot Portfolio 2016, Llc Platform for facilitating development of intelligence in an industrial internet of things system
US20190339688A1 (en) * 2016-05-09 2019-11-07 Strong Force Iot Portfolio 2016, Llc Methods and systems for data collection, learning, and streaming of machine signals for analytics and maintenance using the industrial internet of things
US20190114236A1 (en) * 2017-10-12 2019-04-18 Electronics And Telecommunications Research Institute Fault tolerant network on-chip
WO2019156874A1 (en) * 2018-02-12 2019-08-15 Marvell World Trade Ltd. Secure ranging measurement

Also Published As

Publication number Publication date
US20220255665A1 (en) 2022-08-11
US11855778B2 (en) 2023-12-26

Similar Documents

Publication Publication Date Title
US8392931B2 (en) Data transfer protocol for data replication between multiple pairs of storage controllers on a SAN fabric
JP4430710B2 (ja) フェイルオーバおよび負荷分散
US7870317B2 (en) Storage processor for handling disparate requests to transmit in a storage appliance
US10985999B2 (en) Methods, devices and systems for coordinating network-based communication in distributed server systems with SDN switching
US6834326B1 (en) RAID method and device with network protocol between controller and storage devices
US20130311690A1 (en) Method and apparatus for transferring information between different streaming protocols at wire speed
WO2005111839A1 (en) Storage switch task processing synchronization
US7987154B2 (en) System, a method and a device for updating a data set through a communication network
Telikepalli et al. Storage area network extension solutions and their performance assessment
US20120110397A1 (en) Data transmission system, storage medium and data transmission program
US20210195000A1 (en) Method and device for data transmission
US20060215656A1 (en) Method, device and program storage medium for controlling communication
US10521317B1 (en) Compressing data to be replicated utilizing a compression method selected based on network behavior
US9973215B1 (en) Controlled multipath data packet delivery with forward error correction
JP2004171206A (ja) ストレージシステム
JP4426261B2 (ja) チャネルアダプタ及びディスクアレイ装置
JP2022122478A (ja) ストレージコントローラのネットワークインタフェース
US10798159B2 (en) Methods for managing workload throughput in a storage system and devices thereof
US11095698B2 (en) Techniques for processing management messages using multiple streams
Shimano et al. An information propagation scheme for an autonomous distributed storage system in iSCSI environment
US8621029B1 (en) System and method for providing remote direct memory access over a transport medium that does not natively support remote direct memory access operations
US10585823B2 (en) Leveling IO
Pallampati iSCSI Performance over RDMA-enabled Network
US20240146803A1 (en) Data traffic management in a computing environment utilizing direct memory access functionality
JP2009124276A (ja) Raidを用いて分割し且つ冗長化したパケットを送受信する送信装置、受信装置及びプログラム