Scheduled network management

A method and apparatus for managing a network. Signals are received from a plurality of time sources. A signal having a desired level of accuracy is selected from the signals. A reference time in the network is established using the signal. Data to be transmitted through the network is encrypted to form encrypted data. The encrypted data includes a number of encrypted headers and an encrypted body. A next node in the network is identified based on a destination for the encrypted data. A request is generated to reserve a number of time intervals for transmitting the encrypted data to the next node through the network. The encrypted data is transmitted in the network during the number of time intervals responsive to receiving an approval for the request from the next node.

BACKGROUND INFORMATION

The present disclosure relates generally to managing networks and, in particular, to managing nodes in a network. Still more particularly, the disclosure relates to a method and apparatus for managing a network, managing an inconsistency in a network, and configuring a node.

Computer networks are frequently used to transmit and receive data between computers. A computer network is a collection of communication channels that allows a computer to transmit data to another computer. For example, an Ethernet network or a TCP/IP network are examples of computer networks. A network may include a wired network, a wireless network, an optical network, or another suitable type of connectivity.

Data is commonly transmitted from a first computer to a second computer through the network when the second computer is not directly connected to the first computer. In other words, the first and second computers do not share a common communication link. For example, a computer connected to a network in New York City is unlikely to be directly connected to a computer in Los Angeles.

Instead, the first computer communicates with a third computer that is directly connected to the first computer. The first computer sends the data to the third computer with an indication of the destination for the data. The indication may consist of an address in a header for the data. The third computer receives the data and identifies the destination of the data contained in the headers. The third computer then determines which computer is directly connected to the third computer and is the next computer to receive data intended for the destination of the data. The third computer then transmits the data to the next computer. The process may be repeated by a number of computers until the data is received by the second computer.

While this illustrative example is described with respect to computers, the data may be transmitted instead by nodes. A node is a device in the network that transmits and receives data. One example of a node is a router. A node may also comprise a computer or a switch.

Nodes in the network process data that is received and transmit the data to other nodes based on the destination described by a header in the data. However, when the amount of data being transmitted through the network increases beyond the processing speed of one or more nodes, the data may be delayed in reaching the destination for the data. For example, the data may take several multiples of time longer to reach the destination for the data when the amount of data being transmitted through the network is beyond the processing speed of one or more nodes. The delay is referred to as network congestion.

When the network is experiencing network congestion, data may be delayed or lost while being transmitted in the network. In such illustrative examples, retransmitting the data may still not cause the data to arrive at the destination, since the network is still experiencing network congestion.

Therefore, it would be advantageous to have a method and apparatus that takes into account at least some of the issues discussed above, as well as possibly other issues.

SUMMARY

In one advantageous embodiment, an apparatus includes a time management system, a cryptography system, a network reservation system, and a network interface. The time management system is configured to receive signals from a plurality of time sources, select a signal having a desired level of accuracy from the signals, and set a reference time in a network associated with the time management system using the signal. The cryptography system is configured to encrypt data to be transmitted through the network to form encrypted data. The encrypted data includes a number of encrypted headers and an encrypted body. The network reservation system is configured to identify a next node in the network based on a destination for the encrypted data and generate a request to reserve a number of time intervals for transmitting the encrypted data to the next node through the network. A time interval is a time between transmission of the encrypted data by the network using the reference time. The network interface is configured to transmit the encrypted data in the network during the number of time intervals responsive to receiving an approval for the request from the next node.

In another advantageous embodiment, a method is provided for managing a network. Signals are received from a plurality of time sources. A signal having a desired level of accuracy is selected from the signals. A reference time in the network is set using the signal. Data is encrypted to be transmitted through a network to form encrypted data. The encrypted data comprises a number of encrypted headers and an encrypted body. A next node in the network is identified based on a destination for the encrypted data. A request is generated to reserve a number of time intervals for transmitting the encrypted data to the next node through the network. A time interval is a time between transmission of the encrypted data in the network using the reference time. The encrypted data is transmitted in the network during the number of time intervals in response to receiving an approval for the request from the next node.

In yet another advantageous embodiment, an apparatus includes a time management system, a network reservation system, a network interface, and an inconsistency management system. The time management system is configured to set a reference time for a source node in a network associated with the time management system using a signal. The network reservation system is configured to identify a plurality of next nodes associated with the source node based on a destination for data to be transmitted by the source node through the network and generate a request to reserve a first number of time intervals with each of the plurality of next nodes for transmitting the data and a second number of time intervals with each of the plurality of next nodes for receiving response data. A time interval is a time between transmission of the data by the source node in the network using the reference time. The network interface is configured to transmit the data during the first number of time intervals to a first next node in the plurality of next nodes responsive to receiving an approval for the request from the first next node. The inconsistency management system is configured to identify an inconsistency in the network through the first next node in the plurality of next nodes, cause the network interface to cease transmitting the data to the first next node in the plurality of next nodes, and further cause the network interface to transmit the data to a second next node in the plurality of next nodes during the first number of time intervals responsive to identifying the inconsistency.

In still yet another advantageous embodiment, a method for managing an inconsistency in a network are provided. A reference time for a source node in a network is set using a signal. A plurality of next nodes associated with the source node is identified based on a destination for data to be transmitted by the source node through the network. A request to reserve a first number of time intervals is generated with each of the plurality of next nodes for transmitting the data and a second number of time intervals with each of the plurality of next nodes for receiving response data. A time interval is a time between transmission of the data by the source node in the network using the reference time. Data is transmitted during the first number of time intervals to a first next node in the plurality of next nodes responsive to receiving an approval for the request from the first next node. Transmitting the data to the first next node is ceased and the data is transmitted to a second next node in the plurality of next nodes during the first number of time intervals in response to identifying an inconsistency in the network through the first next node in the plurality of next nodes.

In one advantageous embodiment, an apparatus includes a time management system, a node configuration system, a network reservation system, and a network interface. The time management system is configured to set a reference time for a first node in a network associated with the time management system using a signal. The node configuration system is configured to identify, using configuration data, a plurality of nodes associated with the first node, a first number of time intervals with each of the plurality of nodes for receiving a request, and a second number of time intervals with the each of the plurality of nodes for transmitting the request. A time interval is a time between transmission of the request by the first node in the network using the reference time. The network reservation system is configured to receive, during the first number of time intervals, the request from a second node in the plurality of nodes to transmit data to the first node during a third number of time intervals, determine whether the third number of time intervals is available for the first node, and send an approval to the second node during the second number of time intervals in response to a determination that the third number of time intervals is available for the first node. The network interface is configured to receive the data during the third number of time intervals.

In another advantageous embodiment, a method for configuring a node is provided. A reference time for a first node is set in a network using a signal. A plurality of nodes associated with the first node, a first number of time intervals with each of the plurality of nodes for receiving a request, and a second number of time intervals with the each of the plurality of nodes for transmitting the request are identified using configuration data. A time interval is a time between transmission of the request by the first node in the network using the reference time. The request from a second node in the plurality of nodes is received during the first number of time intervals to transmit data to the first node during a third number of time intervals. A determination is made as to whether the third number of time intervals is available for the first node. An approval is sent to the second node during the second number of time intervals in response to a determination that the third number of time intervals is available for the first node. The data is received during the third number of time intervals.

DETAILED DESCRIPTION

Referring more particularly to the drawings, and specifically toFIG. 1, an illustration of a taxonomy of a network is depicted in accordance with an advantageous embodiment. Network environment100is an example of an environment in which advantageous embodiments may be implemented.

Network environment100contains network102. Network102is a collection of communication channels105that allow a node to transmit data103to other nodes and receive data103from other nodes connected to the network. In this advantageous embodiment, communication channels105include links107. Links107are connections between plurality of nodes104in network102. For example, links107may include 100Base-T Ethernet and/or 802.11n connections. For example, without limitation, nodes may include computers, switches, and routers, and network102may be an Ethernet and/or transmission control protocol/Internet Protocol (TCP/IP) network. Of course, network102may be a wired, wireless, optical, free-space, or other suitable type of network. In these illustrative examples, an optical network is a network that includes physical connections in which data is transmitted using light. A free-space network is a network that includes devices that transmit data through free space. In other words, a free-space network does not use physical connections to transmit data.

Network102contains plurality of nodes104. Each node in plurality of nodes104is a device connected to network102. A device is connected to network102by being connected to at least one other node in network102. In these illustrative examples, each of plurality of nodes104receives plurality of time signals106containing time information. Plurality of time signals106is a number of signals obtained from a number of time sources that includes information about the reference time. In some advantageous embodiments, the number of signals is received from the number of time sources.

In these illustrative examples, the reference time received may include an absolute time, a current time, a relative time, a synchronized time, or another suitable type of time. An absolute time is the time in the physical world. For example, 5:03:24.123 PM on Feb. 1, 2011 AD is an absolute time. Of course, the level of precision in the absolute time may vary in the different advantageous embodiments. A current time may be the local time, which may be agreed upon between nodes. A relative time is a time established with respect to a common reference time.

For example, if two nodes establish a reference time common to both nodes, and each node then counts 100 microseconds, each node has established a relative time of 100 microseconds relative to the common reference time. A synchronized time is a time at which plurality of nodes104agrees upon a common reference time. Each node may begin incrementing units of time once the common reference time is established. For example, plurality of nodes104may begin counting the number of hundredths of a second that have elapsed since the moment plurality of time signals106is established. Of course, the precision of the synchronized time may differ in the different advantageous embodiments.

