(57)【特許請求の範囲】
【請求項１】
最初未知のトポロジーと複数の未知の装置を有するネットワーク（１００，３００）に接続し通信するための１つ以上のホストポートを有する制御装置（１１０，２１０，３１０）であって、前記制御装置は、
前記１つ以上のホストポートを用いて前記ネットワーク上の前記複数の未知の装置を発見し、そして前記１つ以上のホストポートを用いて前記発見された装置を列挙することによって、前記ネットワークの地図を作るために、セットコマンド及びゲットコマンドを使用するスタートアップ・プログラムを実行するように構成された、プログラム可能なプロセッサを備え、
前記スタートアップ・プログラムは、
ポートの数を取得し、前記発見された装置の各々が２以上のポートを有するか否かに基づいて、前記発見された装置の各々がスイッチであるか否かを判定するため、及び、
前記判定されたスイッチの各々に対してルーティングテーブルを設定するために、
前記プログラム可能なプロセッサによってさらに用いられ、
前記各ルーティングテーブルは、前記各スイッチ及び前記列挙された装置の特定ポート間の通信の経路を定めるために用いられる、
ことを特徴とする制御装置。
【請求項２】
前記発見された装置を列挙することは、前記発見された装置の各々に、異なるネットワークアドレスをそれぞれ割り当てることを含むことを特徴とする請求項１に記載の制御装置。
【請求項３】
選択されたスイッチに対して前記ルーティングテーブルを設定する前は、前記制御装置から最初にコマンドを受信した前記選択されたスイッチのポートによって、前記制御装置と前記選択されたスイッチの間の通信が行われ、前記選択されたスイッチに対して前記ルーティングテーブルを設定した後は、前記選択されたスイッチとの通信が前記ルーティングテーブルに従って行われることを特徴とする請求項１又は２に記載の制御装置。
【請求項４】
前記選択されたスイッチに対して前記ルーティングテーブルを設定する前は、前記制御装置から最初にコマンドを受信した前記ポート以外のポートを通って前記選択されたスイッチにより受信された通信は全て廃棄されることを特徴とする請求項３に記載の制御装置。
【請求項５】
前記スタートアップ・プログラムを実行することは、前記列挙された装置のうち選択された装置が前記ネットワークを通じて通信することのできる作動状態の前記ネットワークを確立することを特徴とする請求項３に記載の制御装置。
【請求項６】
前記セットコマンド及び前記ゲットコマンドは、ネットワークパケットを用いて送信され、前記各ネットワークパケットは、発信元のネットワークアドレスと宛て先のネットワークアドレスを含むことを特徴とする請求項３に記載の制御装置。
【請求項７】
前記発見された装置を列挙することは、各々の装置に異なるネットワークアドレスをそれぞれ割り当てることを含むことを特徴とする請求項６に記載の制御装置。
【請求項８】
前記各ネットワークパケットは、発信元のポートの名称と宛て先のポートの名称をさらに含むことを特徴とする請求項６に記載の制御装置。
【請求項９】
ネットワークアドレスを割り当てられる前は、選択された装置は任意のネットワークアドレスを有するネットワークパケットを受け入れ、ネットワークアドレスを割り当てられた後は、前記選択された装置は有効なネットワークアドレスを有するネットワークパケットのみを受け入れることを特徴とする請求項６に記載の制御装置。
【請求項１０】
前記発見された装置の各々との接続を設定するために、前記１つ以上のホストポートのうち同一のものが用いられることを特徴とする請求項３に記載の制御装置。
【請求項１１】
前記発見された装置の各々の列挙は、他の装置が発見される前に行われることを特徴とする請求項３に記載の制御装置。
【請求項１２】
選択されたスイッチが発見され列挙されたとき、他の装置を発見する前に前記選択されたスイッチに接続された装置の各々を発見し列挙するために、前記スタートアップ・プログラムは前記プログラム可能なプロセッサによってさらに用いられることを特徴とする請求項１１に記載の制御装置。
【請求項１３】
前記制御装置は、携帯装置であることを特徴とする請求項３に記載の制御装置。
【請求項１４】
前記携帯装置は、携帯電話、ＰＤＡ、メディアプレイヤー、ゲーム機、又はカメラであることを特徴とする請求項１３に記載の制御装置。
【請求項１５】
前記ネットワークの全ての装置を列挙した後、前記スタートアップ・プログラムは、前記制御装置以外の装置間における通信のための全てのルーティングテーブルを更新することを特徴とする請求項３に記載の制御装置。
【請求項１６】
最初未知のトポロジーと複数の未知の装置を有するネットワーク（１００，３００）に接続し通信するために、セットコマンドとゲットコマンドを実行する制御装置（１１０，２１０，３１０）を用いる方法であって、
前記制御装置の１つ以上のホストポートを用いて前記ネットワーク上の前記未知の装置を発見し、
前記発見された装置の各々に異なるネットワークアドレスを割り当てるために、前記１つ以上のホストポートを使用することによって前記発見された装置を列挙し、
ポートの数を取得し、前記発見された装置の各々が２以上のポートを有するか否かに基づいて、前記発見された装置の各々が、２つ以上の通信ポートを有する複数ポートスイッチであるか否かを判定し、
前記各複数ポートスイッチに対してルーティングテーブルを設定し、前記ルーティングテーブルは、前記複数ポートスイッチのポートのうちの一つへのネットワークアドレスに基づく通信の経路を定めるために用いられる、
ことを特徴とする方法。
【請求項１７】
前記１つ以上のホストポートによって前記未知の装置と通信するために、前記制御装置を設定するステップをさらに備えることを特徴とする請求項１６に記載の方法。
【請求項１８】
前記複数ポートスイッチの各々が、どの通信ポートが最初のデータパケットを受信したのかを識別する情報を保存し、前記制御装置に返信するために、識別された前記最初のデータパケットのポートを使用し、いったん前記ルーティングテーブルが設定されると、前記ルーティングテーブルを支持して前記最初のデータパケットのポートを通して行われる通信を無効とする、という設定を前記複数ポートスイッチの各々に対して行うことをさらに備えることを特徴とする請求項１７に記載の方法。
【請求項１９】
選択された複数ポートスイッチを設定する間、識別された前記最初のデータパケットのポート以外の全てのポートを通じて通信されるデータパケットは廃棄されることを特徴とする請求項１８に記載の方法。
【請求項２０】
前記各装置は、その装置に対する列挙ステップが行われるまで、全てのデータパケット通信を受け入れ、前記装置はその後、有効なネットワークアドレスを運ぶデータパケット通信のみを受け入れることを特徴とする請求項１６乃至１９のいずれかに記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ブート又はリセット時にネットワークを設定することに関する。
【背景技術】
【０００２】
携帯電話業界の関心事の一つは、例えば高速シリアルリンクを用いた、チップ間のネットワーク向けの通信標準を提供することである。汎用のプロトコルは、それぞれ異なるソフトウェアを実行する複数の異なる装置がネットワーク上に存在することによって生じる可能性のある接続問題を解決することができる。接続問題は、エラーハンドリング、フロー制御、ルーティング及び調停を含む。ソフトウェアに大きな影響を与えることなく装置がどのようにネットワークに接続されるかについての柔軟性を許容するために、ブート時に自動的に装置を発見し列挙（enumerate）することができる。
【発明の概要】
【課題を解決するための手段】
【０００３】
ある実施形態によれば、本発明は、最初未知のトポロジーと複数の未知の装置を有するネットワークに接続し通信するための１つ以上のホストポートを有する制御装置を提供する。この制御装置は、ネットワークの地図を作る（map）ためにセットコマンド（set command）及びゲットコマンド（get command）を使用するスタートアップ・プログラムを実行するように構成された、プログラム可能なプロセッサをさらに含む。１つ以上のホストポートを用いてネットワーク上の複数の未知の装置を発見し、列挙された装置がネットワークトポロジーに対応するように、発見された装置を１つ以上のホストポートを用いて列挙することによって、ネットワークの地図が作られる。
【０００４】
ある実施形態によれば、本発明は、さらに、最初未知のトポロジーと複数の未知の装置を有するネットワークに接続し通信するために、セットコマンド及びゲットコマンドを使用するように構成された制御装置を提供する。この制御装置は、該制御装置の１つ以上のホストポートを用いてネットワーク上の未知の装置を発見するための手段と、発見された装置の各々に異なるネットワークアドレスを割り当てることによって、発見された装置を１つ以上のホストポートを使用して列挙するための手段と、を含む。
【０００５】
ある実施形態によれば、本発明は、さらに、最初未知のトポロジーと複数の未知の装置を有するネットワークに接続し通信するために、セットコマンドとゲットコマンドを実行する制御装置を用いる方法を提供する。この方法は、制御装置の１つ以上のホストポートを用いてネットワーク上の未知の装置を発見するステップと、列挙された装置がネットワークトポロジーに対応するように、発見された装置の各々に異なるネットワークアドレスを割り当てるために、発見された装置を１つ以上のホストポートを使用することによって列挙するステップと、を含む。
【図面の簡単な説明】
【０００６】
【図１】本発明に従ってネットワーク上のホスト制御装置によりトポロジーを作成することのできるネットワークの概略図である。
【図２】本発明に従ってスイッチに接続され該スイッチを設定するホスト制御装置の概略図である。
【図３】本発明に従って作成されたネットワークトポロジーの概略図である。
【発明を実施するための形態】
【０００７】
上記の概要は、本開示の各実施形態又は全ての実施を説明することを意図したものではない。以下の図面及び詳細な説明が、様々な実施形態をより詳しく例示する。
【０００８】
本発明は、添付の図面と関連する以下の様々な実施形態の詳細な説明を考慮して、より完全に理解されるだろう。
【０００９】
本発明はさまざまな変更や代替形態に修正可能であるが、その詳細は図面中の例によって示されており、詳細に説明されるであろう。しかしながら、記載された特定の実施形態に本発明を限定する意図ではないことを理解すべきである。それとは逆に、意図するところは、添付された特許請求の範囲に記載された発明の範囲内における、あらゆる変更、均等、及び代替案をカバーすることである。
【００１０】
本発明の態様は、ブート又はリセット時にネットワークのトポロジーを自動的に発見し、地図を作る（マッピング）ことに関する。ネットワークの列挙はホスト制御装置から行われる。装置の自動発見及び列挙は、（例えばＰＣＩ  Ｅｘｐｒｅｓｓにおいて用いられるような）読出し及び書き込みプロトコルを用いて実行することができるが、一般的に、特別なトポロジーが仮定される。そのトポロジーにおいては、“ルート”（ここから発見および列挙が行われる）へのポートは、特別な状態を有し、ブート時に知られている（即ち、ハード・ワイヤードである）。任意のトポロジーを有することができ、特別な状態のポートが存在しないネットワークにおいては、特にルーティングテーブルが設定されていないので、ネットワークルータは当初、ホストに応答を返すことができない。同時に、ホストは、ホストへのルータのポートを知ったり取得したりすることはできず、このため、ルーティングテーブルを設定することができない。仮のトポロジーを持つことへの代案は、装置の列挙及び発見に特化したプロトコルを用いることである。しかしながら、そのような専門のプロトコルを開発するには何年もの協調的な努力を要し、結果として実施が遅延するだろう。本発明の様々な実施形態は、特に専門のプロトコルを規定することなく、また、仮のトポロジーを必要とすることなく、最初未知のネットワークトポロジーを作成するための装置発見及び列挙を、設定コマンドを用いてホスト制御装置から行うことができる方法、及び該方法を実行するための制御装置を提供する。
【００１１】
図１は、スイッチ及びエンドポイントを含む、様々な装置を含むネットワークシステム１００の一例を示している。一般的に、制御装置１１０は、オンチップルータ１１０Ｒにより、各々がエンドポイント装置１２０，１３０及び１４０と関連付けられたルータ１２０Ｒ，１３０Ｒ及び１４０Ｒのような、他の装置のオンチップルータと接続することができる。順に、ルータ１２０Ｒはエンドポイント装置１２０，１２２，１２４及び１２６と接続することができ、ルータ１３０Ｒはエンドポイント装置１３０、及び他の装置１３６に接続された装置１３２と１３４に接続することができ、そして、ルータ１４０Ｒは別の制御装置１４０、及び装置１４２と１４４に接続することができる。
【００１２】
制御装置は、一般的に、プロセッサと、１つ以上の通信ポートを含み、メモリ装置を含んでもよい。制御装置の例は、アプリケーションエンジン、ベースバンドプロセッサなどを含む。スイッチ又はルータは、ある装置を１つ若しくはそれ以上の他の装置と接続するための複数の通信ポートを含む装置である。スイッチは、別個のチップに実装されることも可能であるが、通常、１つ又は幾つかの装置とともに同じチップ上に集積される。ここで提示される実施形態においては、スイッチがネットワーク内の他の任意の装置と同じように設定されることを許容するために、スイッチはネットワークアドレスを割り当てられる。エンドポイント端末は、単一の通信ポートを含む装置であり、例えば、ディスプレイ、メディアエンジン、グラフィックアクセラレータ、カメラ、モデム（例えばＧＳＭ、３Ｇ、ＬＴＥ）、接続性装置（例えば、ＷｉＭａｘ、ＷＬＡＮ、Ｂｌｕｅｔｏｏｔｈ）、記憶装置（例えば、フラッシュ、ハードディスク、光ディスク）などである。
【００１３】
例示の目的のために、ネットワーク１００はビデオ会議システムと考えることができる。そのような場合、ホスト制御装置１１０はそのオンチップルータ１１０Ｒにより、メディアエンジン１２０用のオンチップルータであるルータ１２０Ｒに接続されている。メディアエンジン１２０は、イメージ／ビデオの圧縮／解凍、イメージ／ビデオの向上、ゲーム用のグラフィックエンジン機能などを行うことができる。ルータ１２０Ｒはメディアブリッジとして働き、通信エンジン１３０用のオンチップルータであるルータ１３０Ｒに接続されている。ルータ１３０Ｒは通信ブリッジとして働く。メディア側では、エンドポイント装置１２２はビデオモードで動作するカメラであってよく、エンドポイント装置１２４は制御装置１１０ローカルのディスプレイであってよく、そしてエンドポイント装置１２６はビデオ会議を記録するための大規模な記憶装置であってよい。通信側では、装置１３２はテレコン（teleconferencing）用のセルラーモデムであってよく、装置１３４は例えば同時バックグランドファイル同期を提供するための無線ＬＡＮ装置であってよく、そして装置１３６は例えばブルートゥースを用いて接続された無線送受話器（wireless handset）であってよい。ホスト制御装置１１０は、任意選択で、別の制御装置１４０に接続することができる。この場合、制御装置１４０は、高解像度の補助ディスプレイ装置１４２用のドライバであるものとして示されており、また、任意選択で、大規模な記憶装置１４４に接続される。
【００１４】
ホスト制御装置１１０は、ネットワーク１００内の他の装置に接続し、通信するための１つ以上のポートを含む。図１の接続により表されているように、制御装置１１０は少なくとも３つのポートを含むように示されている。この制御装置１１０は、スタートアップ・プログラムを実行するように構成されたプログラム可能なプロセッサも含む。このスタートアップ・プログラムは、例えば、局所的な（local）不揮発性のメモリに記憶され、システムのブート又はリセット時に実行のために呼び出される。スタートアップ・プログラムを実行する際、プロセッサは、該プロセッサがネットワーク上で見つける、各々連続する装置の属性を設定し（ｓｅｔ）、また、属性を得る（ｇｅｔ）ためのコマンドを用いる。それにより、プロセッサは、各々の装置を発見し、ネットワークアドレスを割り当て、そして道に沿って（along the way）スイッチ・ルーティングテーブルを設定する。
【００１５】
特定の例では、スタートアップ・プログラムは、プロセッサによって、制御装置１１０を最初に初期化／列挙するために用いられる。次に、プロセッサは、そのポートのうちの一つのポート上の装置をチェックする。もしプロセッサが装置を発見すれば、プロセッサはその装置を初期化／列挙する。プロセッサからの単一のポートが複数の装置に接続することを許容するスイッチのように機能する装置もある。よって、もしスイッチが検出されると、プロセッサは装置を求めてスイッチの各ポートをチェックする。発見された装置は全て列挙され、スイッチの対応するポートは、それぞれ、それらの装置に向かうデータを送るように構成される。いったん全ての装置がポート上に検出されると、プロセッサは、残りのポートを用いて同様の初期化／列挙を行うことができる。
【００１６】
簡単のために、ここでの実施形態の多くは、プロセッサは他のポートの一部を設定する前に、１つのポートを完全に設定すると仮定している（従って、再帰的なアルゴリズムを容易に使用することを可能にする）。しかしながら、プロセッサは、そのような再帰的で排他的なアルゴリズムを用いて、初期化／列挙を進める必要はない。例えば、プロセッサは、各ポートとそれに接続された装置との間の装置の初期化を循環させるラウンドロビン初期化手順を用いることができる。また、簡単のために、ここで開示される実施形態の多くは、木状ネットワークトポロジー（tree network topology）を仮定している。しかしながら、提示された方法及び装置は、それに限定されるものではなく、発見の間に論理的スパニングツリーを生成することにより、例えば、ブレスファースト法（breath-first manner）でネットワークを歩き回り、そして既に訪れたノードをスキップすることにより、あらゆるトポロジーを有するネットワークを発見し列挙するために用いることができる。
【００１７】
理解されるように、ネットワーク１００のために示された設定は、一つのあり得る設定にすぎず、そのため、リセット時又はシステムブート時に、具体的なネットワークトポロジーを仮定することはできない。これらの場合において、本発明の方法及び制御装置は、通常動作に備えるためにネットワーク上の装置を自動的に発見し列挙するために用いることができる。
【００１８】
図２は、本発明において実施され得る装置発見及び列挙ステップを図示するために用いることができる。図２は、４つのポート２２２Ａ−Ｄを有するスイッチ装置２２０に接続されたホスト制御装置２１０を示している。ポート２２２Ｄはスイッチのネットワークアドレスを受信し、スイッチのルーティングテーブルを記憶するスイッチの設定ポートであり、ポート２２２Ａは、ホスト装置２１０に接続されている。ホスト装置２１０とスイッチ２２０は、同じチップ上に置かれてもよいし、又は２つの異なるチップ上に置かれてもよい。スタートアップ時、ネットワークトポロジーは未知である。このことは、装置および接続が未知であることを意味する。初期のステップにおいて、ホスト装置２１０は自分自身を設定する。この設定は、ホスト装置のポート数に基づいて、ホスト装置自身のために多くのネットワークアドレスを予約することを含む。一般的に、ホスト制御装置の設定は、その制御装置に対する独自の工程にしたがって行われる。
【００１９】
いったんホスト装置２１０が設定されると、ホストは、属性を設定及び読み出すための“セット”及び“ゲット”設定コマンドを用いて、追加のネットワークノードを設定し始める。次の装置の各々を設定するとき、ホストは、次に利用可能なネットワークアドレスをその装置に割り当て、一般的には、その装置から返された確認メッセージを受信する。いったんエンドポイント装置が発見されネットワークアドレスとともに列挙されると、ホスト制御装置は次の装置を発見するために先へ進むことができる。装置が一つのポートしか有しないことを見つけることによって、エンドポイントを決定することができる。もし２以上のポートがあれば、その装置はスイッチであると見なされる。
【００２０】
図２に示すように次の装置がスイッチであるとき、ホスト装置に接続された、初期の通信ポート２２２Ａを通って通信が送られるように、制御装置２１０は、まずスイッチ２２０のルーティングテーブルを設定する。場合によっては、ホスト装置２１０からのパケットは、デフォルト設定により、スイッチ２２０の設定ポート２２２Ｄに送られる。この設定ポートは、通常動作の間、（スイッチに向かう）データパケットが送られるデフォルトのポートである。スイッチのルーティングテーブルが設定される前は、初期ルーティング条件を用いることができる。それによって、ホスト装置２１０に応答を返送するために、初期の入口ポート（ingress port）２２２Ａが保存され用いられる。このことはスイッチ２２０が完全に設定されるまで、通常の通信経路決定を無効にすることを必要とするかもしれない。よって、ネットワークアドレスの正確な数が予約されるように、スイッチ２２０のポート数を判定することができる。ひとたびスイッチのローカルポートが完全に列挙されると、ルーティングテーブルを設定することができ、通常のルーティングが支持され、初期ルーティング条件を無効にすることができる。
【００２１】
次に、このようにエンドポイントに達するまでスイッチ２２０の各ポートを通る装置接続を連続的に追うことによって、装置の発見及び列挙は続行することができる。次いで、エンドポイントに通じる全ての接続がスイッチ２２０の全てのポートに対して見つけられるまで、次のスイッチポートについて同じことを行う。ネットワークが完全に列挙されるまで、ホスト制御装置への接続の各々に対して同じプロセスを続ける。この時点で、ネットワークトポロジーは完全に作成され、通常の状態下で通信を行うことができる。
【００２２】
図３は、本発明に係る装置の発見及び列挙後のネットワークトポロジーの一例を示している。ネットワーク３００は、ホスト制御装置３１０を含み、このホスト制御装置３１０は、そのポート数に基づいて、最初の４個のネットワークアドレス、番号０〜３を割り当てられる。ホスト３１０はポート３２２Ｃによってスイッチ３２０に接続されている。ホスト３１０への他の接続も可能であるが図３には示していない。スイッチ３２０は４つのポート、即ち、設定ポート３２２Ａ、スイッチ３３０に接続されたポート３２２Ｂ、ホスト３１０に接続されたポート３２２Ｃ、及びスイッチ３６０に接続されたポート３２２Ｄを含む。スイッチ３２０は、ホスト３１０が出会う最初の装置であり、このため、ルーティングテーブル３２４に示されているように、次のネットワークアドレス、番号４を割り当てられる。スイッチ３２０が列挙された後、スイッチ３３０が発見され、ルーティングテーブル３３４に示されているように、次に利用可能なネットワークアドレスである番号５を受信し、列挙される。スイッチ３３０は、設定ポート３３２Ａ、装置３４０に接続されたポート３３２Ｂ、装置３５０に接続されたポート３３２Ｃ、及びスイッチ３２０に接続された３３２Ｄを含む。スイッチ３３０が列挙された後、スイッチ３３０に接続された装置が列挙される。即ち、装置３４０はネットワークアドレス番号６が与えられ、装置３５０はネットワークアドレス番号７〜９を受信する。次に、スイッチ３６０が発見される。このスイッチ３６０は、ルーティングテーブル３６４に示されているように、次に利用可能なネットワークアドレス番号１０を受信する。スイッチ３６０は、設定ポート３６２A、スイッチ３２０に接続されたポート３６２B、装置３７０に接続されたポート３６２C、及び、装置３８０に接続されたポート３６２Dを有する。スイッチ３６０が列挙された後、スイッチ３６０に接続された装置が列挙される。即ち、装置３７０はネットワークアドレス１１を受信し、装置３８０はネットワークアドレス１２を受信する。
【００２３】
本発明は任意の適当な環境において実施することができるが、特定のアドレス方式及び通信プロトコルの観点から様々な態様を説明するのが教育的である。したがって、環境に依存する変化が、なお本発明の精神と範囲に含まれることを当業者は理解するだろうが、以下の説明は、アドレス方式及び通信プロトコルにより規定されるルールを決めて使用する。
【００２４】
典型的なチップ間の通信プロトコルにおいては、ネットワークアドレス（説明の便宜上、“DeviceID”という。）を用いて装置を識別することができる。そして、装置通信はポートを用いて行われる。ポート“Port”からデータパケットを送信する装置（そのDeviceIDにより識別される）は、宛て先装置アドレス“DestDeviceID”、および宛て先ポート“DestPort”を、以下のようにして計算する。
【数１】
0005431338.tif 000002
【数２】
0005431338.tif 000003
【００２５】
ここで、％はモジュロ演算子である。データパケットを受信しDeviceIDを知る装置は、以下のようにしてPort情報を抽出することができる。
【数３】
0005431338.tif 000004
【００２６】
以下の条件が満たされるならば、そのDestDeviceIDは、ある装置に対して有効である。
【数４】
0005431338.tif 000005
【００２７】
この基本的なアドレス方式を用いて、コネクション型（ＣＯ）通信及びコネクションレス型（ＣＬ）通信と呼ばれる２つの通信モードを定義することができる。ＣＯ通信は、任意のデータが転送可能になる前に、２つの装置間に接続が存在する必要がある。ＣＬ通信にはそのような要求はない。なぜなら、ＣＯ通信の場合のように接続のおかげで存在するいくつかの情報とは対照的に、通信に必要な全ての情報は、通信されるデータパケット内に存在するからである。
【００２８】
ＣＯ通信において、接続への装置アクセスポイントは、“CPort”
と呼ばれる。CPortの状態は、相手方装置のDeviceID及びCPortと、接続が位置付け（map）されるトラフィッククラスと、任意選択の終端間のフロー制御状態とを含む。この全ての状態情報はCPortに含まれるという事実のため、データを供給する装置だけでデータ送信を行うことができる。表１は、ＣＯ通信用のデータフレームフォーマットを示している。
【表１】
0005431338.tif 000006
【００２９】
ＣＯデータフレームフォーマットの最初のシンボルと最後の２つのシンボルは、それぞれヘッダーとテーラーを示している。ヘッダーは、エスケープバイト（ESC_DL）と、（データフレームヘッダーの場合、SOF、即ち“フレームの始まり（Start Of Frame）”である）シンボル制御識別フィールドと、トラフィッククラス“TCx”と、３つの予約ビットとを含む。テーラーは、EOF、即ち“フィールドの終わり（End Of Field）”と、制御シンボルと、エラー検出用のＣＲＣ符号を含む。ＥＯＦ符号は、エスケープバイト（ESC_DL）と、（データフレームテーラーの場合、ＥＯＦである）符号制御識別フィールドと、フレームシーケンス番号とを含む。
【００３０】
フレームはＬ３データユニット及びＬ４データユニットを含み、それぞれは、１バイトのヘッダーを含み、テーラーを含まない。Ｌ３ヘッダーは、ショートＬ３ヘッダーを示す１に設定されたＬ３データユニットのビットと、相手方装置のDeviceIDとを含む。Ｌ４ヘッダーは、ショートＬ４ヘッダーを示す１に設定されたＬ４データユニットのビットと、宛て先CPortと、終端間のフロー制御クレジットを相手方のCPortに送信するのに用いられるＦＣＴビットと、メッセージの終端を示すためにアプリケーションによって使用されるＥＯＭビットとを含む。ＣＯ通信のように、CPortを通じて（即ち、接続上で）通信する際、アプリケーションは、データを配達し、メッセージの境界を示すことしか必要としない。データを転送するために必要な残りの情報は、CPortの状態を用いて与えられる。
【００３１】
ＣＬ通信は主として次の点でＣＯ通信と異なる。即ち、ＣＬ通信は、ＣＯ通信において接続状態の一部として存在するオーバーヘッド（例えば、発信元のポート、発信元の装置ID、プロトコルIDなど）をデータパケットに付加している。ＣＬ通信は、終端間のフロー制御も欠いている。このことは、宛て先装置においてデータがオーバーフローにより廃棄され得ることを意味している。ＣＬ通信の利点は、最初に接続を確立する必要なく、非常に速くデータを送る能力を有することである。コネクションレス・サービスへの装置アクセスポイントは、“ＲＰｏｒｔ”と呼ばれる。表２は、ＣＬ通信用のデータフレームフォーマットを示している。
【表２】
0005431338.tif 000007
【００３２】
ＣＬデータフレームのヘッダー（第１シンボル）とテーラー（最後の２つのシンボル）は、ＣＯデータフレームのそれと同一である。ＣＬ通信のＬ３ヘッダーは、パケットがどの装置から生じたのかを示すために、発信元DeviceIDフィールド（“SrcDeviceID”）も含むように拡張されている。Ｌ３ヘッダーは、Ｌ３シンボル毎に１つの“Ext”ビットも含む。もしこのビットが１に設定されると、他のＬ３シンボルが存在することを示し、さもなければＬ３ヘッダーの終端であることを示す（表２はＬ３拡張を示していない。）。ＣＬ通信ではＬ４ヘッダーは次のものを含むように拡張されている。即ち、セグメントがCPortを扱うのか（CPortビットは１に設定される。）又はRPortを扱うのか（CPortビットは０に設定される。）を示すためのCPortビットと、発信元ポート（“SrcPort”）、第１世代を示す０に設定されたVerビット（将来新しいＬ４データユニットを定義する選択肢を留保している）と、Ｌ３ヘッダーの場合と同様に機能するＬ４シンボル毎の１つのExtビット（表２は“Protocol ID”のための１つのＬ４拡張を示している。）と、アプリケーションにより使用される通信プロトコルを示すProtocol IDフィールドと、を含むように拡張されている。
【００３３】
ＣＬ通信のために、アプリケーションは、定義されたフレームフォーマットに適合するデータメッセージを送信する。アプリケーションは、宛て先のDeviceID及びRPortと、任意選択でProtocol IDとを特定する。メッセージは、ネットワークを通じて送信される前に、分割されることなくパケット化される。受信側において、アプリケーションはメッセージ自体に加えて、発信元DeviceIDと発信元RPortが届けられる。
【００３４】
本発明において用いられる設定プロトコルは、属性値を設定および読み出すためのＳｅｔ及びＧｅｔとここでは呼ぶ、基本的な書き込み及び読み出しコマンドを含む。これらのコマンドは、いわゆるイニシエータにより発行され、いわゆるターゲットにより実行される。Ｓｅｔ及びＧｅｔコマンドは、コマンドとそのパラメータを運ぶ要求メッセージ、及びコマンドの到着と実行を知らせる応答メッセージに変わる。あり得るメッセージは次のものを含む。即ち、設定メッセージ種別（例えば、Ｓｅｔコマンド、Ｇｅｔコマンド、Ｓｅｔ応答、Ｇｅｔ応答）を示す“Type”フィールドと、Ｓｅｔ又はＧｅｔコマンドの目的である属性値のバイト長を示す任意選択の“Length”フィールドと、Ｓｅｔ又はＧｅｔコマンドの目的である識別された属性を示す“Attribute”フィールドとを含む。Ｓｅｔメッセージの場合、応答はその値自身も含む。この応答は数シンボルにわたって発生するかもしれない。Ｇｅｔメッセージは、コマンドフィールドに異なる値を有し、バリューフィールドを有しない。先の場合と同様に、応答メッセージはタイプフィールドによって識別され、例えば、“SET_SUCCESS”、“GET_SUCCESS”及び“FAILURE”を含み得る。SET_SUCCESSの場合、さらなるフィールドは不要である。GET_SUCCESSに対しては、Ｇｅｔ要求で特定された値がバリューフィールドに戻される。ＦＡＩＬＵＲＥ応答に対しては、“FailureReason”フィールドはコマンドが失敗した理由を示すことができる（例えば、間違った若しくは無効なDeviceID、間違った若しくは無効なRPort、存在しない属性、他の装置により一時的にロックされている属性へのアクセス、属性範囲外の値など）。
【００３５】
ブート又はリセット後、ネットワークのトポロジーは未知であり、ネットワークアドレスは全く割り当てられていない。トポロジーを発見すること、および全てのネットワークノード（ルータ及びエンドポイント装置）にアドレスを割り当てることは、設定プロトコルを用いてホストにより実行することができる。ＣＬに基づく発見および列挙と、ＣＯに基づく発見及び列挙とは、多少の差異はあるが、同様のステップを用いて実行することができる。両方の通信方法の下で様々な手順のステップを描写することが教育的である。
【００３６】
ＣＬ通信に基づいた発見と列挙の最上位の眺め（top level view）を、表３に示す。３つの定数が定義されている。即ち、ネットワーク設定に用いられるターゲットのRPortを表すCFG_RPORT（０行目）と、設定に用いられるトラフィッククラスを表すCFG_TC（１行目）と、許可されたDeviceIDの最大値を表すDEVICEID_MAX（2行目）とである。さらに、ホストが設定コマンドを発行するRPortが設定される。変数nextDeviceIDは、割り当てすることのできる次のDeviceIDを示すために用いられる。４行目に示されるように、手順がまさにスタートするときに、nextDeviceIDは０に初期化される。
【表３】
0005431338.tif 000008
【００３７】
手順はホスト制御装置を列挙することにより始まる。nextDeviceIDの初期値は、ホストにN_DeviceIDを割り当てるために用いられ（５行目）、かつ、将来の参照用にhostDeviceIDに格納される（６行目）。ホストはそのローカルスタック用の属性を関数LocalSET()を用いて設定する。この関数は、典型的には、特定のホスト装置に依存する独自の手段を用いて実装される。７行目及び８行目は、ホストがそれ自身のスタックからCPortとRPortの数を読み出すことを示している。これは、先の場合と同様に、典型的には独自の手段によるLocalGET()を用いて行われる。CPortとRPortの数は、ホスト用に予約されるDeviceID値の数を計算するために用いられる（９行目）。
【００３８】
ネットワークにおける他の装置の実際の発見及び列挙が始まる前に、RPortは、設定トラフィッククラスCFG_TCを用いるために設定され（１０行目）、そして、通信のために使用可能にされる（１１行目）。次いで、ネットワークの装置発見と列挙が関数Enumerate()により行われる。この関数は１２行目で呼び出される。関数Enumerate()は、ホストが列挙された後における、次に利用可能なDeviceID（nextDeviceID）を引数にとり、そして、ネットワーク全体が列挙された後における、次に利用可能なDeviceIDを返す。戻り値は、ホスト以外の装置間のルーティングテーブルを更新するための別のネットワークスイープにおいて用いることができる。
【００３９】
表４は、ＣＬに基づく発見及び列挙における列挙関数（“CL Enumerate()”）の詳細を示している。この関数CL Enumerate()は、ホストにより実行され、属性を読み出し及び設定するために、GET()及びSET()設定要求を用いる。ＣＬ通信が用いられるとき、関数GET()及びSET()は、初めの２つの引数として、ターゲット装置のDeviceIDとRPortをとる。GET()の場合、第３の引数は属性識別子である。SET()の場合、第３の引数は、属性識別子及びその設定値を含むペアである。設定コマンドSET()及びGET（）は、ネットワークの使用可能なデータユニットをもたらす。このデータユニットは、指示された宛て先装置に運ばれる。
【表４】
0005431338.tif 000009
【００４０】
列挙関数は、スイッチポートの数を要求することにより始まる（１５行目）。もしターゲット装置がスイッチ（即ち、ルータ）であるならば、その要求はスイッチポートの数を返すだろう。さもなければ、その装置はエンドポイントであると考えられ、要求はポート数として１を返すだろう。GET()コマンド及びその応答は、ホストからターゲット装置まで及びターゲット装置からホストまでのネットワーク設定されたデータユニットをもたらすが、ターゲット装置はまだ列挙され設定されていないので、いくつかの問題が発生する可能性がある。
【００４１】
そのような問題の一つは、リセット後、ターゲット装置がそれ自身のN_DeviceIDと一致しないパケットを受け入れることを許容することに伴って生じる。これを達成する１つの方法は、属性N_DeviceIDが設定されていないことを示すフラグを用いることである。この場合、任意のDestDeviceIDを持つデータパケットが受け入れられる。DeviceIDの設定後、フラグはリセットされ、通常の動作状態を復元し、それによって、有効なDestDeviceID値を持つパケットだけが受け入れられる。代わりの方法は、リセット後、フラグにより示された特別な状態で始めることである。その状態では、任意のDestDeviceIDを運ぶパケットが受け入れられる。DeviceIDが設定された後、ホストがフラグを消すと、有効なDestDeviceID値を持つパケットだけが受け入れられる。
【００４２】
別の問題は、設定要求メッセージを受け入れ、かつ設定応答メッセージを発行することができる準備が整った、設定RPortであるCFG_RPortを有するターゲット装置を伴って生じる。これは、設定RPortを有効なリセットから抜け出させ、そしてトラフィッククラス１を使用することによって解決することができる。加えて、ターゲットスイッチ装置は、設定要求パケットを設定スイッチポートに送ることが可能でなければならない。これは、スイッチのルーティングテーブルを、全てのパケットがスイッチの設定ポートに送られる（即ち、任意のDestDeviceID値を含むパケットがスイッチの設定ポートに送られるだろう。）リセット状態から抜け出させることによって達成される。
【００４３】
別の問題は、設定応答パケットをホスト装置に返送するターゲット装置の能力によって生じる。もしホストへのスイッチポート及びホストのDeviceIDが既知であるならば、ホストのDeviceIDを運ぶパケットをホストへのスイッチポートに送るようにルーティングテーブルをリセット時に設定することができるだろう。しかしながら、（例えば、機械的な制約により）ホストを任意のスイッチポートに帰属させるために柔軟性が必要とされるならば、リセット時にあらかじめスイッチを設定することは可能ではないだろう。代わりの方法は、スイッチに、それが最初のパケットを受け取る入口ポートを記憶させ、設定応答パケットを返送するためにこのポートを使用させることである。
【００４４】
ＧＥＴのような要求が受信されると、ターゲットもパケットの発信元DeviceID及びRPortについて通知される。これらは応答を返すときにターゲット装置により使用される。
【００４５】
戻って表４を参照すると、現在のターゲット装置が（２以上のポートを有する）スイッチなのか、（単一のポートを有する）エンドポイントなのかを判定するために、読み出されたポート数（１５行目）を使用することができる。もしターゲット装置がスイッチであるならば（１６行目）、ルーティングテーブルが設定されるだろう。その後、通常動作を支持して初期の特別なルーティングは止められる。保存されたホストへのポート（即ち、設定パケットが受信される入口ポート）を１７行目でターゲット装置から最初に読み出し、続いて、ホストへのポート用のルーティングテーブル・エントリを、ホストのDeviceID範囲に設定し、そして、ホストへのポートをデフォルトとして設定する（１８−２０行目）ことによって、ホストへのスイッチポート用のルーティングテーブルが設定される。これはルーティングテーブル設定の一例に過ぎず、本願の説明からわかるように、任意の適当なルーティングテーブル構成および設定も可能である。
【００４６】
スイッチの設定ポートへのルーティングテーブル・エントリは同様である。まず、設定すべきスイッチポートが読み出され（２１行目）、その後、ルーティングテーブルが設定される（２２−２３行目）。ホストへのスイッチポートに対してルーティングテーブル・エントリが設定された後、初期の特別なルーティングを止めることができる（２４行目）。
【００４７】
２６行目で、ターゲット装置は、次に利用可能なDeviceIDを割り当てられる。これにより、宛て先装置に対して有効なDestDeviceIDを運ばない全てのパケットを廃棄するという一時的に無効にされた特徴は、自動的に有効になる。割り当てられたDeviceIDは、発見手順での将来の参照用に保存される（２７行目）。さらに、３０行目で現在の装置のDeviceIDの範囲と、それゆえ、次に利用可能なDeviceIDを計算する際に役立つために、２８行目及び２９行目でそれぞれCPort及びRPortの総数が読み出される。スイッチの場合（３１行目）、まず、スイッチ設定ポートへのルーティングテーブルが、３２より多くのC-及びR-portがある場合のために更新される（３３行目）。典型的なスイッチは３２より多くのポートを持たないだろうから、このステップは任意選択である。
【００４８】
各スイッチポートに対して（３４行目）、さらに深く装置を列挙するために関数Enumerate()は再帰的に（例えば深さ優先順に（depth-first order））呼び出される。既に設定されたスイッチポート、即ちホストへのポート、及び設定は、スキップされる（３５−３６行目）。列挙されたポートに全てのDestDeviceIDが一時的に送られるように、他のポートの各々に対して、次に列挙される予定の装置のためのルーティングテーブルが設定される（３７−３８行目）。これは、発見された各装置に対して、ホストから新たに列挙された装置までのパスに沿うルーティングテーブルの望ましくない更新を回避するのに役立つ。３９行目で、列挙関数自身が呼び出され、この関数は、現在のポートにおける全ての装置が列挙された後、次に利用可能なDeviceIDを返す。この値は、このスイッチポートのルーティングテーブル・エントリを正しい範囲に更新するのに使用される（４０行目）。
【００４９】
もし範囲に基づくルーティングテーブルの実装が用いられるのならば、ルーティングテーブルの設定は、上記の１２ステップの後に完了する。しかしながら、他のルーティングテーブルの実装（例えば、デフォルトのポートを持たないルーティングテーブル）に対しては、列挙の間にホストによって集められたトポロジー情報を用いてホスト以外の全ての装置間のルーティングテーブルを整理することによりルーティングテーブル設定を完了させるために、追加のステップが必要となるかもしれない。そのような追加のステップは、ネットワーク内のどの装置も示さないDestDeviceIDを持つパケットをルータが廃棄すべき場合において、デフォルトのポートを用いるルーティングテーブルに対してさえ必要とされるかもしれない。そのような場合、１２ステップでEnumerate()により返された値は、全てのルータにおいてデフォルトのポートに対して有効なDeviceID範囲を設定するのに用いられる。
【００５０】
ＣＯに基づく発見および列挙は、ＣＬに基づく発見および列挙と同様である。相違は、ホストがターゲット装置への初期のリンクを確立する方法にある。ＣＯに基づく発見および列挙のトップビュー（top view）は表５に示される。ＣＬの場合のように、３つの定数、即ち、ターゲット設定ポート（この場合“CPort”）、トラフィッククラス、および装置の最大数を定義することができる（４４−４６行目）。加えて、ホスト制御装置の設定ポートを定義することができる（４７行目）。次に、ホストのDeviceIDがＣＬと同じ方法で計算される（４９−５４行目）。ローカルポートを設定するときに最初の相違が発生する。ＣＯ通信の場合、ポートは、（設定又は専用のプロトコルを用いて他によって設定可能な）CPortであり、そして、CPortに他のなんらかの設定が行われる前にCPortを予約するため、フラグが設定される（５５行目）。このあと、ともに既知の値である、相手方のCPort、及び設定に用いられるトラフィッククラスを設定することにより、接続のローカルエンドを設定することができる（５６−５７行目）。ホストが設定されると、関数Enumerate()は再帰的に呼び出される（５９行目）。
【表５】
0005431338.tif 000010
【００５１】
表６は、ＣＯに基づく通信用の関数Enumarate()の詳細を示している。まず、ホストは、その相手方のDeviceIDを新しいターゲット装置に設定することにより、新たに列挙された装置を指し示すための接続のホスト端を設定する（６２−６４行目）。次に、ホストは、CPortを予約し、相手方のDeviceIDとCPortをホスト自身に設定し、トラフィッククラスを設定し、そして通信のためにCPortを使用可能にすることにより、接続の他端（即ち、ターゲット側）を設定する（６６−７０行目）。損失のない接続を整えるために(設定において重要である)、接続の両方向で終端間のフロー制御が有効にされる。これは、ターゲット及びホスト用のRx(?)バッファのサイズを取得し（それぞれ７２及び７３行目）、２つの方向に対するトークンのサイズを取得し（それぞれ７４及び７５行目）、両端におけるトークンの数を計算し（それぞれ７６及び７７行目）、そして、トークンの値を設定し、終端間のフロー制御を有効にする（それぞれ７８−７９行目及び８０−８１行目）ことにより行われる。
【００５２】
ＣＯの関数Enumerate()の残りの部分は、ホストからターゲットへの通信がホスト設定RPortではなくホスト設定CPortによって行われることを除いて、ほとんどＣＬの場合と同一である。結果として、設定コマンドSET()とGET()はもはやパラメータとして、宛て先のDeviceID及びRPortを必要としない。他の唯一の相違は、１０８行目でEnumerate()を呼び出した後、現在のターゲット装置への接続が復元されなければならないということである。これは、接続がその全てのデータを運び、全ての終端間のクレジット・トークンを配送するまで待機し（１１０行目）、そして相手方のDeviceIDを現在のターゲット装置に設定し戻す（１１１−１１３行目）ことによって行われる。接続が復元された後、ルーティングテーブルの設定は１１４行目で安全に行うことができる。
【表６】
0005431338.tif 000011
【００５３】
一つの実施形態では、リセット後、列挙された装置は特別な状態（“RESET”）にたどり着く。この状態において、列挙された装置は、ネットワークアドレスの正しさを確認することなく、データパケットを受信することができる。データパケットが受信されると、初めにそのデータパケットを受信した入口ポートは、ホストが後で読み出すことができるように、保存される。その後、データパケットは通常通りに処理される。関数は応答パケットを返し、その後、この応答パケットは、特別なルーティングを用いて、要求の入口ポートに返送される。通常動作を支持して特別なルーティング関数が無効にされるまで、スイッチはこれらの処理を行う。いったん特別なルーティングが無効にされると、全てのデータパケットはそのネットワークアドレスをチェックされる。そして、もしそれが装置自身のネットワークアドレスと一致するならば、パケットに含まれる設定メッセージは処理される。さもなければ、データパケットは廃棄され、エラーが通知される。エラー時、応答パケットがホストに返される。通常の動作状態において、応答パケットは、もはや特別なルーティングではなく通常のルーティングテーブルを用いて送られる。
【００５４】
設定メッセージの処理は以下のようにして進めることができる。まず、設定メッセージのみが処理されることを保証するために、プロトコルのチェックがなされる。次に、一般的な応答メッセージが準備される。その中に、ホスト制御装置の値と、入来するメッセージの発信元装置のネットワークアドレス及びポートとを用いて、宛て先のネットワークアドレスとポートが記入される。応答メッセージの発信元ネットワークアドレス及びポートが現在の装置のネットワークアドレス及びポートとなるように設定され、プロトコルが設定され、そして実行ステータスは仮に“SUCCESS”に設定される。
【００５５】
設定コマンドｓｅｔの場合、対応する属性が設定され、応答パケットが返される。完全な実施においては、属性アドレスもそれが有効か否かを判定するためにチェックされるべきである。そして、属性の値はそれが属性の有効な範囲内であるのか否かを判定するためにチェックされるべきである。これらのチェックの一方または両方が失敗すると、何らのアクションも取られるべきではなく、エラーが返されるべきである。設定コマンドｇｅｔの場合、属性値が応答の中で返される。この場合もやはり、完全な実施においては、属性が有効でないならばエラーが返されるべきである。
【００５６】
ＣＬに基づく装置発見及び列挙のための特別なスイッチルーティングのもう一つの実施形態は、初めに入来するデータパケットの入口ポートを保存することだけでなく、ホスト制御装置ネットワークアドレスに向かう全てのパケットが正しく送られるように、スイッチのルーティングテーブルを更新することも含む。結果として、初期に特別なルーティングを用いる必要はないだろう。同様の実施形態は、ホスト制御装置ネットワークアドレスが入来するデータパケットからではなく、CPort設定の属性“T_PeerDeviceID”（表６参照）から得る必要があることを除いて、ＣＯに基づく装置発見及び列挙に対して可能である。その後、ターゲットが属性T_PeerDeviceIDを設定するパケットを受信するまで、応答は待ち行列に入れられるべきである。好ましくは、T_PeerDeviceIDは最初の設定コマンドの一つとともに設定されるべきである。
【符号の説明】
【００５７】
１００，３００  ネットワーク
１１０，２１０，３１０  ホスト制御装置
１２０，１２２，１２４，１２６，１３０，１４０  エンドポイント装置
１３２，１３４，１３６  装置
１４２，１４４  装置
３４０，３５０，３７０，３８０  装置
２２０，３２０，３３０，３６０  スイッチ
２２２Ａ，２２２Ｂ，２２２Ｃ，２２２Ｄ  ポート
３２２Ａ，３２２Ｂ，３２２Ｃ，３２２Ｄ  ポート
３３２Ａ，３３２Ｂ，３３２Ｃ，３３２Ｄ  ポート
３６２Ａ，３６２Ｂ，３６２Ｃ，３６２Ｄ  ポート
３２４，３３４，３６４  ルーティングテーブル
【図１】
0005431338.tif 000012
【図２】
0005431338.tif 000013
【図３】
0005431338.tif 000014