This application is related to co-pending U.S. patent application Ser. No. 10/993,933, filed Nov. 19, 2004 entitled “HIGH INTEGRITY DATA PROPAGATION IN A BRAIDED RING”, hereby incorporated herein by reference, and referred to herein as the “'933 application”.
This application is related to co-pending U.S. patent application Ser. No. 11/537,305, filed on Sep. 29, 2006, entitled “SYSTEMS AND METHODS FOR FAULT-TOLERANT HIGH INTEGRITY DATA PROPAGATION USING A HALF-DUPLEX BRAIDED RING NETWORK”, hereby incorporated herein by reference, and referred to herein as the “'9502 Application”.
Braided-ring networks have many advantages in speed of message propagation and fault protection. A braided-ring network can be used to propagate both synchronous and asynchronous traffic. However, in a typical bi-directional half-duplex braided ring network, as in other bi-directional half-duplex networks, some type of scheduling or arbitration mechanism must be used to prevent signals or messages from different nodes colliding on links or otherwise creating interference with each other.
It is also desirable for the mechanism used to limit delay as well as prevent collisions. In other words, it is desirable for a message to be transmitted as soon as possible once it is ready to be transmitted without having to wait excess time to be transmitted. Typical mechanisms to prevent collisions do not adequately address this time delay concern. Traditionally, asynchronous traffic has used mini-slotting wherein each node waits a fixed timed period based on node priority before transmitting a message even when other nodes are not currently transmitting a message. In serialized topologies such as rings, the disadvantages of mini-slotting schemes are further amplified as the slots need to be widened to account for the serialization/repeat delay. Similarly, requiring the nodes to communicate and coordinate transmission utilizes bandwidth and time which could be used for transmission of messages.
The above-mentioned problems and other problems are resolved by the present invention and will be understood by reading and studying the following specification.
In one embodiment, a half-duplex communication network is provided. The half-duplex communication network comprises a plurality of communication links, each link being configured a priori to communicate in one direction; and a plurality of nodes, each node coupled to a first and second direct neighbor nodes and a first and second skip neighbor nodes via the plurality of communication links. Each node comprises propagation logic adapted to arbitrate conflicts between concurrent messages based on at least one of higher level policies and a comparison between a priority of each message, wherein each node is adapted to communicate a message without waiting to determine if another node is transmitting another message with a higher priority.
The present invention can be more easily understood and further advantages and uses thereof more readily apparent, when considered in view of the description of the embodiments and the following figures in which:
Like reference numbers and designations in the various drawings indicate like elements.
In the following detailed description, reference is made to the accompanying drawings that form a part hereof, and in which is shown by way of illustration specific illustrative embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention, and it is to be understood that other embodiments may be utilized and that logical, mechanical and electrical changes may be made without departing from the scope of the present invention. It should be understood that the exemplary methods illustrated may include additional or fewer steps or may be performed in the context of a larger processing scheme. Furthermore, the methods presented in the drawing figures or the specification are not to be construed as limiting the order in which the individual steps may be performed. The following detailed description is, therefore, not to be taken in a limiting sense.
Embodiments of the present invention enable more efficient resolution of media access for asynchronous traffic transmissions in a network, such as a braided-ring network. In particular, embodiments of the present invention enable nodes in a network to transmit asynchronous messages without waiting to coordinate transmission with other nodes in the network. This decreases the delay to transmit a message and hence, uses resources more efficiently.
Instructions for carrying out the various process tasks, calculations, and generation of signals and other data used in the operation of the systems and methods of the invention can be implemented in software, firmware, or other computer readable instructions. These instructions are typically stored on any appropriate computer readable medium used for storage of computer readable instructions or data structures. Such computer readable media can be any available media that can be accessed by a general purpose or special purpose computer or processor, or any programmable logic device.
Suitable computer readable media may comprise, for example, non-volatile memory devices including semiconductor memory devices such as EPROM, EEPROM, or flash memory devices; magnetic disks such as internal hard disks or removable disks (e.g., floppy disks); magneto-optical disks; CDs, DVDs, or other optical storage disks; nonvolatile ROM, RAM, and other like media. Any of the foregoing may be supplemented by, or incorporated in, specially-designed application-specific integrated circuits (ASICs). When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer, the computer properly views the connection as a computer readable medium. Thus, any such connection is properly termed a computer readable medium. Combinations of the above are also included within the scope of computer readable media.
It should be noted that variations of the term “forward” are used in various places in the description and refer to the act of sending a message or part of a message from a node wherein the message or part of the message originated at another node and was received over an input link. Variations of the term “transmit” are also used in various places in the description and refer to the act of sending a message or part of a message from a node wherein the message or part of that message originated from that node. In addition, variations of the term “communicate” refer to the act of either forwarding or transmitting a message. Also, the term “a priori” is used in various places in the description and refers to something that is known or created at design time, as opposed to execution or run time.
In order to prevent a collision of data on the ring network, an agreement between two nodes on the same link needs to exist. In this example, the direct links 104 are configured a priori to communicate (e.g. carry transmission) in a first direction 108 and the skip links 106 are configured a priori to communicate in a second direction 110. Hence two links are used for input from other nodes and two are used for output. However, in other embodiments, other configurations are used for the communication direction of direct links 104 and skip links 106. For example, in another embodiment, skip links 106 and direct links 104 are configured a priori to communicate in the same direction (e.g. first direction 108). By configuring direct links 104 and skip links 106 to communicate in one direction, messages can only travel in one direction on any given link and collision of messages on the links is avoided.
In addition to avoiding collisions on the links, nodes 102-1 . . . 102-N are adapted to arbitrate between messages being concurrently propagated in network 100. Each of nodes 102-1 . . . 102-N embeds its priority in a priority field at the beginning of each message originating from the respective nodes. When a node arbitrates between two different messages, the node compares the priority located in the priority field of each message. The message with the higher priority is transmitted or forwarded while the lower priority message is preempted or blocked. As used herein, a node transmits messages originating from itself and forwards messages originating from other nodes.
Collisions are avoided on links 104 and 106 due to the disjoint message paths. The disjoint message paths in turn allow for arbitration at nodes 102-1 . . . 102-N. Hence, embodiments of the present invention enable each of nodes 102-1 . . . 102-N to transmit a message once each node is ready to transmit without waiting to determine if a node with a higher priority is also transmitting. In addition, embodiments of the present invention enable nodes 102-1 . . . 102-N to forward a message with minimal (e.g. a couple of bit cells delay due to processing the message) to no delay unless required to arbitrate between messages. That is, if not currently forwarding a message, nodes 102-1 . . . 102-N begin sending a message immediately upon having a message to send. In addition, if not currently forwarding a message, nodes 102-1 . . . 102-N forward a message immediately upon receipt. Sending and forwarding in such circumstances is done on a bit-for-bit basis in some embodiments. Alternatively, sending and forwarding messages can be done in other incremental steps such as byte-for-byte or word-for-word. Collisions are avoided on links 104 and 106 due to configuration of link directions and each of nodes 102-1 . . . 102-N is adapted to arbitrate between messages if another message is received at the same node while currently forwarding or sending a message.
Additionally, each of nodes 202-1 . . . 202-N is enabled to begin transmission of a message whenever not currently forwarding a message without waiting to determine if a higher priority node is transmitting. In addition, in some embodiments, each of nodes 202-1 . . . 202-N may preempt a message it is currently forwarding if its message to transmit has a higher priority than the message currently being forwarded.
In this example, each message sent by nodes 202-1 . . . 202-N is pre-configured with a priority. However, it is to be understood that in other embodiments, priorities can be assigned and changed dynamically, such as through the use of tokens as known to one of skilled in the art. The assignment of a message's priority can be based on higher level policies, message type (e.g. status as real-time data, voice data, system statistics, etc.), and priority of the message's originating node. Higher level policies can include, but are not limited to, bandwidth allocations, and each node's sending frequency, etc. The assignment of the priority is performed a priori and remains static in some embodiments. Alternatively, the priority can change dynamically between different sending attempts so that messages from the same sending node may have different priorities at different times. Such dynamic assignments can be agreed upon a priori or coordinated between the nodes dynamically such that the priorities of messages are different if intended for different nodes to ensure correct arbitration.
As can be seen in
Since node 202-3 receives the message from node 202-1 over direct link 204-1 and the message from node 202-2 over skip link 206-2, node 202-3 must arbitrate between the two messages. In one embodiment, Node 202-3 stores received segments of each message until it has received the priority field for each message. For example, node 202-3 stores the header of each message and a number of data bits from each message. Once it has received the priority fields, node 202-3 compares the priority of each message. Alternatively, node 202-3 can begin forwarding one of the two messages arbitrarily until the priority field of each of the two messages is received. In such embodiments, node 202-3 stores received segments of the message not being forwarded, such as the header and data bits of the non-forwarded message. The number of data bits stored is proportional to the amount of time needed to receive the priority fields and pre-empt the message being forwarded. Once the priority fields are received, node 202-3 compares the priority of each message and pre-empts the message being forwarded if it has a lower priority than the other message. If the message being forwarded is pre-empted, node 202-3 forwards the other message beginning with the stored header and data bits.
Since node 202-1 has a higher priority, node 202-3 blocks propagation of the message from node 202-2 and begins forwarding the message from node 202-1 as shown in
In
When a message is pre-empted, notification of the pre-emption is provided in some embodiments. For example, the pre-emption can be signaled on the line encoding layer. In other words, it is announced that the message has been pre-empted and the next message is sent with its priority embedded in the priority field. In addition, in some embodiments, a node which pre-empts a message is configured to resend the pre-empted message from the point at which is was pre-empted once the node is no longer forwarding or sending a higher priority message. Alternatively, an originating node of a pre-empted message can be notified of the pre-emption and begin re-transmitting the pre-empted message when appropriate.
Node 202-N receives the forwarded message from node 202-3 and the forwarded message from node 202-4 and arbitrates between the two messages. As with node 202-3, node 202-N compares the priorities and begins forwarding the message forwarded from node 202-3 while blocking propagation of the message from node 202-4 since node 202-1 has a higher priority than node 202-2.
Node 202-7 receives a forwarded message from both nodes 202-5 and 202-3 over direct link 204-5 and skip link 206-3, respectively. After waiting to receive the priority field of each message, node 202-7 selects either message since the forwarded messages both originated at node 202-1 with the same priority. In this example, node 202-7 selects the message that arrived first in time. If the two messages arrived at the same time, node 202-7 selects a default input link which is direct link 204-5 in this example. Alternatively, node 202-7 can begin forwarding one of the two messages arbitrarily. Once the priority field of each message is received, node 202-7 can compare the priorities of each message and pre-empt the message being forwarded if it has a lower priority than the other. Since both messages originated at node 202-1 node 202-7 then continues forwarding the same message.
Since node 202-6 only receives a forwarded message over direct link 204-4, node 202-6 begins forwarding the message in
In
Node 202-1 receives the forwarded messages from node 202-7 and 202-N over direct link 204-7 and skip link 206-N, respectively. Since node 202-1 is the originating node, it blocks further forwarding of the message and continues to transmit the original message. As seen in
As discussed above, the priority of each message is embedded in the priority field by its originating node. If the node is currently forwarding or transmitting a message, the node will store received segments of the second message until the priority field is received. At 308, once the priority field is received, the node will compare the priority of the new message with the priority of the message currently being forwarded or transmitted. Each node may assign a priority based on higher level policies, message type (e.g. real-time data, voice data, system statistics, etc.), and priority of the message's originating node. Such higher level policies can include, but are not limited to, bandwidth allocations, and each node's sending frequency, etc.
If the node determines at 308 that the priority of the second message is not higher than the priority of the message currently being forwarded or transmitted, the node determines at 310 if the maximum message length of the message currently being forwarded or transmitted has been exceeded. The node determines if the maximum message length has been exceeded by tracking how many bits of the message have been transmitted. Once the maximum number of bits has been transmitted, the message has exceeded the maximum message length. This check prevents a long message from utilizing the output links for too much time despite having a higher priority. In some embodiments, the maximum message length can be the same for all nodes. Alternatively, the maximum message length can be based on message priority. The check at 310 is optional and not used in some embodiments. If the maximum message length has not been exceeded or the check at 310 is not used, the node continues to forward or transmit the current message and blocks transmission of the new message at 312. Method 300 then returns to 302 when another new message is obtained. If the maximum message length has been exceeded at 310, the node preempts the current message and begins forwarding the new message at 314. Method 300 then returns to 302 when another new message is obtained.
In this example, if it is determined at 308 that the priority of the new message is higher than the priority of the message currently being transmitted or forwarded, the node determines at 316 if the arbitration window for preempting the current message has expired. The arbitration window is a fixed period of time after the start of transmission of a message during which the message can be preempted by a higher priority message. The arbitration window is used in some embodiments for efficiency reasons. For example, if a message has been transmitting for a certain amount of time, it may be a more efficient use of resources to finish the transmission than to preempt it and request that it be resent at a later time. However, in some embodiments, the arbitration window check at 316 is not used. If the arbitration window is not used or has not expired, the node preempts the current message and begins forwarding the new message at 314. In some embodiments, when a message is preempted, the originating node is notified that the message was preempted and should retransmit the message later. For example, in some such embodiments, the originating node is notified of the preemption when it preempts the message itself after receiving a message with a higher priority. However, it is to be understood that other mechanisms can be employed to notify the originating node to retransmit the preempted message.
In this example, if the arbitration window has expired, the node determines at 310 if the maximum message length of the message currently being forwarded or transmitted has been exceeded. As described above, this maximum length check prevents a long message from utilizing the output links for too much time even though the arbitration window has expired. In addition, in some embodiments a maximum length check is used even if an arbitration window is not used. In such embodiments, the check is used to enforce system limits on the maximum message length. In other embodiments, the check at 310 is not used at all. If the node determines that the maximum message length has not been exceeded, the node continues to transmit or forward the current message and blocks propagation of the new message at 312. If the maximum message length of the current message has been exceeded, the node preempts the current message and begins forwarding the new message at 314. The node then returns to 302 when another new message is obtained.
Interface 412, in this example, includes four transceivers 414, one transceiver 414 for each direct link 404 and each skip link 406. By using transceivers 414, embodiments of the present invention enable different configurations of link direction for direct links 404 and skip links 406. For example, direct links 404 and skip links 406 can be configured to communicate in the same or opposite directions. In addition, the direction of direct links 404 and skip links 406 can be changed. That is, all direct links 404 and skip links 406 in a network, such as network 100, will carry transmissions in one direction. However, the direction for all the direct links 404 or skip links 406 can be adjusted. The adjustment can be done either manually or automatically.
Coupled to transceivers 414 and interface 412 is propagation logic 416. Propagation logic 416 controls transmission and forwarding of messages. In particular, propagation logic 416 performs the method described above in
Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that any arrangement, which is calculated to achieve the same purpose, may be substituted for the specific embodiment shown. This application is intended to cover any adaptations or variations of the present invention. Therefore, it is manifestly intended that this invention be limited only by the claims and the equivalents thereof.
Number | Name | Date | Kind |
---|---|---|---|
4417334 | Gunderson et al. | Nov 1983 | A |
4428046 | Chari et al. | Jan 1984 | A |
4630254 | Tseng | Dec 1986 | A |
4631718 | Miyao | Dec 1986 | A |
4726018 | Bux et al. | Feb 1988 | A |
4733391 | Godbold et al. | Mar 1988 | A |
4740958 | Duxbury et al. | Apr 1988 | A |
4856023 | Singh | Aug 1989 | A |
4866606 | Kopetz | Sep 1989 | A |
4905230 | Madge et al. | Feb 1990 | A |
5132962 | Hobgood et al. | Jul 1992 | A |
5161153 | Westmore | Nov 1992 | A |
5235595 | O'Dowd | Aug 1993 | A |
5257266 | Maki | Oct 1993 | A |
5307409 | Driscoll | Apr 1994 | A |
5341232 | Popp | Aug 1994 | A |
5383191 | Hobgood et al. | Jan 1995 | A |
5386424 | Driscoll et al. | Jan 1995 | A |
5394401 | Patrick et al. | Feb 1995 | A |
5463634 | Smith et al. | Oct 1995 | A |
5557778 | Vaillancourt | Sep 1996 | A |
5687356 | Basso et al. | Nov 1997 | A |
5715391 | Jackson et al. | Feb 1998 | A |
5742646 | Woolley et al. | Apr 1998 | A |
5896508 | Lee | Apr 1999 | A |
5903565 | Neuhaus et al. | May 1999 | A |
5920267 | Tattersall et al. | Jul 1999 | A |
5937414 | Souder et al. | Aug 1999 | A |
5940367 | Antonov | Aug 1999 | A |
6052753 | Doerenberg et al. | Apr 2000 | A |
6172984 | Beyda et al. | Jan 2001 | B1 |
6175553 | Luk et al. | Jan 2001 | B1 |
6219528 | Wright et al. | Apr 2001 | B1 |
6226676 | Crump et al. | May 2001 | B1 |
6374078 | Williams et al. | Apr 2002 | B1 |
6414953 | Lamarche et al. | Jul 2002 | B1 |
6513092 | Gorshe | Jan 2003 | B1 |
6594802 | Ricchetti et al. | Jul 2003 | B1 |
6618359 | Chen et al. | Sep 2003 | B1 |
6707913 | Harrison et al. | Mar 2004 | B1 |
6741559 | Smeulders et al. | May 2004 | B1 |
6760768 | Holden et al. | Jul 2004 | B2 |
6765924 | Wu et al. | Jul 2004 | B1 |
6842617 | Williams et al. | Jan 2005 | B2 |
6925497 | Vetrivelkumaran et al. | Aug 2005 | B1 |
6956461 | Yoon et al. | Oct 2005 | B2 |
7035539 | Gumaste | Apr 2006 | B2 |
7050395 | Chow et al. | May 2006 | B1 |
7085560 | Petermann | Aug 2006 | B2 |
7088921 | Wood | Aug 2006 | B1 |
7269177 | Baker | Sep 2007 | B2 |
7349414 | Sandstrom | Mar 2008 | B2 |
7372859 | Hall et al. | May 2008 | B2 |
7457303 | Blumrich et al. | Nov 2008 | B2 |
7502334 | Hall et al. | Mar 2009 | B2 |
20020027877 | Son et al. | Mar 2002 | A1 |
20020087763 | Wendorff | Jul 2002 | A1 |
20020118636 | Phelps et al. | Aug 2002 | A1 |
20030002435 | Miller | Jan 2003 | A1 |
20030067867 | Weis | Apr 2003 | A1 |
20030128984 | Oberg et al. | Jul 2003 | A1 |
20040073698 | Harter et al. | Apr 2004 | A1 |
20040223515 | Rygielski et al. | Nov 2004 | A1 |
20040258097 | Arnold et al. | Dec 2004 | A1 |
20050002332 | Oh | Jan 2005 | A1 |
20050132105 | Hall et al. | Jun 2005 | A1 |
20050135277 | Hall et al. | Jun 2005 | A1 |
20050135278 | Hall et al. | Jun 2005 | A1 |
20050152377 | Hall et al. | Jul 2005 | A1 |
20050169296 | Katar et al. | Aug 2005 | A1 |
20050198280 | Hall et al. | Sep 2005 | A1 |
20060077981 | Rogers | Apr 2006 | A1 |
20060203851 | Eidson | Sep 2006 | A1 |
20080080551 | Driscoll et al. | Apr 2008 | A1 |
20080144526 | Hall et al. | Jun 2008 | A1 |
20080144668 | Hall et al. | Jun 2008 | A1 |
20090072268 | Hatori et al. | Mar 2009 | A1 |
20090086653 | Driscoll et al. | Apr 2009 | A1 |
Number | Date | Country |
---|---|---|
407582 | Apr 2001 | AT |
3238692 | Apr 1984 | DE |
19633744 | Feb 1998 | DE |
20220280 | Nov 2003 | DE |
0405706 | Feb 1990 | EP |
1280024 | Jan 2003 | EP |
1280312 | Jan 2003 | EP |
1365543 | Nov 2003 | EP |
1398710 | Mar 2004 | EP |
1469627 | Oct 2004 | EP |
2028062 | Aug 1979 | GB |
2028062 | Feb 1980 | GB |
1581803 | Dec 1980 | GB |
2175775 | Dec 1986 | GB |
0064122 | Oct 2000 | WO |
Number | Date | Country | |
---|---|---|---|
20080107050 A1 | May 2008 | US |