In these illustrative examples, plurality of nodes104generates reserved paths108in network102. Reserved paths108are routes through network102that include one or more of plurality of nodes104. Each reserved path has source node110and destination node112. Reserved paths108may also include other nodes between source node110and destination node112. Source node110is the node that first transmits data103through network102. Destination node112is the node for which data103is intended and/or addressed.

Reserved paths108are generated using requests sent by one node in network102to one or more other nodes in network102. A reserved path in reserved paths108represents a collection of nodes and one or more time intervals in which data103may be sent through the network. More specifically, each node along the reserved path may use a request to identify time intervals during which data103is to be sent from one node to another node. The time intervals may differ between pairs of nodes. In other words, the time interval for transmitting data103from source node110to a first node may differ from the time intervals during which the first node may transmit data103to destination node112.

Once reserved paths108are formed, source node110may encrypt data103prior to sending data103through network102. In these illustrative examples, source node110may use full encryption114. Full encryption114is encryption of the entirety of data103. Full encryption114includes encryption of all the headers of data103. In this advantageous embodiment, the headers for data103include source information; destination information; flags; error checking information, such as Cyclical Redundancy Checks (CRC); or other suitable information in headers. In other words, none of data103remains unencrypted in these examples. Thus, data103is received and transmitted by each node along the reserved path until destination node112receives the encrypted data. With the exception of destination node112, the nodes along the reserved path do not decrypt the destination information or the data, since each node receives the encrypted data during one reserved time interval and sends the data during another reserved time interval.

In other advantageous embodiments, an inconsistency may develop in network102. For example, a node that is along a reserved path in reserved paths108from source node110to destination node112may develop an inconsistency such that the node may be unable to transmit or receive data. In such advantageous embodiments, when a request for the number of time intervals is sent to a second node by source node110, source node110may also send a request for another number of time intervals to another node in plurality of nodes104. The other node may transmit data to destination node112. In other words, additional reserved paths108, known as backup paths116, may be generated to be used in the event an inconsistency develops in the reserved path being used to transmit data103.

In yet other advantageous embodiments, plurality of nodes104may include pre-reserved paths118. In such advantageous embodiments, each node may be configured to use a number of time intervals in sending and receiving data103with particular nodes in plurality of nodes104. The addresses of the particular nodes and the number of time intervals may be contained in a data source connected to the node. Alternatively, the number of time intervals and addresses may be configured by a user input. In yet other advantageous embodiments, the number of time intervals and addresses are received in messages transmitted to nodes being joined to network102by nodes already in network102.

Turning now toFIG. 2, an illustration of a data processing system is depicted in accordance with an advantageous embodiment. Data processing system200is an example of a data processing system that may be used to implement a node in plurality of nodes104inFIG. 1. Of course, plurality of nodes104may have fewer or additional components, as depicted in data processing system200.

In some advantageous embodiments, encryption and decryption of data is performed by processor unit204. However, in some advantageous embodiments, encryption and/or decryption of data is performed by encryption/decryption module205. Encryption/decryption module205is a device connected to communications fabric202that encrypts and/or decrypts data. Encryption/decryption module205may take the form of an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA), an additional processor unit, or another suitable device.

Memory206and persistent storage208are examples of storage devices216. A storage device is any piece of hardware that is capable of storing information, such as, for example, without limitation, data, program code in functional form, and/or other suitable information either on a temporary basis and/or a permanent basis. Storage devices216may also be referred to as computer readable storage devices in these examples. Memory206, in these examples, may be, for example, a random access memory or any other suitable volatile or non-volatile storage device. Persistent storage208may take various forms, depending on the particular implementation.

For example, persistent storage208may contain one or more components or devices. For example, persistent storage208may be a hard drive, a flash memory, a rewritable optical disk, a rewritable magnetic tape, or some combination of the above. The media used by persistent storage208may also be removable. For example, a removable hard drive may be used for persistent storage208.

Input/output unit212allows for input and output of data with other devices that may be connected to data processing system200. For example, input/output unit212may provide a connection for user input through a keyboard, a mouse, and/or some other suitable input device. Further, input/output unit212may send output to a printer. Display214provides a mechanism to display information to a user.

These instructions are referred to as program code, computer usable program code, or computer readable program code that may be read and executed by a processor in processor unit204. The program code in the different advantageous embodiments may be embodied on different physical or computer readable storage media, such as memory206or persistent storage208.

Program code218is located in a functional form on computer readable media220that is selectively removable and may be loaded onto or transferred to data processing system200for execution by processor unit204. Program code218and computer readable media220form computer program product222in these examples. In one example, computer readable media220may be computer readable storage media224or computer readable signal media226. Computer readable storage media224may include, for example, an optical or magnetic disk that is inserted or placed into a drive or other device that is part of persistent storage208for transfer onto a storage device, such as a hard drive, that is part of persistent storage208.

Computer readable storage media224may also take the form of a persistent storage, such as a hard drive, a thumb drive, or a flash memory, that is connected to data processing system200. In some instances, computer readable storage media224may not be removable from data processing system200. In these examples, computer readable storage media224is a physical or tangible storage device used to store program code218, rather than a medium that propagates or transmits program code218. Computer readable storage media224is also referred to as a computer readable tangible storage device or a computer readable physical storage device. In other words, computer readable storage media224is a media that can be touched by a person.

Alternatively, program code218may be transferred to data processing system200using computer readable signal media226. Computer readable signal media226may be, for example, a propagated data signal containing program code218. For example, computer readable signal media226may be an electromagnetic signal, an optical signal, and/or any other suitable type of signal.

The different components illustrated for data processing system200are not meant to provide architectural limitations to the manner in which different embodiments may be implemented. The different advantageous embodiments may be implemented in a data processing system, including components in addition to or in place of those illustrated for data processing system200. Other components shown inFIG. 2can be varied from the illustrative examples shown.

The different advantageous embodiments may be implemented using any hardware device or system capable of running program code. As one example, the data processing system may include organic components integrated with inorganic components, and/or may be comprised entirely of organic components excluding a human being. For example, a storage device may be comprised of an organic semiconductor.

In still another illustrative example, processor unit204may be implemented using a combination of processors found in computers and hardware units. Processor unit204may have a number of hardware units and a number of processors that are configured to run program code218. With this depicted example, some of the processes may be implemented in the number of hardware units, while other processes may be implemented in the number of processors.

Additionally, a communications unit may include a number of devices that transmit data, receive data, or transmit and receive data. A communications unit may be, for example, a modem or a network adapter, two network adapters, or some combination thereof. Further, a memory may be, for example, memory206, or a cache, such as found in an interface and memory controller hub that may be present in communications fabric202.

The different advantageous embodiments recognize and take into account several different considerations. For example, the different advantageous embodiments recognize that networks may carry more traffic than the nodes in the network can process within a desired amount of time. In some advantageous embodiments, the traffic in the network is due to use of the network by a large number of computers. In other advantageous embodiments, the traffic in the network is due to one or more users attempting to prevent data from arriving at the destination for the data through the network. Of course, other reasons for the amount of traffic may be present in other advantageous embodiments.

The different advantageous embodiments also recognize and take into account that some data is considered to be a higher priority than other data in the network. For example, data for coordinating government services may be considered higher priority than delivering commercial advertisements.

Additionally, the different advantageous embodiments recognize and take into account that nodes in the network may obtain a signal that is used to identify a reference time. The reference time obtained may include an absolute time, a current time, a relative time, or synchronized time. For example, the signal may be a satellite signal, a satellite time signal, a signal transmitted from a vehicle, a wired or wireless network transmitter, or a signal received from a next node. Once the reference time for each node is set to the absolute time, current time, relative time, or synchronous time, the nodes may reserve time intervals with one another for transmitting data.

Thus, the different advantageous embodiments recognize and take into account that a first node from which data is to be transmitted may reserve a time interval with a second node directly connected to the first node during which the data may be transmitted. The first node may send a request to the second node to reserve a particular group of time intervals. The second node determines whether the particular group of time intervals is available for the second node to receive data. The second node may be unavailable to receive the data during the number of time intervals when the second node has already established another reservation for the number of time intervals.

The different advantageous embodiments recognize and take into account that the request may also contain a destination for the data desired by the first node. Prior to determining whether the number of time intervals is available at the second node, the second node may identify a third node in the network to which the data is to be transmitted for the particular destination. The second node generates a second request and transmits the second request to the third node to request a second number of time intervals. The third node repeats the process. In other words, the third node determines whether the third node is the destination for the data. When the third node is the destination for the data, the third node determines whether the number of time intervals is available and responds to the requesting node.

The different advantageous embodiments also recognize and take into account that it may be desirable to prevent an unauthorized party from identifying the destination for data traveling through the network.

When a node routes encrypted data through the network, it must either use headers that are not encrypted or headers that are encrypted. One consideration with using headers that are not encrypted with data payloads that are encrypted is that an unauthorized party might receive data being transmitted on the network and determine the types of traffic, the source, and/or destination of the traffic. The unauthorized party may also be able to determine intelligence from the patterns of traffic. However, the different advantageous embodiments also recognize and take into account that encrypting headers such that the headers are decrypted at each node to determine the source and destination of the data cause the data to be transmitted more slowly than data with unencrypted headers. Additionally, distributing encryption keys to the nodes may be costly, due to additional labor in distributing and updating the encryption keys.

