|
|
|
LAYER 8 |
System Layout
The Layer8 (L8) network layout consists of endpoints, sources, sinks, repositories, and nodes.
Sources and sinks are where data enters or exits the L8 system. They are software components of the L8 system.
The L8 architecture is logically based upon multicast trees. Each multicast tree is a spanning tree layered on top of the existing nodes and connections between them. Sources send streams of bundles to multicast trees and each recipient of that multicast spanning tree receives a copy of those bundles.
Nodes may fail or the ability for two nodes to reach each other may be lost. To ensure that this does not affect data reliability, sources and sinks are able to switch which node they send bundles to and receive bundles from. Source and nodes will not discard a bundle until they have ensured that every authorized recipient has acknowledged that bundle. Nodes can change which other nodes they send bundles to directly.
Direct source-to-sink messages are also supported. A spanning tree can be trivially formed out of the preferred links each node uses to reach a particular destination. Note that bundles are never sent over links that are not part of the spanning tree of destinations for that particular bundle. (Unless the spanning tree changes during the bundles lifetime, in which case it may take parts of both trees.)
Direct source-to-sink messages can be used to implement more traditional query/response mechanisms. Even these mechanisms benefit from the self-healing topology, secure authentication, persistent tracking, and reliable delivery features of an L8 system.
Store
and Forward The system also provides for interim or long term storage in for both Bundles and Streams. Packets and Streams can both be marked to use, or not use the storage system. Much like a memo system with folders this facility allows nodes to replay a stream or re-read a bundle and to organize the data in folders. Stored information can only be retrieved from those users at the specific terminals that it was originally sent to.
Eyeball-to-Eyeball Security
Every link that a bundle takes is taken into account by the L8 architecture. The security parameters of a bundle are always associated with that bundle and a bundle will not cross a link whose security parameters are inconsistent of those of the bundle.
A system of keys and certificates are used to authenticate sources, sinks, nodes and end points. Certificates are also used to grant specific privileges or limitations to specific sources, sinks, and endpoints.
For example, if a particular person is at a particular machine, the person can be identified to the system by his smartcard and the machine by the key stored in it. The L8 system would impose the restrictions and grant the privileges specified by the certificates for both the endpoint and the source/sink.
Multilayer certificates can be used. For example, one certificate from one PKI system can confirm a persons identity while other certificates from another PKI system grant that person particular privileges. This way, an enterprise that already has a PKI can use its existing mechanisms of identifying individuals while using another system to manage the L8 system.
Digital Chain of Custody The L8s Digital Chain of Custody (DCC) feature provides for tracking, responsibility, and positive acknowledgement in the delivery of bundles. The chain of custody is bidirectional and exists at the source when a bundle is created until confirmation is obtained and delivered from every registered endpoint for that bundle.
At the lowest possible level, DCC would consist of positive acknowledgement to the source endpoint of a bundle that it was received by a node that was a member of the multicast group a bundle was sent to. This means that the message is confirmed to have left the source and that there is a node responsible for delivering it. Of course, its theoretically possible that the node could be unable to send the bundle to any other nodes or sinks and then crashes.
At the highest possible level, DCC would consist of positive acknowledgement for every recipient endpoint. Note that this is the endpoint that acknowledges, not the sink. So if the endpoint is a human reading text, the human would have to actually acknowledge the receipt of the message, displaying it on his screen would not constitute reception.
At higher levels, each node that receives the bundle tracks where it got the bundle from, who it is responsible for sending the bundle to, and who has already acknowledged it. This information and the bundle itself will remain with the node until it is able to collapse the chain of custody by acknowledging reception of each endpoint, node, or sink to the appropriate endpoint, node, or source.
[Picture] Person A, Keyboard, Source, Node A, Node B, Sink, Display, Person B
Consider a scenario involving a keyboard as an endpoint connected to a source. That source is connected to a node called A. That node is connected to a node called B which is currently servicing a sink. The sinks endpoint is a display.
Note that the links between the source and node A, node A and node B, and node B and the sink are encrypted. Each element is identified to each other element (including persons A and B) by certificates. The data bundle itself can also be encrypted such that only authorized recipients can decrypt it. When a node decrypts the bundle, it is really returned to its original encrypted state rather than its doubly encrypted state (once for the recipient, once to secure its progress over a particular link.)
If the highest level of DCC is enabled, and person A types a message at his keyboard, and a bundle is created at his source. That bundle is then assigned a unique identifier for tracking purposes and a table is made of the recipients to which the bundle is tracked. In this case, that table would consist of person Bs display.
The source would then decide to send the bundle to node A. (We are assuming that node A is authorized to receive the bundle on behalf of its recipients.) The bundle would be encrypted and transmitted to node A. Node A would then create a tracking entry for the bundle including its data, the fact that it is responsible for getting the bundle to person Bs display and that it is responsible for acknowledging this to As source.
Node A would then make a routing decision and decide to send the bundle to node B. It would then encrypt the bundle, and send it to B, noting this in its tracking entry. Node B would decrypt the bundle, and create a tracking entry. Node B would know that it was responsible for getting the bundle to person Bs display and reporting this to node A. Node B would then encrypt the bundle and send it to the sink.
When the sink receives the bundle, it will create a tracking entry as well. The tracking entry will record that it must receive an acknowledgement from the endpoint (person B) and report this to node B. At this point, the sink will send the bundle to the display.
When person B acknowledges receipt of the bundle, say by clicking on it, his endpoint will report this to his sink. The sink will report this to node B, which will report it to node A, which will report it to the source, which will display confirmation to person A.
At this point, each node will collapse its tracking entry merely to record that the bundle was sent successfully, just in case the acknowledgement was missed somewhere along the line. These can later collapse further into a range of acknowledgments indicating that the same target acknowledged a range of bundles that are part of the same stream.
Ultimately, the acknowledgements can be archived or discarded. At the highest level, repositories store tracking records indicating the originating endpoint, source, sink, destination endpoint, and range of bundles successfully acknowledged.
Alarms can be configured if acknowledgements are not received in a timely fashion. The level of DCC used as well as the type and severity of alarms is dependent upon the level requested by the source endpoint and the minimum and maximum levels authorized for the given data class.
Integration The L8 architecture includes a source/sink toolkit. This makes it easy for implementers to create their own sources and sinks. They can also specify DCC levels and generate and process acknowledgements in whatever manner is appropriate.
Consider, for example, an airline. They can create a multicast data stream to represent flight progress information. Any device that is capable of sending flight progress information can be integrated with the source/sink toolkit to form a source of flight progress data.
Once this is done, any device anywhere that has a need to access flight progress information can simply be linked with the source/sink toolkit to act as a sink. Thus, flight progress information becomes immediately available at any authorized point in the enterprise.
Message Type:
All message types can be sent:
All messages can be flagged for immediate (flash) non-stored, or for store and forward with a specific time limit for how long it can be stored.
The system has a built in cryptographically secure storage mechanism that allows users to store streams/bundles either for archival purposes or for store and forward applications.
|
|
Copyright (c) 1995-2008 Webmaster Inc. All
rights reserved.
|