JP4611319B2 - Network architecture - Google Patents

Network architecture Download PDF

Info

Publication number
JP4611319B2
JP4611319B2 JP2006553397A JP2006553397A JP4611319B2 JP 4611319 B2 JP4611319 B2 JP 4611319B2 JP 2006553397 A JP2006553397 A JP 2006553397A JP 2006553397 A JP2006553397 A JP 2006553397A JP 4611319 B2 JP4611319 B2 JP 4611319B2
Authority
JP
Japan
Prior art keywords
node
nodes
network
queue
hspp
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006553397A
Other languages
Japanese (ja)
Other versions
JP2007523546A5 (en
JP2007523546A (en
Inventor
デービーズ,クリストファー,マイケル
Original Assignee
デービーズ,クリストファー,マイケル
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from CA002457909A external-priority patent/CA2457909A1/en
Priority claimed from CA002464274A external-priority patent/CA2464274A1/en
Priority claimed from CA002467063A external-priority patent/CA2467063A1/en
Priority claimed from CA 2471929 external-priority patent/CA2471929A1/en
Priority claimed from CA002476928A external-priority patent/CA2476928A1/en
Priority claimed from CA002479485A external-priority patent/CA2479485A1/en
Application filed by デービーズ,クリストファー,マイケル filed Critical デービーズ,クリストファー,マイケル
Publication of JP2007523546A publication Critical patent/JP2007523546A/en
Publication of JP2007523546A5 publication Critical patent/JP2007523546A5/ja
Publication of JP4611319B2 publication Critical patent/JP4611319B2/en
Application granted granted Critical
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/04Interdomain routing, e.g. hierarchical routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/03Topology update or discovery by updating link state protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/122Shortest path evaluation by minimising distances, e.g. by selecting a route with minimum of number of hops
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/26Route discovery packet

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本出願は、2004年2月16日に出願されたカナダ国特許出願第2457909号、2004年2月17日に出願された米国仮特許出願第60/544341号、2004年4月20日に出願されたカナダ国特許出願第2464274号、2004年5月17日に出願されたカナダ国特許出願第2467063号、2004年6月22日に出願されたカナダ国特許出願第2471929号、2004年8月16日に出願されたカナダ国特許出願第2476928号、および2004年9月20日に出願されたカナダ国特許出願第2479485号に基づく優先権を主張し、上記のすべての文献の内容は、参照により本明細書に組み込まれる。   This application is Canadian Patent Application No. 2457909 filed on February 16, 2004, US Provisional Patent Application No. 60/544341 filed on February 17, 2004, filed April 20, 2004. Canadian Patent Application No. 2464274, Canadian Patent Application No. 2467063 filed on May 17, 2004, Canadian Patent Application No. 2471929 filed June 22, 2004, August 2004 Claimed priority based on Canadian Patent Application No. 2476928 filed on 16th and Canadian Patent Application No. 2479485 filed on 20th September 2004, the contents of all the above references are referenced Is incorporated herein by reference.

本発明は一般に、互いに通信を行う電子装置、電気通信装置、およびコンピューティング装置に関し、より詳細には、それらのためのネットワークアーキテクチャに関する。   The present invention relates generally to electronic devices, telecommunications devices, and computing devices that communicate with each other, and more particularly to a network architecture for them.

ネットワーク接続された装置は、現在、我々の社会の基礎構造の極めて重要な側面である。公衆交換電話網(「PSTN」)は、おそらく、人々の対話の仕方を変化させた、電気通信装置からなるユビキタスネットワークの最初の例であろう。現在、移動電話ネットワーク、インターネット、ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、ボイスオーバインターネットプロトコル(「VOIP」)ネットワークが広く配備され、成長を続けている。   Networked devices are now a vital aspect of our social infrastructure. The public switched telephone network ("PSTN") is perhaps the first example of a ubiquitous network of telecommunications devices that has changed the way people interact. Currently, mobile telephone networks, the Internet, local area networks (“LAN”), wide area networks (“WAN”), and voice over Internet protocol (“VOIP”) networks are widely deployed and continue to grow.

言い古されたことだが、これらの各装置は、ネットワーキング機能を果たすために互いに到達できる必要がある。PSTNでは、国コード、市外局番、市内局番などを含む電話番号体系が利用される。少なくとも北米では、電話機の爆発的増加が、標準的な10桁の数字体系を拡張した。インターネットでは、インターネットプロトコルバージョン4(「IPV4」)が、インターネット上の地点を識別するためのインターネットプロトコル(「IP」)アドレスの体系を広め、その結果、ネットワーク接続された各装置は、インターネット上でその装置を到達可能にするアドレスを有する。少なくとも部分的には、IPV4アドレスフィールドの長さに限界があるため、IPアドレスは、僅かな地理的関係をそれらの物理的ロケーションに対してもち得るに過ぎない。その結果、インターネット全体にわたって、ルータおよびルーティングテーブルがはなはだしく膨れ上がり、トラフィックルーティングの複雑さを増やし、ネットワーク待ち時間を長くしている。IPV6は、可能性を秘めた問題緩和アドレスを提供するが、IPV6へのアップグレードは、なかなか進展しないことが予想される。   Unfortunately, each of these devices needs to be able to reach each other to perform networking functions. The PSTN uses a telephone number system including a country code, an area code, a city code, and the like. At least in North America, the explosive growth of phones has extended the standard 10-digit number system. In the Internet, Internet Protocol Version 4 (“IPV4”) has spread the Internet Protocol (“IP”) address scheme for identifying points on the Internet, so that each device connected to the network is on the Internet. Has an address that makes the device reachable. Because at least in part, the length of the IPV4 address field is limited, IP addresses can only have a slight geographical relationship to their physical location. As a result, routers and routing tables have grown significantly throughout the Internet, increasing the complexity of traffic routing and increasing network latency. IPV6 provides a potential problem mitigation address, but the upgrade to IPV6 is not expected to make much progress.

非常に一般的な言い方をすると、多くの従来技術のネットワークアーキテクチャは、ルーティング装置に依存して、ネットワーク全域の装置のアドレスおよびロケーションを保持している。そのようなルーティング装置は、本質的に、適切な経路に沿ってトラフィックをルーティングする交通整理係である。そのようなアーキテクチャは、ネットワークが大きくなるにつれて、動作が鈍くなり、扱いが不便になる。   In very general terms, many prior art network architectures rely on routing devices to maintain device addresses and locations across the network. Such a routing device is essentially a traffic director that routes traffic along an appropriate path. Such an architecture becomes sluggish and inconvenient as the network grows.

様々な「ルータレス」ネットワークアーキテクチャが提案された。これらのアーキテクチャのいくつかは、ピアツーピアネットワークと呼ばれ、その他のものは、アドホックネットワークと呼ばれる。いずれにしても、これら従来技術のアーキテクチャは、やはり拡張性および/またはその他の制限などの難点をもつ傾向にある。ネットワークアーキテクチャを改良するための1つの試みが、アドホックオンデマンド距離ベクトル(「AODV:Ad Hoc On Demand Distance Vector」)である。AODVは、新規コネクションの確立または切断コネクションの修復を行うのにブロードキャストフラッディングを使用するリアクティブ型プロトコルである。AODVは、http://www.ietf.org/rfc/rfc3561.txtから得られるインターネットエンジニアリングタスクフォース(「IETF」)文書で詳細に説明されている。AODVは、ノードをアドホックネットワークに容易に組織できるという利点を有するが、AODVが有する問題の1つは、最大ネットワークサイズが著しく制限されることである。   Various “routerless” network architectures have been proposed. Some of these architectures are called peer-to-peer networks and others are called ad hoc networks. In any case, these prior art architectures still tend to have drawbacks such as scalability and / or other limitations. One attempt to improve the network architecture is the ad hoc on demand distance vector (“AODV: Ad Hoc On Demand Distance Vector”). AODV is a reactive protocol that uses broadcast flooding to establish new connections or repair broken connections. AODV is available at http: // www. ietf. org / rfc / rfc3561. It is described in detail in the Internet Engineering Task Force (“IETF”) document obtained from txt. Although AODV has the advantage that nodes can be easily organized into an ad hoc network, one problem with AODV is that the maximum network size is severely limited.

ネットワークアーキテクチャを改良するための別の試みは、「宛先シーケンス距離ベクトル」(「DSDV:Destination Sequenced Distance Vector」)である。DSDVは、ネットワーク内のすべてのノードへの経路およびすべてのノードからの経路を生成および保持するのに更新情報の連続的フラッディングを使用するプロアクティブ型プロトコルである。DSDVについての詳細な説明は、http://citeseer.ist.psu.edu/cache/papers/cs/2258/http:zSzzSzwww.srvloc.orgzSzcharliepzSztxtzSzsigcomm94zSzpaper.pdf/perkins94highly.pdf、またはhttp://citeseer.ist.psu.edu/perkins94highly.htmlで見出される。DSDVは、ループのないルーティングを提供するという利点を有するが、小規模ネットワークでしか機能しないという難点を有する。大規模ネットワークでは、制御トラフィックが、利用可能な帯域をたやすく超過してしまう。   Another attempt to improve the network architecture is the “Destination Sequence Distance Vector” (“DSDV: Destination Sequenced Distance Vector”). DSDV is a proactive protocol that uses continuous flooding of update information to generate and maintain routes to and from all nodes in the network. A detailed description of DSDV can be found at http: // sitesee. ist. psu. edu / cache / papers / cs / 2258 / http: zSzzSzwww. srvloc. orgzSzcharliepzSzttzzSzsigcom94zSzpaper. pdf / perkins94highly. pdf, or http: // siteseeer. ist. psu. edu / perkins 94 highly. Found in html. DSDV has the advantage of providing loop-free routing, but has the disadvantage that it only works in small networks. In large networks, control traffic easily exceeds the available bandwidth.

ネットワークアーキテクチャを改良するための別の試みは、「最適化リンク状態ルーティング」(「OLSR:Optimized Link State Routing」)である。OLSRは、ネットワークトポロジについての知識を構築しようと試みるプロアクティブ型プロトコルである。OLSRについての詳細な説明は、下記のIETF草案http://hipercom.inria.fr/olsr/draft−ietf−manet−olsr−11.txtに見出すことができる。OLSRは、より効率的なリンク状態プロトコルであるという利点を有するが、依然としてより大規模なネットワークをサポートすることができない。   Another attempt to improve the network architecture is “optimized link state routing” (“OLSR”). OLSR is a proactive protocol that attempts to build knowledge about the network topology. A detailed description of OLSR can be found in the following IETF draft http: // hipercom. inria. fr / olsr / draft-ietf-manet-olsr-11. can be found at txt. OLSR has the advantage of being a more efficient link state protocol, but still cannot support larger networks.

ネットワークアーキテクチャを改良するための別の試みは、「最短経路ファーストオープン」(「OSPF:Open Shortest Path First」)である。OSPFは、いくつかのインターネットコアルータによって使用されるプロアクティブ型リンク状態プロトコルである。OSPFについての詳細な説明は、下記のIETF草案http://www.ietf.org/rfc/rfc1247.txtに見出すことができる。OSPFは、コアインターネットルータが障害を迂回することを可能にするが、サポートできるネットワークのサイズに限界がある。   Another attempt to improve the network architecture is “shortest path first open” (“OSPF: Open Shortest Path First”). OSPF is a proactive link state protocol used by several Internet core routers. A detailed description of OSPF can be found at the following IETF draft http: // www. ietf. org / rfc / rfc1247. can be found at txt. OSPF allows the core Internet router to bypass failures, but there are limits to the size of the network that can be supported.

AODV、DSDV、OLSR、およびOSPFの間の相違にも関わらず、これらはすべて、例えば、数百ノードを超える拡張が困難であることなど、いくつかの同じ問題を共有している。この制限が生じるのは、ネットワークが大きくなるにつれて、必要な制御トラフィック量がはるかに急速に増加するためである。必要な制御トラフィック量は、速やかに、ネットワーク容量を超過してしまう。   Despite the differences between AODV, DSDV, OLSR, and OSPF, they all share some of the same issues, such as being difficult to scale beyond hundreds of nodes. This limitation occurs because the amount of control traffic required increases much more rapidly as the network grows. The required amount of control traffic will quickly exceed the network capacity.

一般に、従来技術のネットワークアーキテクチャは、良好な拡張性を提供せず、また低容量装置がより大規模なネットワークと十分に対話できるようにする能力を提供せず、移動環境では、従来技術のアーキテクチャは、シームレスな移動性を常に提供するとは限らない。   In general, prior art network architectures do not provide good scalability and do not provide the ability to allow low capacity devices to fully interact with larger networks, and in mobile environments, prior art architectures. Does not always provide seamless mobility.

本発明の目的は、上で確認された従来技術の難点のうちの少なくとも1つを除去または緩和する、ネットワーキングのための新規なシステムおよび方法を提供することである。   It is an object of the present invention to provide a novel system and method for networking that eliminates or mitigates at least one of the prior art difficulties identified above.

本発明の第1の態様は、複数のノードと、前記ノードのうちの隣接ノードを相互接続する複数のリンクとを含むネットワークを提供する。前記ノードの各々は、前記ノードの第1の区分内に存在する前記ノードの各々についての情報を保持するように動作可能である。前記情報は、前記第1の区分内にある別のノードを示す第1の識別情報と、第1の識別情報ごとに、前記第1の識別情報に対応する前記別のノードに到達するための望ましいステップである隣接ノードを表す第2の識別情報とを含む。前記ノードの各々は、前記第1の区分内に含まれない前記ノードの第2の区分内にある前記ノードを発見するための望ましいステップである隣接ノードを決定するように動作可能である。   A first aspect of the present invention provides a network including a plurality of nodes and a plurality of links interconnecting adjacent nodes of the nodes. Each of the nodes is operable to maintain information about each of the nodes present in the first partition of the node. The information includes first identification information indicating another node in the first section, and for reaching the other node corresponding to the first identification information for each first identification information. 2nd identification information showing the adjacent node which is a desirable step. Each of the nodes is operable to determine a neighboring node that is a desirable step for finding the node in a second partition of the node that is not included in the first partition.

第1の態様の特定の実施において、前記決定は、前記隣接ノードのうちのどれが第2の識別情報の各々に最も頻繁に出現するかに基づく。   In a particular implementation of the first aspect, the determination is based on which of the neighboring nodes appears most frequently in each of the second identification information.

第1の態様の特定の実施において、前記ノードの各々は、その隣接ノードと前記情報を交換するように動作可能である。   In a particular implementation of the first aspect, each of the nodes is operable to exchange the information with its neighboring nodes.

第1の態様の特定の実施において、各リンクは、前記ノードのうちの2つの間の任意の経路が1組の累積サービス特性を有するように1組のサービス特性を有し、その場合、前記望ましいステップが、前記経路のどれが望ましい1組の累積サービス特性を有するかに基づく。   In a particular implementation of the first aspect, each link has a set of service characteristics such that any path between two of the nodes has a set of cumulative service characteristics, where The desired step is based on which of the paths has a desirable set of cumulative service characteristics.

第1の態様の特定の実施において、前記サービス特性は、帯域幅、待ち時間、およびビット誤り率のうちの少なくとも1つを含む。   In a particular implementation of the first aspect, the service characteristics include at least one of bandwidth, latency, and bit error rate.

第1の態様の特定の実施において、前記ノードは、コンピュータ、電話、センサ、携帯情報端末のうちの少なくとも1つである。   In a particular implementation of the first aspect, the node is at least one of a computer, a phone, a sensor, and a personal digital assistant.

第1の態様の特定の実施において、前記リンクは、有線接続および無線接続のうちの少なくとも一方に基づく。   In a particular implementation of the first aspect, the link is based on at least one of a wired connection and a wireless connection.

第1の態様の特定の実施において、互いが前記第2の区分内にある前記ノードに到達するための望ましいステップであると決定した隣接ノードの間に、ネットワークコアが形成される。   In a particular implementation of the first aspect, a network core is formed between adjacent nodes that are determined to be desirable steps for reaching each other in the second partition.

第1の態様の特定の実施において、各ノードは、そのノードについての情報を保持するために、前記コアとそのノードの間にある他のノードに命令するように動作可能である。   In a particular implementation of the first aspect, each node is operable to instruct other nodes between the core and the node to maintain information about the node.

第1の態様の特定の実施において、各ノードは、前記第2の区分内にある前記ノードについての情報を要求するように動作可能であり、各ノードは、前記コアとそのノードの間にある前記他のノードに前記要求を行うように動作可能である。   In a particular implementation of the first aspect, each node is operable to request information about the nodes that are in the second partition, each node being between the core and the node It is operable to make the request to the other node.

従来技術にまさる本発明の1つの利点は、本明細書で教示されるネットワークアーキテクチャが、大規模な自己組織化ネットワークを可能にすることである。ある実施形態でこの特徴が可能になるのは、実際には、ネットワーク内の非常に僅かなノードしか、ネットワーク全体についての知識をもつ必要がないからである。ネットワーク内のすべてのノードは、集団でネットワーク全体についての知識をもち、他のノードを認識していないが、そのような他のノードを見つける必要があるノードには、関連する知識を有するネットワーク内の他のノードからそのような知識を求めることによって、それらの他のノードを見つける手段が提供される。上記およびその他の理由のため、本発明は、従来技術の自己組織化ネットワークアーキテクチャに比べ、かなり大規模な自己組織化ネットワークを可能にする、新規な自己組織化ネットワークアーキテクチャである。したがって、本発明の第2の態様は、複数のリンクによって相互接続された少なくとも2000のノードを含む自己組織化ネットワークを提供する。本発明の第3の態様は、複数のリンクによって相互接続された少なくとも5000のノードを含む自己組織化ネットワークを提供する。本発明の第4の態様は、複数のリンクによって相互接続された少なくとも10000のノードを含む自己組織化ネットワークを提供する。本発明の第5の態様は、複数のリンクによって相互接続された少なくとも100000のノードを含む自己組織化ネットワークを提供する。   One advantage of the present invention over the prior art is that the network architecture taught herein enables large scale self-organizing networks. In some embodiments, this feature is possible because, in practice, very few nodes in the network need have knowledge of the entire network. All nodes in the network have a collective knowledge of the entire network and are not aware of other nodes, but nodes that need to find such other nodes are in the network with relevant knowledge. By seeking such knowledge from other nodes, a means of finding those other nodes is provided. For these and other reasons, the present invention is a novel self-organizing network architecture that allows a much larger self-organizing network compared to prior art self-organizing network architectures. Accordingly, a second aspect of the present invention provides a self-organizing network that includes at least 2000 nodes interconnected by a plurality of links. A third aspect of the invention provides a self-organizing network that includes at least 5000 nodes interconnected by a plurality of links. A fourth aspect of the invention provides a self-organizing network that includes at least 10,000 nodes interconnected by a plurality of links. A fifth aspect of the invention provides a self-organizing network including at least 100,000 nodes interconnected by a plurality of links.

本発明が今から、添付の図面を参照しながら単なる例によって説明される。   The invention will now be described by way of example only with reference to the accompanying drawings.

ここで図1を参照すると、本発明の一実施形態によるネットワークが、全体として30で示されている。ネットワーク30は、複数のノードN1、N2、およびN3を含む。ノードN1、N2、およびN3は、一括してノードNと呼ばれ、また総称的にノードNと呼ばれる。この命名法は、本明細書で説明されるその他の要素に対しても使用される。   Referring now to FIG. 1, a network according to one embodiment of the present invention is indicated generally at 30. The network 30 includes a plurality of nodes N1, N2, and N3. Nodes N1, N2, and N3 are collectively referred to as node N and generically referred to as node N. This nomenclature is also used for the other elements described herein.

ノードN1は、第1の物理リンクL1を介してノードN2に接続される。ノードN2は、第2のリンクL2を介してノードN3に接続される。ノードN1はノードN2の隣接ノードであり、同様に、ノードN2はノードN1の隣接ノードであるが、これは、両ノードがリンクL1によって接続されているからである。さらに、ノードN3はノードN2の隣接ノードであり、同様に、ノードN2はノードN3の隣接ノードであるが、これは、両ノードがリンクL2によって接続されているからである。したがって、本明細書では、「隣接ノード」という用語(および文脈に応じたその変形)は、単一のリンクLによって別のノードNに接続されているノードNを指示するのに使用される。   The node N1 is connected to the node N2 via the first physical link L1. The node N2 is connected to the node N3 via the second link L2. Node N1 is an adjacent node of node N2, and similarly, node N2 is an adjacent node of node N1, because both nodes are connected by link L1. Further, the node N3 is an adjacent node of the node N2, and similarly, the node N2 is an adjacent node of the node N3 because both nodes are connected by the link L2. Accordingly, in this document, the term “neighboring node” (and variations thereof depending on the context) is used to indicate a node N that is connected to another node N by a single link L.

各ノードNは、それぞれのリンクLを介して別のノードNと通信を行うように動作可能な、任意のタイプのコンピューティング装置である。任意のタイプのコンピューティング装置には、パーソナルコンピュータ(「PC」)、ラップトップコンピュータ、携帯情報端末(「PDA」)、ボイスオーバインターネットプロトコル(「VOIP」)地上通信線電話、セルラ電話、スマートセンサなど、またはそれらの組合せが企図されている。各ノードNは、異なるタイプのコンピューティング装置であることができる。   Each node N is any type of computing device that is operable to communicate with another node N via a respective link L. Any type of computing device can be a personal computer (“PC”), laptop computer, personal digital assistant (“PDA”), voice over internet protocol (“VOIP”) landline telephone, cellular telephone, smart sensor Etc., or combinations thereof are contemplated. Each node N can be a different type of computing device.

各リンクLは、OC3、T1、符号分割多元接続(「CDMA」)、直交周波数多元接続(「OFDM」)、移動通信用グローバルシステム(「GSM」)、グローバルパケット中継サービス(「GPRS」)、Ethernet、802.11およびその変形、Bluetoothなどを含むが、これらに限定されない任意のタイプの通信リンク、またはそれらの組合せもしくは混成に基づいており、有線または無線とすることができる。   Each link L includes OC3, T1, Code Division Multiple Access (“CDMA”), Orthogonal Frequency Multiple Access (“OFDM”), Global System for Mobile Communications (“GSM”), Global Packet Relay Service (“GPRS”), Based on any type of communication link, including but not limited to Ethernet, 802.11 and its variants, Bluetooth, etc., or combinations or hybrids thereof, and may be wired or wireless.

特定のノードNを実施するのに使用されるコンピューティング装置のタイプ、およびそれらの間のリンクLのタイプは、詳細に限定されず、一般的に言って、各ノードNは、任意の隣接ノードNと、それらの間のそれぞれのリンクLを介して、接続および通信を行うように動作可能であることをここで理解されたい。   The type of computing device used to implement a particular node N, and the type of link L between them, is not limited in detail; generally speaking, each node N can be any adjacent node It should be understood here that it is operable to connect and communicate via N and the respective links L between them.

各ノードNは、ネットワーク30内のその他のノードNのうちの少なくともいくつかについての知識を保持するように構成されたネットワーク情報データベースDを保持する。各データベースDは、その個々のノードNに関連するコンピューティング環境において、揮発性ストレージ(例えば、ランダムアクセスメモリ(「RAM」))および/もしくは不揮発性ストレージ(例えば、ハードディスクドライブ)内に、または揮発性ストレージもしくは不揮発性ストレージの組合せ内に保持される。データベースDは、ネットワーク30内の他のノードNを見つけるために各ノードNによって使用され、その結果、そのノードNは見つけた他のノードNにトラフィックを送信できるようになり、かつ/またはそれらの他のノードNについての知識を共有するために各ノードNによって使用される。   Each node N maintains a network information database D configured to hold knowledge of at least some of the other nodes N in the network 30. Each database D is volatile in volatile storage (eg, random access memory (“RAM”)) and / or non-volatile storage (eg, hard disk drive) or volatile in the computing environment associated with that individual node N. Stored in a combination of volatile storage or non-volatile storage. The database D is used by each node N to find other nodes N in the network 30, so that the node N can send traffic to the other nodes N it finds and / or Used by each node N to share knowledge about other nodes N.

各データベースDが、その個々のノードNの中に配置された参照符号Dで指示される楕円として図1に示されており、ノードNがそれ自身のデータベースDを保持していることを表している。より詳細には、データベースD1がノードN1の中に示され、データベースD2がノードN2の中に示され、データベースD3がノードN3の中に示されている。各データベースDの構造を定義するサイズ、複雑さ、およびその他のオーバヘッドメトリックは、そのデータベースDが、その個々のノードNで利用可能な全コンピューティング資源の一部だけを占有するように選択される。したがって、データベースDの構造は、必ずではないが一般に、ノードNのコンピューティング資源のかなりの部分が、そのノードNの通常のコンピューティングタスクを実行するために空けておかれるように選択される。そのようなオーバヘッドメトリックについてのさらなる詳細は、以下でより詳しく説明される。   Each database D is shown in FIG. 1 as an ellipse, indicated by the reference symbol D located in its individual node N, representing that node N has its own database D Yes. More specifically, database D1 is shown in node N1, database D2 is shown in node N2, and database D3 is shown in node N3. The size, complexity, and other overhead metrics that define the structure of each database D are selected such that the database D occupies only a portion of all the computing resources available at that individual node N. . Thus, the structure of database D is generally but not necessarily selected such that a significant portion of a node N's computing resources are freed to perform its normal computing tasks. Further details on such overhead metrics are described in more detail below.

しかし、図1の例示的なネットワーク30では、すべてのノードNが、実質的に等しいコンピューティング資源を有し、すべてのリンクLが、実質的に同じサービス特性を有することが仮定されている。(本明細書でリンクLに適用される「サービス特性」という用語は、リンクLの品質を評価するのに使用できる、帯域幅、待ち時間、ビット誤り率などを含む任意の知られたサービス品質(「QOS」)を含む。1つのリンクを介してトラフィックを伝送するのにかかる金銭的コストは、別のリンクを介してトラフィックを伝送するための金銭的コストと異なる場合があるので、サービス特性は、価格付けも含むことができる)。したがって、各データベースDは、実質的に同じ構造を有することが仮定されており、そのような構造の一例が、表Iに示されている。

Figure 0004611319
However, in the exemplary network 30 of FIG. 1, it is assumed that all nodes N have substantially equal computing resources and all links L have substantially the same service characteristics. (The term “service characteristic” as applied herein to link L refers to any known quality of service, including bandwidth, latency, bit error rate, etc. that can be used to evaluate the quality of link L. ("QOS"), because the monetary cost of carrying traffic over one link may be different from the monetary cost of carrying traffic over another link. Can also include pricing). Accordingly, each database D is assumed to have substantially the same structure, and an example of such a structure is shown in Table I.
Figure 0004611319

一般的に言って、各データベースDは、そのデータベースDを保持しているノードNの他に、ネットワーク30内のノードNのうちの少なくともいくつか(「他のノードN」)からなる一覧を提供する。各データベースDはまた、それらの他のノードNを、ネットワーク30内におけるそれらの重要さに従ってランク付ける。重要さを反映するメトリックは、そのような他のノードNの近接度、および/または他のノードNのどれがネットワーク30内のトラフィックのどれだけの割合を分担して伝送するか、および/または別のノードNに向うデータフローに対するノードNの近接度を含むが、これらに限定されない。当業者にはその他のメトリックも思い浮かぶであろう。それらのいくつかは、以下でより詳しく説明される。各データベースDはまた、それらの他のノードNと、それぞれの他のノードNに到達するための最良ネクストステップを表す隣接ノードNを識別する。   Generally speaking, each database D provides a list of at least some of the nodes N in the network 30 (“other nodes N”) in addition to the node N holding the database D. To do. Each database D also ranks their other nodes N according to their importance within the network 30. Metrics reflecting importance may be the proximity of such other nodes N and / or what percentage of other nodes N will share and transmit traffic within the network 30 and / or Including, but not limited to, the proximity of a node N to a data flow towards another node N. Other metrics will occur to those skilled in the art. Some of them are described in more detail below. Each database D also identifies their other nodes N and neighboring nodes N that represent the best next steps to reach each other node N.

表Iをより詳しく説明すると、表Iの列1の「ランク」は、データベースDの各行の値が、そのデータベースD内に保持されている他のノードNの数に基づいて増加する数を示す。   Explaining Table I in more detail, the “rank” in column 1 of Table I indicates the number by which the value of each row of database D increases based on the number of other nodes N held in that database D. .

表Iの列2の「ノード名」は、特定の他のノードNを識別する。そのようなノード名は、任意の知られたまたは将来のネットワークアドレッシング方式に基づくことができる。知られたノードアドレッシング方式の例には、電話番号、または媒体アクセス制御(「MAC」)アドレス、またはインターネットプロトコル(「IP」)アドレスが含まれる。そのようなアドレッシング方式は、ネットワーク30および/またはその中のノードNの設計に影響を及ぼすその他の要因に従って選択されることができる。しかし、注目すべきことに、本発明のアドレッシング方式では、例えば、地理的ロケーションに対応する市外局番を有する電話番号などの他のアドレッシング方式で見られるように、各ノードNの名前がネットワークにおけるそのノードNのロケーションを反映することを必要としない。本明細書における実施形態の説明を簡略にするため、ノード名は、図面における参照符号に従って識別される。例えば、列2の下のノード名エントリが「N1」を示す場合、ノードN1が識別されている。   “Node name” in column 2 of Table I identifies a particular other node N. Such node names can be based on any known or future network addressing scheme. Examples of known node addressing schemes include telephone numbers, or media access control (“MAC”) addresses, or Internet protocol (“IP”) addresses. Such an addressing scheme may be selected according to other factors that affect the design of network 30 and / or node N therein. However, it should be noted that in the addressing scheme of the present invention, the name of each node N is in the network as seen in other addressing schemes such as, for example, telephone numbers having an area code corresponding to a geographical location. It is not necessary to reflect the location of that node N. In order to simplify the description of the embodiments herein, the node names are identified according to reference numerals in the drawings. For example, if the node name entry under column 2 indicates “N1”, node N1 is identified.

表Iの列3の「最良隣接ノード」は、列2に名前が示された他のノードNに到達するための全体的経路における最良ネクストステップを、隣接ノードNのうちのどれが提供するかを示す。[この実施形態では、「最良隣接ノード」という用語が使用されるが、この用語は、本発明のすべての実施形態について、限定的な意味で解釈されるべきではなく、「最良隣接ノード」またはさもなければ望ましい隣接ノードを決定するための任意の望ましい基準が選択され得る]。したがって、列3は常に隣接ノードNを識別するが、列2は隣接ノードNを指示する必要はない。列3のエントリは、実際には、列2で使用されるのと同じアドレッシング方式に従う隣接ノードNの名前である必要はなく、その特定の隣接ノードNを示す任意の標識とすることができることを理解されたい。しかし、本明細書における実施形態の説明を簡略にするため、列3のエントリは、実際には、隣接ノードNの名前を反映する。   The “best neighbor” in column 3 of Table I indicates which of the neighbors N provides the best next step in the overall path to reach the other node N named in column 2 Indicates. [In this embodiment, the term “best neighbor” is used, but this term should not be construed in a limiting sense for all embodiments of the present invention; Otherwise, any desired criteria for determining the desired neighbor node can be selected. Thus, column 3 always identifies adjacent node N, but column 2 need not indicate adjacent node N. The entry in column 3 need not be the name of an adjacent node N that actually follows the same addressing scheme used in column 2, but can be any indicator of that particular adjacent node N. I want you to understand. However, to simplify the description of the embodiments herein, the entry in column 3 actually reflects the name of the adjacent node N.

ネットワーク30が初期化されるとき(例えば、すべてのノードNが各々、図1に示されたトポロジに従って互いに接続されるとき)、各データベースDの内容は、各データベースDがそのデータベースDを所有する特定のノードNを識別する「ヌル」エントリを含む以外は空である。したがって、表IIは、ノードN1を識別する「ヌル」エントリが、最初にデータベースD1にどのように入力されるかを示している。

Figure 0004611319
When the network 30 is initialized (eg, when all nodes N are each connected to each other according to the topology shown in FIG. 1), the contents of each database D are owned by each database D It is empty except that it contains a “null” entry that identifies a particular node N. Thus, Table II shows how a “null” entry identifying node N1 is initially entered into database D1.
Figure 0004611319

表IIをより詳しく説明すると、表IIの列1の行0のエントリには、ヌルエントリの「0」が与えられており、データベースD1のこの情報が、そのデータベースD1を所有する当該のノードN1についてのものであることを示している。表IIの列2の行0のエントリは、名前によってノードN1を識別する「N1」である。表IIの列3の行0のエントリは、表IIのこのエントリはデータベースD1の所有ノードに関するものなので、最良隣接ノードに当てはまるものがないことを示す「N/A」である。   Explaining Table II in more detail, the entry in row 1 of column 1 of Table II is given a null entry “0” and this information in database D1 is the node N1 that owns that database D1. Shows that it is about. The entry in row 2 of column 2 of Table II is “N1” that identifies node N1 by name. The entry in row 0 of column 3 of Table II is “N / A” indicating that this entry in Table II relates to the owning node of database D1, so that none of the best neighbors apply.

同様に、表IIIは、ノードN2を識別する「ヌル」エントリが、最初にデータベースD2にどのように入力されるかを示している。

Figure 0004611319
Similarly, Table III shows how a “null” entry identifying node N2 is initially entered in database D2.
Figure 0004611319

同様に、表IVは、ノードN3を識別する「ヌル」エントリが、最初にデータベースD3にどのように入力されるかを示している。

Figure 0004611319
Similarly, Table IV shows how a “null” entry identifying node N3 is initially entered in database D3.
Figure 0004611319

各データベースDの残りを入力し、それらの内容を保持するため、各ノードNのマイクロプロセッサは、1組のプログラミング命令を実行する。それらの命令は、各ノードNで実質的に同じである。ここで図2を参照すると、本発明の一実施形態に従ってネットワーク知識を保持するための方法を表すフローチャートが、全体として200で示されている。各データベースDの内容を入力し、保持するため、方法200は、各ノードNのマイクロプロセッサ上で実行される1組のプログラミング命令として実装されることができる。方法の説明を分かりやすくするため、方法200は、システム30の各ノードN上で実行され、そのノードNに対応するデータベースDを保持すると仮定される。したがって、方法200の以下の説明は、システム30とその様々な構成要素についてのさらなる理解をもたらす。(しかし、システム30および/または方法200は、変更されることができ、図2に示された通りの順序で実行される必要はなく、システム30および/または方法200は、本明細書で説明された通りそのままに働く必要はなく、そのような変更は本発明の範囲内にあることを理解されたい)。   To enter the rest of each database D and hold their contents, the microprocessor at each node N executes a set of programming instructions. Those instructions are substantially the same at each node N. Referring now to FIG. 2, a flowchart representing a method for maintaining network knowledge in accordance with one embodiment of the present invention is shown generally at 200. In order to enter and maintain the contents of each database D, the method 200 can be implemented as a set of programming instructions that are executed on the microprocessor of each node N. For ease of explanation of the method, it is assumed that the method 200 is performed on each node N of the system 30 and maintains a database D corresponding to that node N. Accordingly, the following description of method 200 provides a further understanding of system 30 and its various components. (However, the system 30 and / or method 200 can be modified and need not be performed in the order shown in FIG. 2, and the system 30 and / or method 200 is described herein. It is not necessary to work as is, and it is understood that such modifications are within the scope of the present invention).

したがって、方法200の説明を始める前に、各ノードNのデータベースDは、表II、III、およびIVに従って入力されているに過ぎず、各ノードNは、起動されており、図1に示されたリンクLの構造に従って互いに物理的に接続されていることが仮定される。   Thus, before beginning the description of the method 200, the database D of each node N has only been entered according to Tables II, III, and IV, and each node N has been activated and is shown in FIG. It is assumed that they are physically connected to each other according to the structure of the links L.

方法200は最初にステップ210で開始され、隣接ノードの存在が判定される。一般的に言って、ステップ210で、各ノードNは、新規の隣接ノードNがあるかどうか、または既存の隣接ノードNがそのノードNとの接続を打ち切ったかどうかを判定する。したがって、ステップ210が最初にノードN1によって実行されるとき、ノードN1は、ノードN2の存在およびリンクL1の解消を問い合わせるため、リンクL1を介してノードN2に初期化メッセージを送出する。そのような初期化メッセージは、リンクL1を実施するのに使用されるプロトコルのタイプに応じた任意の既知の手段に従って実行されることができる。   Method 200 begins initially at step 210 where the presence of a neighboring node is determined. Generally speaking, at step 210, each node N determines whether there is a new neighboring node N or whether an existing neighboring node N has terminated the connection with that node N. Thus, when step 210 is first executed by node N1, node N1 sends an initialization message to node N2 via link L1 to query the existence of node N2 and the resolution of link L1. Such an initialization message can be performed according to any known means depending on the type of protocol used to implement the link L1.

同様に、ステップ210は、ノードN2によっても実行され、したがって、ノードN2は、ノードN1の存在を問い合わせるため、リンクL1を介してノードN1にネットワーク初期化信号を送出する。さらに、ノードN2は、ノードN3の存在を問い合わせるため、リンクL2を介してノードN3にネットワーク初期化信号を送出する。   Similarly, step 210 is also performed by node N2, so node N2 sends a network initialization signal to node N1 via link L1 to query the presence of node N1. Further, the node N2 sends a network initialization signal to the node N3 via the link L2 in order to inquire about the existence of the node N3.

最後に、ステップ210は、ノードN3によっても実行され、したがって、ノードN3は、ノードN2の存在を問い合わせるため、リンクL2を介してノードN2にネットワーク初期化信号を送出する。   Finally, step 210 is also performed by node N3, so node N3 sends a network initialization signal to node N2 via link L2 to query the presence of node N2.

ここで図3を参照すると、各ノードNによるステップ210のこの初期実行が、上述の説明に従って送信される複数の初期化メッセージIMを示すことによって表されている。具体的には、初期化メッセージIM1−2が、ノードN1からノードN2に送信され、初期化メッセージIM3−2が、ノードN3からノードN2に送信され、初期化メッセージIM2−3が、ノードN2からノードN3に送信され、初期化メッセージIM2−1が、ノードN2からノードN1に送信されている。この実施形態では、初期化メッセージIMを簡略化し、またノードNのノード知識がすべてのノードNにとって実質的に同じ方法で広まることを可能にするため、初期化メッセージIMは、ノード知識を交換しない。ノードNの処理およびメモリ特性はネットワーク知識を保持するノードの能力に関係するので、この初期化メッセージIMは、そうした特性を含むことができる。そのような処理およびメモリ特性は、ネットワーク知識を保持するために専用されるノードNのメモリなどを含むことができる。しかし、この実施形態では、ノード名N自体は、初期化メッセージIMの部分として交換されない。   Referring now to FIG. 3, this initial execution of step 210 by each node N is represented by showing a plurality of initialization messages IM sent in accordance with the above description. Specifically, the initialization message IM1-2 is transmitted from the node N1 to the node N2, the initialization message IM3-2 is transmitted from the node N3 to the node N2, and the initialization message IM2-3 is transmitted from the node N2. An initialization message IM2-1 is transmitted from the node N2 to the node N1. In this embodiment, the initialization message IM does not exchange node knowledge because it simplifies the initialization message IM and allows the node knowledge of node N to be spread to all nodes N in substantially the same way. . Since the processing and memory characteristics of node N are related to the node's ability to retain network knowledge, this initialization message IM can include such characteristics. Such processing and memory characteristics may include node N's memory, etc. dedicated to holding network knowledge. However, in this embodiment, the node name N itself is not exchanged as part of the initialization message IM.

初期化メッセージIMを使用して隣接ノードを見つけた結果として、各ノードNは今では、その隣接ノードNを認識しており、したがって、隣接データベースDを利用して、その個々のデータベースDの入力および保持を開始する位置についている。   As a result of finding the neighboring node using the initialization message IM, each node N now knows its neighboring node N and therefore uses its neighboring database D to enter its individual database D. And the position to start holding.

したがって、再び図2を参照すると、方法200は、ステップ210からステップ220に進み、ステップ220で、ネットワーク知識が、ステップ210で識別された隣接ノードNの間で交換される。各ノードNは今では、ネットワーク30についてのより多くの知識を獲得するため、隣接データベースDを利用することができる。   Thus, referring again to FIG. 2, method 200 proceeds from step 210 to step 220, where network knowledge is exchanged between neighboring nodes N identified in step 210. Each node N can now utilize the adjacency database D in order to gain more knowledge about the network 30.

ここで図4を参照すると、各ノードNによるステップ220の初期実行が、1組の双方向知識交換メッセージKEMを示すことによって表されている。ノードN1とノードN2の間の知識交換は、知識交換KEMメッセージ1−2として示され、ノードN2とノードN3の間の知識交換は、知識交換メッセージKEM2−3として示されている。   Referring now to FIG. 4, the initial execution of step 220 by each node N is represented by showing a set of bidirectional knowledge exchange messages KEM. Knowledge exchange between node N1 and node N2 is shown as knowledge exchange KEM message 1-2, and knowledge exchange between node N2 and node N3 is shown as knowledge exchange message KEM2-3.

再び図2を参照すると、その後、方法200は、ステップ220からステップ230に進み、ステップ230で、ローカル知識が、ステップ220での情報交換の結果として更新される。メッセージKEMを交換した結果として、データベースD1、D2、およびD3は、表V、VI、VIIにそれぞれ示されるように、隣接ノードNについての情報を反映するように更新されることができる。したがって、表Vは、データベースD1が、ノードN1によるステップ230の初期実行の後、どのように入力されているかを示している。

Figure 0004611319
Referring back to FIG. 2, the method 200 then proceeds from step 220 to step 230 where the local knowledge is updated as a result of the information exchange at step 220. As a result of exchanging message KEM, databases D1, D2, and D3 can be updated to reflect information about neighboring node N, as shown in Tables V, VI, and VII, respectively. Thus, Table V shows how database D1 is entered after the initial execution of step 230 by node N1.
Figure 0004611319

表Vをより詳しく説明すると、行0は表IIのものと同じままである。しかし、今は行1が入力されており、ノードN1が今ではノードN2という名前のノードの知識を有しており、ノードN2がノードN2への到達を可能にする最良隣接ノードであることを示している。   Explaining Table V in more detail, row 0 remains the same as in Table II. However, now that row 1 has been entered, node N1 now has knowledge of the node named node N2, and node N2 is the best neighbor that allows it to reach node N2. Show.

したがって、同様に、表VIは、データベースD2が、ノードN2によるステップ230の初期実行の後、どのように入力されているかを示している。

Figure 0004611319
Thus, similarly, Table VI shows how database D2 is entered after the initial execution of step 230 by node N2.
Figure 0004611319

表VIをより詳しく説明すると、行0は表IIIのものと同じままである。しかし、今は行1が入力されており、ノードN2が今ではノードN1という名前のノードの知識を有しており、ノードN1がノードN1への到達を可能にする最良隣接ノードであることを示している。さらに、今は行2が入力されており、ノードN2が今ではノードN3という名前のノードの知識を有しており、ノードN3がノードN3への到達を可能にする最良隣接ノードであることを示している。ノードN1にはランク「1」が与えられ、ノードN3にはランク「2」が与えられていることに留意されたい。この例では、どちらをより高くランク付けるかを実際に選択するためのメトリックは存在しないので、そのようなランキングは、純粋に便宜的に付けられたものである。しかし、より複雑な根拠によって付けられるランキングが、以下でより詳しく説明される。   Explaining Table VI in more detail, row 0 remains the same as in Table III. However, now that row 1 has been entered, node N2 now has knowledge of the node named node N1, and that node N1 is the best neighbor that allows it to reach node N1. Show. Furthermore, now that row 2 has been entered, node N2 now has knowledge of a node named node N3, and that node N3 is the best neighbor that allows it to reach node N3. Show. Note that node N1 is given rank “1” and node N3 is given rank “2”. In this example, there is no metric to actually choose which one to rank higher, so such ranking is purely expedient. However, the rankings given by more complex grounds are explained in more detail below.

したがって、同様に、表VIIは、データベースD3が、ノードN3によるステップ230の初期実行の後、どのように入力されているかを示している。

Figure 0004611319
Thus, similarly, Table VII shows how database D3 is entered after the initial execution of step 230 by node N3.
Figure 0004611319

表VIIをより詳しく説明すると、行0は表IVのものと同じままである。しかし、今は行1が入力されており、ノードN3が今ではノードN2という名前のノードの知識を有しており、ノードN2がノードN2への到達を可能にする最良隣接ノードであることを示している。   Explaining Table VII in more detail, row 0 remains the same as in Table IV. However, now that row 1 has been entered, node N3 now has knowledge of the node named node N2, and node N2 is the best neighbor that allows it to reach node N2. Show.

表V、VI、およびVIIの内容は、図5の点線によって表された知識経路Kとして示されている。知識経路K1−2は、表Vの行1に対応し、ノードN1がノードN2の知識を有していることを示し、知識経路K2−1は、表VIの行1に対応し、ノードN2がノードN1の知識を有していることを示し、同様に、知識経路K2−3は、表VIの行2に対応し、ノードN2がノードN3の知識を有していることを示し、知識経路K3−2は、表VIIの行1に対応し、ノードN3がノードN2の知識を有していることを示している。   The contents of Tables V, VI, and VII are shown as a knowledge path K represented by the dotted line in FIG. Knowledge path K1-2 corresponds to row 1 of table V and indicates that node N1 has knowledge of node N2, knowledge path K2-1 corresponds to row 1 of table VI and node N2 Indicates that the node has knowledge of the node N1. Similarly, the knowledge path K2-3 corresponds to row 2 of Table VI, and indicates that the node N2 has knowledge of the node N3. Path K3-2 corresponds to row 1 of Table VII and indicates that node N3 has knowledge of node N2.

発信ノードNと宛先ノードNの間に知識経路が存在する場合、発信ノードNで生成され、宛先ノードNに宛てられたペイロードトラフィックは、今では実際に、知識経路Kに従ってノードNに送り届けられることができる。ペイロードトラフィックのそのような送達は、発信ノードNのデータベースDの列2に宛先ノードNについてのネットワーク知識が入力されている限り、列3に示された最良隣接ルーティングを介して実施されることができる。   If a knowledge path exists between the source node N and the destination node N, payload traffic generated at the source node N and destined for the destination node N is now actually delivered to the node N according to the knowledge path K Can do. Such delivery of payload traffic may be performed via the best neighbor routing shown in column 3 as long as network knowledge about the destination node N is entered in column 2 of database D of source node N. it can.

(本明細書では、「ペイロードトラフィック」または「ペイロード」とは、発信ノードN上で実行されるアプリケーションによって生成され、宛先ノードNに宛てられた任意のデータのことを言う。例えば、ノードNがコンピュータである場合、ペイロードトラフィックとして、eメール、ウェブページ、アプリケーションファイル、プリンタファイル、オーディオファイル、ビデオファイルなどを挙げることができる。ノードNが電話である場合、ペイロードトラフィックとして、音声伝送を挙げることができる。当業者には、その他のタイプのペイロードデータも思い浮かぶであろう)。   (As used herein, “payload traffic” or “payload” refers to any data generated by an application running on an originating node N and addressed to a destination node N. For example, If it is a computer, the payload traffic can include emails, web pages, application files, printer files, audio files, video files, etc. If node N is a phone, the payload traffic can include voice transmission. Other types of payload data will occur to those skilled in the art.

より具体的には、ノードN1とノードN2は、互いの知識を有しているので、今ではペイロードトラフィックを交換することができる。ノードN2とノードN3も、互いの知識を有しているので、ペイロードトラフィックを交換することができる。しかし、この時点では、ノードN1とノードN3は、互いの知識を有していないので、ペイロードトラフィックを交換することができない。   More specifically, since node N1 and node N2 have knowledge of each other, they can now exchange payload traffic. Since the node N2 and the node N3 also have knowledge of each other, payload traffic can be exchanged. However, at this point, the node N1 and the node N3 do not have knowledge of each other and therefore cannot exchange payload traffic.

方法200は、ここまでで1回完全に実行されたので、次にステップ230からステップ210に復帰し、新たに2回目を開始する。再びステップ210に戻り、隣接ノードの存在が判定される。方法200の2回目の例示的サイクルの間、新規のノードNはネットワーク30に追加されず、既存のノードNは削除されないことが仮定される。したがって、変化は生じていないので、ステップ210では何も行われず、方法200は、ステップ210からステップ220に進む。   Since the method 200 has been completely executed once so far, the method 200 returns from the step 230 to the step 210 and starts a new second time. Returning to step 210 again, the presence of an adjacent node is determined. During the second exemplary cycle of method 200, it is assumed that no new nodes N are added to network 30 and existing nodes N are not deleted. Accordingly, since no change has occurred, nothing is done in step 210 and method 200 proceeds from step 210 to step 220.

この例を続け、再び図2を参照すると、方法200は、再びステップ210からステップ220に進み、ステップ220で、追加のネットワーク知識が隣接ノードNの間で交換される。もう一度、各ノードNは、ネットワーク30についてのより多くの知識を獲得するため、隣接データベースDを利用することができる。   Continuing with this example and referring again to FIG. 2, method 200 again proceeds from step 210 to step 220, where additional network knowledge is exchanged between neighboring nodes N. Once again, each node N can utilize the neighbor database D to gain more knowledge about the network 30.

ここで図6を参照すると、各ノードNによるステップ220の2回目の実行が、もう一度、双方向知識交換メッセージKEMによって表されている。ノードN1とノードN2の間の知識交換は、知識交換KEMメッセージ1−2として示され、ノードN2とノードN3の間の知識交換は、知識交換メッセージKEM2−3として示されている。   Referring now to FIG. 6, the second execution of step 220 by each node N is once again represented by a bidirectional knowledge exchange message KEM. Knowledge exchange between node N1 and node N2 is shown as knowledge exchange KEM message 1-2, and knowledge exchange between node N2 and node N3 is shown as knowledge exchange message KEM2-3.

再び図2を参照すると、その後、方法200は、ステップ220からステップ230への2回目の進行を行い、ステップ230で、ローカル知識が、ステップ220での情報交換の結果として更新される。メッセージKEMを交換した結果として、データベースD1、D2、およびD3は、表VIII、IX、Xにそれぞれ示されるように、隣接ノードNについての情報を反映するように更新されることができる。表VIIIは、ノードN1によるステップ230の2回目の実行の後、データベースD1がどのように入力されているかを示している。

Figure 0004611319
Referring back to FIG. 2, method 200 then proceeds a second time from step 220 to step 230, where local knowledge is updated as a result of the information exchange at step 220. As a result of exchanging messages KEM, databases D1, D2, and D3 can be updated to reflect information about neighboring node N, as shown in Tables VIII, IX, and X, respectively. Table VIII shows how the database D1 has been entered after the second execution of step 230 by the node N1.
Figure 0004611319

表VIIIをより詳しく説明すると、行0および行1は表Vのものと同じままである。しかし、今は行2が入力されており、ノードN1が今ではノードN3という名前のノードの知識を有しており、ノードN2がノードN3への到達を可能にする最良隣接ノードであることを示している。   Explaining Table VIII in more detail, row 0 and row 1 remain the same as those in Table V. However, now that row 2 has been entered, node N1 now has knowledge of a node named node N3, and that node N2 is the best neighbor that allows it to reach node N3. Show.

同様に、表IXは、ノードN2によるステップ230の2回目の実行の後、データベースD2がどのように入力されているかを示している。

Figure 0004611319
Similarly, Table IX shows how database D2 is entered after the second execution of step 230 by node N2.
Figure 0004611319

表IXをより詳しく説明すると、行0、行1、および行2は表VIのものと同じままであるが、それは、ノードN2には、隣接ノードNとメッセージを交換することによって認識するようになった新しいノードNがネットワーク30内に存在しないからである。   Explaining Table IX in more detail, row 0, row 1 and row 2 remain the same as in Table VI, as it will be recognized by node N2 by exchanging messages with neighboring node N. This is because the new node N is not present in the network 30.

同様に、表Xは、ノードN3によるステップ230の2回目の実行の後、データベースD3がどのように入力されているかを示している。

Figure 0004611319
Similarly, Table X shows how database D3 is entered after the second execution of step 230 by node N3.
Figure 0004611319

表Xをより詳しく説明すると、行0および行1は表VIIのものと同じままである。しかし、今は行2が入力されており、ノードN3が今ではノードN1という名前のノードの知識を有しており、ノードN2がノードN1への到達を可能にする最良隣接ノードであることを示している。   Explaining Table X in more detail, row 0 and row 1 remain the same as those in Table VII. However, now that row 2 has been entered, node N3 now has knowledge of the node named node N1, and that node N2 is the best neighbor that allows it to reach node N1. Show.

表VIII、IX、およびXの内容は、図7の点線によって表された知識経路Kとして示されている。図7では(先に図5で示されたように)、知識経路K1−2は、ノードN1がノードN2の知識を有していることを示し、知識経路K2−1は、ノードN2がノードN1の知識を有していることを示し、同様に、知識経路K2−3は、ノードN2がノードN3の知識を有していることを示し、知識経路K3−2は、ノードN3がノードN2の知識を有していることを示している。しかし、図7は、今は2つの追加の知識経路も含んでおり、知識経路K1−3は、ノードN1が今ではノードN3の知識を有していることを示し、同様に、知識経路K3−1は、ノードN3が今ではノードN1の知識を有していることを示している。   The contents of Tables VIII, IX, and X are shown as a knowledge path K represented by the dotted line in FIG. In FIG. 7 (as previously shown in FIG. 5), knowledge path K1-2 indicates that node N1 has knowledge of node N2, and knowledge path K2-1 indicates that node N2 is node N2. Similarly, knowledge path K2-3 indicates that node N2 has knowledge of node N3, and knowledge path K3-2 indicates that node N3 is connected to node N2. It shows that you have knowledge of. However, FIG. 7 now also includes two additional knowledge paths, knowledge path K1-3 shows that node N1 now has knowledge of node N3, and likewise knowledge path K3. -1 indicates that node N3 now has knowledge of node N1.

発信ノードNと宛先ノードNの間に知識経路が存在する場合、発信ノードNで生成され、宛先ノードNに宛てられたペイロードトラフィックは、今では実際に、知識経路Kに従ってノードNに送り届けられることができる。ペイロードトラフィックのそのような送達は、発信ノードNのデータベースDの列2に宛先ノードNについてのネットワーク知識が入力されている限り、列3に示された最良隣接ルーティングを介して実施されることができる。したがって、より具体的には、すべてのノードNが互いの知識を有しているため、今ではすべてのノードNがペイロードトラフィックを交換することができる。特に留意すべきことに、方法200のこの実行の後、ノードN1とノードN3は、両ノードの間のステップとしてノードN2を介して、互いにペイロードトラフィックを送信することができる。   If a knowledge path exists between the source node N and the destination node N, payload traffic generated at the source node N and destined for the destination node N is now actually delivered to the node N according to the knowledge path K Can do. Such delivery of payload traffic may be performed via the best neighbor routing shown in column 3 as long as network knowledge about the destination node N is entered in column 2 of database D of source node N. it can. Therefore, more specifically, since all nodes N have knowledge of each other, now all nodes N can exchange payload traffic. Of particular note, after this execution of method 200, node N1 and node N3 may send payload traffic to each other via node N2 as a step between both nodes.

方法200は、ここまでで2回完全に実行されたので、次にステップ230からステップ210に復帰し、新たな回を開始する。方法200の3回目の例示的なサイクルの実行の前に、図8に示されるように、リンクL2の障害が原因で、ノードN3がネットワーク30から除去されることが仮定される。再びステップ210に戻り、隣接ノードの存在が判定される。この3回目では、初期化メッセージIMの交換の間に、ノードN2とノードN3は、もはや互いに隣接ノードではないと決定する。ステップ220で、ステップ210で存在が確認された隣接ノードに基づく隣接ノードとの間で知識が交換される。最後に、ステップ230で、ローカル知識が、交換に基づいて更新される。   Since the method 200 has been completely executed twice so far, it then returns from step 230 to step 210 and starts a new time. Prior to the execution of the third exemplary cycle of method 200, it is assumed that node N3 is removed from network 30 due to the failure of link L2, as shown in FIG. Returning to step 210 again, the presence of an adjacent node is determined. In this third time, during the exchange of the initialization message IM, the nodes N2 and N3 determine that they are no longer adjacent to each other. At step 220, knowledge is exchanged with neighboring nodes based on the neighboring nodes whose existence was confirmed at step 210. Finally, at step 230, local knowledge is updated based on the exchange.

ステップ230の後、図8に示されるように、その結果は、データベースD1については同じままであり、表VIIIに示された内容を保持しているが、これは、ノードN3の喪失がデータベースD1に伝播するには、方法200のサイクルが不十分にしか行われていないためである。しかし、データベースD2は、今では表XIに従って更新されている。

Figure 0004611319
After step 230, as shown in FIG. 8, the result remains the same for database D1 and retains the contents shown in Table VIII, since the loss of node N3 is the result of database D1. This is because the method 200 has been cycled insufficiently to propagate to However, the database D2 is now updated according to Table XI.
Figure 0004611319

データベースD3も、表IVに示される初期データを反映するように更新される。これは図8に示されており、既存のノードNは除去されない。したがって、変化は生じていないので、ステップ210では何も行われず、方法200は、ステップ210からステップ220に進む。   Database D3 is also updated to reflect the initial data shown in Table IV. This is illustrated in FIG. 8, where the existing node N is not removed. Accordingly, since no change has occurred, nothing is done in step 210 and method 200 proceeds from step 210 to step 220.

方法200のこの3回目の実行の後のデータベースDの内容は、図8に示された知識経路Kに反映される。   The contents of database D after this third execution of method 200 are reflected in knowledge path K shown in FIG.

方法200の4回目の実行の間、ノードN3の喪失がついにノードN1に伝播し、その結果、知識経路Kは図9に示されたものになる。   During the fourth execution of method 200, the loss of node N3 finally propagates to node N1, so that knowledge path K is as shown in FIG.

(当業者は、上記の説明は、説明を目的とした簡略化された説明であり、実施された場合、自明なループを導入する原因となり得ることを認めるであろう。これに対処するため、「ポイズンリバース」を導入して、ノードが除去されたときにどのようなネットワークにも導入される自明なループを取り除くことができる。ポイズンリバースは、以下でより詳しく説明される。ループの導入をさらに低減するため、ノード知識が広まるときには遅延を導入し、一方、ノード知識の削除は「ゼロ」遅延で(例えば、実質的に即時に)実施することができる。最後に、(以下でより詳しく説明される)データフローからの距離がある限界に達した場合、ノードは、その特定のノードについての知識を、それがまだそのノードについての有効な知識ではあっても、削除することを隣接ノードに通知する。ノード除去についてのより詳細な説明は、以下でさらに提供される)。   (Those skilled in the art will appreciate that the above description is a simplified description for purposes of explanation and, if implemented, may introduce a trivial loop. To address this, “Poison reverse” can be introduced to remove trivial loops that are introduced into any network when a node is removed, which is described in more detail below. For further reduction, a delay is introduced when node knowledge spreads, while node knowledge deletion can be performed with “zero” delay (eg, substantially immediately). If the distance from the data flow (explained) reaches a certain limit, the node will have knowledge about that particular node that is still valid knowledge about that node. Even, a more detailed description of the notified. Node removal to the adjacent node to be deleted, further provided below).

本明細書の教示は、ネットワーク30よりも複雑さの大きいネットワークに適用可能であることをここで理解されたい。例えば、ここで図10を参照すると、本発明の別の実施形態による僅かにより複雑なネットワークが、全体として30aで示されている。ネットワーク30aは、ネットワーク30と実質的に同じ要素を含み、同様の要素には、接尾辞「a」が付される以外は同様の参照符号が与えられている。より具体的には、ネットワーク30aは、より多くのノードNaおよびリンクLaを含むが、それらのノードNaおよびリンクLaの基本構造は、システム30のそれらの対応物と実質的に同じである。しかし、説明を簡略にするため、ネットワーク30aは、データベースDaの内容を示す具体的な表を伴わずに示されている。   It should be understood here that the teachings herein are applicable to networks that are more complex than network 30. For example, referring now to FIG. 10, a slightly more complex network according to another embodiment of the present invention is indicated generally at 30a. The network 30a includes substantially the same elements as the network 30, and similar elements are given similar reference signs except that they are suffixed with "a". More specifically, the network 30a includes more nodes Na and links La, but the basic structure of those nodes Na and links La is substantially the same as their counterparts of the system 30. However, for the sake of simplicity, the network 30a is shown without a specific table indicating the contents of the database Da.

ネットワーク30aは、ネットワーク30の個々の対応ノードN1、N2、およびN3と同様に、リンクL1aおよびL2aを介して接続されるノードN1a、N2a、およびN3aを含む。この例では、ネットワーク30aは、方法200の完全な実行を2回行っており、したがって、データベースDaは、図7のネットワーク30について示されたものと同じ状態であることが最初に仮定される。しかし、ネットワーク30とは対照的に、ネットワーク30aは、最初は他のどのノードNaにも接続されていない第4のノードN4aを含むことも仮定される。   Network 30a includes nodes N1a, N2a, and N3a that are connected via links L1a and L2a, as are the individual corresponding nodes N1, N2, and N3 of network 30. In this example, the network 30a has made two complete executions of the method 200, so it is initially assumed that the database Da is in the same state as shown for the network 30 of FIG. However, in contrast to the network 30, it is also assumed that the network 30a includes a fourth node N4a that is not initially connected to any other node Na.

ここで図11を参照すると、ノードN4aは、ノードN4aとノードN2aの間に張られるリンクL3aと、ノードN4aとノードN3aの間に張られるリンクL4aとを形成することによって、ネットワーク30aの残りの部分に参加することを仮定している。方法200が、各ノードNaによって十分な回数繰り返し実行された後、(図11に示されるように)追加の知識経路Kが、表XIIにまとめられたようなデータベースDaの更新内容に従って形成される。

Figure 0004611319
Referring now to FIG. 11, the node N4a forms the link L3a spanned between the node N4a and the node N2a and the link L4a spanned between the node N4a and the node N3a, thereby remaining the network 30a. Assume that you participate in the part. After the method 200 has been repeated a sufficient number of times by each node Na, an additional knowledge path K (as shown in FIG. 11) is formed according to the update of the database Da as summarized in Table XII. .
Figure 0004611319

発信ノードNaで生成され、宛先ノードNaに宛てられたペイロードトラフィックは、今では実際に、知識経路Kaに従って送り届けられることができる。例えば、ノードN4aがノードN1aにペイロードトラフィックを送信することを望んでいると仮定する。表XIIの情報を使用すると、トラフィックは、ノードN4aからノードN2aを介してノードN1aにルーティングされることが理解できる。このトラフィック経路Pは、図12に示されており、図12では、図11と同じ状態でネットワーク30aを示しているが、トラフィック経路Pがより明瞭に見えるように、知識経路Kaは消されている。   Payload traffic generated at the source node Na and destined for the destination node Na can now actually be delivered according to the knowledge path Ka. For example, suppose node N4a wants to send payload traffic to node N1a. Using the information in Table XII, it can be seen that traffic is routed from node N4a through node N2a to node N1a. This traffic path P is shown in FIG. 12, and FIG. 12 shows the network 30a in the same state as FIG. 11, but the knowledge path Ka is deleted so that the traffic path P can be seen more clearly. Yes.

この時点で、様々なノードは他のノードに異なる経路を介して到達することができるが、ある好ましい経路が識別されていることが理解できる。これらの実施形態では、これまでのところ、すべてのリンクLおよびLaは実質的に同じサービス特性を有すると仮定しているので、そのような好ましい経路が選択された。例えば、表XIIに対応する図11および図12では、ノードN4aは、ノードN2aを介してノードN1aに到達する。これは、表XIIの行4の列12に反映されており、ノードN2aは、ノードN4aからノードN1aに到達するための最良ネクストステップとして反映されている。しかし、表XIIに示された例ではあまり好ましくはないが、ノードN4aからノードN3aおよびノードN2aを介した後にノードN1aに最終的に送り届けられる経路に沿って、ペイロードトラフィックが送り届けられることも物理的には可能であり、この経路は、リンクL3aが存在しない場合に使用される経路である。   At this point, various nodes can reach other nodes via different paths, but it can be seen that certain preferred paths have been identified. In these embodiments, so far it has been assumed that all links L and La have substantially the same service characteristics, so such a preferred route has been chosen. For example, in FIGS. 11 and 12 corresponding to Table XII, the node N4a reaches the node N1a via the node N2a. This is reflected in column 12 of row 4 of Table XII, and node N2a is reflected as the best next step for reaching node N1a from node N4a. However, although not preferred in the example shown in Table XII, it is also possible that the payload traffic is physically delivered along a route that is finally delivered from the node N4a to the node N1a through the node N3a and the node N2a. This route is a route used when the link L3a does not exist.

しかし、別の実施形態では、各リンクのサービス特性は、異なることができ、各ノードのデータベースは、ペイロードトラフィックをルーティングすべき最良ネクストステップとして最良隣接ノードを選択するときに、そのようなサービス特性の知識を加味する。例えば、ここで図13を参照すると、本発明の別の実施形態による別のネットワークが、全体として30bで示されている。ネットワーク30bは、ネットワーク30aと実質的に同じであり、同様の要素には、接尾辞「b」が付される以外は同様の参照符号が与えられている。より具体的には、ネットワーク30bは、リンクLbを含み、それらはネットワーク30aのリンクLaと同じ経路を辿る。また、ネットワーク30bは、4つのノードNbを含み、それらはネットワーク30aのノードNaと実質的に同じである。しかし、ネットワーク30bでは、各リンクLbは異なるサービス特性を有しており、ネットワーク30aでは、各リンクLaは同じサービス特性を有している。表XIIIは、各リンクLbの例示的なサービス特性の組を示している。

Figure 0004611319
However, in another embodiment, the service characteristics of each link can be different, and each node's database selects such service characteristics when selecting the best neighbor as the best next step to route payload traffic. Consider the knowledge of. For example, referring now to FIG. 13, another network according to another embodiment of the present invention is indicated generally at 30b. The network 30b is substantially the same as the network 30a, and similar elements are given the same reference numbers except that they are suffixed with "b". More specifically, the network 30b includes a link Lb, which follows the same path as the link La of the network 30a. The network 30b includes four nodes Nb, which are substantially the same as the node Na of the network 30a. However, in the network 30b, each link Lb has a different service characteristic, and in the network 30a, each link La has the same service characteristic. Table XIII shows an exemplary set of service characteristics for each link Lb.
Figure 0004611319

表XIIIをより詳しく説明すると、列1は、問題とする特定のリンクLbを識別する。列2は、同じ行で識別されているリンクLbの帯域幅を識別する。列3は、特定のリンクLbを介してトラフィックを伝送するための金銭的コストをキロバイト当たり何セントかで指定する。(表XIIIは、ビット誤り率、待ち時間など、望ましいその他の任意のサービス特性も含むことができることをここで理解されたい)。したがって、各リンクLbについての情報は、各データベースDbの一部となることができ、ノード知識がネットワーク30bを介して伝播されるのとほぼ同じ方法で、方法200または適切なその変形を使用して、ネットワーク30bを介して伝播されることができる。   To explain Table XIII in more detail, column 1 identifies the particular link Lb in question. Column 2 identifies the bandwidth of link Lb identified in the same row. Column 3 specifies the monetary cost for transmitting traffic over a particular link Lb in cents per kilobyte. (It should be understood here that Table XIII can also include any other desired service characteristics, such as bit error rate, latency, etc.). Thus, information about each link Lb can be part of each database Db, using method 200 or a suitable variant thereof in much the same way that node knowledge is propagated through network 30b. And can be propagated through the network 30b.

各ノードNbに対応するデータベースDbは、それらが直接接続されている各リンクLbの詳細について知っている。例えば、ノードN4bは、表XIIIに示されるようなリンクL3bおよびL4bについての詳細を知っている。さらに、ノードN3bは、リンクL4bおよびL2bについての詳細を知っている。この実施形態では、各ノードNbは、それ自身と、ノードNbに直接接続するために有するリンクLbとについて知っているに過ぎない。しかし、各ノードNbは、全体的なネットワークトポロジについての何かを知る必要はない。   The database Db corresponding to each node Nb knows the details of each link Lb to which they are directly connected. For example, node N4b knows details about links L3b and L4b as shown in Table XIII. Furthermore, the node N3b knows details about the links L4b and L2b. In this embodiment, each node Nb only knows about itself and the link Lb it has to connect directly to the node Nb. However, each node Nb does not need to know anything about the overall network topology.

しかし、経路の一方の端のデータベースが経路の他方の端のノードについての知識をもつと、経路のそれぞれの端の各ノードNbに対応する各ノードNbのデータベースDbは、その経路を定義するリンクLbに関連する累積サービス特性について知る。したがって、ノードN4bがノードN1bについて一度知ると、ノードN4bは、ノードN4bとノードN1bの間のすべてのリンクLbの累積サービス特性(したがって、累積「コスト」)についても知る。   However, if the database at one end of the route has knowledge about the node at the other end of the route, the database Db of each node Nb corresponding to each node Nb at each end of the route will link to define the route. Learn about the cumulative service characteristics associated with Lb. Thus, once the node N4b knows about the node N1b, the node N4b also knows about the cumulative service characteristics (and hence the accumulated “cost”) of all the links Lb between the node N4b and the node N1b.

したがって、特定のノードNbが特定のリンクLbの特性についての情報を一度もつと、そのノードNbは、トラフィックをルーティングすべき最良ネクストステップとして「最良隣接ノード」を決定するために、そのような情報を使用することができる。例えば、表XIIIでは、リンクL3bの帯域幅はたった0.5メガビット/秒であり、一方、リンクL4bおよびリンクL2bの帯域幅は共に10メガビット/秒であることが理解できる。したがって、ノードN4bからノードN2bに送信されるペイロードトラフィックは、リンクL3bを介して直接送信されるよりも、ノードN3bを介して送信されるほうがはるかに高速にノードN2bに送り届けられる。   Thus, once a particular node Nb has information about the characteristics of a particular link Lb, that node Nb will use such information to determine the “best neighbor” as the best next step to route traffic. Can be used. For example, in Table XIII, it can be seen that the bandwidth of link L3b is only 0.5 megabits / second, while the bandwidth of link L4b and link L2b are both 10 megabits / second. Accordingly, payload traffic transmitted from the node N4b to the node N2b is delivered to the node N2b much faster when transmitted via the node N3b than directly transmitted via the link L3b.

したがって、表XIIIを使用すると、ノードN4bは、ペイロードトラフィックの送達速度が優先事項であるならば、ノードN3bがノードN2bおよびノードN1bに到達するための最良ネクストステップであると決定することができる。したがって、表XIVは、ノードN4bがそのような決定を行った場合、データベースDbの一部がどのようになるかを示している(表XIIIの情報は表XIVに示されないと仮定する)。

Figure 0004611319
Thus, using Table XIII, node N4b can determine that node N3b is the best next step to reach node N2b and node N1b if the delivery rate of payload traffic is a priority. Therefore, Table XIV shows what happens to part of database Db if node N4b makes such a determination (assuming that the information in Table XIII is not shown in Table XIV).
Figure 0004611319

さらに、図13は、表XIVに示されたデータベースD4bの内容に基づいた、ノードN4bからノードN1bに宛てて発信されるトラフィックについてのペイロードトラフィックの経路Pbを示している。図13では、経路Pbは、リンクL3bを介して進むのではなく、代わりにリンクL4bおよびリンクL2bを介して進む。トラフィックをルーティングすべき最良隣接ノードを決定するとき、複雑な多数の基準が利用され得ることをここで理解されたい。したがって、表XIVは、帯域幅、コスト、ビット誤り率などについてリンクLbのサービス特性を最適化するように入力されることができる。   Furthermore, FIG. 13 shows a path Pb of payload traffic for traffic transmitted from the node N4b to the node N1b based on the contents of the database D4b shown in Table XIV. In FIG. 13, the route Pb does not travel through the link L3b, but instead travels through the link L4b and the link L2b. It should be understood here that a number of complex criteria can be utilized when determining the best neighbor to route traffic to. Thus, Table XIV can be entered to optimize the service characteristics of link Lb for bandwidth, cost, bit error rate, and the like.

もちろん、最良隣接ノードが金銭的最低コストを有する最良ネクストステップに基づいて選択され、帯域幅をまったく無視する場合、表XIVは変化する。再び表XIIIを参照すると、この場合、リンクL3bはリンクL4bよりも金銭的に低コストなので、ノードN4bは、ノードN2bおよびノードN1bに到達するための最良ネクストステップとしてノードN2bを選択し、したがって、データベースD4bは、表XIIのデータベースD4aと同じになる。   Of course, if the best neighboring node is selected based on the best next step with the lowest monetary cost and table bandwidth is completely ignored, Table XIV will change. Referring again to Table XIII, since link L3b is financially less expensive than link L4b in this case, node N4b selects node N2b as the best next step to reach node N2b and node N1b, and therefore Database D4b is the same as database D4a in Table XII.

最良ネクストステップは、各リンクを評価する1組の複雑な基準に基づくことができ、例えば、リンクLbの全体的格付けは、表XIIIの列2と列3を組み合わせて決定され、帯域幅と金銭的コストの両方の組合せであるサービス特性の格付けを特定のリンクに提供することができることをここで明らかにされたい。   The best next step can be based on a set of complex criteria that evaluate each link, for example, the overall rating of link Lb is determined by combining column 2 and column 3 of Table XIII, and bandwidth and money It should be made clear here that a rating of a service characteristic that is a combination of both cost-effective can be provided for a particular link.

本明細書の教示は、ネットワーク30、30a、および30bよりも複雑なネットワークにも適用可能であることが再び強調されるべきである。例えば、ここで図14を参照すると、本発明の別の実施形態によるより複雑なネットワークが、全体として30cで示されている。ネットワーク30cは、ネットワーク30、30a、および30bと同じタイプの要素を含み、同様の要素には、接尾辞「c」が付される以外は同様の参照符号が与えられている。留意すべきは、この実施形態では、すべてのリンクLcは、実質的に同じ長さと実質的に同じサービス特性を有すると仮定されるが、他の実施形態では、リンクLcは、リンクLbと同様に、異なる長さおよびサービス特性を有することができる。ネットワーク30cは、より多くのノードNcおよびリンクLcを含むが、説明を簡略にするため、ネットワーク30cは、データベースDcの内容を示す具体的な表を伴わずに示されている。   It should be emphasized again that the teachings herein are applicable to networks that are more complex than networks 30, 30a, and 30b. For example, referring now to FIG. 14, a more complex network according to another embodiment of the present invention is indicated generally at 30c. Network 30c includes elements of the same type as networks 30, 30a, and 30b, and similar elements are given similar reference signs except that they are suffixed with "c". It should be noted that in this embodiment, all links Lc are assumed to have substantially the same length and substantially the same service characteristics, but in other embodiments, link Lc is similar to link Lb. Can have different lengths and service characteristics. The network 30c includes more nodes Nc and links Lc, but for the sake of simplicity, the network 30c is shown without a specific table showing the contents of the database Dc.

しかし、ネットワーク30、30a、および30bとは対照的に、ネットワーク30cでは、個々のデータベースDcによって消費される各ノードNcのメモリ資源に上限を設けるため、データベースDcは限られた数の行しかもたないことが仮定される。したがって、このネットワーク30cでは、各ノードは、ネットワーク30c全体についての知識を保持せず、ネットワーク30cの一部だけの知識を保持する。(ネットワーク全体の知識が、与えられたノードのコンピューティング資源全体を非現実的なほど大きく消費するような規模のネットワークに本明細書の教示が適用される場合、実際にそのような構成が現在では好ましい)。説明を分かりやすくするため、各データベースDcは、11行の情報を保存できることが仮定される。第1行は、表IIに関連して先に説明されたヌル行であり、そのデータベースDcが属するノードNcを識別する。残りの9行は、データベースDcが、ネットワーク30c内のその他の9個のノードNcについての知識を保持することを可能にする。   However, in contrast to the networks 30, 30a and 30b, in the network 30c, the database Dc has a limited number of rows because it places an upper limit on the memory resources of each node Nc consumed by the individual database Dc. It is assumed that there is no. Accordingly, in this network 30c, each node does not hold knowledge about the entire network 30c, but holds knowledge of only a part of the network 30c. (If the teachings herein apply to a network of a scale where knowledge of the entire network consumes the entire computing resource of a given node unrealistically, such a configuration is actually Is preferable). For ease of explanation, it is assumed that each database Dc can store 11 lines of information. The first row is the null row described above in connection with Table II and identifies the node Nc to which the database Dc belongs. The remaining nine rows allow database Dc to hold knowledge about the other nine nodes Nc in network 30c.

各ノードNcは同じ記憶容量をもつ必要はなく、そのような容量は固定される必要もなく、特定のノードNcでの需要が変化したのに応じて、自動的または手動により動的に割り当てられることができるが、説明の目的で、ネットワーク30c内のノードNcは、他のノード9個を限度として構成されることに留意されたい。   Each node Nc need not have the same storage capacity, such capacity does not need to be fixed, and is dynamically allocated automatically or manually as demand on a particular node Nc changes. However, it should be noted that for purposes of explanation, a node Nc in the network 30c is configured with a limit of nine other nodes.

各ノードNcのデータベースDcは、「コア」という概念を保持する。特定のノードNcが特定のデータベースDcに含まれていない場合、そちらに進めばその与えられたノードNcを見つけることができるデフォルト経路を、コアが表す。図14に示されるように、ネットワーク30cは、リンクL6cに沿って存在するコアCcを含み、その詳細が以下でより詳しく説明される。一般に、コアCcを定義するデータベースDcがネットワーク30c内のあらゆるノードNcについての知識を有するよう保証するのに十分なだけ、少なくともコアCcを含むデータベースDcの集約記憶容量があるように保証することが現在では好ましい。したがって、ネットワーク30cのアーキテクチャに基づいたネットワークのサイズは、コアCcを定義する2つのノードNcの集約記憶容量で間に合うサイズである。したがって、この例では、データベースD6cおよびD9c各々の9つの行がネットワーク30c内のあらゆるノードNcについての知識を保持するのに十分なように、ノードN6cとノードN9cは集団で十分な容量を有する。   The database Dc of each node Nc holds the concept of “core”. If a particular node Nc is not included in a particular database Dc, the core represents a default path through which you can find the given node Nc. As shown in FIG. 14, network 30c includes a core Cc that exists along link L6c, the details of which are described in more detail below. In general, ensuring that there is at least the aggregate storage capacity of the database Dc that includes the core Cc, sufficient to ensure that the database Dc that defines the core Cc has knowledge of every node Nc in the network 30c. Currently preferred. Therefore, the size of the network based on the architecture of the network 30c is a size that is in time for the aggregate storage capacity of the two nodes Nc that define the core Cc. Thus, in this example, node N6c and node N9c have sufficient capacity in a cluster so that nine rows of each of databases D6c and D9c are sufficient to hold knowledge about every node Nc in network 30c.

したがって、各ノードNcは、方法200を実行するとき、そのノードNcが保存するより多くの他のノードNcの「消息を聞く」。したがって、各ノードNcは、そのデータベースDc内に他のノードNcについての知識を保持するために、ネットワーク30c内の他のノードNcから9つを選択する優先順位付け動作を実行するようにも動作可能である。そのような優先順位付け動作は、他のノードNcのどれが最も近いか、他のノードNcのどれが最も大量のトラフィックを伝送するか、そのノードは一般に他のノードNcのどれにペイロードトラフィックを送信するかなどや、当業者に思い浮かぶであろうその他の基準など、任意の1つもしくは複数の優先順位付け基準またはそれらの組合せに基づくことができる。したがって、そのような優先順位付け基準は、重要性の順位における各ノードNcの「ランク」を提供し、それによって、データベースDcに入力される順位、およびノード知識がネットワーク内の他のノードNcに送信されるべき順位を定める。   Thus, each node Nc “listens” for more other nodes Nc than the node Nc stores when executing the method 200. Thus, each node Nc also operates to perform a prioritization operation that selects nine from the other nodes Nc in the network 30c in order to retain knowledge about the other nodes Nc in its database Dc. Is possible. Such a prioritization operation may determine which of the other nodes Nc is the closest, which of the other nodes Nc carries the most traffic, and which node generally sends the payload traffic to which of the other nodes Nc. It can be based on any one or more prioritization criteria or combinations thereof, such as whether to transmit or other criteria that would occur to those skilled in the art. Thus, such prioritization criteria provide the “rank” of each node Nc in importance ranking, whereby the ranking entered in the database Dc, and node knowledge to other nodes Nc in the network. Determine the order in which to be sent.

この例では、各ノードNcのための優先順位付け基準は、以下の知識を保持するため順序付けてそのデータベースDcに入力するためのものであると仮定される。
(a)そのノードNcに最も近い他のノードNc(「近接ノードNc」)。近接ノードNcは、近接性の順序でランク付けされる。
(b)発信または宛先ノードNcのためにペイロードトラフィックを受け渡すため、ノードNcがそれらについての知識をもたなければならない発信または宛先ノードNc(「発信または宛先ノードNc」)。発信または宛先ノードNcは、それらのために伝送されるペイロードトラフィック量に従ってランク付けされ、近接ノードより優先される。
(c)そのノードNcがペイロードトラフィックをそれとの間で送信または受信する他のノードNc(「ペイロードトラフィックノードNc」)。ペイロードトラフィックノードNcは、別のペイロードトラフィックと比べたあるペイロードトラフィックの重要性に従ってランク付けされ、すべての近接ノードより優先され、最大で半分の発信または宛先ノードNcより優先される。ペイロードトラフィックの重要性は、トラフィック量またはトラフィック速度などに基づくことができる。
(d)方法200の特定のサイクル中における最大9個までの他のノードNc。
In this example, the prioritization criteria for each node Nc is assumed to be ordered and entered into its database Dc to retain the following knowledge.
(A) Another node Nc closest to the node Nc (“proximity node Nc”). The neighboring nodes Nc are ranked in the order of proximity.
(B) An originating or destination node Nc ("originating or destination node Nc") that the node Nc must have knowledge of in order to pass payload traffic for the originating or destination node Nc. Originating or destination nodes Nc are ranked according to the amount of payload traffic transmitted for them and are preferred over neighboring nodes.
(C) Another node Nc with which the node Nc sends or receives payload traffic (“payload traffic node Nc”). Payload traffic nodes Nc are ranked according to the importance of one payload traffic compared to another payload traffic, and take precedence over all neighboring nodes and up to half the originating or destination node Nc. The importance of payload traffic can be based on traffic volume or traffic speed.
(D) Up to nine other nodes Nc during a particular cycle of method 200.

上述の優先順位付け基準は本発明を説明する目的で簡略化されていることを繰り返しておくべきであろう。別の現在より好ましい実施形態では、ノードは、以下の場合を除いて、標識付けされたデータストリーム値に基づくそれらの距離によって順位付けられる。
1.このノードが、この宛先ノードのための高速伝播経路(「HSPP」、以下でより詳しく説明される)の経路内にあり、この直接接続ノードが、
コアへの経路内にあり、HSPPが通知HSPPである場合、
このHSPPについて我々に伝えたノードの1つであり、HSPPが要求HSPPである場合。
2.このノードが、この宛先ノードに向うデータストリーム内として標識付けされている場合。
ノードは、データストリーム内として標識付けされている場合、それをデータストリーム内として標識付けしていないその直接接続ノードには、0のデータストリームに基づく距離(本明細書ではストリームに基づく距離または「DFS」とも呼ばれる)を伝える。ノードは、それをデータストリーム内として標識付けしている直接接続ノードには、宛先ノードへのリンクのサービス特性に関連するリンクコスト(「LC」)に等しいDFSを伝える。これは、以下でより詳しく説明される。
It should be reiterated that the prioritization criteria described above have been simplified for purposes of illustrating the present invention. In another currently preferred embodiment, the nodes are ranked by their distance based on the labeled data stream values except as follows.
1. This node is in the path of a high-speed propagation path for this destination node (“HSPP”, described in more detail below), and this directly connected node is
If in the path to the core and the HSPP is a notification HSPP,
One of the nodes that told us about this HSPP and the HSPP is the requesting HSPP.
2. If this node is marked as in the data stream towards this destination node.
If a node is labeled as in a data stream, its directly connected nodes that do not mark it as in the data stream will be given a distance based on a zero data stream (herein a distance based on a stream or “ (Also called DFS)). The node conveys a DFS equal to the link cost (“LC”) associated with the service characteristics of the link to the destination node to the directly connected node marking it as in the data stream. This is explained in more detail below.

ネットワーク30c内のコアCcの形成が今から説明される。ネットワーク30cでは、図14に示されるように、ノードN2cからN13cがリンクL1cからL11cによって接続されていることが最初に仮定される。ノードN1cおよびノードN14cは、ネットワーク30cの残りの部分に最初は接続されていないことも仮定される。   The formation of the core Cc in the network 30c will now be described. In the network 30c, it is first assumed that nodes N2c to N13c are connected by links L1c to L11c, as shown in FIG. It is also assumed that node N1c and node N14c are not initially connected to the rest of network 30c.

最初はどのノードNcも別のノードNcにペイロードトラフィックを送信しようと試みておらず、方法200がノードN2cからN13cの各々によって実行されて、それらの個々のデータベースDcが上で説明された優先順位付け基準に従って入力されていることも仮定される。図15は、閉じられた破線の図として示され、本明細書で知識経路ブロックK2c−xcと呼ばれる、データベースD2cに入力される他のノードNcを示している。知識経路ブロックK2c−xcは、ノードN2cが認識している他のノードNcのすべて、すなわち、ノードN3c〜N10c、およびノードN12cを取り囲む。図16は、閉じられた破線の図として示され、本明細書で知識経路ブロックK6c−xcと呼ばれる、データベースD6cに入力される他のノードNcを示している。知識経路ブロックK6c−xcは、ノードN6cが認識している他のノードNcのすべて、すなわち、ノードN2c〜N5c、ノードN7c〜N10c、およびノードN12cを取り囲む。図には示されていないが、当業者であれば、この例のこの時点におけるその他のデータベースDcの内容も理解されよう。   Initially no node Nc is attempting to send payload traffic to another node Nc, and method 200 is performed by each of nodes N2c to N13c, and their individual databases Dc are prioritized as described above. It is also assumed that they are entered according to the attached criteria. FIG. 15 shows another node Nc input to the database D2c, shown as a closed dashed diagram, referred to herein as the knowledge path block K2c-xc. The knowledge path block K2c-xc surrounds all the other nodes Nc recognized by the node N2c, that is, the nodes N3c to N10c and the node N12c. FIG. 16 shows another node Nc input to the database D6c, shown as a closed dashed diagram, referred to herein as the knowledge path block K6c-xc. Knowledge path block K6c-xc surrounds all other nodes Nc recognized by node N6c, that is, nodes N2c to N5c, nodes N7c to N10c, and node N12c. Although not shown in the figure, those skilled in the art will appreciate the contents of other databases Dc at this point in this example.

ここで、ノードN2c〜N7cのいずれかとノードN8c〜N13cのいずれかの間のペイロードトラフィックは、リンクL6cを通過する必要があることに言及しておくのも有益である。したがって、このネットワークでは、リンクL6cが、この例のこの時点におけるネットワーク30cの「コア」を表す。図14では、コアは、リンクL6cを取り囲む楕円として示されており、Ccで指示されている。リンクL6cが特にネットワーク30cのコアCcであるという事実は、各データベースDcで明白に保持される必要はない。むしろ、各データベースDcは、コアCcに到達するための最良ネクストステップである隣接ノードを示す「最良隣接ノード」を決定する。コアCcに到達するための「最良隣接ノード」は、データベースDcを検査して、データベースDcで明白に保持されている他のノードに到達するための「最良隣接ノード」としてどの隣接ノードNcが最も頻繁に参照されたかを見出すことによって決定されることができる。どの隣接ノードNcも最良隣接ノードとして最も頻繁には出現しない場合、最高ランクを付けられた他のノードに関連する行1に出現する最良隣接ノードが、コアに到達するための最良隣接ノードとして選択されることができる。2つの隣接ノードNcが、コアに到達するための最良隣接ノードとして互いを指示し合うとき、コアが形成される。   Here, it is also useful to mention that payload traffic between any of nodes N2c-N7c and any of nodes N8c-N13c needs to pass through link L6c. Thus, in this network, link L6c represents the “core” of network 30c at this point in the example. In FIG. 14, the core is shown as an ellipse surrounding the link L6c, and is indicated by Cc. The fact that the link L6c is in particular the core Cc of the network 30c need not be explicitly maintained in each database Dc. Rather, each database Dc determines a “best neighbor” that indicates the neighbor that is the best next step to reach the core Cc. The “best neighbor” to reach the core Cc examines the database Dc, and which neighbor Nc is the most “best neighbor” to reach other nodes that are explicitly held in the database Dc. It can be determined by finding frequently referenced. If no adjacent node Nc appears most frequently as the best adjacent node, the best adjacent node appearing in row 1 associated with the other highest ranked node is selected as the best adjacent node to reach the core Can be done. A core is formed when two adjacent nodes Nc indicate each other as the best adjacent nodes to reach the core.

(このコア決定方法を先の例に適用すると、表XIIおよび図11において、ノードN1aにとってネットワーク30aのコアへの最良隣接ノードはノードN2aとなり、ノードN2aにとってネットワーク30aのコアへの最良隣接ノードはノードN3aとなり、ノードN3aにとってネットワーク30aのコアへの最良隣接ノードはノードN2aとなり、ノードN4aにとってネットワーク30aのコアへの最良隣接ノードはノードN2aとなることを思い出されたい。ノードN2aはノードN3aを指示し、ノードN3aはノードN2aを指示しているので、リンクL2aがネットワーク30aの「コア」である。)   (When this core determination method is applied to the previous example, in Table XII and FIG. 11, for node N1a, the best neighbor node to the core of network 30a is node N2a, and for node N2a, the best neighbor node to the core of network 30a is Recall that node N3a, for node N3a, the best neighbor to the core of network 30a is node N2a, and for node N4a, the best neighbor to the core of network 30a is node N2a. Since the node N3a indicates the node N2a, the link L2a is the “core” of the network 30a.

ネットワーク30cなどのネットワークが最初に初期化されるとき、方法200が十分な回数実行されて、データベースDcに入力が行われ、データベースDcが実質的に安定な状態を保持するようになるまで、複数のコアが形成されることをここで明らかにされたい。また、ノードNcが追加もしくは削除されると、またはリンクLcが追加もしくは削除されると(かつ/またはネットワークの全体的な状態に影響を与えるその他の要因が変化すると)、コアCcの位置は変化することができ、かつ/または複数のコアが形成され得る。   When a network, such as network 30c, is first initialized, the method 200 is performed a sufficient number of times until input is made to the database Dc until the database Dc remains substantially stable. It should be clarified here that the core of this is formed. Also, when the node Nc is added or deleted, or when the link Lc is added or deleted (and / or other factors that affect the overall state of the network change), the position of the core Cc changes. And / or multiple cores may be formed.

図14〜図16に示された例に基づきながら、ここで図17を参照すると、2つの新しいリンクがネットワーク30cに追加されることが仮定されている。具体的には、リンクL12cが、今ではノードN1cおよびN2cに加わり、リンクL13cが、今ではノードN13cおよびN14cに加わっている。方法200がノードN1cおよびN14cによって実行され、残りのノードNcによって再実行されても、ネットワーク30cのこの特定の構成では、リンクL6cにあるコアCcの場所は最終的に変化しない。しかし、各データベースDcの内容は、上述された優先順位付け基準に従って変化することもある。例えば、ノードN2cは、ノードN1cをデータベースD2cに追加し、ノードN12cをデータベースD2cから削除する。   Based on the examples shown in FIGS. 14-16, referring now to FIG. 17, it is assumed that two new links are added to the network 30c. Specifically, link L12c is now joined to nodes N1c and N2c, and link L13c is now joined to nodes N13c and N14c. Even if method 200 is performed by nodes N1c and N14c and re-executed by the remaining nodes Nc, in this particular configuration of network 30c, the location of core Cc at link L6c does not change eventually. However, the contents of each database Dc may change according to the prioritization criteria described above. For example, the node N2c adds the node N1c to the database D2c and deletes the node N12c from the database D2c.

また留意すべきことに、ノードN1cは、データベースD1cにノードN2c〜N10cについての知識を入力し、ノードN14cは、データベースD14cにノードN5c〜N13cについての知識を入力する。したがって、ノードN1cとノードN14cは、互いについての知識をもたない。ここで、ノードN1cが、ノードN14cにペイロードトラフィックを送信することを望んでいると仮定する。   It should also be noted that the node N1c inputs knowledge about the nodes N2c to N10c to the database D1c, and the node N14c inputs knowledge about the nodes N5c to N13c to the database D14c. Therefore, the node N1c and the node N14c do not have knowledge about each other. Now assume that node N1c wants to send payload traffic to node N14c.

ノードN1cは、ノードN14cについての知識をもたないので、この時点で、そのような知識を獲得するために、図18に示される方法800を実行することができる。ステップ810から開始して、発信ノードN1cは、宛先ノードN14cにペイロードトラフィックを送信するよう求めるリクエストを受け取る。そのようなリクエストは、発信ノードN1cに関連するコンピューティング環境上で動作する別のアプリケーションから来ることができる。   Since node N1c has no knowledge of node N14c, at this point, method 800 shown in FIG. 18 may be performed to obtain such knowledge. Beginning at step 810, originating node N1c receives a request to send payload traffic to destination node N14c. Such a request can come from another application running on the computing environment associated with originating node N1c.

(余談だが、本明細書のさらなる教示からより明白になるように、この方法全体をより話し言葉風に翻訳すると、隣接ノードに送信されるリクエストは、「あなたに私の宛先ノード用の経路情報が見えるなら、どこにペイロードデータを送信すべきか適切な選択を私が行えるように、その情報について教えていただけませんか」という形をとることができる。ノードは、送信すべきペイロードをもっているのに、それを送信すべき場所が分からない場合、(タイムアウトが設定されているなら)ペイロードがタイムアウトになるか、またはその他のパケットのためにその領域が必要になるか、または直接接続ノードへのルーティングを可能にする経路更新を教えられるかするまで、そのペイロードをもち続ける。)   (As an aside, as will become more apparent from the further teachings of this specification, translating this entire method more spokenly, the request sent to the adjacent node is: "You will receive route information for my destination node. If you can see, can you tell me about that information so that I can make the right choice where to send the payload data? " If you don't know where to send it, the payload times out (if a timeout is set), or that space is needed for other packets, or you can route to the directly connected node Continue to have that payload until you are informed of the possible route updates.)

次にステップ820で、ペイロードトラフィックが宛てられた宛先ノードがローカルデータベースDc内に見つかるかどうかの判定が行われる。この例では、データベースD1cは宛先ノードN14cについての情報を含まず、そのため、この判定の結果は「No」であり、方法800はステップ820からステップ830に進むことを思い出されたい。(しかし、宛先ノードがデータベースD1cに存在する場合は、ステップ830で、ペイロードトラフィックは、データベースで識別された最良隣接ノードを介して、図12のネットワーク30aまたは図13のネットワーク30bに関連して説明されたのとほぼ同じ方法で送信されることができる。)   Next, in step 820, a determination is made whether the destination node to which the payload traffic is addressed is found in the local database Dc. Recall that in this example, database D1c does not contain information about destination node N14c, so the result of this determination is “No” and method 800 proceeds from step 820 to step 830. (However, if the destination node is present in the database D1c, in step 830, the payload traffic is described in relation to the network 30a of FIG. 12 or the network 30b of FIG. 13 via the best neighboring node identified in the database. Can be sent in much the same way as was done.)

次にステップ830で、宛先ノードN14cについての知識を求めて、コアに対して問合せが送信される。そのような問合せは、問合せが宛先ノードN14cについての知識をもったノードNcに到達するまで、コアCcに到るための「最良隣接ノード」の経路に沿って、各最良隣接ノードによって、コアCcに向って受け渡されていく。したがって、各ノードNcは、問合せを受信し、それ自身のデータベースDcを検査し、宛先ノードN14cについての知識をもつ場合は、そのような知識を発信ノードN1cにこれまでの経路を逆向きに送信する。問合せを受信したノードNcが宛先ノードN14cについての知識をもたない場合、ノードNcは、問合せが宛先ノードN14cについての知識をもつノードNcに到達するまで、コアCcに到るための最良隣接ノードである隣接ノードに問合せを受け渡していく。この例では、上で定められた優先順位付け基準によれば、ノードN9cがノードN14cについての知識をもっているので、ノードN1cからの問合せは、ノードN2cからノードN3c、ノードN6c、そして最後にノードN9cに到るための経路を辿る。したがって、ノードN14cについての知識は、逆向きにノードN6c、ノードN3c、ノードN2cを介して最終的にノードN1cに受け渡され、ノードN6c、N3c、N2cは各々、ノードN1cのためにペイロードトラフィックを送ることができるように、それら個々のデータベースDcに、ノードN14cについての知識の記録を保持する。   Next, at step 830, an inquiry is sent to the core for knowledge about the destination node N14c. Such a query is sent by each best neighbor node along the path of “best neighbor node” to reach core Cc until the query reaches node Nc with knowledge of destination node N14c. It is handed over to. Thus, each node Nc receives the query, checks its own database Dc, and if it has knowledge about the destination node N14c, sends such knowledge to the source node N1c in the reverse direction. To do. If the node Nc that received the query does not have knowledge of the destination node N14c, the node Nc is the best neighbor to reach the core Cc until the query reaches a node Nc that has knowledge of the destination node N14c The query is passed to the adjacent node. In this example, according to the prioritization criteria defined above, since node N9c has knowledge of node N14c, the query from node N1c is sent from node N2c to node N3c, node N6c, and finally node N9c. Follow the path to get to. Therefore, the knowledge about the node N14c is finally passed to the node N1c through the nodes N6c, N3c, and N2c in the reverse direction, and the nodes N6c, N3c, and N2c each transfer payload traffic for the node N1c. Records of knowledge about node N14c are kept in their respective databases Dc so that they can be sent.

次にステップ840で、ステップ830で生成された問合せに対するレスポンスが、最終的に発信ノードNcによって受信される。したがって、この例では、ノードN1cが、ノードN9cからのノードN14cについての知識を受信し、ステップ850で、ノードN1cは、ノードN14cについての知識でそのデータベースD1cを更新する。その後、方法800は、ステップ850からステップ830に進み、ペイロードトラフィックが、ノードN1cからノードN14cに、図12のネットワーク30aまたは図13のネットワーク30bに関連して説明されたのとほぼ同じ方法で送信されることができる。   Next, at step 840, a response to the query generated at step 830 is finally received by the originating node Nc. Thus, in this example, node N1c receives knowledge about node N14c from node N9c, and at step 850, node N1c updates its database D1c with knowledge about node N14c. The method 800 then proceeds from step 850 to step 830 where payload traffic is transmitted from the node N1c to the node N14c in substantially the same manner as described in connection with the network 30a of FIG. 12 or the network 30b of FIG. Can be done.

図17に示された例に基づきながら、ここで図19を参照すると、3つの新しいリンクがネットワーク30cに追加されることが仮定されている。具体的には、リンクL14cが、ノードN12cとノードN8cに加わり、リンクL15cが、ノードN8cとノードN5cの間に加わり、リンクL16cが、ノードN5cとノードN2cの間に加わっている。各ノードNcは、これらの新しいリンクLcについての知識を吸収するために、方法200を複数回実行する。そのような知識は、ネットワーク30c全体に伝播し、最終的に、ノードN1cからノードN14cへのペイロードトラフィックの経路は、ノードN2c、N5c、N8c、N12c、およびN13cを介して進行する。   Referring now to FIG. 19, based on the example shown in FIG. 17, it is assumed that three new links are added to the network 30c. Specifically, the link L14c is added to the node N12c and the node N8c, the link L15c is added between the node N8c and the node N5c, and the link L16c is added between the node N5c and the node N2c. Each node Nc performs the method 200 multiple times in order to absorb knowledge about these new links Lc. Such knowledge propagates throughout the network 30c and eventually the path of payload traffic from node N1c to node N14c proceeds through nodes N2c, N5c, N8c, N12c, and N13c.

ノードN1cおよびN14cが互いについての知識を獲得する前に、リンクL14c、L15c、およびL16cが存在していた場合、ノードN1cは、図17および図18に関連して説明されたように、最初にコアCcを介してノードN14cについての知識を獲得し、その後、最適経路(すなわち、最良隣接ノードを介した最小ホップ数をもつ経路)が、図19に示された例に収束することをここで理解されたい。   If the links L14c, L15c, and L16c existed before the nodes N1c and N14c gained knowledge about each other, the node N1c is first configured as described in connection with FIGS. Now that knowledge about node N 14c is acquired via core Cc, then the optimal path (ie, the path with the minimum number of hops via the best neighbor) converges to the example shown in FIG. I want you to understand.

方法800は、発信ノードによって知られていない宛先ノードNcについての知識をコアCcから「プルする(pull)」ことに関するが、新しい宛先ノードNcがネットワーク30cに加わる場合、そのノードNcは、それ自身についての知識をコアCcのノードに「プッシュする(push)」こともでき、その結果、方法800が実行されたときに、発信ノードNcは、新しい宛先ノードNcについての情報をコアCcにおいて確実に見出すことができる。図14に与えられた例では、コアCcのノードN9cがノードN14cについての知識を獲得することを自動的に保証する実行基準によって、そのような知識の「プッシュ」は必要とされなかった。しかし、ネットワーク30cのその他の構成では、コアCcにおけるノードNcについての知識の「プッシュ」が望ましいこともある。   Method 800 relates to “pulling” knowledge about destination node Nc that is not known by the originating node from core Cc, but if a new destination node Nc joins network 30c, that node Nc Can be “pushed” to the node of the core Cc so that when the method 800 is executed, the originating node Nc ensures that the information about the new destination node Nc is in the core Cc. Can be found. In the example given in FIG. 14, such a “push” of knowledge was not required by the execution criteria that automatically ensured that node N9c of core Cc gained knowledge about node N14c. However, in other configurations of the network 30c, a “push” of knowledge about the node Nc in the core Cc may be desirable.

本発明の様々な特徴および構成要素の特定の組合せだけが本明細書で説明されたが、開示された特徴および構成要素の所望の一部分、および/またはこれらの特徴および構成要素の代替的な組合せが、必要に応じて利用され得ることは、当業者には明らかであろう。例えば、上述の説明は、各ノードN(およびその変形)による方法200の実質的な同期実行を企図しているが、そのような同期実行は必ずしも必要ではなく、説明を簡略化するために使用されたに過ぎないことを理解されたい。   Although only certain combinations of the various features and components of the present invention have been described herein, the desired portions of the disclosed features and components and / or alternative combinations of these features and components However, it will be apparent to those skilled in the art that it can be utilized as needed. For example, although the above description contemplates a substantially synchronized execution of method 200 by each node N (and variations thereof), such a synchronized execution is not necessary and is used to simplify the description. Please understand that it was only done.

別の変形として、各ノードN(およびその変形)は、隣接ノードN(およびその変形)がデータベースDに保存される最良隣接ノードとして選択されないとしても、隣接ノードN(およびその変形)によってノードN(およびその変形)に送信されたすべての情報の独立した記録を保持することもできる。これは、最良隣接ノードが削除された場合、ノードNが、方法200を再実行することなく、残りの隣接ノードNから次の最良隣接ノードを選択することを可能にし、さもなければ、他の残りのすべての隣接ノードからの更新情報を待たなければならない。   As another variant, each node N (and its variants) is not selected by the neighboring node N (and variants), even though the neighboring node N (and variants) is not selected as the best neighbor stored in the database D. It is also possible to keep an independent record of all information sent (and variants thereof). This allows node N to select the next best neighbor from the remaining neighbors N without re-running method 200 if the best neighbor is deleted, otherwise It must wait for update information from all remaining neighbors.

したがって、本発明は、ネットワーキングのための新規なシステム、方法、および装置を提供する。   Accordingly, the present invention provides a novel system, method and apparatus for networking.

本発明のさらに別の実施形態が企図され、これらの実施形態のいくつか再検討は、本発明のさらなる理解をもたらす。以下に示される実施形態では、いくつかの用語または概念が、これまでのセクションのものとはいくぶん異なることがある。そのような相違は、これまでの実施形態に対する代替および/または補足と考えられたい。   Still other embodiments of the invention are contemplated, and a review of some of these embodiments will provide a further understanding of the invention. In the embodiments shown below, some terms or concepts may be somewhat different from those in previous sections. Such differences should be considered as an alternative and / or supplement to previous embodiments.

一般に、本発明のネットワークアーキテクチャは、ネットワーク内の個々のノードが、それらの動作を調整し、その結果、それらの動作の総和が、ネットワーク内のノード間の通信を可能にすることを可能にする。   In general, the network architecture of the present invention allows individual nodes in a network to coordinate their operations, so that the sum of their operations allows communication between the nodes in the network. .

無線環境ネットワークで使用される既存のアドホックネットワークの主な制限は、数百ノードを超えて規模を拡張する能力であるが、本発明のネットワークアーキテクチャおよび関連方法は、従来技術の拡張性問題を少なくとも緩和し、ある状況ではそれらを克服する。   Although the main limitation of existing ad hoc networks used in wireless environment networks is the ability to scale beyond hundreds of nodes, the network architecture and related methods of the present invention at least overcome the scalability problems of the prior art. Relax and overcome them in some situations.

したがって、例示的な実施形態が、理解を明瞭にするために以下に示される。これらの例は、数、他の業者のソフトウェア、またはその他の詳細について具体的な言及がなされる場合でも、本明細書で説明される方法およびシステムの一般性を限定することを意図していない。2以上の合体された概念が、別々に実施可能であり、または別々に役立ち得る場合、そのように明示的に説明されていなくても、当業者にはそれが理解できるであろう。代替実施形態は、具体的に述べられていない限り、相互に排他的であると見なされるべきではない。   Accordingly, exemplary embodiments are set forth below for clarity of understanding. These examples are not intended to limit the generality of the methods and systems described herein, even if specific reference is made to numbers, other vendor software, or other details. . If two or more combined concepts can be implemented separately or can be useful separately, those skilled in the art will understand even if not explicitly described as such. Alternative embodiments should not be considered mutually exclusive unless specifically stated.

以下の実施形態では、以下の用語が使用される。   In the following embodiments, the following terms are used.

ノード
ネットワーク内の各ノードは、リンクを介して1つまたは複数の他のノードに直接接続される。ノードは、コンピュータ、ネットワークアダプタ、スイッチ、無線アクセスポイントとすることができ、またはメモリを含み、データ処理能力を備える任意の装置とすることができる。しかし、ノードの形態は特に限定されない。
Each node in the node network is directly connected to one or more other nodes via a link. A node can be a computer, a network adapter, a switch, a wireless access point, or any device that includes memory and has data processing capabilities. However, the form of the node is not particularly limited.

リンク
リンクは、情報を伝送することが可能な、2つのノード間のコネクションである。2つのノード間のリンクは、一緒に「結合」されたいくつかの異なるリンクとすることができる。リンクは、(ワイヤなど)物理的とすることができ、(ボックス、小型装置、液体などの)実際の物理的品目、コンピュータバス、無線、マイクロ波、光、量子相互作用、音響などとすることができる。リンクは、一連の様々なタイプの別個のリンクとすることができる。しかし、リンクの形態は特に限定されない。
A link link is a connection between two nodes capable of transmitting information. The link between two nodes can be a number of different links that are “coupled” together. The link can be physical (such as wire), actual physical item (such as box, small device, liquid), computer bus, radio, microwave, light, quantum interaction, acoustic, etc. Can do. The link can be a series of different types of separate links. However, the form of the link is not particularly limited.

リンクコストの計算
「リンクコスト」は、2以上のリンク間の比較を可能にする値である。この文書では、「リンクコスト」が低いほど、より良いリンクであるとする。これは標準的なアプローチであり、当業者であれば可能な変形を知っているであろう。
Calculation of link cost “Link cost” is a value that enables comparison between two or more links. In this document, the lower the “link cost”, the better the link. This is a standard approach and those skilled in the art will be aware of possible variations.

リンクコストは、リンクの品質を記述するのに使用される値である。リンクのリンクコストは、
1.回線品質
2.動作可能時間
3.リンク整合性
4.待ち時間
5.帯域幅
6.信号対雑音比
7.ノードの残存バッテリ電力
に基づくことができる(ただし、それらに限定されない)。
Link cost is a value used to describe the quality of a link. The link cost of a link is
1. Line quality 2. Operation possible time 3. Link consistency 4. Waiting time Bandwidth 6. Signal to noise ratio It can be based on (but not limited to) the remaining battery power of the node.

リンクコストは、それが基づく要因が変化するにつれ、時間とともに変化することができる。   Link costs can change over time as the factors on which they are based change.

当業者であれば、リンクコストを割り当てること、または動的発見メカニズムを作成することができよう。   One skilled in the art could assign a link cost or create a dynamic discovery mechanism.

リンクコストの割り当ては、ネットワーク全体にわたって一貫性のあることが推奨される。例えば、ネットワークの異なる部分の2つの同一のリンクは、同じまたは類似したリンクコストを有するべきである。   It is recommended that the link cost assignment be consistent across the network. For example, two identical links in different parts of the network should have the same or similar link costs.

パイプ(pipe)のリンクコストは、その品質に対してほぼ直接的な関係を有することが推奨される。例えば、1Mビットのパイプは、10Mビットのパイプの10倍のリンクコストを有する。これらのリンクコストは、ダイクストラ的アルゴリズムを使用して、ネットワークを介した最良経路を見つけるのに使用される。   It is recommended that the link cost of a pipe has an almost direct relationship to its quality. For example, a 1M bit pipe has 10 times the link cost of a 10M bit pipe. These link costs are used to find the best path through the network using Dijkstra's algorithm.

代替実施形態は、リンクコスト全体の(例えば)1%を超えない僅かなランダム量だけ、計算されたリンクコストをランダムに変化させることを含む。   Alternative embodiments include randomly varying the calculated link cost by a small random amount not exceeding (for example) 1% of the total link cost.

ノード名
ネットワーク内の各ノードは一意名を有する。
Node name Each node in the network has a unique name .

この一意名は、
1.ノードによって生成されることができる。
2.ノードの起動前に割り当てられることができる。
3.DHCP(動的ホスト構成プロトコル)サーバに結果的に類似した方法で、ノードによって中央ロケーションに要求されることができる。ノードがこの説明されたネットワークを使用して中央ロケーションに名前を要求する場合、ノードは最初、ランダムな一意名を選び、その名前を使用して中央ロケーションに名前を要求する。
This unique name is
1. Can be generated by a node.
2. Can be assigned before starting the node.
3. It can be requested by a node to a central location in a manner similar to a DHCP (Dynamic Host Configuration Protocol) server. When a node requests a name from a central location using this described network, the node first picks a random unique name and uses that name to request a name from the central location.

ノードは、その名前を永続的に保持することができ、または起動時もしくは所望の任意の時点で新しい名前を生成することができる。ノードAは、ノードBの名前を知っていれば、ノードBにメッセージを送信することができる。   A node can keep its name permanently, or it can generate a new name at startup or at any desired time. If node A knows the name of node B, it can send a message to node B.

ノードは、いくつかの異なるノードをエミュレートするために複数の名前を有することができる。例えば、ノードは、「プリントサーバ」および「ファイルサーバ」という2つの名前を有することができる。   Nodes can have multiple names to emulate several different nodes. For example, a node may have two names: “print server” and “file server”.

ノードは、それに対して確立された新しいコネクションごとに、新しい名前を生成することができる。   A node can generate a new name for each new connection established for it.

ポートはメッセージの宛先として説明されるが、これらの例におけるポートの使用は、本発明をポートの使用にのみ限定することを意図していない。当業者であれば、メッセージの宛先として使用され得るその他のメカニズムを知っていよう。例えば、ノードは、コネクションごとに、一意名を生成することができる。   Although ports are described as message destinations, the use of ports in these examples is not intended to limit the invention to the use of ports only. Those skilled in the art will be aware of other mechanisms that can be used as message destinations. For example, the node can generate a unique name for each connection.

通常、ノードは一意名を有するべきである。代替実施形態は、ノードが、ネットワーク内の1つまたは複数の別のノードと名前を共有することを可能にする。このことは後ほど詳しく説明される。   Normally, a node should have a unique name. Alternative embodiments allow a node to share a name with one or more other nodes in the network. This will be explained in detail later.

ノードが有する名前の数、ノードがどれほどの頻度で名前を追加もしくは削除するか、何という名前か、ノードが選択した1つまたは複数の名前について誰かに知らせるかに関して、発明者らによって暗示される制限は存在しない。   Implied by the inventors as to the number of names a node has, how often the node adds or deletes names, what the name is, and tells someone about the name or names selected by the node There are no restrictions.

この文書では明瞭さのため、各ノードは、それに関連する一意名を1つだけ有すると仮定する。このことが本発明の範囲を限定すると見なされるべきではない。ノードは、ネットワーク内の1つまたは複数の他のノードと同じ名前を共有することができる。   For clarity in this document, it is assumed that each node has only one unique name associated with it. This should not be considered as limiting the scope of the invention. A node can share the same name as one or more other nodes in the network.

ノード間のコネクションを確立する
リンクが2つのノード間に確立されることができ、これらのノードがリンクを確立することを望む場合、ノードは、そのコネクションを確立するため、いくつかの情報を交換する必要がある。この情報は、バージョン番号などを含むことができる。
A link that establishes a connection between nodes can be established between two nodes, and if these nodes want to establish a link, the nodes exchange some information to establish that connection There is a need to. This information can include a version number and the like.

代替実施形態は、「タイブレーカ」番号の交換を含むことができ、タイブレーカ番号は、その番号以外は等しいリンクの間で、ノードが選択を行うことを可能にする。すべての直接接続ノードに同じタイブレーカ値が与えられることが推奨される。ある他のノードからの等価のタイブレーカ番号をすでに見たことがあるとノードAがノードBに伝えた場合、ノードBは、新しいタイブレーカ番号を選び、その番号をすべての直接接続ノードに送信する必要がある。このプロセスは図20に示されている。   Alternative embodiments may include the exchange of “tie breaker” numbers, which allow nodes to make a selection between links that are otherwise equal. It is recommended that all directly connected nodes be given the same tiebreaker value. If Node A tells Node B that it has already seen an equivalent tiebreaker number from some other node, NodeB chooses a new tiebreaker number and sends that number to all directly connected nodes. There is a need to. This process is illustrated in FIG.

新しいタイブレーカ番号を求めるリクエストは、(例えば)以下のようにすることができる。
struct sRequestNewTieBreaker [

// This structure is empty, if the node sees this message it will
// generate a new tie breaker value and tell all its directly connected
// nodes this new value

]
A request for a new tiebreaker number can be (for example) as follows:
struct sRequestNewTieBreaker [

// This structure is empty, if the node sees this message it will
// generate a new tie breaker value and tell all its directly connected
// nodes this new value

]

代替実施形態は、このノードがそれについて知ることを望むノードの最大数を含むことができる。例えば、ノードAが限界のあるメモリを有する場合、ノードAは、最大でX個の異なるノードについてノードAに教えるようノードBに伝える。   Alternative embodiments may include the maximum number of nodes that this node wants to know about it. For example, if node A has limited memory, node A tells node B to teach node A about up to X different nodes.

代替実施形態は、コネクションを確立するのに使用されたリンクのリンクコストの交換を含むことができる。リンクコストがネットワークの動作中に変化した場合、ノードは、リンクの他端の直接接続ノードに、リンクコストが変化した旨のメッセージを送信することができる。リンクコストが交換される場合、ノードは同じリンクコストに同意することができ、または異なるリンクコストをそれまで通り選択して、非対称コネクションを示すこともできる。   Alternative embodiments can include exchanging the link cost of the link used to establish the connection. If the link cost changes during network operation, the node can send a message to the effect that the link cost has changed to the directly connected node at the other end of the link. If link costs are exchanged, the nodes can agree on the same link cost, or different link costs can still be selected to indicate an asymmetric connection.

これまでの3つの代替実施形態がすべて含まれる場合、交換されるメッセージは、(例えば)以下のようになる。
struct sIntroMessage [

// the number used to break ties
int uiTieBreakerNumber;

// the maximum number of destination nodes
// this node wants to know about.
int uiNodeCapacityCount;

// the link cost for the connection between these two nodes
float fLinkCost;
]
If all three alternative embodiments so far are included, the messages exchanged are (for example) as follows:
struct sIntroMessage [

// the number used to break ties
int uiTieBreakerNumber;

// the maximum number of destination nodes
// this node wants to know about.
int uiNodeCapacityCount;

// the link cost for the connection between these two nodes
float fLinkCost;
]

図21は、初期化プロセスのフローチャートである。   FIG. 21 is a flowchart of the initialization process.

コネクションは、メッセージを順番に誤りなく送り届けることができると仮定される。これが可能でない場合、コネクションは「障害」として扱われると仮定される。   Connections are assumed to be able to deliver messages in order and without error. If this is not possible, the connection is assumed to be treated as a “failure”.

ノード知識の拡散
ノードAは、ノードBにメッセージを送信するためには、ノードBに到達するための最良ネクストステップである直接接続ノードまたはリンクばかりでなく、ノードBの名前も知る必要がある。
Spreading Node Knowledge To send a message to Node B, Node A needs to know the name of Node B as well as the directly connected node or link that is the best next step to reach Node B.

ノードAまたはノードBは、別のノードからメッセージを送信されることを望む場合、それらの名前を少なくとも1つの直接接続ノードに伝えなければならない。   If node A or node B wants to be sent a message from another node, they must convey their name to at least one directly connected node.

ノードは、別のノードへのリンクを確立すると、ノード情報を送信し始めることができる。ノード情報は、ノードの名前と、そのノードに到達するための累積リンクコストを含む。ネットワークが起動されたばかりのとき、ノードはそれ自身を除いて他のノードの名前については何も知らず、したがって、そのノードが知っているノード(それ自身)に対する初期累積リンクコストは0である。   Once a node establishes a link to another node, it can begin sending node information. The node information includes the name of the node and the accumulated link cost for reaching the node. When the network has just been started, a node knows nothing about the names of other nodes except itself, so the initial cumulative link cost for a node that it knows (self) is zero.

ノードは、リンクLから別のノードAについての知識を受信すると、リンクLのリンクコストをノードAについて告げられた累積リンクコストに追加し、リンクLに関連するその情報をデータベースDに保存する。コネクションLから受信されたノードAについてのリンクコストは、このノードによってデータベースDから参照される場合、それに追加されたそのリンクLのリンクコストを暗黙的に含んでいる。   When a node receives knowledge about another node A from link L, it adds the link cost of link L to the accumulated link cost announced for node A and saves that information related to link L in database D. The link cost for node A received from connection L implicitly includes the link cost of that link L added to it when referenced from database D by this node.

各ノードは、それが各リンクから受信した情報を保存する。ノードは、リンクの他端のノードの名前を知る必要はない。ノードがする必要があるのは、リンクの他端のノードがそれに送信している知識を記録することだけである。ノードは、それが隣接ノードから受信したすべてのノード更新を保存する。   Each node stores the information it receives from each link. The node does not need to know the name of the node at the other end of the link. All the node needs to do is record the knowledge that the other end of the link is sending to it. A node stores all node updates that it has received from neighboring nodes.

ノードNは、あるリンクからノードBについての知識を受信すると、その累積リンクコストを他のリンクから受信したノードBについての累積リンクコストと比較する。ノードNは、ノードBに流れるメッセージのためのその「最良隣接ノード」として、最低累積リンクコストをもつリンクを選択する。ノードNは、直接接続ノードにノードBについての更新を送信するとき、ノードの名前とその直接接続ノードから受信した最低累積リンクコストをそれらに伝える。   When Node N receives knowledge about Node B from a link, it compares its accumulated link cost with the accumulated link cost for Node B received from other links. Node N selects the link with the lowest cumulative link cost as its “best neighbor” for messages flowing to Node B. When Node N sends an update for Node B to a directly connected node, it tells them the name of the node and the lowest accumulated link cost received from that directly connected node.

累積リンクコストは加法的である。図22はこの加法的特性を示している。   Cumulative link costs are additive. FIG. 22 illustrates this additive property.

このプロセスは、ノードについての知識がネットワーク全体に広がり、各ノードが1つのリンクを最低累積リンクコストを有するとして選択するまで続けられる。   This process continues until knowledge about the nodes is spread throughout the network and each node selects one link as having the lowest cumulative link cost.

このプロセスは、ネットワークを通る最短経路を見つけるためのダイクストラのアルゴリズム、またはベルマンフォードアルゴリズムと非常に類似している。当業者であれば、そのような手法および同様の結果を生じる変形について知っていよう。   This process is very similar to Dijkstra's algorithm for finding the shortest path through the network, or the Bellman Ford algorithm. Those skilled in the art will be aware of such techniques and variations that produce similar results.

図23〜図26は、ネットワークを通るノード知識のフローを示している。すべてのリンクは、コスト1を有すると仮定される。これは、単なる例であると見なされ、決して本発明の一般性を限定することを意図していない。例えば、リンクは異なるリンクコストを有することができ、ノードの数およびそれらの具体的な相互接続は、無限に変化させることができる。   23 to 26 show the flow of node knowledge through the network. All links are assumed to have a cost of 1. This is considered merely an example and is in no way intended to limit the generality of the invention. For example, links can have different link costs, and the number of nodes and their specific interconnections can vary indefinitely.

いかなる時点でも、ノードは、ネットワークトポロジの全域的視野を構築する必要はない。ノードは、直接接続ノードがそれに伝えたノード知識について知っているだけである。このタイプのネットワークは、当業者によって距離ベクトルネットワークと比較されることができる。   At no point does the node need to build a global view of the network topology. The node only knows about the node knowledge that the directly connected node conveyed to it. This type of network can be compared to a distance vector network by one skilled in the art.

代替実施形態は、(先に説明された)タイブレーカ番号を使用して、最低累積リンクコストをもつ2以上のリンクの間で選択を行うことができる。   An alternative embodiment may use a tie breaker number (described above) to make a selection between two or more links with the lowest cumulative link cost.

ノード知識を広めるメッセージの構造体は、(例えば)以下のようになる。
struct sNodeKnowledge [
Name NameOfTheNode;
Float fCumulativeLinkCost;
]
The structure of the message that spreads the node knowledge is (for example) as follows:
struct sNodeKnowledge [
Name NameOfTheNode;
Float fCumulativeLinkCost;
]

fCumulativeLinkCostは、その特定の名前を有するノード上では0に設定されるべきである。   fCumulativeLinkCost should be set to 0 on the node with that particular name.

代替実施形態は、fCumulativeLinkCostをその特定の名前を有するノード上で非0に設定することができる。これは、宛先ノードの本当のロケーションを偽装するのに使用されることができる。fCumulativeLinkCostをその特定の名前を有するノード上で非0(例えば、50)に設定しても、ネットワークの収束には影響しない。   An alternative embodiment may set fCumulativeLinkCost to non-zero on the node with that particular name. This can be used to impersonate the real location of the destination node. Setting fCumulativeLinkCost to a non-zero (eg, 50) on a node with that particular name does not affect network convergence.

リンクコスト変更
リンクコストが変化した場合、ノードは、新リンクコストと旧リンクコストの差をとり、その差をそのリンクから受信されたすべてのノード情報の累積リンクコストに加える必要がある。
When the link cost changes , the node needs to take the difference between the new link cost and the old link cost and add the difference to the cumulative link cost of all node information received from that link.

以下に示すのは、そのリンクコストを変更したリンクから受信された各ノード更新に対して、累積リンクコストがどのように調整され得るかを示す例示的な擬似コードである。
CumualtiveLinkCost = CumualtiveLinkCost + (NewLinkCost-
OldLinkCost);
If (CumualtiveLinkCost > INFINITY) CumualtiveLinkCost = INFINITY;
Shown below is exemplary pseudo code that shows how the cumulative link cost can be adjusted for each node update received from a link whose link cost has changed.
CumualtiveLinkCost = CumualtiveLinkCost + (NewLinkCost-
OldLinkCost);
If (CumualtiveLinkCost> INFINITY) CumualtiveLinkCost = INFINITY;

この変更に基づいて、ノードは、その「最良隣接ノード」の選択を再評価する。ノードは、ある特定の宛先ノードに対する最低累積リンクコストを変更したすべてのノードについて、その隣接ノードに伝える必要がある。   Based on this change, the node reevaluates its “best neighbor” selection. A node needs to communicate to its neighbors about all nodes that have changed the minimum cumulative link cost for a particular destination node.

例えば、宛先ノードAに対する「最良隣接ノード」として選択されていないリンクのリンクコストが変化し、変化後も依然として、そのリンクが宛先ノードAに対する「最良隣接ノード」として選択されないならば、ノードAについての累積リンクコストは同じままであり、更新が直接接続ノードに送信される必要はない。   For example, if the link cost of a link that is not selected as “best neighbor” for destination node A changes and the link is still not selected as “best neighbor” for destination node A, for node A The accumulated link cost remains the same and no update needs to be sent to the directly connected node.

リンク削除(リンクが削除される場合)
これは、そのリンクのリンクコストが無限大に向うのと同じであると見なされ得る。
Delete link (when link is deleted)
This can be considered the same as the link cost of that link going to infinity.

このリンクを「最良隣接ノード」として使用していた各宛先ノードに関して、次の「非無限大の」代替最良隣接ノードが選択される。そのような代替最良隣接ノードが存在しない場合、「最良隣接ノード」は選択されることができず、すべての直接接続ノードは、それらのノードについて無限大の累積リンクコストを告げられる。   For each destination node that has used this link as the “best neighbor”, the next “non-infinite” alternative best neighbor is selected. If there is no such alternative best neighbor, the “best neighbor” cannot be selected and all directly connected nodes are told an infinite cumulative link cost for those nodes.

「最良隣接ノード」が選択されない場合、それらのノードを宛先とするメッセージは、送信されることができない。   If “best neighbors” are not selected, messages destined for those nodes cannot be sent.

大規模ネットワーク
相互接続速度およびノード能力に大きなばらつきがある大規模ネットワークでは、数百万のノードが存在するとしても、ネットワーク内で任意の与えられたノードが任意の他のノードに接続できることを保証するため、異なる技法が利用される必要がある。
Large networks with large variations in large network interconnect speeds and node capabilities, guarantee that any given node can connect to any other node in the network, even if there are millions of nodes In order to do this, different techniques need to be used.

本発明に特有の方法を使用すると、宛先ノードについての知識はネットワーク中に速やかに広まる。大規模ネットワークにおける問題は3点ある。
1.すべての宛先ノードについてあらゆるノードに知らせておくのに必要とされる帯域幅は、データのために帯域幅が残らないほど増大する。
2.データが流れるよう保証するため、宛先ノード更新を抑制する帯域幅を使用すると、宛先ノード更新の伝播速度が大きく低下する。
3.ネットワーク内のあらゆるノードについて知るのに十分なメモリをもたないノードは、ネットワーク内のあらゆるノードには接続できず、ネットワーク内のあらゆるノードに接続するのに十分な資源をもつノードの能力も制限することがある。
Using the method specific to the present invention, knowledge about the destination node is quickly spread throughout the network. There are three problems in large networks.
1. The bandwidth required to keep every node informed about all destination nodes increases so that no bandwidth remains for the data.
2. If a bandwidth that suppresses destination node updates is used to ensure that data flows, the propagation speed of destination node updates is greatly reduced.
3. A node that does not have enough memory to know about every node in the network will not be able to connect to any node in the network, and will limit the ability of nodes with sufficient resources to connect to every node in the network There are things to do.

ネットワークの「コア」または中心という考え方を導入することによって、解決策が見出される。   Solutions are found by introducing the idea of the “core” or center of the network.

ネットワークのコアは、平均的なノードよりも大量のメモリおよび帯域幅を有することがほとんどであり、たいていの場合、トポロジ的に中央に配置される。   The core of the network often has a larger amount of memory and bandwidth than the average node and is often topologically centrally located.

この新しいネットワークシステムは、ネットワークトポロジについての知識、またはそれに直接接続されたノード以外のネットワーク内の他のノードについての知識を何も有していないので、ノードは、ネットワークのコアがどこにあるのか近似的に知ることができるに過ぎない。   This new network system has no knowledge of the network topology, or knowledge of other nodes in the network other than the nodes directly connected to it, so the node approximates where the core of the network is Can only know.

これは、どのリンクが大多数の宛先ノードのための「最良隣接ノード」であるかを検査することによって達成されることができる。直接接続リンクは、最低累積リンクコストを有しているので、宛先ノードのための「最良隣接ノード」として選択される。最低リンクコストは一般に、最終的な宛先ノードに最も近いリンクによって提供される。あるリンクが、他のどのリンクと比べてもより多くの宛先ノードのための「最良隣接ノード」として使用される場合、このリンクが、コアまたはネットワークの中心に向うステップと見なされる。   This can be accomplished by checking which link is the “best neighbor” for the majority of destination nodes. The directly connected link is selected as the “best neighbor” for the destination node because it has the lowest cumulative link cost. The lowest link cost is generally provided by the link closest to the final destination node. If a link is used as the “best neighbor” for more destination nodes compared to any other link, this link is considered a step towards the core or network center.

一代替実施形態は、何らかの他のノードまたはビーコン(beacon)に到るための最良ネクストステップについて決定し、これをその「コアに到るための最良ネクストステップ」として使用するノードとすることができる。   An alternative embodiment may determine the best next step to reach some other node or beacon and use it as its “best next step to reach the core” .

一代替実施形態は、要因のある組合せを使用して、何がその「コアに到るための最良ネクストステップ」であるかを決定するノードとすることができる。これらの要因は、以下のいずれかの要因の組合せとすることができる(ただし、それらに限定されない)。
1.ある目標ビーコンを見出した無線方向
2.GPS位置座標、およびある場所に到るための最良ネクストステップ
3.1つまたは複数の特殊マーカノード
4.その他の外部的に測定可能な何らか要因
An alternative embodiment may be a node that uses a factorial combination to determine what is its “next best step to get to the core”. These factors can be (but are not limited to) any combination of the following factors.
1. 1. Radio direction where a target beacon is found 3. GPS location coordinates and best next step to reach a location 3. One or more special marker nodes Any other externally measurable factor

ノードは、ネットワークの中心がどこにあるかを知っている必要はなく、ネットワークの中心に到るための最良ネクストステップだけを知っていればよい。   The node does not need to know where the network center is, only the best next step to reach the network center.

コアは、2つのノードが互いをコアに到るための最良ネクストステップとして選択した場合として定義されることができる。コアについて何も特別なことはなく、コアを形成する2つのノードは、ネットワーク内の他の任意のノードが動作するように動作する。   A core can be defined as the case where two nodes have selected each other as the best next step to reach the core. There is nothing special about the core, the two nodes that form the core operate like any other node in the network operates.

どれが最も多くの宛先ノードのための「最良隣接ノード」として選択されたかについて、1組の直接接続ノードの間に同点のものが存在する場合、(初期化時に渡された)「タイブレーカ」値が最も高い直接接続ノードが、コアに到るための最良ネクストステップとして選択される。このメカニズムは、非自明なネットワーク内に(ノードA−>ノードB−>ノードAのタイプのループを除いて)ループが存在しないことを保証する。このタイブレーカを用いる実施形態が使用されない場合、ランダムな選択が行われ得る。   "Tie breaker" (passed at initialization) if there is a tie between a set of directly connected nodes as to which was selected as the "best neighbor" for the most destination nodes The directly connected node with the highest value is selected as the best next step to reach the core. This mechanism ensures that there are no loops in the non-trivial network (except for node A-> node B-> node A type loops). If this tie breaker embodiment is not used, a random selection may be made.

ノードの「コアに到るための最良ネクストステップ」を使用するというこのアイデアは階層を形成する。この階層は、特定のノード知識を階層内でツリーの頂点まで押し上げるのに使用されることができる。(後ほど説明される)HSPPは、この階層を利用して、ノード知識をこの階層内で押し上げる(または引き下げる)。   This idea of using the “best next step to get to the core” of the nodes forms a hierarchy. This hierarchy can be used to push specific node knowledge up to the top of the tree within the hierarchy. The HSPP (described later) uses this hierarchy to push up (or lower) node knowledge within this hierarchy.

図54は、各ノードがコアに到るための最良ネクストステップとして直接接続ノードを選択したネットワークの一例である。ネットワークは、その後、生成された階層の性質をより良く示すように再構成される。ネットワークトポロジが変化すると、形成された階層も変化する。   FIG. 54 is an example of a network in which a directly connected node is selected as the best next step for each node to reach the core. The network is then reconfigured to better show the nature of the generated hierarchy. When the network topology changes, the formed hierarchy also changes.

孤立コアを検出する
一代替実施形態は、「孤立コア」の検出を助ける。
An alternative embodiment for detecting isolated cores helps to detect “isolated cores”.

コアは、互いをコアに到るための最良ネクストステップとして選択した2つの直接接続ノードとして定義される。図27はこの一例を示している。   A core is defined as two directly connected nodes selected as the best next steps to reach each other. FIG. 27 shows an example of this.

ノードは、「コアに到るための最良ネクストステップ」として直接接続ノードを選択すると、その直接接続ノードにその選択について伝える。これは、他のノードがそれらのコアとして使用しないコアをノードが生成したとき、ノードがそれを検出することを可能にする。   When a node selects a directly connected node as “the best next step to reach the core”, it tells the directly connected node about the selection. This allows a node to detect when a node creates a core that other nodes do not use as their core.

渡されるメッセージは、以下のようにすることができる。
struct sCoreMessage [
bool bIsNextStepToCore;
]
The message passed can be as follows:
struct sCoreMessage [
bool bIsNextStepToCore;
]

コアが生成された場合、コアを形成する両方のノード(この例ではノードAとノードB)は、それらが直接接続ノードをいくつ有しているかを知るために調査を行う。直接接続ノードが2以上存在する場合、両ノードは、他のすべての直接接続ノードを検査する。   When a core is created, both nodes that form the core (node A and node B in this example) investigate to see how many directly connected nodes they have. If there are two or more direct connection nodes, both nodes check all other direct connection nodes.

このノードをコアに到るための最良ネクストステップとして選択した唯一の直接接続ノードが、コアが生成される原因となったノードである場合、このノードは、次善の選択肢を選択して、コアに到るための最良ネクストステップにする。   If the only directly connected node selected as the best next step to reach the core is the node that caused the core to be generated, this node selects the next best option and Make it the best next step to get to.

これは、本当のコアへの知識の流れを阻害し得るコアを排除することを助けることができる。   This can help eliminate cores that can hinder the flow of knowledge to the real core.

コアに到るための最良ネクストステップを選択する例示的な代替方法
これまで説明された手法は、直接接続ノードに、その直接接続ノードを「最良隣接ノード」として選択した各宛先ノード1つにつき得点「1」を割り当てることを含んでいた。最高カウント(または孤立コアの場合は2番目の高カウント)をもつノードが、コアに到るための最良ネクストステップである。
Exemplary Alternative Method of Choosing the Best Next Step to Get to the Core The approach described so far is to score directly connected nodes for each destination node that has selected that directly connected node as the “best neighbor” Including assigning "1". The node with the highest count (or the second highest count in the case of an isolated core) is the best next step to reach the core.

実施形態が複数の「最良隣接ノード」を使用する場合(後ほど説明されるマルチパスなどの場合)、各宛先ノードのために選択される各「最良隣接ノード」は、適切な得点を割り当てられることができる。代替として、(マルチパスの場合)最良待ち時間を有する「最良隣接ノード」だけが、得点を割り当てられることができる。   If the embodiment uses multiple “best neighbors” (such as multipath described later), each “best neighbor” selected for each destination node is assigned an appropriate score. Can do. Alternatively, only the “best neighbor” with the best latency (in the case of multipath) can be assigned a score.

各直接接続ノードに、それを最善の選択肢として選択した各宛先ノード1つにつき得点1を割り当てる代わりに、その他の値を使用することができる。   Instead of assigning a score of 1 to each directly connected node for each destination node that has chosen it as the best option, other values can be used.

例えば、log(fCumulativeLinkCost +1)*500を、割り当てられる得点とすることができる。他のメトリックも使用することができる。このメトリックは、より遠く離れた宛先ノードにより大きな重みを与えるという利点を有する。類似したコネクションおよびノードを有する稠密な網目では、このタイプのメトリックは、より集中化されたコアが形成されることをより良く助けることができる。   For example, log (fCumulativeLinkCost + 1) * 500 can be the assigned score. Other metrics can also be used. This metric has the advantage of giving greater weight to destination nodes that are farther away. In dense networks with similar connections and nodes, this type of metric can better help a more centralized core be formed.

より遠く離れた宛先ノードにより大きな重みを与えるというアイデアを拡張するのに使用され得る別の可能な実施形態は、すべての宛先ノードをそのリンクコストによって順序付け、最も遠く離れたx%(例えば50%)だけを使用して、コアに到るための最良ネクストステップを決定することである。   Another possible embodiment that can be used to extend the idea of giving greater weight to more distant destination nodes is to order all destination nodes by their link cost, and the most distant x% (eg 50%) ) Only to determine the best next step to get to the core.

別の実施形態は、各ノードに割り当てられた加重値を使用することができる。この重みは、名前を生成したノードによって割り当てられることができる。例えば、この加重値がノード更新の構造体に追加される場合、それは以下のようである。
struct sNodeKnowledge [
Name NameOfTheNode;
Float fCumulativeLinkCost;
Int nWeight;
]
Another embodiment may use a weight value assigned to each node. This weight can be assigned by the node that generated the name. For example, if this weight is added to the node update structure:
struct sNodeKnowledge [
Name NameOfTheNode;
Float fCumulativeLinkCost;
Int nWeight;
]

(sNodeKnowledge構造体の中にある)nWeight値は、より強力なノードの近くにコアが形成されるのを助けるために使用されることができる。例えば、割り当てられる得点は、10^nWeight(10は一例)によって乗じられることができる。これは、それらが数百万の非常に非力なノードに取り囲まれているとしても、1つまたは2つの大きなノードの近くにコアが形成されることを助ける。   The nWeight value (in the sNodeKnowledge structure) can be used to help the core be formed near stronger nodes. For example, the assigned score can be multiplied by 10 ^ Weight (10 is an example). This helps the core to be formed near one or two large nodes, even if they are surrounded by millions of very powerless nodes.

nWeight値は、ネットワーク内のすべてのノードに対して一貫した方式で割り当てられるべきである。ノードのタイプ別の可能なnWeight値は以下のようである。

Figure 0004611319
The nWeight value should be assigned in a consistent manner to all nodes in the network. Possible nWeight values by node type are as follows:
Figure 0004611319

これらの重み値は提案に過ぎず、当業者であれば、自らの応用例にとって適切な値を割り当てることができよう。   These weight values are only suggestions and those skilled in the art will be able to assign values appropriate for their application.

非対称リンクコストを有するネットワークにおけるコアに到るためのネクストステップ
これは、コアに到るための最良ネクストステップを選択するための一代替実施形態である。
Next step to reach the core in a network with asymmetric link cost This is an alternative embodiment for selecting the best next step to reach the core.

リンクが非対称コストを与えられている場合、例えば、ノードAとノードBに加わったリンクLが、AからBに向うときはコスト10をもち、BからAに向うときはコスト20をもつ場合、一代替実施形態は、ネットワーク内の単一の場所にコアが形成されるのを助けるのに役立つ。   If the link is given an asymmetric cost, for example, a link L joined to node A and node B has a cost of 10 when going from A to B and a cost of 20 when going from B to A, One alternative embodiment helps to form the core at a single location in the network.

先の一実施形態では、ノードは、特定のリンクのリンクコストについて同意し、この共有リンクコストに基づいた「最良隣接ノード」選択を使用した。   In one previous embodiment, the nodes agreed on the link cost of a particular link and used a “best neighbor” selection based on this shared link cost.

「最良隣接ノード」を決定するのに非対称リンクコストが使用される場合、対称リンクコストの使用が、コアに到るためのネクストステップを選択するために使用されることができる。対称リンクコストの使用は、コアが実際に形成されるよう保証することを助けることができる。   If asymmetric link cost is used to determine the “best neighbor”, the use of symmetric link cost can be used to select the next step to reach the core. The use of symmetric link costs can help ensure that the core is actually formed.

ノードは、知っている各ノードについて、どのリンクがそのノードに到達するための最良ネクストステップであるかを決定する。ノードは、この最良ネクストステップを、累積リンクコストとおそらくはタイブレーカ番号に基づいて選択する。その後、この「最良隣接ノード」は、それに割り当てられたその他の得点と合計される得点を与えられる。最も大きな得点をもつ「最良隣接ノード」が、コアに到るための最良ネクストステップとして選択される。   For each node it knows, the node determines which link is the best next step to reach that node. The node chooses this best next step based on the cumulative link cost and possibly the tie breaker number. This “best neighbor” is then given a score that is summed with the other scores assigned to it. The “best neighbor” with the highest score is selected as the best next step to reach the core.

この代替実施形態では、ノードは、それが結合されているノードと、リンクの代替コストについて同意を交わす。この代替リンクコストは、両方のノードにとって同じである。この代替リンクコストは、累積リンクコストを調整するために使用される。「最良隣接ノード」の選択は、この代替累積リンクコストを用いて行われる。この「最良隣接ノード」は、実際のノードに到るための最良ネクストステップとして選択される「最良隣接ノード」でなとしても、コアに到るための最良ネクストステップとして選択される結果をうむ得点を割り当てられる。   In this alternative embodiment, the node agrees on the alternative cost of the link with the node to which it is coupled. This alternative link cost is the same for both nodes. This alternate link cost is used to adjust the cumulative link cost. The selection of “best neighbor node” is performed using this alternative cumulative link cost. This “best neighbor” is the best next step to reach the core, even if it is the “best neighbor” that is chosen as the best next step to reach the actual node. Assigned.

以下の式は、代替累積リンクコストがどのように計算され得るかを示している。
AltemativeCumulativeLinkCost = ActualCumulativeLinkCost + (AlternativeLinkCost-ActualLinkCost)
The following equation shows how an alternative cumulative link cost can be calculated.
AltemativeCumulativeLinkCost = ActualCumulativeLinkCost + (AlternativeLinkCost-ActualLinkCost)

高速伝播経路(「HSPP」)
ネットワークのコアにないノードは、ネットワークのコアにあるノードと同じほど大量のメモリを一般に有さず、それらがノードNについての知識を有しているときにはじめて、他のノードがノードNに接続することが可能になるノードNについての知識を失うことがある。これらのノードが知識を失った場合、ネットワーク内の他のノードは、そのノードNに接続することができない。
High-speed propagation path (“HSPP”)
Nodes that are not in the core of the network generally do not have as much memory as nodes in the core of the network, and other nodes connect to node N only when they have knowledge of node N You may lose knowledge about Node N that you can do. If these nodes lose knowledge, other nodes in the network cannot connect to that node N.

同様に、ノードQとのコネクションを確立することを求めているノードは、同じ問題に直面する。ノードが探しているノードQについての知識は、ノードに十分な速さで到達せず、またはノードQもしくはそれに接続を試みているノードが低容量ノードによって取り囲まれている場合、おそらくまったく到達しない。   Similarly, a node seeking to establish a connection with node Q faces the same problem. Knowledge about the node Q that the node is looking for does not reach the node fast enough, or perhaps if the node Q or the node trying to connect to it is surrounded by a low capacity node.

1つの手法は、「コアに到るための最良ネクストステップ」に関する各ノードの選択によって生成される暗黙の階層を使用することである。ノード知識は、この階層をコアへと押し上げられ、押し下げられる。これは、ネットワークの中心へのおよび中心からのノード知識の効率的な転送を可能にする。   One approach is to use an implicit hierarchy generated by the selection of each node for “best next step to reach the core”. Node knowledge is pushed up and down this hierarchy to the core. This allows for efficient transfer of node knowledge to and from the center of the network.

ノード知識は、本明細書で高速伝播経路(「HSPP:High Speed Propagation Path」)と呼ばれる方法を使用して、プッシュ(push)/プル(pull)されることができる。HSPPは、ノードとコアの間の1つまたは複数の標識付けされた経路と考えられ得る。その経路は、一度設定されると、それを生成したノードが削除されるまで保持される。   Node knowledge can be pushed / pulled using a method referred to herein as a High Speed Propagation Path (“HSPP”). The HSPP can be thought of as one or more labeled paths between the node and the core. Once set, the path is retained until the node that generated it is deleted.

2つのタイプのHSPPが存在する。第1のものは、通知HSPPである。通知HSPPは、特定のノードについての知識をコアに向ってプルする。HSPPが通過するノードは、HSPPに関連するノードについての知識を失うことは許されない。すべてのノードは、自身についての知識をコアへと送るために、通知HSPPを生成する。   There are two types of HSPP. The first is a notification HSPP. The notification HSPP pulls knowledge about a particular node towards the core. Nodes through which the HSPP passes are not allowed to lose knowledge of the nodes associated with the HSPP. All nodes generate a notification HSPP to send knowledge about themselves to the core.

要求HSPPは、ノードが別のノードについての知識を探しているときにだけ生成される。要求HSPPは、コアに向って知識をプルする代わりに、それを生成したノードに向って知識をプルする点を除いて、通知HSPPと同じ方法で動作する。   The request HSPP is generated only when a node is looking for knowledge about another node. The request HSPP operates in the same manner as the notification HSPP, except that instead of pulling knowledge towards the core, it pulls knowledge towards the node that created it.

(HSPPについての文脈では、「プッシュ」および「プル」という用語は、説明の目的で役立つが、実際にはHSPPは、ノードデータベース内のあるノードの「ランク」を、そのノードについての知識が他のノードについての知識より先に送信されるように改善するので、いくぶん不自然な用語と考えられ得ることは、当業者であれば理解されよう。)   (In the context of HSPP, the terms “push” and “pull” are useful for explanation purposes, but in practice HSPP does not know the “rank” of a node in the node database; (Those skilled in the art will appreciate that it may be considered a somewhat unnatural term because it improves to be transmitted prior to knowledge of the current node.)

HSPPは、各ノードのコアに到るための最良ネクストステップを使用して、コアに向って進む。各ノードの「コアに到るための最良ネクストステップ」は、暗黙の階層を生成する。   The HSPP proceeds towards the core using the best next step to reach the core of each node. Each node's “best next step to reach the core” creates an implicit hierarchy.

HSPPは、ユーザメッセージ自体のための経路ではなく、むしろ問題とする1つまたは複数のノードについての知識を保持し、その1つまたは複数のノードについての知識をHSPPに沿って速やかに送信するよう経路上のノードに強制する。HSPPはまた、HSPPに関連するノード名についての更新の優先順位を上げる。これは、この暗黙の階層の頂点に向って速やかに経路更新を送信するという結果を有する。   The HSPP is not a route for the user message itself, but rather maintains knowledge about the node or nodes in question, and sends knowledge about the node or nodes along the HSPP promptly. Force a node on the route. The HSPP also raises the priority of updates for node names associated with the HSPP. This has the result of sending route updates promptly towards the top of this implicit hierarchy.

HSPPは、ユーザデータメッセージがどこを流れるかを指定しない。HSPPは、コアに到るための少なくとも1つの経路が常に存在することを保証し、ノードが他の各ノードへの初期コネクションを形成するのを助けるためだけに存在する。初期コネクションが一度形成された後では、ノードはもはやHSPPを使用する必要はない。   HSPP does not specify where user data messages flow. HSPP exists only to ensure that there is always at least one path to the core and to help the node form an initial connection to each other node. Once the initial connection is established, the node no longer needs to use HSPP.

HSPPは、1つのノード名に属するものとして、または1つのノード名に関連付けられたものとして参照されることができる。これは、HSPPが関連付けられ得るノードの数またはタイプを決して制限しない。この実施形態では、HSPPの名前は通常、HSPPがコアにプッシュ/コアからプルしているノードの名前である。   An HSPP can be referred to as belonging to a single node name or as being associated with a single node name. This in no way limits the number or type of nodes with which the HSPP can be associated. In this embodiment, the name of the HSPP is typically the name of the node that the HSPP is pushing / pulling from / to the core.

HSPPは、特定のノード名またはノード名のクラス/グループに結び付けられる。ノードは、特定の宛先ノードのためのHSPPをホストする場合、そのHSPPによって参照されるノードについてのノード知識を即座に処理し、送信する。   An HSPP is tied to a specific node name or class / group of node names. When a node hosts an HSPP for a particular destination node, it immediately processes and transmits node knowledge about the node referenced by that HSPP.

この場合のノード知識は、(例えば)sNodeKnowledgeの更新と考えられ得る。   Node knowledge in this case can be considered an update of (for example) sNodeKnowledge.

一代替実施形態は、その処理を下記の場合に制限することができる。
1.宛先ノードについての初期知識
2.宛先ノードのfCumulativeLinkCostが無限大になる場合
3.宛先ノードのfCumulativeLinkCostが無限大から何らかの他の値に移る場合
An alternative embodiment can limit the process to:
1. 1. Initial knowledge about the destination node 2. When fCumulativeLinkCost of the destination node becomes infinite When the destination node's fCumulativeLinkCost moves from infinity to some other value

これによって、HSPP内のノードのどれか1つがHSPPによって参照される1つまたは複数のノードを「見る」ことができるならば、HSPP内のすべてのノードがHSPPによって参照されるノードについて常に知っていることを保証することができる。   This allows every node in the HSPP to always know about the node referenced by the HSPP if any one of the nodes in the HSPP can "see" one or more nodes referenced by the HSPP. Can be guaranteed.

ノード知識は、HSPPには含まれない。HSPPは、特定の1つまたは複数のノードについての知識に対して非常に高い優先順位を有する経路を設定するだけである。これは、HSPPによって参照されるそれらのノードのノード更新が即座に送信されることを意味する。   Node knowledge is not included in the HSPP. HSPP only sets up paths that have a very high priority for knowledge about a particular node or nodes. This means that node updates for those nodes referenced by the HSPP are sent immediately.

HSPPは一般に、双方向経路であると見なされる。   HSPP is generally considered to be a bidirectional path.

代替実施形態は、2つのタイプのHSPPを有することができる。1つのタイプは、コアに向ってノードについての知識をプッシュする。このタイプのHSPPは、通知HSPPと呼ばれることができる。第2のものは、HSPPを生成したノードに向ってノードについての知識をプルする。このタイプのHSPPは、要求HSPPと呼ばれることができる。   Alternative embodiments may have two types of HSPP. One type pushes knowledge about the node towards the core. This type of HSPP may be referred to as a notification HSPP. The second pulls knowledge about the node towards the node that generated the HSPP. This type of HSPP may be referred to as a request HSPP.

ノードは、最初にネットワークに接続されるとき、そのノード名に基づいてHSPPを生成することができる。このHSPPは、この新たに生成されたノードについての知識をネットワークのコアに向ってプッシュする。このノードによって生成されたHSPPは、ノードに寿命がある間は、またはノードがHSPPを保持することを望む限りは保持されることができる。ノードが切断された場合、またはノードがHSPPをもはや保持しないと決定した場合、HSPPは削除される。一代替実施形態は、このHSPPを双方向HSPPの代わりに「プッシュHSPP」にすることができる。   When a node is first connected to the network, it can generate an HSPP based on the node name. This HSPP pushes knowledge about this newly created node towards the core of the network. The HSPP generated by this node can be retained for the lifetime of the node or as long as the node wishes to retain the HSPP. The HSPP is deleted if the node is disconnected or if the node determines that it no longer holds the HSPP. An alternative embodiment may make this HSPP a “push HSPP” instead of a bidirectional HSPP.

ノードは、別のノードNに接続しようと試みる場合、そのノードNを参照するHSPPを生成する。このHSPPは、コアへと進み、ノードNについての知識を、HSPPを生成し、ノードNに接続することを望んでいるノードにプルするのを助ける。一代替実施形態は、このHSPPを双方向HSPPの代わりに「プルHSPP」にすることができる。   When a node attempts to connect to another node N, it generates an HSPP that refers to that node N. This HSPP goes to the core and helps to pull knowledge about Node N to the node that wants to create and connect to Node N. An alternative embodiment may make this HSPP a “pull HSPP” instead of a bidirectional HSPP.

ノードは、(たぶんノードNへのコネクションがもはや必要でなくなったため)HSPPを保持することをもはや望まない場合、「bActive」=falseとしたHSPP更新を、bActive=trueとした最初のHSPPを送信したすべての直接接続ノードに送信することができる。これは、HSPPを生成したノードによってだけ実行されるべきである。   If the node no longer wants to keep the HSPP (perhaps because a connection to node N is no longer needed), the node sent an HSPP update with “bActive” = false and the first HSPP with bActive = true. Can be sent to all directly connected nodes. This should only be performed by the node that generated the HSPP.

代替実施形態は、より高速な再接続を容易にするため、コネクションが切断された後もしばらくの間は、要求HSPPを生成したノードによって要求HSPPが保持されることを可能にすることができる。   Alternative embodiments may allow the requested HSPP to be held by the node that generated the requested HSPP for some time after the connection is disconnected to facilitate faster reconnection.

両方のタイプのHSPPが、コアへと進む。ノードについての知識をコアに送信するHSPPは、ノードに寿命がある間、保持されることができる。要求HSPPは、コネクションに寿命がある間、おそらく保持される。   Both types of HSPP go to the core. The HSPP that sends knowledge about the node to the core can be retained for the lifetime of the node. The request HSPP is probably held for the lifetime of the connection.

一代替実施形態は、HSPPを生成したノードに、そのHSPPを、ネットワークのコアに到るための最良ネクストステップだけではなく、すべての直接接続ノードに送信させる。この実施形態は、移動(moving)および移行(shifting)の間、ネットワークがより堅牢になることを可能にする。   An alternative embodiment causes the node that generated the HSPP to send it to all directly connected nodes, not just the best next step to reach the core of the network. This embodiment allows the network to become more robust during moving and shifting.

一代替実施形態は、ノードがある直接接続ノードに、その直接接続ノードによって要求された最大ノードより多くのHSPPを送信しないよう確認することを含む。   One alternative embodiment includes ensuring that a node does not send more HSPPs to a directly connected node than the largest node requested by that directly connected node.

HSPPは、ユーザデータメッセージがどこを流れるべきかを指定せず、ノード間または1つのノードとコアの間に(おそらく非最適)コネクションを確立するのを助けるだけである。   HSPP does not specify where user data messages should flow, but only helps to establish (possibly non-optimal) connections between nodes or between one node and the core.

HSPPは、コアに到達する前にノード知識と遭遇したとしても、コアへと進む。代替実施形態は、HSPPがコアに到達する前に、HSPPを停止させることができる。   The HSPP goes to the core even if it encounters node knowledge before reaching the core. An alternative embodiment can stop the HSPP before it reaches the core.

HSPPはどのように確立され保持されるか
ノードは、HSPPについて伝えられると、そのHSPPの記憶を失うよう命じられるまで、またはノードとそのHSPPについてそれに伝えたノードとの間のコネクションが切断されるまで、そのHSPPのことを記憶する。
How an HSPP is established and maintained When a node is told about an HSPP, the connection between the node and the node that told it about the HSPP is broken until ordered to lose its storage of the HSPP or Until that time, the HSPP is memorized.

伝えられることを望むノードの数をノードが制限する一実施形態では、そのノードは、与えられただけのHSPPを保存する。ノードは、直接接続ノードに、その直接接続ノードが要求した最大宛先ノード数より多くのHSPPを送信すべきではない。   In one embodiment where a node limits the number of nodes that it wishes to be communicated, that node stores as many HSPPs as it is given. A node should not send more HSPPs to a directly connected node than the maximum number of destination nodes requested by that directly connected node.

あるシステムでは、ノード上で利用可能なメモリの量は、十分なメモリが存在し、どれだけ多くのHSPPがノードを通過しても、ノードはそれらすべてを保存できると仮定できるほどある。この仮定は満たされる可能性が非常に高いが、それは、ノード上のHSPPの数は、このノードがコアにどれだけ近いかにおおよそ関連し、ノードは通常、大きな容量としたがっておそらく大量のメモリをもたない限りコアに近くないからである。
UR=最終受信器ノード
US=最終送信器ノード
In some systems, the amount of memory available on a node is such that it can be assumed that there is enough memory and that no matter how many HSPPs pass through the node, the node can store them all. This assumption is very likely to be met, but the number of HSPPs on a node is roughly related to how close this node is to the core, and a node usually has a large capacity and therefore probably also a large amount of memory. This is because it is not close to the core as long as it is not.
UR = final receiver node US = final transmitter node

HSPPは以下の形式をとる。
struct sHSPP [

// The name of the node could be replaced with a number
// (discussed later). It may also represent a class of nodes
// or node name.
sNodeName nnName;

// a boolean to tell the node if the HSPP is being
// activated or removed.
bool bActive;

// a boolean to decide if this a UR (or US generated HSPP)
bool bURGenerated;

];
HSPP takes the following form:
struct sHSPP [

// The name of the node could be replaced with a number
// (discussed later). It may also represent a class of nodes
// or node name.
sNodeName nnName;

// a boolean to tell the node if the HSPP is being
// activated or removed.
bool bActive;

// a boolean to decide if this a UR (or US generated HSPP)
bool bURGenerated;

];

これらの説明では、HSPP Hは、bActiveまたはbURGenerated(より一般にHSPPタイプ)が何であるかに関わらず、HSPP Hと呼ばれると見なされる。HSPP Hは、それが表すノード名からその名前を得る。   In these descriptions, HSPP H is considered to be referred to as HSPP H regardless of what is bActive or bURGenerated (more generally, the HSPP type). HSPP H gets its name from the node name it represents.

一代替実施形態は、HSPP Hの名前が、それが参照する1つ(または複数の)ノード名に結合されていない場合とすることができる。この実施形態におけるHSPP構造体は、(例えば)以下のようであることができる。
struct sAlternateHSPP [

// a unique name to represent this HSPP
sHSPPName HSPPName;

//The name of the node could be replaced with a number
// (discussed later). It may also represent a class of nodes
// or node name.
sNodeName nnName;

// a boolean to tell the node if the HSPP is being
// activated or removed.
bool bActive; ,

// a boolean to decide if this a UR (or US generated HSPP)
bool bURGenerated;

];
An alternative embodiment may be when the name of the HSPP H is not bound to the node name (s) it references. The HSPP structure in this embodiment can be (for example) as follows.
struct sAlternateHSPP [

// a unique name to represent this HSPP
sHSPPName HSPPName;

// The name of the node could be replaced with a number
// (discussed later). It may also represent a class of nodes
// or node name.
sNodeName nnName;

// a boolean to tell the node if the HSPP is being
// activated or removed.
bool bActive;,

// a boolean to decide if this a UR (or US generated HSPP)
bool bURGenerated;

];

以下の説明は、HSPPがどのように働くのかを説明するために、(sAltemateHSPPではなく)sHSPPを使用する。このことがこの方法の一般性を限定すると見なされるべきではない。   The following description uses sHSPP (rather than sAlertHSPP) to explain how HSPP works. This should not be regarded as limiting the generality of this method.

UR生成のHSPPも、「通知HSPP」と呼ばれることができ、US生成のHSPPも、「要求HSPP」と呼ばれることができる。   A UR-generated HSPP can also be referred to as a “notification HSPP” and a US-generated HSPP can also be referred to as a “request HSPP”.

HSPPの経路が変更または切断されたとしても、HSPPが自身にループバックしないことが重要である。このことは、ネットワークのコアに到るためのネクストステップが生成されるプロセスによって保証されるべきである。   Even if the HSPP path is changed or disconnected, it is important that the HSPP does not loop back to itself. This should be ensured by the process by which the next step to reach the core of the network is generated.

ノードは、アクティブHSPP H(bActive=true)を、それにアクティブHSPP Hを送信したノードに決して送信すべきではない。ノードは、それに(構造体のbActiveがtrueに設定された)HSPP Hを保持するよう命じた直接接続ノードの数を記録する。この数が0まで低下した場合、ノードは、アクティブHSPP H(bActive=true)を送信されたその直接接続ノードに、非アクティブHSPP H(bActive=false)を伝える。   A node should never send an active HSPP H (bActive = true) to the node that sent the active HSPP H to it. The node records the number of directly connected nodes that it ordered to hold HSPP H (with bActive in the structure set to true). If this number drops to 0, the node communicates inactive HSPP H (bActive = false) to its directly connected nodes that have been sent active HSPP H (bActive = true).

概略的レベルでは、HSPPは、コアに到るための非ループ経路を見つけ、コアに到達すると、延びるのを停止する。このようになるのは、コアを形成する2つのノードが、コアに到るための最良ネクストステップとして互いを選択するためである。アクティブHSPPは、すでにそれにアクティブHSPPを送信したノードに送信されないので、HSPPは、2つのノードのコアのうちの1つのノードだけによって送信される。   At a general level, the HSPP finds a non-loop path to reach the core and stops extending when it reaches the core. This is because the two nodes forming the core select each other as the best next step to reach the core. Since the active HSPP is not sent to the node that has already sent it the active HSPP, the HSPP is sent by only one node of the core of the two nodes.

HSPP経路が切断された場合、切断箇所からコアまでのHSPPは削除される。HSPPが削除されるのは、それにアクティブHSPPを伝えた唯一のノードが削除されるからである。これは、切断箇所からコア側のノードを促して、それがアクティブHSPP Hを伝えたノードに対して非アクティブHSPP Hを伝えさせる。大部分の場合、このプロセスは、そのアクティブHSPPを削除しながら、コアに向って順々に進んでいく。   When the HSPP path is cut, the HSPP from the cut point to the core is deleted. The HSPP is deleted because the only node that communicated the active HSPP to it is deleted. This prompts the node on the core side from the disconnection point, and causes the node that has transmitted active HSPP H to transmit inactive HSPP H. In most cases, this process proceeds in sequence toward the core, deleting its active HSPP.

HSPPは、各ノードのコアに到るための最良ネクストステップを使用してコアに向って進む。   The HSPP proceeds towards the core using the best next step to reach the core of each node.

URによって生成されるHSPPの目的は、URとコアの間の経路を常に保持し、その結果、システム内のすべてのノードが、US生成のHSPP(要求HSPP)をコアに送信することによって、URを見つけることができるようにすることである。   The purpose of the HSPP generated by the UR is to always maintain the path between the UR and the core so that all nodes in the system send a US-generated HSPP (request HSPP) to the core, thereby Is to be able to find.

ノードNは、直接接続ノードのいずれかからアクティブHSPP Hを受信した場合、コアに到るための最良ネクストステップとして選択された1つ(または複数)のノードに、コアに到るための最良ネクストステップとして選択されたその1つ(または複数)のノードはノードNにアクティブHSPP Hを送信していないと仮定して、アクティブHSPP Hを転送する。   If node N receives active HSPP H from any of the directly connected nodes, node N will receive the best next to reach the core to one (or more) nodes selected as the best next step to reach the core. Assuming that the node (or nodes) selected as the step is not sending active HSPP H to node N, it forwards active HSPP H.

複数のアクティブHSPP Hが同じノードに到着した場合、そのノードは、到着HSPPのいずれかがtrueとして標識付けされたbURGeneratedを有するならば、trueとして標識付けされたbURGeneratedをもつHSPPを転送する。   If multiple active HSPP Hs arrive at the same node, that node forwards the HSPP with bURGenerated labeled true if any of the arriving HSPPs have bURGenerated labeled true.

コアに到るための最良ネクストステップとして選択された直接接続ノードがノードAからノードBに変わった場合、(「次のコアに到るための最良ステップ」がまだこのノードに同じ名前のアクティブHSPPを送信していないと仮定して)ノードAに送信されたすべてのHSPPは、代わりにノードBに送信される。ノードAに送信されたそれらのHSPPは、ノードAに送信される「bActive」値がfalseに設定されたHSPP更新を有し、ノードBに送信されるHSPPは、「bActive」値がtrueに設定される。   If the directly connected node selected as the best next step to reach the core changes from node A to node B ("best step to reach next core" is still active HSPP of the same name for this node All HSPPs sent to node A) are sent to node B instead. Those HSPPs sent to node A have HSPP updates with the “bActive” value sent to node A set to false, and HSPPs sent to node B have the “bActive” value set to true. Is done.

一代替実施形態は、ノードAがHSPPを生成した場合、ノードAがすべての直接接続ノードにHSPPを送信すべきとする。これは、このノードが素早く移動しているとしても、その知識が常にコアにまたはコアから送られることを保証する。   An alternative embodiment assumes that if node A generates an HSPP, node A should send the HSPP to all directly connected nodes. This ensures that even if this node is moving quickly, its knowledge is always sent to or from the core.

ノードAが別のノードBへのコネクションを確立する場合、ノードAは、(要求HSPPと呼ばれる)HSPPを使用して、ノードBについての経路情報をそれ自身へとプルすることができる。このHSPPも、すべての直接接続ノードに送信されるべきである。   If node A establishes a connection to another node B, node A can use HSPP (referred to as requesting HSPP) to pull path information for node B to itself. This HSPP should also be sent to all directly connected nodes.

一代替実施形態は、データを双方向に動かす1つのタイプのHSPPだけを有する。このタイプのHSPPは、プッシュ/通知HSPPとプル/要求HSPPの両方に取って代わることができる。この実施形態では、そのbURGeneratedパラメータは省略される。   One alternative embodiment has only one type of HSPP that moves data in both directions. This type of HSPP can replace both push / notify HSPP and pull / request HSPP. In this embodiment, the bURGenerated parameter is omitted.

HSPPは、継続的に再送信される必要はない。HSPPが静的なネットワーク内に一度確立されると、追加のHSPPメッセージは送信される必要がない。このことは当業者には明らかであろう。   The HSPP need not be continuously retransmitted. Once the HSPP is established in a static network, no additional HSPP messages need to be sent. This will be apparent to those skilled in the art.

各ノードは、それにどの直接接続ノードがどのHSPPについて伝えたかを記憶し、ノードは一般に、それがどのHSPPについて直接接続ノードに伝えたかも記憶する。   Each node stores which direct connection node has communicated which HSPP, and the node generally also stores which HSPP it has communicated to the direct connection node.

代替HSPPタイプ
この代替実施形態は、低帯域幅環境においてコネクションを維持するのを助けることができる。
Alternate HSPP Type This alternate embodiment can help maintain a connection in a low bandwidth environment.

先の実施形態では、以下の2つのタイプのHSPPが存在した。
1.通知HSPP
2.要求HSPP
In the previous embodiment, there were two types of HSPP:
1. Notification HSPP
2. Request HSPP

この実施形態では、「優先通知HSPP」と呼ばれる新しいタイプのHSPPを導入する。   In this embodiment, a new type of HSPP called “Priority Notification HSPP” is introduced.

「優先通知HSPP」は、それがすべての「通知HSPP」より先に送信される点を除いて、「通知HSPP」と同じである。このことは後ほど説明される。   The “priority notification HSPP” is the same as the “notification HSPP” except that it is transmitted before all “notification HSPP”. This will be explained later.

例えば、ノードが別のノードと通信しようと試みる場合、または別のノードがそれと通信しようと試みていることを知った場合、ノードは、その通知HSPPを優先通知HSPPに変更することができる。   For example, if a node attempts to communicate with another node, or knows that another node is attempting to communicate with it, the node can change its notification HSPP to a priority notification HSPP.

以下の表は、ノードが特定の宛先ノードに関して受信したHSPPのタイプが与えられた場合に、ノードがどのタイプのHSPPをコアに到るためのその最良ネクストステップに送信するかを説明している。

Figure 0004611319
The following table describes what type of HSPP the node will send to its best next step to reach the core given the type of HSPP that the node received for a particular destination node. .
Figure 0004611319

「優先通知HSPP」を含むエントリを無視するならば、上記の表はまた、その他の実施形態が、コアに到るための最良ネクストステップにどのHSPPタイプを送信すべきかについてどのように決定するかを説明している。   If the entry containing “Priority Notification HSPP” is ignored, the above table also shows how other embodiments determine which HSPP type should be sent for the best next step to reach the core. Is explained.

HSPP構造体は、以下のように修正されることができる。
struct sHSPP [

// The name of the node could be replaced with a number
// (discussed previously)
sNodeName nnName;

// a boolean to tell the node if the HSPP is being
// activated or removed,
bool bActive;

// the HSPP Type (for ex: Request HSPP, Notify HSPP,
// Priority Notify HSPP)
int nHSPPType;
];
The HSPP structure can be modified as follows.
struct sHSPP [

// The name of the node could be replaced with a number
// (discussed previously)
sNodeName nnName;

// a boolean to tell the node if the HSPP is being
// activated or removed,
bool bActive;

// the HSPP Type (for ex: Request HSPP, Notify HSPP,
// Priority Notify HSPP)
int nHSPPType;
];

送信されるHSPPを順序付ける
一代替実施形態は、HSPPが送信される順序を調整する。
An alternative embodiment ordering the HSPP to be transmitted, to adjust the order of HSPP is transmitted.

ノードは、HSPPを受信すると、送信する前にそれを順序付ける必要がある。これは、より重要なHSPPが最初に送信されることを保証する。   When a node receives an HSPP, it must order it before sending it. This ensures that the more important HSPP is transmitted first.

「優先通知HSPP」の実施形態が使用されない場合、HSPPが送信されるべき順序は以下のようである。
1.要求HSPP
2.通知HSPP
If the “priority notification HSPP” embodiment is not used, the order in which the HSPPs should be sent is as follows:
1. Request HSPP
2. Notification HSPP

「優先通知HSPP」の実施形態が使用される場合、順序は以下のようである。
1.要求HSPPおよび優先通知HSPP
2.通知HSPP
When the “priority notification HSPP” embodiment is used, the order is as follows.
1. Request HSPP and priority notification HSPP
2. Notification HSPP

単純ループを削除する
この代替実施形態は、単純ループが形成されるのを阻止するために使用されることができる。
This alternative embodiment of removing simple loops can be used to prevent simple loops from forming.

当業者であれば、「ポイズンリバース」の変形を認めるであろう。   Those skilled in the art will appreciate variations on the “poison reverse”.

ノードAは、ノードNに向うメッセージのための「最良隣接ノード」としてノードBを選択した場合、ノードBにそれが選択されたことを伝える。   If Node A selects Node B as the “best neighbor” for a message to Node N, it informs Node B that it has been selected.

例えば、ノードAは、ノードBに以下のようなメッセージを送信することができる。
struct sIsBestNeighbour[
Name NodeName;
Boolean bIsBestNeighbour;
]
For example, the node A can transmit the following message to the node B.
struct sIsBestNeighbour [
Name NodeName;
Boolean bIsBestNeighbour;
]

ノードAがノードBにそれがノードNに向うメッセージのための「最良隣接ノード」であることを伝えた場合、ノードBは、ノードNに向うメッセージのための「最良隣接ノード」としてノードAを選択することはできない。ノードNに向うメッセージのためにノードBが行える唯一の可能な選択がノードAである場合、ノードBは、「最良隣接ノード」を選択せず、ノードNへのその累積リンクコストを無限大に設定する。   If node A tells node B that it is the “best neighbor” for messages going to node N, node B will make node A the “best neighbor” for messages going to node N. It cannot be selected. If Node B is the only possible choice that Node B can make for a message to Node N, Node B will not select the “best neighbor” and make its accumulated link cost to Node N infinite Set.

データストリーム内としてノードを標識付ける
この代替実施形態は、データストリーム内にあるノードを標識付けるために使用されることができる。
This alternative embodiment of marking nodes as in the data stream can be used to label nodes that are in the data stream.

この実施形態では、ノードは、「データストリーム内」として標識付けられた場合だけ、「データストリーム内」と見なされる。ノードは、データストリーム内として標識付けられなくても、ペイロードパケットを転送することができる。ノードは、ペイロードパケットを転送しているが、データストリーム内として標識付けられていない場合、「データストリーム内」とは見なされない。   In this embodiment, a node is considered “in the data stream” only if it is labeled as “in the data stream”. Nodes can forward payload packets without being marked as in the data stream. A node is not considered “in the data stream” if it is forwarding payload packets but is not marked as in the data stream.

ノードAは、ネットワーク内の別のノードNへのデータコネクションを確立しようと試みる場合、ノードAがノードNへのその「最良隣接ノード」として選択したノードBに、ノードBがノードNのための「最良隣接ノード」であり、ノードBがノードNに向うデータストリーム内にあることを伝える。   If node A attempts to establish a data connection to another node N in the network, node A selects node B as its “best neighbor” to node N and node B It is the “best neighbor” and conveys that Node B is in the data stream towards Node N.

ノードBは、それが「最良隣接ノード」であることをノードBに伝えた直接接続ノードによって、ノードBがデータストリーム内にあることを伝えられた場合、ノードBがノードNのための「最良隣接ノード」として選択した直接接続ノードCに、ノードCがデータストリーム内にあることを伝える。   If Node B is informed that Node B is in the data stream by a directly connected node that has told Node B that it is the “best neighbor”, then Node B is the “best neighbor” for Node N. Tells the directly connected node C selected as “adjacent node” that node C is in the data stream.

例えば、このメッセージの構造体は、以下のようにすることができる。
struct sInTheDataStream [
Name NodeName;
Boolean bIsInTheDataStream;
]
For example, the structure of this message can be as follows:
struct sInTheDataStream [
Name NodeName;
Boolean bIsInTheDataStream;
]

ノードBは、ノードNに向うメッセージに関してデータストリーム内として標識付けられた場合、ノードBがノードNに到るための最良ネクストステップとして選択したノードに、それがデータストリーム内にあることを伝える。ノードBがデータストリーム内としてもはや標識付けられなくなるのは、以下の理由からである。
1.ノードBにそれがデータストリーム内にあることを伝えた1つ(または複数)の直接接続ノードが切断されたため。
2.ノードBにそれがデータストリーム内にあることを伝えた1つ(または複数)の直接接続ノードがすべて、ノードBにそれがもはやデータストリーム内にないことを伝えたため。
If Node B is marked as in the data stream for a message going to Node N, it tells the node that Node B has chosen as the best next step to reach Node N that it is in the data stream. Node B is no longer labeled as in the data stream for the following reasons.
1. One (or more) directly connected nodes that told Node B that it was in the data stream were disconnected.
2. Because one (or more) directly connected nodes that told Node B that it was in the data stream all told Node B that it was no longer in the data stream.

その後、ノードBは、その「最良隣接ノード」Cに、それがもはやデータストリーム内にないことを伝える。   Node B then tells its “best neighbor” C that it is no longer in the data stream.

ノードは、このフラグによってだけ、データストリーム内にあるとして標識付けられる。ノードは、データストリーム内として標識付けられなくても、ペイロードパケットを転送することができる。   A node is marked as being in the data stream only by this flag. Nodes can forward payload packets without being marked as in the data stream.

ストリームに基づくリンクコスト
「ストリームに基づくリンクコスト」という用語は、本明細書では「フローに基づくホップコスト」と呼ばれることもある。
Stream-based link cost The term “stream-based link cost” may also be referred to herein as “flow-based hop cost”.

この代替実施形態は、ネットワーク内でノード更新を順序付けるのに使用されることができる。この順序付けは、データフローを保持し収束させるための更新を他の更新より先に送信することによって、ネットワークがはるかに効率的になることを可能にする。   This alternative embodiment can be used to order node updates within a network. This ordering allows the network to be much more efficient by sending updates to preserve and converge the data flow before other updates.

ノード知識を受け渡すのに使用されるsNodeKnowledge構造体は、(例えば)以下のように修正されることができる。
struct sNodeKnowledge [
Name NameOfTheNode;
Float fCumulativeLinkCost;
Float fCumulativeLinkCostFromStream;
]
The sNodeKnowledge structure used to pass node knowledge can be modified as follows (for example):
struct sNodeKnowledge [
Name NameOfTheNode;
Float fCumulativeLinkCost;
Float fCumulativeLinkCostFromStream;
]

fCumulativeLinkCostFromStreamは、fCumulativeLinkCostと同じ方法でインクリメントされる。しかし、ノードは、特定のノードに向うデータストリーム内にある場合、その直接接続ノードに更新を送信する前に、fCumulativeLinkCostFromStreamを0にリセットする。   fCumulativeLinkCostFromStream is incremented in the same way as fCumulativeLinkCost. However, if a node is in the data stream towards a particular node, it resets fCumulativeLinkCostFromStream to 0 before sending the update to its directly connected node.

fCumulativeLinkCostが0に初期化されたように、fCumulativeLinkCostFromStreamも0に初期化される。   Just as fCumulativeLinkCost is initialized to 0, fCumulativeLinkCostFromStream is also initialized to 0.

一代替実施形態は、ユーザデータメッセージがそのノードを通過するなど、その他の理由でも同様にfCumulativeLinkCostFromStreamをリセットさせる。当業者であれば、そのような変形を理解されよう。   An alternative embodiment causes fCumulativeLinkCostFromStream to be reset as well for other reasons, such as user data messages passing through that node. Those skilled in the art will appreciate such variations.

低帯域幅環境で役立つ一代替実施形態は、ノードが別のノードとユーザデータを交換していない場合、ノードにfCumulativeLinkCostFromStreamを非0値に設定させるものである。ノードは、別のノードと通信を行っている場合、fCumulativeLinkCostFromStreamを0に設定する。一代替実施形態はやはり、非0のfCumulativeLinkCostFromStreamを、このノードが確立したリンクに関するリンクコストの最小、最大、平均(など)の倍数に設定する。   An alternative embodiment useful in a low bandwidth environment is to have a node set fCumulativeLinkCostFromStream to a non-zero value if the node is not exchanging user data with another node. When a node is communicating with another node, it sets fCumulativeLinkCostFromStream to 0. One alternative embodiment again sets the non-zero fCumulativeLinkCostFromStream to a multiple of the minimum, maximum, average (etc.) link cost for the link established by this node.

fCumulativeLinkCostが無限大になった場合、最後の非無限大のfCumulativeLinkCostFromStream値を保持する。これは、無限大更新を直接接続ノードにいつ送信すべきかを命じるために使用される。   When fCumulativeLinkCost becomes infinite, the last non-infinite fCumulativeLinkCostFromStream value is held. This is used to command when an infinite update should be sent to the directly connected node.

ストリームに基づく代替リンクコスト
この実施形態は、ネットワークがノード知識を削除するのを助ける上でより役立つ点を除いて、先の実施形態と同様である。
Alternative Link Cost Based on Streams This embodiment is similar to the previous embodiment, except that it is more useful in helping the network remove node knowledge.

先の実施形態では、fCumulativeLinkCostFromStreamは、データストリーム内にあるとして標識付けられたノードに出会ったときに、0にリセットされた。この実施形態は、どのタイプの更新が送信されるかを変更する。   In the previous embodiment, fCumulativeLinkCostFromStream was reset to 0 when it encountered a node that was marked as being in the data stream. This embodiment changes what type of update is sent.

宛先ノードEを生成したノードA(これはノードAによって使用されるノード名Eを生成したノードAとしても説明され得る)は、それがノードEに向うデータストリーム内にあることを、直接接続ノードBによって伝えられた場合、その直接接続ノードBに、fCumulativeLinkCostFromStream=fCumulativeLinkCostとするノードEのためのノード更新を伝える。大部分の場合、この更新はこれらの値の両方を0に設定するが、それはノードAが名前Eを生成したためである。   The node A that generated the destination node E (which may also be described as the node A that generated the node name E used by the node A) indicates that it is in the data stream towards the node E If it is transmitted by B, the node update for the node E with fCumulativeLinkCostFromStream = fCumulativeLinkCost is transmitted to the directly connected node B. In most cases, this update sets both of these values to 0 because node A generated the name E.

ノードAにそれがデータストリーム内にあることを告げなかったその他のすべてのノードは、fCumulativeLinkCostFromStream!=fCumulativeLinkCostを伝えられる。例えば、
fCumulativeLinkCostFromStream = fCumulativeLinkCost + 0.1f;
All other nodes that did not tell Node A that it is in the data stream are fCumulativeLinkCostFromStream! = FCumulativeLinkCost is transmitted. For example,
fCumulativeLinkCostFromStream = fCumulativeLinkCost + 0.1f;

fCumulativeLinkCostは、通常は0であるので、これらの直接接続ノードは、0.1のfCumulativeLinkCostFromStreamと、0のfCumulativeLinkCostとを伝えられる。0.1は単なる代表例と見なされたい。   Since fCumulativeLinkCost is normally 0, these directly connected nodes are notified of fCumulativeLinkCostFromStream of 0.1 and fCumulativeLinkCost of 0. 0.1 should be considered a representative example.

宛先ノード名を生成したノードではないノード(この例ではノードA以外の任意のノード)が、「データストリーム内」として標識付けられ、fCumulativeLinkCostFromStream=fCumulativeLinkCostである場合、そのノードは、それを「データストリーム内」として標識付けなかったすべてのその直接接続ノードに、fCumulativeLinkCostFromStream=0とするノードEのための更新を伝える。ノードは、それをデータストリーム内として標識付けたノードに対しては、fCumulativeLinkCostFromStream=fCumulativeLinkCostとするノードEのための更新を伝える。   If a node that is not the node that generated the destination node name (any node other than node A in this example) is labeled as “in the data stream” and fCulativeLinkCostFromStream = fCumulativeLinkCost, then that node All its directly connected nodes that have not been labeled as “in” will be notified of updates for node E with fCumulativeLinkCostFromStream = 0. The node communicates updates for node E with fCumulativeLinkCostFromStream = fCumulativeLinkCost to the node that marked it as in the data stream.

この実施形態のどの時点でも、fCumulativeLinkCostが、fCumulativeLinkCostFromStreamに合わせて調整されることはない。常にfCumulativeLinkCostFromStreamが、fCumulativeLinkCostに対して調整される。   At no point in this embodiment, fCumulativeLinkCost is not adjusted to fCumulativeLinkCostFromStream. Always fCumulativeLinkCostFromStream is adjusted to fCumulativeLinkCost.

ノード更新の順序付け
大規模ネットワークでは、送信すべき大量のノード更新が存在し得る。この代替実施形態は、更新をそれらがどれほど重要かによって順序付けることを可能にする。
Node Update Ordering In a large network, there can be a large number of node updates to send. This alternative embodiment allows the updates to be ordered by how important they are.

この代替実施形態は、fCumulativeLinkCostFromStreamが使用されること、およびHSPPが使用されることを仮定する。それらの一方だけが使用される場合、使用されない実施形態が提供する順序付けは無視されたい。   This alternative embodiment assumes that fCumulativeLinkCostFromStream is used and HSPP is used. If only one of them is used, the ordering provided by the unused embodiment should be ignored.

システム内のすべてのノードは、選択された「最良隣接ノード」によってそれに送信されたfCumulativeLinkCostFromStream値によって順序付けられる(コネクションのリンクコストが直接接続ノードによって送信された値に追加される)。この順序付けリストは、(Javaの例では)TreeMapの形をとることができる。   All nodes in the system are ordered by the fCumulativeLinkCostFromStream value sent to it by the selected “best neighbor” (the link cost of the connection is added to the value sent by the directly connected node). This ordered list can take the form of a TreeMap (in the Java example).

先の実施形態が使用される場合、fCumulativeLinkCost=fCumulativeLinkCostFromStreamであり、かつノードがデータストリーム内として標識付けられているとき、それは、0のfCumulativeLinkCostFromStreamを有するかのように、TreeMapに追加されるべきである。   If the previous embodiment is used, when fCumulativeLinkCost = fCumulativeLinkCostFromStream and the node is labeled as in the data stream, it is added to the TreM as if it had a fCumulativeLinkCostFromStream to be 0. .

宛先ノード経路に対する更新が直接接続ノードに送信される必要がある場合、この宛先ノードは、直接接続ノードごとに保持されているTreeMap内に配置される。TreeMapは、項目を昇順キー順にそこから削除することを可能にするデータ構造である。これは、より重要な更新が、あまり重要でない更新より先に、直接接続ノードに送信されることを可能にする。   When an update to a destination node path needs to be sent to a directly connected node, this destination node is placed in a TreeMap held for each directly connected node. TreeMap is a data structure that allows items to be deleted therefrom in ascending key order. This allows more important updates to be sent to the directly connected nodes before less important updates.

このTreeMap内に配置された宛先ノードは、以下の場合を除いて、それらのfCumulativeLinkCostFromStream値によって順序付けられる。
1.このノードが、この宛先ノードのためのHSPPの経路内にあり、この直接接続ノードが、
a.コアへの経路内にあり、HSPPは通知HSPPであるか、またはただ1つのタイプのHSPPしかない場合、
b.このHSPPについて我々に伝えたノードの1つであり、HSPPは要求HSPPであるか、またはただ1つのタイプのHSPPしかない場合。
2.このノードが、この宛先ノードに向うデータストリーム内にある場合
(bIsInTheDataStream = true and fCumulativeLinkCost =
fCumulativeLinkCostFromStream)
Destination nodes placed in this TreeMap are ordered by their fCumulativeLinkCostFromStream values except in the following cases.
1. This node is in the HSPP path for this destination node, and this directly connected node is
a. If in the path to the core and the HSPP is a notification HSPP or there is only one type of HSPP,
b. One of the nodes that told us about this HSPP, where the HSPP is a requesting HSPP or there is only one type of HSPP.
2. If this node is in the data stream to this destination node
(bIsInTheDataStream = true and fCumulativeLinkCost =
fCumulativeLinkCostFromStream)

宛先ノードがこれら2つのグループの一方に属する場合、その項目は、直接接続ノードごとに保持される順序付けられた更新リストの先頭に配置される。このプロセスの擬似コードの代表例は、以下のようである。
float fTempCumLinkCostFStream = GetCumLinkCostFStream (NodeToUpdate);

if (NodeToUpdate for this connection belongs to group l or 2)
fTempCumLinkCostFStream = 0;

while (CurrrentConnection.OrderedUpdateTreeMap contains
fTempCumLinkCostFStream as a key)
[
Incrementf FempCumLinkCostFStream by a small amount
]

Add pair (fTempCumLinkCostFStream, NodeToUpdate) to
CurrrentConnection.OrderedUpdateTreeMap;
If the destination node belongs to one of these two groups, the item is placed at the top of the ordered update list maintained for each directly connected node. A typical example of pseudo code for this process is as follows.
float fTempCumLinkCostFStream = GetCumLinkCostFStream (NodeToUpdate);

if (NodeToUpdate for this connection belongs to group l or 2)
fTempCumLinkCostFStream = 0;

while (CurrrentConnection.OrderedUpdateTreeMap contains
fTempCumLinkCostFStream as a key)
[
Incrementf FempCumLinkCostFStream by a small amount
]

Add pair (fTempCumLinkCostFStream, NodeToUpdate) to
CurrrentConnection.OrderedUpdateTreeMap;

その後、宛先ノード経路更新が、この順序で送信される。宛先更新が処理されると、宛先ノードは、この順序付けられたリスト(CurrentConnection.OrderedUpdateTreeMap)から削除される。この順序付けは、より重要な更新があまり重要でない更新より先に送信されることを保証する。   Thereafter, destination node path updates are sent in this order. When the destination update is processed, the destination node is removed from this ordered list (CurrentConnection.OrderedUpdateTreeMap). This ordering ensures that more important updates are sent before less important updates.

fTempCumLinkCostFStreamも、どの宛先ノード更新が送信されるべきかを決定するために、コネクションごとに使用されるべきである。例えば、以下のようなfTempCumLinkCostFStream値を有する5つの宛先ノードが存在するとする。
1.202 −宛先ノードD
1.341 −宛先ノードF
3.981 −宛先ノードG
8.192 −宛先ノードB
9.084 −宛先ノードM
fTempCumLinkCostFStream should also be used for each connection to determine which destination node updates should be sent. For example, assume that there are five destination nodes with fTempCumLinkCostFStream values as follows:
1.202—Destination Node D
1.341-Destination node F
3.981-Destination Node G
8.192-Destination Node B
9.04-Destination node M

直接接続ノードは、それに送信される宛先ノードを最大4つ要求する。このノードは、このリストの最初の4つだけを送信する(ノードは、宛先ノードMのための更新を送信しない)。   A directly connected node requests up to four destination nodes to be sent to it. This node sends only the first four of this list (the node does not send updates for destination node M).

宛先ノードGがそのfTempCumLinkCostFStreamを3.981から12.231に変更した場合、新しいリストは、以下のようになる。
1.202 −宛先ノードD
1.341 −宛先ノードF
8.192 −宛先ノードB
9.084 −宛先ノードM
12.231 −宛先ノードG
If destination node G changes its fTempCumLinkCostFSStream from 3.981 to 12.231, the new list is:
1.202—Destination Node D
1.341-Destination node F
8.192-Destination Node B
9.04-Destination node M
12.231-destination node G

この更新に応答して、このノードは、宛先ノードGと宛先ノードMの両方の更新をスケジュールする。(HSPPまたはデータストリームを仮定しない)CurrentConnection.OrderedUpdateTreeMap内の順序付けられたペアは、以下のようである。
位置1 −(9.084,M)
位置2 −(12.231,G)
In response to this update, this node schedules updates for both destination node G and destination node M. (Not assuming HSPP or data stream) CurrentConnection. The ordered pairs in OrderedUpdateTreeMap are as follows:
Position 1- (9.084, M)
Position 2-(12.231, G)

このノードは、その後、ノードGのための無限大更新を送信する。このノードは、その後、ノードMのための遅延送信をスケジュールする(「遅延送信」を参照)。   This node then sends an infinite update for node G. This node then schedules a delayed transmission for node M (see “Delayed Transmission”).

無限大宛先ノード更新は、この情報を渡すのに必要とされるメッセージが、無限大更新を獲得するノードのために送信されることを確実にする。この例は、いくつかの異なる実施形態を含み、使用されないものについては、当業者は関連項目を省略することができる。
a. fCumulativeLinkCost = INFINITY
b. fCumulativeLinkCostFromStream = INFINITY
c. bIsBestNeighbour = FALSE
d. bIsInDataStream = FALSE
The infinity destination node update ensures that the message required to pass this information is sent for the node that obtains the infinity update. This example includes several different embodiments, and those that are not used can be omitted by those skilled in the art.
a. fCumulativeLinkCost = INFINITY
b. fCumulativeLinkCostFromStream = INFINITY
c. bIsBestNeighbour = FALSE
d.bIsInDataStream = FALSE

宛先ノードMのための更新が送信されると、それは非無限大になる。   When an update for destination node M is sent, it becomes non-infinite.

遅延送信
この代替実施形態は、ノードがネットワークから削除された場合に、ノード知識がネットワークから削除されることを助ける。
Delayed transmission This alternative embodiment helps to remove node knowledge from the network if the node is removed from the network.

ノード知識がネットワークから削除されないと、適切な階層およびコアがトラブルに見舞われる。   If node knowledge is not removed from the network, the proper hierarchy and core will be in trouble.

これが宛先ノード更新が直接接続ノードに送信される最初である場合、またはこの直接接続ノードに送信された最後の更新が無限大のfCumulativeLinkCostを有する場合、更新は遅延させられるべきである。   If this is the first time a destination node update is sent to the directly connected node, or if the last update sent to this directly connected node has an infinite fCumulativeLinkCost, the update should be delayed.

例えば、コネクションが10msの待ち時間を有する場合、更新は、(待ち時間+1)×2ms、またはこの例では22msだけ遅延させられるべきである。この待ち時間は、制御パケット更新の間の遅延の倍数も超えるべきである(「伝播特性」を参照)。   For example, if the connection has a latency of 10 ms, the update should be delayed by (latency + 1) × 2 ms, or 22 ms in this example. This latency should also be a multiple of the delay between control packet updates (see “Propagation Characteristics”).

当業者であれば、各自の応用例にとって良好な遅延値を実験して見出すことができよう。   Those skilled in the art will be able to experiment to find a good delay value for their application.

以下のいずれかの条件が満たされる場合は、例外である。
1.このノードが、この宛先ノードのためのHSPPの経路内にあり、この直接接続ノードが、
a.コアへの経路内にあり、HSPPは通知HSPPであるか、またはただ1つのタイプのHSPPしかない場合、
b.このHSPPについて我々に伝えたノードの1つであり、HSPPは要求HSPPであるか、またはただ1つのタイプのHSPPしかない場合。
2.このノードが、この宛先ノードに向うデータストリーム内にある場合。
(bIsInTheDataStream = true and fCumulativeLinkCost =
fCumulativeLinkCostFromStream)
An exception is made if any of the following conditions are met:
1. This node is in the HSPP path for this destination node, and this directly connected node is
a. If in the path to the core and the HSPP is a notification HSPP or there is only one type of HSPP,
b. One of the nodes that told us about this HSPP, where the HSPP is a requesting HSPP or there is only one type of HSPP.
2. If this node is in the data stream towards this destination node.
(bIsInTheDataStream = true and fCumulativeLinkCost =
fCumulativeLinkCostFromStream)

(CurrentConnection.OrderedUpdateTreeMap内に配置されることによって)無限大更新が送信されるようスケジュールはされたが、(遅延させられているため)非無限大更新が送信されるようスケジュールされるまで送信されない場合、無限大が最初に送信されなければならず、その後、非無限大更新は、送信される前に再び遅延させられるべきである。   When an infinite update is scheduled to be sent (by being placed in CurrentConnection.OrderedUpdateTreeMap), but not sent until it is scheduled to be sent (because it is delayed) Infinity must be sent first, then non-infinity updates should be delayed again before being sent.

宛先ノードを無限大から非無限大に循環させる
この代替実施形態は、ノードがネットワークから削除された場合に、ノード知識がネットワークから削除されることを助ける。
This alternative embodiment of cycling the destination node from infinity to non-infinity helps the node knowledge be removed from the network when the node is removed from the network.

ノードAについての以下の基準のいずれかが満たされる場合、更新が直接接続ノードNに送信される。
1.ノードに送信され得るノード更新の数を制限する代替実施形態が使用され、
直接接続ノードNが、この宛先ノードAのための非無限大更新を送信するが、ノードAの新しいfTempCumLinkCostFStream値(上を参照)が、X個(Xは直接接続ノードNが伝えられることを要求したノードの最大数)の他のノードのfTempCumLinkCostFStream値より大きいという基準。
2.ノードAのfTempCumLinkCostFStreamが、この直接接続ノードNに送信されたどの他のノードのfTempCumLinkCostFStreamより大きくなるという基準。
An update is sent to the directly connected node N if any of the following criteria for node A is met:
1. An alternative embodiment is used that limits the number of node updates that can be sent to a node,
Directly connected node N sends a non-infinite update for this destination node A, but node A's new fTempCumLinkCostFSstream value (see above) is X (X requests that directly connected node N be conveyed) Criterion that it is greater than the fTempCumLinkCostFStream value of the other node.
2. Criteria that node A's fTempCumLinkCostFStream is greater than any other node's fTempCumLinkCostFStream sent to this directly connected node N.

このノードは、この宛先ノードAのための無限大更新を、直接接続ノードNに送信する。その後、適切な遅延(遅延送信を参照)の後、このノードは、このノードAが依然として基準1を満たしている場合を除いて、この宛先ノードのための非無限大更新を、直接接続ノードに送信する。   This node sends an infinite update for this destination node A to the directly connected node N. Then, after an appropriate delay (see Delayed Transmission), this node will send a non-infinite update for this destination node to the directly connected node, unless this node A still meets criterion 1. Send.

これは、不良経路データをネットワークから削除し、自動的にループを削除することを助けるのに使用される手法の一部である。   This is part of the technique used to help remove bad path data from the network and automatically remove loops.

無限大更新は、fCumulativeLinkCost値が無限大に設定される更新である(より完全な定義については上を参照)。   An infinite update is an update in which the fCumulativeLinkCost value is set to infinity (see above for a more complete definition).

宛先ノードが先の基準を満たすときに、無限大更新を(しばらく後に同じ宛先ノードのための非無限大更新を)送信するよう決定するのが、推奨される手法である。遅延非無限大更新がその後に続く、無限大更新をトリガする代替手法は、
1.fTempCumLinkCostFStreamが、一定の期間のうちに、ある比率または量だけ増加したとき、例えば、fTempCumLinkCostFStreamが、5秒以内にコネクションコストの10倍より多く増加した場合に行うもの、
2.順序付けされたリスト内でこの宛先ノードの位置が、X秒のうちに、リスト内で(例えば)位置100個分より多く移動するか、または(例えば)10%より大きく移動したときに行うものである(ただし、これらに限定されない)。
It is a recommended approach to decide to send an infinity update (after some time a non-infinity update for the same destination node) when the destination node meets the previous criteria. An alternative technique for triggering an infinite update followed by a delayed non-infinite update is
1. When fTempCumLinkCostFS is increased by a certain ratio or amount within a certain period of time, for example, when fTempCumLinkCostFS is increased more than 10 times the connection cost within 5 seconds,
2. This is done when the position of this destination node in the ordered list moves more than (for example) 100 positions in the list or (for example) more than 10% within X seconds. Yes (but not limited to).

当業者であれば、無限大/非無限大送信をトリガするための、fTempCumLinkCostFStreamの適切な増加と、適切なタイミング値とを決定することができよう。   One skilled in the art will be able to determine an appropriate increase in fTempCumLinkCostFSStream and an appropriate timing value to trigger an infinite / non-infinite transmission.

一代替実施形態は、fTempCumLinkCostFStreamの代わりに、fCumulativeLinkCostFromStreamを使用することができる。   An alternative embodiment may use fCumulativeLinkCostFromStream instead of fTempCumLinkCostFStream.

これまで未知だった宛先ノードがリストの先頭に出現した場合、直接接続ノードは以前に非無限大更新を伝えられていないので、無限大は送信される必要がない。しかし、直接接続ノードにこの宛先ノードについて伝えることは、遅延させられるべきである。   If a previously unknown destination node appears at the top of the list, infinity does not need to be transmitted because the directly connected node has not previously been informed of non-infinite updates. However, telling the directly connected node about this destination node should be delayed.

この遅延送信は、以下の条件のいずれかが満たされる場合は、行う必要がない。
1.このノードが、この宛先ノードのためのHSPPの経路内にあり、この直接接続ノードが、
c.コアへの経路内にあり、HSPPは通知HSPPであるか、またはただ1つのタイプのHSPPしかない場合、
d.このHSPPについて我々に伝えたノードの1つであり、HSPPは要求HSPPであるか、またはただ1つのタイプのHSPPしかない場合。
2.このノードが、この宛先ノードに向うデータストリーム内にある場合。
(bIsInTheDataStream = true and fCumulativeLinkCost =
fCumulativeLinkCostFromStream)
This delayed transmission need not be performed when any of the following conditions is satisfied.
1. This node is in the HSPP path for this destination node, and this directly connected node is
c. If in the path to the core and the HSPP is a notification HSPP or there is only one type of HSPP,
d. One of the nodes that told us about this HSPP, where the HSPP is a requesting HSPP or there is only one type of HSPP.
2. If this node is in the data stream towards this destination node.
(bIsInTheDataStream = true and fCumulativeLinkCost =
fCumulativeLinkCostFromStream)

エンドユーザソフトウェア
このネットワークシステムおよび方法は、大部分のその他のネットワークプロトコルをエミュレートするために、またはまったく新しいネットワークプロトコルの基礎として、使用されることができる。
End User Software This network system and method can be used to emulate most other network protocols or as the basis for entirely new network protocols.

それは、その他のプロトコルの「ルーティング中枢部」の代替として働くこともできる。   It can also serve as a “routing center” replacement for other protocols.

本明細書では、エミュレートされ得るプロトコルの一例として、TCP/IPが使用される。一例としてのTCP/IPの使用には、本発明の応用例をTCP/IPに限定する意図はない。   In this specification, TCP / IP is used as an example of a protocol that can be emulated. The use of TCP / IP as an example is not intended to limit the application of the present invention to TCP / IP.

TCP/IPでは、ノードは、起動されたとき、その存在をネットワークに知らせない。知らせる必要がないのは、ノードの名前(IPアドレス)が、ノードのロケーションを決定するからである。本発明では、ノードは、その存在をネットワークに知られることを必要とし、自身への保証された経路をネットワークに提供する必要がある。このことは、別の場所ではるかに詳しく説明される。   In TCP / IP, when a node is activated, it does not inform the network of its presence. There is no need to inform because the name (IP address) of the node determines the location of the node. In the present invention, a node needs to be known to the network for its presence and needs to provide a guaranteed path to itself to the network. This is explained in more detail elsewhere.

エンドユーザソフトウェア(「EUS」)は、コネクションを確立することを望む場合、TCP/IPと非常に類似した方法でそれを行うことができる。TCP/IPでは、接続コードは、以下のものと類似している。
SOCKET sNewSocket = Connect(IP Address, port);
If end user software ("EUS") wishes to establish a connection, it can do so in a manner very similar to TCP / IP. In TCP / IP, the connection code is similar to:
SOCKET sNewSocket = Connect (IP Address, port);

本発明では、「IPアドレス」は、グローバル一意識別子(「GUID」)で置き換えられる。
SOCKET sNewSocket = Connect(GUID,port).
In the present invention, “IP address” is replaced with a globally unique identifier (“GUID”).
SOCKET sNewSocket = Connect (GUID, port).

実際、IPアドレスが一意であることが保証され得るならば、IPアドレスは、GUIDとして機能して、この新しいネットワーク発明による既存のTCP/IPネットワークスタックのシームレスな置き換えを提供することができる。   In fact, if the IP address can be guaranteed to be unique, the IP address can act as a GUID to provide a seamless replacement of the existing TCP / IP network stack according to this new network invention.

一意IPアドレスを保証する1つの方法は、各ノードにランダムGUIDを生成させ、その後、それを使用させて、GUIDとして使用され得る一意IPアドレスを要求するための通信をDHCP(動的ホスト構成プロトコル)ライクなサーバと行わせることである。ノードは、その後、最初のGUID名を廃棄し、このIPアドレスだけをGUIDとして使用する。この文脈でIPアドレスを使用することは、IPアドレスが必ずしもネットワーク階層におけるノード位置を反映する必要がないことを意味する。   One way to guarantee a unique IP address is to have each node generate a random GUID and then use it to direct communication to request a unique IP address that can be used as a GUID (Dynamic Host Configuration Protocol). ) To do with a like server. The node then discards the first GUID name and uses only this IP address as the GUID. Using an IP address in this context means that the IP address does not necessarily have to reflect the node location in the network hierarchy.

宛先ノードへのコネクションが一度要求されると、ネットワークは、(そのような経路が存在すれば)宛先への経路を決定し、最適経路が見出されるまで、継続的に経路を改善する。   Once a connection to the destination node is requested, the network determines the route to the destination (if such a route exists) and continually improves the route until an optimal route is found.

受信側は、接続ノードのIPアドレスを決定するための要求が、代わりにGUIDを生成する点を除いて(またはIPアドレスが、GUIDとして使用されるアドレスである点を除いて)、TCP/IPと同じようである。   The receiving side, except that the request to determine the IP address of the connecting node generates a GUID instead (or the IP address is the address used as the GUID), TCP / IP It seems to be the same.

この手法は、ネットワークを介するルーティングを提供し、当業者であれば、異なるフロー制御手法が異なるネットワークにおいてどのようにより良く機能し得るかを理解することができよう。例えば、無線ネットワークは、着信データ速度が発信コネクション速度を超えたときにパケットを喪失しない手法を必要とすることがある。   This approach provides routing through the network and those skilled in the art will understand how different flow control approaches may work better in different networks. For example, a wireless network may require a technique that does not lose packets when the incoming data rate exceeds the outgoing connection rate.

図28は、このルーティング方法がTCP/IP実施例に適合された一例である。   FIG. 28 shows an example in which this routing method is adapted to the TCP / IP embodiment.

この新しいルーティング手法がエンドユーザアプリケーション用のTCP/IPライクなインターフェースを可能にすることを、当業者であれば理解されよう。これは、このルーティング手法をどれか特定のインターフェース(例えばTCP/IP)またはアプリケーションに限定することを意図していない一例である。   One skilled in the art will appreciate that this new routing approach enables a TCP / IP-like interface for end-user applications. This is an example that is not intended to limit this routing approach to any particular interface (eg, TCP / IP) or application.

ネットワークを介して2つのノードを接続する
以下に示すのは、このネットワーク内の2つのノードを接続するのに使用され得る1つの手法の一例である。この例は(本明細書内のすべての例と同様に)、本特許の範囲を限定することを意図していない。当業者であれば、多くの変形を知っていよう。
Connecting two nodes through a network The following is an example of one approach that can be used to connect two nodes in this network. This example (as well as all examples herein) is not intended to limit the scope of this patent. Those skilled in the art will know many variations.

HSPPを使用する代替実施形態が使用されない場合、HSPPについての部分を無視されたい。   If an alternative embodiment using HSPP is not used, ignore the part about HSPP.

ノードAは、ノードBとのコネクションを確立することを望む場合、最初にすべての直接接続ノードに(先に説明された)要求HSPPを送出する。この要求HSPPは、ノードBについての経路情報をノードAに取り込み、保持する。この要求HSPPは、ノードAがノードBについての知識をすでに有していても、送出される。   If node A wants to establish a connection with node B, it first sends a request HSPP (described above) to all directly connected nodes. This request HSPP captures and holds the path information about the node B in the node A. This request HSPP is sent even if node A already has knowledge of node B.

「優先通知HSPP」を使用する代替実施形態が使用される場合、ノードAは、その通知HSPPを優先通知HSPPに変更することができ、すべての直接接続ノードに通知することができる。これは、低帯域幅の移動環境における接続性を助けることができるが、それは、通信中のノードが、通信中でないノードより先に、その情報を広めることを可能にするからである。   If an alternative embodiment using “priority notification HSPP” is used, node A can change its notification HSPP to priority notification HSPP and notify all directly connected nodes. This can help connectivity in a low bandwidth mobile environment because it allows communicating nodes to disseminate that information before nodes that are not communicating.

このHSPPは、コアに到達する前にノード経路知識に遭遇したとしても、コアまで進む。   This HSPP goes to the core even if it encounters node path knowledge before reaching the core.

ノードAは、ノードBに到るための非無限大の最良ネクストステップを一度有すると、ノードBの特定ポートに向けて「接続要求メッセージ」を送出する。このリクエストは、ノードBに向うメッセージにとっての「最良隣接ノード」として選択された直接接続ノードに送信される。   Once the node A has a non-infinite best next step for reaching the node B, the node A sends a “connection request message” toward the specific port of the node B. This request is sent to the directly connected node selected as the “best neighbor” for the message towards Node B.

「データストリームを標識付ける」実施形態が使用される場合、ノードAは、「最良隣接ノード」として選択されたその直接接続ノードに、それがノードBに向うデータストリーム内にあることを伝える。   When the “mark data stream” embodiment is used, node A tells its directly connected node selected as “best neighbor” that it is in the data stream towards node B.

ポートの使用は単なる例であって、本発明の範囲を限定することを意図していない。可能な代替は、特に着信コネクションのための新しいノード名とすることができる。当業者であれば、変形を知っていよう。   The use of ports is merely an example and is not intended to limit the scope of the invention. A possible alternative could be a new node name, especially for incoming connections. Those skilled in the art will know the variations.

ノードAは、sConnectionAcceptメッセージが受信されるか、または受信されずにタイムアウトが発生するまで(例えば120秒)、このメッセージをX秒(例えば15秒)おきに送信し続ける。接続要求メッセージは、ノードAのGUIDと、接続応答メッセージを送信すべきポートを含むことができる。接続要求メッセージは、ノードBがノードAからの重複リクエストを検出して無視できるようにするために使用されるnUniqueRequestIDも含むことができる。   Node A continues to send this message every X seconds (eg 15 seconds) until a sConnectionAccept message is received or a timeout occurs without being received (eg 120 seconds). The connection request message may include the node A GUID and the port to which the connection response message should be sent. The connection request message can also include an nUniqueRequestID that is used to allow Node B to detect and ignore duplicate requests from Node A.

接続要求メッセージは、(例えば)以下のようになる。
struct sConnectionRequest [

// the name of node A, could be replaced with a number
// for reduced overhead.
sNodeName nnNameA;

// Which port on node A to reply to
int nSystemDataPort;

// Which port to send end user messages to on node A
int nUserDataPort;

// a unique request id that node B can use to
// decide which duplicate requests to ignore
int nUniqueRequestID;

]
The connection request message is (for example) as follows:
struct sConnectionRequest [

// the name of node A, could be replaced with a number
// for reduced overhead.
sNodeName nnNameA;

// Which port on node A to reply to
int nSystemDataPort;

// Which port to send end user messages to on node A
int nUserDataPort;

// a unique request id that node B can use to
// decide which duplicate requests to ignore
int nUniqueRequestID;

]

ノードBは、ノードAから「接続要求」メッセージを受信すると、ノードAのための要求HSPPを生成し、それをすべての直接接続ノードに送信する。これは、ノードAについての経路情報をノードBに取り込み、保持する。   When Node B receives the “Connection Request” message from Node A, it generates a request HSPP for Node A and sends it to all directly connected nodes. This captures and holds the path information for node A in node B.

「優先通知HSPP」を使用する代替実施形態が使用される場合、ノードBは、その通知HSPPを優先通知HSPPに変更することができ、すべての直接接続ノードに通知することができる。これは、低帯域幅の移動環境における接続性を助けることができる。   If an alternative embodiment using “priority notification HSPP” is used, Node B can change its notification HSPP to priority notification HSPP and can notify all directly connected nodes. This can aid connectivity in low bandwidth mobile environments.

「データストリーム内」の代替実施形態が使用される場合、ノードBは、ノードAに到るためのその最良ネクストステップがどこであるかが分かるまで待ち、その後、ノードAへの経路を「データストリーム内」として標識付ける。   If an alternative embodiment “in the data stream” is used, node B waits until it knows where its best next step to reach node A and then routes to node A “data stream” Label as "inside".

ノードBは、その後、ノードAの指定ポート(sConnectionRequest.nSystemDataPort)にsConnectionAcceptメッセージを送信する。このメッセージは、以下のようである。
struct sConnectionAccept [

// the name of node B
sNodeName nnNameB;

// the port for user data on node B
int nUserDataPortB;

// the unique request ID provided by A in the
// sConnectionRequest message
int nUniqueRequestID;
]
Thereafter, the node B transmits an sConnectionAccept message to the designated port (sConnectionRequest.nSystemDataPort) of the node A. The message is as follows:
struct sConnectionAccept [

// the name of node B
sNodeName nnNameB;

// the port for user data on node B
int nUserDataPortB;

// the unique request ID provided by A in the
// sConnectionRequest message
int nUniqueRequestID;
]

sConnectionAcceptメッセージは、ノードAがsConnectionConfirmedメッセージを送信し、それがノードBによって受信されるか、またはタイムアウトが発生するまで、送信される。   The sConnectionAccept message is sent until node A sends an sConnectionConfirmed message that is received by node B or a timeout occurs.

sConnectionConfirmedメッセージは、以下のようである。
struct sConnectionConfirmed [

// the name of node A, could be replaced with a number
// for reduced overhead.
sNodeNarne nnNameA;

// the unique request ID provided by A in the
// sConnectionRequest message
int nUniqueRequestID;

]
The sConnectionConfirmed message is as follows.
struct sConnectionConfirmed [

// the name of node A, could be replaced with a number
// for reduced overhead.
sNodeNarne nnNameA;

// the unique request ID provided by A in the
// sConnectionRequest message
int nUniqueRequestID;

]

処理中にタイムアウトが発生した場合、接続は失敗したと見なされ、廃棄される。両方のノードが生成した要求HSPPは削除され、「データストリーム内」フラグは(追加されていたならば)削除される。   If a timeout occurs during processing, the connection is considered to have failed and is discarded. The request HSPP generated by both nodes is deleted, and the “in data stream” flag (if added) is deleted.

コネクションが一度確立されると、両方のノードは、ユーザデータメッセージを互いのそれぞれのポートに送信することができる。これらのメッセージは、その後、(TCP/IPの場合)ソケットを介してエンドユーザソフトウェアに転送される。   Once the connection is established, both nodes can send user data messages to each other's respective ports. These messages are then forwarded to the end user software (in the case of TCP / IP) via a socket.

一代替実施形態は、コネクションが確立されることを必要とせず、宛先ノードへの経路が発見されたら、EUSメッセージ/ペイロードをただ送信する。   An alternative embodiment does not require a connection to be established, and simply sends an EUS message / payload once the route to the destination node is found.

ノード名最適化およびメッセージ
この代替実施形態は、メッセージおよび名前の受け渡しを最適化するために使用されることができる。
Node name optimization and messages This alternative embodiment can be used to optimize message and name passing.

あらゆるノード更新およびEUSメッセージ/ペイロードパケットは、それらが参照する宛先ノードを識別する方法を有する必要がある。ノード名およびGUIDは、簡単に長くなる傾向にあり、あらゆるメッセージおよびノード更新と一緒に送信するのは非効率的である。ノードは、長い名前を表す番号を使用することによって、これらの送信をより効率的にすることができる。   Every node update and EUS message / payload packet needs to have a way to identify the destination node to which they refer. Node names and GUIDs tend to be long and are inefficient to send with every message and node update. Nodes can make these transmissions more efficient by using numbers representing long names.

例えば、ノードAは、「THISISALONGNODENAME.GUID」という名前の宛先ノードについてノードBに伝えたいと望む場合、最初に、
1 = 'THISISALONGNODENAME.GUID'
とノードBに伝えることができる。
For example, if node A wants to tell node B about a destination node named “THISALONGNODENAM.GUID” first,
1 = 'THISISALONGNODENAME.GUID'
To Node B.

このための構造体は、(例えば)以下のようにすることができる。
struct sCreateQNameMapping [

// size of the name for the node
int nNameSize;
// name of the node
char cNodeName[Size];
// the number that will represent this node name
int nMappedNumber;
];
The structure for this can be (for example) as follows.
struct sCreateQNameMapping [

// size of the name for the node
int nNameSize;
// name of the node
char cNodeName [Size];
// the number that will represent this node name
int nMappedNumber;
];

その後、ノードAは、宛先ノード更新またはメッセージを送信したいと望むたびに、長いノード名を送信する代わりに、そのノード名を表す番号(sCreateQNameMapping.nMappedNumber)を送信することができる。ノードAは、「THISISALONGNODENAME.GUID」と呼ばれる宛先ノードについてノードBに伝えたいと望むことはもはやないと決定を下した場合、そのマッピングについての記憶を消すようにノードBに命じることができる。   Thereafter, whenever node A wishes to send a destination node update or message, node A can send a number representing the node name (sCreateQNameMapping.nMappedNumber) instead of sending the long node name. If Node A decides that it no longer wants to tell Node B about the destination node called “THISALONGNODENAME.GUID”, it can tell Node B to erase the memory for that mapping.

その構造体は、以下のようである。
struct sRemoveQNameMapping [
int nMappedNumber;
];
The structure is as follows.
struct sRemoveQNameMapping [
int nMappedNumber;
];

各ノードは、どの名前がどの数にマッピングされるかについて、それ独自の内部マッピングを保持する。各ノードは、直接接続ノードからの名前を、それ独自の命名体系に変換することができるように、変換表を保持する。例えば、ノードAは、
1 = 'THISISALONGNODENAME.GUID'
を使用することができ、ノードBは、
632 = 'THISISALONGNODENAME.GUID'
を使用する。
Each node maintains its own internal mapping of which names are mapped to which numbers. Each node maintains a translation table so that names from directly connected nodes can be translated into its own naming scheme. For example, node A
1 = 'THISISALONGNODENAME.GUID'
Node B can use
632 = 'THISISALONGNODENAME.GUID'
Is used.

したがって、ノードBは、ノードAの番号付与体系を、ノードBにとって理解できる番号付与体系に変換することを可能にするマッピングを有する。この例では、以下のようになる。
ノードA ノードB
1 632
... ...
... ...
Thus, Node B has a mapping that allows it to translate Node A's numbering scheme into a numbering scheme that is understandable to Node B. In this example, it is as follows.
Node A Node B
1 632
. . . . . .
. . . . . .

この番号付与体系の使用はまた、メッセージがどの宛先ノードに宛られたものかに関してメッセージに容易にタグを付けることを可能にする。例えば、システムは、100バイトのメッセージを有するとき、メッセージが送信される宛先ノード名を格納するための4バイトを先頭に確保し、その後にメッセージが続くようにする。こうすると、全体メッセージサイズは104バイトになる。この構造体の一例は、メッセージのサイズも含む。
struct sMessage [

// the number that maps to the name of the node where
// this message is being sent to
int uiNodeID;

// the size of the payload packet
int uiMsgSize;
// the actual payload packet
char cMsg[uiMsgSize];
]
The use of this numbering scheme also allows messages to be easily tagged as to which destination node the message is destined for. For example, when the system has a message of 100 bytes, the system reserves 4 bytes for storing the destination node name to which the message is transmitted at the head, and the message follows. In this way, the total message size is 104 bytes. An example of this structure also includes the size of the message.
struct sMessage [

// the number that maps to the name of the node where
// this message is being sent to
int uiNodeID;

// the size of the payload packet
int uiMsgSize;
// the actual payload packet
char cMsg [uiMsgSize];
]

このメッセージがノードによって受信されると、そのノードは、その変換表を参照し、宛先マッピング番号をそれ独自のマッピング番号に変換する。ノードは、その後、このマッピング番号を使用して、このノードがペイロードパケットの宛先であるかどうか、またはこのペイロードパケットを別の直接接続ノードに送信する必要があるかどうかを決定することができる。   When this message is received by a node, the node looks up its translation table and translates the destination mapping number into its own mapping number. The node can then use this mapping number to determine whether this node is the destination of the payload packet or whether it needs to be sent to another directly connected node.

これらのクイック宛先番号は、当業者によってTCP/IPヘッダに配置されることができる。   These quick destination numbers can be placed in the TCP / IP header by those skilled in the art.

名前マッピングをいつ削除すべきか
この代替実施形態は、もはや必要ではない名前マッピングを削除するのを助けるために使用される。
When to delete a name mapping this alternative embodiment is used to help remove a name mapping is no longer required.

宛先ノードが無限大のfCurnulativeLinkCostをXms(例えば5000ms)より長く継続的にもち続け、この更新をすべての直接接続ノードに送信した場合、このノードは、この宛先ノードについての知識を削除する。   If the destination node continues to have an infinite fCurativeLinkCost longer than Xms (eg 5000 ms) and sends this update to all directly connected nodes, it deletes knowledge about this destination node.

最初、このノードは、この宛先ノードに関連するすべてのメモリを解放し、直接接続ノードによってそれに提供された更新を解除する。このノードは、その宛先ノードに送信するのを待っているメッセージも削除する。   Initially, this node releases all memory associated with this destination node and releases the updates provided to it by the directly connected node. This node also deletes messages waiting to be sent to its destination node.

次に、このノードは、この宛先ノードについての番号−>名前マッピングを記憶から消すよう、その直接接続ノードに命じる。   The node then commands its directly connected node to remove the number-> name mapping for this destination node from storage.

すべての直接接続ノードが、このノードもこの宛先ノードについてのそれらの番号−>名前マッピングを記憶から消すことができることをこのノードに伝えた場合、このノードは、それ独自の番号−>名前マッピングを削除することができる。   If all directly connected nodes tell this node that this node can also remove their number-> name mapping for this destination node from memory, this node will change its own number-> name mapping. Can be deleted.

この段階で、この宛先ノードに関連するメモリはもはや存在しない。   At this stage, there is no longer any memory associated with this destination node.

ノードは、新しい番号を使用する前に、記憶から消された内部ノード番号を再利用するよう試みるべきである。   A node should attempt to reuse an internal node number that has been erased from storage before using the new number.

より簡単な高速ルーティング
この代替実施形態は、パケットのルーティングを高速化するために使用される。
Simpler Fast Routing This alternative embodiment is used to speed up packet routing.

最適化として、どの直接接続ノードがメッセージを受信するかを示す別の列を名前マッピング表に追加する。   As an optimization, another column is added to the name mapping table indicating which directly connected nodes receive the message.

したがって、ノードBは、ノードAの番号付与体系を、ノードBにとって理解できる番号付与体系に変換することを可能にするマッピングを有する。この例では、以下のようになる。
ノードA ノードB メッセージが送信される直接接続ノード
1 632 7
... ...
... ...
Thus, Node B has a mapping that allows it to translate Node A's numbering scheme into a numbering scheme that is understandable to Node B. In this example, it is as follows.
Node A Node B Directly connected node to which the message is sent 1 632 7
. . . . . .
. . . . . .

これは、ルーティングプロセス全体が、1つの配列検索となることを可能にする。ノードAが宛先ノード1を有するメッセージをノードBに送信する場合、ルーティングプロセスは、以下のようになる。
1.ノードBが問題のマッピングへのポインタを生成する。
sMapping *pMap = &NodeMapping[pMessage->uiNodelD];
2.ノードBが名前を変換する。
pMessage->uiNodeID = pMap->uiNodeBName;
3.その後、メッセージを指定された直接接続ノードに転送する。
RouteMessage(pMessage,pMap->uiDirectlyConnectedNodeID);
This allows the entire routing process to be a single sequence search. When node A sends a message with destination node 1 to node B, the routing process is as follows.
1. Node B generates a pointer to the mapping in question.
sMapping * pMap = & NodeMapping [pMessage->uiNodelD];
2. Node B translates the name.
pMessage-> uiNodeID = pMap->uiNodeBName;
3. The message is then forwarded to the designated directly connected node.
RouteMessage (pMessage, pMap->uiDirectlyConnectedNodeID);

この方式が正しく機能するには、ノードは、それがメッセージを転送するどの直接接続ノードを変更するかを決めた場合、すべての直接接続ノードについてのこれらのルーティング表を更新する必要がある。   In order for this scheme to work correctly, a node needs to update these routing tables for all directly connected nodes if it decides which directly connected node to forward the message to.

直接接続ノードが内部コード番号を再利用し、これらのノードが知っている宛先ノードの数が、これらのノード番号を保存するために利用可能なメモリ量より少ない場合、ノードは、メッセージを送信するために配列検索を使用することができる。   If directly connected nodes reuse internal code numbers and the number of destination nodes they know is less than the amount of memory available to store these node numbers, the nodes send messages Sequence search can be used for this.

これは、O(1)メッセージルーティングをノードに提供する(上記を参照)。直接接続ノードによって提供されるノード番号が、検索配列のために利用可能なメモリのサイズを超えた場合(しかし、全ノード数は依然としてメモリに適合する場合)、ノードは、配列検索の使用からハッシュマップ検索の使用に移行することができる。   This provides O (1) message routing to the node (see above). If the node number provided by the directly connected node exceeds the size of memory available for the search array (but the total number of nodes still fits in memory), the node hashes from using array search You can move to using map search.

より複雑な高速ルーティング
この代替実施形態は、O(1)ルーティングが使用され得るよう保証することを助け、ハッシュマップの使用を回避する。
More complex fast routing This alternative embodiment helps to ensure that O (1) routing can be used and avoids the use of hash maps.

ノードが常に高速O(1)配列検索ルーティングを実行できるよう保証するため、ノードは、各直接接続ノードに一意のノード番号−名前マッピングを提供することができる。これは、直接接続ノードが、メッセージルーティングを実行するためにハッシュテーブルの使用に頼る必要がないよう保証する(上記を参照)。   To ensure that the node can always perform fast O (1) sequence search routing, the node can provide a unique node number-name mapping to each directly connected node. This ensures that directly connected nodes do not have to rely on the use of a hash table to perform message routing (see above).

直接接続ノードのためのこれらの一意の番号−名前マッピングを生成するとき、このノードは、すべての可能な番号を確実に再利用するようにする。   When generating these unique number-name mappings for directly connected nodes, this node ensures that all possible numbers are reused.

これらの番号を再利用することによって、マッピングで使用される最高数が、その直接接続ノードによって要求される宛先ノード更新の最大数を決して大きく超えないよう保証する。   Reusing these numbers ensures that the highest number used in the mapping never exceeds the maximum number of destination node updates required by that directly connected node.

コネクションごとに、ノードは整数配列を生成する必要があり、そのオフセットは、ノード自体の内部ノードIDに対応し、そのオフセットに保存される番号は、その直接接続ノードのために使用される一意の番号−>名前マッピングである。   For each connection, the node needs to generate an integer array, whose offset corresponds to the node's own internal node ID, and the number stored in that offset is a unique number used for that directly connected node. Number-> name mapping.

高速ルーティングは、その場合、以下のようになる(上記を参照)。
1.ノードBが問題のマッピングへのポインタを生成する。
sMapping *pMap = &NodeMapping[pMessage->uiNodeID];
2.ノードBが名前を変換する。
pMessage->uiNodeID = pMap->uiNodeBName;
3.その後、メッセージを指定された直接接続ノードに転送する。
RouteMessage(pMessage,pMap->uiDirectlyConnectedNodeID;
4.送信の前に、名前が最後にもう一度変更される。
pMessage->uiNodeID = UniqueNameMapping[uiConnectionID][pMessage-
>uiNodeID];
The fast routing is then as follows (see above):
1. Node B generates a pointer to the mapping in question.
sMapping * pMap = & NodeMapping [pMessage->uiNodeID];
2. Node B translates the name.
pMessage-> uiNodeID = pMap->uiNodeBName;
3. The message is then forwarded to the designated directly connected node.
RouteMessage (pMessage, pMap->uiDirectlyConnectedNodeID;
4). The name is last changed again before sending.
pMessage-> uiNodeID = UniqueNameMapping [uiConnectionID] [pMessage-
>uiNodeID];

UniqueNameMappingは2次元配列であり、第1のパラメータは、コネクションIDであり、第2のパラメータは、そのコネクションIDを有するコネクションのための、一意の番号−名前マッピングで使用される番号である。   UniqueNameMapping is a two-dimensional array, the first parameter is the connection ID, and the second parameter is the number used in the unique number-name mapping for the connection with that connection ID.

各直接接続ノードのための番号−名前マッピングで使用される番号を再利用するには、使用されるマッピングの最大番号と同じサイズの配列を必要とする。配列はスタックとして扱われ、再利用される番号がこのスタックに配置される。スタックへのオフセットは、再利用される次の番号をどこに配置するか、再利用される番号をどこから取り出すかをこのノードに教える。   Reusing the numbers used in the number-name mapping for each directly connected node requires an array of the same size as the maximum number of mappings used. The array is treated as a stack and the number to be reused is placed on this stack. The offset into the stack tells this node where to place the next number to be reused and where to pick the number to be reused.

直接接続ノードが、このノードによって知られている宛先ノードの総数より大きい宛先ノードの最大番号を要求した場合、一意マッピング方式は、その直接接続ノードに対しては必要とされない。   If a directly connected node requests a maximum number of destination nodes that is greater than the total number of destination nodes known by this node, a unique mapping scheme is not required for that directly connected node.

この状況が変化した場合、マッピングは当業者によって容易に生成されることができる。   If this situation changes, the mapping can be easily generated by one skilled in the art.

ユーザデータパケットをいつ送信するか
ユーザデータパケットは、利用可能な経路が存在するときならいつでも、送信されることができる。代替実施形態は、あるクラスのノードが最初に送信されるユーザデータパケットを有する、QOSを可能にすることができる。当業者であれば、変形を知っていよう。
When to send user data packets User data packets can be sent whenever there is an available path. An alternative embodiment may allow QOS where a class of nodes have user data packets transmitted first. Those skilled in the art will know the variations.

即座に利用可能な経路が存在しない場合、ペイロードパケットは、有効な経路が出現するのを期待して、しばらくの間、保持されることができる。   If there is no readily available route, the payload packet can be held for a while in the hope that a valid route will appear.

活動時間(TTL)方式も、当業者によって実施されることができる。(TCP/IPなどのプロトコルのように)ホップを使用する代わりに、TTLは、ペイロードパケットを生成したノードによって計算される宛先ノードのためのfCumulativeLinkCost値の倍数とすることができる。各ノードは、その後、パケットが受信されたリンクのリンクコストをTTLから減算する。TTLが0を下回った場合、パケットは削除されることができる。当業者であれば、(TCP/IPでのように)ホップ数を使用する代わりにリンクコストを使用した標準的なTTL方式として、これを認識するであろう。   Activity time (TTL) schemes can also be implemented by those skilled in the art. Instead of using hops (as in a protocol such as TCP / IP), the TTL can be a multiple of the fCumulativeLinkCost value for the destination node calculated by the node that generated the payload packet. Each node then subtracts the link cost of the link from which the packet was received from the TTL. If TTL falls below 0, the packet can be deleted. Those skilled in the art will recognize this as a standard TTL scheme that uses link costs instead of using hop counts (as in TCP / IP).

より重要なノードがより遠くに広まることを可能にする
この代替実施形態は、いくつかのノードがネットワーク中でより遠くかつ/またはより速く広まることを可能にする。
This alternative embodiment , which allows more important nodes to spread farther, allows some nodes to spread farther and / or faster in the network.

この実施形態が良好に機能するためには、ネットワーク内の(すべてではないにしても)大部分のノードが、同じ規則に従うことを必要とする。   In order for this embodiment to work well, most (if not all) nodes in the network need to follow the same rules.

より重要として標識付けされたクラスのノードに対しては、リンクコストの一部だけが、それらのfCumulativeLinkCostおよび/または fCumulativeLinkCostFromStream値に加算される。例えば、ノードDがより重要なノードのクラスに属し、リンクNの通常のリンクコストが10である場合、ノードDのための更新については、(例えば)5またはリンクコストの半分だけが、そのfCumulativeLinkCostおよび/または fCumulativeLinkCostFromStreamに加算される。   For nodes of a class that are labeled as more important, only a portion of the link cost is added to their fCumulativeLinkCost and / or fCumulativeLinkCostFromStream value. For example, if node D belongs to a more important node class and the normal link cost of link N is 10, for an update for node D, only 5 (for example) or half of the link cost will have its fCumulativeLinkCost And / or added to fCumulativeLinkCostFromStream.

ノードがどれだけ重要かは、
1.(先に説明された)その規模
2.ノードの名前に基づいた恣意的な方式
3.ノード更新構造体に追加されるまたは存在する別の値または値の組合せ
に結び付けることができる。
How important a node is
1. Its scale (as explained above) 2. Arbitrary scheme based on node names Can be tied to another value or combination of values added to or present in the node update structure.

輻輳またはエネルギー消耗ノード
この代替実施形態は、過度に輻輳したノードまたはバッテリ消耗状態で動作中のノードから、ネットワークトラフィックを引き離すことを助けることができる。
Congested or energy depleted node This alternative embodiment can help to draw network traffic away from an over congested node or a node operating in a battery depleted state.

ノードは、エネルギー消耗状態で動作している場合、または輻輳を経験している場合、そのリンクコストを引き上げることができる。これは、問題を経験しているこのノードからトラフィックを引き離すことを助ける。   A node can increase its link cost if it is operating in an energy exhausted state or experiencing congestion. This helps to pull traffic away from this node experiencing the problem.

ノードがそのリンク値をゆっくり変化させ、変化の間待機することは役に立つ。これは、不安定なネットワーク振動を回避することを助ける。   It is useful for a node to change its link value slowly and wait for the change. This helps to avoid unstable network vibrations.

ノードが輻輳の緩和を経験した場合、またはそのバッテリ状態が改善した場合、ノードはそのリンクコストを通常値までゆっくり低下させるべきである。   If a node experiences congestion mitigation or if its battery condition improves, the node should slowly reduce its link cost to a normal value.

当業者であれば、振動問題について、またこれらの問題に対処する方式について知っていよう。   Those skilled in the art will know about vibration problems and how to deal with these problems.

名前を共有するノード
この代替実施形態は、ノードが名前を共有することを可能にする。
Node sharing names This alternative embodiment allows nodes to share names.

(例えば)ウェブサーバの場合、単一サーバが提供するよりも多くの帯域幅および接続性を提供することが重要になり得る。   In the case of a web server (for example) it may be important to provide more bandwidth and connectivity than a single server provides.

2以上のノードが同じ名前を使用する場合、その名前を有するノードに接続しようと試みるノードは、(fCumulativeLinkCostに基づいて)最も近いノードに接続する。   If two or more nodes use the same name, the node attempting to connect to the node with that name connects to the nearest node (based on fCumulativeLinkCost).

リクエストがステートレスである場合(例えば、ウェブサイトのメインページを要求する場合)、どのノードにリクエストが転送されても、同じ結果が返されるので、ノードはリクエストを即座に送信することができる。   If the request is stateless (eg, requesting the main page of the website), the node can send the request immediately because the same result is returned no matter which node the request is forwarded to.

ノードは、ステートフルなコネクションを要求する場合、最初にその名前を有する最も近いノードに接続する。その最も近いノードは、その後、状態を必要とするコネクションを確立するのに使用され得るその一意名を返す。   When a node requests a stateful connection, it first connects to the nearest node with that name. That closest node then returns its unique name that can be used to establish a connection that requires state.

例えば、先に説明されたsConnectionAccept構造体では、返されるノードの名前(sConneetionAccept.nnNameB)は、ノードの一意名とすることができる。   For example, in the previously described sConnectionAccept structure, the returned node name (sConnectionAccept.nnNameB) can be the unique name of the node.

伝播優先順
より大規模なネットワークでは、制御メッセージのための帯域制限が使用される必要がある。
In networks that are larger than the propagation priority , bandwidth limitations for control messages need to be used.

「制御」帯域幅の総計は、すべてのデータのために利用可能な最大帯域幅の何パーセントかに制限されるべきである。   The total “control” bandwidth should be limited to a percentage of the maximum bandwidth available for all data.

例えば、最小サイズを4Kとし、各グループに対して最大帯域幅の5%を指定することができる。単純な10MB/sのコネクションでは、これは、4Kの情報パケットを
=4096/(10MB/s×0.05)
=0.0819s
ごとに送信することを意味する。
For example, the minimum size can be 4K and 5% of the maximum bandwidth can be specified for each group. For a simple 10MB / s connection, this means 4K information packets = 4096 / (10MB / s x 0.05)
= 0.0819s
Means to send every.

そのため、このコネクションでは、制御パケットを0.0819sおきに、または毎秒約12回送信することができる。   Therefore, in this connection, the control packet can be transmitted every 0.0819 s or about 12 times per second.

パーセンテージおよび送信されるブロックサイズは例であり、当業者によって各自のアプリケーション要件をより良く満たすように変更されることができる。   The percentages and transmitted block sizes are examples and can be varied by those skilled in the art to better meet their application requirements.

帯域制限メッセージ
これらのメッセージは、制御メッセージが適合するブロックのサイズに適合するように、一緒に連結されるべきである。
Bandwidth limit messages These messages should be concatenated together to fit the size of the block to which the control message fits.

制御メッセージが宛先ノード名をそのクイック参照番号によって参照し、直接接続ノードがその番号を知らない場合、クイック参照(番号−>名前マッピング)が、メッセージに先立って行われるべきである。   If the control message refers to the destination node name by its quick reference number and the directly connected node does not know the number, a quick reference (number-> name mapping) should be made prior to the message.

経路更新に割り当てられる制御帯域幅の量とHSPP更新に割り当てられる制御帯域幅の量との間には食い違いがあるべきである。例えば、制御帯域幅の75%が経路更新に割り当てられることができ、残りの25%がHSPP更新に割り当てられることができる。当業者であれば、各自の実施により適するように、これらの数を変更することができよう。   There should be a discrepancy between the amount of control bandwidth allocated for path updates and the amount of control bandwidth allocated for HSPP updates. For example, 75% of the control bandwidth can be allocated for path updates and the remaining 25% can be allocated for HSPP updates. Those skilled in the art will be able to change these numbers to better suit their implementation.

複数経路ネットワーク
本明細書のこのセクションは、エンドユーザデータのための複数経路が2つの通信ノード間に形成されることを可能にする一実施形態について説明する。この実施形態はまた、輻輳を回避するために経路を移動および交代することを可能にする。
Multi-Path Network This section of the specification describes one embodiment that allows multiple paths for end user data to be formed between two communication nodes. This embodiment also allows the path to be moved and alternated to avoid congestion.

この実施形態は、ノードおよび待ち行列のアイデアを使用する。待ち行列は、(本文書の先のセクションで使用されたノード名のように)メッセージの宛先として使用される。本明細書のこのセクションにおける用語は、これまでのものとは少し異なっていることもあるが、当業者であれば、どの用語が同等であるか見分けることができよう。   This embodiment uses the idea of nodes and queues. The queue is used as the destination for messages (like the node name used in earlier sections of this document). The terms in this section of the specification may be slightly different from the previous ones, but those skilled in the art will be able to tell which terms are equivalent.

本文書のこのセクションで提供されるどのような定義または概念も、本文書の先行する部分における定義または概念の意味を無効化または変更すると見なされるべきではない。   Any definitions or concepts provided in this section of this document should not be considered as invalidating or changing the meaning of the definitions or concepts in the preceding part of this document.

当業者であれば、可能な変形について知っていよう。   One skilled in the art will be aware of possible variations.

このネットワークは、ネットワークの大域的知識を所有するどのようなエージェントにも依存しない。   This network does not depend on any agent possessing global knowledge of the network.

ネットワークの構成要素は、ノードおよび待ち行列である。   Network components are nodes and queues.

このネットワークは、いくつかの原則に従う。
一般原則
1.ネットワークは単純な概念を使用する。
2.意思決定および知識は局所的に保たれ、大域的知識の必要性を回避する。
3.システムのサイズもしくはトポロジ、ノード容量、または構造柔軟性にどのような制限も存在しない。
This network follows several principles.
General principles 1. The network uses a simple concept.
2. Decision making and knowledge are kept locally, avoiding the need for global knowledge.
3. There are no restrictions on system size or topology, node capacity, or structural flexibility.

これらの原則は、ネットワークの設計を左右する。これらの原則の働きは、後で詳しく説明される。
個別原則
1.ノードは、選択された宛先としてそれが指定した直接接続ノードにだけメッセージを送信する。
2.ノードは、そのノード上の待ち行列内のデータの待ち時間が、選択された宛先の待ち時間からすべての選択された宛先の最小待ち時間を減算した時間より大きい場合、その選択された宛先にだけメッセージを送信する。
3.データストリーム内に現在ないノードは、唯一の選択された宛先を有する。データストリーム内にあるノードは、複数の選択された宛先を有する。
4.より良い選択された宛先を探す場合、データストリーム内にないノードは、受動的ループ検査を使用し、データストリーム内にあるノードは、能動的ループ検査を使用する。
5.コネクションは、TCP/IP方式で確立され、保持される。
6.大規模ネットワーク内のノードは、ネットワークのコアにおいて知識を探す。
データフロー原則
1.データのストリームは、フローが容量を超えた場合を除いて、それ自身の経路の待ち時間を変化させてはならない。
These principles influence network design. The workings of these principles will be explained in detail later.
Individual principles A node sends a message only to the directly connected node that it designates as the selected destination.
2. A node is only for the selected destination if the latency of the data in the queue on that node is greater than the latency of the selected destination minus the minimum latency of all selected destinations Send a message.
3. Nodes that are not currently in the data stream have only one selected destination. Nodes in the data stream have a plurality of selected destinations.
4). When looking for a better selected destination, nodes that are not in the data stream use passive loop checking, and nodes that are in the data stream use active loop checking.
5. The connection is established and held by the TCP / IP method.
6). Nodes in large networks look for knowledge in the core of the network.
Data flow principle A stream of data must not change the latency of its own path unless the flow exceeds capacity.

例は理解を明瞭にするために与えられていることを繰り返しておくべきであろう。これらの例は、数、他の業者のソフトウェア、またはその他の詳細について具体的な言及がなされる場合でも、本明細書で説明される方法およびシステムの一般性を限定することを意図していない。   It should be repeated that examples are given for clarity of understanding. These examples are not intended to limit the generality of the methods and systems described herein, even if specific reference is made to numbers, other vendor software, or other details. .

ノード
このネットワーク内の各ノードは、1つまたは複数の他のノードに直接接続される。ノードは、コンピュータ、ネットワークアダプタ、スイッチとすることができ、またはメモリおよびデータ処理能力を含む任意の装置とすることができる。各ノードは、それが直接接続されているノードを除いて、他のノードについての知識をもたない。2つのノード間のコネクションは、一緒に「結合」されたいくつかの異なるコネクションとすることができる。コネクションは、(ワイヤなど)物理的とすることができ、(ボックス、小型装置、液体などの)実際の物理的品目、コンピュータバス、無線、マイクロ波、光、量子相互作用などとすることができる。
Node Each node in this network is directly connected to one or more other nodes. A node can be a computer, a network adapter, a switch, or any device that includes memory and data processing capabilities. Each node has no knowledge of other nodes except the node to which it is directly connected. The connection between two nodes can be several different connections that are "coupled" together. Connections can be physical (such as wires), actual physical items (such as boxes, small devices, liquids), computer buses, radio, microwaves, light, quantum interactions, etc. .

コネクションの形態に対するどのような限定も、発明者らによって暗示されていない。   No limitation on the form of connection is implied by the inventors.

図29では、ノードAは、ノードBおよびノードCに直接接続されている。ノードCは、ノードAだけに接続されている。ノードBは、4つのノードに直接接続されている。   In FIG. 29, node A is directly connected to node B and node C. Node C is connected only to node A. Node B is directly connected to four nodes.

「選択された宛先」は、あらゆる直接接続ノードの部分集合である。「選択された宛先」だけが、メッセージのための可能な経路と常に見なされる(後で説明される)。   A “selected destination” is a subset of any directly connected nodes. Only the “selected destination” is always considered a possible route for the message (discussed later).

「選択された宛先」は、「最良隣接ノード」と等価である。この用語がこのセクションで使用されるのは、「最良隣接ノード」は実際には1つしか存在できないが、「選択された宛先」は複数存在できるため、「最良隣接ノード」だといくぶん誤解を生じることがあるからである。   The “selected destination” is equivalent to the “best neighbor”. This terminology is used in this section to be somewhat misunderstood as “best neighbor” because there can actually be only one “best neighbor” but there can be multiple “selected destinations”. This is because it may occur.

待ち行列およびメッセージ
エンドユーザソフトウェア(EUS)による通信は、待ち行列を使用して実行される。待ち行列は、高信頼通信を確立し保持するのに使用されるメッセージと同様に、EUSメッセージ/ペイロードの宛先としても使用される。待ち行列の存在を知っているあらゆるノードは、同一の名前を有する対応する待ち行列を有する。この対応する待ち行列は、元の待ち行列のコピーであるが、異なるマシン上の待ち行列の内容は異なる。
Communication by the queue and message end user software (EUS) is performed using the queue. Queues are used as destinations for EUS messages / payloads as well as messages used to establish and maintain reliable communications. Every node that knows the existence of a queue has a corresponding queue with the same name. This corresponding queue is a copy of the original queue, but the contents of the queue on different machines are different.

メッセージは、同じ名前の待ち行列を使用して、ノード間で転送される。メッセージは、それが元の待ち行列に到達するまで、転送され続ける。元の待ち行列は、メッセージの受信者であるEUSまたはシステムによって実際に生成された待ち行列である。   Messages are transferred between nodes using a queue of the same name. The message continues to be forwarded until it reaches the original queue. The original queue is the queue actually created by the EUS or system that is the recipient of the message.

元の待ち行列を生成しなかったノードは、どのノードが元の待ち行列を生成したか知らない。   A node that did not create the original queue does not know which node created the original queue.

システム内で生成された各待ち行列は、EUSまたはシステム割り当ての待ち行列番号およびグローバル一意識別子(GUID)を含む一意のラベルが与えられる。GUIDは、同じ名前を用いて最初に生成された待ち行列は1つしか存在しないことを保証するので重要である。例えば、
形式:EUS QueueNumber.GUID
例: 123456.af9491de5271abde526371
Each queue created in the system is given a unique label that includes an EUS or system assigned queue number and a globally unique identifier (GUID). The GUID is important because it ensures that there is only one queue initially created with the same name. For example,
Format: EUS QueueNumber.GUID
Example: 123456.af9491de5271abde526371

代替実施は、特定の待ち行列を識別するのに使用されるいくつかの番号を有することができる。例えば、
形式:EUSAppID.EUS QueueNumber.GUID
例: 889192.123456.af9491de5271abde526371
Alternative implementations can have several numbers that are used to identify a particular queue. For example,
Format: EUSAppID.EUS QueueNumber.GUID
Example: 889192.123456.af9491de5271abde526371

各ノードは、複数の待ち行列をサポートすることができる。特定の待ち行列が特定のノードに関連付けられることを必要とする要件はない。ノードは、それに伝えられたすべての待ち行列を記憶することを求められない。   Each node can support multiple queues. There is no requirement that a specific queue be associated with a specific node. A node is not required to store all queues communicated to it.

ノードは、ある待ち行列について知っている場合、それに接続されているノードにその待ち行列について伝える(後で詳しく説明される)。待ち行列内のメッセージの最終宛先を知っている唯一のノードは、その待ち行列を最初に生成したその最終宛先ノードだけである。ノードは、それがメッセージを受け渡したノードが、そのメッセージの最終宛先であると仮定する。   If a node knows about a queue, it tells the node connected to it about that queue (described in detail later). The only node that knows the final destination of the message in the queue is the final destination node that originally created the queue. The node assumes that the node that passed the message is the final destination for the message.

いかなる時点でも、ノードは、全域的ネットワークマップを構築しようと試みず、またはそれが直接接続されているノードを除けば、全体的なネットワークの知識をもとうと試みない。唯一の知識は、待ち行列が存在すること、その待ち行列を最初に生成したノードにメッセージが到達するのにどれだけの時間がかかるか、および元のノードからの待ち時間更新がこのノードに到達するのにかかる最大時間である。   At no point does the node attempt to build a global network map or attempt to gain knowledge of the overall network except for the nodes to which it is directly connected. The only knowledge is that a queue exists, how long it takes a message to reach the node that originally created the queue, and a latency update from the original node reaches this node It is the maximum time it takes to do.

待ち時間
待ち時間は、ネットワーク内でデータのための最良経路を選択する際に中心的な役割を演じる。ノードBがそれの待ち時間がX秒であることをノードAに伝える場合、ノードAがメッセージをノードBに受け渡すとすると、そのメッセージが最終宛先に到達し、EUSによって待ち行列から取り出されるまでにX秒かかるということを伝えている。
Latency Latency plays a central role in selecting the best path for data in the network. If Node B tells Node A that its latency is X seconds, if Node A passes the message to Node B, it reaches its final destination and is taken out of the queue by the EUS. That it takes X seconds.

ノードBによって計算されるこの待ち時間値は、以下のようになる。
Latency = MinOverTimePeriod([Bytes In Queue]) * [Bytes/Second Send Rate] +
[Lowest Latency of All Chosen Message Destinations] +
[Service time on this queue] + [Physical Network Latency]
This latency value calculated by Node B is as follows:
Latency = MinOverTimePeriod ([Bytes In Queue]) * [Bytes / Second Send Rate] +
[Lowest Latency of All Chosen Message Destinations] +
[Service time on this queue] + [Physical Network Latency]

Min Over Time Periodは、この待ち行列に関連する送信および受信ノードからの5つの送信または受信のうち最小のものを実行するのにかかる時間によって決定される期間である。それはまた、30msの最小時間(または高速システムタイマの細分度の妥当な倍数)でもある。これは、後でより詳しく説明される。   Min Over Time Period is the period determined by the time taken to perform the minimum of the five transmissions or receptions from the transmission and receiving nodes associated with this queue. It is also a minimum time of 30 ms (or a reasonable multiple of the fast system timer granularity). This will be explained in more detail later.

Bytes/Second Send Rateは、このノード上の待ち行列から流れ出るデータの速度の最良推定値である。   Bytes / Second Send Rate is the best estimate of the rate of data flowing out of the queue on this node.

Lowest Latency of All Chosen Message Destinations。この待ち行列についての知識を有するすべての直接接続ノードは、その待ち行列を最初に生成したノードに待ち時間を提供する。これは、この待ち行列のための選択された宛先であるすべてのノードのうちの最低待ち時間である。   Lowest Latency of All Chosen Message Destinations. All directly connected nodes that have knowledge of this queue provide latency to the node that originally created the queue. This is the lowest latency among all nodes that are the selected destination for this queue.

Service Time On This Queueは、この特定の待ち行列に再び戻って来る前に、ノードが、この特定の待ち行列以外の他のすべての待ち行列からデータを送信しようと試みるのにかかる時間である。   Service Time On This Queue is the time it takes for a node to attempt to send data from all other queues other than this particular queue before returning to this particular queue.

図30は、サービス時間がどのように計算され得るかを示している。   FIG. 30 shows how the service time can be calculated.

待ち行列上のサービス時間の計算
直接接続ノードごとに、そのノードを選択された宛先として有し、待ち行列内に送信すべきデータを有する、待ち行列の一覧が存在する。
Calculating service time on a queue For each directly connected node, there is a list of queues that have that node as the selected destination and have the data to be sent in the queue.

待ち行列に公平にサービスするため、システムは、ラウンドロビン方式で、これらの待ち行列を巡回して行き、それらから「選択された宛先」にメッセージを送信する。各「選択された宛先」は、それが独自に巡回するそれ自身の待ち行列の一覧を有する。   To service the queues fairly, the system cycles through these queues in a round robin fashion and sends messages from them to the “selected destination”. Each “selected destination” has its own list of queues that it independently circulates.

サービス品質(QOS)が実施される場合、処理の順序は、「より重要な」待ち行列をより頻繁に処理するように変更されることができる。   When quality of service (QOS) is implemented, the order of processing can be changed to process “more important” queues more frequently.

いくつかのタイプのノードは、異なる解像度が利用可能なシステムタイマを有する。低解像度タイマは時間を読み取るのが何倍も速いので、より低解像度のタイマを使用して、ノードの性能を高めるのが道理にかなっている。   Some types of nodes have system timers where different resolutions are available. Since low resolution timers are many times faster to read, it makes sense to use a lower resolution timer to increase the performance of the node.

トレードオフは、待ち行列上のサービス時間を決定するためのアルゴリズムが僅かにより複雑になることである。   The trade-off is that the algorithm for determining the service time on the queue is slightly more complicated.

システムは、選択された宛先のために待ち行列の一覧を巡回して行きながら、特定の待ち行列からメッセージを送信することができた回数を、その待ち行列に関連するカウンタをインクリメントすることによって記録する。システムは、メッセージをこの待ち行列からその選択された宛先に関連するネットワークアダプタに受け渡すことができた場合にだけ、このカウンタをインクリメントする。システムは、適切な待ち行列トークンが存在し、それが待ち時間試験に合格した場合にだけ、その待ち行列からメッセージを受け渡す。これら両方の概念は、後で定義される。   The system records the number of times a message could be sent from a particular queue by going through the queue list for the selected destination by incrementing the counter associated with that queue. To do. The system increments this counter only if the message can be passed from this queue to the network adapter associated with the selected destination. The system passes a message from the queue only if an appropriate queue token exists and passes the latency test. Both of these concepts are defined later.

ノードはまた、すべての待ち行列からいくつのメッセージを送信できたかも記録する。   The node also records how many messages could be sent from all queues.

システムは、低解像度タイマの少なくとも3または4ティックの間、このラウンドロビンプロセスを繰り返し続ける。一事例として取り上げられ、本出願の一般性を引き下げることのないWindows2000の場合、これは約45または60ミリ秒である。この計算の精度を高めるには、ティックの回数が増やされるべきである。   The system continues to repeat this round robin process for at least 3 or 4 ticks of the low resolution timer. For Windows 2000, which is taken as an example and does not reduce the generality of this application, this is about 45 or 60 milliseconds. To increase the accuracy of this calculation, the number of ticks should be increased.

ある直接接続ノードについてこの期間が経過すると、システムは、以下の統計値を記録する。
1.この直接接続ノードに送信されたメッセージの総数
2.このプロセスにかかった秒数で計った総時間
When this period elapses for a directly connected node, the system records the following statistics:
1. 1. Total number of messages sent to this directly connected node Total time taken in seconds for this process

各待ち行列も、その期間中にその待ち行列からその特定の選択された宛先に送信されたメッセージの数を記録する。   Each queue also records the number of messages sent from that queue to that particular selected destination during that period.

これらの統計値は繰り返し2回分のものが保存され、1回分は現在進行中のプロセスに関し、もう1回分は最後に完了したプロセスに関する。これは、ノードが、次のサービス時間値のための新しいデータを収集しながら、その待ち行列のためのサービス時間を計算することを可能にする。   These statistics are stored for two iterations, one for the process currently in progress and one for the last completed process. This allows the node to calculate the service time for its queue while collecting new data for the next service time value.

この特定の選択された宛先(CD:chosen destination)を有するこの待ち行列のためのサービス時間を計算するため、以下の式が使用される。
Service Time = ([TotalMessagesSentToCD]-
[TotalMessagesSentFromQToCD]) /
[TotalMessagesSentToCD] * [TotalTimeInSecondsForIterations]
To calculate the service time for this queue with this particular selected destination (CD), the following equation is used:
Service Time = ([TotalMessagesSentToCD]-
[TotalMessagesSentFromQToCD]) /
[TotalMessagesSentToCD] * [TotalTimeInSecondsForIterations]

複数の選択された宛先が存在する場合は、以下の式を使用して、サービス時間を取得する。
Service Time =1/(1/[CD1Time] + 1/[CD2Time] +...))
If there are multiple selected destinations, use the following formula to get the service time.
Service Time = 1 / (1 / [CD1Time] + 1 / [CD2Time] + ...))

この値は、それが待ち時間計算の一部として送信される場合にだけ計算される。これは、計算上のオーバヘッドを低減する。   This value is only calculated if it is sent as part of the latency calculation. This reduces the computational overhead.

物理ネットワーク待ち時間
これは、以下のように定義される。
平均的なメッセージサイズに近いパケットを直接接続ノードに送信し、そのパケットがその直接接続ノードによって受信されるのに必要とされる時間。
Physical network latency This is defined as:
The time required for a packet close to the average message size to be sent to a directly connected node and received by that directly connected node.

この値は、従来のTCP/IPネットワークの「ping」の値に非常に類似している。   This value is very similar to the “ping” value of a conventional TCP / IP network.

この物理ネットワーク待ち時間は、直接接続ノードによって提供された待ち時間を使用して計算が実行されるたびに、直接接続ノードに提供される待ち時間に追加される。例えば、物理ネットワーク待ち時間は、以下の場合に使用される。
1.どれが最低待ち時間の選択された宛先であるかを決定するとき。
2.データストリーム内にない場合(後で説明される)に受動的にループを検出するとき。
3.追加の選択された宛先を選択するとき。
This physical network latency is added to the latency provided to the directly connected nodes each time a calculation is performed using the latency provided by the directly connected nodes. For example, physical network latency is used in the following cases.
1. When determining which is the selected destination with the lowest latency.
2. When passively detecting a loop when not in the data stream (discussed later).
3. When selecting additional selected destinations.

この値は、一連の事前定義されたパケットを直接接続ノードに送信し、時間を計ることによって、初期化されることができる。   This value can be initialized by sending a series of predefined packets directly to the connecting node and timing.

システムの動作中、この値は、実際の実行に基づいて再計算される。   During system operation, this value is recalculated based on actual execution.

ネットワークカードが継続的にデータを送信していると仮定して、システムがする必要があることは、送信されたデータの量、メッセージの平均サイズ、どれだけの時間が経過したかを記録することだけである。式は以下のようになる。
Physical Network Latency
=[AverageMsgSize]/([TotalBytesSentDuringPeriod]/[ElapsedTime])
期間は、サービス時間を計算するのに使用された期間に類似するように選択されるべきである。
Assuming the network card is continuously sending data, the system needs to record the amount of data sent, the average size of the message, and how much time has passed Only. The formula is as follows.
Physical Network Latency
= [AverageMsgSize] / ([TotalBytesSentDuringPeriod] / [ElapsedTime])
The period should be selected to be similar to the period used to calculate the service time.

エンドユーザソフトウェア
各マシンがIPアドレスおよび接続を受けるポートを有する従来のネットワークとは異なり、このシステムは、待ち行列の概念上で機能する。
End-user software Unlike a conventional network where each machine has an IP address and a port that receives a connection, this system works on a queuing concept.

エンドユーザソフトウェア(EUS)が待ち行列を生成したとき、それは特定のマシン上でポートを開くのに似ている。しかし、いくつかの相違が存在する。
1.マシンのIPアドレスとポート番号が必要とされるTCP/IPとは異なり、待ち行列に接続するときに必要なものは、待ち行列の名前(例えば、先に説明されたようなQueueName.GUID)だけである。待ち行列の名前は、ノード、ノードの識別子、または物理的もしくはネットワーク内のノードの場所との何らかの関係を必ずしも有する必要がない。
2.TCP/IPでは、ノードは、ネットワークに接続されるとき、その存在を公表しない。この新しいシステムの下では、ノードは、ネットワークに接続されるとき、その直接接続隣接ノードにだけそれが存在することを伝える。この情報が順々に受け渡されて行くことはない。
3.TCP/IPの下でデータを受信するためにポートが開かれるとき、このことはネットワークにブロードキャストされない。新しいシステムでは、待ち行列が生成されるとき、直前の「2」で説明されたノード自体の取り扱いとは好対照に、ネットワーク全体がこの待ち行列の存在について通知される。待ち行列の情報は、隣接ノードから隣接ノードへの通信によってのみ伝播される。
When end-user software (EUS) creates a queue, it is similar to opening a port on a particular machine. However, there are some differences.
1. Unlike TCP / IP, where the machine's IP address and port number are required, all that is needed to connect to the queue is the name of the queue (eg, QueueName.GUID as described above). It is. The name of the queue need not necessarily have any relationship to the node, the node identifier, or the location of the node in the physical or network.
2. In TCP / IP, a node does not advertise its presence when connected to a network. Under this new system, when a node is connected to the network it tells it only to its directly connected neighbors. This information is not passed on in sequence.
3. This is not broadcast to the network when a port is opened to receive data under TCP / IP. In the new system, when a queue is created, the entire network is informed about the existence of this queue, in contrast to the handling of the node itself described in the previous “2”. Queue information is propagated only by communication from adjacent nodes to adjacent nodes.

これらの特徴は、個々のノードのネットワーク内の位置に関するどのような情報も有さずに、EUSが他のEUSへのコネクションをもつことを可能にする。   These features allow an EUS to have connections to other EUS without having any information about the location of individual nodes in the network.

EUS間でコネクションを確立するため、TCP/IPに類似したハンドシェイクプロトコルが使用される。
1.ノードA:待ち行列A1を生成し、通信を開く要求を有するメッセージを待ち行列Bに送信する。それは待ち行列A1に送信される応答を求める。リクエストは、以下のような構造を有する。
struct sConnectionRequest [

// queue Al (could be replaced with a number -
// discussed later)
sQNameType qnReplyQueueName;

// update associated with queue Al (explained
// later) Includes Latency,UpdateLatency, etc..
sQUpdate quQueueUpdate;

]
A handshake protocol similar to TCP / IP is used to establish a connection between EUSs.
1. Node A: Create queue A1 and send a message with a request to open communication to queue B. It asks for a response to be sent to queue A1. The request has the following structure.
struct sConnectionRequest [

// queue Al (could be replaced with a number-
// discussed later)
sQNameType qnReplyQueueName;

// update associated with queue Al (explained
// later) Includes Latency, UpdateLatency, etc ..
sQUpdate quQueueUpdate;

]

このメッセージは、ネットワークを通って進むとき、待ち行列A1の定義も携えて行く。このようにして、このメッセージが到着したとき、メッセージをノードBから待ち行列A1に動かすことができる1組のノードがすでに存在する。   This message also carries the definition of queue A1 as it travels through the network. Thus, when this message arrives, there is already a set of nodes that can move the message from node B to queue A1.

ノードAがノードBからの応答を待ち行列A1の中に見出さず、ノードA上の待ち行列A1は「データストリーム内」として標識付けされておらず(ノードBと待ち行列A1の間に実際のコネクションが存在することを表す)、ノードAが待ち行列Bについての非無限大の知識を依然として有する(待ち行列Bが、したがってノードBが依然として存在しており、機能していることを表す)ならば、ノードAは、このメッセージを再送信する。   Node A does not find a response from node B in queue A1, and queue A1 on node A is not labeled as “in the data stream” (actual between node B and queue A1) If node A still has non-infinite knowledge about queue B (representing queue B, and therefore node B still exists and is functioning) Node A then resends this message.

ノードAは、メッセージを1秒おきに、またははるかに長い「待ち行列Bの待ち時間」秒おきに再送信する。   Node A resends the message every second or every much longer "Queue B Latency" seconds.

ノードBは、当然、複数の同一のリクエストを無視する。   Node B naturally ignores multiple identical requests.

ノードがそれに対する2つの同じリクエストを有する場合、そのノードは、これらのリクエストの1つを除いたすべてを削除する。
2.ノードB:「あなたがメッセージを送信するための特別の待ち行列B1を生成しました。順序の乱れたメッセージを並べ直すためのXバイトのバッファを割り当てました」と告げるメッセージを待ち行列A1に送信する。
struct sConnectionReply [
// queueB1
sQNameType qnDestQueueForMessages;

// update associated with queue B1 (explained
// later) Includes Latency,UpdateLatency, etc..
sQUpdate quQueueUpdate;

// buffer used to re-order incoming messages
Integer uiMaximumOutstandingMessageBytes;
]
If a node has two identical requests for it, it deletes all but one of these requests.
2. Node B: Send message to queue A1 saying "You created a special queue B1 to send messages. Allocating an X byte buffer to reorder out of order messages" To do.
struct sConnectionReply [
// queueB1
sQNameType qnDestQueueForMessages;

// update associated with queue B1 (explained
// later) Includes Latency, UpdateLatency, etc ..
sQUpdate quQueueUpdate;

// buffer used to re-order incoming messages
Integer uiMaximumOutstandingMessageBytes;
]

このメッセージは、ネットワークを通って進むとき、B1の定義も携えて行く。このメカニズムの結果として、このメッセージが到着したとき、メッセージをノードAから待ち行列B1に動かすことができる1組のノードがすでに存在する。   This message also carries the definition of B1 as it travels through the network. As a result of this mechanism, there is already a set of nodes that can move the message from node A to queue B1 when this message arrives.

ノードBがノードAからの応答を待ち行列Bの中に見出さず、ノードB上の待ち行列B1は「データストリーム内」になく、ノードBが待ち行列A1についての非無限大の知識を依然として有するならば、ノードBは、このメッセージを再送信する。   Node B does not find a response from node A in queue B, queue B1 on node B is not “in the data stream”, and node B still has non-infinite knowledge about queue A1 If so, Node B resends this message.

ノードBは、メッセージを1秒おきに、またははるかに長い「待ち行列A1の待ち時間」秒おきに再送信する。   Node B resends the message every second or every much longer "queue A1 latency" seconds.

ノードBは、sConfirmConnectionメッセージを受信し、待ち行列B1が「データストリーム内」として標識付けされるまで、このメッセージを再送信し続ける。   Node B receives the sConfirmConnection message and continues to retransmit this message until queue B1 is marked as “in the data stream”.

ノードBは、当然、複数の同一のsConfirmConnection応答を無視する。   Node B naturally ignores multiple identical sConfirmConnection responses.

ノードがそれに対する2つ以上の同じ応答を有する場合、そのノードは、これらのリクエストの1つを除いたすべてを削除する。
3.ノードA:ノードは、待ち行列A1上でノードBからsConnectionReplyを受信し、待ち行列B1についての知識を有したときはいつでも、コネクションが正しく確立されたことを知らせる応答を待ち行列Bに送信する。
struct sConfirmConnection [

// the queue being confirmed
sQNameType qnDestQueueForMessages;

]
If a node has more than one identical response to it, it deletes all but one of these requests.
3. Node A: Whenever a node receives sConnectionReply from Node B on queue A1 and has knowledge of queue B1, it sends a response to queue B indicating that the connection has been successfully established.
struct sConfirmConnection [

// the queue being confirmed
sQNameType qnDestQueueForMessages;

]

ノードがそれに対する2つの同じsConfirmConnectionメッセージを有する場合、そのノードは、これらのメッセージの1つを除いたすべてを削除する。   If a node has two identical sConfirmConnection messages for it, it deletes all but one of these messages.

待ち行列定義をハンドシェイクメッセージに添付することによって、コネクションを確立するのに必要とされる時間オーバヘッドが最低限に抑えられる。それが最低限に抑えられるのは、ノードは、送信できるようになる前に、待ち行列定義がネットワークを通って伝播するのを待つ必要がないからである。   By attaching the queue definition to the handshake message, the time overhead required to establish a connection is minimized. It is minimized because the node does not have to wait for the queue definition to propagate through the network before it can transmit.

ノードAは、その後、メッセージを送信し始めることができる。ノードAは、実行中一度に、与えられたバッファサイズより多くのバイトを有してはならない。ノードBは、ノードAからの受信メッセージに対する肯定応答を送信する。ノードBは、これらの肯定応答を待ち行列A1へのメッセージとして送信する。   Node A can then begin sending messages. Node A must not have more bytes than the given buffer size at a time during execution. Node B sends an acknowledgment to the received message from node A. Node B sends these acknowledgments as messages to queue A1.

ノードおよび待ち行列の構成の一例は、図31のようになる。   An example of the configuration of nodes and queues is as shown in FIG.

送信メッセージに対する肯定応答は、一連のメッセージとして表されることができる。肯定応答は一緒に連合させられる。例えば、メッセージグループ10〜35と36〜50の肯定応答は、メッセージグループ10〜50の肯定応答になる。これは、複数の肯定応答が単一メッセージ内に表されることを可能にする。   Acknowledgments to sent messages can be represented as a series of messages. Acknowledgments are associated together. For example, acknowledgments for message groups 10-35 and 36-50 become acknowledgments for message groups 10-50. This allows multiple acknowledgments to be represented in a single message.

肯定応答メッセージの構造は、以下のようになる。
struct sAckMsg [
integer uiFirstAckedMessageID;
integer uiLastAckedMessageID;
]
The structure of the acknowledgment message is as follows.
struct sAckMsg [
integer uiFirstAckedMessageID;
integer uiLastAckedMessageID;
]

肯定応答(ACK)は、TCP/IPと同様の方法で処理される。送信メッセージが同じ「選択された宛先」に送信されたメッセージの平均ACK時間の倍数以内に肯定応答されない場合、そのメッセージは再送信される。   Acknowledgment (ACK) is processed in the same way as TCP / IP. If a sent message is not acknowledged within a multiple of the average ACK time of a message sent to the same “selected destination”, the message is retransmitted.

メッセージは、肯定応答されるまで、EUSがそれらを生成したノード上に保存される。これは、メッセージが送信中に失われた場合、それらが再送信されることを可能にする。   Messages are stored on the node from which the EUS generated them until acknowledged. This allows messages to be retransmitted if they are lost during transmission.

ネットワークが待ち行列A1がもはや見えないことをノードBに通知した場合、ノードBは待ち行列B1をネットワークから削除し、その通信に関連するすべてのバッファを解放する。ネットワークが待ち行列B1がもはや見えないことをノードAに通知した場合、ノードAは待ち行列A1を削除する。   If the network notifies Node B that queue A1 is no longer visible, Node B removes queue B1 from the network and frees all buffers associated with the communication. If the network informs node A that queue B1 is no longer visible, node A deletes queue A1.

これが生じるのは、ノードAとノードBの間のすべての可能な経路が削除された場合か、またはノードの一方または両方が通信を終了することを決定した場合だけである。   This only occurs if all possible paths between node A and node B have been deleted or if one or both of the nodes decides to terminate communication.

メッセージが(待ち行列A1内の肯定応答メッセージを介して)時間内にノードBによって肯定応答されない場合、ノードAはそれらのメッセージを再送信する。   If messages are not acknowledged by node B in time (via acknowledgment messages in queue A1), node A resends those messages.

ノードBは、任意の時点で「並べ直し」バッファサイズを増加または削減することができ、待ち行列A1へのメッセージによって新しいサイズについてノードAに通知する。ノードBは、個々の待ち行列に割り当てられ得るデータ量に応じてサイズを変更する。個々の待ち行列に割り当てられ得るデータ量は、以下に依存する。
1.ノードがどれだけのメモリを有するか。
2.ノードがいくつの待ち行列を記憶するか。
3.いくつのデータフローがノードを通過しているか。
4.いくつの待ち行列がこのノードに起源をもつか。
Node B can increase or decrease the “reorder” buffer size at any point in time and notifies Node A of the new size by a message to queue A1. Node B changes size according to the amount of data that can be allocated to individual queues. The amount of data that can be allocated to individual queues depends on:
1. How much memory the node has.
2. How many queues the node remembers.
3. How many data flows are passing through the node.
4). How many queues originate from this node

このサイズ変更メッセージは、以下のようになる。
struct sResizeReOrderBuffer [
// since messages can arrive out of order,
// the version number will help the sending
// node determine the most recent
// 'ResizeReorderBuffer'.
integer uiVersion;
// the size of the buffer
integer uiNewReOrderSize;
]
The resize message is as follows:
struct sResizeReOrderBuffer [
// since messages can arrive out of order,
// the version number will help the sending
// node determine the most recent
// 'ResizeReorderBuffer'.
integer uiVersion;
// the size of the buffer
integer uiNewReOrderSize;
]

送信側(ノードA)にもバッファが存在する。そのバッファのサイズは、そのノード上で動作しているシステムソフトウェアによって制御される。それは常に、ノードBによって提供された最大ウィンドウサイズに等しいか、またはそれよりもより小さい。   There is also a buffer on the transmitting side (node A). The size of the buffer is controlled by system software running on the node. It is always less than or equal to the maximum window size provided by Node B.

データストリーム内のノード
ノードは、最終的な送信側と最終的な受信側の間を流れるデータの経路上にある場合、データストリーム内と見なされる。ノードは、それがデータストリーム内にあることを直接接続ノードがそれに伝えるので、それがデータストリーム内にあることを知る。
A node node in a data stream is considered in the data stream if it is on the path of data flowing between the final sender and the final receiver. The node knows that it is in the data stream because the directly connected node tells it that it is in the data stream.

データは、データストリーム内として標識付けされていないノードを通って流れてもよい。「データストリーム内」として標識付けされたノードだけが、データストリーム内にあると見なされる。そこを流れるデータを有するが、データストリーム内として標識付けされていないノードは、データストリーム内にないと見なされる。   Data may flow through nodes that are not labeled as in the data stream. Only nodes that are labeled as “in the data stream” are considered to be in the data stream. Nodes that have data flowing there but are not labeled as in the data stream are considered not in the data stream.

別のノードにそれが「データストリーム内」にあることを伝える最初のノードは、その特定の待ち行列にメッセージを送信しようとするEUSが存在するノードである。例えば、ノードBが待ち行列A1にメッセージを送信することを望む場合、ノードBが、別のノードにそれが待ち行列A1に向う「データストリーム内」にあることを伝える最初のノードになる。ノードは、それらを「データストリーム内」として標識付けすることなく、待ち行列Bのような待ち行列に送信する。   The first node that tells another node that it is “in the data stream” is the node that has the EUS trying to send the message to that particular queue. For example, if node B wants to send a message to queue A1, node B becomes the first node to tell another node that it is “in the data stream” towards queue A1. The nodes send them to a queue, such as queue B, without labeling them “in the data stream”.

特定の待ち行列に向うデータストリーム内にあるノードは、その待ち行列に関するそれの「選択された宛先」であるすべてのノードに、それらがその待ち行列に向うデータストリーム内にあることを伝える。そのノードにそれがデータストリーム内にあることを伝えたすべてのノードが、そのノードにそれがもはやデータストリーム内にないことを伝えた場合、そのノードは、そのすべての「選択された宛先」にそれらがもはやデータストリーム内にないことを伝える。   A node in a data stream destined for a particular queue tells all nodes that are its “selected destination” for that queue that they are in the data stream destined for that queue. If all nodes that have told the node that it is in the data stream tell the node that it is no longer in the data stream, the node will send to all its "selected destinations" Tell them that they are no longer in the data stream.

基本的に、ノードは、もはやデータストリーム内にない場合、それが選択された宛先として有するすべてのノードに、それらがデータストリーム内にないことを伝える。   Basically, if a node is no longer in the data stream, it tells all nodes that it has as the selected destination that they are not in the data stream.

これは2つの目的で役に立つ。第1に、それは、データストリーム内のノードが、より良い経路を見つけようと即座に試みることを可能にする。第2に、それは、データストリーム内のノードが、待ち行列についての「記憶を失わ」ないよう保証する。   This is useful for two purposes. First, it allows the nodes in the data stream to immediately try to find a better path. Second, it ensures that the nodes in the data stream do not “lost” the queue.

別のノードにそれがデータストリーム内にあることを伝えるのに使用される構造体は、以下のようである。
struct sDataStream [

// the name of the queue, this could be replace with a
// number that maps to the queue name. (discussed later)
sQName qnName;

// true if now in the stream, false if not.
bool bInDataStream;

];
The structure used to tell another node that it is in the data stream is as follows:
struct sDataStream [

// the name of the queue, this could be replace with a
// number that maps to the queue name. (discussed later)
sQName qnName;

// true if now in the stream, false if not.
bool bInDataStream;

];

タイプB1の待ち行列に向うデータストリームだけが、組み合わされたマルチパス経路を生成する能力を有する。データストリーム内にあるタイプA1の待ち行列は、必要ならば単一経路に制限されることができるが、それは、ACKメッセージが小さく、かつ容易に一緒に合体されるためである。タイプBのノードは、「データストリーム内」として標識付けされることは決してない。   Only data streams destined for type B1 queues have the ability to generate combined multipath paths. Type A1 queues in the data stream can be limited to a single path if necessary because the ACK messages are small and easily merged together. Type B nodes are never labeled as “in the data stream”.

可能な機能強化は、「データストリーム」に追加されようとしている各ノードがループを形成しないことを確認するため、それをGUIDプローブする(GUIDプローブは後で定義される)。   A possible enhancement is to GUID probe it to make sure that each node being added to the “data stream” does not form a loop (GUID probe is defined later).

ノードタスク
ノードは、EUSによって生成されたメッセージを別のEUSに送信するため、直接接続ノードと通信する。ノードは、別のEUSと信頼性のある通信を確立し保持するために使用されるメッセージも送信する。
A node task node communicates with a directly connected node to send a message generated by an EUS to another EUS. The node also sends a message that is used to establish and maintain a reliable communication with another EUS.

メッセージを送信するため、ノードは、
1.どこにメッセージを送信するか、
2.いつメッセージを送信するか、
を決定しなければならない。
To send a message, the node
1. Where to send the message,
2. When to send a message,
Must be determined.

これらの場合の各々が、以下のセクションで検討される。   Each of these cases is discussed in the following sections.

どこにメッセージを送信するか
ノードは、どこにメッセージを送信するかを決定するため、
1.最終的な宛先に対する最良の待ち時間を提供し、
2.「ループ」を導入せず、
3.送信容量に余裕がある
接続ノードを選択しようと試みる。
Where the message is sent The node decides where to send the message,
1. Provide the best latency for the final destination,
2. Without introducing "loop"
3. Attempts to select a connection node with enough transmission capacity.

初期待ち行列知識
待ち行列がEUSによって生成されたとき、システムは、その待ち行列が存在することをネットワーク内のあらゆるノードに伝える方法を必要とし、あらゆるノードは、他のノードを通るその待ち行列への経路を必要とする。目標は、待ち行列に対する認識と、ループのない経路を生成することである。
When an initial queue knowledge queue is created by the EUS, the system needs a way to tell every node in the network that the queue exists, and every node goes to that queue through other nodes. Need a route. The goal is to recognize the queue and create a loop-free path.

EUSが最初に待ち行列を生成したとき、待ち行列がその上で生成されたノードは、すべての直接接続ノードに以下のことを伝える。
1.待ち行列の名前
これは、この待ち行列に一意な名前である。独立に生成された2つの待ち行列は、決して同じ名前を有してはならない。
2.待ち時間
先に説明された。これは、メッセージがそのノードから最終的な宛先であるノードまで進むのにどれだけの時間がかかるかを表す、秒数で示された値である。
3.「容量余裕なし」ステータス
後で説明される。これは、このノードの選択された宛先の経路内のいずれかのノードが、すでに処理しているよりも多くのデータフローを処理できない場合、真となるブール値である。
4.更新待ち時間
後で説明される。これは、最終的な受信側からの待ち時間更新がこのノードに到達するのにかかる最大時間を表す、秒数で示された値である。
5.データストリームからの距離
後で説明される。データストリーム内として標識付けされたノードからこのノードがどれだけ遠いかを表す点を除いて、「更新待ち時間」と非常に類似している。これは、どの待ち行列が「より重要」であるかを決定するために使用されることができる。一代替実施は、標識付けされたデータストリームから、またはペイロードメッセージを伝送するノードからノードがどれだけ遠いかをこれに表させることができる。
When the EUS first creates a queue, the node on which the queue was created tells all directly connected nodes:
1. Queue name This is a unique name for this queue. Two independently generated queues must never have the same name.
2. Waiting time explained earlier. This is a value, expressed in seconds, that represents how long it takes for the message to travel from that node to the final destination node.
3. “Not enough capacity” status Explained later. This is a Boolean value that is true if any node in the route of the selected destination of this node cannot process more data flows than it is already processing.
4). Update latency will be explained later. This is a value, expressed in seconds, that represents the maximum time it takes for the latency update from the final receiver to reach this node.
5. The distance from the data stream is explained later. It is very similar to “update latency” except that it represents how far this node is from the node marked as in the data stream. This can be used to determine which queue is “more important”. An alternative implementation can have this represent how far the node is from the tagged data stream or from the node transmitting the payload message.

この更新は、以下の構造をとる。
struct sQUpdate [

// the name of the queue. Can be replaced with
// a number (discussed later)
sQName qnName;

// the time it would take one message to travel
// from this node to ultimate receiver and be
// consumed by the EUS
float fLatency;

// if true, this node is already handling as
// much data as it can send. (discussed later)
bool bAtCapacity;

// the maximum time a latency update will
// take to travel from the ultimate receiver
// to this node. (discussed later)
float fUpdateLatency;

// calculated in a similar fashion
// to 'fUpdateLatency'. and records the distance
// from a marked data stream for this node.
float fLatencyFromStream';
];
This update takes the following structure:
struct sQUpdate [

// the name of the queue. Can be replaced with
// a number (discussed later)
sQName qnName;

// the time it would take one message to travel
// from this node to ultimate receiver and be
// consumed by the EUS
float fLatency;

// if true, this node is already handling as
// much data as it can send. (discussed later)
bool bAtCapacity;

// the maximum time a latency update will
// take to travel from the ultimate receiver
// to this node. (discussed later)
float fUpdateLatency;

// calculated in a similar fashion
// to 'fUpdateLatency'. and records the distance
// from a marked data stream for this node.
float fLatencyFromStream ';
];

これがそれまで未知の待ち行列であるか、または既知の待ち行列に対する更新であるかには関係なく、同じ情報が送信されることができる。   Regardless of whether this is a previously unknown queue or an update to a known queue, the same information can be sent.

ノード更新に遅延送信およびノード更新の順序付けは、先に説明されたのと同じ手法に従うべきである。   Node update delayed transmission and node update ordering should follow the same approach as described above.

これが直接接続ノードがその待ち行列について聞いた最初である場合、直接接続ノードは、最初にそれに伝えたノードを、その待ち行列へのメッセージに関するそれの「選択された宛先として」選択する。ノードは、他のノードがそれらもEUS生成の待ち行列への経路を提供することをそれに伝えたとしても、「選択された宛先」である1つまたは複数のノードにだけEUSメッセージ/ペイロードを送信する。   If this is the first time the directly connected node has heard about the queue, the directly connected node will select the node that first communicated to it as its “selected destination” for messages to that queue. A node sends an EUS message / payload only to one or more nodes that are "selected destinations" even though other nodes have told it that they also provide a route to an EUS-generated queue To do.

ノードは、直接接続ノードを「選択された宛先」として選択した場合、そのノードにそれが「選択された宛先」として選択されたことを伝えなければならない。メッセージの構造は、以下のようになる。
struct sPickedAsChosenDestination [

// the name of the queue. Could be replaced with a number
// (discussed later)
sQName qnName;

// true if the node this message is being sent to is a
// a chosen destination for this queue.
bool bSelected;

];
If a node selects a directly connected node as a “selected destination”, it must tell the node that it has been selected as a “selected destination”. The structure of the message is as follows:
struct sPickedAsChosenDestination [

// the name of the queue. Could be replaced with a number
// (discussed later)
sQName qnName;

// true if the node this message is being sent to is a
// a chosen destination for this queue.
bool bSelected;

];

ノードは、別のノードがこのノードをその待ち行列に関する「選択された宛先」としてすでに有している場合、そのノードを「選択された宛先」として決して選択しない。両ノードが同時に互いを選択したためにこのようなことが起こった場合、それは即座に解消されることを必要とする。   A node will never select a node as a “selected destination” if another node already has this node as the “selected destination” for the queue. If this happens because both nodes selected each other at the same time, it needs to be resolved immediately.

1つの手法は、両ノードが、選択された宛先としての互いを削除し、ランダムな時間だけ待ち、その後、互いを再選択するよう試みることである。   One approach is for both nodes to delete each other as the selected destination, wait for a random time, and then attempt to reselect each other.

このようにして、あらゆるノードがEUS生成の待ち行列を知っており、一連の直接接続ノードを介したEUS待ち行列への非ループ経路を有する、ネットワークが生成される。   In this way, a network is created in which every node knows the EUS creation queue and has a non-loop path to the EUS queue through a series of directly connected nodes.

図32は、ネットワークを伝播する待ち行列についての知識を示した一連のステップである。この図におけるノード間のリンケージおよびノードの数は例に過ぎず、実際は、任意のネットワークトポロジ内には、任意のノードからも、任意の数のノードの間にも、リンケージの無限の多様性が存在し得る。   FIG. 32 is a series of steps showing knowledge about queues propagating through the network. The linkages between nodes and the number of nodes in this figure are only examples, and in practice there are infinite diversity of linkages in any network topology, from any node to any number of nodes. Can exist.

いかなる時点でも、ネットワーク内のノードは、ネットワークトポロジまたは経路についての全域的な知識を収集しようとは試みない。システムは、あらゆるノードに、EUS生成の待ち行列の名前と直接接続ノードがEUS生成の待ち行列に与えた待ち時間とを提供する。   At any point in time, the nodes in the network do not attempt to gather global knowledge about the network topology or path. The system provides every node with the name of the EUS-generated queue and the latency that the directly connected node has given to the EUS-generated queue.

ノードは、メッセージのための複数の可能な経路を有するとしても、その「選択された宛先」として選択した1つまたは複数のノードに沿ってだけメッセージを送信する。   Even though a node has multiple possible paths for a message, it only sends the message along one or more nodes selected as its “selected destination”.

ノードは、その「選択された宛先」として別の直接接続ノードを選択した場合、2つのノードが互いを「選択された宛先」として選択した場合に生成され得るループを回避するために、そのノードにその選択について伝える。   If a node selects another directly connected node as its “selected destination”, that node to avoid a loop that can be generated if two nodes select each other as a “selected destination” Tell about your choice.

あらゆるノードは、それがどの待ち行列についてその直接接続ノードに伝えたかを把握し続ける。直接接続ノードが伝えられていないあらゆる新しい待ち行列は、即座に送信される(伝播優先順を参照)。できたばかりのコネクションの場合、そのコネクションの両側のノードが、それらが知っていたあらゆる待ち行列についての知識を送信する。   Every node keeps track of which queue it communicated to its directly connected nodes. Any new queue for which no directly connected node has been communicated is sent immediately (see Propagation Priority). For a fresh connection, the nodes on either side of the connection send knowledge about any queues they knew.

ノードは、ネットワーク内のあらゆる待ち行列の名前、待ち時間などを保存するのに十分なメモリを含んでいない場合、重要でないと思われる待ち行列を「記憶から消す」ことができる。ノードは、このノードが標識付けされたデータストリームから最も遠い場合、それらの待ち行列を選択して記憶から消す。ノードは、このノードが標識付けされたデータストリームからどれだけ遠いかを決定するため、値「fLatencyFromStream」を使用する。   If a node does not contain enough memory to store the name, latency, etc. of every queue in the network, it can “erase” a queue that appears to be unimportant. If this node is farthest from the tagged data stream, it will select those queues to remove from storage. The node uses the value “f LatencyFromStream” to determine how far this node is from the tagged data stream.

一代替実施形態は、値「fLatencyFromStream」を使用して、標識付けされたデータストリームから、またはペイロードパケットを伝送するノードからの距離を表すことができる。   An alternative embodiment may use the value “fLatencyFromStream” to represent the distance from the tagged data stream or from the node transmitting the payload packet.

これの唯一の副作用は、それらの待ち行列に接続できなくなることであり、宛先に関してそのノードに全面的に依存しているノードもそれらの待ち行列に接続できなくなることである。   The only side effect of this is that you can no longer connect to those queues, and nodes that are totally dependent on that node for destinations will also be unable to connect to those queues.

値「fLatencyFromStream」は、どの待ち行列がより重要であるかを決定することを助けるのに使用されることができる(伝播優先順を参照)。ノードが待ち行列Aに向う標識付けされたデータストリームから100秒であり、待ち行列Bに向う標識付けされたデータストリームから1秒離れている場合、このノードは標識付けされたデータストリームに最も近く、代替経路を見出すことを助ける際により多く使用され得るので、ノードは待ち行列Bを選択して記憶すべきである。   The value “fLatencyFromStream” can be used to help determine which queue is more important (see Propagation Priority). If a node is 100 seconds from the tagged data stream towards queue A and one second away from the tagged data stream towards queue B, this node is closest to the tagged data stream The node should select and store queue B, since it can be used more in helping to find alternative routes.

無限大の待ち時間(後で説明される)を有する新しい待ち行列名を伝えられたノードは、その待ち行列名を無視する。   A node that is told a new queue name with infinite latency (discussed later) ignores the queue name.

待ち行列名最適化およびメッセージ
あらゆる待ち行列更新は、それがどの待ち行列を参照するかを識別する方法を有する必要がある。待ち行列名は、簡単に長くなる傾向にあり、送信するのに非効率的である。ノードは、番号を使用して長い名前を表すことによって、より効率的になることができる。
Queue Name Optimization and Messages Every queue update needs to have a way to identify which queue it refers to. Queue names tend to be easily long and are inefficient to send. Nodes can be made more efficient by using numbers to represent long names.

例えば、ノードAは、「THISISALONGQUEUENAME.GUID」という名前の待ち行列についてノードBに伝えたいと望む場合、最初に、
1 = 'THISISALONGQUEUENAME.GUID'
とノードBに伝えることができる。
For example, if node A wants to tell node B about a queue named “THISALONGQUEUENAME.GUID” first,
1 = 'THISISALONGQUEUENAME.GUID'
To Node B.

このための構造体は、以下のようにすることができる。
struct sCreateQNameMapping [
int nNameSize;
char cQueueName[Size];
int nMappedNumber;
];
The structure for this can be as follows.
struct sCreateQNameMapping [
int nNameSize;
char cQueueName [Size];
int nMappedNumber;
];

その後、ノードAは、待ち行列更新を送信したいと望むたびに、長い待ち行列名を送信する代わりに、その待ち行列名を表す番号を送信することができる。ノードAは、「THISISALONGQUEUENAME.GUID」と呼ばれる待ち行列についてノードBに伝えたいと望むことはもはやないと決定を下した場合、そのマッピングについての記憶を消すようにノードAに命じることができる。   Then, whenever node A wishes to send a queue update, node A can send a number representing the queue name instead of sending a long queue name. If Node A decides that it no longer wants to tell Node B about a queue called “THISISALGONGQUEUENAME.GUID”, it can instruct Node A to erase the memory for that mapping.

その構造体は、以下のようである。
struct sRemoveQNameMapping [
int nNameSize;
char cQueueName[Size];
int nMappedNumber;
];
The structure is as follows.
struct sRemoveQNameMapping [
int nNameSize;
char cQueueName [Size];
int nMappedNumber;
];

各ノードは、どの名前がどの番号にマッピングされるかについて、それ独自の内部マッピングを保持する。各ノードは、直接接続ノードからの名前を、それ独自の命名体系に変換することができるように、変換表を保持する。例えば、ノードAは、
1 = 'THISISALONGQUEUENAME.GUID'
を使用することができる。
Each node maintains its own internal mapping of which name is mapped to which number. Each node maintains a translation table so that names from directly connected nodes can be translated into its own naming scheme. For example, node A
1 = 'THISISALONGQUEUENAME.GUID'
Can be used.

ノードBは、
632 = 'THISISALONGQUEUENAME.GUID'
を使用する。
Node B
632 = 'THISISALONGQUEUENAME.GUID'
Is used.

したがって、ノードBは、ノードAの番号付与体系を、ノードBにとって理解できる番号付与体系に変換することを可能にするマッピングを有する。この例では、以下のようになる。

Figure 0004611319
Thus, Node B has a mapping that allows it to translate Node A's numbering scheme into a numbering scheme that is understandable to Node B. In this example, it is as follows.
Figure 0004611319

この番号付与体系の使用はまた、ノードBからノードAへのメッセージを、それらに向かう待ち行列に付けることができる。例えば、システムは、100バイトのメッセージを有するとき、メッセージが属する待ち行列名を格納するための4バイトを先頭に確保し、その後にメッセージが続くようにする。こうすると、全体メッセージサイズは104バイトになる。この構造体の一例は、メッセージのサイズも含む。
struct sMessage [
int uiQueueID;
int uiMsgSize;
char cMsg[uiMsgSize];
]
The use of this numbering scheme can also place messages from Node B to Node A into a queue towards them. For example, when the system has a message of 100 bytes, it reserves 4 bytes at the head for storing the queue name to which the message belongs, and the message follows. In this way, the total message size is 104 bytes. An example of this structure also includes the size of the message.
struct sMessage [
int uiQueueID;
int uiMsgSize;
char cMsg [uiMsgSize];
]

このメッセージが宛先ノードによって受信されると、そのノードは、その変換表を参照し、このメッセージがどの待ち行列に配置されるべきかを決定する。   When this message is received by the destination node, the node looks up its translation table to determine which queue this message should be placed on.

削除される待ち行列への経路
元の待ち行列が生成されたノードへの経路上にあるノードが、その唯一の「選択された宛先」として使用していたノードから切断された場合、そのノードは最初、非ループの代替経路を見出そうと試みる。
If a node on the path to the node from which the original queue was created is disconnected from the node it was using as its only "selected destination", the node First, try to find a non-loop alternate path.

ノードはこれを、現在このノードに送信していないすべてのノードを調べることによって行う(すなわち、このノードを「選択された宛先」として有する)。このノードを「選択された宛先」として有するノードを選択すると、ループが生成される。   The node does this by examining all nodes that are not currently sending to this node (ie, having this node as the “selected destination”). Selecting a node that has this node as the “selected destination” creates a loop.

このノードは、「追加経路の追加」で後で説明される「GUIDプローブ」プロセスを使用して、残りの可能なノード内でループ調査を行うために、GUIDプローブを使用する。   This node uses the GUID probe to perform a loop investigation in the remaining possible nodes using the “GUID probe” process described later in “Adding Additional Paths”.

すべての潜在的な代替経路がループである場合、ノードは、その待ち時間を無限大に設定し、すべての接続ノードに即座にこの新しい待ち時間について伝える。   If all potential alternative paths are loops, the node sets its latency to infinity and immediately informs all connected nodes about this new latency.

ノードは、それに無限大の待ち時間を伝えた「選択された宛先」を有する場合、そのノードにデータを送信することを即座に停止し、そのノードを「選択された宛先」から削除する。すべての「選択された宛先」が削除された場合、ノードは、それ自身の待ち時間を無限大に設定し、その直接接続ノードに即座に伝える。   If a node has a “selected destination” that communicated infinite latency to it, it immediately stops sending data to that node and removes the node from the “selected destination”. If all “selected destinations” have been deleted, the node sets its own latency to infinity and immediately communicates to its directly connected nodes.

ノードは、待ち行列に対するその待ち時間を無限大に設定し、その直接接続ノードに伝えた後、しばらくの間(例えば1秒)待機する。この期間が終了すると、ノードは即座に、無限大の待ち時間をもたない直接接続ノードを選択された宛先として選択し、データの送信を再開する。   The node sets its wait time for the queue to infinity, communicates to its directly connected node and waits for a while (eg 1 second). When this period ends, the node immediately selects a directly connected node with no infinite waiting time as the selected destination and resumes data transmission.

ノードは、最初の期間が経過した後、最初の固定時間の2倍(例えば2秒)以内に、適切な新しいソースを見出さない場合、その待ち行列からのメッセージを削除し、その待ち行列についての知識を削除する。   If a node does not find a suitable new source within twice the initial fixed time (eg 2 seconds) after the first period has elapsed, it deletes the message from that queue and Delete knowledge.

この期間は、この待ち行列が無限大になった更新をこのノードが送信するのにかかった時間の倍数に基づいている(後の伝播優先順を参照)。この値は、その後、10またはネットワークの相互接続性に依存する適当に大きな数を乗じられる。   This period is based on the multiple of the time it took for this node to send an update that made this queue infinite (see later propagation priority). This value is then multiplied by 10 or a reasonably large number depending on the network interconnectivity.

例えば、ネットワークが非常に大きく、まばらに接続されている場合、この数は10より大きい。稠密で良く接続されたネットワークでは、この値は10である。   For example, this number is greater than 10 if the network is very large and sparsely connected. In dense and well connected networks, this value is 10.

ノードの待ち時間が無限大から非無限大に移動した場合、ノードは即座に、すべての直接接続ノードにその新しい待ち時間について伝える。   If a node's latency moves from infinity to non-infinity, the node immediately tells all directly connected nodes about the new latency.

この例では、10個のノードを有するネットワークにおいて、ネットワークの各側で1つずつ2つのノードに直接接続されたノードの1つで、EUSが待ち行列を生成した。   In this example, in a network with 10 nodes, EUS created a queue at one of the nodes directly connected to the two nodes, one on each side of the network.

図33では、ネットワーク内のあらゆるノードが、(右下の0の待ち時間を有する)EUS生成の待ち行列をちょうど知るようになったところであり、各ノード内の数字は、上で定義されたような秒数で示された待ち時間を表す。   In FIG. 33, every node in the network has just become aware of the EUS-generated queue (having zero latency in the lower right), and the numbers in each node are as defined above. Represents the waiting time in seconds.

次に図34では、EUS生成の待ち行列を有するノードとの間のコネクションの1つが削除される。   Next, in FIG. 34, one of the connections with the node having the EUS generation queue is deleted.

EUS生成の待ち行列を有するノードへのコネクションを失った直接接続ノードは、それが直接接続されたノードのどれかが、それを送信者として使用しているかどうかを知るために検査を行う。それらのすべてがそうなので、それらがループしているかどうかを決定するために、GUIDを用いてそれらをプローブする必要はない。このノードは、その後、それ自身を無限大の待ち時間に設定する。これは図35に示されている。   A directly connected node that has lost a connection to a node that has an EUS-generated queue checks to see if any of the directly connected nodes are using it as a sender. Since all of them are, it is not necessary to probe them with a GUID to determine if they are looping. This node then sets itself to an infinite waiting time. This is illustrated in FIG.

このノードは即座に、その新しい待ち時間についてすべての直接接続ノードに伝える。
ノードの「選択された宛先」のすべてが無限大にあるならば、それらのノードの待ち時間も同様に無限大になる。これは図36に示されている。
This node immediately tells all directly connected nodes about the new latency.
If all of the “selected destinations” of the nodes are infinite, the latency of those nodes will be infinite as well. This is illustrated in FIG.

この処理は、無限大に設定され得るすべてのノードが無限大に設定されるまで続く。これは図37に示されている。   This process continues until all nodes that can be set to infinity are set to infinity. This is illustrated in FIG.

この時点で、無限大に設定されたあらゆるノードは、一定の期間(例えば1秒)停止し、その後、それが見出した無限大ではない最低待ち時間の宛先を選択する。これは図38に示されている。   At this point, every node that is set to infinity stops for a period of time (eg, 1 second) and then selects the lowest latency destination it finds that is not infinity. This is illustrated in FIG.

無限大だったノードは、非無限大になると直ちに、それに直接接続されたノードに即座に伝える。それらのノードの1つが無限大にある場合、そのノードは、それに非無限大の待ち時間を与えた最初の接続ノードを、その選択された宛先として選択する。これは図39に示されている。   A node that was infinite immediately tells the node directly connected to it as soon as it becomes non-infinite. If one of those nodes is at infinity, the node selects the first connected node that gave it a non-infinite latency as its selected destination. This is illustrated in FIG.

この時点で、ネットワークコネクションは、EUS生成の待ち行列に宛てられたすべてのメッセージのその待ち行列への転送を可能にするように構成され直す。   At this point, the network connection is reconfigured to allow transfer of all messages addressed to the EUS-generated queue to that queue.

待ち行列に関するノードの待ち時間が数秒より長く無限大にある場合、そのノードは最終的な受信者への他の代替経路は存在しないと仮定することができ、待ち行列内のメッセージはどれも、その待ち行列についての知識とともに削除されることができる。   If a node's latency for a queue is infinite for longer than a few seconds, it can be assumed that there is no other alternative route to the final recipient, and any messages in the queue Can be deleted along with knowledge about the queue.

図40は、上述の処理の概要を示している。   FIG. 40 shows an overview of the above process.

「データストリーム内にない」ノードの最適経路への収束
ノードは常に、異なる選択された宛先を選択することによって、最初に生成された待ち行列へのそれらの待ち時間を低下させようと試みている。
Convergence nodes to the best path for nodes that are not in the data stream are always trying to reduce their latency to the first generated queue by selecting different selected destinations .

EUSメッセージを転送するために最終的な送信側と最終的な受信側の間のノード上に確立された待ち行列だけが、帯域幅を増やすための組み合わされた複数経路を使用する。最終的な送信側は、すべての「選択された宛先」にそれらがこのデータ送信経路内(「データストリーム内」)にあることを伝えることによって、この経路を標識付ける。それらの「選択された宛先」ノードの各々は、それら自身の「選択された宛先」ノードにそれらも「データストリーム内」にあることを伝える。図42はこれを示している。   Only the queues established on the node between the final sender and final receiver to forward EUS messages use the combined multiple paths to increase bandwidth. The ultimate sender marks this path by telling all “selected destinations” that they are in this data transmission path (“in the data stream”). Each of those “selected destination” nodes tells their own “selected destination” node that they are also “in the data stream”. FIG. 42 illustrates this.

特定のノードへのすべての送信側が切断された場合、もしくはそのノードにそれがもはや「データストリーム内」にないことを伝えた場合、またはそのノードにそれが「データストリーム内」にあることを伝えたノードがそのノードにそれがもはや「選択された宛先」でないことを伝えた場合、そのノードは、「データストリーム内」フラグを消去し、そのすべての選択された宛先にそれらがもはやデータストリーム内にないことを伝える。   If all senders to a particular node are disconnected, or tell the node that it is no longer "in the data stream", or tell the node that it is "in the data stream" If the node tells the node that it is no longer a “selected destination”, the node clears the “in data stream” flag and all the selected destinations are no longer in the data stream. Communicate what's not there.

EUSメッセージの経路内に現在あるノードは、EUSを有する2つのノード間で転送する場合、新しい「選択された宛先」を選択するのに異なるメカニズムを使用する。   A node that is currently in the path of an EUS message uses a different mechanism to select a new “selected destination” when forwarding between two nodes that have EUS.

複数の選択された宛先を有するノードは、データストリームから削除された場合、最低待ち時間を有する1つを除いて、すべての選択された宛先を削除する。ループを発見するメカニズムは1つの選択された宛先を相手にするだけになるので、これは、そのメカニズムが効果的であり続けることを可能にする。   When a node with multiple selected destinations is deleted from the data stream, it deletes all selected destinations except the one with the lowest latency. This allows the mechanism to remain effective since the mechanism to find the loop will only be for one selected destination.

データストリーム内に現在ないノードは常に、現在の選択された宛先よりも小さい待ち時間を有するノードを選択することによって、最終的な受信側へのその待ち時間を改善しようと試みる。   A node that is not currently in the data stream always attempts to improve its latency to the final receiver by selecting a node that has a latency lower than the currently selected destination.

ノードは、異なる「選択された宛先」を選択しようとするとき、それがループを導入しないことを確認する必要がある。   When a node tries to select a different “selected destination”, it needs to make sure that it does not introduce a loop.

そのコネクションの性能を高めようとしているノードは、待ち時間に関係なく、「容量余裕なし」のノードよりも、(後で説明される)「容量余裕なし」でないノードを好む。   The node trying to improve the performance of the connection prefers a node with no “capacity margin” (described later) over a node with “no capacity margin”, regardless of the waiting time.

ノードは、EUSメッセージ/ペイロードの経路内に現在ない場合、GUIDまたはメッセージを使用して、可能な新しい選択された宛先がループかどうかを知るための検査を行うことが許されないが、それは、どのようなサイズのネットワークも、これらのメッセージによって速やかに過剰動作させられるからである。   If a node is not currently in the EUS message / payload path, it is not allowed to use the GUID or message to check to see if the possible new selected destination is a loop, This is because such a network can be quickly over-operated by these messages.

代わりに、そのようなノードは、そのノードからの周期的かつ自動的な待ち時間更新を待機し、それを現在の「選択された宛先」の待ち時間と比較することによって、潜在的な選択肢の待ち時間を見守る。   Instead, such a node waits for a periodic and automatic latency update from that node and compares it to the current “selected destination” latency, thereby providing a potential option. Watch the waiting time.

潜在的な新しい宛先が、選択されたならばループを生成する状況では、明らかにより小さい待ち時間となる主な原因は、現在のノードとこの潜在的な新しいノードの間のループにおけるデータの進行時間によって導入される遅延である。   In situations where a potential new destination is selected that creates a loop, the main reason for the apparently lower latency is the data progress in the loop between the current node and this potential new node. Is a delay introduced by.

例えば、現在のノードの待ち時間が毎秒1秒ずつ増加し、このノードと新しい潜在的な「選択された宛先」との間に3秒の遅延を有するループが存在する場合、新しい潜在的な「選択された宛先」は常に、現在の選択された宛先よりも3秒少ない待ち時間を有するように見える。   For example, if the current node's latency increases by 1 second per second and there is a loop with a 3 second delay between this node and the new potential “selected destination”, the new potential “ The “selected destination” always appears to have a latency of 3 seconds less than the currently selected destination.

図43は、回避されるべき潜在的ループの別の例である。   FIG. 43 is another example of a potential loop that should be avoided.

現在のノードがこの明らかに「より良い選択肢」を選択した場合、システム内にループを生成する。   If the current node selects this clearly “better option”, it creates a loop in the system.

これは、待ち行列更新からの「fUpdateLatency」値が使用される場合である。この数は、待ち行列更新が、待ち行列を生成したノードから進むのにかかる最大時間である。この値の実際の計算は、後で説明される。   This is the case when the “fUpdateLatency” value from the queue update is used. This number is the maximum time it takes for a queue update to proceed from the node that created the queue. The actual calculation of this value will be explained later.

先の図では、ノードBは、ノードFがノードAよりも良い選択肢であるかどうかを決定しようと試みる。ノードBは、ノードFとノードAの「fUpdateLatency」の差を比較する。この例では2つの値は、以下のようである。
ノードAのfUpdateLatency: 8s
ノードFのfUpdateLatency: 13s
In the previous diagram, Node B attempts to determine whether Node F is a better option than Node A. Node B compares the difference in “fUpdateLatency” between node F and node A. In this example, the two values are as follows:
Node A fUpdateLatency: 8s
Node F fUpdateLatency: 13s

ノードAは現在の選択された宛先であり、ノードFの「fUpdateLatency」はノードAの「fUpdateLatency」よりも高いので、ノードBは、ノードFが実際にメッセージを一連のノードを介してノードBに転送するかどうかを知るために検査を行う必要がある。   Node A is the currently selected destination, and Node F's "fUpdateLatency" is higher than Node A's "fUpdateLatency", so Node B actually sends the message to Node B via a series of nodes. An inspection must be done to know if it will be transferred.

ノードBは、ノードFがより高い「fUpdateLatency」を有するというだけで、有効な新しい「選択された宛先」としてのノードFを即座に廃棄することはできない。このわけは、ノードFが提供する代替経路は、最終的な宛先までの潜在的により長い経路だとしても、ノードAによって提供される経路上の輻輳のために、より高速であり得るからである。   Node B cannot immediately discard Node F as a valid new “selected destination” just because Node F has a higher “fUpdateLatency”. This is because the alternative route provided by node F can be faster because of congestion on the route provided by node A, even though it is a potentially longer route to the final destination. .

受動的ループ試験の背景にある基本アイデアは、以下のようなものである。
・ AとFの間のfUpdateLatencyの差(この例では5秒)は、ノードBから送信された待ち時間更新がノードFに到達するのに最大でどれだけかかるかを表す。
・ ループが存在する場合、この期間中のノードFからの待ち時間の最大値は、今回以前の同じ期間中のノードAからの待ち時間の中央値よりも大きい。
The basic idea behind passive loop testing is as follows.
The fUpdateLatency difference between A and F (5 seconds in this example) represents how long it takes for the latency update sent from Node B to reach Node F.
If there is a loop, the maximum waiting time from node F during this period is greater than the median waiting time from node A during the same period before this time.

中央値のための全期間は、ノードAの「fUpdateLatency」の値よりも決して長くなってはならない。例えば、ノードAとノードFの「fUpdateLatency」値の差が5秒であり、ノードAの「fUpdateLatency」が8秒である場合、中央値を計算するための期間は、8秒だけである。最大値を監視する期間は5秒である。   The total duration for the median should never be longer than the value of “fUpdateLatency” for node A. For example, if the difference between the “fUpdateLatency” values of the node A and the node F is 5 seconds and the “fUpdateLatency” of the node A is 8 seconds, the period for calculating the median is only 8 seconds. The period for monitoring the maximum value is 5 seconds.

図44はこれを示している。   FIG. 44 illustrates this.

この技法は、ループに対してフォールスポジティブを示すことがあるが、フォールスネガティブを示すことは極めて稀にしかない。ループへの対処は、後で説明される。   This technique may show false positives for loops, but it is very rare to show false negatives. The handling of the loop will be described later.

上述の場合に中央値を使用することは、理想的であるが、中央値を計算するには、すべての観測値を保存する必要がある。以下に示すのは、中央値を近似することができ、低い固定オーバヘッドしか必要としない、擬似コードアルゴリズムである。
float fPart1 = 0;
float fPart2 = 0;
int nCount = 0;
while (not done all observations) [

float fCurOb = GET_ CURRENT_OBSERVATION( )
fPart1 = fPart1 + fCurOb;
nCount = nCount + 1;
fPart2 = fPart2 + abs( fPart1 / nCount - fCurOb);
]
float fCloseToMedian = fPart1 / nCount1 - fPart2/nCount;
Using the median in the above case is ideal, but to calculate the median, all observations need to be preserved. Shown below is a pseudo-code algorithm that can approximate the median and requires only a low fixed overhead.
float fPart1 = 0;
float fPart2 = 0;
int nCount = 0;
while (not done all observations) [

float fCurOb = GET_CURRENT_OBSERVATION ()
fPart1 = fPart1 + fCurOb;
nCount = nCount + 1;
fPart2 = fPart2 + abs (fPart1 / nCount-fCurOb);
]
float fCloseToMedian = fPart1 / nCount1-fPart2 / nCount;

観測期間が小さ過ぎると、それらは低解像度タイマの1回の繰り返しに切り上げられる。   If the observation period is too small, they are rounded up to one iteration of the low resolution timer.

中央値と最大値の両方の観測期間中、fUpdateLatencyの値は変化し得る。2つの「fUpdateLatency」の差が増加する場合、新しい増やされた期間が使用される。より低い値は無視される。これは、「中央値」の期間が「最大値」の期間より小さい状況をもたらし得る。これは良いことである。   During both the median and maximum observation periods, the value of fUpdateLatency can change. If the difference between the two “fUpdateLatency” increases, the new increased period is used. Lower values are ignored. This may result in a situation where the “median” period is less than the “maximum” period. This is good.

ノードFの「fUpdateLatency」がノードAより小さいか、または比較の実行中により小さくなる場合、ループはあり得ず、ノードは、さらなる遅延なしに、ノードFを新しい選択された宛先として選択することができる。   If Node F's “fUpdateLatency” is less than Node A or smaller when performing the comparison, there may be no loop and the node may select Node F as the new selected destination without further delay. it can.

このノード上の待ち行列が「容量余裕なし」である場合、我々は、より高い待ち時間を有する「容量余裕なし」でないノードを選択するほうを好む。このノードは、適切な時間だけまだ待機して、この「容量余裕あり」ノードが容量余裕ありのままでいることを確認する。この期間中に考慮対象ノードが「容量余裕なし」に変わったとしても、より低い待ち時間を提供し、ループを導入しない場合、このノードは、そのノードを「選択された宛先」として使用することができる。   If the queue on this node is “no capacity”, we prefer to select a node that has a higher latency and is not “no capacity”. This node still waits for an appropriate amount of time to confirm that this “capacity-prone” node remains with capacity. Even if the node under consideration changes to “no capacity” during this period, this node will use that node as the “selected destination” if it provides lower latency and does not introduce a loop. Can do.

このノードが現在無限大にある場合、このプロセスは使用されない(上記を参照)。   If this node is currently at infinity, this process is not used (see above).

「最大値」の期間中にノードAの中央値よりも大きい待ち時間更新がノードFから到着した場合、試験はループを指摘して終了する。ノードBは、「最大値」の全期間が満了するのを待たない。これの例外は、このノードが「容量余裕なし」であり、考慮対象ノードが「容量余裕なし」でない場合である。   If a latency update greater than the median value of node A arrives from node F during the “maximum value” period, the test ends with a loop. Node B does not wait for the entire “maximum value” period to expire. An exception to this is when this node is “no capacity margin” and the node being considered is not “no capacity margin”.

データストリーム内にないノードは、その待ち行列に関する選択された宛先をただ1つ有することができるので、新しい選択された宛先を選択した場合、古い選択された宛先の使用を停止する。   A node that is not in the data stream can have only one selected destination for its queue, so when selecting a new selected destination, it stops using the old selected destination.

データストリーム内にないノードは、新しい選択された宛先に切り替えるとき、現在の選択された宛先の「fUpdateLatency」と新しい選択された宛先の「fUpdateLatency」の差を記録する。この値は保存され、ループの検出を助けるのに使用される(後で説明される)。   When a node that is not in the data stream switches to the new selected destination, it records the difference between the “fUpdateLatency” of the currently selected destination and the “fUpdateLatency” of the new selected destination. This value is stored and used to help detect loops (discussed later).

容量余裕なし検査
各ノードの各待ち行列は、容量に余裕なくデータを送信または受信しているとき、それを検出するメカニズムも有する。ノード上の待ち行列は、待ち行列内のデータの待ち時間が、例えば、6回以上の時間インターバルにわたって、
max([すべての選択された宛先の待ち時間])−min([すべての選択された宛先の待ち時間])
を超過したときに、容量に余裕がないと見なされる。時間インターバルは、送信可能なあらゆる宛先が一定の数(例えば10)のメッセージを送信する時間、または最小である期間(例えば高速システムタイマの最小細分度の2倍)、または最大で別の期間(例えば6秒)として定義される。
Insufficient capacity check Each queue of each node also has a mechanism to detect when data is being transmitted or received without capacity. A queue on a node has a latency of data in the queue of, for example, over 6 time intervals.
max ([wait time for all selected destinations])-min ([wait time for all selected destinations])
When it exceeds, it is considered that there is not enough capacity. The time interval is the time at which every destination that can be sent sends a certain number of messages (eg 10), or a minimum period (eg twice the minimum granularity of the fast system timer), or at most another period ( For example, 6 seconds).

選択された宛先が待ち行列内の全データ量を可能な最低点にまで引き下げる機会を有するのに十分な時間が時間インターバルの間に経過することが重要である。例えば、データが毎秒100バイトで流入しており、5秒ごとに500バイトで流出している場合、5秒の絶対最小時間インターバルが必要とされる。   It is important that enough time elapses during the time interval for the selected destination to have the opportunity to reduce the total amount of data in the queue to the lowest possible point. For example, if data flows in at 100 bytes per second and flows out at 500 bytes every 5 seconds, an absolute minimum time interval of 5 seconds is required.

図45は、時間インターバル内の待ち行列レベルおよび最低レベルの一例である。   FIG. 45 is an example of the queue level and the lowest level within the time interval.

ノードは、この期間にわたって待ち行列の待ち時間をこのレベルまで引き下げることができない場合、容量に余裕がないと見なされる。ノードがそのようにすることができない場合、ノードに流入するデータが多過ぎて、データを到着とほぼ同時にうまく送出することができない。   If a node cannot reduce the queue latency to this level over this period, it is considered to have no capacity. If the node cannot do so, there is too much data flowing into the node and the data cannot be sent out almost as soon as it arrives.

ノードは、容量に余裕がない場合、それが接続されているすべてのノードに伝える。ノード上の待ち行列に関するすべての「選択された宛先」が「容量余裕なし」として標識付けられている場合、そのノードは、それも容量余裕なしであることを、そのすべての直接接続ノードに伝える。   If a node has no capacity, it tells all the nodes to which it is connected. If all "selected destinations" for a queue on a node are labeled as "no capacity", the node will tell all its directly connected nodes that it is also no capacity .

「容量余裕なし」更新は、通常の待ち時間更新と同時にネットワーク中を進行する。それらが通常のデータフローに取って代わることはない(先のsQueueUpdateを参照)。   The “no capacity” update proceeds through the network simultaneously with the normal waiting time update. They do not replace the normal data flow (see sQueueUpdate above).

先に説明されたように、データフロー内にないノードは、「容量余裕なし」と標識付けされた「選択された宛先」に代わる非ループの代替経路を見出そうと試みる。ノードは、データストリーム内にある場合、「選択された宛先」としての「容量余裕なし」ノードを、その「容量余裕なし」ステータスのために削除しようとは試みず、待ち時間だけに基づいてそのノードを削除することを決定する。   As explained earlier, a node that is not in the data flow attempts to find a non-loop alternate path to replace the “selected destination” that is labeled “no capacity”. If a node is in the data stream, it will not attempt to delete the “no capacity” node as the “selected destination” because of its “no capacity” status, but only based on latency. Decide to delete the node.

容量に余裕がない場合に追加の経路を見出す
あまりに多くのデータが流入するために容量に余裕がないノードは、直接接続ノードを使用してすべての可能な追加経路の一覧を作成する。可能な追加経路は、以下のノードである。
1.容量に余裕があるノード
2.このノードに送信していないノード
3.ループを形成しないノード
4.問合せを行っているノード以外に待ち行列の宛先を有するノード(すなわち、ループが形成されない)
Finding additional paths when capacity is not available Nodes that have capacity due to too much data flowing in, use direct connection nodes to create a list of all possible additional paths. Possible additional paths are the following nodes:
1. 1. Node with sufficient capacity 2. Node not transmitting to this node 3. Node that does not form a loop A node with a queue destination other than the querying node (ie, no loop is formed)

これらの可能な経路の各々に対し、容量余裕なしノードは、一意のGUIDを生成する。このGUIDは、各可能な経路に送信されて、ループに関して各経路を試験する。ループが検出された場合、その経路は、可能な追加経路の一覧から廃棄される。   For each of these possible paths, a node with no capacity creates a unique GUID. This GUID is sent to each possible path to test each path for loops. If a loop is detected, the route is discarded from the list of possible additional routes.

可能な経路に対応する各GUIDは、その経路に沿って次の宛先ノードに送信される。そのノードは、そのGUIDを保存し、それが「選択された宛先」として有するすべてのノードにそのGUIDを転送する。ノードが新しいノードを宛先に選択した場合、GUIDは、その新しいノードに渡される。ノードは、すべての「選択された宛先」にGUIDを記憶から消すよう命じることによって、そのGUIDを失効させる。ノードにGUIDを記憶するよう命じたすべてのノードが、ノードにGUIDを記憶することを止めるよう命じた場合、またはそれらがもはや宛先として選択されていないこと、もしくはそれらが切断されたことをノードに伝えた場合、GUIDは失効させられる。   Each GUID corresponding to a possible route is transmitted along the route to the next destination node. The node saves the GUID and forwards the GUID to all nodes it has as a “selected destination”. If the node selects a new node as the destination, the GUID is passed to the new node. The node revokes the GUID by commanding all “selected destinations” to remove the GUID from storage. If all nodes that ordered the node to remember the GUID ordered the node to stop storing the GUID, or that they were no longer selected as destinations or that they were disconnected If so, the GUID is revoked.

図46は、これの一例である。図46では、容量に余裕がないノードは、それが可能な追加の選択された宛先に送信したGUIDを見出した場合、その選択が悪い選択であったことを知る。   FIG. 46 shows an example of this. In FIG. 46, a node with insufficient capacity knows that the selection was a bad selection when it finds a GUID that it has sent to an additional selected destination where it can.

同様に、選択された経路に送信されたGUIDは、データがそれに沿ってそのノードから流れることができるすべての経路を列挙する。   Similarly, the GUID sent to the selected route lists all the routes along which data can flow from that node.

容量に余裕がないマシンは、それが送出したGUIDの1つが、それにデータを送信しているノードから戻って来たのを見出した場合、それがGUIDを送信したノードがループの一部を形成しており、その可能な経路が「容量余裕なし」ステータスを解消するための選択肢から除去されることを知る。GUIDメッセージは、GUID、問題の待ち行列の名前、「進行時間」、およびこのGUIDを記憶するまたは記憶から消すようノードに命じるメモから構成される。   If a machine with insufficient capacity finds that one of the GUIDs it sends back from the node sending data to it, the node that sent the GUID forms part of the loop. And know that the possible path is removed from the options for resolving the “no capacity available” status. The GUID message consists of the GUID, the name of the queue in question, the “progress time”, and a note that instructs the node to store or remove this GUID.

ノードは、GUIDを記憶するまたは記憶から消すよう命じられた場合、できるだけ速やかにこのメッセージを送信する(伝播優先順を参照)。ノードは、このGUIDメッセージをすでに見出し、処理している場合、それを無視する。   When a node is instructed to store or remove a GUID, it sends this message as soon as possible (see Propagation Priority). If the node has already found and processed this GUID message, it ignores it.

GUIDメッセージは、以下のような構造をとる。
struct sGUIDProbe [

// could also be a number that represents this queue
// (discussed previously)
sQueueName qnQueueName;

// true if the node is supposed to remember this GUID
// false if its supposed to forget it.
bool bRememberGUID;

// the actual GUID
char cGUID[constant_Guid_Size];

// how far the GUID will travel (based on fUpdateLatency)
float fMaximumGUIDTravelTime;
];
The GUID message has the following structure.
struct sGUIDProbe [

// could also be a number that represents this queue
// (discussed previously)
sQueueName qnQueueName;

// true if the node is supposed to remember this GUID
// false if its supposed to forget it.
bool bRememberGUID;

// the actual GUID
char cGUID [constant_Guid_Size];

// how far the GUID will travel (based on fUpdateLatency)
float fMaximumGUIDTravelTime;
];

GUIDの進行時間は、新しい経路を探しているノードのfLatencyUpdateと容量に余裕がある可能な新しい経路のfLatencyUpdateの差の(例えば)3倍として設定される。ノードは、GUIDプローブを受信するたびに、このGUIDプローブについて直接接続ノードに伝える前に、fLatencyUpdate値へのその寄与分を、(この値を通常するようにfLatencyUpdateに加算する代わりに)fMaximumGUlDTravelTime時間から減算する。その寄与分をfMaximumGUlDTravelTime時間から減算した後、その値が0より小さい場合、GUIDプローブは、どの選択された宛先にも渡されない。   The progress time of the GUID is set as (for example) three times the difference between fLatencyUpdate of a node looking for a new route and fLatencyUpdate of a possible new route with sufficient capacity. Each time a node receives a GUID probe, it communicates its contribution to the fLatencyUpdate value from the fMaximumGUIDTraveTime time (instead of adding this value to fLatencyUpdate to make this value normal) before telling the directly connected node about this GUID probe. Subtract. If the contribution is subtracted from the fMaximumGUlDTTimeTime time and the value is less than 0, the GUID probe is not passed to any selected destination.

減算する値は、このGUIDプローブが基づいている待ち行列と同じクラスのすべての待ち行列のラウンドロビン更新のための時間に基づいている(後で説明される。「第2」の「伝播優先順」を参照)。   The value to be subtracted is based on the time for round robin update of all queues of the same class as the queue on which this GUID probe is based (described later. ).

容量に余裕がないノードは、GUIDに、ネットワーク内を進み、ループが存在するならば「容量余裕なし」ノードにループバックする機会を与えるため、最小でその初期「fMaximumGUlDTravelTime」だけ待機する。その時間が経過した場合、GUIDがノードに戻って来なかったすべての潜在的な選択が有効な選択肢と見なされる。   A node that has no capacity will wait for at least its initial “fMaximumGULDTraveTime” to give the GUID the opportunity to go through the network and loop back to the “no capacity room” node if a loop exists. If that time has elapsed, all potential choices for which the GUID has not returned to the node are considered valid choices.

最低待ち時間で、「容量余裕なし」でなく、非ループのノードが選択され、それが今では「選択された宛先」であることを知らせるメッセージが、そのノードに送信される。これは、2つの直接接続ノードがそれら自身を宛先として選択し、ループを形成することを防止するために行われる。   A message is sent to the node indicating that it is the lowest latency, not “no capacity”, but a non-looped node and that it is now the “selected destination”. This is done to prevent two directly connected nodes from selecting themselves as destinations and forming a loop.

2つの直接接続ノードが同時に互いを宛先として選択した場合、両ノードは、直ちにそれまでの宛先に切り替え戻し、追加の宛先を見出すプロセスを再び試みる。GUIDメカニズムはランダムなインターバルを含むので、2つのノードが再び互いを選択する可能性は、繰り返しのたびに劇的に低下する。   If two directly connected nodes select each other as destinations at the same time, both nodes immediately switch back to the previous destination and try the process of finding additional destinations again. Since the GUID mechanism includes a random interval, the likelihood that two nodes will select each other again decreases dramatically with each iteration.

すべての可能な経路がループとして戻って来た場合、「容量余裕なし」ノードは、GUIDを削除する。このノードは、しばらく後も依然として「容量余裕なし」である場合、代替経路を探すプロセスを再実行する。このノードは、GUIDプローブの最後のラウンドで使用された最大「fMaximumGUIDTravelTime」の(例えば)3倍だけ待機する。   If all possible paths come back as a loop, the “no capacity room” node deletes the GUID. If this node is still “no capacity” after a while, it re-executes the process of searching for an alternative route. This node waits (for example) three times the maximum “fMaximumGUIDTraveTime” used in the last round of the GUID probe.

ノードがデータを送信する場所としていくつかの選択肢を有するとしても、待ち行列に許された最大待ち時間は依然として、
max([すべての選択された宛先の待ち時間])−min([すべての選択された宛先の待ち時間])
であり、そのノード上で利用可能なメモリに依存する。この新しいノードが選択されると直ちに、ノードは、その「容量余裕なし」ステータスをクリアすることができる。
Even if the node has several options for where to send data, the maximum latency allowed for the queue is still
max ([wait time for all selected destinations])-min ([wait time for all selected destinations])
And depends on the memory available on that node. As soon as this new node is selected, the node can clear its “capacity free” status.

もう少し多くのデータが送信されることを許容するフロー制御の割当分残高が存在し得るので、この最大値は厳格な制限ではない(フロー制御を参照)。   This maximum value is not a strict limit, as there may be a flow control quota that allows more data to be transmitted (see Flow Control).

トークン更新がこのノードにデータを送信するノードに送信されるたび、最後の時間インターバルにおける現在の最小待ち時間、および「容量余裕なし」フラグも同様に送信される。これは、送信ノードが常に最良経路を選択することを可能にする現在の待ち時間データを有することを可能にする。   Each time a token update is sent to the node sending data to this node, the current minimum latency in the last time interval and the “no capacity available” flag are sent as well. This makes it possible to have current latency data that allows the sending node to always select the best path.

未使用追加経路を削除する
データストリーム内にないノードは、選択された宛先を1つ有するだけなので、追加のソースを削除することはなく、代わりに1つのソースからより良いソースに切り替える(先に説明された)。
Nodes that are not in the data stream that delete unused additional paths have only one selected destination, so they do not delete additional sources, but instead switch from one source to a better source (previous Explained).

データストリーム内にあるノードは、複数のデータ経路を開発する可能性を与えられた唯一のノードである(先に説明された)。   The node in the data stream is the only node given the possibility to develop multiple data paths (as described above).

データストリーム内にあるノードは、一定の期間、データを送信するために特定の「選択された宛先」を使用しない場合、この選択された宛先を選択された宛先の一覧から削除し、そのノードにそれがもはや選択された宛先ではないことを知らせる。   If a node in the data stream does not use a particular “selected destination” to transmit data for a period of time, it removes this selected destination from the list of selected destinations and Signals that it is no longer the selected destination.

ノードにそれがもはや選択された宛先ではないことを伝えることにより、「データストリーム内」にある別のノードもこのノードを選択された宛先として選択していない限り、「データストリーム内」フラグも削除される。   By telling the node that it is no longer the selected destination, the "in data stream" flag is also removed unless another node in "in the data stream" has also selected this node as the selected destination Is done.

未使用の選択された宛先を削除する前に待つ一定の時間は、最初にコネクションを生成するのに必要とされた時間と比べて比較的長くなければならない。選択された宛先が保持される時間は、ノードが削除されてから再び追加されるまでにどれだけの時間が経過したかに基づいて、時間とともに動的に調整されることもできる。   The certain amount of time to wait before deleting unused selected destinations should be relatively long compared to the time required to initially create a connection. The time for which the selected destination is retained can also be adjusted dynamically over time based on how much time has elapsed between the node being deleted and re-added.

「容量余裕なし」でない場合にいつ選択された宛先を追加/削除するかを決定する
ノードは、可能な選択肢が存在するならば、常に少なくとも1つの「選択された宛先」をもたなければならない(選択肢がなければ、その待ち時間が無限大になる)。
A node that decides when to add / remove a selected destination if it is not “no capacity” must always have at least one “selected destination” if there are possible choices. (If there is no option, the waiting time is infinite).

ノードは、特定の待ち行列に関するデータストリーム内にある場合、その待ち行列がデータを転送するために使用される待ち行列であるならば、2以上の「選択された宛先」を有することができる。TCP/IPのハンドシェイク例では、これは待ち行列B1(先の図)である。   A node can have more than one “selected destination” if it is in the data stream for a particular queue, if that queue is the queue used to transfer data. In the TCP / IP handshake example, this is queue B1 (the previous figure).

ノードは、容量に余裕があり、すべての「選択された宛先」が削除するには活動的過ぎる(上記を参照)ために「選択された宛先」を削除できない場合、すべての「選択された宛先」の最高の待ち時間より小さい待ち時間を有する新しい選択された宛先を追加しようと試みる。   All "selected destinations" if the node is unable to delete "selected destinations" because it has enough capacity and all "selected destinations" are too active to delete (see above) Attempts to add a new selected destination that has a latency that is less than the highest latency.

ノードは、「容量余裕なし」でない可能な「選択された宛先」だけを選択しなければならない。   The node must select only possible “selected destinations” that are not “no capacity”.

ノードは、現在の「選択された宛先」をより良い選択肢で置き換えることを期待してこれを行う。これは、ノードが、全経路をより高速にすること、およびノードを通過するメッセージのためにより少ないバッファしか必要としないことを可能にする。   The node does this in the hope of replacing the current “selected destination” with a better option. This allows the node to make the entire path faster and require fewer buffers for messages passing through the node.

ノードは、GUIDプローブを用いて可能な選択肢をプローブする(上で説明された)。GUIDプローブが失敗した(ループが検出された)場合、ノードは、次にこのコネクションの最適化を試みるとき、次に最低の待ち時間を有する別の直接接続ノードを選択する。   The node probes possible options using the GUID probe (described above). If the GUID probe fails (a loop is detected), the node will select the next directly connected node with the next lowest latency when it next tries to optimize this connection.

図47は、このプロセスを図説するフローチャートである。   FIG. 47 is a flowchart illustrating this process.

偶然生成されたループを解消する
標識付けされたデータストリームの部分でないノードにおいてループが偶然生成された場合、それらの待ち時間および「fUpdateLatency」は上昇する。
If loops are accidentally created at nodes that are not part of a tagged data stream that resolves the accidentally created loops, their latency and “fUpdateLatency” are increased.

図48は、データストリーム内にないノードにおいて偶然生成されたループを示している。   FIG. 48 shows a loop that was accidentally generated at a node that is not in the data stream.

データストリーム内にないノードにおけるループは、可能な新しい選択された宛先の待ち時間を我々が比較する方法(上記を参照)のため、稀である。   Loops in nodes that are not in the data stream are rare because of the way we compare the possible new selected destination latencies (see above).

我々はGUIDを使用して積極的にループを探して可能な新しい宛先をプローブするので、ごく稀にGUIDメカニズムが使用された後に経路変更が干渉を受けた結果として以外、ループはデータストリーム内に生成されない。   We actively use the GUID to look for loops and probe possible new destinations, so that loops are not included in the data stream except as a result of routing changes being interfering after the GUID mechanism is used very rarely. Not generated.

「容量余裕なし」ノードまたは無限大になったノードを含まない単純なループは、標準的な「受動的」ループ検出メカニズムを使用して、容易に解消される。   Simple loops that do not include “capacity free” nodes or nodes that have become infinite are easily resolved using standard “passive” loop detection mechanisms.

ループ内のノードは、その待ち行列の最終的な受信側への実際のコネクションをもたない待ち行列について知っているような見掛けをとる。例えば、ループが維持され、実際の最終的な受信側がネットワークを離脱した場合、このループは、この待ち行列についての知識を自己保持し続ける。   The nodes in the loop appear as if they know about a queue that does not have an actual connection to the final receiver of that queue. For example, if a loop is maintained and the actual final receiver leaves the network, the loop will continue to self-maintain knowledge about this queue.

この問題は、以下の場合に生じる。
1.ループ内のノードが「容量余裕なし」でなく、ループ外のノードが「容量余裕なし」である場合。
2.ループ外のノードが「無限大」にある場合。
This problem occurs when:
1. The nodes in the loop are not “no capacity” and the nodes outside the loop are “no capacity”.
2. When a node outside the loop is "infinite".

どちらの場合も、解決策は、ループの可能性が存在することを検出し、先に説明されたのと同じ方法でそれらの待ち時間を無限大に変更することである。これにより、ノードは非ループ状態に速やかに移される。   In either case, the solution is to detect the possibility of loops and change their latency to infinity in the same way as described above. As a result, the node is quickly moved to the non-loop state.

データストリーム内にないノード上に我々がおり、以下のような直接接続ノードが存在する場合、
1.我々のノードがそうでないときに「容量余裕なし」の状態にあり
2.我々が有さないときに無限大の待ち時間を有する
If we are on a node that is not in the data stream and there is a directly connected node such as
1. 1. When our node is not, it is in a “no capacity” state. Have infinite waiting time when we don't have

ループ試験が起動される。   The loop test is activated.

新しい「選択された宛先」を選択するプロセス中、ノードは、新しい「選択された宛先」と古い「選択された宛先」の「fUpdateLatency」の差を記録する。3を乗じられた秒数で示されたこの時間は、「可能ループ時間」(PLT:possible loop time)と呼ばれる。   During the process of selecting a new “selected destination”, the node records the difference between the “fUpdateLatency” of the new “selected destination” and the old “selected destination”. This time, expressed in seconds multiplied by 3, is called “possible loop time” (PLT).

我々のループ試験は、PLTの間の最小「fUpdateLatency」、「fLatencyFromStream」、および「fLatency」を記録することによって開始する。   Our loop test begins by recording the minimum “fUpdateLatency”, “fLatencyFromStream”, and “fLatency” during the PLT.

2つの連続する繰り返しにおいて、3つの記録された値(「fUpdateLatency」、「fLatencyFromStream」、および「fLatency」)のすべてが、前の繰り返しより小さい場合、実際にループが存在するかどうかを決定するために、GUIDプローブが使用される。GUIDプローブ(上記を参照)は、(例えば)PLT×5の時間だけネットワーク中を進行するように設定される。   To determine if a loop actually exists if all three recorded values ("fUpdateLatency", "fLatencyFromStream", and "fLatency") are smaller than the previous iteration in two consecutive iterations In addition, a GUID probe is used. The GUID probe (see above) is set to travel through the network for (for example) PLT × 5 time.

ループが検出された場合、それを検出したノードは、「削除される待ち行列への経路」と同じ方法で無限大になる。   If a loop is detected, the node that detected it becomes infinite in the same way as the “path to the queue to be deleted”.

GUIDプローブが失敗した場合、ノードは上で説明されたループ試験に戻る。   If the GUID probe fails, the node returns to the loop test described above.

このプロセスが3回繰り返された場合、ノードはいずれにせよ「無限大」になる(「削除される待ち行列への経路」を参照)。   If this process is repeated three times, the node will be “infinite” anyway (see “Route to Deleted Queue”).

いつメッセージを送信するか
いつメッセージを送信するかを決定する際、ノードは、送信先ノードが、
1.メッセージを保存するための領域を有するかどうか、
2.他の直接接続ノードの待ち時間およびこのノードの待ち行列内のデータ量に鑑みて、役に立つ宛先への待ち時間を提供するかどうかを決定する。
When deciding when to send a message and when to send a message, the node
1. Whether to have an area for storing messages,
2. In view of the latency of other directly connected nodes and the amount of data in this node's queue, determine whether to provide a latency to a useful destination.

役に立つ選択された宛先だけに送信する
ノードがメッセージを送信するための複数の「選択された宛先」を選択したとしても、それは、それらすべてが使用されることを意味しない。「選択された宛先」は、待ち行列内のデータの現在の待ち時間が、
[選択された宛先の待ち時間]−min([すべての選択された宛先の待ち時間])
に等しいか、またはより大きい場合にだけ使用される。
Even if a node that sends only useful selected destinations selects multiple “selected destinations” to send the message, it does not mean that they are all used. The “selected destination” is the current waiting time for the data in the queue,
[Selected Destination Wait Time] -min ([Selected Destination Wait Time])
Only used when equal to or greater than.

「選択された宛先」の待ち時間が、すべての「選択された宛先」の待ち時間の最小値よりx秒長い場合、その選択された宛先を使用する前に、x秒分のデータが、そのノード上に保存される。   If the waiting time for the “selected destination” is x seconds longer than the minimum waiting time for all “selected destinations”, then x seconds of data will be saved before using the selected destination. Saved on the node.

選択された宛先が(先に説明された)現在の待ち行列の待ち時間を上回る待ち時間を有する場合、我々は、そのノードの待ち時間が指定された値を下回ったときにそのことを我々に知らせるよう求めるメッセージをそのノードに送信するオプションを有する。ノードに一定の値で更新を送信するよう求めることは、ノードに現在の待ち時間を送信させる原因ともなる。   If the selected destination has a waiting time that exceeds the waiting time of the current queue (described above), we will tell us when that node's waiting time falls below the specified value. Has the option to send a message to the node asking to inform Asking a node to send an update at a constant value also causes the node to send the current waiting time.

これは、受信側の待ち時間に関して送信側に知らせておくために必要とされる素早い更新の問題を解決する。   This solves the problem of quick updates needed to keep the sender informed about the latency on the receiver side.

待ち時間および「容量余裕なし」更新は、トークン更新(後で定義される)、およびノードとノードとの帯域幅のX%を超えないよう制限される継続的ストリームの両方で受け渡される。通常、この数は1〜5%である。ノードは、すべての既知の利用可能な待ち時間をラウンドロビン方式で巡回する(伝播優先順を参照)。どういう順序またはどれだけの頻度で待ち行列更新を送信するかを決定する他の方法も使用されることができ、例えば、
1.割合の変化が使用され、
2.特定のクラスの待ち行列名がより高頻度の更新のために標識付けされ、
3.データストリームの近くで待ち時間更新を増加させるため、「データストリームからの距離」カウンタが使用される。
Latency and “no capacity” updates are passed on both token updates (defined later) and continuous streams that are limited to not exceed X% of node-to-node bandwidth. Usually this number is 1-5%. The node cycles through all known available latencies in a round-robin fashion (see Propagation Priority). Other methods of determining what order or how often to send queue updates can also be used, for example:
1. Percentage change is used,
2. Specific class queue names are marked for more frequent updates,
3. To increase latency updates near the data stream, a “distance from data stream” counter is used.

一定の期間、待ち行列メッセージが選択された宛先に送信されなかった場合、その選択された宛先は、そのノードの選択された宛先の一覧から削除される。この期間は、最初に宛先を確立するのに必要とされる全時間よりも少なくとも1桁大きい。適応的手法も使用され得る(先に説明された)。   If a queue message has not been sent to a selected destination for a certain period of time, the selected destination is deleted from the list of selected destinations for that node. This period is at least an order of magnitude greater than the total time required to initially establish a destination. An adaptive approach can also be used (described above).

フロー制御
各ノードは、例えば、メッセージデータ、待ち時間、GUID、選択された宛先など、他のノードおよび待ち行列へのコネクションに関する情報をサポートするのに使用される、様々な量のメモリ、1次RAMを有する。
Flow control Each node uses various amounts of memory, primary, etc. used to support information about connections to other nodes and queues, such as message data, latency, GUID, selected destination, etc. It has RAM.

フロー制御のための必要情報の一例は、ノードAはノードBをメッセージの宛先として有するかどうかである。あまりに多くのデータでノードBを過剰動作させることをノードAに許さないことが重要である。   An example of the necessary information for flow control is whether node A has node B as a message destination. It is important not to allow Node A to overoperate Node B with too much data.

フロー制御は、トークンのメカニズムを使用して動作する。ノードBは、ノードAがノードBに送信可能なバイト数に対応する一定の数のトークンをノードAに与える。ノードAは、この数より多くのバイトを転送することは許されない。ノードBは、利用可能なより多くの領域を有し、ノードAが僅かなトークンしか得ていないことを認識した場合、より多くのトークンをノードAに送信することができる。   Flow control operates using a token mechanism. Node B gives node A a fixed number of tokens corresponding to the number of bytes that node A can transmit to node B. Node A is not allowed to transfer more bytes than this number. Node B can send more tokens to Node A if it has more space available and recognizes that Node A has only a few tokens.

2つのレベルのフロー制御が存在する。第1のレベルは、ノード対ノードのフロー制御であり、第2のレベルは、待ち行列対待ち行列のフロー制御である。ノード対ノードのフロー制御は、ノードAからノードBに送信される任意のデータ(待ち行列およびシステムメッセージ)のバイト総数を制限するのに使用される。待ち行列対待ち行列のフロー制御は、同じ名前を有するノードAの待ち行列からノードBの待ち行列に移動するバイト数を制限するのに使用される。   There are two levels of flow control. The first level is node-to-node flow control and the second level is queue-to-queue flow control. Node-to-node flow control is used to limit the total number of bytes of any data (queues and system messages) sent from node A to node B. Queue-to-queue flow control is used to limit the number of bytes that move from a Node A queue that has the same name to a Node B queue.

例えば、10バイトの待ち行列メッセージが、ノードAからノードBに移動する場合、ノード対ノードのフロー制御では、10トークンを要し、その特定の待ち行列に関する待ち行列対待ち行列のフロー制御でも、同様に10トークンを要する。   For example, if a 10-byte queue message moves from node A to node B, node-to-node flow control requires 10 tokens, and even queue-to-queue flow control for that particular queue, Similarly, 10 tokens are required.

ノードBは、最初にノードAにトークンを与えるとき、ノードAからのスループットを最大化するようそこから調整を始める開始時状態として、トークン残の総数を小さな数に制限する。   When Node B initially grants a token to Node A, it limits the total number of remaining tokens to a small number as a starting state from which to begin adjusting to maximize throughput from Node A.

ノードBは、ノードAに十分に高い「トークン残高」限界を与えていないことを、以下の2つの条件が満たされた場合に知る。
・ 送信すべきより多くのメッセージがあるのに、トークンを使い尽くしてしまったので送信できないことを、ノードAがノードBに伝えた場合。
・ ノードBがデータを送信すれば宛先はそれを受け入れるのに、ノードBが「送信すべきデータなし」状態に遭遇している場合。
Node B knows that it does not give Node A a sufficiently high “token balance” limit when the following two conditions are met:
• Node A tells Node B that it has more messages to send but it cannot send because it has run out of tokens.
If Node B sends data, the destination accepts it, but Node B encounters a "no data to send" condition.

ノードAがより高い「トークン残高」限界を求めたが、ノードBは「送信すべきデータなし」状態に達していない場合、ノードBは、ノードAの「トークン残高」限界を増やす前に、「送信すべきデータなし」状態になるのを待機する。   If node A seeks a higher “token balance” limit, but node B has not reached the “no data to send” state, then node B will increase “ Wait for "no data to send" state.

ノードBは、「トークン残高」限界がどうであれ、トークンを有する状態にノードAを保つよう常に試みる。ノードBは、それが見たメッセージのサイズをそれがノードAに与えたトークン数から減算することによって、ノードAが有するとノードBが考えるトークンの数を把握している。ノードBは、それがノードAに割り当てた「残高限界」の50%をノードAが下回ったことを見出し、それがより多くのデータを受け入れることができる場合、さらなるトークンをノードAに送信する。ノードBは、その裁量で最大50%ポイントまでノードAにトークンを与えることができるが、そのポイントで動作しなければならない。   Node B always tries to keep Node A in a state with tokens, whatever the “token balance” limit. Node B keeps track of the number of tokens that Node B considers Node A to have by subtracting the size of the message it has seen from the number of tokens it has given Node A. Node B finds that Node A has fallen below 50% of the “balance limit” it has assigned to Node A, and sends more tokens to Node A if it can accept more data. Node B can give tokens to Node A up to 50% points at its discretion, but must operate at that point.

さらなるトークンを割り当てると、ノードAがデータを送信するのに利用可能なトークンの最大数に関するノードB側の情報に基づいた推定値にも影響がおよぶ。   Assigning additional tokens also affects an estimate based on information on the Node B side regarding the maximum number of tokens that Node A can use to transmit data.

このトークン数は、ノードAが有するトークン数についてのノードBの情報に基づいた推定値に追加される場合、「トークン残高」限界を超過しない。この数は、ノードBの待ち行列内のデータ量に応じて、より少なくすることもできる(後で説明される)。   This number of tokens does not exceed the “token balance” limit when added to the estimate based on Node B information about the number of tokens that Node A has. This number may be smaller depending on the amount of data in the Node B queue (discussed later).

例えば、ノードAがノードBに送信できるようにネゴシエートしているノードAとノードBを考える。図49は現在の状態を示している。   For example, consider node A and node B that are negotiating so that node A can transmit to node B. FIG. 49 shows the current state.

ノードBは、ノードAに提供することを望むデフォルト割当数を生成する。次にノードBは、その割当数(現在と最大の差)を含むメッセージをノードAに送信する。メッセージは、最大限界が変更されるたびにインクリメントされるバージョン番号も含む。ノードBがノードAに送信するメッセージは、以下のようになる。
struct sQuotaUpdate [

// the version
unsigned integer uiVersion;

// the queue name or number (see previous)
sQNName qnName;

// how much additional quota is sent over
unsigned integer uiAdditionalQuota;

];
Node B generates a default allocation number that it wishes to provide to Node A. Next, the node B transmits a message including the allocated number (the maximum difference between the current and the current) to the node A. The message also includes a version number that is incremented each time the maximum limit is changed. The message sent from node B to node A is as follows.
struct sQuotaUpdate [

// the version
unsigned integer uiVersion;

// the queue name or number (see previous)
sQNName qnName;

// how much additional quota is sent over
unsigned integer uiAdditionalQuota;

];

ノードAがより多くのデータを送信したいことを我々に伝える場合、我々が最大限界を調整するごとにノードAが一度だけそれを行うように、我々はこれを行う。図50は現在の状態を示している。   If we tell us that node A wants to send more data, we do this so that node A does it only once every time we adjust the maximum limit. FIG. 50 shows the current state.

ノードAは、ノードBに5バイトのメッセージを送信することを望む場合、十分な割当数を有していない。その場合、ノードAは、「より多く送信したい」ことを伝えるメッセージをノードBに送信する。ノードAは、その後、現在のバージョンに一致するように「最後により多くを求めたバージョン」を設定する。これは、ノードBが最初の要求に応じなかった場合に、ノードAが繰り返しより多くの割当数を求めることを防止する。このメッセージは、以下のようになる。
struct sRequestMoreQuota [

// the queue name or number (see previous)
sQNName qnName;

];
If node A wants to send a 5-byte message to node B, it does not have a sufficient quota. In that case, the node A transmits a message to the node B informing that “I want to transmit more”. Node A then sets “version that sought more at the end” to match the current version. This prevents node A from repeatedly seeking more allocations if node B does not respond to the initial request. This message looks like this:
struct sRequestMoreQuota [

// the queue name or number (see previous)
sQNName qnName;

];

図51はこの状態を示している。   FIG. 51 shows this state.

ノードBは、その待ち行列にデータがないのに、その選択された宛先に送信できる場合、ノードAの最大割当数限界を100バイトに増加させる。ノードBは、新しいバージョン番号とともに新しい割当数を送信する。図52はこの状態を示している。   Node B increases Node A's maximum quota limit to 100 bytes if there is no data in its queue but it can send to the selected destination. Node B sends a new allocation number with a new version number. FIG. 52 shows this state.

ノードAは、今では5バイトのメッセージを送信するのに十分な割当数を有している。メッセージが送信されるとき、ノードAは、利用可能な割当数から5バイトを取り除く。メッセージがノードBによって受信されると、ノードBは、ノードAが有するとそれが考える現在の割当数から5バイトを取り除く。図53はこの状態を示している。   Node A now has enough quota to send a 5-byte message. When the message is sent, node A removes 5 bytes from the available quota. When the message is received by node B, node B removes 5 bytes from the current allocation number it considers node A to have. FIG. 53 shows this state.

ノードAが割当数を使い尽くすか、送信すべきメッセージがなくなるかするまで、メッセージは流れ続けることができる。ノードAが有するとノードBが考える割当数が50バイトを下回った場合、ノードBは、即座に割当数更新を送信する。最大限界を変更しない割当数更新は、バージョンのインクリメントを引き起こさない。異なる待ち行列のための割当数更新は、一緒に行う(piggy back)ことができ、したがって、1つの割当数更新が送信される「必要がある」場合、ちょうど補充の必要がある他の割当数更新も同時に送信されることができる。これにより、1つの割当数更新を含むだけで送信される特別なメッセージの発生が少なくなる。   Messages can continue to flow until node A runs out of quota or there are no more messages to send. If the allocation number that node B thinks that node A has falls below 50 bytes, node B immediately transmits an allocation number update. A quota update that does not change the maximum limit does not cause a version increment. Quota updates for different queues can be piggy back, so if one quota update is “needed” to be sent, just the other quotas that need to be replenished Updates can also be sent at the same time. This reduces the occurrence of special messages that are transmitted only by including one allocation number update.

一般に、システムメッセージも、それらの影響を小さくするため、データメッセージと一緒にピギーバックされることができる。   In general, system messages can also be piggybacked with data messages to reduce their impact.

待ち行列対待ち行列フロー制御のために「残高限界」を拡張するのと同じ手法が、ノード対ノードフロー制御にも適用される。   The same approach to extending the “balance limit” for queue-to-queue flow control applies to node-to-node flow control.

「残高限界」はまた、小さいが一定の率(例えば毎秒1%)でシステムによって継続的に縮小される。これは、高容量環境で大きくなったが、今は低容量環境にあり、不必要に高い「残高限界」の時間経過に伴う自動補正を可能にする。この継続的縮小が「残高限界」を低くし過ぎた場合、(より多くのトークンを要求し、受信ノードが「送信すべきデータなし」状態に遭遇していれば、より多くが与えられる)先のメカニズムがそれを検出し、残高限界を再び増加させる。   The “balance limit” is also continuously reduced by the system at a small but constant rate (eg 1% per second). This has become large in a high capacity environment, but is now in a low capacity environment and allows for automatic correction over time of an unnecessarily high “balance limit”. If this continuation shrinks too low the "balance limit" (more is requested if more tokens are requested and the receiving node encounters a "no data to send" condition) The mechanism detects this and increases the balance limit again.

容量に余裕がない場合のフロー制御
送信するための割当数を他のノードに与えるとき、それらが受信ノードを「容量余裕なし」状態に移行させ、可能ならばそれをそこに留まらせるのに十分な割当数を与えられることが重要である。
When giving other nodes quotas for flow control transmission when there is not enough capacity , they are enough to move the receiving node to the “no capacity” state and if possible stay there It is important to be able to give a certain number of quotas.

ノード上の待ち行列での待ち時間が、(max([すべての選択された宛先の待ち時間])−min([すべての選択された宛先の待ち時間]))を超えた場合、各着信データフローは、この最大待ち時間にわたって、それらの最大「残高限界」より多くの割当数を取得してはならない。   Each incoming data if the waiting time in the queue on the node exceeds (max ([waiting time of all selected destinations]) − min ([waiting time of all selected destinations])) Flows should not acquire more quota than their maximum “balance limit” over this maximum latency.

これは、待ち行列が容量超過である間にそのソースから受信されたバイト数を記録する、受信側のフロー制御構造体に付加される「容量超過トークンカウント」変数を有することによって実施される。   This is accomplished by having an “overcapacity token count” variable added to the receiving flow control structure that records the number of bytes received from its source while the queue is overcapacity.

この数は、ノードが送信ノードにより多くの割当数を提供するようになったとき、「最大残高限界」から差し引かれる。   This number is deducted from the “maximum balance limit” when the node becomes more capable of providing the sending node.

待ち行列の待ち時間がその最大待ち時間を下回った場合、「容量超過トークンカウント」変数は0に設定される。   If the waiting time of the queue is less than its maximum waiting time, the “overcapacity token count” variable is set to zero.

容量超過の待ち行列からデータが取り除かれるとき、我々は、取り除かれたバイト数を取り集め、そのバイト総数をできるだけ均等に、0より大きいすべての「容量超過トークンカウント」変数から差し引く。「容量超過トークンカウント」は常に、0に等しいか、または0より大きいことが重要である。   When data is removed from the overcapacity queue, we collect the number of bytes removed and subtract the total number of bytes from all “overcapacity token count” variables greater than 0 as evenly as possible. It is important that the “overcapacity token count” is always equal to or greater than zero.

例えば、待ち行列から120バイトが取り除かれ、その待ち行列にデータを置いているコネクションが4つ存在し、それらの「容量超過トークンカウント」が0、100、20、50である場合、我々は、バイト数(120)を0より大きい「容量超過トークンカウント」変数の数(3)で除算し、40を得る。最低の「容量超過トークンカウント」変数は40より小さい(20)ので、我々は、その数(20)をすべての「容量超過トークンカウント」変数から減算する。これにより、4つの変数は0、80、0、50となり、まだ60バイトが残されている。我々は、このプロセスを繰り返し、残っている2つの「容量超過トークンカウント」変数から30を減算し、0、50、0、20を得る。   For example, if 120 bytes are removed from the queue, there are 4 connections that place data in the queue, and their “overcapacity token count” is 0, 100, 20, 50, then we have Divide the number of bytes (120) by the number of “overcapacity token count” variables (3) greater than 0 to get 40. Since the lowest “overcapacity token count” variable is less than 40 (20), we subtract that number (20) from all “overcapacity token count” variables. As a result, the four variables become 0, 80, 0, 50, and 60 bytes are still left. We repeat this process and subtract 30 from the two remaining “overcapacity token count” variables to obtain 0, 50, 0, 20.

EUS待ち行列のためのフロー制御
TCP/IPでは、ウィンドウサイズ選択は重要である。TCP/IPにおけるウィンドウサイズが小さ過ぎる場合、パフォーマンスが損なわれ、大き過ぎる場合、パフォーマンスを向上させることなく、システム資源が使い果たされる。
In flow control TCP / IP for EUS queues , window size selection is important. If the window size in TCP / IP is too small, the performance is impaired, and if it is too large, system resources are used up without improving performance.

本発明は、「送信側のみ(send−side only)」アルゴリズムを使用して、最良ウィンドウサイズへの速やかな収束を可能にする。   The present invention allows for rapid convergence to the best window size using a “send-side only” algorithm.

標識付けされたデータストリームの一部であるノードは、それらが最大速度で送信できるよう保証するのに十分なデータだけをバッファする。これは、送信すべきギガバイトのデータが存在するとしても、比較的一定で小さい割合だけが、与えられた時間に送信中であることを意味する。   Nodes that are part of the tagged data stream only buffer enough data to ensure that they can be transmitted at maximum speed. This means that even if there is gigabytes of data to be transmitted, only a relatively constant and small percentage is being transmitted at a given time.

しかし、(小さなメッセージ1つだけの代わりに)送信すべきギガバイトのデータが存在する場合、そのデータを転送するためにはるかに多くの経路が使用される。しかし、いかに多くの経路が使用されるにしても、送信中のデータの総量は、最終的な受信側によって最終的な送信側に与えられたバッファを超過しない。   However, if there is gigabytes of data to send (instead of just one small message), much more paths are used to transfer that data. However, no matter how many paths are used, the total amount of data being transmitted does not exceed the buffer given to the final sender by the final receiver.

どのノードに送信するかを決定するのにノードが使用する主要なメトリックは待ち時間である。送信すべき1000秒分のデータが残っている場合、宛先に対する待ち時間が1000秒より小さいすべての経路が考慮されるべきである。非常に僅かな量のデータが存在し、それを送信するための待ち時間が10msである場合、非常に少数の経路(および最速の1つ)がデータを転送するために使用される。   The primary metric that a node uses to determine which node to send to is latency. If 1000 seconds of data remain to be transmitted, all paths with a latency to the destination of less than 1000 seconds should be considered. If there is a very small amount of data and the latency to send it is 10 ms, a very small number of paths (and the fastest one) are used to transfer the data.

これは、ノードが、最速のデータ転送を保証するために必要なだけ多数のノードまたは少数のノードを補充することを可能にする。この技法は、我々が、必要とされていない待ち時間をトレードオフすることによって、必要とされるときに暗黙のうちに帯域幅を増やすことを可能にする。   This allows the node to replenish as many or as few nodes as necessary to ensure the fastest data transfer. This technique allows us to implicitly increase bandwidth when needed by trading off latency that is not needed.

送信中のデータ量は、送信ノードがその待ち行列に割り当てることができるバッファのサイズによっても制限される。送信バッファのための最良サイズは、その待ち時間が以下のようになる。
送信バッファ待ち時間=>Max(すべての選択された宛先の待ち時間)−Min(すべての選択された宛先の待ち時間)
The amount of data being transmitted is also limited by the size of the buffer that the transmitting node can allocate to its queue. The best size for the send buffer is as follows:
Send buffer latency => Max (latency of all selected destinations)-Min (latency of all selected destinations)

これは、我々が選択された宛先一覧にノードを追加し続けることができるならば、最終的な送信側の送信バッファを拡張し続けることができることを意味する。   This means that if we can continue to add nodes to the selected destination list, we can continue to expand the final sender's transmit buffer.

メッセージを送信するEUSを有するノードは、(フロー制御が働くのと同じ方法で)EUSが待ち行列を「容量余裕なし」に保つことができる点まで、この送信バッファが大きくなることを可能にすべきである。これは、すべての「選択された宛先」ができるだけ多く使用され得ることを保証する。   The node with the EUS sending the message will allow this send buffer to grow to the point that the EUS can keep the queue “free of capacity” (in the same way that flow control works). Should. This ensures that all “selected destinations” can be used as much as possible.

最終的な受信側では、受信されたメッセージは、並べ直しバッファに配置される。ノードは順序を整えてこれらのメッセージを配置することができるので、メッセージは、EUSが処理するためにメッセージを待ち行列から取り出すのに使用する待ち行列に移される。この待ち行列取り出しバッファのサイズは、(フロー制御で説明された)ノード間の待ち行列バッファと同じ方法で設定される。   At the final receiver, the received message is placed in a reorder buffer. Since the nodes can arrange these messages in order, the messages are moved to the queue that the EUS uses to remove the messages from the queue for processing. The size of this queue retrieval buffer is set in the same way as the queue buffer between nodes (described in the flow control).

EUSがメッセージを取り出すのに使用する待ち行列がその最大サイズを超過した場合、このノードは、それが「容量余裕なし」にあり、より多くの割当数を直接接続ノードに与えないことを、直接接続ノードに伝える。並べ直しバッファからの順序を整えられたメッセージは、EUSによって使用されるこの待ち行列に依然として配置されるが、このノードはこの待ち行列のための割当数を直接接続ノードにもはや与えていないので、並べ直しバッファへの着信メッセージフローは止められる。   If the queue that the EUS uses to retrieve the message exceeds its maximum size, this node directly knows that it is “no capacity” and does not give more directly to the connected node. Tell the connection node. Since the ordered message from the reorder buffer is still placed in this queue used by the EUS, this node no longer gives the directly connected node the quota for this queue, so Incoming message flow to the reorder buffer is stopped.

EUSが使用する待ち行列が完全に空になり、直接接続ノードがEUSを有するノードにより多くのメッセージを送信することを望む場合、EUSが使用する待ち行列の最大サイズが、(フロー制御が働くのと同じ方法で)拡張される。   If the queue used by the EUS is completely empty and the directly connected node wants to send more messages to the node with the EUS, the maximum size of the queue used by the EUS is Expanded).

この待ち行列のサイズは、フロー制御における待ち行列と同様に下方圧力の影響も受ける。   The size of this queue is affected by downward pressure as well as the queue in flow control.

並べ直しバッファのサイズは、EUSによって使用される待ち行列が保持できるメッセージ数(またはバイト数)には関係がない。   The size of the reordering buffer has nothing to do with the number of messages (or number of bytes) that the queue used by the EUS can hold.

受信EUSがメッセージの処理を完全に停止した場合、ネットワーク内のすべてのノードがその待ち行列に関して「容量余裕なし」に移行し、最終的な送信側は直ちに、ネットワークにメッセージを送り出すのに用いられる割当数をそれ以上与えられなくなる。   If the receiving EUS stops processing the message completely, all nodes in the network will transition to “no capacity” for that queue and the final sender will be used immediately to send the message out to the network. No more quotas can be given.

伝播優先順
より大規模なネットワークでは、制御メッセージのための帯域制限が使用される必要がある。
In networks that are larger than the propagation priority , bandwidth limitations for control messages need to be used.

我々は、いくつかのタイプの制限を使用する。「制御」帯域幅の総計は、すべてのデータのために利用可能な最大帯域幅の何パーセントかに制限されるべきである。   We use several types of restrictions. The total “control” bandwidth should be limited to a percentage of the maximum bandwidth available for all data.

制御メッセージは、2つのグループに分割される。これらのグループは、最大帯域幅の何パーセントかに基づいて個々に帯域制限される。各直接接続ノードは、これら2つのグループのそれ独自のバージョンを有する。   Control messages are divided into two groups. These groups are individually bandwidth limited based on a percentage of the maximum bandwidth. Each directly connected node has its own version of these two groups.

例えば、最小サイズを4Kとし、各グループに対して最大帯域幅の5%を指定することができる。単純な10MB/sのコネクションでは、これは、4Kの情報パケットを
=4096/(10MB/s×0.05)
=0.0819s
ごとに送信することを意味する。
For example, the minimum size can be 4K and 5% of the maximum bandwidth can be specified for each group. For a simple 10MB / s connection, this means 4K information packets = 4096 / (10MB / s x 0.05)
= 0.0819s
Means to send every.

そのため、このコネクションでは、各グループについて、制御パケットを0.0819sおきに、または毎秒約12回送信することができる。   Therefore, in this connection, a control packet can be transmitted every 0.0819 s or about 12 times per second for each group.

パーセンテージおよび送信されるブロックサイズは例であり、当業者によって各自のアプリケーション要件をより良く満たすように変更されることができる。   The percentages and transmitted block sizes are examples and can be varied by those skilled in the art to better meet their application requirements.

第1の帯域制限グループ
第1の帯域制限グループは、以下のメッセージを送信する。以下のメッセージは、制御メッセージが適合するブロックサイズに適合するように一緒に連結されるべきである。
1.後続メッセージのために必要とされる待ち行列のための名前対番号マッピング
2.標準フロー制御メッセージ
3.GUIDプローブ
4.ノードに今それが「選択された宛先」であるかどうかを通知する
5.HSPPメッセージ
6.初期待ち行列知識/HSPP待ち行列の無限大へ/無限大から
7.初期待ち行列知識/非HSPP待ち行列の無限大へ/無限大から
First Bandwidth Limit Group The first bandwidth limit group transmits the following message. The following messages should be concatenated together to fit the block size that the control message fits.
1. 1. Name-to-number mapping for queues required for subsequent messages 2. Standard flow control message 3. GUID probe 4. Tell the node if it is now a “selected destination” HSPP message 6. Initial queue knowledge / to the infinity of the HSPP queue / from infinity Initial queue knowledge / to non-HSPP queue infinity / from infinity

第2の帯域制限グループ
第2のグループは、待ち行列のための待ち時間更新を送信する。第2のグループは、待ち行列を3つのグループに分割し、これらのグループの各々を、互いに1:1:1に交互配置されるラウンドロビン方式で送信する。
Second Bandwidth Limit Group The second group sends latency updates for the queue. The second group divides the queue into three groups and transmits each of these groups in a round-robin fashion interleaved with each other 1: 1: 1.

最初の2つのグループは、「fLatencyFromStream」の値を使用して、すべての待ち行列を順序付けることによって生成される。待ち行列が複数の選択された宛先を有する場合、最低待ち時間を有する「選択された宛先」が、どの「fLatencyFromStream」値を使用するかを決定するために使用される。   The first two groups are created by ordering all the queues using the value of “fLatencyFromStream”. If the queue has multiple selected destinations, the “selected destination” with the lowest latency is used to determine which “fLatencyFromStream” value to use.

待ち行列は、単一経路実施形態において先に説明されたのと同様の方式で、昇順に並べられる。待ち行列は、制限帯域幅を使用して2分の1秒でいくつの更新が送信され得るかに基づいて、2つに分割される。これは、第1のグループは頻繁に完全に更新され、残りは依然として更新はされても、頻度は低くなることを保証する。   The queues are arranged in ascending order in a manner similar to that previously described in the single path embodiment. The queue is split in two based on how many updates can be sent in half a second using the limited bandwidth. This ensures that the first group is frequently fully updated and the rest are still updated, but less frequently.

第3のグループは、このノードがデータストリーム内にある待ち行列から構成される。   The third group consists of queues where this node is in the data stream.

各待ち時間更新は、値「fUpdateLatency」を含む。この値「fUpdateLatency」は、3つのグループ各々の待ち行列に対して別々に計算される。この値は、グループ内のすべての項目を一度に送信するのにかかる時間として計算される。この値は、最低の「fLatency」を有する選択された宛先の「fUpdateLatency」に加算される。   Each latency update includes the value “fUpdateLatency”. This value “fUpdateLatency” is calculated separately for each of the queues in each of the three groups. This value is calculated as the time it takes to send all items in the group at once. This value is added to “fUpdateLatency” of the selected destination with the lowest “fLatency”.

この値は、GUIDプローブがどれだけ遠くまで進行するかを決定するときにも使用される。   This value is also used when determining how far the GUID probe will travel.

3つのグループの各々を送信するための時間は、現在の送信速度に基づいて継続的に更新されるべきである。   The time for transmitting each of the three groups should be continuously updated based on the current transmission rate.

待ち行列は、一度にこれらのグループの1つのメンバであることしかできない。これは重要であり、さもないと、「fUpdateLatency」は計算が難しくなる。   A queue can only be one member of these groups at a time. This is important, otherwise “fUpdateLatency” is difficult to calculate.

「fLatencyFromStream」は、データストリーム内の必ずしもすべてのノードが、それらの「fLatencyFromStream」を直接接続ノードに渡すときに、別のノードからの「fLatencyFromStream」値を追加するわけではない点を除いて、「fUpdateLatency」と同様に計算される。   “FLatencyFromStream” means that not all nodes in the data stream add the “fLatencyFromStream” value from another node when passing their “fLatencyFromStream” directly to the connected node, It is calculated in the same manner as “fUpdateLatency”.

例えば、ノードAがデータストリーム内にあり、特定の待ち行列が属するグループを更新するのにかかる時間が3秒である場合、ノードAは、それがデータストリームから3秒であることをすべての直接接続ノードに伝える。代替として、ノードAは、それがデータストリームから0秒であることをすべての直接接続ノードに伝えることもできる。   For example, if node A is in the data stream and the time taken to update the group to which a particular queue belongs is 3 seconds, node A knows that it is 3 seconds from the data stream all directly Tell the connection node. Alternatively, node A can tell all directly connected nodes that it is 0 seconds from the data stream.

待ち行列が高頻度更新から低頻度更新に移行する必要がある場合、我々は、その報告された「fUpdateLatency」待ち時間数を低頻度グループに合致するように変更するが、実際にそれを低頻度グループに移行する前に、3更新サイクルの間、高頻度グループの項目を保持する。   If the queue needs to transition from a high frequency update to a low frequency update, we change its reported “fUpdateLatency” latency number to match the low frequency group, but in fact it Keep the frequent group items for 3 update cycles before moving to the group.

ノードは、新しい待ち行列を知った場合、制限更新の第2のグループにおいてそれが属する3つのグループの1つの、更新すべき待ち行列の一覧の最後にその待ち行列を配置する。   When a node learns of a new queue, it places that queue at the end of the list of queues to be updated in one of the three groups to which it belongs in the second group of restricted updates.

可能な用途
以下に示すのは、本発明が使用され得る例である。これらの例は、本発明の用途を限定する意図はない。
1.ネットワークトポロジが無制限の構造をとることを可能にする通信ネットワークで使用される。
2.移動セル電話を次の通信塔にハンドオフする必要がある現在の「セル」構造を必要としないセル電話ネットワークで使用される。
3.ホットスポットを除去し、障害ノードに対処することを助けるグリッドコンピューティング環境で使用される。
4.システム負荷管理を達成するために中央指令センタからオンまたはオフにすることができるすべての電気装置で使用可能なソフトウェアを有するユーティリティによって使用される。
5.柔軟で動的なメッセージ転送能力の欠如によって現在はアプリケーションが制限されるグリッドコンピューティング、大容量ストレージ、またはスーパーコンピューティング環境などの応用例のためのメッセージを交換するために、複数の相互接続CPUまたはコンピュータが結合されることを可能にする、コンピューティングにおいて使用される。
6.戦闘の現場にいるあらゆる兵士およびあらゆる機器が連続的に変化する地勢構造において常に通信を維持することを可能にし、除去、破壊、または追加される要素に関わりなくネットワークが継続することを可能にする軍事アプリケーションで使用される。
7.任意のグループが任意の時にそれ独自のネットワークを形成することを可能にする、より大規模なネットワークから孤立したまたはそのサブセットとしての離散ネットワークグループを形成するために使用される。
8.このソフトウェアおよび通信機能を備えた自動車がより大きな効率性もしくは安全性のためのハイウェイ対話またはハイウェイ交通管理機能を連携させることを可能にする交通管理で使用される。
9.交通の流れを管理する上でのより大きな効率性のためすべての交通信号が交通管理コンピュータおよび互いに通信することを可能にし、システムに対するどのようなソフトウェア管理も必要とせず交通信号がシステムに追加またはシステムから削除されることを可能にする交通信号の交通管理で使用される。
10.ネットワーク内のあらゆる参加者がネットワーク全体および資源の総和へのリンケージを提供することができるので、仮想的に無制限の容量およびバックアップ資源を提供する共同体または地域のための通信ユーティリティとなることができる「マスタネットワーク」として使用される。
11.人間の介入なく、またそれを行っている間に動作を縮小または停止することなく、ソフトウェアがマシンおよびアプリケーションを付け加えまたは取り去り、センタを管理および監視するコンピューティングセンタを管理するために使用される。
12.このソフトウェアが発電、送電、および消費を統合するために使用され、所定の基準に基づいて決定を下し、即座に動作することによって、通常の変化および不都合な出来事に対処することができる電気エネルギーグリッド内で使用される。
13.人間の介入なしにユーザおよびリモートサイトを動的に結合することによってリモートコンピューティングを可能にするために使用される。
14.航空機、航空交通、および地上資源を管理し、連携させることによって航空交通制御で使用される。
15.無線、地上線、衛星、コンピュータ、および機上システムなどの様々な通信技術を連携させ、ネットワーク接続するために使用される。
16.交通パターン変化、経路宛先に対する追加または削除など変化する状況に対して動的に変更され得る、様々な宛先への商品の物理配送のための有効経路を生成するために使用される。
17.特に多くの基準を含む複雑な問題に対する正確な解を見つけるために多数の連立計算を解くためのバイオコンピューティングに類似した数学的ツールとして使用される。
Possible applications The following are examples where the present invention can be used. These examples are not intended to limit the application of the present invention.
1. Used in communication networks that allow the network topology to take an unlimited structure.
2. Used in cell phone networks that do not require the current "cell" structure where mobile cell phones need to be handed off to the next communication tower.
3. Used in grid computing environments to help remove hot spots and deal with failed nodes.
4). Used by utilities with software available on all electrical devices that can be turned on or off from the central command center to achieve system load management.
5. Multiple interconnected CPUs to exchange messages for applications such as grid computing, mass storage, or supercomputing environments where applications are currently limited by the lack of flexible and dynamic message transfer capabilities Or used in computing that allows computers to be coupled.
6). Allows any soldier and any equipment at the battle site to always maintain communication in a continuously changing terrain structure, allowing the network to continue regardless of the elements removed, destroyed, or added Used in military applications.
7). Used to form a discrete network group isolated from or as a subset of a larger network that allows any group to form its own network at any time.
8). It is used in traffic management that allows vehicles with this software and communication functions to coordinate highway dialogue or highway traffic management functions for greater efficiency or safety.
9. Enables all traffic signals to communicate with the traffic management computer and each other for greater efficiency in managing traffic flow and traffic signals can be added or added to the system without requiring any software management of the system Used in traffic signal traffic management, which allows you to be deleted from the system.
10. Since every participant in the network can provide linkage to the entire network and the sum of resources, it can be a communications utility for a community or region that provides virtually unlimited capacity and backup resources. Used as “master network”.
11. Software is used to manage computing centers that add or remove machines and applications and manage and monitor the center without human intervention and without reducing or stopping operations while doing so.
12 Electrical energy that can be used to integrate power generation, transmission, and consumption, make decisions based on predetermined criteria, and act immediately to deal with normal changes and adverse events Used in the grid.
13. Used to enable remote computing by dynamically combining users and remote sites without human intervention.
14 Used in air traffic control by managing and linking aircraft, air traffic, and ground resources.
15. It is used to connect various communication technologies such as wireless, landline, satellite, computer, and onboard system to connect to the network.
16. Used to generate effective routes for physical delivery of goods to various destinations that can be dynamically changed for changing conditions such as traffic pattern changes, additions or deletions to route destinations.
17. It is used as a mathematical tool similar to biocomputing to solve a large number of simultaneous calculations, especially to find an accurate solution to a complex problem involving many criteria.

本発明の上述の実施形態は、本発明の例として意図されており、添付の特許請求の範囲によってのみ確定される本発明の範囲から逸脱することなく、当業者によって変更および修正が施され得る。   The above-described embodiments of the present invention are intended as examples of the present invention and may be changed and modified by those skilled in the art without departing from the scope of the present invention as defined only by the appended claims. .

本発明の一実施形態によるネットワークの概略図である。1 is a schematic diagram of a network according to an embodiment of the present invention. FIG. 本発明の一実施形態によるネットワーク知識を広める方法を示したフローチャートである。5 is a flowchart illustrating a method for disseminating network knowledge according to an exemplary embodiment of the present invention. 本発明の一実施形態による図2の方法の一ステップの実行を示したネットワークの概略図である。FIG. 3 is a schematic diagram of a network illustrating execution of a step of the method of FIG. 2 according to an embodiment of the present invention. 本発明の一実施形態による図2の方法の一ステップの実行を示したネットワークの概略図である。FIG. 3 is a schematic diagram of a network illustrating execution of a step of the method of FIG. 2 according to an embodiment of the present invention. 本発明の一実施形態による図2の方法の一ステップの実行を示したネットワークの概略図である。FIG. 3 is a schematic diagram of a network illustrating execution of a step of the method of FIG. 2 according to an embodiment of the present invention. 本発明の一実施形態による図2の方法の一ステップの実行を示したネットワークの概略図である。FIG. 3 is a schematic diagram of a network illustrating execution of a step of the method of FIG. 2 according to an embodiment of the present invention. 本発明の一実施形態による図2の方法の一ステップの実行を示したネットワークの概略図である。FIG. 3 is a schematic diagram of a network illustrating execution of a step of the method of FIG. 2 according to an embodiment of the present invention. 本発明の一実施形態による図2の方法の一ステップの実行を示したネットワークの概略図である。FIG. 3 is a schematic diagram of a network illustrating execution of a step of the method of FIG. 2 according to an embodiment of the present invention. 本発明の一実施形態による図2の方法の一ステップの実行を示したネットワークの概略図である。FIG. 3 is a schematic diagram of a network illustrating execution of a step of the method of FIG. 2 according to an embodiment of the present invention. 本発明の別の実施形態によるネットワークの概略図である。FIG. 3 is a schematic diagram of a network according to another embodiment of the present invention. 本発明の別の実施形態によるネットワークの概略図である。FIG. 3 is a schematic diagram of a network according to another embodiment of the present invention. 図11のネットワークの別の概略図である。FIG. 12 is another schematic diagram of the network of FIG. 11. 本発明の別の実施形態によるネットワークの概略図である。FIG. 3 is a schematic diagram of a network according to another embodiment of the present invention. 本発明の別の実施形態によるネットワークの概略図である。FIG. 3 is a schematic diagram of a network according to another embodiment of the present invention. 図14のネットワークの別の概略図である。FIG. 15 is another schematic diagram of the network of FIG. 14. 図14のネットワークの別の概略図である。FIG. 15 is another schematic diagram of the network of FIG. 14. 本発明の別の実施形態によるネットワークの概略図である。FIG. 3 is a schematic diagram of a network according to another embodiment of the present invention. 本発明の別の実施形態によるネットワーク知識を獲得する方法を示したフローチャートである。5 is a flowchart illustrating a method for acquiring network knowledge according to another embodiment of the present invention. 本発明の別の実施形態によるネットワークの概略図である。FIG. 3 is a schematic diagram of a network according to another embodiment of the present invention. 本発明の別の実施形態によるノード間でコネクションを確立するために情報を交換する方法を示したフローチャートである。6 is a flowchart illustrating a method for exchanging information to establish a connection between nodes according to another embodiment of the present invention. 本発明の別の実施形態によるノード間でコネクションを確立する方法の初期化プロセスを示したフローチャートである。5 is a flowchart illustrating an initialization process of a method for establishing a connection between nodes according to another embodiment of the present invention. 本発明の別の実施形態によるノード知識を広める方法についての累積リンクコストの加法的特性を示したネットワークの概略図である。FIG. 6 is a schematic diagram of a network showing additive characteristics of accumulated link cost for a method of disseminating node knowledge according to another embodiment of the present invention. 本発明の一実施形態によるノード知識を広める方法についてのノード知識のネットワーク内の流れを示したフローチャートである。6 is a flowchart illustrating a flow of node knowledge in a network for a method of spreading node knowledge according to an exemplary embodiment of the present invention. 本発明の一実施形態によるノード知識を広める方法についてのノード知識のネットワーク内の流れを示したフローチャートである。6 is a flowchart illustrating a flow of node knowledge in a network for a method of spreading node knowledge according to an exemplary embodiment of the present invention. 本発明の一実施形態によるノード知識を広める方法についてのノード知識のネットワーク内の流れを示したフローチャートである。6 is a flowchart illustrating a flow of node knowledge in a network for a method of spreading node knowledge according to an exemplary embodiment of the present invention. 本発明の一実施形態によるノード知識を広める方法についてのノード知識のネットワーク内の流れを示したフローチャートである。6 is a flowchart illustrating a flow of node knowledge in a network for a method of spreading node knowledge according to an exemplary embodiment of the present invention. 本発明の一実施形態による孤立コアを検出するための方法を示したネットワークの概略図である。FIG. 2 is a schematic diagram of a network illustrating a method for detecting an isolated core according to an embodiment of the present invention. 本発明の一実施形態による、エミュレートされ得るプロトコルの一例としてTCP/IPを使用するネットワークを介するルーティングのための方法を示したフローチャートである。6 is a flowchart illustrating a method for routing through a network that uses TCP / IP as an example of a protocol that may be emulated, according to an embodiment of the invention. ノードBおよびノードCに直接接続されたノードA、ノードAだけに接続されたノードC、ならびに4つのノードCに直接接続されたノードBを示したネットワークの概略図である。1 is a schematic diagram of a network showing a node A directly connected to a node B and a node C, a node C connected only to the node A, and a node B directly connected to four nodes C. FIG. 本発明の一実施形態による待ち行列上のサービス時間がどのように計算され得るかを示したフローチャートである。6 is a flowchart illustrating how service time on a queue can be calculated according to an embodiment of the present invention. 本発明の一実施形態によるノードおよび待ち行列の構成を示したネットワークの概略図である。FIG. 2 is a schematic diagram of a network showing a configuration of nodes and queues according to an embodiment of the present invention. 本発明の一実施形態によるネットワークを伝播する待ち行列についての知識を示す一連のステップを示した複数のフローチャートである。FIG. 6 is a plurality of flowcharts illustrating a series of steps illustrating knowledge about a queue propagating through a network according to an embodiment of the present invention. 本発明の一実施形態による、ネットワークのあらゆるノードがEUS生成の待ち行列のことを知ったばかりの状態を示したネットワークの概略図である。1 is a schematic diagram of a network showing a state in which every node of the network has just learned of an EUS-generated queue, according to one embodiment of the present invention. EUS生成の待ち行列を有するノードとの間の一方のコネクションが削除された図33のネットワークの概略図である。FIG. 34 is a schematic diagram of the network of FIG. 33 with one connection with a node having an EUS-generated queue removed. EUS生成の待ち行列を有するノードとのコネクションを失った直接接続ノードが待ち時間を無限大に設定した図33のネットワークの概略図である。FIG. 34 is a schematic diagram of the network of FIG. 33 in which a directly connected node that has lost connection with a node having an EUS generation queue sets the waiting time to infinity. そのノードのすべての選択された宛先が無限大になった図33のネットワークの概略図である。FIG. 34 is a schematic diagram of the network of FIG. 33 with all selected destinations of that node being infinite. 無限大に設定され得るすべてのノードが無限大に設定された図33のネットワークの概略図である。FIG. 34 is a schematic diagram of the network of FIG. 33 with all nodes that can be set to infinity set to infinity. 無限大に設定されたあらゆるノードが一定の期間停止し、その後、無限大ではないそれが見出した最低待ち時間を選択した図33のネットワークの概略図である。FIG. 34 is a schematic diagram of the network of FIG. 33 with every node set to infinity stopped for a period of time and then selected the lowest latency it found that was not infinity. 無限大だったノードが非無限大になって直ちに、それが直接接続されたノードに伝えた図33のネットワークの概略図である。It is the schematic of the network of FIG. 33 which the node which was infinite became non-infinite and immediately transmitted to the directly connected node. 図33〜図39の概略図で概要を示された着信待ち時間更新を示したフローチャートである。FIG. 40 is a flow chart showing the incoming call waiting time update as outlined in the schematic diagrams of FIGS. 無限大にある待ち時間を示したフローチャートである。It is the flowchart which showed the waiting time which is infinite. 最終的な送信側と最終的な受信側の間のノード上のデータストリームを示したネットワークの概略図である。FIG. 2 is a schematic diagram of a network showing a data stream on a node between a final sender and a final receiver. 回避されるべき潜在的ループの一例を示したネットワークの概略図である。1 is a schematic diagram of a network showing an example of a potential loop to be avoided. FIG. ある期間にわたる待ち時間中央値を別の期間にわたる待ち時間最大値と比較したチャートを示した図である。It is the figure which showed the chart which compared the waiting time median value over a certain period with the waiting time maximum value over another period. 待ち行列内のデータのバイト数を経時的に示し、また時間インターバル内の最小待ち行列レベルを示すグラフである。FIG. 6 is a graph showing the number of bytes of data in a queue over time and the minimum queue level within a time interval. 容量に余裕がないノードが、それが可能な追加の選択された宛先に送信したGUIDを見出したとき、その選択が悪い選択であったことを知る様子を示したネットワークの概略図である。FIG. 6 is a schematic diagram of a network showing how a node with insufficient capacity finds that the selection was a bad choice when it finds a GUID sent to an additional selected destination where it can. 「容量余裕なし」でないときに選択された宛先をいつ追加/削除するかを決定する方法を示したフローチャートである。10 is a flowchart illustrating a method for determining when to add / delete a selected destination when it is not “no capacity”. データストリーム内にないノードにおいて偶然生成されたループを示したネットワークの概略図である。1 is a schematic diagram of a network showing a loop that was accidentally generated at a node that is not in a data stream. FIG. ノードAがノードBに送信できるようにネゴシエートするノードAとノードBを示したネットワークの概略図である。2 is a schematic diagram of a network showing Node A and Node B that negotiate so that Node A can transmit to Node B. FIG. より多くのデータを送信したいことをノードAがどのようにして通知するかを示したネットワークの概略図である。1 is a schematic diagram of a network showing how node A notifies that it wants to send more data. FIG. 割当数が制限されている場合に2つのノードがどのようにしてメッセージの転送をネゴシエートすることができるかを示したネットワークの概略図である。FIG. 3 is a schematic diagram of a network showing how two nodes can negotiate message transfer when the number of assignments is limited. 割当数が制限されている場合に2つのノードがどのようにしてメッセージの転送をネゴシエートすることができるかを示したネットワークの概略図である。FIG. 3 is a schematic diagram of a network showing how two nodes can negotiate message transfer when the number of assignments is limited. 割当数が制限されている場合に2つのノードがどのようにしてメッセージの転送をネゴシエートすることができるかを示したネットワークの概略図である。FIG. 3 is a schematic diagram of a network showing how two nodes can negotiate message transfer when the number of assignments is limited. コアに到るための各ノードの最良ネクストステップと、このプロセスが生成した階層をより良く示すために再配置された同じネットワークを示したネットワークの概略図である。FIG. 6 is a schematic diagram of a network showing the best next step for each node to reach the core and the same network relocated to better show the hierarchy generated by this process.

Claims (40)

自己組織化ネットワークであって、
(a) 複数のノードと、
(b) 前記ノードのうちの隣接ノードを相互接続する少なくとも1つのリンクとを含み、
(c) 前記ノードの各々が、前記ノードの第1の区分内に存在する他の前記ノードの各々についての情報を保持するように動作可能であり、前記情報が、
(i) 前記第1の区分内にある別のノードを示す第1の識別情報と、
(ii) 第1の識別情報ごとに、前記第1の識別情報に対応する前記別のノードに到達するための望ましいステップである隣接ノードを表す第2の識別情報とを含み、
(d) 前記ノードの各々が、前記第1の区分内に含まれない第2の区分内にある前記ノードについての情報を求めるリクエストを送信するための望ましいステップである隣接ノードを表す第3の識別情報を保持するように動作可能な、自己組織化ネットワーク。
A self-organizing network,
(A) a plurality of nodes;
(B) at least one link interconnecting adjacent nodes of the nodes;
(C) each of the nodes is operable to maintain information about each of the other nodes present in the first partition of the node, the information comprising:
(I) first identification information indicating another node in the first partition;
(Ii) for each first identification information, second identification information representing an adjacent node, which is a desirable step for reaching the another node corresponding to the first identification information,
(D) a third representing each neighboring node which is a desirable step for sending a request for information about the node in a second partition not included in the first partition; A self-organizing network that is operable to hold identity information.
前記第3の識別情報は、前記隣接ノードのうちのどれが、前記第2の識別情報の各々に最も頻繁に出現するかに基づいて決定される請求項1に記載のネットワーク。  The network according to claim 1, wherein the third identification information is determined based on which of the adjacent nodes appears most frequently in each of the second identification information. 前記ノードの各々は、その隣接ノードと前記情報を交換するように動作可能な請求項1または2に記載のネットワーク。  The network according to claim 1 or 2, wherein each of said nodes is operable to exchange said information with its neighboring nodes. 少なくとも1つの前記リンクは、前記ノードのうちの2つの間の任意の経路が1組の累積サービス特性を有するように、1組のサービス特性を有する請求項1から3のいずれかに記載のネットワーク。  The network according to any of claims 1 to 3, wherein the at least one link has a set of service characteristics such that any path between two of the nodes has a set of cumulative service characteristics. . 前記情報は前記累積セットを含み、前記第2の識別情報に関連する前記望ましいステップは、前記経路のどれが望ましい1組の累積サービス特性を有するかに基づく請求項4に記載のネットワーク。  5. The network of claim 4, wherein the information includes the cumulative set, and the desirable step associated with the second identification information is based on which of the paths has a desirable set of cumulative service characteristics. 前記サービス特性は、帯域幅、待ち時間、およびビット誤り率のうちの少なくとも1つを含む請求項4または5に記載のネットワーク。  The network according to claim 4 or 5, wherein the service characteristics include at least one of bandwidth, latency, and bit error rate. 前記ノードは、コンピュータ、電話、センサ、携帯情報端末のうちの少なくとも1つである請求項1から6のいずれかに記載のネットワーク。  The network according to claim 1, wherein the node is at least one of a computer, a telephone, a sensor, and a portable information terminal. 少なくとも1つの前記リンクは、無線接続に基づく、請求項1から7のいずれかに記載のネットワーク。  The network according to claim 1, wherein at least one of the links is based on a wireless connection. 前記情報は、前記第1の識別情報の各々について、前記第1の識別情報に関連する前記ノードに向う標識付けされたデータストリームへの距離を表す値を含む請求項1から8のいずれかに記載のネットワーク。9. The information according to any of claims 1 to 8 , wherein the information includes, for each of the first identification information, a value representing a distance to a labeled data stream toward the node associated with the first identification information. The described network. 前記第1の識別情報に関連するノードは、前記距離に従って増大する昇順でランク付けされ、前記命令は前記ランクに従ってそれらのノードに送り届けられる請求項に記載のネットワーク。The network according to claim 9 , wherein nodes associated with the first identification information are ranked in ascending order increasing according to the distance, and the instructions are delivered to those nodes according to the rank. 互いが前記第2の区分内にある前記ノードを発見するための望ましいステップであると決定した隣接ノードの間に、ネットワークコアが形成される請求項1から9のいずれかに記載のネットワーク。The network according to any one of claims 1 to 9 , wherein a network core is formed between neighboring nodes determined to be desirable steps for discovering the nodes that are within the second partition. 前記ノードの各々は、それ自身についての情報を保持するために、前記コアとそれ自身の間にある他のノードに、命令を送り届けるように動作可能な請求項11に記載のネットワーク。The network of claim 11 , wherein each of the nodes is operable to deliver instructions to other nodes between the core and itself to maintain information about itself. 複数のリンクによって相互接続された少なくとも2000のノードを含む請求項1から12のいずれかに記載のネットワーク。Network according to any one of claims 1 to 12, comprising at least 2000 nodes interconnected by a plurality of links. 複数のリンクによって相互接続された少なくとも5000のノードを含む請求項1から12のいずれかに記載のネットワーク。Network according to any one of claims 1 to 12, comprising at least 5000 nodes interconnected by a plurality of links. 複数のリンクによって相互接続された少なくとも10000のノードを含む請求項1から12のいずれかに記載のネットワーク。Network according to any one of claims 1 to 12, comprising at least 10000 of nodes interconnected by a plurality of links. 複数のリンクによって相互接続された少なくとも100000のノードを含む請求項1から12のいずれかに記載のネットワーク。Network according to any one of claims 1 to 12, comprising at least 100,000 nodes interconnected by a plurality of links. 複数の他のノードと、前記ノードのうちの隣接ノードを相互接続する少なくとも1つのリンクとを有する自己組織化ネットワークで使用されるノードであって、
(a) 前記他のノードのすべてのうちの第1の区分内に存在する前記他のノードの各々についての情報を保持するように動作可能なコンピューティング装置を含み、前記情報は、
(i) 前記第1の区分内にある別のノードを示す第1の識別情報と、
(ii) 前記第1の識別情報ごとに、前記第1の識別情報に対応する別のノードに到達するための望ましいステップである隣接ノードを表す第2の識別情報とを含み、
(b) 前記コンピューティング装置がさらに、前記第1の区分内に含まれない第2の区分内にある前記ノードについての情報を求めるリクエストを送信するための望ましいステップである隣接ノードを表す第3の識別情報を保持するように動作可能であるノード。
A node used in a self-organizing network having a plurality of other nodes and at least one link interconnecting adjacent nodes of the nodes,
(A) including a computing device operable to maintain information about each of the other nodes present in a first partition of all of the other nodes, the information comprising:
(I) first identification information indicating another node in the first partition;
(Ii) each of the first identification information includes second identification information representing an adjacent node, which is a desirable step for reaching another node corresponding to the first identification information;
(B) a third representing an adjacent node, which is a desirable step for transmitting a request for information about the node in a second partition that is not included in the first partition; A node that is operable to hold the identity information of
複数の他のノードと、前記ノードのうちの隣接ノードを相互接続する少なくとも1つのリンクとを有する自己組織化ネットワークの一部を形成するノード上で実行される、または、そのノードのための1組のプログラム命令を保存するためのコンピュータ可読媒体であって、前記プログラム命令は、前記ノード内のコンピューティング装置に、前記他のノードのすべてのうちの第1の区分内に存在する前記他のノードの各々についての情報を保持させるためのものであり、前記情報は、
(i) 前記第1の区分内にある別のノードを示す第1の識別情報と、
(ii) 前記第1の識別情報ごとに、前記第1の識別情報に対応する前記別のノードに到達するための望ましいステップである隣接ノードを表す第2の識別情報とを含み、
前記プログラム命令がさらに、前記コンピューティング装置に、前記第1の区分内に含まれない第2の区分内にある前記ノードについての情報を求めるリクエストを送信するための望ましいステップである隣接ノードを表す第3の識別情報を保持させるためのものであるコンピュータ可読媒体。
Executed on or for a node forming part of a self-organizing network having a plurality of other nodes and at least one link interconnecting neighboring nodes of said nodes A computer readable medium for storing a set of program instructions, wherein the program instructions reside on a computing device in the node and the other present in a first partition of all of the other nodes. For holding information about each of the nodes, said information being
(I) first identification information indicating another node in the first partition;
(Ii) for each of the first identification information, including second identification information representing an adjacent node that is a desirable step for reaching the other node corresponding to the first identification information;
The program instructions further represent an adjacent node that is a desirable step for sending to the computing device a request for information about the node in a second partition that is not included in the first partition. A computer readable medium for holding third identification information.
前記第3の識別情報は、前記隣接ノードのうちのどれが、前記第2の識別情報の各々に最も頻繁に出現するかに基づいて決定される請求項18に記載のコンピュータ可読媒体。  The computer-readable medium of claim 18, wherein the third identification information is determined based on which of the adjacent nodes most frequently appears in each of the second identification information. 前記ノードの各々は、その隣接ノードと前記情報を交換するように動作可能な請求項18または19に記載のコンピュータ可読媒体。  20. The computer readable medium of claim 18 or 19, wherein each of the nodes is operable to exchange the information with its neighboring nodes. 少なくとも1つの前記リンクは、前記ノードのうちの2つの間の任意の経路が1組の累積サービス特性を有するように、1組のサービス特性を有する請求項18から20のいずれかに記載のコンピュータ可読媒体。  21. A computer according to any of claims 18 to 20, wherein at least one of the links has a set of service characteristics such that any path between two of the nodes has a set of cumulative service characteristics. A readable medium. 前記情報は前記累積セットを含み、前記第2の識別情報に関連する前記望ましいステップは、前記経路のどれが望ましい1組の累積サービス特性を有するかに基づく請求項21に記載のコンピュータ可読媒体。  The computer-readable medium of claim 21, wherein the information includes the cumulative set, and the desirable step associated with the second identification information is based on which of the paths has a desirable set of cumulative service characteristics. 前記サービス特性は、帯域幅を含む請求項21または22に記載のコンピュータ可読媒体。  23. The computer readable medium of claim 21 or 22, wherein the service characteristic includes bandwidth. 前記サービス特性は、待ち時間を含む請求項21または22に記載のコンピュータ可読媒体。  23. The computer readable medium of claim 21 or 22, wherein the service characteristic includes latency. 前記サービス特性は、ビット誤り率を含む請求項21または22に記載のコンピュータ可読媒体。  23. The computer readable medium of claim 21 or 22, wherein the service characteristic includes a bit error rate. 前記ノードは、コンピュータである請求項18から25のいずれかに記載のコンピュータ可読媒体。  26. A computer readable medium according to any of claims 18 to 25, wherein the node is a computer. 前記ノードは、電話である請求項18から25のいずれかに記載のコンピュータ可読媒体。  26. A computer readable medium according to any of claims 18 to 25, wherein the node is a telephone. 前記ノードは、センサである請求項18から25のいずれかに記載のコンピュータ可読媒体。  The computer-readable medium according to any one of claims 18 to 25, wherein the node is a sensor. 前記ノードは、携帯情報端末である請求項18から25のいずれかに記載のコンピュータ可読媒体。  The computer-readable medium according to any one of claims 18 to 25, wherein the node is a portable information terminal. 少なくとも1つの前記リンクは、無線接続に基づく、請求項18から29のいずれかに記載のコンピュータ可読媒体。  30. A computer readable medium according to any of claims 18 to 29, wherein at least one of the links is based on a wireless connection. 前記情報は、前記第1の識別情報の各々について、前記第1の識別情報に関連する前記ノードに向う標識付けされたデータストリームへの距離を表す値を含む請求項18から22のいずれかに記載のコンピュータ可読媒体。23. A method according to any of claims 18 to 22 , wherein the information includes, for each of the first identification information, a value representing a distance to a labeled data stream towards the node associated with the first identification information. The computer-readable medium described. 前記第1の識別情報に関連するノードは、前記距離に従って増大する昇順でランク付けされ、前記命令は前記ランクに従ってそれらのノードに送り届けられる請求項31に記載のコンピュータ可読媒体。32. The computer-readable medium of claim 31 , wherein nodes associated with the first identification information are ranked in ascending order increasing according to the distance, and the instructions are delivered to those nodes according to the rank. 互いが前記第2の区分内にある前記ノードを発見するための望ましいステップであると決定した隣接ノードの間に、ネットワークコアが形成される請求項18から22のいずれか、または31に記載のコンピュータ可読媒体。The network core according to any one of claims 18 to 22 , or 31 , wherein a network core is formed between adjacent nodes that are determined to be desirable steps for discovering the nodes that are within the second partition. Computer readable medium. 前記ノードの各々は、それ自身についての情報を保持するために、前記コアとそれ自身の間にある他のノードに、命令を送り届けるように動作可能な請求項33に記載のコンピュータ可読媒体。 34. The computer readable medium of claim 33 , wherein each of the nodes is operable to deliver instructions to other nodes between the core and itself to maintain information about itself. 前記自己組織化ネットワークは、複数のリンクによって相互接続された少なくとも2000のノードを含む請求項18から29のいずれかに記載のコンピュータ可読媒体。30. A computer readable medium according to any of claims 18 to 29, wherein the self-organizing network comprises at least 2000 nodes interconnected by a plurality of links. 前記自己組織化ネットワークは、複数のリンクによって相互接続された少なくとも5000のノードを含む請求項18から29のいずれかに記載のコンピュータ可読媒体。30. The computer readable medium of any of claims 18 to 29, wherein the self-organizing network includes at least 5000 nodes interconnected by a plurality of links. 前記自己組織化ネットワークは、複数のリンクによって相互接続された少なくとも10000のノードを含む請求項18から29のいずれかに記載のコンピュータ可読媒体。30. A computer readable medium according to any of claims 18 to 29, wherein the self-organizing network comprises at least 10,000 nodes interconnected by a plurality of links. 前記自己組織化ネットワークは、複数のリンクによって相互接続された少なくとも100000のノードを含む請求項18から29のいずれかに記載のコンピュータ可読媒体。30. A computer readable medium according to any of claims 18 to 29, wherein the self-organizing network comprises at least 100,000 nodes interconnected by a plurality of links. 請求項18から38のいずれかに記載のコンピュータ可読媒体に保存されたプログラム命令を用いる装置。Apparatus using program instructions stored on a computer readable medium according to any of claims 18 to 38 . ルータ、携帯電話、PDA、需給計器、乗物、飛行機、センサ、軍需品、衛星、コンピュータまたはその他のコンピュータ可読媒体に保存された命令を利用することが可能な装置のうちの1つを備える請求項39に記載の装置。7. A device comprising one of a device capable of utilizing instructions stored in a router, mobile phone, PDA, utility meter, vehicle, airplane, sensor, munitions, satellite, computer or other computer readable medium. 39. The apparatus according to 39 .
JP2006553397A 2004-02-16 2005-02-16 Network architecture Expired - Fee Related JP4611319B2 (en)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
CA002457909A CA2457909A1 (en) 2004-02-16 2004-02-16 Method and system for self-organizing reliable, multiple path data flow transmission of data on a network
US54434104P 2004-02-17 2004-02-17
CA002464274A CA2464274A1 (en) 2004-04-20 2004-04-20 System and method for a self-organizing, reliable, scalable network
CA002467063A CA2467063A1 (en) 2004-05-17 2004-05-17 System and method for a self-organizing, reliable, scalable network
CA 2471929 CA2471929A1 (en) 2004-06-22 2004-06-22 System and method for a self-organizing, reliable, scalable network
CA002476928A CA2476928A1 (en) 2004-08-16 2004-08-16 Pervasive mesh network
CA002479485A CA2479485A1 (en) 2004-09-20 2004-09-20 System and method for a self-organizing, reliable, scalable network
PCT/CA2005/000194 WO2005079001A1 (en) 2004-02-16 2005-02-16 Network architecture

Publications (3)

Publication Number Publication Date
JP2007523546A JP2007523546A (en) 2007-08-16
JP2007523546A5 JP2007523546A5 (en) 2008-06-05
JP4611319B2 true JP4611319B2 (en) 2011-01-12

Family

ID=34865560

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006553397A Expired - Fee Related JP4611319B2 (en) 2004-02-16 2005-02-16 Network architecture

Country Status (3)

Country Link
EP (1) EP1721414A4 (en)
JP (1) JP4611319B2 (en)
WO (1) WO2005079001A1 (en)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101203473B1 (en) 2005-12-30 2012-11-21 삼성전자주식회사 Method for beacon exchange between devices with asymmetric links and system thereof
CN102291797B (en) * 2011-07-04 2014-02-26 东南大学 Method for designing wireless terminal having routing function
CN103312574A (en) * 2013-06-28 2013-09-18 北京奇艺世纪科技有限公司 Interactive method and device for nodes in point-to-point network
CN103916215B (en) * 2014-03-14 2017-08-01 上海交通大学 The implementation method of real-time mobile Ad hoc networks based on token passing mechanism
US10630602B1 (en) * 2018-10-08 2020-04-21 EMC IP Holding Company LLC Resource allocation using restore credits
US11005775B2 (en) 2018-10-08 2021-05-11 EMC IP Holding Company LLC Resource allocation using distributed segment processing credits
US11201828B2 (en) 2018-10-08 2021-12-14 EMC IP Holding Company LLC Stream allocation using stream credits

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002158669A (en) * 2000-11-17 2002-05-31 Sanyo Electric Co Ltd Internet-connecting method
US7171476B2 (en) * 2001-04-20 2007-01-30 Motorola, Inc. Protocol and structure for self-organizing network
JP3797157B2 (en) * 2001-08-27 2006-07-12 日本電信電話株式会社 Wireless node path registration method, wireless node, program, and recording medium recording program
BR0206784A (en) * 2001-11-29 2004-02-10 Koninkl Philips Electronics Nv Method of Maintaining a Database, File Sharing Client, Computer Program Product, and File Sharing Network
US7117264B2 (en) * 2002-01-10 2006-10-03 International Business Machines Corporation Method and system for peer to peer communication in a network environment
EP1510083A1 (en) * 2002-06-06 2005-03-02 MOTOROLA INC., A Corporation of the state of Delaware Protocol and structure for mobile nodes in a self-organizing communication network
US6788650B2 (en) * 2002-06-06 2004-09-07 Motorola, Inc. Network architecture, addressing and routing

Also Published As

Publication number Publication date
WO2005079001A1 (en) 2005-08-25
JP2007523546A (en) 2007-08-16
EP1721414A4 (en) 2011-06-29
EP1721414A1 (en) 2006-11-15

Similar Documents

Publication Publication Date Title
US7961650B2 (en) Network architecture
Wang et al. Adaptive multipath source routing in ad hoc networks
US9154407B2 (en) Maintained message delivery during routing domain migration
Wang et al. Multipath source routing in wireless ad hoc networks
JP4025774B2 (en) Quality of service routing in mobile ad hoc networks
JP4098772B2 (en) Admission control in mobile ad hoc networks
Seligman et al. Storage routing for DTN congestion control
JP4611319B2 (en) Network architecture
JP2005524336A (en) Policy processing of traffic in mobile ad hoc networks
JP2005524318A (en) Traffic tracking in mobile ad hoc networks
JP2005524363A (en) Channel assignment in mobile ad hoc networks
Wu An extended dynamic source routing scheme in ad hoc wireless networks
Rashid et al. Message drop control buffer management policy for DTN routing protocols
Abraham et al. Routing strategies in delay tolerant networks: a survey
EP1440529B1 (en) System and method for information object routing in computer networks
US6615273B1 (en) Method for performing enhanced target identifier (TID) address resolution
Margaryan et al. Development of an Adaptive Routing Algorithm in MANET
Beniwal et al. Energy efficient routing protocols in resource constrained IoT networks
CA2558002C (en) Network architecture
Mawad et al. HIDTN: hybrid DTN and infrastructure networks for reliable and efficient data dissemination
Shu et al. Provisioning QoS guarantee by multipath routing and reservation in ad hoc networks
Mawad et al. Infrastructure-based delay tolerant network communication
Doshi et al. SAFAR: An adaptive bandwidth-efficient routing protocol for mobile ad hoc networks
Mavromoustakis et al. Performance evaluation of an on demand tunable resource allocation apparatus using constrained active network
Farooq Binary State Distance Vector Routing: A Protocol for Near-unicast Forwarding in Partitioned Networks

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080414

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100521

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100827

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100928

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101013

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131022

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees