(57)【要約】  一実施形態においては、少なくとも１つの第１のチャネル（１０６）を介して相互に通信可能に結合されている複数のノード（１０２）を含むネットワーク（１００）内で形成される小グループが、１つの方法によって解消される。この方法は、それぞれのノードにおいて、そのノードが現在の小グループのメンバーであり、そのノードの第１の隣の隣のノード（１０２）からの第１のチャネル上におけるデータを求めて非同期的にリッスンするステップを含む。この方法は、そのノードにおいて、第１の有効なフレームが、そのノードの第１の隣の隣のノードから第１のチャネル上において受信された場合に、そのノードの第１の隣のノード（１０２）からの第１のチャネル上における第２の有効なフレームを求めて非同期的にリッスンするステップをさらに含む。この方法は、そのノードにおいて、第２の有効なフレームが第１のチャネル上において受信された場合に、第１の有効なフレームと第２の有効なフレームが、双方とも同じ他の小グループからのものであるかどうかをチェックするステップと、第１の有効なフレームと第２の有効なフレームが、双方とも同じ同じ他の小グループからのものである場合に、そのノードが現在の小グループから他の小グループへと離脱すべきかどうかを判断するステップとをさらに含む。
2007511991.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの第１のチャネル（１０６）を介して相互に通信可能に結合されている複数のノード（１０２）を含むネットワーク（１００）内で形成される小グループを解消する方法であって、
それぞれのノードにおいて、そのノードが現在の小グループのメンバーであり、
そのノードの第１の隣の隣のノードからの前記第１のチャネル上におけるデータを求めて非同期的にリッスンするステップと、
第１の有効なフレームが、そのノードの前記第１の隣の隣のノードから前記第１のチャネル上において受信された場合に、そのノードの第１の隣のノードからの前記第１のチャネル上における第２の有効なフレームを求めて非同期的にリッスンするステップと、
前記第２の有効なフレームが、前記第１のチャネル上において受信された場合に、前記第１の有効なフレームと前記第２の有効なフレームが、双方とも同じ他の小グループからのものであるかどうかをチェックするステップと、
前記第１の有効なフレームと前記第２の有効なフレームが、双方とも前記同じ同じ他の小グループからのものである場合に、そのノードが前記現在の小グループから前記他の小グループへと離脱すべきかどうかを判断するステップとを含む方法。
【請求項２】
少なくとも１つの第１のチャネル（１０６）を介して相互に通信可能に結合されている複数のノード（１０２）を含むネットワーク（１００）内で形成される小グループを解消する方法であって、
それぞれのノードにおいて、そのノードが現在の小グループのメンバーであり、
そのノードの第１の隣のノードからの前記第１のチャネル上におけるデータを求めて同期的にリッスンするステップと、
ある期間にわたって、そのノードの前記第１の隣のノードからの前記第１のチャネル上におけるデータを求めて同期的にリッスンした後、そのノードの前記第１の隣のノードから有効なフレームが受信されていない場合に、
そのノードの第１の隣の隣のノードからの前記第１のチャネル上におけるデータを求めて非同期的にリッスンするステップと、
第１の有効なフレームが、そのノードの前記第１の隣の隣のノードから前記第１のチャネル上において受信された場合に、そのノードの前記第１の隣のノードからの前記第１のチャネル上における第２の有効なフレームを求めて非同期的にリッスンするステップと、
前記第２の有効なフレームが、前記第１のチャネル上において受信された場合に、前記第１の有効なフレームと前記第２の有効なフレームが、双方とも前記同じ他の小グループからのものであるかどうかをチェックするステップと、
前記第１の有効なフレームと前記第２の有効なフレームが、双方とも前記同じ他の小グループからのものである場合に、そのノードが前記現在の小グループから前記他の小グループへと離脱すべきかどうかを判断するステップとを含む方法。
【請求項３】
前記第１の有効なフレームと前記第２の有効なフレームが、双方とも前記同じ他の小グループからのものである場合に、前記他の小グループが、前記現在の小グループよりも多くのメンバーノードを含んでいるならば、そのノードが、前記現在の小グループから前記他の小グループへと離脱する請求項２に記載の方法。
【請求項４】
前記複数のノードが、１つの順序を割り当てられ、そのノードが前記現在の小グループから前記他の小グループへと離脱すべきかどうかを判断するステップが、所与の小グループのうちのどのメンバーノードが、前記割り当てられた順序内で先頭に来るかを識別するステップを含む請求項２に記載の方法。
【請求項５】
前記チャネルがリングを含む請求項２に記載の方法。
【請求項６】
ノードを１つのチャネル（１０６）へ通信可能に結合するためのインターフェース（１１３０）を含むノード（１０２）であって、
前記チャネルが、前記ノードを複数の他のノード（１０２）へ通信可能に結合し、前記複数のノードが、前記チャネルが前記ノードを第１の方向において通信可能に結合する先である第１の隣のノード（１０２）および第１の隣の隣のノード（１０２）を含み、
前記ノードが、現在の小グループのメンバーであり、
前記ノードが、前記第１の隣の隣のノードからの前記第１のチャネル上におけるデータを求めて非同期的にリッスンし、
第１の有効なフレームが、前記第１の隣の隣のノードから前記第１のチャネル上において受信された場合に、前記ノードが、前記第１の隣のノードからの前記第１のチャネル上における第２の有効なフレームを求めて非同期的にリッスンし、
前記第２の有効なフレームが、前記第１のチャネル上において受信された場合に、前記ノードが、前記第１の有効なフレームと前記第２の有効なフレームが、前記同じ他の小グループからのものであるかどうかをチェックし、
前記第１の有効なフレームと前記第２の有効なフレームが、双方とも前記同じ他の小グループからのものである場合に、前記ノードが、前記ノードが前記現在の小グループから前記他の小グループへと離脱すべきかどうかを判断するノード。
【請求項７】
非同期的にリッスンする前に、前記ノードが、前記第１の隣のノードからの前記第１のチャネル上におけるデータを求めて同期的にリッスンし、
ある期間にわたって、そのノードの前記第１の隣のノードからの前記第１のチャネル上におけるデータを求めて同期的にリッスンした後、前記ノードが、前記第１の隣のノードから有効なフレームを受信していない場合に、前記ノードが、前記第１の隣の隣のノードからの前記第１のチャネル上における前記データを求めて非同期的にリッスンする請求項６に記載のノード。
【請求項８】
ノードを１つのチャネル（１０６）へ通信可能に結合するためのインターフェース（１１３０）を含むノード（１０２）であって、
前記チャネルが、前記ノードを複数の他のノード（１０２）へ通信可能に結合し、前記複数のノードが、前記チャネルが前記ノードを第１の方向において通信可能に結合する先である第１の隣のノード（１０２）および第１の隣の隣のノード（１０２）を含み、
前記ノードが、現在の小グループのメンバーであり、
前記ノードが、そのノードの第１の隣のノード（１０２）からの前記第１のチャネル上におけるデータを求めて同期的にリッスンし、
ある期間にわたって、そのノードの前記第１の隣のノードからの前記第１のチャネル上におけるデータを求めて同期的にリッスンした後、前記ノードが、前記第１の隣のノードから有効なフレームを受信していない場合に、
前記ノードが、前記第１の隣の隣のノードからの前記第１のチャネル上におけるデータを求めて非同期的にリッスンし、
第１の有効なフレームが、前記第１の隣の隣のノードから前記第１のチャネル上において受信された場合に、前記ノードが、前記第１の隣のノードからの前記第１のチャネル上における第２の有効なフレームを求めて非同期的にリッスンし、
前記第２の有効なフレームが、前記第１のチャネル上において受信された場合に、前記ノードが、前記第１の有効なフレームと前記第２の有効なフレームが、双方とも同じ他の小グループからのものであるかどうかをチェックし、
前記第１の有効なフレームと前記第２の有効なフレームが、双方とも前記同じ他の小グループからのものである場合に、前記ノードが、前記ノードが前記現在の小グループから前記他の小グループへと離脱すべきかどうかを判断するノード。
【請求項９】
第１のチャネル（１０６）を介して相互に通信可能に結合されている複数のノード（１０２）を含むネットワーク（１００）であって、
前記チャネルが、それぞれのノードを、第１の方向における第１の隣のノード（１０２）および第１の隣の隣のノード（１０２）へ通信可能に結合し、
それぞれのノードが、現在の小グループのメンバーであり、
それぞれのノードが、
そのノードの前記第１の隣の隣のノードからの前記第１のチャネル上におけるデータを求めて非同期的にリッスンし、
第１の有効なフレームが、そのノードの前記第１の隣の隣のノードから前記第１のチャネル上において受信された場合に、前記ノードが、そのノードの前記第１の隣のノードからの前記第１のチャネル上における第２の有効なフレームを求めて非同期的にリッスンし、
前記第２の有効なフレームが、前記第１のチャネル上において受信された場合に、そのノードが、前記第１の有効なフレームと前記第２の有効なフレームが、双方とも同じ他の小グループからのものであるかどうかをチェックし、
前記第１の有効なフレームと前記第２の有効なフレームが、双方とも前記同じ他の小グループからのものである場合に、そのノードが、そのノードがそのノードにとっての前記現在の小グループから前記他の小グループへと離脱すべきかどうかを判断するネットワーク。
【請求項１０】
第１のチャネル（１０６）を介して相互に通信可能に結合されている複数のノード（１０２）を含むネットワーク（１００）であって、
前記チャネルが、それぞれのノードを、第１の方向における第１の隣のノード（１０２）および第１の隣の隣のノード（１０２）へ通信可能に結合し、
それぞれのノードが、現在の小グループのメンバーであり、
それぞれのノードが、そのノードの第１の隣のノードからの前記第１のチャネル上におけるデータを求めて同期的にリッスンし、
ある期間にわたって、そのノードの前記第１の隣のノードからの前記第１のチャネル上におけるデータを求めて同期的にリッスンした後、そのノードが、そのノードの前記第１の隣のノードから有効なフレームを受信していない場合に、
前記ノードが、そのノードの前記第１の隣の隣のノードからの前記第１のチャネル上におけるデータを求めて非同期的にリッスンし、
第１の有効なフレームが、そのノードの前記第１の隣の隣のノードから前記第１のチャネル上において受信された場合に、前記ノードが、そのノードの前記第１の隣のノードからの前記第１のチャネル上における第２の有効なフレームを求めて非同期的にリッスンし、
前記第２の有効なフレームが、前記第１のチャネル上において受信された場合に、そのノードが、前記第１の有効なフレームと前記第２の有効なフレームが、双方とも同じ他の小グループからのものであるかどうかをチェックし、
前記第１の有効なフレームと前記第２の有効なフレームが、双方とも前記同じ他の小グループからのものである場合に、そのノードが、そのノードがそのノードにとっての前記現在の小グループから前記他の小グループへと離脱すべきかどうかを判断するネットワーク。
【発明の詳細な説明】
【技術分野】
【０００１】
【特許文献１】本出願は、２００３年１１月１９日に出願された米国特許仮出願第６０／５２３，８９２号、および２００３年１１月１９日に出願された米国特許仮出願第６０／５２３，８６５号に関連し、これらの出願日の利点について特許請求するものであり、これらの双方を参照により本明細書に組み込む。
【０００２】
本出願は、これと同じ日付に出願された下記の出願に関連し、これらのすべてを参照により本明細書に組み込む。
「ＵＮＳＹＮＣＨＲＯＮＯＵＳ  ＭＯＤＥ  ＢＲＯＴＨＥＲ’Ｓ  ＫＥＥＰＥＲ  ＢＵＳ  ＧＵＡＲＤＩＡＮ  ＦＯＲ  Ａ  ＲＩＮＧ  ＮＥＴＷＯＲＫＳ」という名称の米国特許出願第    ／              号（弁理士整理番号Ｈ０００５０５９−１６３３）。
【０００３】
「ＳＹＮＣＨＲＯＮＯＵＳ  ＭＯＤＥ  ＢＲＯＴＨＥＲ’Ｓ  ＫＥＥＰＥＲ  ＢＵＳ  ＧＵＡＲＤＩＡＮ  ＦＯＲ  Ａ  ＴＤＭＡ  ＢＡＳＥＤ  ＮＥＴＷＯＲＫ」という名称の米国特許出願第    ／              号（弁理士整理番号Ｈ０００９２８１−１６３３）。
【０００４】
「ＨＩＧＨ  ＩＮＴＥＧＲＩＴＹ  ＤＡＴＡ  ＰＲＯＰＡＧＡＴＩＯＮ  ＩＮ  Ａ  ＢＲＡＩＤＥＤ  ＲＩＮＧ」という名称の米国特許出願第    ／              号（弁理士整理番号Ｈ０００９２７９−１６３３）。
【０００５】
「ＤＩＲＥＣＴＩＯＮＡＬ  ＩＮＴＥＧＲＩＴＹ  ＥＮＦＯＲＣＥＭＥＮＴ  ＩＮ  Ａ  ＢＩ−ＤＩＲＥＣＴＩＯＮＡＬ  ＢＲＡＩＤＥＤ  ＲＩＮＧ  ＮＥＴＷＯＲＫ」という名称の米国特許出願第    ／              号（弁理士整理番号Ｈ０００９２８３−１６３３）。
【０００６】
「ＭＥＳＳＡＧＥ  ＥＲＲＯＲ  ＶＥＲＩＦＩＣＡＴＩＯＮ  ＵＳＩＮＧ  ＣＨＥＣＫＩＮＧ  ＷＩＴＨ  ＨＩＤＤＥＮ  ＤＡＴＡ」という名称の米国特許出願第    ／              号（弁理士整理番号Ｈ０００５０６１−１６３３）、本明細書では「Ｈ０００５０６１−１６３３出願」とも呼ばれる。
【０００７】
以降の説明は、一般に通信システムに関し、より詳細には分散型のフォルトトレラントな通信システムに関する。
【背景技術】
【０００８】
分散型のフォルトトレラントな通信システムは、例えば１つの不具合が場合によっては１人または複数の人間の負傷または死亡につながる可能性のあるアプリケーションにおいて使用される。このようなアプリケーションは、本明細書では「安全が決定的に重要となるアプリケーション」と呼ばれる。安全が決定的に重要となるアプリケーションの一例は、航空機あるいはその他のエアロスペースビークル内に含まれるセンサおよび作動装置をモニタおよび管理するために使用されるシステム内に存在する。
【０００９】
そのような安全が決定的に重要となるアプリケーションにおいて使用するために一般に検討される１つのアーキテクチャが、ＴＴＡ（Ｔｉｍｅ−Ｔｒｉｇｇｅｒｅｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）である。ＴＴＡシステムにおいては、複数のノードが、例えばＴＴＰ／Ｃ（Ｔｉｍｅ  Ｔｒｉｇｇｅｒｅｄ  Ｐｒｏｔｏｃｏｌ／Ｃ）あるいはＦＬＥＸＲＡＹプロトコルを使用して、２つの複製された高速の通信チャネルを介して相互に通信する。いくつかの実施形態においては、そのようなＴＴＡシステム内のノードのうちの少なくとも１つが、例えばＴＴＰ／Ａ（Ｔｉｍｅ  Ｔｒｉｇｇｅｒｅｄ  Ｐｒｏｔｏｃｏｌ／Ａ）を使用して、２つの複製された低速のシリアル通信チャネルを介して１つまたは複数のセンサおよび／または作動装置に結合される。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
このようなＴＴＡシステムの１つの構成においては、さまざまなノードが、２つの複製された通信チャネルを介して相互に通信し、これらの通信チャネルのそれぞれは、スター型トポロジを使用して実装される。このような構成においては、それぞれのチャネルは、１つの独立した中央集中型のバスガーディアンを含む。このような中央集中型のバスガーディアンのそれぞれは、それぞれのチャネルごとの単一障害点を表す。別の構成においては、ＴＴＡシステムは、リニアバス型トポロジを使用して実装され、ここでは、さまざまなノードが、２つの複製された通信チャネルを介して相互に通信し、それぞれのノードは、そのノードが結合されるそれぞれの通信チャネルごとに別々の独立したバスガーディアンを含む。すなわち、２つの通信チャネルが使用される場合には、それぞれのノードは、２つの独立したバスガーディアンを含む。しかし、それぞれのノード内に複数の独立したバスガーディアンを提供することは、（例えば、それぞれのノード内に複数のバスガーディアンを提供することに関連してコストが増加するために）一部のアプリケーションには適さない可能性がある。
【課題を解決するための手段】
【００１１】
一実施形態においては、少なくとも１つの第１のチャネルを介して相互に通信可能に結合されている複数のノードを含むネットワーク内で形成される小グループが、１つの方法によって解消（resolve）される。この方法は、それぞれのノードにおいて、そのノードが現在の小グループのメンバーであり、そのノードの第１の隣の隣のノードからの第１のチャネル上におけるデータを求めて非同期的にリッスンするステップを含む。この方法は、そのノードにおいて、第１の有効なフレームが、そのノードの第１の隣の隣のノードから第１のチャネル上において受信された場合に、そのノードの第１の隣のノードからの第１のチャネル上における第２の有効なフレームを求めて非同期的にリッスンするステップをさらに含む。この方法は、そのノードにおいて、第２の有効なフレームが第１のチャネル上において受信された場合に、第１の有効なフレームと第２の有効なフレームが、双方とも同じ他の小グループからのものであるかどうかをチェックするステップと、第１の有効なフレームと第２の有効なフレームが、双方とも同じ同じ他の小グループからのものである場合に、そのノードが現在の小グループから他の小グループへと離脱すべきかどうかを判断するステップとをさらに含む。
【００１２】
特許請求される本発明の１つまたは複数の実施形態の詳細については、添付の図面および以降の説明において示される。その他の特徴および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【００１３】
さまざまな図面における同様の参照番号および記号は、同様の要素を示す。
【発明を実施するための最良の形態】
【００１４】
図１は、通信ネットワーク１００の一実施形態を示すブロック図である。通信ネットワーク１００は、複数のノード１０２を含む。ネットワーク１００のそれぞれのノード１０２は、少なくとも１つのチャネル１０６に通信可能に結合される。データがチャネル１０６内を流れる所与の方向に向かって、チャネル１０６は、それぞれのノード１０２を、そのノード１０２にとってデータの受信元である少なくとも２つの他のノード１０２（本明細書では「受信元ノード」とも呼ばれる）と、そのノード１０２にとってデータの送信先である少なくとも２つの他のノード１０２（本明細書では「送信先ノード」とも呼ばれる）とに通信可能に直接（すなわち、１つのホップのみで）結合する。一実施形態においては、受信元ノード１０２のうちの１つが、「一次」受信元ノード１０２として指定され、その他の受信元ノード１０２が、「二次」受信元ノード１０２として指定される。１つのノード１０２が、チャネル１０６上で所与の方向にデータを「中継」する場合には、そのノード１０２は、そのチャネル１０６および方向に関するデータを一次受信元ノード１０２から受信し、そのチャネル１０６および方向に関する受信データを、そのノード１０２用に指定された送信先ノードのそれぞれへと転送する。１つのノードによって二次受信元ノード１０２から受信されたデータは、後述のさまざまな比較オペレーションのために使用され、および／または適切なデータが一次受信元ノードから受信されない場合には中継される。１つの所与のノード１０２が、チャネル１０６に沿って所与の方向にデータを「送信」する場合には（すなわち、その所与のノード１０２が、ネットワーク１００上でやり取りされるデータのソースである場合には）、そのノード１０２は、そのチャネル１０２および方向に関するデータを、そのノード１０２用に指定された送信先ノード１０２のそれぞれへ送信する。
【００１５】
図１に示されている特定の実施形態においては、複数のノード１０２は、「編組リング型の」トポロジを有するリング１０４内に配置され、そこでは複数のノード１０２は、複数の通信チャネル１０６を介して相互に通信する。図１に示されている特定の実施形態においては、８つのノード１０２が、２つの複製された通信チャネル１０６を介して相互に通信する。その他の実施形態においては、異なる数および／またはタイプのノード１０２および／またはチャネル１０６、ならびに／あるいは異なるネットワークトポロジが使用される。
【００１６】
ネットワーク１００の実施形態は、さまざまなメディアアクセススキームを使用して実装される。例えば図１に示されている実施形態は、ここでは、ＴＤＭＡ（ｔｉｍｅ  ｄｉｖｉｓｉｏｎ  ｍｕｌｔｉｐｌｅ  ａｃｃｅｓｓ）メディアアクセススキーム（例えば、ＴＴＰ／ＣあるいはＦＬＥＸＲＡＹプロトコルで実施されるメディアアクセススキーム）を使用して実装されるものとして説明される。その他の実施形態においては、その他のメディアアクセススキームが使用される。
【００１７】
図１に示されている８つのノード１０２はまた、図１においてＡからＨの文字で個々にラベル付けされ、また本明細書では個々に「ノードＡ」、「ノードＢ」などと呼ばれる。本明細書において使用される際、「隣のノード」（あるいは単に「隣」）とは、リング１０４内における所与のノード１０２のすぐ次のノードのことである。それぞれのノード１０２は、２つの「隣のノード」１０２、すなわち時計方向のもの（本明細書では「時計方向の隣のノード」あるいは「時計方向の隣」とも呼ばれる）と、反時計方向のもの（本明細書では「反時計方向の隣のノード」あるいは「反時計方向の隣」とも呼ばれる）とを有する。例えばノードＡにとっての隣のノード１０２とは、時計方向のノードＨと、反時計方向のノードＢである。
【００１８】
さらに、本明細書において使用される際、所与のノード１０２にとっての「隣の隣のノード」（あるいは単に「隣の隣」）とは、その所与のノード１０２の隣のノード１０２のさらに隣のノード１０２のことである。それぞれのノード１０２は、２つの隣の隣のノード１０２、すなわち時計方向のもの（本明細書では「時計方向の隣の隣のノード」あるいは「時計方向の隣の隣」とも呼ばれる）と、反時計方向のもの（本明細書では「反時計方向の隣の隣のノード」あるいは「反時計方向の隣の隣」とも呼ばれる）とを有する。例えばノードＡにとっての２つの隣の隣のノードとは、時計方向のノードＧと、反時計方向のノードＣである。
【００１９】
２つの通信チャネル１０６は、それぞれ「チャネル０」および「チャネル１」として図１において個々にラベル付けされている（また本明細書でも、そのように呼ばれる）。図１に示されている実施形態においては、チャネル１０６のそれぞれは、複数のポイントツーポイントの一方向性のシリアルリンク１０８を使用して形成される。チャネル０は、ノード１０２をリング１０４に沿って時計方向に相互接続し、チャネル１は、ノード１０２をリング１０４に沿って反時計方向に相互接続する。その他の実施形態においては、その他のタイプのリンクが使用される。例えば、そのようなその他の一実施形態においては、双方向性のリンクが使用され、本明細書に記載のデバイス、システム、および技術は、通信が発生するそれぞれの方向ごとに実行される。
【００２０】
本明細書において使用される際、リンク１０８が、第１のノード１０２「から」第２のノード１０２「へ」接続されるものとして説明される場合には、そのリンク１０８は、そのリンク１０８を介してデータを第２のノード１０２へ送信するための第１のノード１０２用の通信パスを提供する。すなわち、その一方向性のリンク１０８の方向は、第１のノード１０２から第２のノード１０２へという方向である。
【００２１】
リンク１０８は、それぞれのノード１０２からそのノードの時計方向の隣のノード１０２へ接続される。リンク１０８はまた、それぞれのノード１０２からそのノードの時計方向の隣の隣のノード１０２へも接続される。例えば、１つのリンク１０８が、ノードＡからノードＨへ接続され、１つのリンク１０８が、ノードＡからノードＧへ接続される。これらの時計方向のリンク１０８は、チャネル０を構成し、図１においては実線を使用して示されている。
【００２２】
リンク１０８は、それぞれのノード１０２からそのノードの反時計方向の隣のノード１０２へ接続される。リンク１０８はまた、それぞれのノード１０２からそのノードの反時計方向の隣の隣のノード１０２へも接続される。例えば、１つのリンク１０８が、ノードＡからノードＢへ接続され、１つのリンク１０８が、ノードＡからノードＣへ接続される。これらの反時計方向のリンク１０８は、チャネル１を構成し、図１においては破線を使用して示されている。
【００２３】
所与のノード１０２をそのノードのそれぞれ時計方向および反時計方向の隣のノードへ接続するリンク１０８は、本明細書では「ダイレクト」リンク１０８とも呼ばれる。所与のノード１０２をそのノードのそれぞれ時計方向および反時計方向の隣の隣のノードへ接続するリンク１０８は、本明細書では「スキップ」リンク１０８とも呼ばれる。
【００２４】
図１に示されている特定の実施形態においては、チャネル０に関して、それぞれのノード１０２ごとの受信元ノードは、そのノードの反時計方向の隣および反時計方向の隣の隣であり、それぞれのノード１０２ごとの送信先ノードは、そのノードの時計方向の隣および時計方向の隣の隣である。本明細書に記載の実施形態においては、一次受信元ノードは、そのノードの反時計方向の隣である（ただし、その他の実施形態においては、一次受信元ノードは、そのノードの反時計方向の隣の隣である）。図１に示されている特定の実施形態においては、チャネル１に関して、それぞれのノード１０２ごとの受信元ノードは、そのノードの時計方向の隣および時計方向の隣の隣であり、それぞれのノード１０２ごとの送信先ノードは、そのノードの反時計方向の隣および反時計方向の隣の隣である。本明細書に記載の実施形態においては、一次受信元ノードは、そのノードの時計方向の隣である。
【００２５】
図１に示されている特定の実施形態においては、ネットワーク１００は、ピアツーピアネットワークとして実装され、そこでは、それぞれの送信は、ネットワーク１００のそれぞれのノード１０２によって受信されるよう意図されている。その他の実施形態においては、それぞれの送信は、特定の宛先ノードを対象とする。さらに、本明細書に記載の実施形態では、データは、ネットワーク１００内においてデータのフレームの形態でやり取りされるが、その他の実施形態においては、データのその他のユニットがネットワーク１００を介してやり取りされるものと理解されたい。
【００２６】
本明細書において図１〜５に関連して記載されている実施形態では、ネットワーク１００内のノード１０２は、非同期化モードおよび同期化モードという少なくとも２つのモードで動作する。同期化モードで動作している場合には、ノード１０２は、グローバルタイムベースに同期化され、ＴＤＭＡメディアアクセススキームに従って送信を行う。このようなＴＤＭＡメディアアクセススキームに伴って、ネットワーク１００内のノード１０２が所与のスケジュール期間またはラウンド中のどの時点で送信を行うかを確定するために、スケジュールが使用される。所与のスケジュール期間中に、ネットワーク１００内のさまざまなノード１０２は、送信を行うためのそれぞれのタイムスロットを割り当てられる。すなわち、任意の所与のタイムスロットに関して、そのタイムスロットに割り当てられたノード１０２は、そのタイムスロットの間に送信を行うことができる（本明細書では「スケジュールされたノード」１０２とも呼ばれる）。この実施形態においては、スケジュールされたノードは、図２に関連して後述する処理を実行する。ネットワーク１００内のその他のノード１０２は、図３Ａ〜３Ｂおよび４Ａ〜４Ｂに関連して後述する中継処理を実行する。
【００２７】
ノード１０２が、非同期化モードで動作している場合には、それらのノード１０２は、まだグローバルタイムベースに同期化されておらず、まだＴＤＭＡスケジュールに従って送信を行っていない。図７Ａ〜７Ｂは、一実施形態において、非同期化モードで動作中のネットワーク１００のノード１０２によって実行される処理の少なくとも一部を示している。
【００２８】
図２は、図１のネットワーク１００内においてデータを送信する方法２００の一実施形態を示す流れ図である。図２に示されている方法２００の実施形態については、ここでは、本明細書において図１〜５に関連して記載されている実施形態内で実施されるものとして説明する。方法２００は、ＴＤＭＡスケジュールに従って同期化モードで動作している１つのノード１０２によって実行される。それぞれのノード１０２は、このような実施形態においては、そのノード１０２が、スケジュールされたノード１０２である場合に（すなわち、現在のタイムスロットが、ＴＤＭＡスケジュールによってそのノード１０２に割り当てられている場合に）、方法２００の処理を実行する。図２のコンテキストにおいては、方法２００の処理を実行しているノード１０２は、ここでは「現在の」ノード１０２と呼ばれる。一実施形態においては、現在のノード１０２によって実行されるものとしてここで説明されている機能の少なくとも一部は、そのノード１０２内に含まれるコントローラ内に実装される。方法２００のその他の実施形態は、その他の方法で実装される。
【００２９】
現在のノード１０２は、そのノード１０２がＴＤＭＡスケジュールに従ってネットワーク１００上で送信を行うことができるとその現在のノード１０２が判断した場合に（ブロック２０２）、方法２００の処理を実行する。ネットワーク１００内のそれぞれのノード１０２は、そのような判断を行うのに必要な情報を保持する。図１〜５の実施形態においては、そのような情報は、ＴＤＭＡスケジュール、およびノード１０２が同期化される対象であるグローバルタイムベースに関連する情報を含む。
【００３０】
現在のノード１０２が送信を行うことができ、かつそのノード１０２が、送信すべきデータを有する場合には（これは、ブロック２０４においてチェックされる）、その現在のノード１０２は、データのフレームを、チャネル０に沿って、その現在のノードの時計方向の隣および時計方向の隣の隣へ送信し（ブロック２０６）、チャネル１に沿って、その現在のノードの反時計方向の隣および反時計方向の隣の隣へ送信する（ブロック２０８）。現在のノード１０２は、そのフレームをその現在のノードの時計方向の隣および反時計方向の隣へ、それぞれのダイレクトリンク１０８を使用して送信する。現在のノード１０２は、そのフレームをその現在のノードの時計方向の隣の隣および反時計方向の隣の隣へ、それぞれのスキップリンク１０８を使用して送信する。このような実施形態の一実装形態においては、現在のノード１０２は、チャネル０上のフレームをその現在のノードの時計方向の隣および時計方向の隣の隣へ送信する第１のトランシーバと、チャネル１上のフレームをその現在のノードの反時計方向の隣および反時計方向の隣の隣へ送信する第２のトランシーバとを含む。
【００３１】
１図３Ａは、図１のネットワーク１００内においてデータを中継する方法３００の一実施形態を示す流れ図である。１つのノードがデータを「中継」する場合には、そのノード１０２は、１つまたは複数の受信元ノードからデータを受信し、その受信したデータを１つまたは複数の送信先ノードへと転送する。すなわち、ノード１０２がデータを中継している場合には、そのノード１０２は、そのノード１０２が他のノードへと転送しているデータのソースではない。図３Ａに示されている方法３００の実施形態については、ここでは、本明細書において図１〜５に関連して記載されている編組リング型の実施形態内で実施されるものとして説明する。その他の実施形態においては、方法３００は、その他のネットワークトポロジを使用して実施される。方法３００を実施できるその他のネットワークトポロジの一例が、２つの「シンプレックス」リングチャネルを含むネットワークトポロジである。このようなシンプレックスリング型ネットワークの一実装形態においては、ネットワークは、図１に示されているトポロジと同様のトポロジを使用するが、それぞれのノードをその時計方向の隣の隣および反時計方向の隣の隣へ通信可能に結合するスキップリンクは存在しない。
【００３２】
方法３００は、ＴＤＭＡスケジュールに従って同期化モードで動作している１つのノード１０２によって実行される。それぞれのノード１０２は、このような実施形態においては、そのノードの両隣のうちの一方が、現在のタイムスロットにとってのスケジュールされたノード１０２である場合に、方法３００の処理を実行する。図３Ａのコンテキストにおいては、方法３００の処理を実行しているノード１０２は、ここでは「現在の」ノード１０２と呼ばれる。一実施形態においては、現在のノード１０２によって実行されるものとしてここで説明されている機能の少なくとも一部は、そのノード１０２内に含まれるコントローラ内に実装される。方法３００のその他の実施形態は、その他の方法で実装される。
【００３３】
現在のノード１０２は、その現在のノード１０２の両隣のうちの一方が現在のタイムスロットの間に送信を行うようにスケジュールされているとその現在のノード１０２が判断した場合に（これは、ブロック３０２においてチェックされる）、方法３００の処理を実行する。このような隣は、この図３Ａのコンテキストにおいては「スケジュールされた隣」とも呼ばれる。図１〜５の実施形態においては、現在のノード１０２は、ＴＤＭＡスケジュールと、そのノード１０２が同期化される対象であるグローバルタイムベースとを含む情報に基づいて、この判断を行う。
【００３４】
現在のノード１０２が、その両隣のうちの一方が現在のタイムスロットにとってのスケジュールされたノードであると判断した場合には、その現在のノード１０２は、そのスケジュールされた隣から発生してその現在のノード１０２によって受信されたフレームを、そのスケジュールされた隣から、そのスケジュールされた隣をその現在のノード１０２へ結合するダイレクトリンク１０８を介して中継するだけである。すなわち現在のノード１０２が、スケジュールされた隣以外のノード１０２から発生するフレームを受信した場合には、その現在のノード１０２は、そのフレームを中継しない。
【００３５】
現在のノード１０２が、スケジュールされた隣からのフレームの受信を開始した場合には（これは、ブロック３０４においてチェックされる）、その現在のノード１０２は、その送信が、ネットワーク１００内において実施される１つまたは複数のポリシーに準拠しているかどうかをチェックする。図３Ａに示されている特定の実施形態においては、現在のノード１０２は、送信が、例えば、そこにおいて送信を開始しなければならない特定のウィンドウを指定する時間的なポリシーに準拠しているかどうかをチェックする（これは、ブロック３０６においてチェックされる）。ＴＴＰ／ＣあるいはＦＬＥＸＲＡＹプロトコルがサポートされるこのような実施形態の一実装形態においては、現在のノード１０２は、送信が、サポートされるプロトコルの時間的な送信要件に準拠しているかどうかをチェックする。図３Ａに示されている実施形態においては、送信が時間的なポリシーに準拠していない場合には（例えば、ＳＯＳ（ｓｌｉｇｈｔｌｙ−ｏｆｆ−ｓｐｅｃｉｆｉｃａｔｉｏｎ）の障害が発生した場合には）、現在のノード１０２は、現在のフレームを中継しない（ブロック３０８）。（図３Ａ内で点線を使用して示されている）代替実施形態においては、送信が時間的なポリシーに準拠していない場合には、現在のノード１０２は、その送信が時間的なポリシーに準拠していないことを示す情報（例えば、添付または共有された整合性フィールド）と共に現在のフレームを中継する（ブロック３０９）。別の実施形態（図示せず）においては、送信が時間的なポリシーの第１の側面に準拠していない場合には、現在のノード１０２は、その送信を中継せず、またその送信が（第１の側面には準拠している一方で）その時間的なポリシーの別の側面に準拠していない場合には、現在のノード１０２は、その送信がそのポリシーのその側面に準拠していないことを示す情報と共に現在のフレームを中継する。
【００３６】
送信が時間的なポリシーに準拠している場合には、現在のノード１０２は、その送信が１つまたは複数のその他のポリシーに準拠しているかどうかをチェックする（ブロック３１０）。例えば一実施形態においては、現在のノード１０２は、送信が１つまたは複数のセマンティックポリシー（例えば、セマンティックなプロトコル状態のフィルタリングを実施するポリシー）に準拠しているかどうかをチェックする。それぞれのフレームが、そのフレームのコンテンツに基づいて計算されるＣＲＣ（ｃｙｃｌｉｃ  ｒｅｄｕｎｄａｎｃｙ  ｃｈｅｃｋ）フィールドを含む別の実施形態においては、現在のノード１０２は、そのＣＲＣフィールドをチェックして、スケジュールされたノードからその現在のノード１０２へそのフレームを送信する過程で何らかのエラーがそのフレーム内に取り込まれているかどうかを判断する。このようなポリシーの別の例は、コード化層実施ポリシーである。別の例においては、フレーム長ポリシーが使用され、現在のノード１０２は、現在のフレームの長さをチェックする（このような例においては、フレーム長ポリシーに準拠しない場合には、例えば図３Ａのブロック３０９に関連して説明したように処理が行われることになる）。
【００３７】
送信が、その他のポリシーのうちの１つまたは複数に準拠していない場合には、現在のノード１０２は、その送信を中継しない（ブロック３０８）。（図３Ａ内で破線を使用して示されている）代替実施形態においては、現在のノード１０２は、その送信が１つまたは複数のポリシーに準拠していないことを示す情報（例えば、添付または共有された整合性フィールド）と共に現在のフレームを中継する（ブロック３０９）。別の実施形態（図示せず）においては、送信が第１のポリシーに準拠していない場合には、現在のノード１０２は、その送信を中継せず、またその送信が（第１のポリシーには準拠している一方で）別のポリシーに準拠していない場合には、現在のノード１０２は、その送信が後者のポリシーに準拠していないことを示す情報と共に現在のフレームを中継する。
【００３８】
あるいは、送信がすべてのポリシーに準拠している場合には、現在のノード１０２は、現在のフレームを、その現在のフレームの受信元であるチャネルに沿って、その現在のノードの次の隣および次の隣の隣へ中継する（ブロック３１２）。例えば、スケジュールされたノードがノードＡであり、現在のノードがノードＢである場合には、その現在のノードは、現在のフレームをノードＣ（チャネル１に沿ってノードＢの次の隣）へ、およびノードＤ（チャネル１に沿ってノードＢの次の隣の隣）へ中継する。
【００３９】
その他の実施形態においては、現在のノード１０２は、送信が、上述のポリシーにとって代わりとなるあるいは追加となるその他のポリシーに準拠しているかどうかをチェックする。例えば、このようなその他の一実施形態においては、現在のノード１０２は、スケジュールされたノードによる送信の方向に関する整合性を（例えば、図１２に関連して後述する方法で）チェックし、そのフレームが方向に関する整合性を伴って送信されたかどうかを示すフィールドをそのフレームに添付する。
【００４０】
図３Ｂは、図１のネットワーク１００内においてデータを中継する方法３５０の別の実施形態を示す流れ図である。図３Ｂに示されている方法３５０の実施形態については、ここでは、本明細書において図１〜５に関連して記載されている編組リング型の実施形態内で実施されるものとして説明する。その他の実施形態においては、方法３５０は、その他のネットワークトポロジを使用して実施される。方法３５０を実施できるその他のネットワークトポロジの一例が、２つの「シンプレックス」リングチャネルを含むネットワークトポロジである。このようなシンプレックスリング型ネットワークの一実装形態においては、ネットワークは、図１に示されているトポロジと同様のトポロジを使用するが、それぞれのノードをその時計方向および反時計方向の隣の隣へ通信可能に結合するスキップリンクは存在しない。
【００４１】
方法３５０は、ＴＤＭＡスケジュールに従って同期化モードで動作している１つのノード１０２によって実行される。それぞれのノード１０２は、このような実施形態においては、そのノードの両隣のうちの一方が、現在のタイムスロットにとってのスケジュールされたノード１０２である場合に、方法３５０の処理を実行する。図３Ｂのコンテキストにおいては、方法３５０の処理を実行しているノード１０２は、ここでは「現在の」ノード１０２と呼ばれる。一実施形態においては、現在のノード１０２によって実行されるものとしてここで説明されている機能の少なくとも一部は、そのノード１０２内に含まれるコントローラ内に実装される。方法３５０のその他の実施形態は、その他の方法で実装される。
【００４２】
現在のノード１０２は、その現在のノード１０２の両隣のうちの一方が現在のタイムスロットの間に送信を行うようにスケジュールされているとその現在のノード１０２が判断した場合に（これは、ブロック３５２においてチェックされる）、方法３５０の処理を実行する。このような隣は、この図３Ｂのコンテキストにおいては「スケジュールされた隣」とも呼ばれる。図１〜５の実施形態においては、現在のノード１０２は、ＴＤＭＡスケジュールと、そのノード１０２が同期化される対象であるグローバルタイムベースとを含む情報に基づいて、この判断を行う。
【００４３】
方法３５０においては（図３Ａの方法３００と同様に）、現在のノード１０２が、その両隣のうちの一方が現在のタイムスロットにとってのスケジュールされたノードであると判断した場合には、その現在のノード１０２は、そのスケジュールされた隣から発生してその現在のノード１０２によって受信されたフレームを、そのスケジュールされた隣から、そのスケジュールされた隣をその現在のノード１０２へ結合するダイレクトリンク１０８を介して中継するだけである。すなわち現在のノード１０２が、スケジュールされた隣以外のノード１０２から発生するフレームを受信した場合には、その現在のノード１０２は、そのフレームを中継しない。しかし図３Ａの方法３００の場合とは異なり、図３Ｂの方法３５０においては、現在のノード１０２は、ブロック３０８〜３１０に関連付けられている「バスガーディアン」の処理を実行しない。
【００４４】
現在のノード１０２が、スケジュールされた隣からのフレームの受信を開始した場合には（これは、ブロック３５４においてチェックされる）、その現在のノード１０２は、その受信したフレームを、そのフレームの受信元であるチャネルに沿って、その現在のノードの次の隣および次の隣の隣へ中継する（ブロック３５６）。例えば、スケジュールされたノードがノードＡであり、現在のノードがノードＢである場合には、その現在のノードは、ノードＡから受信したフレームをノードＣ（チャネル１に沿ってノードＢの次の隣）へ、およびノードＤ（チャネル１に沿ってノードＢの次の隣の隣）へ中継する。
【００４５】
図４Ａ〜４Ｂは、図１のネットワーク１００内においてデータを中継する方法４００の一実施形態を示す流れ図である。図４Ａ〜４Ｂに示されている方法４００の実施形態については、ここでは、本明細書において図１〜５に関連して記載されている実施形態内で実施されるものとして説明する。方法４００は、ＴＤＭＡスケジュールに従って同期化モードで動作している１つのノード１０２によって実行される。それぞれのノード１０２は、このような実施形態においては、そのノード１０２が現在のタイムスロットの間に送信を行うようにスケジュールされておらず、かつそのノードの両隣のいずれもが現在のタイムスロットの間に送信を行うようにスケジュールされていない場合に、方法４００の処理を実行する。図４Ａ〜４Ｂのコンテキストにおいては、方法４００の処理を実行しているノード１０２は、ここでは「現在の」ノード１０２と呼ばれる。一実施形態においては、現在のノード１０２によって実行されるものとしてここで説明されている機能の少なくとも一部は、そのノード１０２内に含まれるコントローラ内に実装される。方法４００のその他の実施形態は、その他の方法で実装される。
【００４６】
現在のノード１０２は、その現在のノード１０２が現在のタイムスロットの間に送信を行うようにスケジュールされておらず、かつその現在のノードの両隣のいずれもが現在のタイムスロットの間に送信を行うようにスケジュールされていない場合に（これは、図４Ａのブロック４０２においてチェックされる）、方法４００の処理を実行する。図１〜５の実施形態においては、現在のノード１０２は、ＴＤＭＡスケジュールと、そのノード１０２が同期化される対象であるグローバルタイムベースとを含む情報に基づいて、この判断を行う。
【００４７】
現在のノード１０２が現在のタイムスロットの間に送信を行うようにスケジュールされておらず、かつその現在のノードの両隣のいずれもが現在のタイムスロットの間に送信を行うようにスケジュールされておらず、またその現在のノード１０２が、チャネル０上におけるその現在のノードの反時計方向の隣からのフレームの受信を開始したとその現在のノード１０２が判断した場合には（これは、ブロック４０４においてチェックされる）、その現在のノード１０２は、チャネル０上におけるその現在のノードの反時計方向の隣から受信されているフレームを、チャネル０上におけるその現在のノードの反時計方向の隣の隣から受信されている任意のフレームと比較する（ブロック４０６）。図４に示されている実施形態においては、ビットごとの比較が実行される。さらに、図５に関連して後述するように、複数のフレームが、わずかに異なる時点で現在のノード１０２において受信される可能性が高いため、受信される複数のフレームをデスキューするためにデスキュー機能が使用される。現在のノード１０２は、チャネル０上におけるその現在のノードの反時計方向の隣から受信されているフレームを、チャネル０に沿って、その現在のノードの時計方向の隣および時計方向の隣の隣へ中継する（ブロック４０８）。現在のフレームが中継され、比較が完了した後、現在のノード１０２は、その比較の結果を示す情報を、その現在のノードの反時計方向の隣から受信されたフレーム内に含めて、あるいはそのフレームの後に中継する（ブロック４１０）。現在のノード１０２は、その比較の結果を示す情報を、チャネル０に沿って、その現在のノードの時計方向の隣および時計方向の隣の隣へ中継する。一実施形態においては、比較の結果を示す情報は、現在のノード１０２が、その現在のノードの反時計方向の隣から受信されたフレームに添付する１ビットの添付された整合性フィールドを含む。別の実施形態においては、共有された整合性フィールドが、それぞれのフレームの終わりに含まれる。このような実施形態においては、現在のノード１０２は、２つのフレームが同一ではないことを比較が示す場合には、共有された整合性フィールドを「負の」値（例えば、「０」の値）に設定し、あるいは２つのフレームが同一であることを比較が示す場合には、共有された整合性フィールドを変更しない。
【００４８】
現在のノード１０２が、（例えば所定のタイムアウト期間が経過しても）チャネル０上におけるその現在のノードの反時計方向の隣からのフレームを受信せず、その一方でチャネル０上におけるその現在のノードの反時計方向の隣の隣からのフレームの受信を開始した場合には（これは、ブロック４１２においてチェックされる）、その現在のノード１０２は、その現在のノードの反時計方向の隣の隣から受信されているフレームを、チャネル０に沿って、その現在のノードの時計方向の隣および時計方向の隣の隣へ中継する（ブロック４１４）。そのフレームが中継された後、現在のノード１０２は、チャネル０に関してその現在のノード１０２において「ミスマッチ」があったことを示す情報を、そのフレーム内に含めて、あるいはそのフレームの後に中継する（ブロック４１６）。現在のノード１０２は、この情報を、チャネル０に沿って、その現在のノードの時計方向の隣および時計方向の隣の隣へ中継する。現在のノード１０２の反時計方向の隣から受信されたフレームはないため、反時計方向の隣から受信されたフレームが、その現在のノード１０２の反時計方向の隣の隣から受信されたフレームと同一であることはない。
【００４９】
現在のノード１０２が、チャネル０上におけるその現在のノードの反時計方向の隣からの、あるいはチャネル０上におけるその現在のノードの反時計方向の隣の隣からのフレームを受信しない場合には、その現在のノード１０２は、現在のタイムスロットの間にチャネル０に沿っていかなるデータも中継しない（ブロック４１８）。
【００５０】
現在のノード１０２は、チャネル１から受信したフレームに対しても同じ処理を実行する。現在のノード１０２が現在のタイムスロットの間に送信を行うようにスケジュールされておらず、かつその現在のノードの両隣のいずれもが現在のタイムスロットの間に送信を行うようにスケジュールされておらず、またその現在のノード１０２が、チャネル１上におけるその現在のノードの時計方向の隣からのフレームの受信を開始したとその現在のノード１０２が判断した場合には（これは、図４Ｂのブロック４２０においてチェックされる）、その現在のノード１０２は、チャネル１上におけるその現在のノードの時計方向の隣から受信されているフレームを、チャネル１上におけるその現在のノードの時計方向の隣の隣から受信されている任意のフレームと比較する（ブロック４２２）。図４に示されている実施形態においては、ビットごとの比較が実行される。さらに、複数のフレームが、わずかに異なる時点で現在のノード１０２において受信される可能性が高いため、受信される複数のフレームをデスキューするためにデスキュー機能が使用される。現在のノード１０２は、チャネル１上におけるその現在のノードの時計方向の隣から受信されているフレームを、チャネル１に沿って、その現在のノードの反時計方向の隣および反時計方向の隣の隣へ中継する（ブロック４２４）。現在のフレームが中継され、比較が完了した後、現在のノード１０２は、その比較の結果を示す情報を、その現在のノードの時計方向の隣から受信されたフレーム内に含めて、あるいはそのフレームの後に中継する（ブロック４２６）。現在のノード１０２は、その比較の結果を示す情報を、チャネル１に沿って、その現在のノードの反時計方向の隣および反時計方向の隣の隣へ中継する。一実施形態においては、添付された整合性フィールドが使用される。別の実施形態においては、共有された整合性フィールドが使用される。
【００５１】
現在のノード１０２が、（例えば所定のタイムアウト期間が経過しても）チャネル１上におけるその現在のノードの時計方向の隣からのフレームを受信せず、その一方でチャネル１上におけるその現在のノードの時計方向の隣の隣からのフレームの受信を開始した場合には（これは、ブロック４２８においてチェックされる）、その現在のノード１０２は、その現在のノードの時計方向の隣の隣から受信されているフレームを、チャネル１に沿って、その現在のノードの反時計方向の隣および反時計方向の隣の隣へ中継する（ブロック４３０）。そのフレームが中継された後、現在のノード１０２は、チャネル１に関してその現在のノード１０２において「ミスマッチ」があったことを示す情報を、そのフレーム内に含めて、あるいはそのフレームの後に中継する（ブロック４３２）。現在のノード１０２は、この情報を、チャネル１に沿って、その現在のノードの反時計方向の隣および反時計方向の隣の隣へ中継する。現在のノード１０２の時計方向の隣から受信されたフレームはないため、時計方向の隣から受信されたフレームが、その現在のノード１０２の時計方向の隣の隣から受信されたフレームと同一であることはない。
【００５２】
現在のノード１０２が、チャネル１上におけるその現在のノードの時計方向の隣からの、あるいはチャネル１上におけるその現在のノードの時計方向の隣の隣からのフレームを受信しない場合には、その現在のノード１０２は、現在のタイムスロットの間にチャネル１に沿っていかなるデータも中継しない（ブロック４３４）。
【００５３】
一例においては、現在のノード１０２がノードＡであり、ノードＥが、現在のタイムスロットの間に送信を行うようにスケジュールされているノードである。このような例においては、ノードＡは、チャネル０のそれぞれのダイレクトリンク１０８を介してノードＢ（ノードＡの反時計方向の隣）からのフレームを受信し、このフレームを、ノードＡがチャネル０のそれぞれのスキップリンク１０８を介してノードＣ（ノードＡの反時計方向の隣の隣）から受信する任意のフレームと比較する。ノードＡは、ノードＢから受信しているフレームと、その比較の結果を示す情報とを、ノードＨ（チャネル０に沿ってノードＡの次の隣）へ、およびノードＧ（チャネル０に沿ってノードＡの次の隣の隣）へ中継する。このような例においては、ノードＡはまた、チャネル１のそれぞれのダイレクトリンク１０８を介してノードＨ（ノードＡの時計方向の隣）からのフレームを受信し、このフレームを、ノードＡがチャネル１のそれぞれのスキップリンク１０８を介してノードＧ（ノードＡの時計方向の隣の隣）から受信する任意のフレームと比較する。ノードＡは、ノードＨから受信したフレームと、その比較の結果を示す情報とを、ノードＢ（チャネル１に沿ってノードＡの次の隣）へ、およびノードＣ（チャネル１に沿ってノードＡの次の隣の隣）へ中継する。
【００５４】
図４に示されている実施形態においては、ダイレクトリンク１０８とスキップリンク１０８の双方の上で現在のノード１０２によって複数のフレームが受信された場合には、その現在のノード１０２は、ダイレクトリンク１０８上で受信されたフレームを中継する。その他の実施形態においては、ダイレクトリンク１０８とスキップリンク１０８の双方の上で現在のノード１０２によって複数のフレームが受信された場合には、その現在のノード１０２は、スキップリンク１０８上で受信されたフレームを中継する。
【００５５】
図５は、一例においては、それぞれ図３および４Ａ〜４Ｂの方法３００および４００の比較および中継処理を実施するために使用されるノード１０２の論理コンポーネントを示すブロック図である。特定の比較および中継処理を実行しているノード１０２は、図５のコンテキストにおいては、現在のノード１０２と呼ばれる。チャネル０上で受信されたフレームに対する比較および中継処理を実行するために使用される現在のノード１０２の論理コンポーネントが、図５に示されている。チャネル１上で受信されたフレームに対する比較および中継処理は、図５に示されている論理コンポーネントと同様の論理コンポーネントを使用して実行されるということを理解されたい。
【００５６】
図５に示されている例においては、現在のノード１０２は、第１のダイレクトリンクインターフェース５０２を含み、この第１のダイレクトリンクインターフェース５０２は、その現在のノード１０２をチャネル０の反時計方向のダイレクトリンク１０８へ通信可能に結合し、このチャネル０の反時計方向のダイレクトリンク１０８は、その現在のノードの反時計方向の隣へ接続される。現在のノード１０２はまた、第１のスキップリンクインターフェース５０４を含み、この第１のスキップリンクインターフェース５０４は、その現在のノード１０２をチャネル０の反時計方向のスキップリンク１０８へ通信可能に結合し、このチャネル０の反時計方向のスキップリンク１０８は、その現在のノードの反時計方向の隣の隣へ接続される。ダイレクトリンクＦＩＦＯ（ｆｉｒｓｔ−ｉｎ−ｆｉｒｓｔ−ｏｕｔ）バッファ５０６は、第１のダイレクトリンクインターフェース５０２に結合され、スキップリンクＦＩＦＯバッファ５０８は、第１のスキップリンクインターフェース５０４に結合される。第１のダイレクトリンクインターフェース５０２および第１のスキップリンクインターフェース５０４は、それぞれダイレクトリンク１０８およびスキップリンク１０８からデータを受信し、その受信したデータをそれぞれダイレクトリンクＦＩＦＯバッファ５０６およびスキップリンクＦＩＦＯバッファ５０８内に保存する。
【００５７】
現在のノード１０２は、第２のダイレクトリンクインターフェース５１０を含み、この第２のダイレクトリンクインターフェース５１０は、その現在のノード１０２をチャネル０の時計方向のダイレクトリンク１０８へ通信可能に結合し、このチャネル０の時計方向のダイレクトリンク１０８は、その現在のノードの時計方向の隣へ接続される。現在のノード１０２はまた、第２のスキップリンクインターフェース５１２を含み、この第２のスキップリンクインターフェース５１２は、その現在のノード１０２をチャネル０の時計方向のスキップリンク１０８へ通信可能に結合し、このチャネル０の時計方向のスキップリンク１０８は、その現在のノードの時計方向の隣の隣へ接続される。
【００５８】
図５に示されている例においては、現在のノード１０２は、デスキューおよび比較モジュール５１４を含み、このデスキューおよび比較モジュール５１４は、その現在のノードの反時計方向の隣および反時計方向の隣の隣から受信したフレームを「デスキュー」および比較する。図５に示されている特定の例においては、現在のノード１０２は、単一の送信機５１６を含み、この送信機５１６は、その現在のノードの時計方向の隣とその現在のノードの時計方向の隣の隣の双方へデータを送信するために使用される。送信機５１６の出力は、その現在のノードの時計方向の隣およびその現在のノードの時計方向の隣の隣へそれぞれ送信するために、第２のダイレクトリンクインターフェース５１０と第２のスキップリンクインターフェース５１２の双方に結合される。
【００５９】
所与のタイムスロットの間の所与の送信中に、現在のノード１０２は、通常では第１のダイレクトリンクインターフェース５０２および第１のスキップリンクインターフェース５０４上におけるそれぞれのフレームの受信を別々の時点において開始する。例えば、図４のブロック４０６〜４１０および４１４〜４１８に関連して比較および中継処理が実行される場合には、現在のノード１０２は、所与の送信中に、通常では第１のスキップリンクインターフェース５０４上におけるフレームの受信を、第１のダイレクトリンクインターフェース５０２上における対応するフレームの受信を開始する前に開始する。これは、このような例では、第１のスキップリンクインターフェース５０４において受信されるフレームが、第１のダイレクトリンクインターフェース５０２上で受信されるフレームよりも１つ少ないホップを介して進むためである（すなわち、第１のスキップリンクインターフェース５０４上で受信されるフレームが、現在のノードの反時計方向の隣を「スキップ」するためである）。
【００６０】
図５に示されている例においては、デスキューおよび比較モジュール５１４ならびに送信機５１６は、ＦＩＦＯバッファ５０６と５０８の双方が半分満たされるまで待ってから、受信したデータの比較および中継を実行する。その他の実施形態においては、上述のデスキュー技術に加えて、あるいはその代わりに、その他のデスキュー技術が使用される。
【００６１】
図５に示されている特定の例においては、受信された２つのフレームに対するビットごとの比較が、デスキューおよび比較モジュール５１４によって実行される。
データが第１のダイレクトリンクインターフェース５０２において受信されると、その受信されたデータは、ダイレクトリンクＦＩＦＯバッファ５０６の入力端へと書き込まれる。また、データがスキップリンクインターフェース５０４において受信されると、その受信されたデータは、スキップリンクＦＩＦＯバッファ５０８の入力端へと書き込まれる。フレームが第１のダイレクトリンクインターフェース５０２上において受信されているかどうかの判断は、そのインターフェース５０２から受信したデータ内から、フレームの始まりを示す区切り文字を検出することによって行われる。同様に、フレームが第１のスキップリンクインターフェース５０４上において受信されているかどうかの判断は、そのインターフェース５０４から受信したデータ内から、フレームの始まりを示す区切り文字を検出することによって行われる。
【００６２】
フレームが第１のダイレクトリンクインターフェース５０２と第１のスキップリンクインターフェース５０４の双方の上において受信されている場合に、ＦＩＦＯバッファ５０６と５０８の双方が半分満たされると、デスキューおよび比較モジュール５１４は、第１のＦＩＦＯバッファ５０６および第２のＦＩＦＯバッファ５０８のそれぞれの出力端からのビットの受信を開始し、送信機５１６は、ＦＩＦＯバッファ５０６の出力端からのビットの受信を開始する。デスキューおよび比較モジュール５１４は、第１のＦＩＦＯバッファ５０６および第２のＦＩＦＯバッファ５０８からビットを受信すると、受信した２つのフレームに対するビットごとの比較を実行する。送信機５１６は、第１のＦＩＦＯバッファ５０６からビットを受信すると、その受信したビットを、チャネル０に沿って、反時計方向の隣および反時計方向の隣の隣へ中継する。デスキューおよび比較モジュール５１４は、双方のフレームの終わりを比較すると、それらの２つのフレームが同一であったか否かを示すビットを送信機５１６へ出力する。送信機５１６は、デスキューおよび比較モジュール５１４によって出力されたビットを受信し、中継されるフレームの後にそのビットを送信することによって、中継されるフレームの終わりにそのビットを「添付」する。
【００６３】
フレームが第１のダイレクトリンクインターフェース５０２上において受信されており、その一方で第１のスキップリンクインターフェース５０４上では受信されていない場合に、第１のＦＩＦＯバッファ５０６が半分満たされると、デスキューおよび比較モジュール５１４ならびに送信機５１６は、第１のＦＩＦＯバッファ５０６の出力端からのビットの受信を開始する。デスキューおよび比較モジュール５１４は、現在のノード１０２においてチャネル０に対してミスマッチが生じていることを示すビットを送信機５１６へ出力する。送信機５１６は、第１のＦＩＦＯバッファ５０６からビットを受信すると、その受信したビットを、チャネル０に沿って、反時計方向の隣および反時計方向の隣の隣へ中継する。送信機５１６は、デスキューおよび比較モジュール５１４によって出力されたビットを受信し、中継されるフレームの後にそのビットを送信することによって、中継されるフレームの終わりにそのビットを「添付」する。
【００６４】
図４の方法４００用に実行される処理に関しては、フレームが第１のスキップリンクインターフェース５０４上において受信されており、その一方で第１のダイレクトリンクインターフェース５０２上では受信されていない場合に、第２のＦＩＦＯバッファ５０８が半分満たされると、デスキューおよび比較モジュール５１４ならびに送信機５１６は、第２のＦＩＦＯバッファ５０８の出力端からのビットの受信を開始する。デスキューおよび比較モジュール５１４は、現在のノード１０２においてチャネル０に対してミスマッチが生じていることを示すビットを送信機５１６へ出力する。送信機５１６は、第２のＦＩＦＯバッファ５０８からビットを受信すると、その受信したビットを、チャネル０に沿って、反時計方向の隣および反時計方向の隣の隣へ中継する。送信機５１６は、デスキューおよび比較モジュール５１４によって出力されたビットを受信し、中継されるフレームの後にそのビットを送信することによって、中継されるフレームの終わりにそのビットを「添付」する。
【００６５】
ネットワーク１００の実施形態は、ネットワーク１００の複数のノード１０２が同期モードで動作している間の改善されたフォルトトレランスを提供する。例えばネットワーク１００の実施形態は、改善された移送の利用可能度および改善された移送の整合性を提供する。改善された移送の利用可能度は、例えば２つの独立した反対方向の通信チャネル０および１を使用することによって提供される。ネットワーク１００内のノード１０２によって送信されるデータは、２つの独立した通信パスを介してネットワーク１００内のその他のノード１０２のそれぞれへと進む。例えばネットワーク１００のノードＡによって送信されるデータは、チャネル０上をノードＡからノードＢ、Ｃ、Ｄ、およびＥへと反時計方向に進む第１のパスを介して、またチャネル１上をノードＡからノードＨ、Ｇ、Ｆ、およびＥへと時計方向に進む第２のパスを介して、ノードＥへと進む。結果として、これらのパスのうちの一方の上に何らかの単一障害点が生じても、データをノードＥへと首尾よく進めることができる別のパスが存在することになる。
【００６６】
図１〜４に示されている実施形態においては、ネットワーク１００の全体へ送信されるそれぞれのフレーム内にＣＲＣプロトコルフィールドが含まれる。このようなＣＲＣフィールドは、偶発的なエラーに対処するのに非常に適している。送信側のノードと、その送信側のノードの時計方向の隣および反時計方向の隣との間におけるダイレクトリンク１０８上のノイズに起因するエラーは、このような偶発的な性格を有する。しかしアクティブなインターステージによってもたらされるエラーは、本質的に相互に関連付けられる可能性があり、これによってＣＲＣフィールドは、そのようなエラーに対処するのにあまり適さなくなる可能性がある。方法４００の処理を実行する際にノード１０２によって実行されるビットごとの比較は、前のノードによってもたらされるいかなるエラーをも検出し、それによって、このようなアクティブなインターステージによって引き起こされるエラーに対処する。このように中継を行うことによって、ネットワーク１００内における移送の整合性が改善される。
【００６７】
図６は、このようなノード１０２が同期化モードで動作している間に図１のネットワーク１００内において発生する間抜けなタイミングでのでしゃばりな送信による障害の一例を示すブロック図である。図６に示されている例においては、ネットワーク１００内のそれぞれのノード１０２は、図２〜４の方法２００、３００、および４００を実施する。この例においては、ノードＡは、ノードＥが送信を行うようにスケジュールされているタイムスロットの間に、間抜けなタイミングでのでしゃばりな送信による障害を有する。この障害によって、ノードＡは、チャネル０に沿ってノードＡの時計方向の隣のノードＨへ、およびチャネル１に沿ってノードＡの反時計方向の隣のノードＢへ送信を行う。ノードＨが、ノードＡによって送信されたフレームをチャネル０から受信した場合に、ノードＨが、ノードＡ（ノードＨの反時計方向の隣）から受信したフレームと、ノードＢ（ノードＨの反時計方向の隣の隣）から受信したフレームの間で行う比較は、それらの２つのフレームが同一ではないことを示すであろう。結果として、ノードＨは、ノードＡから受信したフレームを、ミスマッチがノードＨにおいて生じたことを示す情報と共にチャネル０上において中継する。同様に、ノードＢが、ノードＡによって送信されたフレームをチャネル１から受信した場合に、ノードＢが、ノードＡ（ノードＢの時計方向の隣）から受信したフレームと、ノードＢ（ノードＢの時計方向の隣の隣）から受信したフレームの間で行う比較は、それらの２つのフレームが同一ではないことを示すであろう。結果として、ノードＢは、ノードＡから受信したフレームを、ミスマッチがノードＨにおいて生じたことを示す情報と共にチャネル１上において中継する。
【００６８】
ノードＡの送信によって影響を受けるチャネル０およびチャネル１のリンク１０８が、破線を使用して図６に示されている。チャネル０内におけるノードＡからノードＨへのダイレクトリンク１０８、ならびにチャネル０内におけるノードＨからノードＧへ、ノードＧからノードＦへ、およびノードＦからノードＥへのダイレクトリンクおよびスキップリンク１０８は、ノードＡによる障害を伴った送信によって影響を受ける。チャネル１内におけるノードＡからノードＢへのダイレクトリンク１０８、ならびにチャネル１内におけるノードＢからノードＣへ、ノードＣからノードＤへ、およびノードＤからノードＥへのダイレクトリンクおよびスキップリンク１０８は、ノードＡによる障害を伴った送信によって影響を受ける。
【００６９】
ノードＥによってチャネル０に沿って送信されたデータは、チャネル０のこの部分におけるリンク１０８がノードＡの送信によって影響を受けないため、ノードＤ、Ｃ、およびＢによって受信され、中継される。同様に、ノードＥによってチャネル１に沿って送信されたデータは、チャネル１のこの部分におけるリンク１０８がノードＡの送信によって影響を受けないため、ノードＦ、Ｇ、およびＨによって受信され、中継される。ノードＡの送信によって影響を受けず、ノードＥが首尾よく送信を行うことができるチャネル０およびチャネル１のリンク１０８が、実線を使用して図６に示されている。このようにして、ノードＥによって送信されたデータは、ノードＡにおいて間抜けなタイミングでのでしゃばりな送信による障害が発生しているにもかかわらず、リング１０４内におけるノード１０２のそれぞれに到達することができる。
【００７０】
別の例では、ノード１０２が同期化モードで動作している間に、図１の通信ネットワーク１００内においてＳＯＳ（ｓｌｉｇｈｔｌｙ−ｏｆｆ−ｓｐｅｃｉｆｉｃａｔｉｏｎ）の不具合あるいは障害が発生している。ＳＯＳの障害は、１つのフレームが、ネットワーク１００内における複数のノード１０２の受信ウィンドウ内で受信され、かつネットワーク１００内におけるその他のノード１０２の受信ウィンドウのわずかに外側にある場合に発生する。ＳＯＳの不具合が発生すると、ノード１０２の前者のセットは、そのフレームを正しいフレームとして受け入れ、その一方でノード１０２の後者のセットは、そのフレームを間違ったフレームとして拒絶する。すなわち、ネットワーク１００内における正当なノード１０２の別々のセットが、同一のフレームに対して別々の見方を有することになり、これは望ましくない。
【００７１】
この例では、ノードＡにおいてＳＯＳの不具合が発生している。このような不具合においては、ノードＡの送信用としてノードＡに割り当てられているタイムスロットの間に、障害を抱えるノードＡは、ある時点で送信を行い、その結果、（もしもノードＡの送信が、リング１０４の全体に完全に中継されるならば）ノードＢ、Ｃ、Ｈ、およびＧは、その送信を正しいものとして受信し、ノードＤ、Ｅ、およびＦは、その送信を間違ったものとして受信することになる。
【００７２】
ノードＢおよびＨは、ノードＡの隣として、ノードＡによる送信が、ネットワーク１００内において実施される時間的なポリシーに準拠しているかどうかをチェックする。このような例においては、ノードＢは、チャネル１上においてノードＡから受信されたフレームが時間的なポリシーに準拠していないと判断し、したがってチャネル１に沿ってそれ以上そのフレームを中継しない。同様に、ノードＨは、チャネル０上においてノードＡから受信されたフレームが時間的なポリシーに準拠していないと判断し、したがってチャネル０に沿ってそれ以上そのフレームを中継しない。このようにして、そうしたＳＯＳの不具合の影響が緩和される。
【００７３】
ノード１０２は、非同期化モードで動作している場合には、まだグローバルタイムベースに同期化されておらず、まだＴＤＭＡスケジュールに従って送信を行っていない。したがってネットワーク１００のノード１０２は、送信のコリジョンに対処するためのステップを踏まなければならない。図７Ａ〜７Ｂは、非同期化モードで動作している間に図１のネットワーク１００内において通信を行う方法７００の一実施形態を示す流れ図である。このような実施形態においては、ネットワーク１００内におけるそれぞれのノード１０２は、そのノード１０２が非同期化モードで動作している場合に、方法７００の処理を実行する。図７Ａ〜７Ｂのコンテキストにおいては、方法７００の処理を実行しているノード１０２は、ここでは「現在の」ノード１０２と呼ばれる。一実施形態においては、現在のノード１０２によって実行されるものとしてここで説明されている機能の少なくとも一部は、そのノード１０２内に含まれるコントローラ内に実装される。方法７００のその他の実施形態は、その他の方法で実装される。
【００７４】
図７Ａ〜７Ｂに示されている方法７００の特定の実施形態は、現在のノード１０２が「目覚めた」場合に（これは、図７のブロック７０２においてチェックされる）、そのノードによって実行される。例えば現在のノード１０２は、そのノード１０２が最初に電源をオンにされたときに、あるいはそのノード１０２がリセットされた後に、目覚める。現在のノード１０２が目覚めた場合には、その現在のノード１０２は、その現在のノード１０２がリンク１０８のいずれから受信するいかなるデータも所定の期間中は中継しない（ブロック７０４）。すなわち現在のノード１０２は、ネットワーク１００内においてその他のノード１０２によって行われるいかなる送信からのデータも、ネットワーク１００のチャネル０および１に沿ってそれ以上は中継しないことによって、そのような送信を「ブロック」する。現在のノード１０２がそのような送信をブロックする所定の期間は、ここでは「第１のブロック期間」とも呼ばれる。ＴＴＰ／Ｃプロトコルが使用されるこのような実施形態の一実装形態においては、第１のブロック期間は、最小のＩＦＧ（ｉｎｔｅｒ−ｆｒａｍｅ  ｇａｐ）に設定される。
【００７５】
第１のブロック期間が経過すると、現在のノード１０２は、その現在のノード１０２が受信するすべての送信をブロックすることをやめる。現在のノード１０２が、ダイレクトリンク１０８を介してチャネル０上におけるその現在のノード１０２の反時計方向の隣からデータを受信した場合には（これは、ブロック７０６においてチェックされる）、その現在のノード１０２は、その反時計方向の隣がその受信したデータのソースであるかどうかをチェックする（ブロック７０８）。一実施形態においては、現在のノード１０２は、その現在のノード１０２がチャネル０上における反時計方向の隣から受信しているデータと同じデータをその現在のノード１０２がチャネル０上におけるその現在のノードの反時計方向の隣の隣から受信しているかどうかを所定の「比較」期間中にチェックすることによって、この判断を行う。現在のノード１０２が、自分がチャネル０上におけるその現在のノードの反時計方向の隣の隣から同じデータを受信していないと判断した場合には、その現在のノード１０２は、反時計方向の隣が、その隣から受信しているデータのソースであると結論付ける。現在のノード１０２が、自分がチャネル０上におけるその現在のノードの反時計方向の隣の隣から同じデータを受信していると判断した場合には、その現在のノード１０２は、反時計方向の隣は、その隣から受信しているデータのソースではないと結論付ける。
【００７６】
反時計方向の隣が、その隣から受信しているデータのソースではない場合には、現在のノード１０２は、そのデータを、チャネル０に沿って、その現在のノードの時計方向の隣のノードおよび時計方向の隣の隣へ中継する（ブロック７１０）。
【００７７】
反時計方向の隣が、その隣から受信しているデータのソースである場合には、現在のノード１０２は、その反時計方向の隣から発生してチャネル０上において受信したデータを、所定の期間中に中継する（ブロック７１２）。この所定の期間は、ここでは「中継期間」とも呼ばれる。ＴＴＰ／Ｃプロトコルが使用されるこのような実施形態の一実装形態においては、中継期間は、少なくともコールドスタートメッセージがネットワーク１００の全体へ送信されるのに十分な長さである。現在のノード１０２は、このようなデータを、チャネル０に沿って、その現在のノードの時計方向の隣のノードおよび時計方向の隣の隣へ中継する。中継期間中には、現在のノード１０２は、その現在のノードの反時計方向の隣以外のノードから発生してチャネル０上において受信したいかなるデータも中継しない。
【００７８】
中継期間が経過すると（これは、ブロック７１４においてチェックされる）、現在のノード１０２は、反時計方向の隣から発生してチャネル０上において受信したデータを、所定の期間中は中継しない。この所定の期間は、ここでは「第２のブロック期間」とも呼ばれる。ＴＴＰ／Ｃプロトコルが使用されるこのような実施形態の一実装形態においては、中継期間は、少なくともネットワーク１００内における別のノード１０２がコールドスタートメッセージの送信を開始するのに十分な長さである。第２のブロック期間中に、現在のノード１０２が、反時計方向の隣から発生したものではないチャネル０上におけるデータを受信した場合には、その現在のノード１０２は、その受信したデータを、チャネル０に沿って、その現在のノードの時計方向の隣のノードおよび時計方向の隣の隣へ中継する（ブロック７１６）。図７Ａ〜７Ｂに示されている実施形態においては、現在のノード１０２は、反時計方向の隣から受信されたデータを、チャネル０上におけるその現在のノードの反時計方向の隣の隣から受信された任意の対応するデータと比較することによって、チャネル０上において受信されたそのデータが反時計方向の隣から発生したものであるかどうかを判断する。
【００７９】
第２のブロック期間が経過すると（これは、ブロック７１８においてチェックされる）、現在のノード１０２は、反時計方向の隣から発生してチャネル０上において受信したデータをブロックすることをやめる（７０６へループバックする）。
【００８０】
第１のブロック期間が経過すると、チャネル１に対して同様の処理が実行される。第１のブロックが経過した後に、現在のノード１０２が、ダイレクトリンク１０８を介してチャネル１上におけるその現在のノード１０２の反時計方向の隣からデータを受信した場合には（これは、図７Ｂのブロック７２０においてチェックされる）、その現在のノード１０２は、その時計方向の隣がその受信したデータのソースであるかどうかをチェックする（ブロック７２２）。一実施形態においては、現在のノード１０２は、その現在のノード１０２がチャネル１上における時計方向の隣から受信しているデータと同じデータをその現在のノード１０２がチャネル１上におけるその現在のノードの時計方向の隣の隣から受信しているかどうかを所定の期間中にチェックすることによって、この判断を行う。現在のノード１０２が、自分がチャネル１上におけるその現在のノードの時計方向の隣の隣から同じデータを受信していないと判断した場合には、その現在のノード１０２は、時計方向の隣が、その隣から受信しているデータのソースであると結論付ける。現在のノード１０２が、自分がチャネル１上におけるその現在のノードの時計方向の隣の隣から同じデータを受信していると判断した場合には、その現在のノード１０２は、時計方向の隣は、その隣から受信しているデータのソースではないと結論付ける。
【００８１】
時計方向の隣が、その隣から受信しているデータのソースではない場合には、現在のノード１０２は、そのデータを、チャネル１に沿って、その現在のノードの反時計方向の隣のノードおよび反時計方向の隣の隣へ中継する（ブロック７２４）。
【００８２】
時計方向の隣が、その隣から受信しているデータのソースである場合には、現在のノード１０２は、その時計方向の隣から発生してチャネル１上において受信したデータを、中継期間中に中継する（ブロック７２６）。現在のノード１０２は、このようなデータを、チャネル１に沿って、その現在のノードの反時計方向の隣のノードおよび反時計方向の隣の隣へ中継する。中継期間中には、現在のノード１０２は、その現在のノードの時計方向の隣以外のノードから発生してチャネル１上において受信したいかなるデータも中継しない。
【００８３】
中継期間が経過すると（これは、ブロック７２８においてチェックされる）、現在のノード１０２は、時計方向の隣から発生してチャネル１上において受信したデータを、第２のブロック期間中は中継しない。第２のブロック期間中に、現在のノード１０２が、時計方向の隣から発生したものではないチャネル１上におけるデータを受信した場合には、その現在のノード１０２は、その受信したデータを、チャネル１に沿って、その現在のノードの反時計方向の隣のノードおよび反時計方向の隣の隣へ中継する（ブロック７３０）。図７Ａ〜７Ｂに示されている実施形態においては、現在のノード１０２は、時計方向の隣から受信されたデータを、チャネル１上におけるその現在のノードの時計方向の隣の隣から受信された任意の対応するデータと比較することによって、チャネル１上において受信されたそのデータが時計方向の隣から発生したものであるかどうかを判断する。第２のブロック期間が経過すると（これは、ブロック７３２においてチェックされる）、現在のノード１０２は、時計方向の隣から発生してチャネル１上において受信したデータをブロックすることをやめる（７２０へループバックする）。
【００８４】
以降では、方法７００のオペレーションの一例について説明する。この例においては、現在のノード１０２はノードＡであり、ネットワーク１００内のノード１０２は、（例えば、最初のシステムの起動中には）非同期化モードで動作している。ノードＡは、最初に電源をオンにされ、目覚めると、第１のブロック期間中は、自分が受信するいかなるデータも中継しない。第１のブロック期間が経過すると、ノードＡは、チャネル０上におけるノードＢから（すなわち、ノードＡの反時計方向の隣から）データを受信する。この例においては、ノードＢが、その受信されたデータのソースである。というのも、ノードＡは、所定の比較期間内には、ノードＣ（ノードＡの反時計方向の隣の隣）から同じデータを受信しなかったためである。ノードＡ（この例における現在のノード１０２）は、ノードＢから受信したデータを、中継期間中に中継する。中継期間中には、ノードＡは、ノードＢ以外のノードから発生してノードＡによって受信されたいかなるデータも中継しない。中継期間が経過した後、第２のブロック期間中は、ノードＡは、ノードＢから発生してチャネル０上において受信したデータを中継せず、ノードＢ以外のノードから発生してチャネル０上において受信したデータを中継する。第２のブロック期間が経過すると、ノードＢは、ノードＢから発生してチャネル０上において受信したデータをブロックすることをやめる。
【００８５】
このような例においては、ノードＢが間抜けなタイミングでのでしゃばりな送信による障害を有し、それによってノードＢが継続的にデータのソースとなる場合、現在のノード１０２（ノードＡ）は、第２のブロック期間中にノードＢの送信をブロックして、代わりにネットワーク１００内のその他のノードから発生したデータを中継することによって、ノードＢの障害の影響を制限するであろう。
【００８６】
その他の実施形態においては、第１のブロック期間、および第２のブロック期間、ならびに中継期間のうちの１つまたは複数が設定可能である。
その他の実施形態においては、現在のノード１０２において受信されたデータがそれぞれの隣から発生したものであるかどうかに基づいてそのデータをブロックしたり中継したりする代わりに、その現在のノード１０２は、そのようなデータがそれぞれの隣から発生したものであるかどうかにかかわらず、そのデータを中継し、その中継するデータがその現在のノード１０２のそれぞれの隣から発生したものであるか否かを示す情報を、その中継するデータと共に含める。このような一実施形態においては、図２〜５に関連して前述した比較機能を使用して、そのような情報を作成する。例えば、このような実施形態の一実装形態においては、中継されるデータが現在のノード１０２のそれぞれの隣から発生したものであるか否かを示す１ビットのフィールドが、その中継されるデータに添付される。これらの添付されたフィールドは、例えばソース識別処理における「ホップカウント」として使用することができる。
【００８７】
その他の実施形態においては、現在のノード１０２は、その現在のノード１０２において受信したデータが隣から発生したものであることを検知すると、その送信が、ネットワーク１００内において実施される１つまたは複数のポリシーに準拠しているかどうかを、およびそのような送信が、１つまたは複数のそのようなポリシーに準拠していないかどうかを判断し、その受信したデータを中継しないか、またはそのデータを、そのようなポリシーに準拠していないことを示す情報と共に（例えば、１ビットの整合性フィールドを添付することによって、またはそのデータ内に含まれている共有された整合性フィールドを変更することによって）中継する。
【００８８】
チャネル０および１は、セグメント化されたメディアを含むため、例えばシステムの電源投入時に、ネットワーク１００内には複数の「小グループ」が形成される可能性がある。図８は、２つの小グループが図１のネットワーク１００内において形成される典型的なシナリオを示している。これらの小グループのそれぞれは、それぞれの小グループ内におけるどのノード１０２が送信を行うかによって、別々のＴＤＭＡスケジュール８０２または８０４を有する。この例においては、スケジュール８０２および８０４の双方におけるタイムスロットは同じサイズであり、スケジュール８０２および８０４は、相互にほぼ１８０度位相がずれている。スケジュール８０２は、ノードＡ、Ｈ、Ｇ、およびＦを含む小グループ（ここでは、「小グループ１」とも呼ばれる）に関連付けられており、スケジュール８０４は、ノードＥ、Ｂ、Ｃ、およびＤを含む小グループ（ここでは、「小グループ２」とも呼ばれる）に関連付けられている。ネットワーク内のノード１０２が送信を行う順序は、ノードＡ、ノードＥ、ノードＨ、ノードＢ、ノードＧ、ノードＣ、ノードＦ、およびノードＤの順であり、ノードＥ、Ｂ、Ｃ、およびＤのそれぞれは、それぞれノードＡ、Ｈ、Ｇ、およびＦのそれぞれよりも１／２スロット遅れてその送信を開始する。
【００８９】
この例においては、２つの小グループ８０２および１２０４は、安定した状態を保ち、お互いをまったく認識していない。例えばＴＴＰ／Ｃプロトコルの通常の小グループを避ける機能は、複数のリンクのうちの１つだけの上で反対の小グループから見られる「ノイズ」が、すべてのスロット内でメッセージを首尾よく受信することによって相殺されるため、このような小グループの形成を解消するのに十分ではない可能性が高くなるということに留意すべきである。
【００９０】
図９は、図１のネットワーク１００内における小グループを解消する方法９００の一実施形態を示す流れ図である。図９に示されている方法９００の実施形態は、図８に示されている例において形成された小グループを解消するのに適している。図９に示されている方法９００の実施形態については、ここでは、図１に示されているネットワーク１００を使用して実装されるものとして説明するが、その他の実施形態は、その他のネットワーク内においてその他の方法で実装される。方法９００は、リング１０４内のノード１０２が同期化モードで動作しており、そこで複数の小グループが形成されている場合に使用するのに適している。図９のコンテキストにおいては、方法９００の処理を実行しているノード１０２は、ここでは「現在の」ノード１０２と呼ばれる。一実施形態においては、現在のノード１０２によって実行されるものとしてここで説明されている機能の少なくとも一部は、そのノード１０２内に含まれるコントローラ内に実装される。方法９００のその他の実施形態は、その他の方法で実装される。
【００９１】
方法９００の機能は、現在のノード１０２が同期モードで動作している場合に（すなわち、それぞれの小グループ内のノード１０２が、ＴＤＭＡスケジュールに従って送信を行っている場合に）使用される。同期モードで動作している間、現在のノード１０２は、同期的な方法でその現在のノードの両隣からのデータを求めてリッスンする（ブロック９０２）。すなわち現在のノード１０２は、その現在のノード１０２によって認識される現在の送信スケジュールによって定義されるタイムスロットの間に、チャネル１上におけるその時計方向の隣からのフレームを求めて、およびチャネル０上におけるその反時計方向の隣からのフレームを求めてリッスンする。現在のノード１０２は、自分が所定の期間中にその現在のノードの両隣のいずれかから有効なフレームを受信していないかどうかを判断する（これは、ブロック９０４においてチェックされる）。現在のノード１０２が所与の期間中に有効なフレームをそこから受信していない隣は、ここでは「静かな隣」と呼ばれる。「有効な」フレームとは、構文的に正しく、かつ現在のノードのスケジュール位置と調和するフレームである。一実施形態においては、スケジュールの位置合せの妥当性は、フレームのコンテンツ内に含めて送信される明示的なスケジュールデータによって確認することができる。別の実施形態においては、スケジュール位置データは、（例えば、Ｈ０００５０６１出願に記載されているように）暗にフレームのコンテンツ内に含めて送信することができる。
【００９２】
現在のノード１０２が、所与の期間中に静かな隣から有効なフレームを受信していない場合には、その現在のノード１０２は、所与の期間中に静かな隣の隣からのデータを求めて非同期的にリッスンする（ブロック９０６）。例えば、このような実施形態の一実装形態においては、この所与の期間は、１つのＴＤＭＡラウンドに等しい。別の実施形態においては、この期間はゼロである（すなわち現在のノード１０２は、スキップリンク１０８上において現在のノードの隣の隣からの有効なフレームを求めて非同期モードで継続的にリッスンする）。
【００９３】
現在のノード１０２が、このような静かな隣の隣からのデータを求めて非同期的にリッスンする場合には、その現在のノード１０２は、送信時間あるいはフェーズにかかわらずに静かな隣の隣から送信される構文的に有効ないかなるフレームも受信することができるであろう。結果として、現在のノード１０２は、その現在のノード１０２がメンバーになっていない小グループからのメッセージを受信することができるであろう。現在のノード１０２が、非同期的にリッスンしている間に所与の期間内に静かな隣の隣から有効なフレームを受信しない場合には、その現在のノード１０２は、その現在のノード１０２がその時点でメンバーになっている小グループ（ここでは、「現在の小グループ」とも呼ばれる）内に留まる（ブロック９２０）。
【００９４】
現在のノード１０２が、非同期的にリッスンしている間に静かな隣の隣から有効なフレームを受信した場合には（これは、ブロック９０８においてチェックされる）、その現在のノード１０２は、所与の期間にわたって静かな隣からの第２の有効なフレームを求めて非同期的にリッスンする（ブロック９１０）。現在のノード１０２が、非同期的にリッスンしている間に所与の期間内に静かな隣から有効なフレームを受信しない場合には（これは、ブロック９１２においてチェックされる）、その現在のノード１０２は、現在の小グループ内に留まる（ブロック９２０）。現在のノード１０２が、非同期的にリッスンしている間に静かな隣から有効なフレームを受信した場合には、その現在のノード１０２は、２つの非同期フレームが、自分たちが同じ小グループから送信されたことを示しているかどうかをチェックする（ブロック９１４）。一実施形態においては、現在のノード１０２は、２つの非同期フレームが、同じ小グループのメンバーである複数のノードから送信されたかどうかをチェックする。別の実施形態においては、現在のノード１０２は、２つの非同期フレームの２つの非同期受信の間に見られる時間が、例えばその２つの非同期フレーム内に組み込まれたフレームスケジュール位置データによって示されるような、それぞれのスケジュールされた送信の間における予想された時間と一致するかどうかをチェックする。その他の実施形態においては、これらのチェックに加えて、あるいはその代わりに、その他のフレーム整合性チェックを実行することができる。
【００９５】
現在のノード１０２が、自分たちが同じ小グループから送信されたことを示す２つの非同期フレームを受信しない場合には、その現在のノード１０２は、現在の小グループ内に留まる（ブロック９２０）。
【００９６】
２つの非同期フレームが、自分たちが同じ小グループ（ここでは、「他の小グループ」とも呼ばれる）から送信されたことを示す場合には、その現在のノード１０２は、その現在のノード１０２が現在の小グループから他の小グループへと離脱すべきかどうかを判断する（ブロック９１６）。現在のノード１０２が、自分が離脱すべきであると判断した場合には、その現在のノード１０２は、他の小グループへと向かうバイアスを伴って現在の小グループから離脱する（ブロック９１８）。そうでない場合には、現在のノード１０２は、現在の小グループ内に留まる（ブロック９２０）。
【００９７】
一実施形態においては、現在のノード１０２は、現在の小グループのサイズ（すなわち、現在の小グループのメンバーであるノードの数）を、他の小グループのサイズ（すなわち、他の小グループのメンバーであるノードの数）と比較することによって、自分が現在の小グループから他の小グループへと離脱すべきかどうかを判断する。他の小グループが現在の小グループよりも大きい場合には、現在のノード１０２は、現在の小グループから他の小グループへと離脱する。他の小グループが現在の小グループよりも大きくない場合には、現在のノード１０２は、現在の小グループ内に留まる。このような実施形態の一実装形態においては、他の小グループのサイズは、２つの非同期フレーム内に含まれている明示的な小グループサイズ情報を使用して測定される。別の実装形態においては、他の小グループのサイズは、（例えば、Ｈ０００５０６１出願に記載されているように）暗に２つの非同期フレームと共に送信される情報を使用して測定される。別の実装形態においては、他の小グループのサイズは、２つの非同期フレーム内に含めて送信されるその他の情報（例えば、メンバーシップベクトル）から導き出される。別の実装形態においては、現在のノード１０２は、ＴＤＭＡラウンドの全体にわたって他の小グループからの送信を求めて非同期的にリッスンし、その後、そのＴＤＭＡラウンド中にその現在のノード１０２が受信した送信の数に基づいて他の小グループのサイズを導き出す。
【００９８】
別の実施形態においては、現在のノード１０２は、ネットワーク１００内における複数のノード１０２の演繹的な順序付けに基づいて、自分が現在の小グループから他の小グループへと離脱すべきかどうかを判断する。現在のノード１０２は、現在の小グループのうちのどのメンバーノードが、割り当てられた順序内で先頭に来るかを判断することによって、および他の小グループのうちのどのメンバーノードが、割り当てられた順序内で先頭に来るかを判断することによって、自分が離脱すべきかどうかを判断する。現在のノード１０２は、ネットワーク１００の複数のノード１０２に対して割り当てられた順序内で、他の小グループの最初のノードが、現在の小グループの最初のノードよりも前に来る場合に、現在の小グループから他の小グループへと離脱する。図１０は、このような実装形態のオペレーションの一例を示すブロック図である。図１０に示されている例においては、ネットワーク１００の複数のノード１０２は、ノードＡ、ノードＢ、ノードＣ、ノードＤ、ノードＥ、ノードＦ、ノードＧ、およびノードＨという順で順序付けられている。この例においては、他の小グループは、図８に示されている小グループ１のメンバーであるノードを含み、現在の小グループは、図８に示されている小グループ２のメンバーであるノードを含む。他の小グループの最初のノード（ノードＡ）は、現在の小グループの最初のノード（ノードＢ）よりも前に来ており、したがって現在のノード１０２は、この例においては現在の小グループから他の小グループへと離脱することになる。
【００９９】
このような一実施形態においては、現在のノード１０２は、そのような演繹的な順序付けを使用して、現在の小グループと他の小グループが同じサイズである場合（すなわち、同じ数のメンバーノードを有する場合）にのみ、その現在のノード１０２が現在の小グループから他の小グループへと離脱すべきかどうかを判断する。
【０１００】
本明細書に記載のシステム、デバイス、方法、および技術は、さまざまなタイプのプロトコル（例えば、ＴＴＰ／ＣやＦＬＥＸＲＡＹなどのタイムトリガードプロトコル）を実装するノードにおいて実装することができる。図１１は、図１に示されているネットワーク１００のそれぞれのノード１０２を実装するのに適しているノード１１００の典型的な一実施形態を示すブロック図である。図１１に示されているノード１１００は、ＴＴＰ／Ｃプロトコルを実装している（ただし、本明細書に記載のシステム、デバイス、方法、および技術は、ＴＴＰ／Ｃプロトコルの代わりに、あるいはＴＴＰ／Ｃプロトコルに加えて、その他のプロトコルを使用して実装することもできるという点を理解されたい）。それぞれのノード１１００は、ホスト１１１０およびＴＴＰ／Ｃコントローラ１１１２を含む。ホスト１１１０は、ネットワーク１００を介してやり取りされるデータを提供するアプリケーションソフトウェア１１１４を実行する。例えば一実装形態においては、ホスト１１１０は、安全が決定的に重要となるコントロールアプリケーションを実行するコンピュータである。ホスト１１１０は、ＴＴＰ／Ｃコントローラ１１１２を使用して、通信ネットワーク１００内のその他のノード１０２と通信する。ＴＴＰ／Ｃコントローラ１１１２は、ＴＴＰ／Ｃプロトコルの機能を実施する。ＴＴＰ／Ｃプロトコルは、３つの基本的なサービスを、ホスト１１１０上で実行されるアプリケーションソフトウェア１１１４に提供する。ＴＴＰ／Ｃプロトコルは、決定論的なメッセージ送信、グローバルタイムベース、およびメンバーシップサービスを提供し、それによってそれぞれのノード１１００は、現在どのノードが送信を行っているかがわかる。
【０１０１】
ＴＴＰ／Ｃコントローラ１１１２は、ホスト１１１０と、ＴＴＰ／Ｃコントローラ１１１２のその他のコンポーネントとの間におけるインターフェースとして機能するＣＮＩ（ｃｏｍｍｕｎｉｃａｔｉｏｎ  ｎｅｔｗｏｒｋ  ｉｎｔｅｒｆａｃｅ）１１１６を含む。図１１に示されている実施形態においては、ＣＮＩ１１１６は、デュアルポートメモリ１１１８（ここでは、ＣＮＩメモリ１１１８とも呼ばれる）を使用して実装される。ＣＮＩメモリ１１１８は、ホスト１１１０によって、およびＴＴＰ／Ｃコントローラ１１１２内に含まれているＴＴＰ／Ｃコントローラユニット１１２０によってアクセスされる。このような実施形態の一実装形態においては、ＣＮＩメモリ１１１８は、ＳＲＡＭ（ｓｔａｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）を使用して実装される。バスインターフェース１１２２は、ＣＮＩメモリ１１１８を複数のバス１１２４（例えばデータバス、アドレスバス、および／またはコントロールバス）に結合し、これらのバス１１２４を介して、ホスト１１１０は、ＣＮＩメモリ１１１８との間においてデータの読み取りおよび書き込みを行う。その他の実施形態においては、ＣＮＩメモリ１１１８は、その他の方法で（例えば、シリアルインターフェースを使用して）アクセスされる。
【０１０２】
ＴＴＰ／Ｃコントローラユニット１１２０は、ＴＴＰ／Ｃプロトコルを実装するのに必要な機能を提供する。このような実施形態の一実装形態においては、ＴＴＰ／Ｃコントローラユニット１１２０は、プログラマブルプロセッサ（例えば、マイクロプロセッサ）を使用して実装され、このプログラマブルプロセッサは、ＴＴＰ／Ｃコントローラユニット１１２０によって実行される機能を実施するための命令と共にプログラムされる。このような実施形態においては、命令メモリ１１２６は、ＴＴＰ／Ｃコントローラユニット１１２０に結合される。ＴＴＰ／Ｃコントローラユニット１１２０によって実行されるプログラム命令は、プログラム命令メモリ１１２６内に格納される。一実装形態においては、プログラムメモリ１１２６は、読み取り専用のメモリデバイス、あるいはフラッシュメモリデバイスなどの不揮発性のメモリデバイスを使用して実装される。
【０１０３】
ＴＴＰ／Ｃコントローラ１１１２はまた、ＭＥＤＬ（ｍｅｓｓａｇｅ  ｄｅｓｃｒｉｐｔｏｒ  ｌｉｓｔ）メモリ１１２８を含み、ここには、ＴＤＭＡ（ｔｉｍｅ−ｄｉｖｉｓｉｏｎ  ｍｕｌｔｉｐｌｅ  ａｃｃｅｓｓ）スケジュール、動作モード、およびクロック同期化パラメータに関する構成情報が保存される。ＭＥＤＬメモリ１１２８は通常、例えばフラッシュメモリデバイスおよび／またはＳＲＡＭ（ｓｔａｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）デバイスを使用して実装される。ＣＮＩメモリ１１１８、プログラムメモリ１１２６、およびＭＥＤＬメモリ１１２８のサイズはいずれも、ホスト１１１０上で実行されるアプリケーションソフトウェア１１１４、ＴＴＰ／コントローラユニット１１２０上で実行されるプログラム命令、および／または（後述する）バスガーディアン１１３２の特定のニーズに基づいて選択される。さらに、ＣＮＩメモリ１１１８、プログラムメモリ１１２６、およびＭＥＤＬメモリ１１２８は、別々のコンポーネントとして図１１に示されているが、いくつかの実施形態においては、ＣＮＩメモリ１１１８、プログラムメモリ１１２６、および／またはＭＥＤＬメモリ１１２８は、１つまたは複数のメモリデバイスへと統合される。
【０１０４】
単一のバスガーディアン１１３２は、ＴＴＰ／Ｃコントローラ１１１２とリンク１１０８の間におけるインターフェースとして機能する。図１１に示されている実施形態の一実装形態においては、バスガーディアン１１３２は、例えば１つまたは複数のＵＡＲＴ（ｕｎｉｖｅｒｓａｌ  ａｓｙｎｃｈｒｏｎｏｕｓ  ｒｅｃｅｉｖｅｒ／ｔｒａｎｓｍｉｔｔｅｒ）デバイスを含み、この１つまたは複数のＵＡＲＴデバイスは、図１に示されているシリアルな、一方向性のポイントツーポイントの、一方向性のリンク１０８からデータを受信して、そうしたリンク１０８を介してデータを送信および中継するために使用される。
【０１０５】
バスガーディアン１１３２によってリンク１０８から受信されるデータは、ＴＴＰ／Ｃプロトコルに従って処理するためにＴＴＰ／Ｃコントローラ１１１２へ渡される。ＴＴＰ／Ｃコントローラ１１１２によって送信されることになるデータは、ＴＴＰ／Ｃコントローラユニット１１２０によってバスガーディアン１１３２へ渡される。バスガーディアン１１３２は、ＴＴＰ／Ｃコントローラ１１１２がリンク１０８上における送信をいつ許可されるか、およびリンク１０８から受信されたデータをいつ中継するかを決定する。一実装形態においては、バスガーディアン１１１２は、図２および３に関連して前述した機能の少なくとも一部を実装する。バスガーディアン１１３２は、データをいつ送信および中継するかを判断するために、ＴＴＰ／Ｃコントローラ１１２０のＭＥＤＬメモリ１１２８内に保存されているＭＥＤＬ情報にアクセスする。したがって、それぞれのノード１０２内に含まれるバスガーディアン１１３２は、そのノード１０２にとって、およびそのノードの両隣のそれぞれにとって、バスガーディアン１１３２として機能する。このようにして、それぞれのノード１０２内の単一のバスガーディアン１１３２を使用するだけで、ネットワーク１００内のノード１０２に関して、複数のバスガーディアンに関連付けられているフォルトトレランスを達成することができる。
【０１０６】
ＴＴＰ／Ｃコントローラ１１１２およびバスガーディアン１１３２は、別々のコンポーネントとして図１１に示されているが、このような実施形態の一実装形態においては、ＴＴＰ／Ｃコントローラ１１１２およびバスガーディアン１１３２によって提供される機能は、単一の集積回路デバイスへ統合されるということを理解されたい。このような実装形態においては、さらなるリソースの節約（例えばコスト、スペース、および電力）を達成することができる。このような一実装形態においては、プログラマブルプロセッサは、適切なプログラム命令と共にプログラムされ、この適切なプログラム命令は、プログラマブルプロセッサによって実行されると、ＴＴＰ／Ｃコントローラ１１１２およびバスガーディアン１１３２によって実行されるものとしてここで説明されている機能の少なくとも一部を実行する。その他の実施形態および実装形態においては、ＴＴＰ／Ｃコントローラ１１１２（あるいはその１つまたは複数のコンポーネント）およびバスガーディアン１１３２（あるいはその１つまたは複数のコンポーネント）は、別々のコンポーネントを使用して実装される。
【０１０７】
図１２は、図１のネットワーク１００内における方向的な整合性を検知する方法の一実施形態を示す流れ図である。図１２に示されている方法１２００の実施形態については、ここでは、図１に示されているネットワーク１００を使用して実装されるものとして説明するが、その他の実施形態は、その他のネットワーク内においてその他の方法で実装される。図１２のコンテキストにおいては、方法１２００の処理を実行しているノード１０２は、ここでは「現在の」ノード１０２と呼ばれる。一実施形態においては、現在のノード１０２によって実行されるものとしてここで説明されている機能の少なくとも一部は、そのノード１０２内に含まれるコントローラ内に実装される。方法１２００のその他の実施形態は、その他の方法で実装される。
【０１０８】
所与のノード１０２（この図１２のコンテキストにおいては、「送信側の」ノード１０２と呼ばれる）がデータを送信する際、その送信側のノード１０２の両隣のノードのそれぞれは、その送信側のノード１０２がネットワーク１００のチャネル０と１の双方の上で同じデータを送信しているかどうか（すなわち、そこで送信側のノード１０２が方向的な整合性を伴って送信を行っているかどうか）を判断するために、方法１２００を実行する。方法１２００は、例えばネットワーク１００内のノード１０２が、複数のノードが１つのＴＤＭＡスケジュールに従って送信を行う同期化モードで動作している場合に実行することができる。このような実施形態においては、方法１２００は、図３Ａあるいは図３Ｂに関連して前述した処理に加えて、両隣のノードによって実行することができる。方法１２００はまた、例えばネットワーク１００内のノード１０２が（例えばシステムの起動中に）非同期化モードで動作している場合に実行することもできる。このような実施形態においては、方法１２００は、図７Ａあるいは図７Ｂに関連して前述した処理に加えて、両隣のノードによって実行することができる。
【０１０９】
送信側のノード１０２が送信を行う場合には、その送信側のノードの両隣は、自分たちがその送信側のノードから受信するそれぞれのフレームを、それらの両隣を相互に通信可能に結合するスキップリンク１０８を介してやり取りする。図１２に示されているように、現在のノード１０２が、その両隣のうちの一方から発生したフレームを受信した場合には（これは、ブロック１２０２においてチェックされる）、その現在のノード１０２は、自分がその隣から（すなわち、送信側のノードから）受信しているフレームを、その送信側のノードの他方の隣へ転送する（ブロック１２０４）。現在のノード１０２は、送信側のノード１０２からのフレームを、その現在のノード１０２をその送信側のノードへ通信可能に結合するダイレクトリンク１０８から受信する。請求項１２のコンテキストにおいては、現在のノード１０２が送信側のノード１０２からフレームを受信するチャネルは、ここでは「現在のチャネル」と呼ばれる。現在のノード１０２は、自分が送信側のノードから受信するフレームを、その送信側のノード１０２の他方の隣へ、その現在のノード１０２を現在のチャネル以外のチャネル内の他方の隣へ通信可能に結合するスキップリンク１０８を介して転送する。
【０１１０】
送信側のノードの他方の隣は、自分が送信側のノードから受信するフレームを、現在のノード１０２へ、その他方の隣を現在のチャネル内のその現在のノード１０２へ通信可能に結合する他のスキップリンク１０８を介して転送する。図１２のコンテキストにおいては、送信側のノードの他方の隣によって現在のノード１０２へ転送されるフレームは、ここでは「他のフレーム」とも呼ばれる。現在のノード１０２は、他のフレームを受信する（ブロック１２０６）。現在のノード１０２は、自分が送信側のノードから受信しているフレームを、自分が他方の隣から受信している他のフレームと比較する（ブロック１２０８）。一実施形態においては、この比較はビットごとの比較である。
【０１１１】
現在のノード１０２は、自分が送信側のノード１０２から受信しているフレームを、現在のチャネルに沿って中継する（ブロック１２１０）。例えば送信側のノード１０２が、現在のノード１０２の時計方向の隣である場合には、その現在のノード１０２は、送信側のノード１０２からチャネル１を介してフレームを受信し、その受信したフレームを、チャネル１に沿って、その現在のノード１０２の反時計方向の隣および隣の隣へ中継する。送信側のノード１０２が、現在のノード１０２の反時計方向の隣である場合には、その現在のノード１０２は、送信側のノード１０２からチャネル０を介してフレームを受信し、その受信したフレームを、チャネル０に沿って、その現在のノード１０２の時計方向の隣および隣の隣へ中継する。
【０１１２】
送信側のノードによって送信されたフレームの全体が、現在のノード１０２によって中継され、そのフレームと、他方の隣によってその現在のノード１０２へ転送された他のフレームとの比較が完了した後、その現在のノード１０２は、その比較の結果を示す情報を、送信側の隣から受信されたフレーム内に含めて、あるいはそのフレームの後に、現在のチャネルに沿って中継する（ブロック１２１２）。一実施形態においては、比較の結果を示す情報は、図４Ａ〜４Ｂおよび５に関連して前述したように、現在のノード１０２が、送信側のノードから受信されたフレームに添付する１ビットの添付された整合性フィールドを含む。別の実施形態においては、図４Ａ〜４Ｂおよび５に関連して前述したように、共有された整合性フィールドが、それぞれのフレームの終わりに含まれる。
【０１１３】
例えば、送信側のノードが図１のノードＡであり、現在のノードがノードＢである場合には、送信側のノードの他方の隣はノードＨである。このような例においては、現在のノード（ノードＢ）は、自分がノードＡから受信するフレームを、ノードＢをノードＨへ通信可能に結合するチャネル０のスキップリンク１０８を介して、他方の隣（ノードＨ）へ転送する。同様に、他方の隣（ノードＨ）は、自分がノードＡから受信するフレームを、ノードＨをノードＢへ通信可能に結合するチャネル１のスキップリンク１０８を介して、現在のノード（ノードＢ）へ転送する。ノードＢは、自分がノードＡから受信するフレームを、自分がノードＨから受信するフレームと比較する。ノードＢは、ノードＡから受信したフレームを、チャネル１に沿ってノードＣ（ノードＢの反時計方向の隣）へ、およびノードＤ（ノードＢの反時計方向の隣の隣）へ中継する。ノードＢは、ノードＡから受信したフレームの全体を中継し、比較を完了すると、（この例においては）その中継されたフレームに１ビットのフィールドを添付する。
【０１１４】
図１３は、図１のネットワーク１００内における整合性を再構成する方法の一実施形態を示す流れ図である。図１３に示されている方法１３００の実施形態については、ここでは、図１に示されているネットワーク１００を使用して実装されるものとして説明するが、その他の実施形態は、その他のネットワーク内においてその他の方法で実装される。図１３のコンテキストにおいては、方法１３００の処理を実行しているノード１０２は、ここでは「現在の」ノード１０２と呼ばれる。一実施形態においては、現在のノード１０２によって実行されるものとしてここで説明されている機能の少なくとも一部は、そのノード１０２内に含まれるコントローラ内に実装される。方法１３００のその他の実施形態は、その他の方法で実装される。
【０１１５】
図１３に関連して本明細書に記載されている処理は、任意選択であり、本明細書に記載されているその他のシステム、デバイス、方法、あるいは技術のいずれかを使用する任意の所与のネットワーク１００内において必ずしも実施する必要はないということを理解されたい。
【０１１６】
方法１３００は、一実施形態においては、送信側のノード１０２ならびにその送信側のノードの時計方向の隣のノード１０２および反時計方向の隣のノード１０２以外のノード１０２によって、それらのノード１０２が同期化モードで動作している間に実行される。現在のノード１０２は、その現在のノード１０２が偶然にも２つのチャネルから４つのフレームを（すなわち、チャネル０を介して反時計方向の隣からのフレームおよび反時計方向の隣の隣からのフレームと、チャネル１を介して時計方向の隣からのフレームおよび時計方向の隣の隣からのフレームとを）受信した場合に、所定の「比較」ウィンドウ内で方法１３００の処理を実行することができる。これが起こると、現在のノード１０２は、「投票」オペレーションにおいて、それらの４つのフレームを相互に比較することができる。
【０１１７】
現在のノード１０２が、その現在のノード１０２において、その現在のノード１０２の第１の隣および第１の隣の隣からフレーム（ここでは、「第１のフレーム」と呼ばれる）を受信した場合には（ブロック１３０２）、その現在のノード１０２は、その第１のフレームのうちの一方（ここでは、「中継される方の第１のフレーム」とも呼ばれる）を、その第１のチャネルに沿って中継し、図４Ａ〜４Ｂに関連して前述したのと同じ一般的な方法で、その２つの第１のフレームどうしの間において双方向の比較を実行する（ブロック１３０４）。その後、現在のノード１０２が、その現在のノード１０２において、その現在のノードの他方の隣および他方の隣の隣からフレーム（ここでは、「後の」あるいは「第２の」フレームと呼ばれる）を受信した場合には（ブロック１３０６）、その現在のノード１０２は、その第２のフレームのうちの一方（ここでは、「中継される方の第２のフレーム」とも呼ばれる）を、その第２のチャネルに沿って中継し、図４Ａ〜４Ｂに関連して前述したのと同じ一般的な方法で、その２つの第２のフレームどうしの間において双方向の比較を実行する（ブロック１３０８）。
【０１１８】
現在のノード１０２が、比較ウィンドウ内において第２のチャネルから第２のフレームを受信した場合には（これは、ブロック１３１０においてチェックされる）、その現在のノード１０２は、自分が受信している４つのフレーム（すなわち、第１のフレームおよび第２のフレーム）を使用して投票オペレーションを実行する（ブロック１３１２）。一実施形態においては、投票オペレーションは、ビットごとの比較において４つのフレームのそれぞれを他の４つのフレームと比較する。２つの第２のフレームどうしの間において不一致があり（これは、ブロック１３１４においてチェックされる）、その一方で第１のフレームが、相互に同一であり、かつ第２のフレームのうちの一方と同一である（すなわち、「過半数」が存在する）ことが比較によって示される場合には（ブロック１３１６）、現在のノード１０２は、前述した通常の中継／双方向比較処理を「無効にする」（ブロック１３１８）。現在のノード１０２は、前述した通常の中継および双方向比較処理を実行する代わりに、２つの第１のフレームと一致した第２のフレームを中継し、その中継される第２のフレームと共に、その中継される第２のフレームがその現在のノード１０２において整合性を伴って受信されたことを示す情報を中継する。すなわち、そうでない場合には、方法４００の通常の中継／双方向比較処理に従って整合性フィールドがその中継される第２のフレームに添付されるか、あるいは含まれるが、現在のノード１０２において実行される通常の中継／双方向比較処理にかかわらず、その整合性フィールドは、その現在のノード１０２が「一致」を有していたこと（すなわち、中継される第２のフレームを、整合性を伴って受信したこと）を後続のノード１０２に示す「正の」値に置き換えられる。その他の実施形態においては、その他の投票ルールおよび／または無効化処理が実行されるということを理解されたい。
【０１１９】
後のフレームが比較ウィンドウ内において受信されない場合、第２のフレームどうしの間において不一致がない場合、あるいは第２のフレームどうしの間において不一致があるが、過半数が存在しない場合には、現在のノード１０２は、第２のフレームに対する通常の中継／双方向比較処理を無効にしない（ブロック１３２０）。
【０１２０】
同期化モードで動作している場合には、１つのノード１０２は、そのノード１０２が、所与のタイムスロットの間に４つのフレーム（すなわち、そのノードの時計方向の隣からのフレーム、時計方向の隣の隣からのフレーム、反時計方向の隣からのフレーム、および反時計方向の隣の隣からのフレーム）を受信した後に、このような投票オペレーションを実行することができる。図１４は、図１に示されているネットワーク１００のノード１０２における投票の方法１４００の一実施形態を示す流れ図である。図１４に示されている方法１４００の実施形態については、ここでは、図１に示されているネットワーク１００を使用して実装されるものとして説明するが、その他の実施形態は、その他のネットワーク内においてその他の方法で実装される。図１４のコンテキストにおいては、方法１４００の処理を実行しているノード１０２は、ここでは「現在の」ノード１０２と呼ばれる。一実施形態においては、現在のノード１０２によって実行されるものとしてここで説明されている機能の少なくとも一部は、図２〜４Ｂに関連して前述した送信／中継機能を実行する機能と、ネットワーク１００を介してやり取りされるデータを使用するノード１０２上で実行されるアプリケーションとの間におけるインターフェースとして機能する「ボータ」内に実装される。方法１４００のその他の実施形態は、その他の方法で実装される。
【０１２１】
方法１４００は、現在のノード１０２が同期化モードで動作している場合に、その現在のノード１０２が所与のタイムスロットの間にネットワーク１００から４つのフレームを受信した後に、そのノード１０２によって実行される。現在のノード１０２は、４つのフレームのいずれもがその現在のノード１０２において整合性を伴って受信されているかどうかを判断する（ブロック１４０２）。この実施形態においては、１つのフレームと共に含まれている添付されたあるいは共有された整合性フィールドが、そのフレームを現在のノード１０２へ送信および中継する過程でミスマッチがまったく発生していないことを示している場合に、そのフレームは、整合性を伴って受信される。１つのフレームが、現在のノード１０２において整合性を伴って受信されている場合には、そのフレームは、（例えば、その現在のノード１０２上で実行されるアプリケーションによって）後続の処理のために使用される（ブロック１４０４）。
【０１２２】
現在のノード１０２によって現在のタイムスロットの間に受信された４つのフレームのいずれもが、整合性を伴って受信されなかった場合には、その現在のノード１０２は、その４つの受信したフレームを使用して投票オペレーションを実行する（ブロック１４０６）。投票オペレーションは、一実施形態においては、それぞれのフレームを、他のチャネル上で受信された他の２つのフレームとビットごとに比較する。２つの比較されたフレームが同一であること（すなわち、「過半数」が存在すること）がビットごとの比較のいずれかによって示される場合には（これは、ブロック１４０８においてチェックされる）、それらのフレームは、あたかも現在のノード１０２によって整合性を伴って受信されているかのように（例えば、その現在のノード１０２上で実行されるアプリケーションによって）使用される（ブロック１４１０）。比較されたフレームのいずれも同一でない場合には、いずれのフレームも整合性を伴って受信されていなかったとみなされる（ブロック４１２）。一実施形態においては、現在のノード１０２内のボータは、単一のフレームを、それによって使用するためにその現在のノード１０２上で実行されるアプリケーションに提供する。そのアプリケーションに提供されるフレームは、現在のノードにおいて整合性を伴って受信されるフレーム、あるいは整合性を伴って受信されていたと投票後にみなされるフレームである。このようにして、たとえ上述の中継および／または方向的な整合性の処理の結果、４つのフレームが現在のノード１０２によって整合性を伴わずに受信されているとしても、それらのフレームの整合性は、投票オペレーションによって「再構成する」ことができる。
【０１２３】
本明細書に記載のシステム、デバイス、方法、および技術は、図１に示されている特定の編組リング型のトポロジ以外のネットワークトポロジを有するネットワーク内に実装することができる。例えば、本明細書に記載のシステム、デバイス、方法、および技術の少なくとも一部は、ネットワークのさまざまなノードの間において提供されるノード間の接続がさらに多いネットワーク内に実装することができる。このようなネットワークの一例が、「メッシュ型の」ネットワークである。このようなメッシュ型の実施形態の一例においては、それぞれのノードは、（「完全な」メッシュ型のネットワークトポロジの場合には）ネットワーク１００内における他のすべてのノードへ、あるいは（「部分的な」メッシュ型のネットワークトポロジの場合には）ネットワーク内における他のノードのサブセットへ通信可能に結合される。このようなそれぞれのノードごとに、およびこのようなメッシュ型のネットワーク内において定義される所与のチャネル内のデータの所与のフローごとに、そのノードが結合されるノードの少なくとも１つのサブセットが、そのノードにとっての受信元ノードとして指定され、そのノードが結合されるノードの少なくとも１つのサブセットが、送信先ノードとして指定される。
【０１２４】
さらに、本明細書に記載のシステム、デバイス、方法、および技術の少なくとも一部は、ネットワークのさまざまなノードの間において提供されるノード間の接続がさらに少ないネットワーク内に実装することができる。このようなネットワークの一例が、２つの「シンプレックス」リングチャネルを含むネットワークである。このような一実装形態は、図１に示されている方法で実装されるが、それぞれのノードをその時計方向の隣の隣および反時計方向の隣の隣へ通信可能に結合するスキップリンクは存在しない。例えば方法３００の実施形態は、このようなシンプレックスリング型ネットワーク内において使用するのに適している。
【０１２５】
さらに、本明細書に記載のさまざまなシステム、デバイス、方法、および技術は、単一のネットワーク内にすべて一緒に実装する必要はなく、このようなシステム、デバイス、方法、および技術のさまざまな組合せを実装することができるという点を理解されたい。
【０１２６】
本明細書に記載の方法および技術は、デジタル電子回路内に、あるいはプログラマブルプロセッサ（例えば専用プロセッサや、コンピュータなどの汎用プロセッサ）、ファームウェア、ソフトウェア、またはそれらの組合せと共に実装することができる。これらの技術を具体化する装置は、適切な入力デバイスおよび出力デバイスと、プログラマブルプロセッサと、そのプログラマブルプロセッサによって実行するためのプログラム命令を目に見える形で具体化するストレージメディアとを含むことができる。これらの技術を具体化するプロセスは、入力されたデータ上で動作して適切な出力を生成することによって所望の機能を実行するための命令のプログラムを実行するプログラマブルプロセッサによって実行することができる。これらの技術は、有利なことに、データストレージシステムからデータおよび命令を受信するために、ならびにデータストレージシステムへデータおよび命令を送信するために結合されている少なくとも１つのプログラマブルプロセッサと、少なくとも１つの入力デバイスと、少なくとも１つの出力デバイスとを含むプログラマブルシステム上で実行可能な１つまたは複数のプログラム内に実装することができる。一般にプロセッサは、読み取り専用メモリおよび／またはランダムアクセスメモリから命令およびデータを受け取ることになる。コンピュータプログラム命令およびデータを目に見える形で具体化するのに適したストレージデバイスとしては、例えばＥＰＲＯＭ、ＥＥＰＲＯＭ、およびフラッシュメモリデバイスなどの半導体メモリデバイス、内蔵型のハードディスクおよび取り外し可能なディスクなどの磁気ディスク、光磁気ディスク、ならびにＤＶＤディスクを含むすべての形態の不揮発性メモリが含まれる。これらのいずれも、特別に設計されたＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）によって補強するか、あるいはそうしたＡＳＩＣ内に組み込むことができる。
【０１２７】
添付の特許請求の範囲によって定義される本発明の複数の実施形態について説明した。これにかかわらず、特許請求される本発明の趣旨および範囲から逸脱することなく、説明した実施形態に対するさまざまな修正を行うことができるということが理解できるであろう。したがって、その他の実施形態は、添付の特許請求の範囲内に収まるものである。
【図面の簡単な説明】
【０１２８】
【図１】通信ネットワークの一実施形態を示すブロック図である。
【図２】図１のネットワーク内においてデータを送信する方法の一実施形態を示す流れ図である。
【図３−Ａ】図１のネットワーク内においてデータを中継する方法の一実施形態を示す流れ図である。
【図３−Ｂ】図１のネットワーク内においてデータを中継する方法の一実施形態を示す流れ図である。
【図４−Ａ】図１のネットワーク内においてデータを中継する方法の一実施形態を示す流れ図である。
【図４−Ｂ】図１のネットワーク内においてデータを中継する方法の一実施形態を示す流れ図である。
【図５】一例においては、図３および４Ａ〜４Ｂに示されている方法の比較および中継処理を実施するために使用されるノードの論理コンポーネントを示すブロック図である。
【図６】このようなノードが同期化モードで動作している間に図１のネットワーク内において発生する間抜けなタイミングでのでしゃばりな送信による障害の一例を示すブロック図である。
【図７−Ａ】非同期化モードで動作している間に図１のネットワーク内において通信を行う方法の一実施形態を示す流れ図である。
【図７−Ｂ】非同期化モードで動作している間に図１のネットワーク内において通信を行う方法の一実施形態を示す流れ図である。
【図８】２つの小グループが図１のネットワーク内において形成される典型的なシナリオを示す図である。
【図９】図１のネットワーク内における小グループを解消する方法の一実施形態を示す流れ図である。
【図１０】図１のネットワークの複数のノードの演繹的な順序付けを使用した図９の方法のオペレーションの一例を示すブロック図である。
【図１１】図１に示されているネットワークのそれぞれのノードを実装するのに適しているノードの一実施形態を示すブロック図である。
【図１２】図１のネットワーク内における方向的な整合性を検知する方法の一実施形態を示す流れ図である。
【図１３】図１のネットワーク内における整合性を再構成する方法の一実施形態を示す流れ図である。
【図１４】図１のネットワーク内における整合性を再構成する方法の一実施形態を示す流れ図である。
【図１】
2007511991.tif 000003
【図２】
2007511991.tif 000004
【図３−Ａ】
2007511991.tif 000005
【図３−Ｂ】
2007511991.tif 000006
【図４−Ａ】
2007511991.tif 000007
【図４−Ｂ】
2007511991.tif 000008
【図５】
2007511991.tif 000009
【図６】
2007511991.tif 000010
【図７−Ａ】
2007511991.tif 000011
【図７−Ｂ】
2007511991.tif 000012
【図８】
2007511991.tif 000013
【図９】
2007511991.tif 000014
【図１０】
2007511991.tif 000015
【図１１】
2007511991.tif 000016
【図１２】
2007511991.tif 000017
【図１３】
2007511991.tif 000018
【図１４】
2007511991.tif 000019
【国際調査報告】
2007511991.tif 000020
2007511991.tif 000021
2007511991.tif 000022