(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-02-21
(45)【発行日】2025-03-04
(54)【発明の名称】ネットワーク光学系におけるプログラマブル遅延
(51)【国際特許分類】
H04B 10/27 20130101AFI20250225BHJP
H04B 10/25 20130101ALI20250225BHJP
【FI】
H04B10/27
H04B10/25
【外国語出願】
(21)【出願番号】P 2023127128
(22)【出願日】2023-08-03
【審査請求日】2023-12-01
(32)【優先日】2023-03-28
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ブノワ・ルフェーブル
(72)【発明者】
【氏名】ズオウェイ・シェン
(72)【発明者】
【氏名】ホン・リウ
(72)【発明者】
【氏名】アージュン・シン
【審査官】麻生 哲朗
(56)【参考文献】
【文献】米国特許出願公開第2016/277272(US,A1)
【文献】特開2008-235986(JP,A)
【文献】特表2008-503887(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04B 10/27
H04B 10/25
(57)【特許請求の範囲】
【請求項1】
方法であって、
1つ以上のプロセッサが、ネットワークスイッチにある複数のケーブルを識別することと、
1つ以上のプロセッサが、前記複数のケーブルのうち所与のケーブル用のデータのコピーの残数を判断することとを含み、前記コピーの残数は、前記複数のケーブルに含まれるケーブルの総数から、完了したデータのコピーの数を減算した数から構成され、前記方法は、さらに、
前記1つ以上のプロセッサが、前記複数のケーブルの各々の遅延を決定することを含み、
各ケーブルの前記遅延は、
前記各ケーブル用のデータの前記コピーの残数と、
データの各コピーを作成するための時間の長さとに基づき、前記方法は、さらに、
前記1つ以上のプロセッサが、前記各遅延に基づいて、前記各ケーブルの光学ハードウェアをプログラムすることをさらに含む、方法。
【請求項2】
前記光学ハードウェアは、入り口光学ハードウェアと、出口光学ハードウェアとを含む、請求項1に記載の方法。
【請求項3】
前記光学ハードウェアをプログラムすることは、前記入り口光学ハードウェアまたは前記出口光学ハードウェアの少なくとも1つをプログラムすることを含む、請求項2に記載の方法。
【請求項4】
前記光学ハードウェアをプログラムするとき、前記方法は、
前記1つ以上のプロセッサが、前記各ケーブルの前記遅延に基づいて、前記入り口光学ハードウェアをプログラムすることと、
前記複数のケーブルの各々の前記遅延に基づいて、前記複数のケーブルを経由して前記データを同期的に送信することとをさらに含む、請求項2に記載の方法。
【請求項5】
前記方法は、複製エンジンが、前記複数のケーブルを経由して送信される前記データをコピーすることをさらに含み、前記複製エンジンによって作成されるコピーの総数は、前記複数のケーブルに含まれるケーブルの総数から1を減算した数に相当する、請求項1に記載の方法。
【請求項6】
前記方法は、
前記1つ以上のプロセッサが、各ケーブルの長さを判断することと、
前記1つ以上のプロセッサが、前記各ケーブルの長さに基づいて第2遅延を決定することとをさらに含む、請求項1に記載の方法。
【請求項7】
前記第2遅延を決定することは、
前記1つ以上のプロセッサが、前記各ケーブルの長さに沿って前記データが移動する時間の長さを判断することと、
前記1つ以上のプロセッサが、前記時間の長さを比較することと、
前記1つ以上のプロセッサが、前記比較に基づいて、前記複数のケーブルの各々の前記第2遅延を決定することとをさらに含む、請求項6に記載の方法。
【請求項8】
前記1つ以上のプロセッサが、前記各ケーブルの前記第2遅延に基づいて、前記各ケーブルの前記光学ハードウェアをプログラムすることをさらに含む、請求項6に記載の方法。
【請求項9】
ケーブル毎の前記遅延は、それぞれのケーブルを経由して送信された前記データがそれぞれの送信先に同期的に届くことを可能にする、請求項1に記載の方法。
【請求項10】
1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに請求項1~9のいずれか1項に記載の方法を実行させる命令を含む、プログラム。
【請求項11】
請求項10に記載のプログラムを格納する記憶装置と、
前記プログラムを実行するように構成された1つ以上のプロセッサ
とを備え
る、デバイス。
【発明の詳細な説明】
【背景技術】
【0001】
背景
データを送受信する際の公正さは、エンドユーザが同じ時間に同じ情報を受信する、すべてのエンドユーザに情報を送信するのに同じ時間がかかる、という前提に基づいている。公正さを保証するために、ネットワークは、通常、データが送信されるネットワーク内の物理ケーブルの長さを変更して、特定のネットワークパスに沿ったレイテンシを増やしたり減らしたりする。ケーブルの長さを長くしたり短くしたりすることは、正確さの面で難しい。さらには、ケーブルの長さを長くしたり短くしたりすることは、特に、大規模ネットワークにおいては、人手および材料の両面で費用がかかる。
【発明の概要】
【0002】
概要
本技術は、概して、データを送受信する際の不公正を緩和するためにファイバーネットワーク内に既に存在しているハードウェアにおいて遅延をプログラムすることを対象とする。遅延は、ネットワークの導入後に光学ハードウェアにプログラムされ得る。遅延は、ネットワークスイッチが送信されるデータを複製するのにかかる時間および/またはケーブルの長さに基づいて決定され得る。いくつかの例によると、遅延は、ケーブルの出口光学ハードウェアおよび入り口光学ハードウェアのうち一方または両方にプログラムされ得る。プログラマブル遅延によって、情報が同期的に受信されるよう意図されているときに、ある送信先またはエンドユーザが別の送信先よりも先にデータを受信する、という不公正を緩和することができる。
【0003】
本技術の1つの態様は、方法を対象とする。この方法は、1つ以上のプロセッサが、ネットワークスイッチにある複数のケーブルを識別することと、1つ以上のプロセッサが、複数のケーブルのうち所与のケーブル用のデータのコピーの残数を判断することとを含み、コピーの残数は、複数のケーブルに含まれるケーブルの総数から、完了したデータのコピーの数を減算した数から構成され、方法は、さらに、1つ以上のプロセッサが、複数のケーブルの各々のケーブルの遅延を決定することを含み、各ケーブルの遅延は、各ケーブル用のデータのコピーの残数と、データの各コピーを作成するための時間の長さとに基づき、1つ以上のプロセッサが、遅延に基づいて、各ケーブルの光学ハードウェアをプログラムすることをさらに含む。
【0004】
光学ハードウェアは、入り口光学ハードウェアと、出口光学ハードウェアとを含んでもよい。光学ハードウェアをプログラムすることは、入り口光学ハードウェアまたは出口光学ハードウェアの少なくとも1つをプログラムすることを含んでもよい。光学ハードウェアをプログラムするとき、方法は、1つ以上のプロセッサが、各ケーブルの遅延に基づいて、入り口光学ハードウェアをプログラムすることと、複数のケーブルの各々のケーブルの遅延に基づいて、複数のケーブルを経由してデータを同期的に送信することとをさらに含んでもよい。
【0005】
方法は、複製エンジンが、複数のケーブルを経由して送信されるデータをコピーすることをさらに含んでもよく、複製エンジンによって作成されるコピーの総数は、複数のケーブルに含まれるケーブルの総数から1を減算した数に相当する。
【0006】
方法は、1つ以上のプロセッサが、各ケーブルの長さを判断することと、1つ以上のプロセッサが、各ケーブルの長さに基づいて第2遅延を決定することとをさらに含んでもよい。第2遅延を決定することは、1つ以上のプロセッサが、各ケーブルの長さに沿ってデータが移動する時間の長さを判断することと、1つ以上のプロセッサが、時間を比較することと、1つ以上のプロセッサが、比較に基づいて、複数のケーブルの各々の第2遅延を決定することとをさらに含んでもよい。方法は、1つ以上のプロセッサが、各ケーブルの第2遅延に基づいて、各ケーブルの光学ハードウェアをプログラムすることをさらに含んでもよい。
【0007】
ケーブル毎の遅延は、それぞれのケーブルを経由して送信されたデータがそれぞれの送信先に同期的に届くことを可能にしてもよい。
【0008】
本技術の別の態様は、1つ以上のプロセッサを備えるデバイスを対象とする。当該1つ以上のプロセッサは、ネットワークスイッチにある複数のケーブルを識別し、複数のケーブルのうち所与のケーブル用のデータのコピーの残数を判断するように構成されてもよく、コピーの残数は、複数のケーブルに含まれるケーブルの総数から、完了したデータのコピーの数を減算した数から構成され、1つ以上のプロセッサは、さらに、複数のケーブルの各々のケーブルの遅延を決定するように構成され、各ケーブルの遅延は、各ケーブル用のデータのコピーの残数と、データの各コピーを作成するための時間の長さとに基づき、1つ以上のプロセッサは、さらに、遅延に基づいて、各ケーブルの光学ハードウェアをプログラムするように構成される。
【0009】
本技術のさらに別の態様は、非一時的な記憶媒体を対象とする。記憶媒体は、命令を含み、命令は、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに、ネットワークスイッチにある複数のケーブルを識別させ、複数のケーブルのうち所与のケーブル用のデータのコピーの残数を判断させ、コピーの残数は、複数のケーブルに含まれるケーブルの総数から、完了したデータのコピーの数を減算した数から構成され、1つ以上のプロセッサに、さらに、複数のケーブルの各々のケーブルの遅延を決定させ、各ケーブルの遅延は、各ケーブル用のデータのコピーの残数と、データの各コピーを作成するための時間の長さとに基づき、1つ以上のプロセッサに、さらに、遅延に基づいて、各ケーブルの光学ハードウェアをプログラムさせる。
【図面の簡単な説明】
【0010】
【
図1】本開示の態様に係る、すべてのケーブルの長さが等しいネットワーク例のブロック図である。
【
図2】本開示の態様に係る、ケーブルの長さがそれぞれ異なり得るネットワーク例のブロック図である。
【
図3】本開示の態様に係る、ケーブルの両端に光学ハードウェアが含まれているネットワーク例のブロック図である。
【
図4】本開示の態様に係る、システム例のブロック図である。
【
図5】本開示の態様に係る、遅延をプログラムするための方法例のフロー図である。
【発明を実施するための形態】
【0011】
詳細な説明
本技術は、概して、データを送受信する際の不公正を緩和するために光ファイバーネットワークにおいて遅延をプログラムすることを対象とする。プログラマブル遅延によって、データを同期的に送信および/または受信できるようになる。これによって、情報が同期的に配布されるよう意図されているときに、ある送信先またはエンドユーザが別の送信先よりも先にデータを受信する、という不公正を緩和することができるであろう。
【0012】
遅延は、光ファイバーネットワークの導入後に光学ハードウェアにプログラムされ得る。光学ハードウェアは、たとえば、I2Cバスを介して構成され得る。たとえば、光ファイバーネットワークは、複数の光ファイバーケーブル、複数のネットワークスイッチ、複数の光学ハードウェアなどを含み得る。遅延は、ケーブルの出口光学ハードウェアおよび入り口光学ハードウェアのうち一方または両方にプログラムされ得る。遅延量は、ネットワークスイッチとユーザハードウェアとの間のケーブルの不均衡に基づいて決定され得る。これに加えて、またはこの代わりに、遅延量は、ネットワークスイッチが送信されるデータを複製するのにかかる時間に基づいて決定され得る。いくつかの例によると、遅延は、ケーブルの長さがそれぞれ異なることを補償するために出口側および/または入り口光学ハードウェアにプログラムされ得る。
【0013】
光ファイバーネットワークの導入後に遅延を決定およびプログラムすることによって、遅延は、システムのケーブル内でのリアルタイムのレイテンシ変動に基づいて決定され得る。さらには、このリアルタイムの変動に基づいて遅延をプログラムすることによって、ケーブル毎の遅延を効率的に決定および実装でき得る。たとえば、遅延をプログラムすることで、ファイバーの長さを足したり引いたりするなど、光ファイバーネットワークを手作業で変更する必要性を軽減すことができる。これによって、既に光ファイバーネットワークの一部であるハードウェアに遅延がプログラムされるので、材料費を抑えつつ、不公正さを正す効率を上げることができる。
【0014】
プログラム可能であるという遅延の性質によって、システムを大規模なデータセンター向けにスケーリングして実装することが可能になる。たとえば、特定のチャネルの遅延を測定データに基づいて決定およびプログラムしてもよい。また、プログラマブル遅延は、データがギガビット/秒、たとえば、25ギガビット/秒の速度で移動する高速データセンターで使用するのに適している。
【0015】
図1は、ネットワークスイッチと送信先ハードウェアとの間のネットワークの構成例を示す図である。ネットワークは、たとえば、光ファイバーネットワーク、銅線またはイーサネットネットワークなどであり得る。ネットワーク100は、ネットワークスイッチ102と、光学ハードウェア106~114と、複数のケーブル116~124と、送信先ハードウェア126~134とを含み得る。いくつかの例によると、ネットワークスイッチ102は、「TOR」(Top of Rack)スイッチであり得、送信先ハードウェア126~134は、ユーザまたは消費者向けハードウェアであり得る。ネットワークスイッチ102は、複製エンジン104を備え得る。複製エンジン104は、データを複製、またはコピーして、ケーブル116~124を経由して送信するように構成され得る。ケーブル116~124は、たとえば、光ファイバーケーブル、イーサネットケーブルなどであり得る。
【0016】
データは、ネットワークスイッチ102から複数の送信先126~134、またはエンドユーザにケーブル116~124を経由して送信され得る。ネットワークスイッチ102は、いくつかの例では、マルチキャスト木の葉であり得る。送信先ハードウェア126~134がそれぞれ異なる時間にネットワークスイッチ102を経由してデータを受信するという不公正を防ぐために、データは、ほぼ同じ時間に送信先ハードウェア126~134に届かなければならない。データは、たとえば、マルチキャストパケットであり得る。データが同じ時間に送信先ハードウェア126~134に届くことを保証するために、ケーブル116~124毎の遅延を決定し得る。遅延は、光ファイバーネットワーク100が導入された後に決定され得、ネットワークスイッチ102から送信先ハードウェア126~134にデータが送信される前に光学ハードウェア106~114にプログラムされ得る。データは送信されると送信先ハードウェア126~134によって同期的に受信される、という公正さを保証しようと努めて、遅延がプログラムされ得る。
【0017】
複数のケーブル116~124がネットワークスイッチ102に連結され得る。データは、ネットワークスイッチ102から送信先ハードウェア126~134に複数のケーブル116~124を経由して送信され得る。ケーブル116~124を経由してデータが送信される順番は、静的(static)であり得る。静的順番は、データ送信の間で送信の順番が変化しないことを示し得る。いくつかの例によると、静的順番を決定することによって、すべてのケーブルに対して一律の遅延を決定するのではなく、個々のケーブル毎の遅延が決定され得る。たとえば、
図1に示すように、ケーブル116は、静的順番の一番目であり得、ケーブル124は、静的順番の最後であり得る。このような例では、ケーブル118が2番目、ケーブル120が3番目、ケーブル122が4番目になる。この例では、ケーブル116~124の静的順番は、左から右の順番である。別の例では、ケーブル116~124の静的順番は、ケーブル124が静的順番の1番目になり、ケーブル116が静的順番の最後になるよう、右から左の順番であってもよく、ケーブル120が静的順番の1番目になり、ケーブル118が静的順番の最後になるよう、中央から右に移動する順番であってもよい。したがって、ケーブル116~124を左から右に順序付けすることは、あくまで一例であり、限定ではない。
【0018】
いくつかの例によると、各ケーブル116~124の遅延は、その位置が送信の静的順番のどこにあるか、および作成するコピーの残数に基づいて、それぞれ異なり得る。たとえば、送信の静的順番の1番目のケーブルの遅延は、送信の静的順番の最後のケーブルの遅延よりも大きい。たとえば、ケーブル116が静的順番の1番目のケーブルであり、ケーブル124が静的順番における最後のケーブルである場合、ケーブル116の遅延は、ケーブル124の遅延よりも大きくなる。遅延は、複製エンジン104がデータを複製するのに必要な時間、および複製エンジン104がデータを複製しなければならない回数に基づいて決定され得る。いくつかの例では、遅延は、各ケーブル用のコピーが作成された後の、作成するコピーの残数に基づき得る。
【0019】
いくつかの例によると、作成するコピーの残数は、ネットワークスイッチ102に連結されたケーブルの総数から完了したコピーの数を減算した数に基づき得る。
図1に示すように、ネットワーク100には5本のケーブル116~124が存在する。送信の静的順番の2番目のケーブルであるケーブル118を用いて、例として、たとえば、ケーブル116用のコピーおよびケーブル118用のコピーという2つのコピーが作成済みである。ケーブル118用のコピーの後、作成するコピーの残数は3つである。2番目のケーブル、たとえば、ケーブル118の遅延を決定するために、コピーの残数である3を、複製エンジン104がデータのコピーを作成するのにかかる時間で乗算し得る。
【0020】
遅延によって、それぞれのケーブル116~124は、データが送信される前に複製エンジン104からデータのコピーを受信できるようになる。いくつかの例では、ケーブル116~124毎の遅延によって、データを同時に送信できるようになり、および/または送信先ハードウェア126~134によって同期的に受信できるようになる。遅延は、出口側および/または入り口光学ハードウェア106~114にプログラムされ得る。たとえば、データは、同時に送信され得、遅延は、送信先ハードウェア126~134によってデータが同期的に受信されるよう、入り口光学ハードウェア106~114にプログラムされ得る。別の例では、遅延は、データが、遅延して送信されるが、送信先ハードウェア126~134によって同期的に受信されるよう、出口光学ハードウェア106~114にプログラムされ得る。さらに別の例では、遅延は、送信先ハードウェア126~134によってデータが同期的に受信されるよう、出口光学ハードウェアおよび入り口光学ハードウェア106~114の両方にプログラムされ得る。
【0021】
例として、
図1に示すように、5本のケーブル116~124が存在し、複製エンジン104が1回の複製に1ナノ秒を必要とする場合、第1ケーブル116の遅延は、4ナノ秒となり得、第2ケーブル118の遅延は、3ナノ秒となり得るなどし、第5ケーブル124の遅延は0ナノ秒となり得る。第1ケーブル116における4ナノ秒の遅延によって、複製エンジン104は、後続のケーブル118~124毎のデータを、送信する順番で複製できるようになる。第1ケーブル116を経由するデータの送信を4ナノ秒遅延させることによって、それぞれ残りのケーブル118~124は、送信するデータのコピーを、当該遅延中に受信し得る。さらには、第1ケーブル116を経由するデータの送信を4ナノ秒遅延させることによって、最後のケーブル124、たとえば、第5ケーブル124用のデータの最後のコピーが完了する。そのため、第1ケーブル116における遅延は、複製エンジン104が残りのケーブル118~124の各々用のデータをコピーするのにかかる時間に対応し得る。
【0022】
これに加えて、またはこの代わりに、遅延は、ファイバーの長さに基づき得る。
図1の例の目的のため、各ケーブルの長さ116~124は、ほぼ等しい。ケーブル116~124の長さがほぼ等しい例では、差を補償するための遅延は必要ないであろう。
【0023】
遅延期間の後、データは、ネットワークスイッチ102から送信先ハードウェア126~134に送信され得る。ケーブル116~124毎の遅延によって、データは、ネットワークスイッチ102によって送信できるようになるので、送信先ハードウェア126~134によって同期的に受信できるようになる。
【0024】
図1では、ネットワークスイッチ102がTORであり得、送信先ハードウェア126~134がエンドユーザであり得るネットワークが示されているが、いくつかの例によると、ネットワークスイッチ102が単にS2スイッチなどのネットワークスイッチであってTORでなはいよう、送信先ハードウェア126~134がTORであってもよい。このような例では、送信先ハードウェア126~134のそれぞれは、マルチキャスト木の葉であり得る。遅延は、ネットワークスイッチ102から送信先ハードウェア126~134(たとえば、マルチキャスト木の各葉)への複製エンジン104のファンアウトを補償するために決定され得る。
【0025】
図2は、ネットワークの別の構成例を示す図である。ネットワーク200は、
図1で説明したネットワーク100と実質的に同様のネットワークであり、ネットワークスイッチ202と、光学ハードウェア206~214と、ケーブル226~234と、送信先ハードウェア216~224とを含み得る。ネットワークスイッチ202は、たとえば、マルチキャスト木のTOR葉であり得る。送信先ハードウェア216~224は、消費者向けハードウェアであってもよく、エンドユーザの場所にあるハードウェアであってもよい。ケーブル226~234は、ケーブル226~234の長さがそれぞれ異なり得るという点で、
図1のケーブル116~124とは異なる。ケーブル226~234の長さがそれぞれ異なるこのような例では、ネットワークスイッチ202から送信先ハードウェア216~224へのデータ送信の遅延は、ケーブル226~234の長さ、それに加えて、またはその代わりに、複製エンジン204がケーブル226~234毎にデータをコピーするのにかかる時間に基づき得る。
【0026】
長いケーブルを移動するデータは、短いケーブルを移動するデータと比較して、その送信先に到達するのにより多くの時間がかかるであろう。長さが異なるケーブルをデータが移動するのにかかる時間の長さの差を補償するために、出口側および/または入り口光学ハードウェアに遅延がプログラムされ得る。ケーブルの長さに基づいて光学ハードウェアにプログラムされた遅延は、データを複製するのにかかる時間に基づいて決定される遅延に加えられる遅延であってもよく、それに代わる遅延であってもよい。
【0027】
ケーブルの長さに基づいた遅延は、キネマティック方程式を用いて決定され得る。たとえば、データパケットがケーブルに沿って移動する速度、およびケーブルの長さが分かっていると、データがネットワークスイッチ202からそれぞれの送信先ハードウェア216~224に移動するのにかかる時間、または、データがそれぞれの送信先ハードウェア216~224からネットワークスイッチ202に移動するのにかかる時間を判断できる。いくつかの例によると、これに加えて、またはこれに代えて、データパケットがケーブルを通過する速度を判断するときにデータパケットの大きさが用いられてもよい。
【0028】
【0029】
例として
図2のネットワーク200の構成を使用して、ケーブル226の長さは100メートルであり得ケーブル228の長さは101メートルであり得、ケーブル230の長さは103メートルであり得、ケーブル232の長さは112メートルであり得、ケーブル234の長さは103メートルであり得る。データは、1メートルのケーブルを移動するのに5ナノ秒かかり得、データが移動する速度は、0.2メートル/ナノ秒となる。各ケーブルの長さ、および各ケーブルを移動するのにかかる速度に基づいて、ケーブル毎の遅延を決定し得る。遅延は、ネットワーク200の最も長いケーブルを経由してデータが移動するのにかかる時間に対して各ケーブルをデータが移動するのにかかる時間を比較することによって決定され得る。いくつかの例によると、最も長いケーブルの長さと比較したそれぞれのケーブルの長さの違いが判断され得る。データがケーブルを経由して移動する速度が分かっていると、長さの違いを利用して遅延を決定し得る。
【0030】
図2の構成例では、最も長いケーブルは、ケーブル230およびケーブル234であり、これらは両方とも長さが103メートルである。ケーブル230およびケーブル234を経由して移動するデータは、長さが100メートルであるケーブル226を移動するデータと比較して、さらに3メートル移動する。データが移動する速度、たとえば、0.2メートル/ナノ秒に基づいて、ケーブル230および234を経由してデータを送信するのにかかる時間は、ケーブル226と比較して、15ナノ秒長くかかる。入り口光学ハードウェア206には、15ナノ秒の遅延をプログラムし得る。ケーブル230およびケーブル234を経由して移動するデータは、ケーブル232を経由して移動するデータと比較して、1メートル長く移動する。ケーブル230および234を経由してデータが送信されるのにかかる時間は、ケーブル232と比較して5ナノ秒長くかかる。入り口光学ハードウェア212には、75ナノ秒の遅延をプログラムし得る。ケーブル1およびケーブル234を経由して移動するデータは、ケーブル228を経由して移動するデータと比較して、さらに2メートル移動する。ケーブル230および234を経由してデータが送信されるのにかかる時間は、ケーブル228と比較して、10ナノ秒長くかかる。入り口光学ハードウェア208には、10ナノ秒の遅延をプログラムし得る。
【0031】
いくつかの例によると、ケーブルの長さ、および複製エンジン204が送信されるデータのコピーを作成するのにかかる時間に基づいて、出口側および/または入り口光学ハードウェアに遅延をプログラムし得る。いくつかの例によると、複製エンジン204に基づく遅延は、出口光学ハードウェア206~214にプログラムされ得、ケーブルの長さに基づく遅延は、入り口光学ハードウェアにプログラムされ得る。
【0032】
一例として、複製エンジン204は、1回のデータの複製に1ナノ秒を必要とし得る。複製エンジン204がそれぞれのケーブル226~234用のデータのコピーを作成するのにかかる時間に基づいて、ケーブル226については、出口光学ハードウェア206に4ナノ秒の遅延がプログラムされ得、ケーブル228については、出口光学ハードウェア208に3ナノ秒の遅延がプログラムされ得、ケーブル230については、出口光学ハードウェア210に2ナノ秒の遅延がプログラムされ得、ケーブル232については、出口光学ハードウェア212に1ナノ秒の遅延がプログラムされ得、ケーブル234については、出口光学ハードウェア214に0ナノ秒の遅延がプログラムされ得る。ケーブル234の遅延が0ナノ秒であることは、ケーブル234用のデータのコピーが複製エンジン204によって作成されると、すべてのケーブル226~234を経由してデータを送信できることを示し得る。したがって、ケーブル234用のコピーが作成されるとすべてのコピーが作成されることになるので、ケーブル234には遅延が必要ない。この遅延は、ケーブルの長さに基づく遅延に加えて、光学ハードウェア206~214にプログラムされ得る。
【0033】
いくつかの例によると、出口光学ハードウェアには、複製エンジンがデータを作成するのにかかる時間に基づく遅延に加えて、ケーブルの長さに基づく遅延がプログラムされ得、入り口光学ハードウェアには、ケーブルの長さに基づく遅延がプログラムされ得る。たとえば、入り口光学ハードウェア206には、ケーブルの長さが異なることによる遅延に基づいて、15ナノ秒の遅延がプログラムされ得、出口光学ハードウェア206には、ケーブルの長さが異なることによる遅延、および複製エンジンに基づいて、19ナノ秒の遅延がプログラムされ得る。別の例として、入り口光学ハードウェア208には、ケーブルの長さの違いに基づいて、10ナノ秒の遅延がプログラムされ得、出口光学ハードウェア208には、ケーブルの長さの違い、および複製エンジンに基づいて、13ナノ秒の遅延がプログラムされ得る。
【0034】
ケーブルの長さに基づく遅延、および/または複製エンジンがデータをコピーするのにかかる時間に基づく遅延は、ネットワーク200が導入された後にI2Cバスを介して光学ハードウェア206~214にプログラムされ得る。ネットワーク200が導入された後に遅延をプログラムすることによって、入り口側の遅延、またはケーブルの長さに基づく遅延を正確に決定できるようになる。たとえば、ネットワーク200が導入された後のケーブルの長さは、ケーブルに沿ってデータが移動するのにかかる時間、およびデータが移動する速度に基づいて判断できる。これにより、ケーブルを特定の長さに手作業で切ることに頼ることなく、ケーブルの長さを正確に判断できるようになる。ネットワーク200が導入されてからケーブルの長さを判断および利用することによって、ネットワーク200を手動で変更することを軽減できる。たとえば、特定の長さの新しいケーブルを設置しなくて済んだり、ケーブルの長さを長くしたり短くしたりする必要なくなったりする。これにより、ネットワーク200に既に存在しているハードウェアに遅延がプログラムされるので、材料費を抑えつつ、ネットワーク200においてデータを送受信する際の不公正さを正す効率を上げることができる。
【0035】
図3は、ネットワークの別の構成例を示す図である。ネットワーク300は、
図1および
図2で説明したネットワーク100、200と実質的に同様のネットワークであり、ネットワークスイッチ302と、光学ハードウェア306~310と、ケーブル324~328と、送信先ハードウェア312~316とを含み得る。送信先ハードウェア216~224は、たとえば、TORであり得る。送信先ハードウェア312~316は、光学ハードウェア318~322をそれぞれ含み得る。ケーブル324~328の長さは、ケーブル226~234のように、それぞれ異なり得る。複製エンジン304およびケーブル324~328の長さに基づいて決定される遅延が、入り口側および/もしくは出口光学ハードウェア306~310、ならびに/または入り口側および/もしくは出口光学ハードウェア318~322にプログラムされ得る。プログラムされた遅延によって、ネットワークスイッチ302と送信先ハードウェア312~316との間のユニキャストトラフィックにおける不公正が緩和され得る。
【0036】
一例として、ケーブル324および328は、長さが同じケーブルであって、ケーブル326は、さらに長いケーブルである。このような例では、入り口側および/または出口光学ハードウェア306、310には、ケーブルの長さに基づく遅延がプログラムされ得、入り口側および/または出口光学ハードウェア308、318、320、322には、0の遅延がプログラムされる。別の例では、入り口側および/または出口光学ハードウェア318、322には、ケーブルの長さに基づく遅延がプログラムされ得、入り口側および/または出口光学ハードウェア306、310、318、320には、0の遅延がプログラムされる。
【0037】
いくつかの例によると、特定のリンクの場合、ケーブルの一端にある出口光学ハードウェアには、遅延がプログラムされ得、ケーブルの他端にある入り口光学ハードウェアには、0の遅延がプログラムされ得る。これにより、光学ハードウェアの非対称を補償するために光学ハードウェアをさらにプログラムできるようになる。いくつかの例によると、ケーブルの一端にある出口光学ハードウェアに遅延をプログラムし、ケーブルの他端にある入り口光学ハードウェアに遅延をプログラムすることで、プリント配線基板(「PCB」)の不公正が補償できるであろう。
【0038】
図4は、上述した特徴および本明細書に記載した特徴が実装され得るシステム例を示す図である。複数の構成要素が図示されているが、このような構成要素は、非限定例に過ぎず、その他の構成要素をさらに備えてもよく、代わりに備えてもよい。これらの図は、本開示の範囲および本明細書に記載の特徴の有用性を限定すると考えられるべきではない。この例では、システム400は、ネットワークスイッチ402と、1つ以上の送信先ハードウェア416とを備え得る。
【0039】
ネットワークスイッチ402は、1つ以上のプロセッサ404と、メモリ406と、命令408と、データ410と、複製エンジン412と、光学ハードウェア414とを備え得る。ネットワークスイッチ402は、たとえば、TOR、マルチキャスト木の葉、S2スイッチなどであり得る。
【0040】
プロセッサ404は、市販されているマイクロプロセッサなど、従来のプロセッサであってもよい。これに代えて、1つ以上のプロセッサは、特定用途向け集積回路(ASIC)であってもよく、その他のハードウェアベースのプロセッサであってもよい。
図4は、ネットワークスイッチ402のプロセッサ、メモリ、およびその他の要素を機能的に同じブロック内にあると示しているが、当業者であれば、プロセッサ、コンピューティングデバイス、またはメモリは、実際には、複数のプロセッサ、複数のコンピューティングデバイス、または複数のメモリ(同じ物理筐体内に記憶されていてもそうでなくてもよい)を含み得ることが分かるであろう。同様に、メモリは、ネットワークスイッチ402の筐体とは異なる筐体に配置されているハードドライブまたはその他の記憶媒体であってもよい。したがって、プロセッサやコンピューティングデバイスについての言及は、複数のプロセッサの集合や、複数のコンピューティングデバイスの集合や、複数のメモリの集合(並列して動作してもよく、並列して動作しなくてもよい)についての言及を含み得ると分かるであろう。
【0041】
メモリ406は、プロセッサ404によって実行され得る命令408を含む、プロセッサによってアクセス可能な情報を記憶し得る。メモリ406は、プロセッサ404によってアクセス可能な情報を記憶するよう機能するタイプのメモリであり得、非一時的なコンピュータ読み取り可能な媒体、または、ハードドライブ、メモリカード、読み出し専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、光ディスク、およびその他の書き込み可能メモリ、ならびに読取り専用メモリなど、電子機器を利用して読み出せるデータを記憶するその他の媒体を含む。本明細書に開示した主題は、上記の様々な組合せを含み得、これにより、命令408およびデータ410の様々な部分が様々な種類の媒体上に記憶される。
【0042】
メモリ406は、命令408に従ってプロセッサ404によって検索、記憶、または修正され得る。たとえば、本開示は、特定のデータ構造によって限定されないが、データ410は、複数の異なるフィールドおよびレコードを有するテーブル、XML文書、またはフラットファイルとしてコンピュータレジスタ、リレーショナルデータベースに記憶され得る。データ410は、バイナリ値、ASCII、またはUnicodeなど、コンピュータが読み取り可能な形式にフォーマットされ得るが、これらに限定されない。さらなる一例に過ぎないが、データ410は、画素から構成されるビットマップとして記憶され得る。ビットマップは、圧縮されて記憶されてもよく、圧縮されずに記憶されてもよく、様々な画像フォーマット(たとえば、JPEG)、ベクターベースのフォーマット(たとえば、SVG)、またはグラフィックを描画するためのコンピュータ命令で記憶されてもよい。また、データ410は、数字、説明文、プロプライエタリコード、ポインタ、ほかのメモリ(その他のネットワークの場所を含む)に格納されているデータへのリファレンスなど、関連性のある情報を特定するのに十分な情報、または、関連性のあるデータを計算するための関数によって用いられる情報を含み得る。
【0043】
命令408は、機械コードなど、直接実行される命令セットであってもよく、スクリプトなど、プロセッサ404によって間接的に実行される命令セットであってもよい。その点に関して、「命令」、「アプリケーション」、「ステップ」、および「プログラム」という用語は、本明細書では同義で用いられ得る。命令は、プロセッサが直接処理するために目的コードフォーマットで記憶されてもよく、スクリプトを含むその他のコンピューティングデバイスの言語で記憶されてもよく、要求に基づいて解釈されて事前にコンパイルされるそれぞれ独立したソースコードモジュールの集まりで記憶されてもよい。命令の関数、メソッド、およびルーチンの詳細については後述する。
【0044】
複製エンジン412は、ネットワークスイッチに連結された複数のケーブルを経由して送信されるデータをコピーし得る。複製エンジン412は、データを複製またはコピーするのに所定の期間を必要とし得る。所定の期間は、コピーするデータのサイズまたは量に基づき得る。複製エンジン412は、データが送信先ハードウェア416によって同期的に受信されるように十分な回数、データをコピーし得る。たとえば、複製エンジン412は、ケーブルの総数から1を減算した数に相当する総数のコピーを作成し得る。コピーの総数は、ケーブルの総数から1を減算した数に相当し得る。1を引くのは、データの原本が送信先ハードウェア416に送信されるからである。
【0045】
プロセッサ404は、光学ハードウェア414に遅延がプログラムされると決定し得る。たとえば、プロセッサ404は、複製エンジン412がコピーを作成するのにかかる時間に基づいて、ネットワークスイッチ402に連結されたケーブルのうち1つ以上のケーブルの遅延を決定し得る。このような例では、所与のケーブルの遅延は、作成するコピーの残数に基づいて決定され得る。コピーの残数は、作成済みのコピーの数、およびこれから作成するコピーの総数に基づいて決定され得る。たとえば、ネットワークスイッチ402に連結されたケーブルが10本存在し、複製エンジン412がケーブル1~6用のデータのコピーを作成済みである場合、ケーブル6用のデータのコピーを作成後、これから作成するデータのコピーの数は、4つである。所与のケーブルの遅延を決定するために、作成するコピーの残数に、各コピーを作成するのにかかる時間が乗算され得る。
【0046】
いくつかの例によると、プロセッサ404は、これに加えて、またはこれに代えて、ネットワークスイッチ402に連結されたケーブルの長さに基づいて遅延を決定してもよい。プロセッサ404は、各ケーブルの長さをデータが移動するのにかかる時間の長さを決定し得る。各ケーブルをデータが移動するのにかかる時間を比較して遅延を決定し得る。たとえば、プロセッサ404は、ケーブルをデータが移動するのにかかる最も長い時間の長さをベースラインとして使用し得る。残りの時間の長さは、この最も長い時間の長さと比較され得る。最も長い時間の長さとケーブル毎の時間の長さとの差が、そのケーブルの遅延として光学ハードウェアにプログラムされ得る。
【0047】
光学ハードウェア414は、I2Cバス428を介して構成され得る。光学ハードウェア414は、入り口側遅延および/または出口側遅延で構成され得る。
【0048】
送信先ハードウェア416は、1つ以上のプロセッサ418と、メモリ420と、命令422と、データ424と、光学ハードウェア426と、I2Cバス430とを備え得る。これらの構成要素は、ネットワークスイッチ402で上述した構成要素と同じまたは同様に動作し得る。送信先ハードウェア416は、いくつかの例では、TOR、スマートフォン、ラップトップ、デスクトップ、ホームアシスタントデバイス、AR/VRグラスなどのエンドユーザデバイス、消費者向けハードウェアなどであり得る。
【0049】
図5は、各ケーブルの光学ハードウェアをプログラムするための方法例を示す図である。下記の操作は、後述する順序と完全に同じ順序で実行されなくてもよい。むしろ、様々な操作が様々な順序で処理されてもよく、同時に処理されてもよく、操作が省略されてもよい。
【0050】
ブロック502では、ネットワークスイッチにある複数のケーブルを識別する。これらのケーブルは、たとえば、光ファイバーケーブルであり得る。各ケーブルは、エンドユーザ、TOR(Top of Rack)などの送信先とネットワークスイッチとの間にリンクを提供し得る。
【0051】
ブロック504では、複数のケーブルのうち所与のケーブル用のデータのコピーの残数を判断する。コピーの残数は、当該複数のケーブルに含まれるケーブルの総数から、完了したデータのコピーの数を減算した数から構成され得る。たとえば、ネットワークスイッチは、複製エンジンを備える。複製エンジンは、複数のケーブルを経由して送信されるデータのコピーを作成し得る。これらのコピーは、ケーブルの順番に相当する順序、送信する順序などで作成され得る。作成するコピーの残数を判断するために、作成するコピーの総数から作成済みのコピーの数が減算され得る。
【0052】
ブロック506では、複数のケーブルの各々の遅延を決定する。各ケーブルの遅延は、各ケーブル用のデータのコピーの残数、およびデータの各コピーを作成するための時間の長さに基づき得る。ケーブル毎の遅延によって、各ケーブルを経由して送信されたデータを、それぞれの送信先に同期的に届けることができるようになる。たとえば、ケーブルの順番の一番目のケーブルの遅延は、ケーブルの順番の後ろのケーブルよりも大きい。順番の一番目にあるケーブルの遅延は、そのケーブルのコピーが作成された後には、順番の最後にあるケーブルよりも作成するコピーの残数が多いので、大きい。
【0053】
ブロック508では、各遅延に基づいて、各ケーブルの光学ハードウェアをプログラムし得る。たとえば、各ケーブルは、ケーブルの一端または両端に、入り口側および/または出口光学ハードウェアを備え得る。一端または両端にある入り口側および/または出口光学ハードウェアに遅延をプログラムし得る。各遅延によって、複数のケーブルを経由してデータを同期的に送信できるようになる。
【0054】
いくつかの例によると、各ケーブルの長さを判断し得る。第2遅延は、各ケーブルの長さに基づいて決定され得る。たとえば、データが各ケーブルの長さに沿って移動するのにかかる時間の長さを判断し得る。それぞれの時間を比較し得る。比較に基づいて、遅延を決定し得る。たとえば、長いケーブルは、短いケーブルと比較して、データがケーブルの長さを移動するのにより多くの時間の長さを有し得る。長いケーブルと短いケーブルとの時間差は、遅延として短いケーブルに加えられ得る。ケーブルの一端または両端にある入り口側および/または出口光学ハードウェアに、ケーブルの長さに基づいて決定された第2遅延をプログラムし得る。
【0055】
遅延は、ネットワークの導入後にプログラムされ得る。ネットワークの導入後に遅延を決定してプログラムすることによって、ネットワークのケーブル内のリアルタイムのレイテンシ変動に基づいて遅延を決定できる。さらには、ネットワークの導入後に遅延を決定してプログラムすることによって、ケーブル毎の遅延を効率よく決定および実装できる。たとえば、ケーブル毎の遅延をプログラムすることで、ファイバーを追加したり取り除いたり、または追加の構成要素を追加したりするなどしてネットワークの物理的構造を手動で変更する必要性を軽減できる。遅延は、既にネットワークの一部である光学ハードウェアにプログラムされ得る。よって、遅延を実装するための追加の構成要素は不要である。いくつかの例によると、プログラム可能であるという遅延の性質によって、ネットワークをスケーリングして大規模なデータセンターで実装することが可能になる。
【0056】
ケーブル毎に遅延をプログラムすることによって、データを送受信する際の不公正を緩和できる。遅延によって、データをネットワークで同期的に送受信することが可能になるので、1つの送信先が別の送信先よりも先にデータを受信するという不公正が緩和される。
【0057】
特段の説明がない限り、上記のその他の実施例は、相互排他的ではない。しかし、様々な組合せで実装してユニークな利点を実現できるであろう。上述した機能のこれらのおよびその他の変形例および組合せは、添付の特許請求の範囲によって示される発明の主題を逸脱しない範囲で利用することができるため、上記実施例の説明は、添付の特許請求の範囲によって示される発明の主題を限定するものではなく、一例としてとらえるべきである。これに加えて、本明細書に記載した実施例の提供、および「のような(such as)」、「を含み(including)」などの言葉で表現された節の提供は、添付の特許請求の範囲の発明の主題を特定の実施例に限定すると解釈されるべきではない。むしろ、これらの実施例は、多くの可能な実施態様のうちの1つだけを例示しているにすぎない。さらには、様々な図面における同一の参照番号によって同一または同様の要素を識別できる。