In such advantageous embodiments, a number of time intervals may be reserved with a number of nodes to form a path from the source node to the destination node in the network. Once the path is formed, the source node may encrypt the data, including the headers containing destination information, such that the data is received and transmitted by each node along the path until the destination node receives the encrypted data. With the exception of the destination node, the nodes along the path do not decrypt the destination information, since the node receives the encrypted data during one reserved time interval and sends the data during another reserved time interval.

The different advantageous embodiments also recognize and take into account that an inconsistency may develop in the network. For example, a node that is along the path from the source node to the destination node may develop an inconsistency such that the node may be unable to transmit or receive data. In such advantageous embodiments, when the request for the number of time intervals is sent to a second node by a first node, the first node may also send a request for another number of time intervals to a third node. The third node is another node in the network that may transmit data to the destination node. In other words, additional paths may be formed to be used in the event an inconsistency develops in the path being used to transmit the data.

The different advantageous embodiments also recognize and take into account that the network may already be congested when a number of nodes are joined to the network. In such advantageous embodiments, each node may be configured to use a number of time intervals in sending and receiving data with particular nodes. The addresses of the particular nodes and the number of time intervals may be contained in a data source connected to the node. Alternatively, the number of time intervals and addresses may be configured by a user input. In yet other advantageous embodiments, the number of time intervals and addresses are received in messages transmitted to the nodes being joined to the network by nodes already in the network.

Thus, the different advantageous embodiments provide an apparatus and a method for managing a network. Signals are received from a plurality of time sources. A signal having a desired level of accuracy is selected from the signals. A reference time in the network is set using the signal. Data is encrypted to be transmitted through a network to form encrypted data. The encrypted data comprises a number of encrypted headers and an encrypted body. A next node in the network is identified based on a destination for the encrypted data. A request is generated to reserve a number of time intervals for transmitting the encrypted data to the next node through the network. A time interval is a time between transmission of the encrypted data in the network using the reference time. The encrypted data is transmitted in the network during the number of time intervals responsive to receiving an approval for the request from the next node.

Turning now toFIG. 3, an illustration of a network management environment is depicted in accordance with an advantageous embodiment. Network management environment300is an environment in which advantageous embodiments may be implemented. Network302is in network management environment300and is an example implementation of network102inFIG. 1.

Computer system304is connected to network302in these illustrative examples. For example, computer system304may have an Ethernet connection to network302. In this advantageous embodiment, computer system304may be source node306. Source node306is a node in network302that receives data to send through network302from computer system308or generates data to send through network302. Computer system308may be implemented using a number of data processing systems. The number of data processing systems in computer system308may be implemented using data processing system200inFIG. 2, which generates data to send through network302. Computer system308is connected to source node306in network302, but not to other nodes in this illustrative example.

Network management module310is located in computer system304. Network management module310may be implemented using hardware, software, or a combination of the two. In this advantageous embodiment, network management module310is a process running on computer system304. In these illustrative examples, network management module310includes time management system312, cryptography system314, network reservation system316, and network interface318. Time management system312is configured to set reference time320of source node306. In these illustrative examples, reference time320received may include an absolute time, a relative time, or a synchronized time. An absolute time is the time in the physical world. For example, 5:03:24.123 PM on Feb. 1, 2011 AD is an absolute time. Of course, the level of precision in the absolute time may vary in the different advantageous embodiments. A current time may be the local time, which may be agreed upon between nodes. A relative time is a time established with respect to a common reference time. For example, if two nodes establish a common reference time, and then each node counts 100 microseconds, each node has established a relative time of 100 microseconds relative to the common reference time. A synchronized time is a time at which nodes agree upon a reference time common to the nodes.

A plurality of nodes may each begin incrementing units of time once the common reference time is established. For example, source node306may begin counting the number of hundredths of a second that have elapsed since the moment plurality of time signals106inFIG. 1is established. Of course, source node306may identify a different size portion of a second in different advantageous embodiments. For example, source node306may identify thousandths of a second. In these illustrative examples, time management system312uses signal322to set reference time320.

More specifically, time management system312receives signals321from plurality of time sources324. Signal322in signals321is a wired or wireless communication that includes an indication of the reference time. For example, signal322may be a global positioning system (GPS) signal when plurality of time sources324includes a number of global positioning system satellites. In other advantageous embodiments, time management system312does not receive signals321. Instead, time management system312is a circuit that receives time data.

Plurality of time sources324may include time sources with different levels of accuracy. For example, plurality of time sources324may include a signal from a wired or wireless network transmitter, another node, and/or a signal from an atomic clock. In such an advantageous embodiment, time management system312identifies signal322from signals321with desired level of accuracy326. Desired level of accuracy326is the amount of specificity of signal322with respect to the time.

Time management system312is configured to set reference time320for source node306using signal322having desired level of accuracy326. In the event that signal322from multiple time sources exceeds desired level of accuracy326, time management system312may set reference time320using signal322with the highest accuracy of plurality of time sources324available.

Source node306is a hardware device that is configured to receive data328from computer system308. Source node306may also include software and may be implemented using data processing system200inFIG. 2.

In this example, data328includes destination340. Destination340is an indication of a node for which data328is intended. In these illustrative examples, destination340is an address on network302. Alternatively, source node306may generate data328to be sent using source node306.

Network reservation system316is configured to identify next node342in network302. Next node342is the node in network302which is to receive data328with a destination of destination340. Network reservation system316may use a routing table or another suitable information source in order to identify next node342using the address of destination340.

Network reservation system316then generates request330. This request is generated in response to identifying next node342. Request330is a message that includes desired values for number of time intervals332. Time interval334is time336that occurs between transmission338of data328or one or more portions of data328. For example, time interval334may be about five nanoseconds. In other advantageous embodiments, however, time interval334changes between each interval. For example, time interval334may be generated based on a key or value known to source node306and next node342.

Network reservation system316then uses network interface318to send request330to next node342. Request330is received by next node342. Next node342identifies number of time intervals332indicated in request330. Next node342then determines whether next node342is available during number of time intervals332. In these examples, next node342uses schedule344to determine whether next node342is available during number of time intervals332by determining whether another reservation is already stored in schedule344for number of time intervals332.

In the event that next node342is unavailable during number of time intervals332, next node342may transmit a rejection of request330to source node306. In other advantageous embodiments, next node342may send a message to source node306that includes alternative values for number of time intervals332. In these illustrative examples, next node342is available during number of time intervals332.

Next node342then determines whether next node342is destination340. In the event that next node342is destination340, next node342transmits approval346to source node306. In the event that next node342is not destination340, next node342identifies additional node348. Next node342then generates request347to send data328during number of time intervals349and sends request347to additional node348. Number of time intervals349includes different time intervals than number of time intervals332in these illustrative examples. However, in other illustrative examples, number of time intervals349includes the same time intervals as number of time intervals332.

Additional node348is a node that is connected to next node342in network302. Additional node348may be directly connected to next node342or connected through a number of other channels. For example, additional node348may be connected to next node342using two links connected by a device that bridges the two links. Additional node348may or may not also be connected to source node306. Additional node348is the node which next node342identifies as being the node to which data328with destination340is sent in network302. Additional node348may send approval350to next node342if additional node348is destination340.

When next node342receives approval350from additional node348, next node342generates approval346and sends approval346to source node306. Additional node348may generate another request and send the request to another node identified as the next node to receive data328with destination340for additional node348. Next node342modifies schedule344to indicate that data received from source node306during number of time intervals332is to be sent to additional node348.

In this illustrative example, approval346is received by source node306. Thus, path352is formed. Path352is the route that data328is to take through network302while being transmitted during number of time intervals332and/or number of time intervals349. In this advantageous embodiment, path352includes source node306, next node342, additional node348, and other nodes in the network that approve requests to transmit data328.

Cryptography system314is configured to encrypt data328to form encrypted data354. In these illustrative examples, data328is in the form of a number of data packets having a number of headers and a body. Encrypted data354includes encrypted headers356and encrypted body358. Encrypted headers356include information about destination340. Thus, destination340may not be observed by observing encrypted data354. The encryption of the entire packet is also referred to as full encryption or full packet encryption. In this advantageous embodiment, encrypted data354is encrypted such that no portion of data328is in unencrypted form. Thus, encrypted data354does not include unencrypted portion357of data328. However, in other advantageous embodiments, portions of data328may be unencrypted. For example, the number of headers for data328may be encrypted, but the body portion of data328may be unencrypted.

Cryptography system314causes network interface318to transmit encrypted data354through network302using path352. For example, network interface318transmits encrypted data354from source node306to next node342during number of time intervals332. Next node342receives encrypted data354during number of time intervals332. Next node342uses schedule344to identify that data received from source node306during number of time intervals332is to be transmitted to additional node348during number of time intervals349. Next node342does not decrypt encrypted data354. More specifically, next node342transmits encrypted data354without decrypting encrypted headers356. Encrypted data354is transmitted along path352of nodes such that encrypted data354arrives at destination340.

For example, in some advantageous embodiments, data328is not encrypted by cryptography system314prior to transmission338during number of time intervals332. In such an advantageous embodiment, next node342still identifies that additional node348is to receive data328without using the headers or destination information in data328.

