From: Roland Häder Date: Tue, 31 Jul 2012 18:04:01 +0000 (+0000) Subject: Cleared messages (they will return), added message layer design for bootstrapping X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=73fc3fc6bf42762772edfa7888df73761d36572d;p=hub-docs.git Cleared messages (they will return), added message layer design for bootstrapping --- diff --git a/.gitattributes b/.gitattributes index 9376b88..9b23fd2 100644 --- a/.gitattributes +++ b/.gitattributes @@ -159,4 +159,5 @@ mindmaps/Peer-State[!!-~]Rating.mm -text misc/possible_hub_states.txt -text svneol=unset#text/plain protocol-drafts/Generic[!!-~]Object[!!-~]Sharing[!!-~]Prototocol[!!-~]0.0.1.odt -text protocol-drafts/Generic[!!-~]Object[!!-~]Sharing[!!-~]Prototocol[!!-~]0.0.1.pdf -text +protocol-drafts/message-layer/bootstrapping.odg -text protocol-drafts/protocol-ideas.txt -text svneol=unset#text/plain diff --git a/misc/possible_hub_states.txt b/misc/possible_hub_states.txt index f8b29c2..9aec898 100644 --- a/misc/possible_hub_states.txt +++ b/misc/possible_hub_states.txt @@ -1,130 +1,58 @@ -Possible States For A Hub Connection -==================================== - -This is a brief summary of possible states a hub connection may be setted. -These ideas should later be implemented in a XML file with e.g. a StateXmlParser -class with a XmlFileReader as a data source. - -------------------------------------------------------------------------------- - Initial state | Reason of change | New state -------------------------------------------------------------------------------- - New peer | Appears as a simple connection | Connected - Connected | Has dropped the connection | Disconnected - Connected | Does not do anything within a timeout | Timed out - Connected | Tries to send some objects with auth enabled | Message "AUTH" - Disconnected | Is purged from the connection list | Removed - Timed out | Is being pinged | Pinged - Pinged | Does not response on a ping | No response - Pinged | Does reply slowly on a ping | Slowed down - Pinged | Does reply fast on a ping | - No response | Does still not response on X pings | Lost connection - No response | Does reply on a ping | Slowed down - Slowed down | Does not response on a ping | No response - Slowed down | Does still response slow on X extra pings | Karma lose - Slowed down | Does reply faster on a ping | - Lost connect. | Is maybe disconnected/crashed/etc. | Disconnected - Karma lose | Has lost some karma | - Add karma | Has gained some karma | -------------------------------------------------------------------------------- - Observed | Did not do any annormal activity within time | Removed from O-List - Observed | Is being observed for further annormal act. | - Removed O-L | Is being removed from observing for ann. ac. | -------------------------------------------------------------------------------- - | Does not response within timeout | Message "BANNED" - | Sends unexpected network packets | Message "PACKET" - | Sends or replies with unknown message | Message "UNKNOWN" - "PACKET" | Still sends unexpected network packets | Karma lose - "PACKET" | Resends valid network package | - "PACKET"+Kar. | Still sends unexpected network packets | Message "BANNED" - "PACKET"+Kar. | Resends valid network package | - "UNKNOWN" | Still sends/replies with unknown message | Karma lose - "UNKNOWN" | Still sends/replies with unknown message | Message "BANNED" - | Does not response within timeout | Pinged -------------------------------------------------------------------------------- - "WELCOME" | Tries to send objects with invalid target | Message "TARGET" - "WELCOME" | Tries to send objects with valid target | Message "ACCEPT-OBJECT" - "WELCOME" | Requests a list of hubs/clients f. inv. obj. | Message "OBJECT" - "WELCOME" | Requests a list of hubs/clients f. val. obj. | Message "LIST" - "WELCOME" | Sends a list of hubs/clients without offer | Message "OFFER-LIST" - "WELCOME" | Offers a list of all invalid objects | Message "ALL-OBJECT-LIST" - "WELCOME" | Offers a list with partly invalid objects | Message "PAR-OBJECT-LIST" - "WELCOME" | Offers a list of all valid objects | Message "ACCEPT-LIST" - "A-L" | Has send a different list of objects | Message "DIV-LIST" - "A-L" | Has send the same list of valid objects | Add karma - "A-O-L" | Still offers a list of all invalid objects | Karma lose - "A-O-L" | Reoffers a list of valid objects | Message "ACCEPT-LIST" - "A-O-L"+Karma | Still offers a list of all invalid objects | Message "BANNED" - "A-O-L"+Karma | Still offers a list of all invalid objects | Message "ACCEPT-LIST" - "A-O-L"+Karma | Reoffers a list of valid objects | Message "ACCEPT-LIST - "A-K" | The target rejects the object: "OBJECT" | Message "TARGET-OBJECT" - "A-K" | The target rejects the object: "BUSY" | Message "BUSY-OBJECT" - "A-O" | Tries to send an invalid object | Message "INVALID-OBJECT" - "A-O" | Tries to send a different but valid object | Message "DIV-OBJECT" - "A-O" | Sends the same object | Add karma - "A/P-T" | Still sends a list of all/partly invalid o. | Karma lose - "A/P-T"+Karma | Still sends a list of all/partly invalid o. | Message "BANNED" - "P-O-L" | Still offers a list of part. invalid objects | Karma lose - "P-O-L" | Resends a list of valid objects | Observe->Message "ACCEPT-LIST" - "P-O-L"+Karma | Still offers a list of part. invalid objects | Message "BANNED" - "P-O-L"+Karma | Resends a list of valid objects | Observe->Message "ACCEPT-LIST" - "I-O" | Still tries to send an invalid object | Karma lose - "I-O" | Resends a different invalid object | Message "DIV-OBJECT" - "I-O" | Resends the same valid object | Observed - "I-O"+Karma | Still tries to send an invalid object | Message "BANNED" - "I-O"+Karma | Resends the same valid object | Observed - "D-L" | Still sends a different list | Karma lose - "D-L" | Resends the same list | Observed - "D-L"+Karma | Still sends a different list | Message "BANNED" - "D-L"+Karma | Resends the same list | Observed - "D-O" | Still tries to send a different object | Karma lose - "D-O" | Resends the same valid object | Observed - "D-O"+Karma | Still tries to send a different object | Message "BANNED" - "D-O"+Karma | Resends the same valid object | Observed - "LIST" | The peer receives a list of hubs and clients | - "TARGET" | Still tries to send objects to invalid targ. | Karma lose - "TARGET" | Sends an object to target with weak karma | Message "ACCEPT-KARMA" - "TARGET" | Sends an object to valid target | Message "ACCEPT-OBJECT" - "TARGET"+Kar. | Still tries to send objects to invalid targ. | Message "TARGET-KARMA" - "T-K" | Still tries to send objects to invalid targ. | Message "BANNED" - "T-O" | Target does not accept the obj. but in list | Message "OBJECT-LIST" to target - "OBJECT" | Still requests a list f. invalid object | Karma lose - "OBJECT"+Kar. | Still requests a list f. invalid object | Message "OBJECT-KARMA - "O-K" | Still requests a list f. invalid object | Message "BANNED" - "O-L" | Target does still say "ACCEPT" for object | Karma lose - "O-L"+Karma | Target does still say "ACCEPT" for object | Message "BANNED" to target - "AUTH" | Still tries to send objects after X "AUTH" | Karma lose - "AUTH" | Sends valid authorization data | Observe->Message "WELCOME" - "AUTH"+Karma | Still tries to send objects after X "AUTH" | Message "BANNED" - "AUTH"+Karma | Sends invalid authorization data | Message "KICKED" - "AUTH"+Karma | Sends valid authorization data | Observe->Message "WELCOME" - "KICKED" | Still authorizes itself with invalid data | Message "BANNED" - "BANNED" | Is being banned on the node | Disconnected -------------------------------------------------------------------------------- - -A previous state is a non-fatal state that the peer was before the trouble +Possible node-internal states +============================= + +These states are the node's own states and not a state of any other node, e.g. +when you start the software, there is currently no state [instance], the +node's state is 'null' (also null from $stateInstance is initially null). + +---------------+------------------------------------------------------+------------- + Initial state | Reason of change | New state +---------------+------------------------------------------------------+------------- + Null | Node application has been initialized | Init + Init | Node has generated session id | Virgin + Virgin | Node has initialized all listeners, queues | Active + Active | Node has reached itself from outside (self-connect) | Reachable + Active | Node has attempted to announce itself to other nodes | Announced + Reachable | -"- -"- -"- -"- -"- | Announced +---------------+------------------------------------------------------+------------- + +Possible states for a regular-node connection +============================================= + +This is a brief summary of possible states a regular-node connection may be +setted. These ideas should later be implemented in a XML file with e.g. a +StateXmlParser class with a XmlFileReader as a data source. + +---------------+------------------------------------------------------+------------- + Initial state | Reason of change | New state +---------------+------------------------------------------------------+------------- +---------------+------------------------------------------------------+------------- + +A previous state is a non-fatal state that the node was before the "trouble" started. This state is stored along with a timestamp to watch the overall -performance of this hub reacting a troubleous peer. +performance of this node reacting a troubleous node. -Karma lose or added karma is being remembered in a lose/add-seperated summary for -"productive" and addionally as a full list for debugging purposes if the debug -mode is enabled. +Karma lose or added karma is being remembered in a lose/add-seperated summary +for "productive" and addionally as a full list for debugging purposes if the +debug mode is enabled. A "connection" should be interpreted as a incoming socket "connection". That means in this state table we threat UDP "connections" as same as TCP -connections to make things easier. Of, course the script will be the last one to -seperate between these very different protocols. +connections to make things easier. Of, course the script will be the last one +to seperate between these very different protocols. -A "ping" is a small message that should be responded by a pinged peer within a -time period else the ping would loose some karma. When a "ping" is issued it -should not be resend within a time period to not ping the peer to death. +A "ping" is a small message that should be responded by a pinged node within a +time period else the pinged node would loose some karma. When a "ping" is +issued it should not be resend within a time period to not ping the node to +death. -So pings are not issued while there is no trouble with the peer. This does -reduce network load for certain. Troubleous peers are being detected by the +So pings are not issued while there is no trouble with the node. This does +reduce network load for certain. Troubleous nodes are being detected by the above state changes (see Connected->Timed out for example). Some state changes are no *real* state changes. They are sometimes remarks -attached to the peer connection. A good example is the state 'Karma lose' which -a peer does never change to. +attached to the node connection. A good example is the state 'Karma lose' which +a node does never change to. A "list" should be interpreted as a DHT (Distributed Hash Table). All list and -object transferes are being validated by final hashes for high reliablity. +object transfers are being validated by final hashes for best reliablity. diff --git a/protocol-drafts/message-layer/bootstrapping.odg b/protocol-drafts/message-layer/bootstrapping.odg new file mode 100644 index 0000000..07b8eae Binary files /dev/null and b/protocol-drafts/message-layer/bootstrapping.odg differ diff --git a/protocol-drafts/protocol-ideas.txt b/protocol-drafts/protocol-ideas.txt index 3cc086b..b5262bd 100644 --- a/protocol-drafts/protocol-ideas.txt +++ b/protocol-drafts/protocol-ideas.txt @@ -27,8 +27,8 @@ Message-level: -------------- - a message is only identified by itself (the body) - the header does not contain any message-specific parts -- a message may contain extra data e.g. hash trees for larger object but no ibjects -- therefor its total size is limited in opposite to an object +- a message may contain extra data e.g. hash trees for larger object but no objects +- therefore its total size is limited in opposite to an object - extra data is seperated by a marker from the message - an end-marker closes the whole message