IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ シスコ テクノロジー,インコーポレイテッドの特許一覧

特許7441823セグメントルーティング技術を使用した分散ストレージ操作の待ち時間の短縮
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-21
(45)【発行日】2024-03-01
(54)【発明の名称】セグメントルーティング技術を使用した分散ストレージ操作の待ち時間の短縮
(51)【国際特許分類】
   H04L 45/00 20220101AFI20240222BHJP
【FI】
H04L45/00
【請求項の数】 19
(21)【出願番号】P 2021507654
(86)(22)【出願日】2019-08-30
(65)【公表番号】
(43)【公表日】2021-12-09
(86)【国際出願番号】 US2019049011
(87)【国際公開番号】W WO2020051076
(87)【国際公開日】2020-03-12
【審査請求日】2022-04-28
(31)【優先権主張番号】16/121,525
(32)【優先日】2018-09-04
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508041127
【氏名又は名称】シスコ テクノロジー,インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100140431
【弁理士】
【氏名又は名称】大石 幸雄
(72)【発明者】
【氏名】スルクフ,アンドレ ジャン-マリー
(72)【発明者】
【氏名】ルーティー,ギヨーム
(72)【発明者】
【氏名】ハワリ,ムハンマド
(72)【発明者】
【氏名】オーガスティン,アロイス クリストフ
(72)【発明者】
【氏名】デムソー,ヨアン
【審査官】大石 博見
(56)【参考文献】
【文献】米国特許出願公開第2018/0219783(US,A1)
【文献】国際公開第2017/184528(WO,A2)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 45/00
(57)【特許請求の範囲】
【請求項1】
方法であって、
クライアントデバイスから、分散ストレージ環境でデータ操作を実施する意図を特定する電子メッセージを受信することであって、前記電子メッセージが、前記分散ストレージ環境に関連付けられた複数のメタデータサーバを特定するメタデータサーバSRリストを含む第1のセグメントルーティングヘッダ(SRH)を含み、前記第1のSRHが、関連付けられた接続要求が前記複数のメタデータサーバのうちの1つによって受け入れられるまで、前記電子メッセージが前記メタデータサーバSRリストを含む第1のパスを通って送られることを引き起こすことと、
前記分散ストレージ環境から前記データ操作に関して選択された複数のストレージノード候補を特定するセグメントルーティング(SR)リストを前記クライアントデバイスに送信することと、
前記クライアントデバイスから受信されたデータ操作要求を、前記データ操作要求に関連付けられた第2のSRHに基づいて、前記SRリストによって定義された第2のパスを通って誘導することであって、前記第2のSRHが、前記複数のストレージノード候補の中のストレージノードが前記データ操作要求を受け入れるまで、前記第2のパスを通って前記データ操作要求を誘導するように構成されており、前記第2のSRHが前記SRリストを含む、誘導することと、
前記データ操作要求への応答を前記クライアントデバイスに送信することであって、前記応答が、前記ストレージノードが前記クライアントデバイスからの前記データ操作要求を受け入れたことを示す、送信することと、
前記データ操作要求を受け入れた前記ストレージノードで前記データ操作を実施することと、を含む、方法。
【請求項2】
前記データ操作要求が、前記分散ストレージ環境にデータを格納するためのストレージ要求を含み、前記方法が、
前記データを格納するための一次ストレージノードプール、および前記データのある数の複製を格納するための1つ以上の二次ストレージノードプールを選択することであって、前記一次ストレージノードプールが、前記複数のストレージノード候補を含む、選択することをさらに含む、請求項1に記載の方法。
【請求項3】
前記電子メッセージが、格納される前記データの複製の前記ある数を示す複製係数を含み、前記1つ以上の二次ストレージノードプールが、前記複製係数に基づいて選択される、請求項2に記載の方法。
【請求項4】
前記1つ以上の二次ストレージノードプールの1つ以上のそれぞれのSRリストを取得することであって、各それぞれのSRリストが、前記それぞれのSRリストに関連付けられたそれぞれの二次ストレージノードプール内のそれぞれの複数のストレージノード候補を特定する、取得することと、
前記データ操作要求を受け入れた前記ストレージノードによって、かつ前記1つ以上の二次ストレージノードプールの各々に、前記ある数の複製のそれぞれの部分を前記それぞれの二次ストレージノードプール内の前記それぞれの複数のストレージノード候補のうちの1つ以上に格納するためのそれぞれの要求を送信することであって、前記それぞれの要求が、前記それぞれの二次ストレージノードプールに関連付けられた前記それぞれのSRリストを含むそれぞれのSRHを含み、前記それぞれのSRHが、前記それぞれの複数のストレージノード候補のうちの1つ以上が前記それぞれの要求を受け入れるまで、前記それぞれの要求が前記それぞれのSRリストを含むそれぞれのパスを通って送られることを引き起こすように構成されている、送信することと、をさらに含む、請求項2または3に記載の方法。
【請求項5】
前記それぞれの二次ストレージノードプール内の前記それぞれの複数のストレージノード候補のうちの少なくとも1つから前記それぞれの要求の受け入れを受信することと、
前記受け入れに基づいて、前記ある数の複製の前記それぞれの部分を、前記それぞれの二次ストレージノードプール内の前記それぞれの複数のストレージノード候補のうちの前記少なくとも1つに格納することと、をさらに含む、請求項4に記載の方法。
【請求項6】
前記1つ以上の二次ストレージノードプールの1つ以上のSRリストを前記クライアントデバイスに送信することであって、各それぞれのSRリストが、前記それぞれのSRリストに関連付けられたそれぞれの二次ストレージノードプール内のそれぞれの複数のストレージノード候補を特定する、送信することと、
前記ストレージ要求のそれぞれのコピーを、前記それぞれの二次ストレージノードプール内の前記それぞれの複数のストレージノード候補に送信することであって、前記それぞれのコピーが、前記それぞれの二次ストレージノードプールに関連付けられた前記それぞれのSRリストを含むそれぞれのSRHを含み、前記それぞれのコピーが、前記ストレージ要求に関連付けられたSRスプレーポリシーを介して送信されている、送信することと、
前記1つ以上の二次ストレージノードプール内の2つ以上のストレージノードが前記ストレージ要求の前記それぞれのコピーに関連付けられた前記ストレージ要求を受け入れたという指示を受信することに応答して、前記2つ以上のストレージノードと前記クライアントデバイスとの間の並行接続を確立することと、
前記並行接続を介して前記2つ以上のストレージノードに前記データを格納することと、をさらに含む、請求項2~5のいずれかに記載の方法。
【請求項7】
前記複数のストレージノード候補の中の前記ストレージノードが、前記ストレージノードの現在の操作条件に基づいて前記データ操作要求を受け入れる、請求項1~6のいずれかに記載の方法。
【請求項8】
前記データ操作が前記分散ストレージ環境上のデータを取り出す操作を含み、前記データ操作要求が前記分散ストレージ環境から前記データを取り出す要求を含み、前記SRリスト内で特定された前記複数のストレージノード候補が、前記データのコピーが格納されている前記分散ストレージ環境内のストレージノードのセットを含み、前記データ操作を実施することが、前記データ操作要求を受け入れた前記ストレージノードからの前記データを前記クライアントデバイスに提供することを含む、請求項1~7のいずれかに記載の方法。
【請求項9】
前記クライアントデバイスから、前記分散ストレージ環境でデータコンテンツを取り出す第2の意図を特定する第2の電子メッセージを受信することと、
前記分散ストレージ環境上の前記データコンテンツのコピーに関連付けられた複数のインターネットプロトコル(IP)アドレスを特定する特定のSRリストを前記クライアントデバイスに送信することと、
前記クライアントデバイスから受信されたデータ要求を、前記データ要求に関連付けられた特定のSRHに基づいて、前記特定のSRリストを含む第3のパスを通って誘導することであって、前記特定のSRHが、前記データコンテンツのコピーをホストしているそれぞれのストレージノードが前記データ要求を受け入れるまで、前記第3のパスを通って前記データ要求を誘導するよう構成されている、誘導することと、
前記データコンテンツの前記コピーをホストしている前記それぞれのストレージノードが前記クライアントデバイスからの前記データ要求を受け入れたという指示を前記クライアントデバイスに送信することと、
前記データコンテンツの前記コピーをホストしている前記それぞれのストレージノード上の前記データコンテンツを前記クライアントデバイスに提供することと、をさらに含む、請求項1~8のいずれかに記載の方法。
【請求項10】
前記データ操作要求が、前記分散ストレージ環境にデータを格納するためのストレージ要求を含み、前記SRリストが、前記分散ストレージ環境に格納される前記データの複製のある数を示す複製係数を特定し、前記方法が、
前記データ操作要求を受け入れた前記ストレージノードによって、かつ前記SRリスト内の各残りのセグメントに、前記残りのセグメントを含むそれぞれのストレージノード上の前記ある数の複製の中のそれぞれの複製を格納するためのそれぞれの要求を送信することであって、前記それぞれの要求が、前記SRリストを含む前記第2のSRHを含み、前記第2のSRHが、ある数のストレージノード候補が前記それぞれの要求を受け入れるまで、前記それぞれの要求が前記第2のパスを通って送られることを引き起こすように構成されており、ストレージノード候補の前記ある数が複製の前記ある数に等しい、送信することと、
前記ある数のストレージノード候補が前記それぞれの要求を受け入れるときに、前記ある数の複製を前記それぞれの要求を受け入れた前記ある数のストレージノード候補に格納することと、をさらに含む、請求項1~9のいずれかに記載の方法。
【請求項11】
システムであって、
クライアントデバイスから、分散ストレージ環境でデータ操作を実施する意図を特定する電子メッセージを受信することであって、前記電子メッセージが、前記分散ストレージ環境に関連付けられた複数のメタデータサーバを特定するメタデータサーバSRリストを含む第1のセグメントルーティングヘッダ(SRH)を含み、前記第1のSRHが、関連付けられた接続要求が前記複数のメタデータサーバのうちの1つによって受け入れられるまで、前記電子メッセージが前記メタデータサーバSRリストを含む第1のパスを通って送られることを引き起こすことと、
前記分散ストレージ環境から前記データ操作に関して選択された複数のストレージノード候補を特定するセグメントルーティング(SR)リストを前記クライアントデバイスに送信することと、
前記クライアントデバイスから受信されたデータ操作要求を、前記データ操作要求に関連付けられた第2のSRHに基づいて、前記SRリストを含む第2のパスを通って誘導することであって、前記第2のSRHが、前記複数のストレージノード候補の中のストレージノードが前記データ操作要求を受け入れるまで、前記第2のパスを通って前記データ操作要求を誘導するように構成されている、誘導することと、
前記クライアントデバイスに、前記ストレージノードが前記クライアントデバイスからの前記データ操作要求を受け入れたことを示す応答を送信することと、
前記データ操作要求を受け入れた前記ストレージノードで前記データ操作を実施することと、を行うように構成された、システム。
【請求項12】
前記データ操作要求が、前記分散ストレージ環境にデータを格納するためのストレージ要求を含み、前記システムが、
前記データを格納するための一次ストレージノードプール、および前記データのある数の複製を格納するための1つ以上の二次ストレージノードプールを選択することであって、前記一次ストレージノードプールが、前記複数のストレージノード候補を含み、前記1つ以上の二次ストレージノードプールが、格納される複製の前記ある数を特定する複製係数に基づいて選択される、選択すること行うようにさらに構成されている、請求項11に記載のシステム。
【請求項13】
前記システムが、
前記1つ以上の二次ストレージノードプールの1つ以上のそれぞれのSRリストを取得することであって、各それぞれのSRリストが、前記それぞれのSRリストに関連付けられたそれぞれの二次ストレージノードプール内のそれぞれの複数のストレージノード候補を特定する、取得することと、
前記ある数の複製のそれぞれの部分を前記それぞれの二次ストレージノードプール内の前記それぞれの複数のストレージノード候補のうちの1つ以上に格納するためのそれぞれの要求を前記1つ以上の二次ストレージノードプールの各々に送信することであって、前記それぞれの要求が、前記それぞれの二次ストレージノードプールに関連付けられた前記それぞれのSRリストを含むそれぞれのSRHを含み、前記それぞれのSRHが、前記それぞれの複数のストレージノード候補のうちの1つ以上が前記それぞれの要求を受け入れるまで、前記それぞれの要求が前記それぞれのSRリストを含むそれぞれのパスを通って送られることを引き起こすように構成されている、送信することと、
前記それぞれの二次ストレージノードプール内の前記それぞれの複数のストレージノード候補のうちの前記1つ以上から前記それぞれの要求の受け入れを受信することに応答して、前記ある数の複製の前記それぞれの部分を前記それぞれの複数のストレージノード候補のうちの前記1つ以上に格納することと、を行うようにさらに構成されている、請求項12に記載のシステム。
【請求項14】
前記データ操作要求が、前記分散ストレージ環境にデータを格納するためのストレージ要求を含み、前記SRリストが、前記分散ストレージ環境に格納される前記データの複製のある数を示す複製係数を特定し、前記システムが、
前記データ操作要求を受け入れた前記ストレージノードによって、かつ前記SRリスト内の各残りのセグメントに、前記残りのセグメントを含むそれぞれのストレージノード上の前記ある数の複製の中のそれぞれの複製を格納するためのそれぞれの要求を送信することであって、前記それぞれの要求が、前記SRリストを含む前記第2のSRHを含み、前記第2のSRHが、ある数のストレージノード候補が前記それぞれの要求を受け入れるまで、前記それぞれの要求が前記第2のパスを通って送られることを引き起こすように構成されており、ストレージノード候補の前記ある数が複製の前記ある数に等しい、送信することと、
前記ある数のストレージノード候補が前記それぞれの要求を受け入れるときに、前記ある数の複製を前記それぞれの要求を受け入れた前記前記ある数のストレージノード候補に格納することと、を行うようにさらに構成されている、請求項11~13のいずれかに記載のシステム。
【請求項15】
前記データ操作がデータを取り出す操作を含み、前記データ操作要求が前記分散ストレージ環境から前記データを取り出す要求を含み、前記SRリスト内で特定された前記複数のストレージノード候補が、前記データのコピーが格納されている前記分散ストレージ環境内のストレージノードのセットを含み、前記データ操作を実施することが、前記データ操作要求を受け入れた前記ストレージノードからの前記データを前記クライアントデバイスに提供することを含む、請求項11~14のいずれかに記載のシステム。
【請求項16】
コンピュータシステムの1つ以上のプロセッサによって実行されると、前記コンピュータシステムに、
クライアントデバイスから、分散ストレージ環境でデータ操作を実施する意図を特定する電子メッセージを受信することであって、前記電子メッセージが、前記分散ストレージ環境に関連付けられた複数のメタデータサーバを特定するメタデータサーバSRリストを含む第1のセグメントルーティングヘッダ(SRH)を含み、前記第1のSRHが、関連付けられた接続要求が前記複数のメタデータサーバのうちの1つによって受け入れられるまで、前記電子メッセージが前記メタデータサーバSRリストを含む第1のパスを通って送られることを引き起こすことと、
前記分散ストレージ環境から、前記データ操作に関して選択された複数のストレージノード候補を特定するセグメントルーティング(SR)リストを前記クライアントデバイスに送信することと、
前記クライアントデバイスから受信されたデータ操作要求を、前記データ操作要求に関連付けられた第2のSRHに基づいて、前記SRリストを含む第2のパスを通って誘導することであって、前記第2のSRHが、前記複数のストレージノード候補の中のストレージノードが前記データ操作要求を受け入れるまで、前記第2のパスを通って前記データ操作要求を誘導するように構成されている、誘導することと、
前記クライアントデバイスに、前記ストレージノードが前記クライアントデバイスからの前記データ操作要求を受け入れたことを示す応答を送信することと、
前記データ操作要求を受け入れた前記ストレージノードで前記データ操作を実施することと、を行わせる命令を中に格納している、コンピュータ可読記憶媒体。
【請求項17】
前記データ操作要求が、前記分散ストレージ環境にデータを格納するためのストレージ要求を含み、
前記1つ以上のプロセッサによって実行されると、前記コンピュータシステムに、
前記データを格納するための一次ストレージノードプール、および前記データのある数の複製を格納するための1つ以上の二次ストレージノードプールを選択することであって、前記一次ストレージノードプールが、前記複数のストレージノード候補を含み、前記1つ以上の二次ストレージノードプールが、格納される複製の前記ある数を特定する複製係数に基づいて選択される、選択することと、
前記1つ以上の二次ストレージノードプールの1つ以上のそれぞれのSRリストを取得することであって、各それぞれのSRリストが、前記それぞれのSRリストに関連付けられたそれぞれの二次ストレージノードプール内のそれぞれの複数のストレージノード候補を特定する、取得することと、
前記1つ以上の二次ストレージノードプールの各々に、前記ある数の複製のそれぞれの部分を前記それぞれの二次ストレージノードプール内の前記それぞれの複数のストレージノード候補のうちの1つ以上に格納するためのそれぞれの要求を送信することであって、前記それぞれの要求が、前記それぞれの二次ストレージノードプールに関連付けられた前記それぞれのSRリストを含むそれぞれのSRHを含み、前記それぞれのSRHが、前記それぞれの複数のストレージノード候補のうちの1つ以上が前記それぞれの要求を受け入れるまで、前記それぞれの要求が前記それぞれのSRリストを含むそれぞれのパスを通って送られることを引き起こすように構成されている、送信することと、
前記それぞれの二次ストレージノードプール内の前記それぞれの複数のストレージノード候補のうちの少なくとも1つから前記それぞれの要求の受け入れを受信することに応答して、前記ある数の複製の前記それぞれの部分を前記それぞれの二次ストレージノードプール内の前記それぞれの複数のストレージノード候補のうちの前記少なくとも1つに格納することと、を行わせる命令を格納している、請求項16に記載のコンピュータ可読記憶媒体。
【請求項18】
前記複数のストレージノード候補が一次ストレージノードプールに関連付けられており、前記コンピュータ可読記憶媒体が、前記1つ以上のプロセッサによって実行されると、
前記コンピュータシステムに、
前記1つ以上の二次ストレージノードプールの1つ以上のSRリストを前記クライアントデバイスに送信することであって、各それぞれのSRリストが、前記それぞれのSRリストに関連付けられたそれぞれの二次ストレージノードプール内のそれぞれの複数のストレージノード候補を特定する、送信することと、
前記ストレージ要求のそれぞれのコピーを、前記それぞれの二次ストレージノードプール内の前記それぞれの複数のストレージノード候補に送信することであって、前記それぞれのコピーが、前記それぞれの二次ストレージノードプールに関連付けられた前記それぞれのSRリストを含むそれぞれのSRHを含み、前記それぞれのコピーが、前記ストレージ要求に関連付けられたSRスプレーポリシーを介して送信されている、送信することと、
前記1つ以上の二次ストレージノードプール内の2つ以上のストレージノードが前記ストレージ要求の前記それぞれのコピーに関連付けられた前記ストレージ要求を受け入れたという指示を受信することに応答して、前記2つ以上のストレージノードと前記クライアントデバイスとの間の並行接続を確立することと、
前記並行接続を介して前記2つ以上のストレージノードに前記データを格納することと、を行わせる命令を格納する、請求項16または17に記載のコンピュータ可読記憶媒体。
【請求項19】
前記1つ以上のプロセッサによって実行されると、前記コンピュータシステムに、
前記クライアントデバイスから、前記分散ストレージ環境でデータコンテンツを取り出す第2の意図を特定する第2の電子メッセージを受信することと、
前記分散ストレージ環境上の前記データコンテンツのコピーに関連付けられた複数のインターネットプロトコル(IP)アドレスを特定する特定のSRリストを前記クライアントデバイスに送信することと、
前記クライアントデバイスから受信されたデータ要求を、特定のSRHに基づいて、前記特定のSRリストを含む特定のパスを通って誘導することであって、前記特定のSRHが、前記データコンテンツのコピーをホストしているそれぞれのストレージノードが前記データ要求を受け入れるまで、前記特定のパスを通って前記データ要求を誘導するよう構成されている、誘導することと、
前記データコンテンツの前記コピーをホストしている前記それぞれのストレージノードが前記クライアントデバイスからの前記データ要求を受け入れたという指示を前記クライアントデバイスに送信することと、
前記クライアントデバイスに、前記データコンテンツの前記コピーをホストしている前記それぞれのストレージノード上の前記データコンテンツを提供することと、を行わせる命令を格納している、請求項16~18のいずれかに記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2018年9月4日に出願され、「REDUCING DISTRIBUTED STORAGE OPERATION LATENCY USING SEGMENT ROUTING TECHNIQUES」と題された米国非仮特許出願第16/121,525号の利益および優先権を主張し、全体を参照することにより、その内容がここに明示的に援用される。
【0002】
本技術は、分散ストレージシステムに関し、より具体的には、セグメントルーティング技術を使用して分散ストレージ操作の待ち時間を短縮することに関係する。
【背景技術】
【0003】
インターネット対応デバイスの普及により、インターネットサービスおよびコンテンツに対する膨大な需要が生まれている。様々な意味で、ユーザのネットワークサービスおよびコンテンツへの依存度が高まっているコネクティッド社会を迎えている。このインターネット接続革命は、パフォーマンスの期待を下回ることが多い一方で、大量のクライアント要求を処理するのに苦労しているコンテンツプロバイダに重大な課題をもたらした。例えば、コンテンツプロバイダは典型的に、ユーザからのネットワークおよびコンテンツ要求に対応するために、大規模かつ複雑なデータセンターを必要とする。これらのデータセンターには、特定のコンテンツおよびサービスをホストするように構成されたサーバファームが装備されていることが多く、コンテンツ要求を送り、かつ処理するように構成された多数のネットワークデバイスが含まれている。多くの場合、特定のデータセンターにより数百万のトラフィックフローおよびサービス要求を処理することが期待される。
【0004】
当然のことながら、このような大量のデータは管理が難しく、パフォーマンスが大幅に低下し、課題をもたらす可能性がある。場合によっては、パフォーマンスおよびサービスの信頼性を向上させるために、負荷分散ソリューションが実装されることがある。ただし、現在の負荷分散ソリューションはノード障害が発生しやすく、ネットワークの動的な変化および変動を適切に考慮できないことが多く、待ち時間およびボトルネックの影響を受けやすい場合がある。追加のリソースを購入して実装すると、ネットワークの容量を増やして、待ち時間を短縮し、パフォーマンスの問題を減らすことができる。残念ながら、この手法はコストがかかり、ネットワークがさらに複雑になり、ネットワークの変動の影響を受けやすくなる。これにより、過負荷状態による待ち時間、負荷不足状態による無駄、およびパフォーマンスの大きな変動をもたらす可能性がある。
【図面の簡単な説明】
【0005】
本開示の上記および他の利点および特徴を得ることができる様式を説明するために、添付の図面に示されるその特定の実施形態を参照することにより、上記で簡単に説明した原理のより具体的な説明を行う。これらの図面が本開示の例示的な実施形態のみを描写し、したがって、その範囲を限定すると見なされるべきではないことを理解して、本明細書の原理は、以下の添付の図面を使用することにより、追加の特定事項および詳細と共に記載および説明される。
【0006】
図1】様々な実施形態による、例示的な分散ストレージ環境を示す。
図2】様々な実施形態による、セグメントルーティングおよび負荷分散技術を使用して分散ストレージ環境内でストレージ操作を実施するための例示的なフローの図を示す。
図3A】様々な実施形態による、ストレージ操作要求のための例示的なセグメントルーティングパケットを示す。
図3B】様々な実施形態による、パケットのIPv6ヘッダ内の宛先アドレスフィールドの例示的な構成を示す。
図3C】様々な実施形態による、パケットのIPv6ヘッダ内の宛先アドレスフィールドの別の例示的な構成を示す。
図4A】様々な実施形態による、対応するIPv6およびセグメントルーティングヘッダに基づくストレージ操作要求の例示的なフローを示す。
図4B】様々な実施形態による、ストレージ操作要求への応答の例示的なフローを示す。
図5A】様々な実施形態による、セグメントルーティングおよび負荷分散技術を使用して分散ストレージ環境内にデータおよび複製を格納するための例示的なフローの図を示す。
図5B】様々な実施形態による、セグメントルーティングスプレーポリシーを使用して分散ストレージ環境内にデータを格納するための例示的なフローの図を示す。
図6A】様々な実施形態による、コンテンツに割り当てられたアドレスに対応するセグメントルーティングセグメントを使用して、分散ストレージ環境内のコンテンツにデータ要求を直接送るための例示的なフローの図を示す。
図6B】様々な実施形態による、コンテンツに割り当てられたアドレスに対応するセグメントルーティングセグメントを使用して、コンテンツにデータ要求を直接送るための別の例示的なフローの図を示す。
図7】様々な実施形態による、セグメントルーティングを使用して、メタデータサーバプール内のメタデータサーバ間でクライアント要求を負荷分散するための例示的なフローを示す。
図8A】様々な実施形態による、セグメントルーティングおよび負荷分散を使用して分散ストレージ環境にデータを格納するための例示的な方法を示す。
図8B】様々な実施形態による、セグメントルーティングおよび負荷分散を使用して分散ストレージ環境内でデータを取り出すための例示的な方法を示す。
図8C】様々な実施形態による、セグメントルーティングおよび負荷分散を使用して、データ要求をデータに割り当てられたアドレスに直接送るための例示的な方法を示す。
図9】様々な実施形態による、例示的なネットワークデバイスを示す。
図10】様々な実施形態による、例示的なコンピューティングデバイスを示す。
【0007】
例示的な実施形態の説明
本開示の様々な実施形態について、以下で詳細に考察する。特定の実装形態について考察するが、これは例証を目的として行われることを理解されたい。関連技術の当業者は、本開示の趣旨および範囲から離れることなく、他の構成要素および構成を使用することができることを認識するであろう。
【0008】
概要
本開示の追加の特徴および利点は、以下の説明に記載され、一部は説明から明らかであるか、または本明細書に開示された原理の実践によって学ぶことができる。本開示の特徴および利点は、添付の特許請求の範囲で特に指摘されている機器および組み合わせによって実現および取得することができる。本開示のこれらおよび他の特徴は、以下の説明および添付の特許請求の範囲からより完全に明らかになるか、または本明細書に記載の原理の実践によって学ぶことができる。
【0009】
本明細書に開示されるのは、セグメントルーティング技術を使用して分散ストレージ操作の待ち時間を短縮するためのシステム、方法、およびコンピュータ可読媒体である。少なくとも1つの例によれば、セグメントルーティング技術を使用して分散ストレージ操作の待ち時間を短縮するための方法が提供される。本方法は、クライアントデバイスから、分散ストレージ環境(例えば、分散ストレージネットワーク)でデータ操作(例えば、データの読み取り、データの書き込みなど)を実施する意図を特定するメッセージ(例えば、パケットなどの電子メッセージ)を受信すること、および、データ操作を実施するために選択された複数のストレージノード候補を特定するセグメントルーティング(SR)リストをクライアントデバイスに送信することを含むことができる。例えば、場合によっては、分散ストレージ環境上のメタデータサーバは、クライアントデバイスから、分散ストレージ環境でデータを格納するか、または取り出すことを要求する電子メッセージを受信することができる。クライアントデバイスからのメッセージに応答して、メタデータサーバは、データを格納するか、または取り出すための分散ストレージ環境内のストレージノード候補を選択するか、または特定し、ストレージノード候補を特定するSRリストをクライアントデバイスに送信することができる。クライアントデバイスは、SRリストを使用して、セグメントルーティング(例えば、SRv6)を使用して、ストレージノード候補を介してデータ操作要求を送るか、または誘導することができる。
【0010】
本方法は、クライアントデバイスから受信されたデータ操作要求を、データ操作要求に関連付けられたセグメントルーティングヘッダ(SRH)に基づいて、SRリストによって定義されたパスを通って誘導することを含むことができる。例えば、クライアントデバイスは、ストレージノード候補を特定するSRリストを有するSRHを含むデータ操作要求パケットを送信することができる。SRHは、ストレージノード候補の中のストレージノードがデータ操作要求を受け入れるまで、ストレージノード候補を含むパスを通ってデータ操作要求パケットを誘導することができる。データ操作要求パケットは、SRリスト内の第1のストレージノード候補に送ることができ、SRリストは、データ操作要求パケットを受信すると、データ操作要求を受け入れるか、または拒否するかを判定する。第1のストレージノードがデータ操作要求を拒否する場合、データ操作要求パケットをSRリスト内の次のストレージノード候補に向けて転送する。同様に、次のストレージノード候補は、データ操作要求パケットを受信すると、データ操作要求を受け入れるか、または拒否するかを判定し、データ操作要求を拒否することを判定した場合、データ操作要求パケットをSRリスト内の次のストレージノード候補に転送する。データ操作要求パケットは、データ操作要求がストレージノード候補によって受け入れられるまで、SRリスト内のストレージノード候補のパスを通ってトラバースし続ける。各ストレージノード候補は、現在の帯域幅、現在の負荷、現在の容量、リソースの可用性など、ストレージノード候補での操作条件に基づいて、データ操作要求を受け入れるか、または拒否するかを判定できる。場合によっては、SRリスト内の最後のストレージノード候補は、データ操作要求が完全に拒否されるか、またはドロップされることを回避するために、要求を受け入れるように要求され得る。
【0011】
ストレージノードがデータ操作要求を受け入れるとき、本方法は、ストレージノードがクライアントデバイスからのデータ操作要求を受け入れたことを示すデータ操作要求への応答をクライアントデバイスに送信することをさらに含むことができる。ストレージノードがデータ操作要求を受け入れると、クライアントデバイスおよびストレージノードは接続を確立し、ストレージノードでデータを格納するか、または取り出すことができる。ここで、本方法は、データ操作要求を受け入れたストレージノードにデータを格納すること、またはストレージノードからデータを取り出すことを含むことができる。前述のように、ストレージノードはストレージノードでの操作条件に基づいてデータ操作要求を受け入れることができる。これは、データ操作要求がその特定の瞬間に適切な帯域幅および容量を有するストレージノードによって処理される可能性を高め、データ操作要求が低帯域幅または過負荷状態で処理される可能性を低下させることによって、ストレージの待ち時間を短縮するのに役立ち得る。
【0012】
別の例では、セグメントルーティング技術を使用して分散ストレージ操作の待ち時間を短縮するためのシステムが提供される。本システムは、1つ以上のプロセッサ、ならびに1つ以上のプロセッサによって実行されると、システムに、上述の例示的な方法を実施させる命令をその中に格納した少なくとも1つのコンピュータ可読記憶媒体を含み得る。例えば、命令は、1つ以上のプロセッサによって実行されると、システムに、クライアントデバイスから、分散ストレージ環境でデータ操作(例えば、読み取り操作、書き込み操作など)を実施する意図を特定するメッセージを受信することと、データ操作を実施するために選択された複数のストレージノード候補を特定するSRリストをクライアントデバイスに送信することと、クライアントデバイスから受信したデータ操作要求を、SRリストを含むことができ、かつ複数のストレージノード候補の中のストレージノードがデータ操作要求を受け入れるまで、パスを通ってデータ操作要求を誘導するように構成することができる、データ操作要求内のSRHに基づいて、SRリストを含むパス(すなわち、SRリスト内の複数のストレージノード候補を含むパス)を通って誘導することと、ストレージノードがクライアントデバイスからのデータ操作要求を受け入れたことを示す応答をクライアントデバイスに送信することと、データ操作要求を受け入れたストレージノードでデータ操作を実施する(例えば、ストレージノードにデータを格納する、ストレージノードからデータを取り出すなど)ことと、を行わせることができる。
【0013】
別の例では、セグメントルーティング技術を使用して分散ストレージ操作の待ち時間を短縮するための非一時的なコンピュータ可読記憶媒体が提供される。非一時的なコンピュータ可読記憶媒体は、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに前述の方法および/または動作を実施させる命令を格納することができる。例えば、命令は、1つ以上のプロセッサに、クライアントデバイスから、分散ストレージ環境でデータ操作を実施する意図を特定するメッセージを受信することと、データ操作に関して選択された複数のストレージノード候補を特定するSRリストをクライアントデバイスに送信することと、クライアントデバイスから受信したデータ操作要求を、SRリストを含むことができ、かつ複数のストレージノード候補の中のストレージノードがデータ操作要求を受け入れるまで、パスを通ってデータ操作要求を誘導するように構成することができる、データ操作要求内のSRHに基づいて、SRリストを含むパス(すなわち、SRリスト内のストレージノード候補を含むパス)を通って誘導することと、ストレージノードがクライアントデバイスからのデータ操作要求を受け入れたことを示す応答をクライアントデバイスに送信することと、データ操作要求を受け入れたストレージノードでデータ操作を実施する(例えば、ストレージノードにデータを格納する、ストレージノードからデータを取り出すなど)ことと、を行わせることができる。
【0014】
説明
開示された技術は、セグメントルーティング技術を使用して分散ストレージ操作の待ち時間を短縮するためのシステム、方法、およびコンピュータ可読媒体を伴う。本技術は、以下の開示において以下のように説明される。議論は、セグメントルーティングおよびインターネットプロトコルバージョン6(IPv6)を使用した負荷分散ストレージ操作の概要から始まる。次に、図1に示されるような例示的な分散ストレージ環境の説明、および図2図8Cに示されるようなセグメントルーティングおよび負荷分散技術を使用して分散ストレージ操作の待ち時間を短縮するための例示的な方法および技術の説明が続く。議論は、図9に示されるように例示的なネットワークデバイス、ならびに図10に示されるように、ストレージおよびコンピューティング操作を実施するのに好適な例示的なハードウェア構成要素を含む、例示的なコンピューティングデバイスアーキテクチャの説明で終了する。ここで、本開示は、セグメントルーティングおよびIPv6を使用したストレージ操作の負荷分散の概要に移る。
【0015】
本明細書の手法は、セグメントルーティング(SR)を利用して、要求を処理するためにメタデータサーバによって選択された複数のストレージノード候補に向けて接続または通信要求(例えば、データ読み取り、および書き込み要求)を誘導することができる。本明細書で説明するように、ストレージノード候補は、そのような要求を受信し、現在および将来の負荷、ストレージノード機能、リソースの可用性、パフォーマンス要件、および他の操作条件などの1つ以上の要因に基づいて要求を受け入れるか、または拒否することができる。要求は、ストレージノードが要求を受け入れるまで、パケットのSRヘッダ(SRH)内で特定されたストレージノード候補をトラバースする。
【0016】
これらの手法は、クライアントによってストレージノードに格納されたデータの複製を効率的に格納するために同様に実装することができる。例えば、ストレージ要求を受け入れてクライアントからのデータを格納するストレージノードは、SRを使用して、複製ストレージ要求を他のストレージノードまたはストレージノードのプールに向かって誘導することができる。複製ストレージ要求は、ストレージノードの1つ以上のプールからストレージノード候補を特定するSRリストを有するSRHを含むことができる。SRリスト、ストレージノード候補、およびストレージノードの1つ以上のプールは、分散ストレージ環境内のストレージノードに関する情報を格納するメタデータサーバによって特定することができるか、または選択することができる。SRHは、要求が格納されるある数の複製に対応し得るある数のストレージノード候補によって受け入れられるまで、ストレージノード候補を介して複製ストレージ要求を誘導することができる。ストレージノード候補は、そのような要求を受信し、前述の1つ以上の要因に基づいて要求を受け入れるか、または拒否することができる。ストレージノードは、要求を受け入れるそれらのストレージノード候補に複製を効率的に格納できる。
【0017】
例えば、クライアントデバイスが分散ストレージ環境でデータを格納するか、または読み取りたい場合、メタデータサーバ(または本明細書で説明するメタデータサーバのプール)にメッセージを送信でき、メタデータサーバは、クライアントデバイスに、データのストレージノード候補のリストを送信することができる。複数のストレージノード候補を使用すると、信頼性、パフォーマンス、および負荷分散の公平性を向上させることができる。クライアントデバイスは、メタデータサーバによって特定されたストレージノード候補に通信要求(例えば、データを読み取るまたは格納するために)を送信することができる。要求は、ストレージノード候補を特定するSRリスト、およびストレージノード候補を介してパケットを送るための順序を含むパケット内のSRHに基づくセグメントルーティングを使用して送ることができる。SRリスト内の第1のストレージノード候補は、要求を受信し、現在の負荷、将来の負荷、予測された負荷、リソース(例えば、帯域幅、ストレージ、コンピュートなど)可用性、ストレージノードの状態、パフォーマンス要件、予想される応答待ち時間、および/またはストレージノードでの任意の操作条件などの1つ以上の要因に基づいて要求を受け入れるか、または拒否するかを判定することができる。
【0018】
SRリスト内の残りのストレージノード候補は、第1のストレージノード候補が要求を受け入れることができない場合のバックアップストレージ候補として機能することができる。第1のストレージノード候補は要求を拒否した場合、SRリスト内の次のストレージノード候補にパケットを転送し、SRリストは、同様に要求を受け入れるか、または拒否するかを判定する。要求は、ストレージノード候補が要求を受け入れるまで、または要求がSRリスト内の最後のストレージノード候補に到達するまでSRリストをトラバースし続け、SRリストは要求を受け入れることを強制される場合がある。
【0019】
説明のために、ストレージ操作要求のパケットは、要求のために選択されたn個のストレージノード候補に対応するセグメント特定子(SID)を有するSRリストを有するSRHを含むことができる。IPv6ヘッダは、クライアントに関連付けられた送信元アドレス(SA)、第1のストレージノード候補に対応する宛先アドレス(DA)を含むことができ、SRHはSRリスト(SN3、SN2、SN1)を含み、SN1、SN2、およびSN3は、要求に対して選択されたストレージノード候補である。SRリストは、SRH内のセグメントのリストであり得、セグメントは、要求に対して選択されたストレージノード候補を特定し、それらのストレージノード候補に要求を誘導するために使用することができる。ストレージノードの候補者は、要求を受信したときに要求を受け入れるか、または拒否するかを判定することができる。このように、IPv6およびセグメントルーティング技術を使用して、ストレージ操作を負荷分散し、分散ストレージ環境内のストレージ操作の待ち時間を短縮することができる。IPv6およびセグメントルーティングの概念の詳細については、以下で提供される。
【0020】
IPv6環境
IPv6環境では、ストレージノードまたはメタデータサーバなどのノードには、IPv6アドレスまたはプレフィックスを介して到達することができる。IPv6パケットには、パケットの送信元セグメントおよび宛先セグメントを特定するIPv6ヘッダを含むことができ、IPv6ヘッダ内の1つ以上のセグメントによって適用される関数を含むことができる。場合によっては、ノードに格納されたデータにIPv6またはプレフィックスを割り振ることもでき、これを使用して、そのデータを特定し、かつアクセスすることができる。例えば、データのブロックを格納する1つ以上のノードにIPv6プレフィックスを割り振ることができ、データのブロックの各インスタンスにIPv6プレフィックス内のIPv6アドレスを割り振ることができる。データのブロックのIPv6アドレスを使用して、データのブロックにアクセスすることができる。このスキームにより、データのIPv6アドレスにアドレス指定されたデータの要求が、データを含み、IPv6プレフィックスに関連付けられた適切なノード(複数可)に送られるようにすることができる。
【0021】
セグメントルーティング(SR)
SRは、セグメントのリストまたはSRリストによって定義された、事前定義されたパスをパケットがたどることを可能にするソースルーティングパラダイムである。本明細書における手法は、SRおよびIPv6技術を活用して、正確かつ効率的なストレージ操作の負荷分散および待ち時間の短縮を実現する。
【0022】
SRおよびIPv6は、IPv6ヘッダおよびSRHをパケットに実装することで一緒に活用することができる。例えば、場合によっては、IPv6拡張ヘッダを実装して、SR用のセグメントのリスト、およびパケットの最終宛先が到達するまで処理される残りのセグメントの数を示すカウンタであるSegmentsLeftを特定することができる。SRパケットでは、IPv6宛先アドレスをSRリスト内の次のセグメントのアドレスで上書きすることができる。このようにして、パケットは、次の目的のSRセグメントまたはホップに到達するまで、SR非認識ルータまたはノードを横切ることができる。SRパケットを受信すると、SR認識ルータまたはノードは宛先アドレスをSRリスト内の次のセグメントのアドレスに設定し、Segments Left(SL)カウンタを減らす。パケットが最後のSRホップ、またはSRリスト内のセグメントに到達すると、パケットの最終宛先がIPv6宛先アドレスフィールドにコピーされる。ヘッダ内のフラグの値に応じて、SRHは、宛先がvanilla IPv6パケットを受信するように最後のSRホップまたはセグメントにより削除され得る。
【0023】
本明細書におけるセグメントルーティングおよびIPv6の概念は、ストレージ操作の負荷分散および待ち時間の短縮を実施するために実装することができる。例えば、クライアントがストレージノードとの接続を確立してストレージ操作(例えば、読み取りまたは書き込み)を実施する場合、クライアントはメタデータサーバと通信して、ストレージ操作のストレージノード候補のリストを取得することができる。メタデータサーバは、ストレージノードに関する情報を分散ストレージ環境に格納して、クライアントからのこのような要求に応答することができる。したがって、メタデータサーバは、クライアントから要求を受信すると、ストレージノード候補のセットを選択し、ストレージノード候補のリストをクライアントに提供することができる。次に、クライアントはパケットをストレージノード候補に送信することができ、ストレージノード候補は、メタデータサーバによって選択されたストレージノード候補のリストを特定するSRリストを含むパケットに挿入されたSRHに基づいて送ることができる。SRHは、パケットをストレージノード候補を介して連続して誘導することを可能にする。
【0024】
パケットをSRリスト内のストレージノード候補に単に転送するのではなく、パケットが第1のストレージノード候補に到達すると、ストレージノード候補は、接続を受け入れるか、または接続を拒否するかをローカルで判定し、パケットをSRリスト内の次のストレージに転送することができる。場合によっては、ストレージノード候補は、ストレージノード候補のポリシーおよび/またはローカル操作条件に基づいてそのような判定を行うことができる。ストレージノード候補が接続を拒否した場合、SRリスト内の次のセグメント(すなわち、次のストレージノード候補)にパケットを転送することができ、候補が接続を受け入れるか、またはパケットがSRリスト内の最後のセグメントに到達するまで、パケットはSRリスト内のストレージノード候補をトラバースすることができる。すべての要求が確実に満たされるようにするために、SRリスト内の最後のストレージノード候補が接続を受け入れることを要求される場合がある。接続を受け入れると、受け入れるストレージノード候補はクライアントとの接続を確立し、クライアントによって要求されたストレージ操作を実施することができる。
【0025】
この機構により、利用可能である、または接続を受け入れることができるストレージノード候補が見つかるまで、接続要求をいくつかのストレージノード候補に透過的に配信することが可能である。接続を受け入れるか、または拒否するかの判定は、分散型の方法で、個々のストレージノード候補によってローカルで行うことができる。この機構により、操作認識が分散ストレージ環境に直接もたらされ、分散ストレージ環境全体の負荷分散およびストレージ操作のパフォーマンスが向上する。
【0026】
クライアントによってストレージノードに格納されたデータの複製は、本明細書におけるセグメントルーティング技術を使用して同様に送り、かつ負荷分散することができる。例えば、ストレージノードは、データのブロックを格納し、その後、データのブロックの複製を他のストレージノードに分散するために、1つ以上のストレージノード候補にパケットを送信することができる。パケットは、複製のストレージノード候補を特定するSRリストを有するSRHを含むことができる。ストレージノード候補は、いくつかの例では、複製用に選択されたストレージノードの1つ以上のプールの一部である可能性がある。SRHは、SRリスト内のセグメントを介してパケットを誘導することができるため、複製用に選択されたストレージノード候補がパケットを受信ですることがきる。パケットを受信すると、各ストレージノード候補は、複製を格納する要求を受け入れるか、または要求を拒否してSRリスト内の次のストレージノード候補に転送するかを判定することができる。したがって、ストレージノード候補は、要求を受け入れ、それぞれの操作条件に基づいて複製を格納するかどうかについて、ローカルで判定を下すことができる。
【0027】
ここで、本開示は、いくつかの例による、分散ストレージ環境102の例示的なアーキテクチャ100を示す図1に移る。この例では、分散ストレージ環境102は、分散ストレージ環境102にデータを格納するためのストレージノード候補132~136、142~146、152~156を含む。データは、例えば、ファイル、オブジェクト、データブロックもしくはチャンク、コンテンツアイテム、生データ、データ複製、および/または任意の他のタイプのデーもしくは情報アイテムを含むことができるが、これらに限定されない。
【0028】
ストレージノード候補132~136、142~146、152~156は、分散ストレージ環境102のハードウェアおよび/または仮想ストレージインフラストラクチャを表すことができる。ストレージノード候補132~136、142~146、152~156は、1つ以上の物理ストレージサーバ、1つ以上の仮想ストレージサーバ(例えば、仮想マシン(VM)、ソフトウェアコンテナなど)、1つ以上の物理ストレージサーバおよび/もしくは論理ストレージ構成要素(例えば、ストレージドライブ、論理ボリューム、ストレージパーティション、ストレージアレイなど)、ならびに/または任意の他の物理的ならびに/または仮想/論理ストレージ要素を含むことができる。ストレージノード候補132~136、142~146、152~156は、複数のストレージ要素をまたぐか、またはそれらをまたいで分散することができ、分散ストレージインフラストラクチャを提供することができる。場合によっては、ストレージノードは複数の物理または仮想ストレージ要素をまたぐことができる。例えば、ストレージノードは、2つ以上の物理サーバおよび/またはストレージデバイスから作成された仮想ストレージデバイス、コンテナ、または場所を表すことができる。
【0029】
ストレージノード候補132~136、142~146、152~156は、ストレージノードプール130、140、150にグループ化することができる。例えば、ストレージノード候補132~136は、ストレージノードプール130にグループ化することができ、ストレージノード候補142~146は、ストレージノードプール140にグループ化することができ、ストレージノード候補152~156は、ストレージノードプール150にグループ化することができる。ストレージノード候補132~136、142~146、152~156は、1つ以上の共通の特性などの1つ以上の要因に基づいて、ストレージノードプール130、140、150にグループ化することができる。例えば、ストレージノード候補132~136、142~146、152~156は、ストレージタイプ、データのタイプ(例えば、格納するデータのタイプ)、基盤となるストレージプラットフォーム、物理的または仮想的の場所、容量、構成設定またはアーキテクチャ、ストレージの役割、優先順位、ネットワークセグメント(IPプレフィックスまたはサブネットなど)、共有リソース、操作条件などによって、ストレージノードプール130、140、150にグループ化することができる。
【0030】
場合によっては、ストレージノードプール(例えば、130、140、および/または150)を、単一のストレージノードまたは分散ストレージとして機能するように構成することができる。他の場合には、ストレージノードプール(例えば、130、140、および/または150)は、別々におよび/または個別に操作することができるストレージノードの集合を単に表すことができる。例えば、ストレージノードプール130は、データの一部を格納するか、またはデータ要求を処理するための一次ストレージノードプールとして選択されたストレージノードプールを表すことができ、ストレージノードプール140および150は、バックアップストレージノードプール(例えば、一次ストレージノードプールでエラーまたは障害が発生した場合に使用するため、負荷分散で使用するためなど)として機能するように選択されたストレージノードプール、またはデータの一部のバックアップもしくは複製を格納するため、またはデータの一部のバックアップもしくは複製を処理するための二次ストレージノードプールデータを表すことができる。
【0031】
場合によっては、ストレージノードプール130、140、150は、ストレージノードプール130、140、150内のストレージノードが動的に、または時間の経過とともに変化することができるように動的であり得る。例えば、ストレージノードプール130は、ストレージ操作または要求を処理するためにメタデータサーバ(例えば、112、114、116、122、124、および/または126)によって選択されたストレージノードのグループを表すことができる。説明のために、メタデータサーバ112は、ストレージ操作またはクライアント104からの要求を処理するための候補としてストレージノード候補132、134、136を選択し、ストレージノード候補132、134、136をストレージノードプール130によって表される候補のグループにグループ化してもよい。メタデータサーバ112は、前述のように、1つ以上の要因または共有特性に基づいて、ストレージノードプール130のストレージノード候補132、134、136を選択してもよい。例えば、この場合、メタデータサーバ112は、ストレージノード候補132、134、136がすべてクライアント104によって要求されているデータの一部を格納するので、ストレージノードプール130のためにストレージノード候補132、134、136を選択してもよい。
【0032】
しかしながら、将来のストレージ操作または要求のために、メタデータサーバ112は、ストレージノード候補の異なるセットを選択して、ストレージノードプール130を形成することができる。例えば、メタデータサーバ112は、(例えば、ストレージノード候補142~146および/または152~156のうちの1つ以上を追加することによって)ストレージノードプール130内のストレージノードの数を増加させるか、(例えば、ストレージノード候補132、134、および136のうちの1つ以上を削除することによって)ストレージノードプール130内のストレージノードの数を減少させるか、またはストレージノードプール130のために完全に異なるストレージノードのセットを選択することができる。
【0033】
メタデータサーバ112、114、116、122、124、126は、ストレージノード候補132、134、136、142、144、146、152、154、156およびストレージノードプール130、140、150に関する情報を分散ストレージ環境102内に格納し、かつ/または分散ストレージ環境102内でアクティビティを追跡することができる。例えば、メタデータサーバ112、114、116、122、124、126は、分散ストレージ環境102内のどこにデータが格納されているか、どこに特定のストレージノードが配置されているか、どのストレージノードまたはストレージノードプールがストレージ操作もしくは要求を処理しているか、またはストレージ操作または要求に対して選択されているか、分散ストレージ環境102内のストレージノード、ストレージノードプール、および/またはデータのアドレス(例えば、IPv6アドレス、IPv6プレフィックスなど)、ストレージノードの容量または可用性、ストレージノードに関連付けられたデータまたはストレージのタイプ、ならびに/または分散ストレージ環境102内のデータ、ストレージノード、およびストレージノードプールに関する任意の他の情報を追跡することができる。場合によっては、異なるメタデータサーバが、分散ストレージ環境102内の異なる情報またはアクティビティを格納するか、または追跡することができる。例えば、メタデータサーバのあるセットは、ストレージノードおよび/またはデータの特定のセットに関する情報を格納し、かつ追跡することができ、メタデータサーバの別のセットは、ストレージノードおよび/またはデータの異なるセットに関する情報を格納し、かつ追跡することができる。これは、例えば、メタデータサーバ112、114、116、122、124、126上のストレージおよび/または計算の負担を軽減し、分散ストレージ環境102などの包括的な情報を保持するために必要なメタデータサーバの数を削減するために行うことができる。
【0034】
メタデータサーバ112、114、116、122、124、126は、この情報を使用して、分散ストレージ環境102内のストレージ操作もしくは要求のためのストレージノード候補および/またはストレージノードプールを特定するか、または選択することができる。例えば、メタデータサーバ112、114、116、122、124、126は、この情報を使用して、どのストレージノード(例えば、132、134、136、142、144、146、152、154、156)がデータの特定の一部を格納するかを特定し、かつそのようなノードを選択して、そのデータの特定の一部の要求を処理することができる。別の例として、メタデータサーバ112、114、116、122、124、126は、この情報を使用して、データの一部および1つ以上の複製を格納するためのストレージノード候補および/またはストレージノードプールを特定し、かつ選択することができる。説明のために、メタデータサーバ112、114、116、122、124、126は、この情報を使用して、ストレージ要求に関連付けられたデータを格納するための一次ストレージノードプール(例えば、130)、およびデータの複製を格納するための二次ストレージノードプール(例えば、140および/または150)を選択することができる。
【0035】
いくつかの例では、クライアント104、106、108が分散ストレージ環境102からデータを格納したいか、または取り出したいとき、それらはメタデータサーバ112、114、116、122、124、126と通信して、データを格納するか、または取り出すための候補ストレージノードのリストを取得することができる。メタデータサーバ112、114、116、122、124、126は、要求された操作のための候補ストレージノードのセットを特定するか、または選択し、選択された候補ストレージノードのリストをクライアント104、106、108の各々に提供することができる。場合によっては、リストは、選択された候補ストレージノードに対応するセグメントを有するSRリストである可能性がある。他の場合には、リストは、クライアント104、106、108がSRリストを生成するために使用することができるリストであり得る。
【0036】
クライアント104、106、108は、受信したリストを使用して、それぞれの接続を確立し、リストからの特定のストレージノードで要求された操作を完了することができる。クライアント104、106、108は、候補ストレージノードが要求を受け入れるまで、リスト内の候補ストレージノードを通って連続的に移動するように構成されたパケットを送信することによって、接続を確立し、それぞれのストレージノードで要求された操作を実施するように要求することができる。パケットは、選択された候補ストレージノードに対応するセグメントを含むSRリストを有するSRHを含むことができる。SRリストは、メタデータサーバ112、114、116、122、124、126によって提供されたリスト、またはメタデータサーバ112、114、116、122、124、126によって提供されたリストに基づいて作成されたSRリストであり得る。パケット内のSRHは、SR認識ノードまたはデバイスが、SRリストから候補ストレージノードを介してパケットを誘導することを可能にし得る。
【0037】
SRリスト内の候補ストレージノードがパケットを受信すると、例えば、候補ストレージノードでの操作条件(例えば、帯域幅、負荷、リソースの可用性、容量など)に基づいて、要求を受け入れるか、または拒否するかをローカルで判定することができる。候補ストレージノードが要求を受け入れると、要求元のクライアントは、要求されたストレージ操作(例えば、データの格納、データの取り出しなど)のためにそのストレージノードとの接続を確立できる。(例えば、ストレージノードの操作条件のために)候補ストレージノードが要求を拒否した場合、候補ストレージノードはSRHを使用して、SRリスト内の次のホップまたはセグメント(例えば、次の候補ストレージノード)にパケットを転送することができる。パケットを受信する各ストレージノードは、同様にパケットを受け入れるか、または拒否するかを判定し、そのストレージノードが要求を受け入れたか、または拒否したかによって、要求元のクライアントとの接続を確立するか、またはSRリスト内の次のホップまたはセグメント(例えば、次の候補ストレージノード)にパケットを転送することができる。
【0038】
場合によっては、メタデータサーバ112、114、116、122、124、126は、メタデータサーバプール110、120にグループ化することができ、これを使用して、クライアント104、106、108からの要求を負荷分散することができる。例えば、メタデータサーバ112、114、および116は、メタデータサーバプール110にグループ化することができ、メタデータサーバ122、124、および126は、メタデータサーバプール120にグループ化することができる。メタデータサーバ112、114、116、122、124、126のグループ化は、メタデータサーバプール110、120を作成するために使用することができる。メタデータサーバプール110、120は、共有メタデータサーバ属性、メタデータサーバ条件、負荷分散要因、予想されたメタデータサーバ負荷、メタデータサーバ112、114、116、122、124、126によって格納され、かつ/または追跡された情報などの1つ以上の要因に基づいて作成することができる。例えば、メタデータサーバプール110は、ストレージノード、ストレージノードプール、および/またはデータの特定のセットに関する情報を有するメタデータサーバを含むように構成することができ、メタデータサーバプール120は、異なるストレージノードのセット、ストレージノードプール、および/またはデータに関する情報を有するメタデータサーバを含むように構成することができる。別の例では、メタデータサーバプール110、120は、各々がランダムに選択されたある数のメタデータサーバを含むように構成することができる。
【0039】
場合によっては、メタデータサーバプール110、120は静的であり得る。例えば、メタデータサーバプール110、120は、同じそれぞれのグループまたはいくつかのメタデータサーバを含むように構成することができる。他の場合には、メタデータサーバプール110、120は動的であり得る。例えば、メタデータサーバプール110、120内のメタデータサーバの数および/またはアイデンティティは、時間、ストレージ操作要求、メタデータサーバの操作条件(例えば、帯域幅、可用性、負荷、待ち時間など)、ストレージ需要、トラフィック変動、パフォーマンス設定、優先度、パフォーマンス統計、ネットワークパターン、ストレージノードの変更、データストレージの調整、環境の変更などの1つ以上の要因に基づいて変化し得る。説明のために、いくつかの例では、メタデータサーバプール110は、メタデータサーバ112、114、116を一定期間、または1つ以上の特定のストレージ操作要求を処理するために実装し、その後、より多くの、より少ない、または異なるメタデータサーバを異なる期間、異なるストレージ操作要求のセットに無期限に、または異なるプール調整トリガもしくは基準が検出されるまで、実装することができる。
【0040】
クライアント104、106、108が分散ストレージ環境102からデータを格納したいか、または取り出したいとき、それらは1つ以上のメタデータサーバプール(例えば、110および/または120)にメッセージを送信して、データを格納するか、または取り出すための候補ストレージノードのリストを取得することができる。例えば、クライアント104は、メタデータサーバプール110にメッセージを送信して、データを格納するか、または取得するための候補ストレージノードのリストを取得することができる。メッセージは、メタデータサーバプール110内のメタデータサーバ112、114、116に送信することができ、メタデータサーバプール110内のメタデータサーバは、操作条件に基づいて要求を受け入れ、候補ストレージノードのリストで応答することができる。場合によっては、クライアント104、106、108からメタデータサーバプール110、120へのパケットは、候補ストレージノードのストレージ操作要求を送り、かつ負荷分散するための上記の手法と同様のセグメントルーティング負荷分散手法を使用して処理することができる。
【0041】
例えば、クライアント104からメタデータサーバプール110への要求は、メタデータサーバプール110内のメタデータサーバ112、114、116を特定するSRリストを含むSRHを有するパケットを含むことができる。SRHに基づいて、パケットは、SRリスト内のメタデータサーバが要求を受け入れるまで、SRリストによって特定されたメタデータサーバ112、114、116を通って連続的に移動することができる。SRリスト内のメタデータサーバがパケットを受信すると、メタデータサーバでの操作条件(帯域幅、負荷、リソースの可用性、容量など)に基づいて、要求を受け入れるか、または拒否するかをローカルで判定することができる。メタデータサーバは要求を受け入れる場合、要求されたストレージ操作に関して選択された候補ストレージノードのリストでクライアント104に応答することができる。(例えば、メタデータサーバの操作条件のために)メタデータサーバが要求を拒否した場合、メタデータサーバはSRHを使用して、SRリスト内の次のホップまたはセグメント(例えば、次のメタデータサーバ)にパケットを転送することができる。パケットを受信する各メタデータサーバは、同様にパケットを受け入れるか、または拒否するかを判定し、そのメタデータサーバが要求を受け入れたか、または拒否したかによって、クライアント104に応答するか、またはSRリスト内の次のホップまたはセグメント(例えば、次のメタデータサーバ)にパケットを転送することができる。このようにして、クライアント104は、候補ストレージノードのリストを取得し、本明細書で説明するように、候補ストレージノードのうちの1つでデータを格納するか、または取り出すことができる。
【0042】
場合によっては、クライアント要求の候補ストレージノードを選択するときに、メタデータサーバ(112、114、116、122、124、126)は要求の単一のストレージノードプール(例えば、130)または複数のストレージノードプール(例えば、130、140、および/または150)を選択することができる。例えば、メタデータサーバ112が、分散ストレージ環境102にデータを格納する意図を示すクライアント104からの要求を受信し、かつ受け入れたと仮定する。次に、メタデータサーバ112は、データを格納する要求のための一次ストレージノードプールとしてストレージノードプール130を、およびデータのための二次ストレージノードプールとしてストレージノードプール140ならびに150を選択することができる。データの複製を格納するために、二次ストレージノードプールを選択することができる。メタデータサーバ112は、ストレージ要求を受け入れるストレージノードプール130からのクライアント104および/またはストレージノードに、ストレージノードプール140内の候補ストレージノードのリストおよびストレージノードプール150内の候補ストレージノードのリストを提供することができる。
【0043】
ストレージ要求を受け入れるストレージノードプール130からのストレージノードは、ストレージノードプール140および150からの候補ストレージノードのリストを使用して、ストレージノードプール140および150に複製を格納することができる。例えば、ストレージノード候補134がクライアント104からのストレージ要求を受け入れ、クライアント104から受信したデータを格納すると仮定する。ストレージノード候補134は、ストレージノードプール140内のストレージノード候補142、144、146を特定するSRリストを有するSRHを含むストレージノードプール140にパケットを、およびストレージノードプール150内のストレージノード候補152、154、156を特定するSRリストを有するSRHを含むストレージノードプール150にパケットを送信することができる。パケット内のSRHは、パケットに関連付けられたそれぞれのストレージノードプール内のストレージノードを介してパケットを連続的に誘導することができる(例えば、1つのパケット用のストレージノードプール140および他のパケット用のストレージノードプール150)。ストレージノード候補134からパケットを受信する各ストレージノードは、その操作条件に基づいて複製を格納することを受け入れるか、または拒否することができる。ストレージノードは要求を受け入れると、ストレージノード候補134から複製を取得して格納することができる。ストアノードが要求を拒否する場合、SRリスト内の次のホップまたはセグメント(例えば、SRリスト内の次のストレージノード)にパケットを転送することができる。このようにして、ストレージノード候補134は、複製を二次ストレージノードプール(例えば、140および150)に効率的に伝播することができる。
【0044】
場合によっては、メタデータサーバ112は、ストレージノードプール130からの候補ストレージノードのリストとともに、ストレージノードプール140および150からの候補ストレージノードのリストをクライアント104に提供することができる。クライアント104は、ストレージノードプール140および150からの候補ストレージノードのリストを使用して、複製ストレージ要求をどこに送信するかをストレージノード候補134に通知することができる。次に、ストレージノード候補134は、リストを使用して、前述のように、ストレージノードプール140および150に複製を格納することができる。
【0045】
さらに、場合によっては、クライアント104は、ストレージノードプール130、140、および150からの候補ストレージノードのリストを使用して、それらのストレージノードとのストレージ操作を実施するために、複数のストレージノードとの並行接続を確立することができる。例えば、クライアント104は、SRスプレーポリシーまたは操作を使用して、ストレージノードプール130、140、および150からの候補ストレージノードのリストに対応する複数のSRリストにパケットを複製することができる。例えば、クライアント104は、メタデータサーバ112から、ストレージノードプール130、140、および150のリストを受信することができる。クライアント104は、リストを使用して、パケットのコピーを、ストレージノードプール130内のストレージノード候補132、134、136を含む第1のSRリスト、ストレージノードプール140内のストレージノード候補142、144、146を含む第2のSRリスト、およびストレージノードプール150内のストレージノード候補152、154、156を含む第3のSRリストに送信することができる。パケットのコピーおよび前述の負荷分散手法に基づいて、クライアント104は接続を確立し、ストレージノードプール130、140、および150からのストレージノードとのストレージ操作を実施することができる。クライアント104は、そのような接続を並行して確立し、確立された接続を使用して、クライアント104からのストレージ要求を受け入れたストレージノードプール130、140、および150からのそれらのストレージノードにデータのコピーを格納することができる。
【0046】
他の例では、ストレージノード候補134は、ストレージノードプール140および150からの候補ストレージノードのリストを使用して、2つ以上のストレージノードとの並行接続を確立し、それらのストレージノードに複製を格納することができる。例えば、ストレージノード候補134は、SRスプレーポリシーまたは操作を使用して、ストレージノードプール140および150からの候補ストレージノードのリストに対応する複数のSRリストにパケットを複製することができる。説明のために、ストレージノード候補134は、メタデータサーバ112またはクライアント104からストレージノードプール140および150のリストを取得することができる。ストレージノード候補134は、リストを使用して、パケットのコピーを、ストレージノードプール140内のストレージノード候補142、144、146を含む第1のSRリスト、およびストレージノードプール150内のストレージノード候補152、154、156を含む第2のSRリストに送信することができる。パケットのコピーおよび前述の負荷分散手法に基づいて、ストレージノード候補134は接続を確立し、ストレージノードプール140、および150からのストレージノードとの複製ストレージ操作を実施することができる。ストレージノード候補134は、そのような接続を並行して確立し、確立された接続を使用して、ストレージノード候補134からの要求を受け入れたストレージノードプール140および150からのそれらのストレージノードに複製を格納することができる。
【0047】
図2は、セグメントルーティングおよび負荷分散技術を使用して分散ストレージ環境102内でストレージ操作を実施するための例示的なフロー200の図を示す。この例では、クライアント104は、要求202をメタデータサーバ112に送信する。要求202は、クライアント104が分散ストレージ環境102でデータを取り出すか、または格納することを意図していることを示すことができる。メタデータサーバ112は、要求202を受信し、ストレージ操作の候補ノードとしてストレージノード候補132、134、136を選択する。メタデータサーバ112は、ストレージノード候補132、134、136を特定するSRリスト204で要求202に応答する。SRリスト204は、セグメントルーティングパケットの第1のセグメントとしてストレージノード候補132、第2のセグメントとしてストレージノード候補134、および第3のセグメントとしてストレージノード候補136を特定することができる。
【0048】
クライアント104は、SRリスト204を受信し、要求206をストレージノード候補132、134、136に送信することができる。要求206は、クライアント104が特定のデータを格納するか、または取り出すための接続を確立することを望んでいることを示すことができる。要求206は、ストレージノード候補132、134、136をパケットのセグメントルーティングセグメントとして特定するSRリスト204を含むSRHに基づいて、ストレージノード候補132、134、136に送ることができる。要求206を受信する各SR認識または対応ノードまたはルータは、SRHおよびSRリスト204を使用して、パケットをストレージノード候補132、134、136に向かって誘導することができる。
【0049】
ストレージノード候補132は、SRリスト204内の第1のセグメントであるため、要求206を受信する第1のストレージノードになる。要求206を受信すると、ストレージノード候補132は、その操作条件(例えば、帯域幅、負荷、容量、リソースの可用性、ステータスなど)に基づいて、要求206を受け入れるか、または拒否するかを判定することができる。この例では、ストレージノード候補132は、要求206を拒否する208。要求206を拒否した後、ストレージノード候補132は、要求206をSRリスト204内の次のセグメント(この例ではストレージノード候補134)に転送することができる。ストレージノード候補134は、同様に、要求206を受け入れるか、または拒否するかを判定することができる。この例では、ストレージノード候補134は、要求206を拒否し(210)、要求206を、SRリスト204内の最後のセグメントであるストレージノード候補136に転送する。
【0050】
ストレージノード候補136は、要求206を受信し、要求206を受け入れる(212)。ストレージノード候補136は、その操作条件に基づいて要求206を受け入れることができる。例えば、ストレージノード候補136は、ストレージノード候補136が十分な(例えば、閾値内、負荷またはパフォーマンス要件内など)容量、帯域幅、リソース可用性を有するか、または他の方法で、制限された遅延で、もしくは閾値パフォーマンス内で要求206を処理することができるという判定に基づいて、要求206を受け入れることができる。場合によっては、SRリスト内の最後のセグメントが、受信した要求を受け入れるように強制され、そのような要求が完全に拒否されることを回避することができる。この例では、ストレージノード候補136はSRリスト204内の最後のセグメントであるため、その操作条件にかかわらず、要求206を受け入れるように強制され得る。
【0051】
ストレージノード候補136は要求206を受け入れると、ストレージノード候補136が要求206を受け入れたことを示す応答214をクライアント104に送信することができる。応答214に基づいて、クライアント104は、ストレージノード候補136との接続を確立することができ、クライアント104の意図に応じて、ストレージノード候補136に要求206に関連付けられたデータを格納するか、または取り出すことができる。クライアント104およびストレージノード候補136が接続を確立すると、要求206に関連付けられた後続の通信は、クライアント104とストレージノード候補136との間で直接送信することができる。すなわち、そのような通信は、ストレージノード候補132および134を介して送られる必要はない。
【0052】
図3Aは、要求206に対する例示的なSRv6パケット300を示す。SRv6パケット300は、ペイロード302、IPv6ヘッダ304、およびSRH306を含む。SRH306は、セグメントフィールド306A内にSRリスト204を含むことができる。SRリスト204は、要求206の候補としてメタデータサーバ112によって選択されたストレージノード候補132(SN1)、134(SN2)、および136(SN3)を含む、SRv6パケット300を送るためのセグメントのリストを含む。場合によっては、SRリスト204はまた、図3Bを参照して以下でさらに説明するように、各セグメント用のそれぞれの関数を含むことができる。
【0053】
SRH306内のSRリスト204をSR対応または認識ノードまたはルータによって使用して、SRv6パケット300をSRリスト204内の宛先ストレージノード(例えば、132、134、136)に誘導することができる。SRリスト204は、SRv6パケット300のパスに沿ったSRセグメント(例えば、SR対応ノード)を特定する。各SR対応ノードは、ノードでインスタンス化されたSRセグメントのリストを維持することができる。SR対応ノードは、SRセグメントのリストを使用して、パケットをSRリスト204内の次のセグメントに送ることができる。
【0054】
セグメントフィールド306Aはまた、アクティブなセグメントを特定するSegmentsLeft(SL)カウンタとして知られるカウンタを含むことができる。カウンタの値は、SRv6パケット300がネットワークを通って移動するときに、SR対応ノードによって受信されるたびに1ずつ減少する。
【0055】
IPv6ヘッダ304は、送信元アドレスフィールド310および宛先アドレスフィールド308を含むことができる。送信元アドレスフィールド310は、SRv6パケット300の送信元を特定することができ、送信元は、この例では、クライアント104である。送信元アドレスフィールド310は、SRv6パケット300の元の送信元のネットワークアドレス、SRv6パケット300の戻り宛先、および/またはSRv6パケット300の現在の送信元もしくは送信者を含むことができる。ソースフィールド310はまた、以下でさらに説明するように送信元フィールド310内で特定されたノードによって実装されるコマンドまたは関数を含むことができる。
【0056】
宛先アドレスフィールド308は、SRリスト204から次のセグメントまたはノードを特定することができる。この例では、宛先アドレスフィールド308は、SRリスト204内の第1の宛先ノードであるストレージノード候補132(SN1)を特定する。宛先アドレスフィールド308は、SRv6パケット300を次の宛先に誘導するために使用することができる。IPv6ヘッダ304内の宛先アドレスフィールド308は、SRv6パケット300がSR非認識ノードをトラバースする場合でも、SRv6パケット300を送ることを可能にすることができる。
【0057】
宛先アドレスフィールド308は、特定されたノードまたはセグメントのインターネットプロトコル(IP)アドレスまたはプレフィックスを含むことができる。例えば、宛先アドレスフィールド308は、ストレージノード候補132(SN1)のIPv6アドレスまたはプレフィックスを含むことができる。これは、SRv6パケット300が、SRv6パケット300の第1の宛先として、そのノードまたはセグメントに送信されることを確実にし得る。宛先アドレスフィールド308内のストレージノード候補132(SN1)は、SRv6パケット300を受信して処理した後、SRv6パケット300をSRリスト204内の次のセグメント(この例ではストレージノード候補134(SN2))に転送することができる。パケットを転送するとき、ストレージノード候補132(SN1)は、IPv6ヘッダ304上で宛先アドレスフィールド308を上書きして、ストレージノード候補134(SN2)を宛先として特定し、SRv6パケット300がSR非認識ノードをトラバースする場合でも、SRv6パケット300がストレージノード候補134(SN2)に送られることを確実にし得る。したがって、ストレージノード候補134(SN2)は、宛先アドレスフィールド308およびSRリスト204に基づいてSRv6パケット300を受信することができる。このようにして、SRH306内のSRリスト204、およびIPv6ヘッダ304内の宛先アドレスフィールド308を使用して、SRv6パケット300をSRリスト204内の宛先ノードにプッシュすることができる。
【0058】
さらに説明されるように、SRリスト204および/または宛先アドレスフィールド308は、関連付けられたノードまたはセグメントによって実装される関数またはコマンド(以下、「SR関数」)を含むことができる。例えば、宛先アドレスフィールド308は、ストレージノード候補132(SN1)を特定し、例えば、接続関数など、ストレージノード候補132(SN1)によって適用される関数を含むことができる。宛先アドレスフィールド308は、パケットの次の宛先、送信元または戻りノード、およびそのようなノードまたはセグメントのための任意のコマンドまたは関数を含む、SRv6パケット300の状態を含むことができる。
【0059】
同様に、SRリスト204は、SRリスト204内のセグメントのためのコマンドまたは関数を含むことができる。例えば、SRリスト204は、セグメントの接続関数、SRリスト204内の最後のセグメントの強制接続関数、1つ以上のセグメント(例えば、リソース特定子、フロー特定子など)の1つ以上のパラメータ、状態情報などを含むことができる。
【0060】
SR関数は、ノードにより取られるアクションを、SRH306および/またはIPv6ヘッダ304内で直接コード化することができる。SR関数は、SR対応ノードによってローカルで実行される。例示的なSR関数は、End関数(すなわち、エンドポイント関数)、End.X関数(すなわち、レイヤ3クロスコネクトを有するエンドポイント関数)、End.T関数(すなわち、特定のIPv6テーブルルックアップを有するエンドポイント関数)、End.S関数(すなわち、テーブルT内のターゲットを取り出すエンドポイント)、End.B6関数(すなわち、SRv6ポリシーにバインドされたエンドポイント)などが含まれるが、これらに限定されない。例えば、s::cjを含むSRヘッダ(306)内では、s::cjはノードsへのパスおよび隣接jへのx接続関数(関数c)を示す。
【0061】
場合によっては、ストレージノード(例えば、132、134、136、142、144、146、152、154、156)、ストレージノードプール(例えば、130、140、150)、メタデータサーバ(例えば、112、114、116、122、124、126)、および/または分散ストレージ環境102内のメタデータサーバプール(例えば、110、120)には、全体のIPv6プレフィックスを割り振ることができる。さらに、プレフィックス内の下位バイトを使用して、SR関数を指定することができる。場合によっては、SR関数は、SRリスト204内の第1のセグメントのアドレス(例えば、関数の「送信者」)に依存し得る。説明のために、物理プレフィックスがsであるノードが、(x、...,s::f,...)を含むSRH306を有するパケットを受信すると、SRH306は、ノードsをトリガして、s.f(x)で示された引数xを有する関数fを実施する。
【0062】
図3Bは、IPv6ヘッダ304内の宛先アドレスフィールド308の例示的な構成320を示す。宛先アドレスフィールド308は、128ビットを含むことができ、この例では、ノードロケータ324の第1の64ビットからの第1のセグメント322A、およびSR関数326の次の64ビットからの第2のセグメント322Bを含むようにセグメント化することができる。ノードロケータ324は、パケット内の次のセグメントまたはノード(例えば、300)のIPアドレスまたはプレフィックスを含むことができる。SR関数326は、ノードロケータ324に関連付けられたコマンドまたは関数を含むことができる。
【0063】
この例は、64ビットの2つのセグメントにセグメント化された宛先アドレスフィールド308を示しているが、宛先アドレスフィールド308は、柔軟なビット選択を可能にし、これにより、他の方式でセグメント化され得ることに留意されたい。例えば、図3Cは、IPv6ヘッダ304内の宛先アドレスフィールド308の別の例示的な構成330を示す。この例では、128ビットを含む宛先アドレスフィールド308は、ノードロケータ324の第1の64ビットからの第1のセグメント332、SR関数326の次の32ビットからの第2のセグメント334、および次の32ビットからの第3のセグメント336を含むようにセグメント化し、SR関数326の任意の引数328を含む。
【0064】
場合によっては、第3のセグメント336は、SR関数326の引数を含むことができるサブセグメントにさらにセグメント化され得る。引数を使用して、SR関数326の特定のパラメータを渡すことができる。
【0065】
図4Aは、対応するIPv6およびSRv6ヘッダ402、404、406に基づく要求206(例えば、パケット300)の例示的なフロー400を示す。この例では、クライアント104は、要求206(例えば、パケット300)をストレージノード候補132(SN1)に送信する。要求206は、クライアント104を送信元アドレスとして、ストレージノード候補132(SN1)を要求206の宛先アドレスとして特定することができる。ヘッダ402内のSRv6ヘッダは、ストレージノード候補132、134、136を宛先セグメントとして特定するSRリスト204を含むことができる。SRv6ヘッダは、ヘッダ402内に、SRリスト204内の残りのセグメントまたはホップの数を特定するセグメントレフト(SL)カウンタ408を含むこともできる。
【0066】
ストレージノード候補132(SN1)は、要求206を受信し、要求206を受け入れるか、または拒否するかを判定することができる。ストレージノード候補132(SN1)が要求206を拒否する場合、要求206をSRリスト204上の次のセグメント(この例ではストレージノード候補134(SN2))に転送することができる。ストレージノード候補132(SN1)はまた、SRリスト204内の残りのセグメントまたはホップの数を特定するSLカウンタ408を減少させることができる。
【0067】
ストレージノード候補134(SN2)は、ストレージノード候補132(SN1)から要求206を受信し、要求206を受け入れるか、または拒否するかを判定することができる。ストレージノード候補134(SN2)が要求206を拒否する場合、SRリスト204内の最後のセグメントであるストレージノード候補136(SN3)に要求206を転送することができる。ストレージノード候補134(SN2)は、SRリスト204内の残りのセグメントまたはホップの数を特定するSLカウンタ408を再び減少させることができる。
【0068】
ストレージノード候補136(SN3)は、ストレージノード候補134(SN2)から要求206を受信し、それを処理することができる。ストレージノード候補136(SN3)は、SRリスト204内の最後のセグメントである。したがって、ストレージノード候補136(SN3)は、パケットを別の宛先に転送することなく、SLカウンタ408をゼロに減少させることができる。
【0069】
図4Bは、要求206への応答214の例示的なフロー420を示す。ストレージノード候補136(SN3)は、クライアント104によって送信された要求206を受信して受け入れると、応答214をクライアント104に送信して、クライアント104とストレージノード候補136(SN3)との間に直接接続422を確立する。直接接続422は、クライアント104およびストレージノード候補136(SN3)が、ストレージノード候補132および134を介してそれらの通信を送ることなく通信することを可能にする。クライアント104への応答214は、応答214のデータまたはペイロードを含み、ストレージノード候補136(SN3)を送信元アドレスとして特定し、クライアント104を宛先アドレスとして特定するパケット424を含むことができる。
【0070】
図5Aは、セグメントルーティングおよび負荷分散技術を使用して分散ストレージ環境102内にデータおよび複製を格納するための例示的なフロー500の図を示す。この例では、データおよび複製ストレージプロセスは、ストレージノードプール130、140、150内の候補ストレージノード(例えば、132、134、136、142、144、146、152、154、156)間でデータおよび複製ストレージ操作を負荷分散するためのストレージノードプール130、140、150を実装する。
【0071】
図示のように、クライアント104は、要求202をメタデータサーバ112に送信する。要求202は、クライアント104が分散ストレージ環境102にデータを格納することを望んでいることを示すことができる。場合によっては、要求202は、分散ストレージ環境102に格納されるデータの複製のある数を特定する複製係数を含むことができる。メタデータサーバ112は、要求202を受信し、ストレージノード候補132、134、136を有するストレージノードプール130、ストレージノード候補142、144、146を有するストレージノードプール140、および要求202のストレージノード候補152、154、156を有するストレージノードプール150を選択する。この例では、ストレージノードプール130は、データを格納するためのクライアント104の一次ストレージノードプールとして選択され、ストレージノードプール140および150は、データの複製を格納するための二次ストレージノードプールとして選択される。
【0072】
メタデータサーバ112は、ストレージノードプールの数(例えば、130、140、150)、特定のストレージノードプール(例えば、130、140、150)、ストレージノードプール内のストレージノード候補の数および/もしくはタイプ、ならびに/または分散ストレージ環境102上の現在または予測された負荷もしくはトラフィックの量、クライアント104が格納したいデータの量、サイズ、もしくはタイプ、クライアント104からのデータを格納するためのパフォーマンスもしくはサービス品質(QoS)要件、データ用に格納されるある数の複製、ストレージ操作に関連付けられた優先度、ポリシー、分散ストレージ環境102内でのストレージノードの可用性、ストレージ操作の任意の特定の処理要件、アルゴリズムもしくは負荷分散スキーム、クライアント104の場所、選択されるべきストレージノードプールおよび/もしくはストレージノード候補の数(例えば、最小、最大、デフォルト、または他の任意の数)および/もしくはタイプを定義する1つ以上のルールもしくはパラメータ、クライアント104からの命令もしくは要求、データのフォールトトレランスもしくは冗長性の要件、および/もしくは任意の他の基準もしくはスキームなどの1つ以上の要因に基づく要求202の特定のストレージノード候補を選択することができる。場合によっては、メタデータサーバ112は、単に数および/または特定のストレージノードプールおよび/またはストレージノード候補をランダムに選択することができる。
【0073】
メタデータサーバ112は、メタデータサーバ112によって選択された、または特定されたストレージノードプールおよびストレージノード候補を特定するSRリスト204で要求202に応答する。この例では、SRリスト204は、ストレージノード候補132、134、136に対応するセグメントを含む一次ストレージノードプール(130)、ストレージノード候補142、144、146に対応するセグメントを含む二次ストレージノードプール140、およびストレージノード候補152、154、156に対応するセグメントを含む二次ストレージノードプール150を特定するリスト502のセットを含む。SRリスト204で応答する代わりに、場合によっては、メタデータサーバ112は、メタデータサーバ112によって選択された、または特定されたストレージノードプールおよびストレージノード候補を特定するメッセージで応答することができ、これらは、クライアント104またはメタデータサーバ112からのメッセージ内で特定されたストレージノードプールおよびストレージノード候補に基づいてSRリスト204を含むSRHを作成するための別のデバイス(例えば、SR対応ルータまたはノード)によって使用され得る。
【0074】
次に、クライアント104は、一次ストレージノードプール(130)内のストレージノード候補132、134、136に要求206を送信することができる。要求206は、SRリスト204を含むSRHに基づいて、一次ストレージノードプール(130)内のストレージノード候補132、134、136に送ることができる。SRリスト204は、前述のように、一次ストレージノードプール(130)内のストレージノード候補132、134、136を介してパケットを誘導することができる。
【0075】
場合によっては、クライアント104はまた、リスト502のセットを使用して、データの複製を格納するために、要求206を受け入れる一次ストレージノードプール(130)内のストレージノードに、ストレージノード候補142、144、146を含むストレージノードプール140、およびストレージノード候補152、154、156を含むストレージノードプール150が選択されているか、または使用される予定であることを通知することもできる。例えば、クライアント104は、要求206内に、リスト502のセット、または複製を格納するために選択されたリスト502のセットからのストレージノードプールおよびストレージノード候補の指示を含むことができる。
【0076】
しかしながら、いくつかの例示的な実装形態では、メタデータサーバ112は、クライアント104に二次ストレージノードプール(例えば、140および150)のリストもしくは情報を提供しないか、またはストレージノードプール140および150がまた、複製を格納するために選択されたクライアント104に特定しない場合があることに留意されたい。例えば、場合によっては、メタデータサーバ112は、リスト502のセットをクライアント104、または二次ストレージノードプール(例えば、140および150)に対応するリスト502のセット内のリストに提供しないことがある。代わりに、メタデータサーバ112は、ストレージノードプール130およびストレージノードプール130内のストレージノード候補(例えば、132、134、136)を特定するリストをクライアント104に提供してもよい。ここで、SRリスト204は、ストレージノードプール130内のストレージノード候補132、134、136に対応するセグメントの1つのリストのみを含み得る。そのような例示的な実装形態では、メタデータサーバ112は、代わりに、二次ストレージノードプール(例えば、140および150)のリストを、ストレージノードプール130内のストレージノードに提供することができ、ストレージノードプール130は、クライアント104からの要求206を最終的に受け入れ、次に、ストレージノードは、二次ストレージノードプール(例えば、140および150)からのある数のストレージノード候補内に複製を格納するために、それらを使用できる。したがって、複製の格納を、最終的にクライアント104からの要求206を受け入れるストレージノードプール130内のストレージノードにオフロードするとき、二次ストレージノードプール(例えば、140および150)のSRリストを、(例えば、要求206などのメッセージ内の)クライアント104によって、またはメタデータサーバ112自体によってのいずれかで、そのストレージノードに提供することができる。
【0077】
クライアント104が要求206を送信した後、要求206は、SRリスト204に基づくセグメントルーティングを使用して送られる。ストレージノード候補132は、SRリスト204の第1のセグメントであるため、要求206を受信するストレージノードプール130内の第1のストレージノード候補となる。要求206を受信すると、ストレージノード候補132は、その操作条件(例えば、帯域幅、負荷、容量、リソースの可用性、ステータスなど)に基づいて、要求206を受け入れるか、または拒否するかを判定することができる。この例では、ストレージノード候補132は、要求206を拒否する。ストレージノード候補132は、例えば、過負荷である、要求206を処理するための帯域幅または容量が制限されている、他の操作もしくは要求の処理でビジーである、要求206に関連付けられたデータを格納するための特定のパフォーマンスもしくは他の要件を満たすことができない、かつ/または要求206に関連付けられたデータを格納するためのパフォーマンスもしくは容量に影響を与える可能性のある任意の他の理由もしくは条件ために、要求206を拒否することができる。
【0078】
要求206を拒否した後、ストレージノード候補132は、要求206をSRリスト204内の次のセグメント(この例ではストレージノード候補134)に転送する。ストレージノード候補134は、同様に、要求206を受け入れるか、または拒否するかを判定することができる。この例では、ストレージノード候補134は、要求206を受け入れる。ストレージノード候補134は、その操作条件に基づいて要求206を受け入れることができる。例えば、ストレージノード候補134は、ストレージノード候補134が十分な(例えば、閾値内、負荷、またはパフォーマンス要件内など)容量、帯域幅、リソース可用性を有するか、または他の方法で、制限された遅延で、もしくは閾値パフォーマンス内で、もしくは1つ以上の特定の要件(例えば、QoS要件、優先度、設定など)要求206を処理できるという判定に基づいて、要求206を受け入れることができる。ストレージノード候補134は要求206を受け入れたので、SRリスト204内の次のセグメント(この例ではストレージノード候補136)に要求206を転送する必要はない。
【0079】
ストレージノード候補134は要求206を受け入れると、ストレージノード候補134が要求206を受け入れたことを示す応答をクライアント104に送信することができる。クライアント104およびストレージノード候補134は、ストレージノード候補134にデータを格納するための接続を確立することができる。要求206を受け入れると、ストレージノード候補134はまた、データの複製を二次ストレージノードプール(140および150)内に格納するためのプロセスを開始することができる。
【0080】
データの複製を二次ストレージノードプール(140および150)に格納するために、ストレージノード候補134は、複製要求504をストレージノードプール140に、複製要求506をストレージノードプール150に送信する。複製要求504は、ストレージノードプール140内のストレージノード候補142、144、146を特定するSRリストを有するSRHを含むことができる。このSRリストは、前述のように、セグメントルーティングを使用して、ストレージノード候補142、144、146を介して複製要求504を誘導するために使用することができる。同様に、複製要求506は、ストレージノードプール150内のストレージノード候補152、154、156を特定するSRリストを有するSRHを含むことができ、これは、セグメントルーティングを使用して、ストレージノード候補152、154、156を介して複製要求506を誘導するために使用することができる。
【0081】
ストレージノード候補134が複製要求504を送信すると、複製要求は、複製要求504に関連付けられたSRリスト内の第1のセグメントに送られる。ストレージノード候補142は、複製要求504に関連付けられたSRリストの第1のセグメントであるため、複製要求504を受信するストレージノードプール140内の第1のストレージノード候補となる。複製要求504を受信すると、ストレージノード候補142は、その操作条件(例えば、帯域幅、負荷、容量、リソースの可用性、ステータスなど)に基づいて、複製要求504を受け入れるか、または拒否するかを判定することができる。この例では、ストレージノード候補142は、(例えば、低帯域幅、高負荷、不十分な容量、リソースの可用性の欠如、特定のステータスなどのため)その操作条件に基づいて複製要求504を拒否する。複製要求504を拒否した後、ストレージノード候補142は、複製要求504をSRリスト内の次のセグメント(この例ではストレージノード候補144)に転送する。ストレージノード候補144は、同様に、その操作条件に基づいて、複製要求504を受け入れるか、または拒否するかを判定することができる。この例では、ストレージノード候補144は、複製要求504を受け入れる。
【0082】
場合によっては、ストレージノード候補144が複製要求504を受け入れたので、SRリスト内の次のセグメント(この例ではストレージノード候補146)に複製要求504を転送しない場合がある。しかしながら、他の場合において、ストレージノード候補144は、ストレージノードプール140内に追加の複製を格納することを試みるために、複製要求504のコピーを依然としてSRリスト内の次のセグメント(例えば、ストレージノード候補146)に転送してもよい。例えば、複製要求504は、2つの複製がストレージノードプール140に格納されるべきであることを示し得る。したがって、ストレージノード候補144は、別の複製をストレージノードプール140に格納する必要があると判定することができる。例えば、ストレージノード候補144は、(例えば、ストレージノード候補132からの複製要求504などのメッセージ内の情報に基づいて、ストレージノード候補144による、ストレージノード候補132および/またはストレージノード候補134へのクエリに基づいて)それが、複製を格納することを受け入れたストレージノードプール140内の唯一のストレージノードであり、第2の複製が、ストレージノードプール140内の別のストレージノードに格納されるべきであると判定することができる。
【0083】
場合によっては、ストレージノード候補144は複製要求504を受け入れると、ストレージノード候補144が複製要求504を受け入れたことを示す応答をストレージノード候補134に送信する。ストレージノード候補134およびストレージノード候補144は、ストレージノード候補144に複製を格納するための接続を確立することができる。
【0084】
さらに、ストレージノード候補134が複製要求506をストレージノードプール150に送信すると、複製要求506は、複製要求506に関連付けられたSRリスト内の第1のセグメントに送られる。ストレージノード候補152は、複製要求506に関連付けられたSRリストの第1のセグメントであるため、複製要求506を受信するストレージノードプール150内の第1のストレージノード候補となる。複製要求506を受信すると、ストレージノード候補152は、その操作条件(例えば、帯域幅、負荷、容量、リソースの可用性、ステータスなど)に基づいて、複製要求506を受け入れるか、または拒否するかを判定することができる。この例では、ストレージノード候補152は、複製要求506を拒否する。複製要求506を拒否した後、ストレージノード候補152は、複製要求506をSRリスト内の次のセグメント(この例ではストレージノード候補154)に転送する。ストレージノード候補154は、同様に、その操作条件に基づいて、複製要求506を受け入れるか、または拒否するかを判定することができる。この例では、ストレージノード候補154は、複製要求506を拒否し、したがって、複製要求506をSRリスト内の次のセグメント(この例ではストレージノード候補156)に転送する。
【0085】
次に、ストレージノード候補156は、複製要求506を受信し、その操作条件に基づいて、複製要求506を受け入れるか、または拒否するかを判定する。この例では、ストレージノード候補156は、複製要求506を受け入れる。場合によっては、要求のSRリスト内の最後のセグメント(例えば、複製要求506)は要求を受け入れるように強制され得る。したがって、ストレージノード候補156は、複製要求506に関連付けられたSRリスト内の最後のセグメントであるため、そのような実装形態では、複製要求506を受け入れるように強制され得る。ここで、ストレージノード候補156は、その操作条件に関係なく、複製要求506を受け入れることができる。
【0086】
場合によっては、ストレージノード候補156は複製要求506を受け入れると、ストレージノード候補156が複製要求506を受け入れたことを示す応答をストレージノード候補134に送信する。ストレージノード候補134およびストレージノード候補156は、ストレージノード候補156に複製を格納するための接続を確立することができる。
【0087】
フロー500が完了すると、クライアント104からの要求206に関連付けられたデータは、ストレージノードプール130内のストレージノード候補134に格納され、データの複製は、ストレージノード140内のストレージノード候補144およびストレージノードプール150内のストレージノード候補156に格納される。SRリストおよびセグメントルーティングを使用してデータおよび複製を格納することによって、および各ストレージノード候補がその操作条件に基づいてストレージ操作をローカルで受け入れるか、または拒否することを可能にすることで、この機構は、分散ストレージ環境102内でのデータの格納および複製の待ち時間を短縮し、分散ストレージ環境102内でのリソースの使用を最大化し、ストレージ操作および要求のパフォーマンスおよび処理を最適化することができる。
【0088】
図5Bは、SRスプレーポリシー544を使用して分散ストレージ環境102内にデータを格納するための例示的なフロー540の図を示す。この例では、SRスプレーポリシー544は、クライアント104によって使用されて、ストレージノードプール130、140、150内の複数のストレージノード(例えば、132、134、136、142、144、146、152、154、156)内にデータのコピーを格納するための、ストレージノードプール130、140、150内の複数のストレージノードとの並行接続を確立する。しかしながら、他の例では、SRスプレーポリシー544などのSRスプレーポリシーは、代わりに、クライアント104からのデータを格納する要求を受け入れるストレージノードによって実装されて、クライアント104からのデータの複製を格納するための複数のストレージノードとの並行接続を確立することができる。ストレージノードによってSRスプレーポリシーを使用して並行接続を確立し、複製を格納するためのフローは、以下に説明するように、クライアント104によって実装されたフロー540と同様であり得る。
【0089】
図示のように、クライアント104は、要求202をメタデータサーバ112に送信し、クライアント104が分散ストレージ環境102にデータを格納したいことを示す。場合によっては、要求202は、分散ストレージ環境102に格納されるデータのコピーのある数を特定する複製係数を含むことができる。メタデータサーバ112は、要求202を受信し、ストレージノード候補132、134、136を有するストレージノードプール130、ストレージノード候補142、144、146を有するストレージノードプール140、および要求202のストレージノード候補152、154、156を有するストレージノードプール150を選択する。
【0090】
メタデータサーバ112は、メタデータサーバ112によって選択された、または特定されたストレージノードプールおよびストレージノード候補を特定するSRリスト542で要求202に応答する。この例では、SRリスト542は、SRスプレーポリシー544ならびにSRリスト546、548、および550を含む。SRスプレーポリシー544は、複数のストレージノードとの並行接続を確立し、それらのストレージノードで要求されたストレージ操作を実施するために、ストレージ操作要求の複製コピーをSRリスト546、548、および550に送るための命令を提供することができる。
【0091】
SRリスト546、548、および550は、ストレージノードプール130内のストレージノード候補132、134、136に対応するセグメントを含む、ストレージノードプール130、ストレージノードプール140内のストレージノード候補142、144、146に対応するセグメントを含む、ストレージノードプール140、およびストレージノードプール150内のストレージノード候補152、154、156に対応するセグメントを含む、ストレージノードプール150をそれぞれ特定することができる。SRリスト546、548、および550で応答する代わりに、場合によっては、メタデータサーバ112は、メタデータサーバ112によって選択された、または特定されたストレージノードプールおよびストレージノード候補を特定するメッセージで応答することができ、これらは、クライアント104またはSRスプレーポリシー544のためのSRリスト546、548、および550を含むSRHを作成するための別のデバイス(例えば、SR対応ルータまたはノード)によって使用され得る。
【0092】
クライアント104は、メタデータサーバ112から応答を受信すると、要求552A、552B、552Cをストレージノードプール130、140、および150に送信することができる。例えば、クライアント104は、SRスプレーポリシー544に基づいて複製することができる要求パケットを送信して、ストレージノードプール130、140、および150に対する要求552A、552B、552Cを形成することができる。次に、要求552A、552B、552Cは、それぞれのSRリスト(例えば、SRリスト546、548、550)に基づいて、ストレージノードプール130、140、および150に送ることができる。例えば、要求552Aは、SRリスト546を含むSRHに基づいてストレージノードプール130に送ることができ、要求552Bは、SRリスト548を含むSRHに基づいてストレージノードプール140に送ることができ、要求552Cは、SRリスト550を含むSRHに基づいてストレージノードプール150に送ることができる。
【0093】
要求552Aは、SRリスト546内の第1のセグメントであるストレージノードプール130内のストレージノード候補132によって最初に受信される。次に、ストレージノード候補132は、その操作条件に基づいて、要求552Aを受け入れるか、または拒否するかを判定することができる。ストレージノード候補132は要求552Aを拒否する場合、それをSRリスト546内の次のセグメント(この場合はストレージノード候補134)に転送する。次に、ストレージノード候補134は、要求552Aを受け入れるか、または拒否するかを判定する。ストレージノード候補134は要求552Aを拒否する場合、それをSRリスト546内の次のセグメント(この場合はストレージノード候補136)に転送する。ストレージノード候補136は、SRリスト546内の最後のセグメントであるため、場合によっては、要求552Aを受け入れるように強制され得る。
【0094】
要求552Bは、SRリスト548の第1のセグメントであるストレージノードプール140内のストレージノード候補142によって最初に受信される。次に、ストレージノード候補142は、その操作条件に基づいて、要求552Bを受け入れるか、または拒否するかを判定することができる。ストレージノード候補142は要求552Bを拒否する場合、それをSRリスト548内の次のセグメント(この場合はストレージノード候補144)に転送する。次に、ストレージノード候補144は、要求552Bを受け入れるか、または拒否するかを判定する。ストレージノード候補144は要求552Bを拒否する場合、それをSRリスト548内の次のセグメント(この場合はストレージノード候補146)に転送する。ストレージノード候補146は、SRリスト548の最後のセグメントであるため、場合によっては、要求552Bを受け入れるように強制され得る。
【0095】
要求552Cは、SRリスト550の第1のセグメントであるストレージノードプール150内のストレージノード候補152によって最初に受信される。次に、ストレージノード候補152は、その操作条件に基づいて、要求552Cを受け入れるか、または拒否するかを判定することができる。ストレージノード候補152は要求552Cを拒否する場合、それをSRリスト550内の次のセグメント(この場合はストレージノード候補154)に転送する。次に、ストレージノード候補154は、要求552Cを受け入れるか、または拒否するかを判定する。ストレージノード候補154は要求552Cを拒否する場合、それをSRリスト550内の次のセグメント(この場合はストレージノード候補156)に転送する。ストレージノード候補156は、SRリスト550内の最後のセグメントであるため、場合によっては、要求552Cを受け入れるように強制され得る。
【0096】
上記の例では、要求552A内のSRリスト546、要求552B内のSRリスト548、および要求552C内のSRリスト550は、各要求に関連付けられたそれぞれのストレージノードプール(例えば、130、140、150)内の各ストレージノードに対応するそれぞれのセグメントを含む。しかしながら、他の実装形態では、要求内のSRリスト(例えば、要求552A内のSRリスト546、要求552B内のSRリスト548、および/または要求552C内のSRリスト550)は、マルチキャストアドレスまたは要求に関連付けられた特定のストレージノードプール内の複数(またはすべて)のストレージノード候補(例えば、ストレージノードプール130内のストレージノード候補132、134、136)に関連付けられたプレフィックスを含むことができる。
【0097】
例えば、場合によっては、要求552AのSRリスト546は、ストレージノードプール130および/またはストレージノードプール130内のストレージノード候補132、134、136に関連付けられたマルチキャストアドレスまたはIPv6プレフィックスに対応する最後のセグメントに要求を誘導するためのSR対応ノードまたはルータに対応する1つ以上のセグメントを含むことができる。このようにして、要求552AがSRリスト546内の最後から2番目のセグメントに到達し、そのセグメントに対応するSR対応ノードまたはルータが要求を最後のセグメントに転送すると、要求552Aは、マルチキャストアドレスまたはIPv6プレフィックスに関連付けられたすべてのストレージノード(例えば、ストレージノードプール130内のストレージノード候補132、134、136)に送信される。次に、ストレージノード(例えば、ストレージノードプール130内のストレージノード候補132、134、136)は、要求552Aを受信することができ、各ストレージノードは、要求を受け入れるか、または拒否するかを判定することができる。場合によっては、複数のストレージノードが要求を受け入れる場合、クライアント104は、それらのストレージノードへの接続を確立し、それらのストレージノードにデータのコピーを格納することができる。
【0098】
図6Aは、コンテンツに割り当てられたアドレスに対応するSRセグメントを使用して、分散ストレージ環境102内のコンテンツにデータ要求を直接送るための例示的なフロー600の図を示す。この例では、コンテンツアイテム610のコピーは、ストレージノード候補132、134、および134に格納され、各コピーは、特定のネットワークアドレスを割り振るか、または割り当てている。例えば、ストレージノード候補132に格納されたコンテンツアイテム610のコピーはネットワークアドレス602を有し、ストレージノード候補134に格納されたコンテンツアイテム610のコピーはネットワークアドレス604を有し、ストレージノード候補136に格納されたコンテンツアイテム610のコピーはネットワークアドレス606を有する。ネットワークアドレス602、604、606は、例えば、IPv6アドレスであり得る。ストレージノード候補132、134、および134は、同様に対応するネットワークアドレス(例えば、614、620、626)を有することができる他のコンテンツ(例えば、612、618、624)を格納することもできる。
【0099】
クライアント104からの要求206内のSRH306は、要求206のセグメントのリストを表すネットワークアドレス602、604、606を含むことができる。ストレージノード候補132のコンテンツアイテム610に対応するネットワークアドレス602は、第1のセグメントを表すことができ、ストレージノード候補134のコンテンツアイテム610に対応するネットワークアドレス604は、第2のセグメントを表すことができ、ストレージノード候補136のコンテンツアイテム610に対応するネットワークアドレス606は、最後のセグメントを表すことができる。要求206のIPv6ヘッダ304内の宛先アドレス308は、SRH306内の第1のセグメント(この例ではネットワークアドレス602)に設定することができる。
【0100】
SRH306内のセグメントのリストに基づいて、要求206は、最初に、ストレージノード候補132上のコンテンツアイテム610に対応するネットワークアドレス602に送られる。この例では、ストレージノード候補132は、それに割り振られた、または割り当てられたプレフィックス608を有し、これを使用して、ネットワークトラフィックをストレージノード候補132に送ることができる。ネットワークアドレス602は、プレフィックス608内、またはプレフィックス608内のIPアドレスの範囲内にあり得る。したがって、ネットワークアドレス602に送信された要求206などの通信は、ストレージノード候補132に送られ、ストレージノード候補132が、ストレージノード候補132上のコンテンツアイテム610のネットワークアドレス602にアドレス指定された通信を受信し、かつ処理することを可能にする。したがって、要求206がSRH306に基づいてネットワークアドレス602に転送されるとき、ストレージノード候補132は、要求206を受信し、ストレージノード候補132の操作条件に基づいて要求206を受け入れるか、または拒否するかを判定することができる。
【0101】
この例では、ストレージノード候補132は、要求206を拒否し、したがって、それをSRH306内の次のセグメント(この例では、ストレージノード候補134上のコンテンツアイテム610に対応するネットワークアドレス604である)に転送する。ストレージノード候補134は、プレフィックス616を割り当てられるか、または割り振られる。ネットワークアドレス604は、プレフィックス616内、またはプレフィックス616内のIPアドレスの範囲内にあり得る。したがって、ネットワークアドレス604に送信された要求206などの通信は、ストレージノード候補134に送られ、ストレージノード候補134が、ストレージノード候補134上のコンテンツアイテム610のネットワークアドレス604にアドレス指定された通信を受信し、かつ処理することを可能にする。したがって、要求206がストレージノード候補132によってネットワークアドレス604に転送されるとき、ストレージノード候補134は、要求206を受信し、ストレージノード候補134の操作条件に基づいて要求206を受け入れるか、または拒否するかを判定することができる。
【0102】
この例では、ストレージノード候補134は、要求206を拒否し、したがって、それをSRH306内の最後のセグメント(この例では、ストレージノード候補136上のコンテンツアイテム610に対応するネットワークアドレス606である)に転送する。ストレージノード候補136は、プレフィックス622を割り当てられるか、または割り振られる。ネットワークアドレス606は、プレフィックス622内、またはプレフィックス622内のIPアドレスの範囲内にあり得る。したがって、ネットワークアドレス606に送信された要求206などの通信は、ストレージノード候補136に送られ、ストレージノード候補136が、ストレージノード候補136上のコンテンツアイテム610のネットワークアドレス606にアドレス指定された通信を受信し、かつ処理することを可能にする。したがって、要求206がストレージノード候補134によってネットワークアドレス606に転送されるとき、ストレージノード候補136は、要求206を受信し、ストレージノード候補136の操作条件に基づいて要求206を受け入れるか、または拒否するかを判定することができる。場合によっては、ネットワークアドレス606がSRH306内の最後のセグメントであるため、ストレージノード候補136は、要求206を受け入れるように強制され得る。
【0103】
図6Bは、コンテンツに割り当てられたアドレスに対応するSRセグメントを使用して、データ要求をコンテンツに直接送るための別の例示的なフロー640の図を示す。この例では、ストレージノード候補132、134、および136は、ストレージノードプール130にグループ化され、ストレージノードプール130には、プレフィックス642が割り振られる。さらに、要求206は、ストレージノードプール130内のストレージノード候補132、134、136上のコンテンツアイテム610に対応するネットワークアドレス602、604、606にアドレス指定される。ストレージノード候補132上のコンテンツアイテム610に対応するネットワークアドレス602は、要求206のSRH306上のセグメントのリスト内の第1のセグメントである。したがって、要求206は、最初に、ストレージノード候補132(例えば、ネットワークアドレス602)上のコンテンツアイテム610に送られる。
【0104】
ネットワークアドレス602は、プレフィックス642内、またはプレフィックス642内のIPアドレスの範囲内にあり得る。場合によっては、ストレージノード候補132、134、および136はまた、プレフィックス642と重複するプレフィックスを割り振られるか、または割り当てられ得る。したがって、プレフィックス642は、例えばスーパーネットを形成できる。ネットワークアドレス602に送信された要求206などの通信は、結果的に、ストレージノード候補132に送られ、ストレージノード候補132が、ストレージノード候補132上のコンテンツアイテム610のネットワークアドレス602にアドレス指定された通信を受信し、かつ処理することを可能にする。したがって、要求206がネットワークアドレス602に転送されるとき、ストレージノード候補132は、要求206を受信し、ストレージノード候補132の操作条件に基づいて要求206を受け入れるか、または拒否するかを判定することができる。
【0105】
この例では、ストレージノード候補132は、要求206を拒否し、したがって、それをSRH306内の次のセグメント(この例では、ストレージノード候補134上のコンテンツアイテム610に対応するネットワークアドレス604である)に転送する。ストレージノード候補134は、プレフィックス616を割り当てられるか、または割り振られる。ネットワークアドレス604は、プレフィックス642内、またはプレフィックス642内のIPアドレスの範囲内にあり得る。したがって、ネットワークアドレス604に送信された要求206は、ストレージノード候補134に送られ得、ストレージノード候補134が、ネットワークアドレス604に送信された要求206を受信し、かつ処理することを可能にする。したがって、要求206がストレージノード候補132によってネットワークアドレス604に転送されるとき、ストレージノード候補134は、要求206を受信し、ストレージノード候補134の操作条件に基づいて要求206を受け入れるか、または拒否するかを判定することができる。
【0106】
この例では、ストレージノード候補134は、要求206を拒否し、したがって、それをSRH306内の最後のセグメント(この例では、ストレージノード候補136上のコンテンツアイテム610に対応するネットワークアドレス606である)に転送する。ネットワークアドレス606は、プレフィックス642内、またはプレフィックス642内のIPアドレスの範囲内にあり得る。したがって、ネットワークアドレス606に送信された要求206は、ストレージノード候補136に送られ、ストレージノード候補136が、要求206を受信し、かつ処理することを可能にする。したがって、要求206がストレージノード候補134によってネットワークアドレス606に転送されるとき、ストレージノード候補136は、要求206を受信し、ストレージノード候補136の操作条件に基づいて要求206を受け入れるか、または拒否するかを判定することができる。場合によっては、ネットワークアドレス606が要求206のSRH306内の最後のセグメントであるため、ストレージノード候補136は、要求206を受け入れるように強制され得る。
【0107】
図7は、セグメントルーティングを使用して、メタデータサーバプール110内のメタデータサーバ112、114、116間で要求202を負荷分散するためのフロー700を示す。この例では、クライアント104は、要求202をメタデータサーバプール110に送信する。要求202は、メタデータサーバプール110内のメタデータサーバ112、114、116に対応するセグメントを特定するSRリストを含むことができる。
【0108】
要求202は、要求202内のSRリストの第1のセグメント(この例ではメタデータサーバ112)に送られ、受信される。メタデータサーバ112は、要求202を受信し、その操作条件に基づいて要求202を受け入れるか、または拒否するかを判定する。この例では、メタデータサーバ112は、要求202を拒否し、したがって、それをSRリスト内の次のセグメント(この例ではメタデータサーバ114)に転送する。
【0109】
メタデータサーバ114は、要求202を受信し、同様に、要求202を受け入れるか、または拒否するかを判定する。この例では、メタデータサーバ114は、要求202を拒否し、それをSRリスト内の次のセグメント(この例ではメタデータサーバ116)に転送する。メタデータサーバ116は、SRリストの最後のセグメントであり、要求202を受け入れるように強制され得る。したがって、メタデータサーバ116は、要求202を受け入れ、要求202に応答してSRリスト204をクライアント104に送信する。前述のように、SRリスト204は、1つ以上のストレージノードプールおよび/またはストレージノード候補を特定でき、クライアント104は、これらを使用して、本明細書で説明するストレージ操作要求(例えば、要求206)を送信することができる。
【0110】
例示的なシステムおよび概念を説明したので、本開示は、次に、図8A図8Cに示される例示的な方法800、820、840に移る。明確にするために、方法800、820、840のステップは、図1に示されたクライアント104、106、108および分散ストレージ環境102を参照して説明される。
【0111】
図8Aは、セグメントルーティングおよび負荷分散を使用して分散ストレージ環境102内にデータを格納するための例示的な方法800を示す。ステップ802で、メタデータサーバ112は、クライアント(例えば、104、106、108)から、分散ストレージ環境102にデータを格納する意図を特定するメッセージ(例えば、要求202)を受信することができる。ステップ804で、メタデータサーバ112は、クライアント(例えば、104、106、108)に、データを格納するための複数のストレージノード候補(例えば、132、134、136、142、144、146、152、154、156)を特定するSRリスト(例えば、SRリスト204)を送信することができる。例えば、場合によっては、メタデータサーバ112は、分散ストレージ環境102にデータを格納することを要求するクライアントからのメッセージを受信することができる。クライアントからのメッセージに応答して、メタデータサーバ112は、分散ストレージ環境102にデータを格納するためのストレージノード候補を選択するか、または特定し、ストレージノード候補を特定するSRリストをクライアントに送信することができる。クライアントは、SRリストを使用して、セグメントルーティング(SRv6など)を使用して、ストレージノード候補を介してストレージ要求を送るか、または誘導できる。
【0112】
ステップ806で、本方法は、ストレージ要求に関連付けられたセグメントルーティングヘッダ(SRH)に基づいて、SRリスト(例えば、SRリスト204)によって定義されたパスを通ってクライアントによって送信されたストレージ要求(例えば、要求206)を誘導すること、または送ることを含み得る。例えば、クライアントは、ストレージノード候補を特定するSRリストを有するSRHを含むストレージ要求パケットを送信することができる。SRHは、ストレージノード候補の中のストレージノードがストレージ要求を受け入れるまで、ストレージノード候補を含むパスを通ってストレージ要求パケットを誘導することができる。ストレージ要求パケットを受信する各SR対応ノードまたはルータは、SRリスト内の次のセグメントにパケットを転送することができる。
【0113】
例えば、ストレージ要求パケットは、SRリスト内の第1のストレージノード候補に送ることができ、これは、SRリスト内の第1のセグメント、および/または他のストレージノード候補に対応するセグメントに関連するSRリストの第1のセグメントを参照する。ストレージ要求パケットを受信すると、第1のストレージノードはストレージ要求パケットからの要求を受け入れるか、または拒否するかを判定する。第1のストレージノードは、ローカルの操作条件(例えば、帯域幅、容量、負荷、ステータス、機能、リソースの可用性など)、要求のタイプ、要求に関連付けられたデータのタイプ、要求に関連付けられた設定または要件(QoS要件、優先度など)などの1つ以上の要因に基づいて、要求を受け入れるか、または拒否するかを判定することができる。
【0114】
第1のストレージノードは要求を拒否した場合、ストレージ要求パケットをSRリスト内の次のセグメント(次のストレージノード候補)に転送する。同様に、次のストレージノード候補は、操作条件などの1つ以上の要因に基づいて、ストレージ要求を受け入れるか、または拒否するかを判定する。次のストレージノードは要求を拒否した場合、ストレージ要求パケットをSRリスト内の別のセグメント(別のストレージノード候補)に転送する。ストレージ要求パケットは、要求がストレージノード候補によって受け入れられるまで、SRリスト内のストレージノード候補のパスをトラバースし続ける。各ストレージノード候補は、ローカルの操作条件(例えば、帯域幅、容量、負荷、ステータス、機能、リソースの可用性など)、要求のタイプ、要求に関連付けられたデータのタイプ、要求に関連付けられた設定または要件(例えば、QoS要件、優先度など)などの1つ以上の要因に基づいて、ストレージ要求を受け入れるか、または拒否するかを判定できる。場合によっては、要求が受け入れられることなく最後のストレージノード候補(例えば、SRリスト内の最後のセグメント)に到達した場合、最後のストレージノード候補は、要求が完全に拒否されるか、またはドロップされることを回避するために、要求を受け入れるように要求され得る。
【0115】
ステップ808で、ストレージノード(例えば、132、134、136、142、144、146、152、154、または156)が要求を受け入れるとき、ストレージノードは、クライアントに、ストレージノードがクライアントからの要求を受け入れたことを示す要求に対する応答(例えば、応答214)を送信できる。ストレージノードが要求を受け入れると、クライアントおよびストレージノードは接続を確立し、データをストレージノードに格納できる。ステップ810で、要求を受け入れたストレージノードは、次に、クライアントからのデータを格納することができる。前述のように、ストレージノードはストレージノードでの操作条件に基づいてストレージ要求を受け入れることができる。これは、要求がその特定の要求に適切な帯域幅および容量を有するストレージノードによって処理される可能性を高め、要求が例えば低帯域幅または過負荷状態で処理される可能性を低下させることによって、ストレージの待ち時間を短縮するのに役立ち得る。
【0116】
場合によって、メタデータサーバ112がステップ802でクライアントからメッセージを受信すると、メタデータサーバ112は、分散ストレージ環境102にデータを格納するための1つ以上のストレージノードプール(例えば、130、140、および/または150)を選択することができる。例えば、メタデータサーバ112は、データを格納するための一次ストレージノードプール(例えば、130)、および、データのある数の複製を格納するための1つ以上の二次ストレージノードプール(例えば、140および/または150)を選択することができる。一次ストレージノードプールは、例えば、前述のSRリスト内の複数のストレージノード候補を含むことができる。1つ以上の二次ストレージノードプールおよび/または1つ以上の二次ストレージノードプール内のある数のストレージノード候補は、格納されるデータのある数の複製に基づいて選択することができる。ある数の複製は、例えば、複製係数に基づいて判定することができる。複製係数は、データ用に格納するある数の複製を特定するか、または要求することができる。場合によっては、複製係数は、クライアントから受信されたメッセージ内で提供されるか、またはデータのタイプ、データの優先度、利用可能なリソース、フォールトトレランスもしくは冗長性ルール、デフォルトの複製ルール、最小および/もしくは最大の複製ルール、データのQoS要件などの1つ以上の基準に基づいてメタデータサーバ112によって判定することができる。
【0117】
いくつかの例では、メタデータサーバ112は、一次ストレージノードプールおよび1つ以上の二次ストレージノードプールに関連付けられた複数のSRリスト(例えば、502)を生成するか、または取得することができる。例えば、メタデータサーバ112は、一次ストレージノードプール(例えば、130)内のストレージノード候補を特定する第1のリスト、第1の二次ストレージノードプール(例えば、140)内のストレージノード候補を特定する第2のリスト、および、第2の二次ストレージノードプール(150など)内のストレージノード候補を特定する第3のリストを作成する。第2および第3のリストを使用して、第1および第2の二次ストレージノードプール(例えば、140および150)に複製を格納する要求を送ることができる。例えば、メタデータサーバ112は、第1および第2の二次ストレージノードプール(例えば、140および150)内のストレージノード候補を特定し、複製の格納に使用するためのストレージ要求を受け入れたストレージノードに第2および第3のリストを提供することができる。場合によっては、メタデータサーバ112は、第2および第3のリストをクライアントに提供することができ、クライアントは、(例えば、ストレージ要求自体を介して、または別個のメッセージものを介して)ストレージ要求を受け入れるストレージノードに第2および第3のリストを提供することができる。
【0118】
クライアントからの要求を受け入れたストレージノードは、第2および第3のリストに対応するセグメントを特定するSRHで複製ストレージ要求(例えば、504および506)を送信することができる。複製ストレージ要求は、SRHに基づいて第1および第2の二次ストレージノードプールを介して送られ、前述のように各受信者ストレージノード候補によって処理される(例えば、受け入れられるか、または拒否される)。例えば、クライアントからの要求を受け入れたストレージノードは、第1の二次ストレージノードプール(例えば、140)に、第1の複製要求(例えば、複製要求504)を送信して、ある数の複製の第1の部分を、第1の二次ストレージノードプール内のストレージノード候補の1つ以上のに格納することができる。ストレージノードはまた、第2の二次ストレージノードプール(例えば、150)に、第2の複製要求(例えば、複製要求506)を送信して、ある数の複製の第2の部分を、第2の二次ストレージノードプール内のストレージノード候補のうつちの1つ以上のに格納することができる。
【0119】
第1の複製要求は、第1の二次ストレージノードプール(例えば、140)内のストレージノード候補を特定するSRリスト(例えば、第2のリスト)を有するSRHを含むことができ、第2の複製要求は、第2の二次ストレージノードプール(例えば、150)内のストレージノード候補を特定するSRリスト(例えば、第3のリスト)を有するSRHを含むことができる。第1の複製要求内のSRHは、第1の二次ストレージノードプール内の1つ以上のストレージノード候補が要求を受け入れるまで、第1の要求が、SRH内のSRリストを含むパス(すなわち、第1の二次ストレージノードプール内の各ストレージノード候補を通るパス)を介して送られることを引き起こし得る。同様に、第2の複製要求内のSRHは、第2の二次ストレージノードプール内の1つ以上のストレージノード候補が要求を受け入れるまで、第2の複製要求が、SRH内のSRリストを含むパス(すなわち、第2の二次ストレージノードプール内の各ストレージノード候補を通るパス)を介して送られることを引き起こし得る。
【0120】
ストレージノードは、第1の二次ストレージノードプール内の1つ以上のストレージノード候補からの第1の複製要求の受け入れ、および第2の二次ストレージノードプール内の1つ以上のストレージノード候補からの第2の複製要求の受け入れを受信することができる。例えば、ストレージノードは、第1および第2の複製要求を受け入れた第1および第2の二次ストレージノードプール内のそれらのストレージノード候補から第1および第2の複製要求の受け入れを受信することができる。ストレージノードは、第1および第2の複製要求を受け入れたストレージノードとの接続を確立し、複製の第1の部分を、第1の複製要求を受け入れた第1の二次ストレージノードプール内のそれらのストレージノードに、および複製の第2の部分を、第2の複製要求を受け入れた第2の二次ストレージノードプール内のそれらのストレージノードに格納できる。したがって、ストレージノードは、メタデータサーバ112によって選択されたストレージノード候補の第2および第3のリストを使用して、二次ストレージノードプール上のストレージノードとの接続を確立し、それらのストレージノードにある数の複製を格納することができる。
【0121】
他の例では、クライアントからの要求を受け入れたストレージノードは、ステップ806で説明するように、クライアントから受信した要求(例えば、要求206)に関連付けられた同じSRリスト(例えば、SRリスト204)を使用して、他のストレージノードにデータを複製することができる。例えば、ストレージノードは複製係数を使用して、格納する複製の数を判定することができる。複製係数は、格納する複製のある数を示すことができる。複製係数は、ストレージノードに既知であり、別のデバイス(例えば、クライアントまたはメタデータサーバ)から受信され、または(例えば、SRリスト内のアドレスまたはセグメント内でコーディングすることによって)SRリスト内に明示的に示され得る。
【0122】
ストレージノードはクライアントからの要求を受け入れると、第1の複製を作成して格納することができる。次に、ストレージノードは、SRリスト内の残りのセグメント(例えば、クライアントからの要求を受信していない、またはアクティブなセグメントではなかったストレージノードの後のSRリスト内のセグメント)を、ある数の複製を格納するためのストレージノード候補のリストとして使用することができる。ストレージノードは、前述のようにセグメントルーティングを使用して、ある数の複製を格納するためのストレージノード候補のリスト内の各ストレージノード候補(すなわち、リスト内の各セグメント)に複製要求を転送することができる。複製要求を受信する各ストレージノード候補は、本明細書において説明するように複製要求を受け入れるか、または拒否するかを判定し、そのストレージノードが複製要求を拒否する場合は、複製要求をリスト内の次のセグメントに転送することができる。
【0123】
複製係数は既知である(またはSRリスト内でコード化されている)ため、不要または求められない複製の作成を回避するために、複製が作成されたことを示す情報(例えば、クライアントからの要求を受け入れたストレージノードによって作成された複製)および/または複製係数は、ある数の複製を格納するために特定されたストレージノード候補のリスト内の任意のストレージノード候補(例えば、クライアントからの要求内のSRリストからの残りのセグメント)に渡すことができる。このようにして、ストレージノード候補が複製要求は受信すると、ある数の複製すべてがそれぞれのストレージノードに格納されているかどうかを判定することができ、格納されている場合、ストレージノードは複製要求を拒否して複製係数によって定義された複製の数を超えることを回避することができる。
【0124】
さらに、場合によっては、クライアントからの要求からのSRリスト内のストレージノード候補のいずれも、SRリスト内に残っているセグメントの数が、複製係数によって定義された複製の数と等しくなる時間までにクライアントからの要求を受け入れない場合、それらのセグメントに対応するストレージノード候補(すなわち、SRリスト内に残っているある数のセグメント)は、ある数の複製が複製係数で特定されたとおりに格納されるように、要求を受け入れるように強制され得る。同様に、場合によっては、ストレージノードがクライアントからの第1の要求を受け入れ、その後、他のストレージノードにある数の複製を格納するための複製ストレージ要求を送信すると、ある数の複製を格納するために特定されたストレージノード候補のリスト内の1つ以上のストレージノード候補(例えば、クライアントからの要求内のSRリストからの残りのセグメント)は、複製要求を受け入れるように強制され得、必要に応じて複製係数によって定義されたある数の複製を格納できる。例えば、複製ストレージ要求はSRリスト内の残りのセグメントを介して送られるため、SRリスト内の残りのストレージノード候補の数(すなわち、SRリスト内の残りのセグメント)が格納される残りの複製の数と等しい場合、複製係数が満たされるようにするために、SRリスト内のある数の残りのストレージノード候補は、複製格納要求を受け入れるように強制され得る。
【0125】
場合によっては、分散ストレージ環境102にデータ複製を格納するために、本方法は、SRスプレー操作またはポリシー(例えば、544)を使用して、複製ストレージ要求を異なるストレージノード候補および/またはプールに複製し、複数のストレージノードとの並行接続を確立することを含み得る。例えば、メタデータサーバ112は、前述のようにストレージノード候補の複数のリストを特定し、クライアントまたはクライアントからの要求を受け入れたストレージノードにリストを提供することができる。複数のリストは、第1の二次ストレージノードプール(例えば、140)内のストレージノード候補を特定する第2のSRリストを含むことができる。場合によっては、複数のリストはまた、第2の二次ストレージノードプール(例えば、150)内のストレージノード候補を特定する第3のSRリストを含むこともできる。クライアントまたはストレージノードは、SRスプレー操作またはポリシーを使用してデータ複製を格納するために、第2および/または第3のSRリストを使用することができる。
【0126】
説明のために、クライアントまたはストレージノードは、SRスプレー操作またはポリシーに基づいて複製されたパケットを送信して、ストレージ要求の第1のコピーおよびストレージ要求の第2のコピーを形成することができる。SRスプレー操作またはポリシーは、第1および第2のコピーを第2および第3のSRリストに送るための命令を含むことができる。第1のコピーは、第2のSRリストを有するSRHを含むことができ、第2のコピーは第3のSRリストを有するSRHを含むことができる。第1のコピーは、SRH内の第2のSRリストに基づいて第1の二次ストレージノードプール内のストレージノード候補に送ることができ、第2のコピーは、SRH内の第3のSRリストに基づいて第2の二次ストレージノードプール内のストレージノード候補に送ることができる。
【0127】
SRスプレー操作またはポリシーは、第1および第2のコピーを第1および第2の二次ストレージノードプール内のストレージノード候補を介して連続的に送るか、または第1および第2のコピーを、第1および第2のSRリスト内の第1のそれぞれのホップに送り、第1および第2のコピーを、それぞれ第1および第2の二次ストレージノードプールにマルチキャストするように第1のそれぞれのホップに命令するように、第2および第3のSRリストを構成できる。
【0128】
クライアントまたはストレージノードは、第1または第2のコピーを受信し、第1または第2のコピー内で要求を受け入れた第1および/または第2の二次ストレージノードプール内のそれらのストレージノードからストレージ要求の受け入れを受信することができる。次に、クライアントまたはストレージノードは、それらのストレージノードとの並行接続を確立して、それらのストレージノードでデータ複製を格納できる。
【0129】
図8Bは、セグメントルーティングおよび負荷分散を使用して分散ストレージ環境102内のデータを取り出すための例示的な方法820を示す。ステップ822で、メタデータサーバ112は、クライアント(例えば、104、106、または108)から、分散ストレージ環境102のデータコンテンツを取り出す意図を特定するメッセージ(例えば、要求202)を受信することができる。メタデータサーバ112は、データの各コピーが分散ストレージ環境102内のどこに格納されているかを追跡し、その情報を使用して、どのストレージノードがクライアントによって要求されたデータコンテンツのコピーを有しているかを特定することができる。例えば、メタデータサーバ112は、分散ストレージ環境102上のどのストレージノードが要求されたデータコンテンツのコピーを有するかの記録を維持し、その情報を使用して、クライアントからのデータコンテンツ要求のストレージノード候補を選択することができる。
【0130】
ステップ824で、メタデータサーバ112は、データコンテンツを含むストレージノードのセットを特定するSRリスト(例えば、204)をクライアントに送信することができる。例えば、メタデータサーバは、クライアントが取り出すことができ得るデータコンテンツのコピーを有する分散ストレージ環境102内のストレージノードの少なくとも一部を含む、データコンテンツ要求のためにメタデータサーバ112によって選択されたストレージノード候補のセットに対応するセグメントのリストを、クライアントに送信することができる。
【0131】
次に、ステップ826で、本方法は、データ要求内のSRHに基づいて、ストレージノードのセットを特定するSRリストを含むパスを通ってクライアントからのデータ要求(例えば、206)を誘導することを含み得る。SRHはSRリストを含むことができ、ストレージノードのセットのうちの1つがデータ要求を受け入れるまでパスを通ってデータ要求を誘導するように構成することができる。データ要求がストレージノードのセットを通って移動するとき、前述のように、各受信ストレージノードはストレージノードの操作条件に基づいてデータ要求を受け入れるか、または拒否するかを判定することができる。
【0132】
ステップ828で、ストレージノードは、データ要求を受け入れると、クライアントに、ストレージノードがクライアントからのデータ要求を受け入れたという指示(例えば、応答214)を送信する。次に、クライアントおよびストレージノードは、クライアントがストレージノードからデータコンテンツを取り出すための接続を確立できる。したがって、ステップ830で、ストレージノードは、要求されたデータコンテンツをクライアントに提供することができる。
【0133】
図8Cは、セグメントルーティングおよび負荷分散を使用して、データ要求をデータに割り当てられたアドレスに直接送るための例示的な方法840を示す。ステップ842で、メタデータサーバ112は、クライアント(例えば、104、106、または108)から、分散ストレージ環境102のデータコンテンツを取り出す意図を特定するメッセージ(例えば、要求202)を受信することができる。前述のように、メタデータサーバ112は、データの各コピーが分散ストレージ環境102内のどこに格納されているかを追跡することができる。さらに、例示的な方法840では、分散ストレージ環境102内のデータは、それに割り当てられたネットワークアドレス(例えば、IPv6アドレス、IPv6プレフィックスなど)を有することができ、これを使用して、分散ストレージ環境102上のそのデータを特定し、かつそれにアクセスすることができる。メタデータサーバ112は、どのネットワークアドレスデータが任意の特定のコピーに割り当てられているかを特定し、その情報を使用して、クライアントによって要求されたデータコンテンツのコピーに対応する候補ネットワークアドレスのリストをクライアントに提供することができる。場合によっては、クライアントからのメッセージ自体が、ネットワークアドレスまたは要求されたデータコンテンツのアドレスを特定できる。
【0134】
ステップ844で、メタデータサーバ112は、分散ストレージ環境102上のデータコンテンツのコピーに関連付けられたネットワークアドレス(例えば、IPアドレスまたはプレフィックス)を特定するSRリストをクライアントに送信することができる。例えば、メタデータサーバ112は、要求されたデータコンテンツの異なるコピーに割り振られたIPv6アドレスのセットを含むSRリストを送信することができる。クライアントは、こデータコンテンツの要求を、セグメントルーティングを使用してデータコンテンツのコピーのIPv6アドレスに送るためにのSRリストを使用することができる。
【0135】
ステップ846で、本方法は、データ要求内のSRHに基づいて、ネットワークアドレスを特定するSRリストを含むパスを通って、クライアントからのデータ要求(例えば、206)を誘導すること、または送ることを含むことができる。SRHはSRリストを含めることができ、データコンテンツのコピーをホストしているそれぞれのストレージノードがデータ要求を受け入れるまで、パスを通って(例えば、SRリスト内の各ネットワークアドレスを介して)データ要求を誘導するように構成され得る。データ要求がSRリスト内のセグメントに関連付けられたネットワークアドレス(すなわち、SRリスト内のセグメントに対応するデータコンテンツのコピーのネットワークアドレス)に送られると、そのネットワークアドレスに関連付けられたコピーをホストしているストレージノードは、データ要求を受信し、本明細書において説明されているように要求を受け入れるか、または拒否するかを判定することができる。
【0136】
ステップ848で、データコンテンツのコピーをホストしているストレージノードは、データ要求を受信して受け入れると、ストレージノードがデータ要求を受け入れたという指示(例えば、応答214)をクライアントに送信する。次に、ストレージノードおよびクライアントは、クライアントがデータコンテンツのコピーに割り振られたネットワークアドレスを使用して、ストレージノードからデータコンテンツのコピーを取り出すための接続を確立することができる。したがって、ステップ850で、ストレージノードは、ストレージノード上のデータコンテンツのコピーをクライアントに提供することができる。
【0137】
場合によっては、方法800、820、および/または840は、セグメントルーティングを使用して、メタデータサーバ(例えば、メタデータサーバプール110および/または120)のプール(または複数のプール)へのクライアント要求を同様に負荷分散することができる。これは、メタデータサーバの過負荷または帯域幅の制限によって引き起こされる待ち時間を短縮するのに役立ち得る。例えば、クライアントは、分散ストレージ環境102にデータを格納するか、または取り出す意図を特定するメッセージを送信することができる。メッセージは、メタデータサーバの1つ以上のプール(110、120など)からメタデータサーバを特定するSRリストを含むSRHを含むことができる。SRHは、関連付けられた要求がSRリスト内のメタデータサーバのうちの1つによって受け入れられるまで、クライアントからのメッセージがSRリスト内のメタデータサーバのパスを通って送られることを引き起こすことができる。メッセージを受信すると、各メタデータサーバは、メタデータサーバでの操作条件に基づいて、関連付けられた要求を受け入れるか、または拒否するかを判定することができる。したがって、例えば、高負荷または制限された容量/帯域幅を有するメタデータサーバは、待ち時間の問題を回避するために要求を拒否することができ、低負荷または高い容量/帯域幅を有するメタデータサーバは、要求を受け入れて、それにより潜在的な待ち時間の問題を低減することができる。
【0138】
次に、本開示は、スイッチ、ルータ、ロードバランサ、クライアントデバイスなどの例示的なネットワークデバイスおよびコンピューティングデバイスを示す図9および図10に移る。
【0139】
図9は、スイッチング、ルーティング、負荷分散、および他のネットワーキング操作を実施するのに好適な例示的なネットワークデバイス900を示す。ネットワークデバイス900は、中央処理装置(CPU)904、インターフェース902、およびバス910(例えば、PCIバス)を含む。適切なソフトウェアまたはファームウェアの制御下で動作する場合、CPU904は、パケット管理、エラー検出、および/またはルーティング関数を実行する責任を負う。CPU904は、好ましくは、オペレーティングシステムおよび任意の適切なアプリケーションソフトウェアを含むソフトウェアの制御下でこれらすべての機能を達成する。CPU904は、マイクロプロセッサのINTEL X86ファミリからのプロセッサなどの1つ以上のプロセッサ908を含み得る。場合によっては、プロセッサ908は、ネットワークデバイス900の操作を制御するために特別に設計されたハードウェアであり得る。場合によっては、メモリ906(例えば、不揮発性RAM、ROMなど)はまた、CPU904の一部を形成する。ただし、メモリをシステムに結合することができる多くの異なる方式がある。
【0140】
インターフェース902は、典型的に、モジュラーインターフェースカード(「ラインカード」と称されることもある)として提供される。一般に、それらはネットワークを介したデータパケットの送受信を制御し、ネットワークデバイス900で使用される他の周辺機器をサポートする場合がある。提供され得るインターフェースの中には、イーサネットインターフェース、フレームリレーインターフェース、ケーブルインターフェース、DSLインターフェース、トークンリングインターフェースなどがある。加えて、高速トークンリングインターフェース、ワイヤレスインターフェース、イーサネットインターフェース、ギガビットイーサネットインターフェース、ATMインターフェース、HSSIインターフェース、POSインターフェース、FDDIインターフェース、WIFIインターフェース、3G/4G/5Gセルラーインターフェース、CAN BUS、LoRAなど、様々な非常に高速なインターフェースが提供される場合がある。一般に、これらのインターフェースには、適切な媒体との通信に適したポートが含まれている場合がある。場合によっては、独立したプロセッサと、場合によっては揮発性RAMも含まれることがある。独立したプロセッサは、パケット交換、媒体制御、信号処理、暗号処理、管理などの通信集約型タスクを制御することができる。通信集約型タスクのために別個のプロセッサを提供することにより、これらのインターフェースは、マスターCPU(例、904)がルーティング計算、ネットワーク診断、セキュリティ機能などを効率的に実施することを可能にする。
【0141】
図9に示されるシステムは、本技術の1つの特定のネットワークデバイスであるが、本技術が実装され得る唯一のネットワークデバイスアーキテクチャであることを意味するものではない。例えば、通信ならびにルーティング計算などを処理する単一のプロセッサを備えるアーキテクチャがよく使用される。さらに、他のタイプのインターフェースおよび媒体もまた、ネットワークデバイス900とともに使用され得る。
【0142】
ネットワークデバイスの構成に関係なく、本明細書で説明するローミング、ルート最適化、およびルーティング関数のための汎用ネットワーク操作および機構のためのプログラム命令を格納するように構成された1つ以上のメモリまたはメモリモジュール(メモリ906を含む)を使用することができる。プログラム命令は、例えば、オペレーティングシステムおよび/または1つ以上のアプリケーションの操作を制御することができる。メモリ(複数可)はまた、モビリティバインディング、登録、および関連付けテーブルなどのテーブルを格納するように構成され得る。メモリ906はまた、様々なソフトウェアコンテナおよび仮想化実行環境およびデータを保持することができる。
【0143】
ネットワークデバイス900はまた、ルーティングおよび/またはスイッチング操作を実施するように構成され得る特定用途向け集積回路(ASIC)を含むことができる。ASICは、バス910を介してネットワークデバイス900内の他の構成要素と通信して、データおよび信号を交換し、例えば、ルーティング、スイッチング、および/またはデータストレージ操作などのネットワークデバイス900による様々なタイプの操作を調整することができる。
【0144】
図10は、データ操作および要求を処理し、データコンテンツおよび/またはメタデータを格納し、かつ他のコンピューティング操作を実施するために使用することができるシステム1000の例示的なコンピューティングシステムアーキテクチャを示す。この例では、システム1000の構成要素は、バスなどの接続1005を使用して互いに電気的に通信している。システム1000は、処理ユニット(CPUまたはプロセッサ)1010、ならびに読み取り専用メモリ(ROM)1020およびランダムアクセスメモリ(RAM)1025などのメモリ1015を含む様々なシステム構成要素をプロセッサ1010に結合する接続1005を含む。システム1000は、プロセッサ1010に直接接続されているか、近接しているか、またはプロセッサ1010の一部として統合されている高速メモリのキャッシュを含むことができる。システム1000は、プロセッサ1010による迅速なアクセスのために、メモリ1015および/またはストレージデバイス1030からキャッシュ1012にデータをコピーすることができる。このようにして、キャッシュは、データを待機している間のプロセッサ1010の遅延を回避するパフォーマンス向上を提供することができる。これらの、また他のモジュールは、様々なアクションを実施するために、プロセッサ1010を制御するか、または制御するように構成され得る。他のメモリ1015も同様に使用可能であり得る。メモリ1015は、異なるパフォーマンス特性を有する複数の異なるタイプのメモリを含むことができる。プロセッサ1010は、任意の汎用プロセッサ、プロセッサ1010を制御するように構成されたストレージデバイス1030内に格納された第1サービス1032、第2サービス1034、および第3サービス1036のようなハードウェアまたはソフトウェアサービス、ならびにソフトウェア命令が実際のプロセッサ設計に組み込まれている専用プロセッサを含むことができる。プロセッサ1010は、複数のコアまたはプロセッサ、バス、メモリコントローラ、キャッシュなどを含む完全に自己完結型のコンピューティングシステムであり得る。マルチコアプロセッサは、対称または非対称であり得る。
【0145】
コンピューティングデバイス1000とのユーザインタラクションを可能にするために、入力デバイス1045は、スピーチ用のマイクロフォン、ジェスチャまたはグラフィック入力用のタッチセンシティブスクリーン、キーボード、マウス、モーション入力、スピーチなどの任意の数の入力機構を表すことができる。出力デバイス1035はまた、当業者に既知のある数の出力機構のうちの1つ以上であり得る。場合によっては、マルチモーダルシステムは、ユーザがコンピューティングデバイス1000と通信するために複数のタイプの入力を提供することを可能にし得る。通信インターフェース1040は、一般に、ユーザ入力およびシステム出力を統治し、かつ管理することができる。特定のハードウェア構成での操作に制限はないため、ここでの基本機能は、開発時に改善されたハードウェアまたはファームウェア構成に簡単に置き換えることができる。
【0146】
ストレージデバイス1030は、不揮発性メモリであり、磁気カセット、フラッシュメモリカード、ソリッドステートメモリデバイス、デジタル多用途ディスク、カートリッジ、ランダムアクセスメモリ(RAM)1025、読み取り専用メモリ(ROM)1020、およびそれらのハイブリッドなど、コンピュータがアクセス可能なデータを格納することができるハードディスクまたは他のタイプのコンピュータ可読媒体であり得る。
【0147】
ストレージデバイス1030は、プロセッサ1010を制御するためのサービス1032、1034、1036を含むことができる。他のハードウェアまたはソフトウェアモジュールが企図される。ストレージデバイス1030は、接続1005に接続することができる。一態様では、特定の機能を実行するハードウェアモジュールは、その機能を実行するために、プロセッサ1010、接続1005、出力デバイス1035などの必要なハードウェア構成要素に関連して、コンピュータ可読媒体に格納されたソフトウェア構成要素を含むことができる。
【0148】
説明を明確にするために、場合によっては、本技術は、ソフトウェアで具体化される方法におけるデバイス、デバイス構成要素、ステップもしくはルーチン、またはハードウェアとソフトウェアの組み合わせを含む機能ブロックを含む個々の機能ブロックを含むものとして提示され得る。
【0149】
いくつかの実施形態では、コンピュータ可読ストレージデバイス、媒体、およびメモリは、ビットストリームなどを含むケーブルまたは無線信号を含むことができる。しかしながら、言及される場合、非一時的コンピュータ可読記憶媒体は、エネルギー、搬送波信号、電磁波、および信号自体などの媒体を明示的に除外する。
【0150】
上記の例による方法は、コンピュータ可読媒体に格納されているか、他の場合にはそれから利用可能であるコンピュータ実行可能命令を使用して実装することができる。そのような命令は、例えば、特定の機能または機能のグループを実行するために、汎用コンピュータ、専用コンピュータ、または専用処理デバイスを引き起こすか、あるいは構成する命令およびデータを含むことができる。使用されるコンピュータリソースの部分は、ネットワーク経由でアクセス可能であり得る。コンピュータの実行可能命令は、例えば、バイナリ、アセンブリ言語、ファームウェア、またはソースコードなどの中間フォーマット命令であり得る。命令、使用される情報、および/または説明された例による方法中に作成された情報を格納するために使用され得るコンピュータ可読媒体の例には、磁気ディスクまたは光ディスク、フラッシュメモリ、不揮発性メモリを備えたUSBデバイス、ネットワークストレージデバイスなどが含まれる。
【0151】
これらの開示による方法を実装するデバイスは、ハードウェア、ファームウェア、および/またはソフトウェアを含むことができ、様々なフォームファクタのいずれかを取ることができる。このようなフォームファクタの典型的な例には、ラップトップ、スマートフォン、スモールフォームファクタのパーソナルコンピュータ、携帯情報端末、ラックマウントデバイス、スタンドアロンデバイスなどが挙げられる。本明細書で説明される機能はまた、周辺機器またはアドインカードで具体化され得る。このような機能は、さらなる例として、単一のデバイスで実行される異なるチップまたは異なるプロセスの間の回路基板上に実装することもできる。
【0152】
命令、そのような命令を伝達するための媒体、それらを実行するためのコンピューティングリソース、およびそのようなコンピューティングリソースをサポートするための他の構造は、これらの開示に記載された機能を提供するための手段である。
【0153】
添付の特許請求の範囲の範疇の態様を説明するために、様々な例および他の情報を使用したが、当業者であれば、多種多様な実装形態を導出するために、これらの例を使用することができるように、かかる例における特定の特徴または構成に基づいて、特許請求の範囲のいかなる制限も示唆されるべきではない。さらに、いくつかの主題は、構造的特徴および/または方法ステップの例に固有の言語で説明されている場合があるが、添付の特許請求の範囲で定義される主題は、必ずしもこれらの説明された特徴または行為に限定されないことを理解されたい。例えば、かかる機能は、ここで特定されている構成要素以外の構成要素で、異なって配布し、または実施することができる。むしろ、説明された特徴およびステップは、添付の特許請求の範囲の範疇のシステムおよび方法の構成要素の例として開示される。
【0154】
「少なくとも1つ」のセットと記載される特許請求項の文言は、セットの1つのメンバーまたはセットの複数のメンバーが特許請求項を満たしていることを示す。例えば、「AおよびBのうちの少なくとも1つ」と記載される特許請求項の文言は、A、B、またはAおよびBを意味する。
図1
図2
図3A
図3B
図3C
図4A
図4B
図5A
図5B
図6A
図6B
図7
図8A
図8B
図8C
図9
図10