In another illustrative example, time management system312is configured to receive signal322from plurality of time sources324based on a priority list of time sources. The list may be prioritized based on accuracy, availability, or other suitable factors.

Additionally, in some advantageous embodiments, network interface318transmits data360when number of time intervals332occurs and data328and/or encrypted data354have not been received for transmission. In other words, data360is other data that is transmitted during number of time intervals332when data328and/or encrypted data354are unavailable to be transmitted.

Turning now toFIG. 4, an illustration of a plurality of time sources is depicted in accordance with an advantageous embodiment. Plurality of time sources400is an example of one implementation of plurality of time sources324inFIG. 3.

Plurality of time sources400includes different time sources in the different advantageous embodiments. For example, plurality of time sources400may include number of satellites402that generates satellite time signal404. Number of satellites402is a collection of satellites that broadcast satellite time signal404and travel in an orbit known to a time management system, such as time management system312inFIG. 3, or another suitable component. In some advantageous embodiments, number of satellites402may be traveling at a speed and in an orbit such that Doppler shift406may be identified.

Doppler shift406is the change in frequency of a wave for an observer moving relative to the source of the wave. Doppler shift406of satellite time signal404is used to increase the accuracy of satellite time signal404over receiving the time from satellite time signal404without Doppler shift406. Thus, accuracy of number of satellites402is increased when number of satellites402is traveling at a speed and in an orbit such that Doppler shift406may be identified.

Plurality of time sources400may also include global positioning system408, atomic clock410, number of network transmitters412, vehicle414, and/or local clock416. Number of network transmitters412includes wireless network transmitters, such as cell phone networks, wireless data networks, a wireless transmitter located in an aerial vehicle, and other suitable wireless transmitters. Number of network transmitters412also includes wired network transmitters in some advantageous embodiments. For example, number of network transmitters412may include another node in the network. Local clock416is a time device that is a component of a time management system.

In some advantageous embodiments, atomic clock410and/or another time source is located aboard vehicle414traveling within wireless communication distance of one or more nodes. In such an advantageous embodiment, a signal containing the time information from atomic clock410may be transmitted to the one or more nodes from the vehicle. Vehicle414may be an aerial vehicle, a land-based vehicle, a space-based vehicle, or another suitable type of vehicle. Of course, vehicle414may have a different source of time than atomic clock410, such as time data received from global positioning system408. Vehicle414may retransmit the time data from global positioning system408.

Turning now toFIG. 5, an illustration of a network management environment that implements backup paths is depicted in accordance with an advantageous embodiment. Network management environment500is similar to network management environment300and implements some or all of the features of network management environment300inFIG. 3. Network management environment500also implements additional and/or different features with respect to backup paths. The backup paths in network management environment500are an example implementation of backup paths116inFIG. 1.

Network management environment500contains network502. Network502is a collection of computers connected such that data can be transmitted and received among the computers using the connections in network502. Network502contains computer system504, plurality of next nodes506, and additional node508in this advantageous embodiment. Of course, additional or fewer nodes may be present in other advantageous embodiments.

Computer system504is source node510in these illustrative examples. Computer system504may be an example implementation of data processing system200inFIG. 2. However, in other advantageous embodiments, computer system504may be in the form of a router or other suitable device. Source node510is a node in network502that is the first node to send data512to another node using network502.

Computer system504runs network management module514. Network management module514contains time management system516, network reservation system518, inconsistency management system520, cryptography system521, and network interface522. In this illustrative example, computer system504receives data512to transmit to destination524. Destination524is an indication of a node on network502. In these illustrative examples, destination524includes the address on network502of the node to which data512is to be sent.

Time management system516performs similar functions to time management system312inFIG. 3. However, time management system516may perform additional functions in some advantageous embodiments. In these illustrative examples, time management system516sets reference time526for source node510using signal528. Reference time526is similar to reference time320inFIG. 3, such that reference time526may include an absolute time, a current time, a relative time, a synchronized time, and/or another suitable type of time. Time management system516receives the time from a time source, such as plurality of time sources400inFIG. 4. Time management system516then sets reference time526to the time received in signal528.

Source node510then waits to receive data512for transmission through network502. Data512may be received from another computer system, such as computer system308inFIG. 3. Data512includes destination524. When data512is received, network reservation system518performs functions similar to network reservation system316inFIG. 3. Network reservation system518also performs additional functions.

In these illustrative examples, network reservation system518identifies destination524in data512and identifies plurality of next nodes506. Plurality of next nodes506is a collection of nodes in network502that are known to source node510to be able to communicate with destination524. Each of plurality of next nodes506may be directly connected to destination524or indirectly connected to destination524. “Directly connected” means that the node shares a link with destination524. “Indirectly connected” means that the node in plurality of next nodes506is not directly connected to destination524, but can communicate with destination524through other nodes.

The quantity of nodes in plurality of next nodes506may be set by a rule. The rule may set the quantity of nodes in different ways. For example, the quantity of nodes in plurality of next nodes506may be limited to a maximum quantity of nodes, set to all nodes that are directly or indirectly connected to destination524, or another suitable rule. Once plurality of next nodes506is identified, network reservation system518generates request530to transmit data512to each next node532in plurality of next nodes506during number of time intervals534. Time interval536in number of time intervals534is time538between transmission540of data512or one or more portions of data512. Request530is transmitted using network interface522.

Request530is received at each next node532. Each next node532determines whether number of time intervals534is available at the particular next node. For example, next node542uses a schedule, such as schedule344inFIG. 3, to determine whether number of time intervals534is available for receiving data512from source node510. Each next node532then identifies destination524contained in request530.

In the event that the particular node is not destination524, the node identifies the node to which data512with destination524is to be sent. In this advantageous embodiment, next node542identifies additional node508. Additional node508is the node to which data512is to be transmitted from next node542when data512has destination524.

In some advantageous embodiments, network reservation system518also generates request530such that request530includes number of time intervals546. Number of time intervals546is a time interval between the reception of response data548by source node510. Response data548is information about plurality of next nodes506and/or network502. For example, response data548may include an acknowledgement that data512is received at next node542and/or additional node508.

In this illustrative example, source node510sends request530to next node542and next node550. Source node510then receives approval544from next node542and approval552from next node550. Thus, source node510, next node542, and additional node508form portion554of path556. Likewise, source node510and next node550form portion558of path560. In some advantageous embodiments, path556has a higher priority than path560. In such advantageous embodiments, path556is referred to as a primary path, and path560is referred to as a backup path. Additional backup paths may also be formed. Path560and other backup paths are an example implementation of backup paths116inFIG. 1.

Each next node532may then send an approval, such as approval350inFIG. 3, to source node510. In this illustrative example, next node542sends approval544to source node510as described with respect to next node342using schedule344inFIG. 3. Additional nodes in plurality of next nodes506may send an approval to source node510in different advantageous embodiments.

Once approval544is received from next node542, source node510transmits data512to next node542during number of time intervals534. Likewise, source node510transmits data512to each next node532that may send an approval to source node510to transmit data512during number of time intervals534.

Data512is thus transmitted to destination524using path556. In some advantageous embodiments, data512is encrypted using cryptography system521prior to being transmitted by source node510. Cryptography system521is an example of an implementation of cryptography system314inFIG. 3.

However, inconsistency562may develop in next node542, additional node508, or at another location or link in network502. The term “inconsistency”, as used herein, is a fault and/or interruption in a network that prevents communication in the network or a portion of the network. For example, a loss of electrical power to a node in a network may cause the node to be unable to communicate. Such a node has developed an inconsistency.

In the event that inconsistency562develops, one or more nodes along path556may make determination563. Determination563is a conclusion that inconsistency562has developed in next node542, additional node508, or at another location or link in network502. In some advantageous embodiments, determination563is reached by one or more nodes along path556generating notification564. Notification564is a message that includes information related to inconsistency562. In some advantageous embodiments, notification564is received during number of time intervals546as response data548. For example, notification564may include an identity of nodes in network502that may not transmit or receive data512.

In other advantageous embodiments, notification564is not received. Instead, determination563is obtained by source node510sending plurality of messages566to next node542for path556and next node550for path560. In some advantageous embodiments, next node542and next node550retransmit plurality of messages566to the next node on path556and path560, respectively. Plurality of messages566may be transmitted on a periodic or non-periodic basis. Plurality of messages566is requests for acknowledgment by the other nodes on the particular path.

Next node542and next node550send number of acknowledgments568to source node510to indicate that plurality of messages566has been received and next node542and/or next node550are operating normally. In some advantageous embodiments, source node510may also receive number of acknowledgments568from other nodes along path556and/or path560.

When inconsistency562develops for a node on path556such that the node may not transmit and/or receive data512, the node does not send number of acknowledgments568. Once source node510does not receive number of acknowledgments568for at least period of time570, inconsistency management system520makes determination563that inconsistency562has occurred along path556. Inconsistency management system520then causes network interface522to cease transmitting data512using path556and to transmit data512using path560.

In these illustrative examples, plurality of messages566may be plurality of Internet Control Message Protocol (ICMP) messages572. Likewise, number of acknowledgments568may be number of Internet Control Message Protocol (ICMP) responses574. Of course, plurality of Internet Control Message Protocol (ICMP) messages572and/or number of Internet Control Message Protocol (ICMP) responses574may be in the form of other suitable transmissions. Plurality of messages566may be transmitted on an application layer, a session layer, a link layer, or a network layer of a transmission control protocol/Internet protocol (TCP/IP) network. Likewise, number of acknowledgments568may be received by source node510on an application layer, a session layer, a link layer, or a network layer of a transmission control protocol/Internet protocol (TCP/IP) network.

