Handshaking Protocol Modules

Home/Documents/Development/High-Level Design/Handshaking Protocol Modules
 Project Closed
 Site Index
 User Docs
 Introduction to ANet
 High-Level Design
 Run-Time Wrapper
 Client Connection Modules
 Data Transformation Modules
 Client SDK
 Cluster Group Modules
 Cluster Filter Modules
 Core Modules
 Handshaking Protocol Modules
 Packet Protocol Modules
 Connection Protocol Modules
 Bandwidth Manager Module
 Document Type Definition (DTD)
 Low-Level Design
 Protocol Specifications
 Task List
 Development Roadmap
 Other Docs
 Mailing Lists
 Contacting Us


by Benad

The goal of the Handshaking Protocol Modules is to provide and maintain network connections to the Core Modules[1].

Table of Contents


Role of the Handshaking Protocol Modules

The Handshaking Protocol Modules are there to provide an abstraction of network connections. From the point of view of the Core Modules, connections are identified by an ID, and Input/Output is done through buffers that will be given to the Handshaking Protocol Modules. So, it is up to the Handshaking Protocol Module to provide the IDs and to figure out to what actual protocol they point to.

Thus, it is up to the Handshaking Module to initaite and close the actual connections. This includes the need to exchange information about the distribution protocol itself, including the information taken from the Filter Modules[2], hence the name "Handshaking Protocol".

It is important to note that it is not the role of the Handshaking Protocol to define how the connections are identified, both internally and in the configuration file. This is required, as many modules require to "know" what the connections are, without forcing them to "know" how the Hanshaking Protocol works.

Input/Output for the Handshaking Protocol Modules

Basically, the entire Input and Output is in the parsed configuration file[3]. The goal of the Hanshaking Protocol is to try to make connections as in the current configuration, and update the configuration to the current state of the connections (Open, Closed and On Hold[1]).

The current configuration also contains Memory Tags[3] for both Input and Output buffers for each connection. This might be needed for some Handshaking Protocols, though it is not the goal of the Handshaking Protocol to produce or filter data in those buffers.


So, what the connections consist of? To be able to properly identify and use a connection in ANet, here's what is needed.

All of these values will be inside the current configuration settings.

Implementation Notes


See the complete DTD for more information.

<!-- Handshaking Protocol. Contains a list of inital connections
(live connections once opened) -->
<!ELEMENT HandshakingProtocol (Connection)*>
<!ATTLIST HandshakingProtocol %moduleName; %args; %security;
          minConnections CDATA "0"
          maxConnections CDATA "-1">


About the references...

[1] Benad: "Core Modules". Local link.
[2] Benad: "Cluster Filter Modules". Local link.
[3] Benad: "Run-Time Wrapper". Local link.
[4] University of Southern California , "Transmission Control Protocol". External link.
[5] Semi-Official Gnutella Web Site. External link.
[6] Freenet Web Site. External link.

Last update for this document: September 30, 2001, at 18:42:46 PST