For example, data512may be received from a computer system connected to source node510. In such an illustrative example, data512may be received using a network interface, a universal serial bus (USB) interface, or another suitable interface.

For example, in some advantageous embodiments, source node510also contains cryptography system521, such as cryptography system314inFIG. 3. In such advantageous embodiments, source node510may use cryptography system521to encrypt data512to form encrypted data. Cryptography system521may encrypt both the headers and the body of data512to form the encrypted data such that no portion of data512is unencrypted in the encrypted data.

Turning now toFIG. 6, an illustration of a network management environment in which pre-reserved paths are implemented is depicted in accordance with an advantageous embodiment. Network management environment600is an alternative implementation of network management environment300inFIG. 3. Network management environment600includes network602. Network602is a collection of computers connected such that data can be transmitted and received among the computers using the connections in network602. Network602contains computer system604and plurality of nodes606in this advantageous embodiment. Of course, additional or fewer nodes may be present in other advantageous embodiments.

Computer system604is node610in these illustrative examples. Computer system604may be an example implementation of data processing system200inFIG. 2. However, in other advantageous embodiments, computer system604may be in the form of a router, switch, or other suitable device. Node610is a device being added to network602. For example, node610may be starting from an offline state.

Computer system604runs network management module614. Network management module614contains time management system616, node configuration system612, network reservation system618, and network interface620. Time management system616sets reference time622for node610using signal624. Time management system616performs the same or similar functions as time management system516inFIG. 5. Likewise, signal624is an example of one implementation of signal322inFIG. 3. In some advantageous embodiments, however, reference time622may be received from one or more nodes in plurality of nodes606instead of signal624. Reference time622is similar to reference time320inFIG. 3, such that reference time622may include an absolute time, a current time, a relative time, a synchronized time, and/or another suitable type of time.

When node610is added to network602, node configuration system612identifies configuration data626. Configuration data626is information about number of time intervals628and/or number of time intervals630. Number of time intervals628is a time between receiving at least a portion of request632. Time interval641in number of time intervals628and/or number of time intervals630is time643between transmission645of data636or one or more portions of data636. Request632is a message from node634to node610to determine whether node610is available for receiving data636during number of time intervals638. Number of time intervals630is a time between transmitting data to another node in plurality of nodes606, such as node640.

Configuration data626may also include addresses642. Addresses642are indications of which nodes in network602are directly connected to node610. In this illustrative example, plurality of nodes606is the collection of nodes that are directly connected to node610. Configuration data626may be stored in memory644. Alternatively, configuration data626may be received in user input646.

In yet other advantageous embodiments, node configuration system612generates notification648. Notification648is an indication to plurality of nodes606that node610is now available. Notification648is transmitted to plurality of nodes606using network interface620during number of time intervals630. In such advantageous embodiments, at least a portion of configuration data626is transmitted from plurality of nodes606to node610during number of time intervals628.

Notification648may also be encrypted prior to being transmitted to plurality of nodes606using a cryptography system, such as cryptography system314inFIG. 3. Since notification648is transmitted during number of time intervals630, notification648is not decrypted until notification648arrives at notification destination650. Thus, an unauthorized party that receives notification648may not identify notification destination650.

In this illustrative example, node634receives data636with destination652of node640. Node610is directly connected to node634and node640. Additionally, node610has approved node634to send request632to node610during number of time intervals628. Node640has also approved node610to send requests for additional time intervals during number of time intervals630. Thus, node634sends request632to node610during number of time intervals628. Request632includes desired time intervals for sending data636to node610. For example, request632includes number of time intervals638. Node610uses network reservation system618to identify destination652as node640. Network reservation system618then generates approval654and sends approval654to node634. Network reservation system618performs the same or similar functions of network reservation system316inFIG. 3.

Node634sends data636to node610during number of time intervals638. Node610receives data636and sends data636to node640during number of time intervals630. In these examples, node610does not identify destination652using information in data636.

Turning now toFIG. 7, an illustration of a network implementing full encryption is depicted in accordance with an advantageous embodiment. Network700is an example of one implementation of network302inFIG. 3. Full packet encryption in network700is an example implementation of full encryption114inFIG. 1.

Network700contains nodes702,704,706,708,710, and712. The collection of nodes702,704,706,708,710, and712is an example implementation of plurality of nodes104inFIG. 1. Network700also contains links714,716,718,720, and722. Links714,716,718,720, and722are communication channels between the node on each side of the respective link. For example, link714connects node702and node704such that node702may transmit data to node704and receive data from node704.

In this advantageous embodiment, nodes702,704,706,708,710, and712each have time management system724. Time management system724is a device that sets a reference time for each of nodes702,704,706,708,710, and712to the time received from time source726. While time source726is depicted as a single time source in this advantageous embodiment, time source726may also include a plurality of time sources, such as plurality of time sources400inFIG. 4. The time is received at each of nodes702,704,706,708,710, and712from time source726. Time source726is a device that stores the reference time. In advantageous embodiments in which time source726includes a plurality of time sources, each time source is a device that obtains and/or stores the reference time. For example, time management system724may include a global positioning system receiver, and time source726may be a number of global positioning system satellites. Time management system724is an example implementation of time management system312inFIG. 3.

Time management system724receives signal728from time source726. In some advantageous embodiments, time management system724also receives additional signals from other time sources. In this illustrative example, signal728is a satellite time signal.

Assume node702then receives data to be transmitted to node710. Node702may receive the data from a computer connected to node710or generate the data to be transmitted to node710.

Node702identifies that node704is a node to which data with a destination of node710is to be sent by node702. Node702may identify node704using a routing table or another suitable information store. Node702generates a first request to send data during a first number of time intervals and sends the first request to node704. The request includes the destination for the data to be transmitted. In this illustrative example, the request contains the address of node710.

Node704receives the request and identifies that the destination is node710. Node704then identifies the node to which data with a destination of710is to be sent. Node704identifies node706in this illustrative example. Of course, in other illustrative examples, node704may identify a different node based on a preference for a particular node or against a particular node. The preference may be set by an administrator, for example. Node704sends a request to node706to send data during a number of time intervals.

Node706receives the request from node704and likewise identifies that the destination is node710. Node706then identifies node708as the node to which data with a destination of node710is to be sent. Node706sends a request to send data during a number of time intervals to node708. Likewise, node708identifies node710and sends a request to node710.

Node710receives the request from node708and identifies that node710is the destination for the data. Node710determines whether the number of time intervals is available for node710to receive data. The number of time intervals is available when the number of time intervals is not already reserved in another reservation and/or by another node.

In this illustrative example, node710is available to receive data during the number of time intervals. Nodes702,704,706,708, and710may store a schedule of time intervals to identify where data received during particular time intervals is to be sent. Thus, node710sends an approval to node708.

Node708receives the approval and sends an approval to node706. Node706receives the approval and sends an approval to node704. Node704receives the approval and sends an approval to node702. Node702receives the approval. Nodes702,704,706,708, and710now form path730through network700.

Once path730through network700is formed, node702encrypts the data to be transmitted. The destination information is also encrypted such that only node710from network700may decrypt the data and the destination information. Node702transmits the data during the number of time intervals to node704.

Node704receives the data during the number of time intervals. Of course, in some advantageous embodiments, a tolerance is added to the number of time intervals based on the amount of time taken for data to travel over link714. Node704identifies that data received during the number of time intervals is to be transmitted to node706, according to the reservation in the schedule for node704. Node704transmits the data to node706without decrypting the data or the destination information using the schedule.

Likewise, node706receives the data during the number of time intervals and transmits the data to node708during the number of time intervals. Node708receives the data during the number of time intervals and transmits the data to node710during the number of time intervals. Thus, the data arrives at the destination for the data. Node710uses a decryption key or other suitable decryption device to decrypt the data. In these examples, the data is decrypted into the same form as the data prior to the encryption by node702. In other words, the decrypted data contains destination header information.

The illustration of network700inFIG. 7is not meant to imply physical or architectural limitations to the manner in which different advantageous embodiments may be implemented. Other components in addition to and/or in place of the ones illustrated may be used. Some components may be unnecessary in some advantageous embodiments.

For example, in these illustrative examples, the number of time intervals is shared among nodes702,704,706,708, and710along path730through network700. However, in other illustrative examples, the number of time intervals requested in the request from one node to another may be different with respect to other nodes in path730.

InFIG. 8, an illustration of data is depicted in accordance with an advantageous embodiment. Data800is an example of one implementation of data328inFIG. 3.

As illustrated, data800is an Internet Protocol (IP) packet in these examples. Data800includes flags802, layer 2 headers804, layer 3 headers806, additional headers808, payload810, cyclic redundancy check values812, and flags814. Additional headers808and flags802and814include information about data800, such as the length or size of data800. Layer 2 headers804include information about the node that most recently transmitted data800and the node to which data800is being sent.

Layer 3 headers806include the source node that first transmitted data800and the destination for data800. The destination for data800in layer 3 headers806is an example of destination340inFIG. 3. Payload810is the information that is intended to be received by the destination. For example, payload810may include a portion of an electronic mail. Cyclic redundancy check values812are a collection of numbers that indicate whether data800contains any inconsistencies.

Turning now toFIG. 9, an illustration of encrypted data is depicted in accordance with an advantageous embodiment. Encrypted data900is an example implementation of encrypted data354inFIG. 3. Encrypted data900also includes flags802, layer 2 headers804, layer 3 headers806, additional headers808, payload810, cyclic redundancy check values812, and flags814. However, flags802, layer 2 headers804, layer 3 headers806, additional headers808, payload810, cyclic redundancy check values812, and flags814are encrypted in these examples. Once encrypted, the collection of layer 2 headers804and layer 3 headers806is an example implementation of encrypted headers356inFIG. 3. Once encrypted, payload810is an example implementation of encrypted body358inFIG. 3.

Encrypted data900may be encrypted by a cryptography system, such as cryptography system314inFIG. 3, using Data Encryption Standard (DES), Advanced Encryption Standard (AES), Twofish, Blowfish, or other suitable encryption systems. Encrypted data900may be transmitted through paths in a network without nodes decrypting any of encrypted data900.

With reference now toFIG. 10, an alternative illustration of encrypted data is depicted in accordance with an advantageous embodiment. Encrypted data1000contains flags802, additional headers808, payload810, cyclic redundancy check values812, and flags814, as in encrypted data900. However, prior to being encrypted, layer 2 headers804and layer 3 headers806were removed from encrypted data900. Since encrypted data1000is transmitted during reserved time intervals, nodes transmitting and receiving encrypted data1000are aware of the next node to receive encrypted data1000without layer 2 headers804and layer 3 headers806as inFIG. 8andFIG. 9.

With reference now toFIG. 11, an illustration of a network in which backup paths are implemented is depicted in accordance with an advantageous embodiment. Network1100is an example of another implementation of network302inFIG. 3. As depicted, network1100is similar to network700in that network1100contains the same nodes as network700. However, network1100includes different and/or additional features than network700. Network1100is an example implementation of network502inFIG. 5.

Network1100includes nodes1102,1104,1106,1108,1110,1112,1114,1116,1118, and1120. Network1100also includes links1122,1123,1125,1126,1128,1130,1132,1134,1135,1136,1138,1139,1141,1143,1145, and1147. Links1122,1123,1125,1126,1128,1130,1132,1134,1135,1136,1138,1139,1141,1143,1145, and1147connect pairs of nodes in network1100. For example, link1122connects node1102and1104. Each node also has time management system1124. Time management system1124sets the reference time for each node using time source1144. Time source1144may include a plurality of time sources, such as plurality of time sources400inFIG. 4. Time management system1124is an example implementation of time management system312inFIG. 3.

In this illustrative example, node1102receives data with a destination of node1110. Network102implements backup paths, as described with respect to backup paths116inFIG. 1. The data is an example implementation of data512inFIG. 5. Node1102identifies that the destination for the data is node1110. Node1102uses a routing table or another suitable addressing mechanism to identify that both node1104and node1112may receive data with a destination of node1110.

Node1102generates a first request to send data to node1104during a first number of time intervals. Node1102also generates a second request to send data to node1112during a second number of time intervals. The first number of time intervals may be the same intervals or different intervals than the second number of time intervals. Node1102then sends the first request to node1104and the second request to node1112.

Node1104receives the first request and determines whether node1104is available during the first number of time intervals using a schedule. In the event that node1104is unavailable, node1104returns a rejection to node1102. In these illustrative examples, node1104is available to receive data during the first number of time intervals.

Node1104then identifies that the destination of the data, according to the request, is node1110. Node1104identifies that node1106is to receive data from node1104intended for node1110. Thus, node1104generates a request to transmit data to node1106during a number of time intervals. Node1104sends the request to node1106.

Node1106receives the request and processes the request from node1104. The next node for data from node1106to node1110is node1108. Thus, node1106generates and sends a request to node1108. Likewise, node1108generates a request for node1110and sends the request to node1110.

Once node1110receives the request from node1108, node1110determines whether node1110is available during the number of time intervals. When node1110is available, node1110generates an approval and sends the approval to node1108. Node1108receives the approval, generates an approval for node1106, and sends the approval to node1106. Likewise, node1106processes the approval and sends an approval to node1104. Node1104processes the approval and sends an approval to node1102. Thus, path1140is formed.

Likewise, path1142is formed by nodes1102,1112,1114,1106,1116,1118and1110processing requests and approvals with respect to the schedules of the nodes. It should be noted that nodes1102,1106, and1110are members of both paths1140and1142. For example, node1106may have reserved a first number of time intervals for data received from node1104, and a second number of time intervals for data received from node1114. Of course, in other advantageous embodiments, path1140and path1142may only have nodes1102and1110in common. For example, path1140may include node1120instead of node1106. In such an advantageous embodiment, only nodes1102and1110are present in both path1140and path1142.

Once paths1140and1142are formed, data is transmitted using path1140. In addition to the data being transmitted with a destination of node1110, information is transmitted in the opposite direction. In other words, information is transmitted from node1110to node1108, from node1108to node1106, from node1106to node1104, and from node1104to node1102. The information includes acknowledgments that each portion of the data transmitted by the nodes is received by the next node in path1140.

In this advantageous embodiment, an inconsistency occurs at node1108. For example, node1108may experience a lack of electrical power and be unable to receive or transmit data. Thus, node1108does not send acknowledgments to node1106. After the expiration of a period of time without receiving a TCP/IP layer 2 or other acknowledgment, node1106determines that an inconsistency has developed for node1108. A TCP/IP layer 2 acknowledgment is an acknowledgment transmitted at the data link layer of the TCP/IP network. An acknowledgment transmitted at the data link layer is transmitted from a first node to a second node having a shared link with the first node. However, the layer 2 acknowledgment is not transmitted to other nodes that do not share a link with the first node.

Node1106generates a notification and sends the notification to node1104. Node1104sends the notification to node1102. Alternatively, node1102may be alerted by a lack of acknowledgements from node1110. Node1102receives the layer 2 notification or lack of acknowledgement and ceases transmitting data through path1140. In some advantageous embodiments, the lack of acknowledgments refers to acknowledgments expected by the node to be received on TCP/IP layer 3 or higher. In other words, the lack of acknowledgments may refer to acknowledgments not received from nodes that do not share a link with node1102, such as node1110. Instead, node1102begins transmitting data though path1142. Since no inconsistency is present in path1142, data arrives at node1110.

Turning now toFIG. 12, an illustration of a network that implements pre-reserved paths is depicted in accordance with an advantageous embodiment. Network1200is an example implementation of network602inFIG. 6. Network1200is an example of one implementation of network302inFIG. 3. In this illustrative example, network1200is similar to network700in that network1200contains the same nodes and links as network700. However, network1200performs different and/or additional functions than network700. For example, network1200implements pre-reserved paths118inFIG. 1.

Network1200includes nodes1202,1204,1206,1208,1210,1212,1214,1216,1218, and1220. Network1200also includes links1222,1223,1225,1226,1228,1230,1232,1234,1235,1236,1238,1239,1241,1243,1245, and1247. Links1222,1223,1225,1226,1228,1230,1232,1234,1235,1236,1238,1239,1241,1243,1245, and1247connect pairs of nodes in network1200. For example, link1222connects node1202and1204. Each node also has time management system1224. Time management system1224sets the reference time for each node using time source1244. Time management system1224is an example implementation of time management system312inFIG. 3.

In this advantageous embodiment, node1206was disconnected from network1200for a period of time and is now being joined to network1200. Node1206is powered on and reads configuration data, such as configuration data626inFIG. 6. The configuration data may include addresses of adjacent nodes with which reservations are to be generated. The addresses of the adjacent nodes, in this example, are nodes1204and1208. While node1214is also adjacent to node1206, information about node1214is not stored in the configuration data in this illustrative example.

In some advantageous embodiments, the configuration data also includes a number of time intervals for each adjacent node with which a reservation is to be generated. In other advantageous embodiments, node1206generates a message to nodes1204and1208indicating that node1206is online. The message may or may not be fully encrypted. In response to the message, nodes1204and1208may send a response that includes the number of time intervals. The response may or may not be fully encrypted. In this illustrative example, the number of time intervals is stored in the configuration data.

Nodes1204and/or1208may also be preconfigured with reservations for the number of time intervals stored in the configuration data for node1206. In such an advantageous embodiment, node1206does not generate a request, since the number of time intervals is already reserved on nodes1204and1208. Node1206may instead transmit data to nodes1204and1208during the number of time intervals without prior communication between node1206and nodes1204and1208. The transmitted data may be fully encrypted.

Once the number of time intervals is reserved between node1206and node1204, path1242is formed. Likewise, path1240is formed between node1206and node1208once the number of time intervals is reserved between nodes1206and1208. In this illustrative example, assume that node1202receives data with a destination of node1210. In such an advantageous example, node1202generates a request and sends the request to node1204in the same manner as nodes1102and1104inFIG. 11. The request may be fully encrypted. However, once node1202receives the request and identifies the destination as node1210, node1202generates a request for node1206as the node to which data intended for node1210is sent. The request may be fully encrypted. The request for node1206is sent to node1206during the pre-reserved time intervals such that the request reaches node1206even in the event that node1206is experiencing delays or inconsistencies because a portion of network1200is at or near maximum capacity for data.

Node1206receives the request during the time interval with which node1206has a reservation with node1204. Node1206processes the request in the same manner as node1106inFIG. 11. However, node1206identifies the reservation between node1206and node1208. Thus, node1206transmits the request to node1208during the number of time intervals. The request may be fully encrypted. Likewise, approvals may be transmitted from node1208to node1206and from node1206to node1204during the number of time intervals to avoid congestion in network1200. The approvals may be fully encrypted.

The illustration of network1200inFIG. 12is not meant to imply physical or architectural limitations to the manner in which different advantageous embodiments may be implemented. Other components in addition to and/or in place of the ones illustrated may be used. For example, in the event that each node in network1200is started, connected, and/or joined to network1200substantially simultaneously with pre-reserved time intervals for layer 2 paths, then every node in network1200could also have pre-reserved paths and/or time intervals for layer 3 and layer 4 communications.

For example, a human manager of a fixed-wired network may already know the positions and propagation times of all the nodes before the nodes in the network are started, connected, and/or joined to the network. Thus, the paths from a source node to a destination node, such as node1202to node1210, respectively, may be configured to be established without human interaction at the time all the nodes are started, connected, and/or joined. In advantageous embodiments in which the propagation time between nodes is substantially zero, pre-established time intervals and paths could be configured prior to starting, connecting, and/or joining the nodes.

Turning toFIG. 13, an illustration of a node is depicted in accordance with an advantageous embodiment. Node1300is an example of one implementation of next node342inFIG. 3.

In this illustrative example, node1300includes input buffers1302, output buffers1304, switch1306, time management system1308, network reservation system1310, and switch1312. Input buffers1302are channels through which data is received from a network. Output buffers1304are channels through which data is sent out to a network. The components of node1300are depicted as hardware in this advantageous embodiment. However, one or more components may also be implemented as a process running on a processing unit, an integrated circuit, or another suitable implementation.

Switch1306processes data that is not received during a number of time intervals known to network reservation system1310. Switch1306receives data on input buffers1302and sends data to a next node for the data using output buffers1304. Switch1306uses the destination header of the data to identify the next node for the data. Switch1306may contain additional or fewer buffers in other advantageous embodiments.

Time management system1308receives a signal containing information about the time. Time management system1308sets the reference time for node1300to the time received in the signal. Time management system1308is an example implementation of time management system312inFIG. 3.

Network reservation system1310receives requests from other nodes through input buffers1302to send data to node1300at a number of time intervals. In this advantageous embodiment, network reservation system1310is connected to switch1306using link1314such that network reservation system1310is assigned an address on the network and may receive requests at the particular address. In other advantageous embodiments, link1314is absent, and network reservation system1310only receives requests that arrive at input buffers1302at reserved time intervals that are a part of pre-reserved paths118inFIG. 1.

In this illustrative example, network reservation system1310receives a request to reserve a number of time intervals from another node in the network. Network reservation system1310generates a request to the next node for the data to be transmitted using the destination for the data included with the request. Once network reservation system1310receives an approval from the next node, network reservation system1310adds the reservation to a schedule and sends an approval to the node that sent the request.

When the number of time intervals occurs, network reservation system1310switches input buffers1302and output buffers1304to be connected to switch1312instead of switch1306. In some advantageous embodiments, network reservation system1310determines that the data is intended to be received by switch1312by identifying a flag or other identifier in the data that is received when the number of time intervals occurs. Switch1312receives the data sent by the node that made the reservation with node1300. Switch1312sends the data to the next node without identifying any information about the data, including the source or destination of the data. In some advantageous embodiments, the data, including the source and destination for the data, are encrypted. Of course, in other advantageous embodiments, the data is encrypted excluding the source and destination. The source and destination for the data may also be encrypted, while the remainder of the data is unencrypted in other advantageous embodiments. Switch1312does not decrypt the data to identify the source or destination. Once the time interval ends, network reservation system1310switches input buffers1302and output buffers1304back to switch1306to resume processing of other data.

Turning now toFIG. 14, an illustration of a schedule is depicted in accordance with an advantageous embodiment. Schedule1400is an example implementation of schedule344inFIG. 3.

Schedule1400is in the form of a table in this illustration. However, schedule1400may be stored in a linked list, database, text file, binary file, or other suitable data structure. Schedule1400includes time1402, input1404, output1406, status1408, time to kill1409, time offset1410, and propagation delay1412. Time1402indicates the interval at which the reservation may be used to transmit data. Time1402may be in the form of absolute time, current time, time relative to a reference time, synchronized time to a reference time, or another suitable measurement of time. Input1404indicates the input buffer or interface on which the data is to be received. For example, identifiers for input buffers1302inFIG. 13may be used. Likewise, output1406indicates the output buffer or interface on which the data is to be transmitted. For example, identifiers for output buffers1304inFIG. 13may be used.

Status1408indicates whether the particular time interval is “scheduled”, “tentative”, or “available.” Entry1416indicates that status1408is “scheduled.” Status1408of “scheduled” means that the path is formed and that the node will process the data received at that time interval by receiving data on the input in input1404and transmitting the data on the output in output1406.

Entry1418indicates that status1408is “tentative.” “Tentative” for status1408means that a request was received for the time interval, and the time interval was available. However, a request was sent by the node using schedule1400to another node that has not yet sent an approval to the node using schedule1400. Entry1420has status1408of “available.” “Available” for status1408means that the time interval is available for reservations and is not being used in an existing reservation.

Time to kill1409is the amount of time before the reservation is removed from schedule1400. Time to kill1409may be a particular value or may be absent for permanent reservations in schedule1400. Time offset1410is the difference in the reference times between the node using schedule1400and the node to which data is sent during the time interval for the reservation. Propagation delay1412is the amount of time taken for data to travel from the node using schedule1400and the node to which data is sent during the time interval for the reservation.

In some advantageous embodiments, pre-reserved time interval1414may also be present. Pre-reserved time interval1414is used to receive and transmit data along a pre-reserved path, such as pre-reserved paths118inFIG. 1. Pre-reserved time interval1414may be generated based on configuration data for the node, user input, messages received from other nodes in the network, or another suitable source.

In some advantageous embodiments, pre-reserved time interval1414may be reserved for transmitting data that is not received in accordance with another entry in schedule1400. In other words, pre-reserved time interval1414may be used to transmit data that is not being transmitted or received along a path.

Turning now toFIG. 15, an illustration of a flowchart of a process for managing a network is depicted in accordance with an advantageous embodiment. The process may be performed by network management module310running on computer system304inFIG. 3. The process begins by receiving signals from a plurality of time sources (operation1502). The plurality of time sources may be plurality of time sources324inFIG. 3. The process selects a signal having a desired level of accuracy from the signals (operation1504). The signal may be signal322, the desired level of accuracy may be desired level of accuracy326, and signals may be signals321inFIG. 3. Next, the process sets a reference time in the network using the signal (operation1506). The reference time may include an absolute time, a current time, a relative time, a synchronized time, and/or another suitable type of time. The reference time may be reference time320and the source node may be source node306inFIG. 3.

The process then may encrypt data to be transmitted through the network to form encrypted data, wherein the encrypted data comprises a number of encrypted headers and an encrypted body (operation1508). The data may be data328, and the source node may be source node306inFIG. 3. The network may be network302, and the encrypted data may be encrypted data354inFIG. 3. Likewise, the encrypted headers may be encrypted headers356, and the encrypted body may be encrypted body358inFIG. 3. Next, the process identifies a next node in the network based on a destination for the encrypted data (operation1510). The next node may be next node342, and the destination may be destination340inFIG. 3. The process generates a request to reserve a number of time intervals for transmitting the encrypted data to the next node through the network, wherein a time interval is a time between transmission of the encrypted data in the network using the reference time (operation1512). The request may be request347, and the number of time intervals may be number of time intervals332inFIG. 3. The time interval may be time interval334inFIG. 3.

Thereafter, the process determines whether an approval for the request from the next node was received (operation1514). The approval may be approval350inFIG. 3. If, at operation1514, the process determines that an approval for the request from the next node was not received, the process identifies a different next node (operation1515). The process then returns to operation1512. The process uses the different next node instead of the next node in performing operations1512,1514, and1516. If, however, at operation1514the process determines that an approval for the request from the next node was received, the process transmits the encrypted data in the network during the number of time intervals (operation1516) and terminates thereafter.

Turning now toFIG. 16, an illustration of a flowchart of a process for full packet encryption is depicted in accordance with an advantageous embodiment. The process may be performed by network management module310running on computer system304inFIG. 3. The process begins by setting a reference time for a node using a satellite time signal and/or a Doppler shift in the satellite time signal (operation1602). The accuracy of the satellite time signal may be increased by identifying the Doppler shift in the satellite time signal. The satellite time signal may be satellite time signal404and the Doppler shift may be Doppler shift406inFIG. 4. Of course, in other advantageous embodiments, additional and/or other time sources may be used to perform operation1602.

Next, the process receives data with a destination (operation1604). The process sets the node to the current node (operation1606). Thereafter, the process generates a request to send data to an adjacent node during a time interval (operation1608). The process then sends the request from the current node to an adjacent node that is to receive data being sent to the destination using a routing table (operation1610). The process then determines whether or not the time interval is available for the current node (operation1612).

If at operation1612the process determines that the time interval is not available for the current node, the process sends a denial to the node (operation1614) and terminates. Alternatively, if the process determines, at operation1612, that the time interval is not available for the current node, the process may return to operation1608and generate a request to send data to a different adjacent node during a time interval such that a different node that approves the request is used in generating the path. If, however, at operation1612the process determines that the time interval is available for the current node, the process determines whether or not the current node is the destination (operation1616).

If at operation1616the process determines that the current node is not the destination, the process sets the adjacent node to the current node (operation1618) and returns to operation1608. If, however, at operation1616the process determines that the current node is the destination, the process sends an approval and forms a path to the node (operation1620). Next, the process encrypts the destination and the data and sends the data through the path at the time interval (operation1622) and terminates thereafter.

With reference toFIG. 17, an illustration of a flowchart of a process for managing an inconsistency in a network is depicted in accordance with an advantageous embodiment. The process may be performed by network management module514running on computer system504inFIG. 5. The process begins by setting a reference time in a network using a signal (operation1702). The reference time may be reference time526, the source node may be source node510, and the signal may be signal528inFIG. 5. The process then identifies a plurality of next nodes associated with the source node based on a destination for data to be transmitted through the network (operation1704). The destination may be destination524inFIG. 5.

Next, the process generates a request to reserve a first number of time intervals with each of the plurality of next nodes for transmitting the data and a second number of time intervals with each of the plurality of next nodes for receiving response data, wherein a time interval is a time between transmission of the data in the network using the reference time (operation1706). The request may be request530inFIG. 5, and the first number of time intervals may be number of time intervals534inFIG. 5. The second number of time intervals may be number of time intervals546inFIG. 5, and the response data may be response data548inFIG. 5. The time interval may be time interval536, and the time may be time538inFIG. 5.

Thereafter, the process determines whether or not an approval for the request from the first next node has been received (operation1708). The approval may be approval552inFIG. 5. If, at operation1708, the process determines that an approval for the request from the first next node has not been received, the process terminates. Alternatively, if at operation1708the process determines that an approval for the request from the first next node has not been received, the process may return to process1704to identify a different plurality of next nodes associated with the source node based on a destination for data to be transmitted through the network. If, however, at operation1708the process determines that an approval for the request from the first next node has been received, the process transmits the data during the first number of time intervals to a first next node in the plurality of next nodes (operation1710). The first next node may be next node542inFIG. 5.

The process then determines whether an inconsistency occurred in the network (operation1712). The determination of an inconsistency may be through either a notification of an inconsistency in the network received from the first next node in the plurality of next nodes, a lack of messages received from the first next node, or a lack of acknowledgements received from the first next node in the plurality of next nodes. The determination may be determination563inFIG. 5. If, at operation1712, the process determines that an inconsistency has not occurred in the network, the process terminates. If, however, at operation1712the process determines that an inconsistency in the network exists through the first next node in the plurality of next nodes, the process ceases transmitting the data to the first next node and transmits the data to a second next node in the plurality of next nodes during the first number of time intervals (operation1714). The second next node may be next node550inFIG. 5. The process terminates thereafter.

Turning now toFIG. 18, an illustration of a flowchart of a process for generating a backup path is depicted in accordance with an advantageous embodiment. The process may be performed by network management module310running on computer system304inFIG. 3. The process begins by setting the reference time for a node using a signal (operation1802). The process receives data with a destination (operation1804). The process identifies a number of adjacent nodes that have a route to the destination (operation1806). Next, the process generates a request to send data during a number of time intervals and sends the request to each of the number of adjacent nodes (operation1808). The process then receives the request at each of the adjacent nodes and repeats generating and sending a request to a number of adjacent nodes until the destination is reached (operation1810).

Next, the process determines whether or not the number of time intervals is available at all of the nodes (operation1812). If, at operation1812, the process determines that the number of time intervals is not available at all of the nodes, the process sends approvals for paths of nodes that are available during the time interval (operation1814) and terminates thereafter. If, however, at operation1812, the process determines that the number of time intervals is available at all of the nodes, the process sends an approval to each requesting node (operation1816) and terminates thereafter.

Turning now toFIG. 19, an illustration of a flowchart of a process for configuring a node is depicted in accordance with an advantageous embodiment. The process may be performed by network management module614running on computer system604inFIG. 6. The process begins by setting a reference time for a first node in a network using a signal (operation1902). The reference time may be reference time622, the first node may be node610, the network may be network602, and the signal may be signal624inFIG. 6. The process then identifies, using configuration data, a plurality of nodes associated with the first node, a first number of time intervals with each of the plurality of nodes for receiving a request, and a second number of time intervals with the each of the plurality of nodes for transmitting the request, wherein a time interval is a time between transmission of the request by the first node in the network using the reference time (operation1904). The configuration data may be configuration data626, the plurality of nodes may be plurality of nodes606, the first number of time intervals may be number of time intervals628, and the request may be request632inFIG. 6. The second number of time intervals may be number of time intervals630, the time interval may be time interval641, the time may be time643, and the transmission may be transmission645inFIG. 6.

Next, the process receives, during the first number of time intervals, the request from a second node in the plurality of nodes to transmit data to the first node during a third number of time intervals (operation1906). The second node may be node634, the data may be data636, and the third number of time intervals may be number of time intervals638inFIG. 6.

The process then determines whether or not the third number of time intervals is available for the first node (operation1908). If, at operation1908, the process determines that the third number of time intervals is not available for the first node, the process terminates. Alternatively, if at operation1908the process determines that the requested third number of time intervals is not available for the first node, the process may then return to operation1906to receive a second request during the first number of time intervals. The second request is a request to transmit data from the second node in the plurality of nodes to the first node during an alternative third number of time intervals. If, however, at operation1908, the process determines that the third number of time intervals is available for the first node, the process sends an approval to the second node during the second number of time intervals (operation1910). The approval may be approval654inFIG. 6.

Thereafter, the process receives the data during the third number of time intervals and transmits the data to a third node in the plurality of nodes based on a destination for the data (operation1912) and terminates thereafter. The third node may be node640inFIG. 6.

Turning now toFIG. 20, an illustration of a flowchart of a process for joining a node to a network is depicted in accordance with an advantageous embodiment. The process may be performed by network management module614running on computer system604inFIG. 6. The process begins by joining a node to a network (operation2002). The process then sets the reference time for the node using a signal (operation2004). Next, the process reads time intervals and addresses from a configuration file (operation2006).

Thereafter, the process notifies the nodes with the addresses that the node is online during the time intervals (operation2008). The process receives requests for additional time intervals for transmitting data during the time intervals (operation2010). Then, the process sends an approval, a rejection, or generates a request to an adjacent node (operation2012) and terminates thereafter.

The flowcharts and block diagrams in the different depicted embodiments illustrate the architecture, functionality, and operation of some possible implementations of apparatus and methods in different advantageous embodiments. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, function, and/or a portion of an operation or step. For example, one or more of the blocks may be implemented as program code, in hardware, or a combination of the program code and hardware. When implemented in hardware, the hardware may, for example, take the form of integrated circuits or field programmable gate arrays that are manufactured or configured to perform one or more operations in the flowcharts or block diagrams.

In some alternative implementations, the function or functions noted in the block may occur out of the order noted in the figures. For example, in some cases, two blocks shown in succession may be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. For example, encryption may be done concurrently or in an order different from the order depicted in the figures. Also, other blocks may be added in addition to the illustrated blocks in a flowchart or block diagram.

For example, the process may receive time intervals and/or addresses from user input or messages received from other nodes at operation2006inFIG. 20. Additionally, the process may limit the number of adjacent nodes to which a request is sent based on a rule at operation1808inFIG. 18. For example, the rule may indicate that the number of requests generated is to be below a threshold. Alternatively, the rule may indicate that requests should be generated for about half of the adjacent nodes that have a route to the destination.

Additionally, in some advantageous embodiments, a determination is made at operation1712inFIG. 17that the inconsistency has occurred in the network, but the first next node is not affected by the inconsistency. In such advantageous embodiments, the process returns to operation1710to transmit data and does not perform operation1714inFIG. 17.

Thus, the different advantageous embodiments allow data to travel through a network without the source or destination being known to an unauthorized party receiving the data within the network. Additionally, data transmitted through the network while the network is at or near maximum capacity for data will still arrive without being delayed by the processing of other data.

Further, the different advantageous embodiments allow a node to be joined to the network while the network is at or near maximum capacity because the nodes being joined to the network have pre-existing time reservations with adjacent nodes. Finally, the different advantageous embodiments allow for a node in a reserved path to cease functioning normally without affecting delivery of the data to the destination. The source node may switch to a backup path to continue delivering the data.

Thus, the different advantageous embodiments provide an apparatus and a method for managing a network. Signals are received from a plurality of time sources. A signal having a desired level of accuracy is selected from the signals. A reference time in the network is set using the signal. Data to be transmitted through a network may be encrypted to form encrypted data. The encrypted data comprises a number of encrypted headers and an encrypted body. A next node in the network is identified based on a destination for the encrypted data. A request is generated to reserve a number of time intervals for transmitting the encrypted data to the next node through the network. A time interval is a time between transmission of the encrypted data in the network using the reference time. The encrypted data is transmitted in the network during the number of time intervals responsive to receiving an approval for the request from the next node.