]> git.mxchange.org Git - hub-docs.git/blob - mindmaps/Generic Object Sharing Protocol.html
MindMap continued and exported to XHTML
[hub-docs.git] / mindmaps / Generic Object Sharing Protocol.html
1 <?xml version="1.0" encoding="iso-8859-1"?><?xml-stylesheet href="treestyles.css" type="text/css"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3 <html xml:lang="fi" xmlns="http://www.w3.org/1999/xhtml"><head><title>Generic Object Sharing Protocol</title><link rel="stylesheet" href="Generic Object Sharing Protocol.html_files/treestyles.css" type="text/css"/><script type="text/javascript" src="Generic Object Sharing Protocol.html_files/marktree.js">  </script></head><body><div class="basetop"><a href="#" onclick="expandAll(document.getElementById('base'))">Expand</a> - <a href="#" onclick="collapseAll(document.getElementById('base'))">Collapse</a></div><div id="base" class="basetext"><ul><li class="col" style="" id="FMFreemind_Link_1069566441FM"><span style="font-size:150%;font-weight:bold;">Generic Object Sharing Protocol</span><ul class="subexp"><li class="exp" style="" id="FMFreemind_Link_1660540085FM"><span style="font-size:117%;font-weight:bold;">Hub Identification</span><ul class="sub"><li class="col" style="" id="FMFreemind_Link_780558731FM"><span style="">Every hub generates an id string by random</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1498010716FM"><span style="">This is the Hub-Id (Hub Identifier)</span></li><li class="basic" style="" id="FMFreemind_Link_458280781FM"><span style="">Only on first use</span></li><li class="basic" style="" id="FMFreemind_Link_698958541FM"><span style="">This should be globally unique</span></li><li class="basic" style="" id="FMFreemind_Link_1564511533FM"><span style="">It will be stored in hub's database for later reuse</span></li><li class="col" style="" id="FMFreemind_Link_982080681FM"><span style="">A hash is being generated of it</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_177707740FM"><span style="">Hashed data:</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1317863864FM"><span style="">Hub's IP number and hostname</span></li><li class="basic" style="" id="FMFreemind_Link_1030355543FM"><span style="">Some random characters</span></li></ul></li></ul></li><li class="basic" style="" id="FMFreemind_Link_1022876700FM"><span style="">This id does not change as long as the database is not purged</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_1712131488FM"><span style="">Per session another id is generated</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_439993942FM"><span style="">This is the SID (Session IDentifier)</span></li><li class="basic" style="" id="FMFreemind_Link_1215594894FM"><span style="">It is being distributed to the hubs</span></li><li class="col" style="" id="FMFreemind_Link_1633651159FM"><span style="">It stored together with the Hub-Id</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_651452439FM"><span style="">So other can validate bother together</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_789902518FM"><img src="Generic Object Sharing Protocol.html_files/icons/messagebox_warning.png" alt="messagebox_warning"/> <span style="">Logging should only enabled for debugging purposes</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_902328932FM"><span style="">Locking IPs or Hub-Ids on master-nodes is not planed</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_1592412776FM"><span style="">Censorship would be to very easy</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_423578439FM"><span style="">Government agencies or enterprise parties</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_84092519FM"><span style="">Censhorship makes no sence here</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_514458550FM"><span style="">It can very easy be bypassed:</span></li><li class="col" style="" id="FMFreemind_Link_1221678941FM"><span style="">Delete Hub-Id in database</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_904836052FM"><span style="">A new one got generated</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_1262635656FM"><span style="">Locked IP or port number can be bypassed by proxies</span></li><li class="col" style="" id="FMFreemind_Link_1619827292FM"><span style="">One or two master-hubs should listen on ports commonly unblocked by firewalls</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_709609072FM"><span style="">Like 80/443/110/25</span></li></ul></li></ul></li></ul></li><li class="col" style="" id="FMFreemind_Link_441713513FM"><span style="">Hubs can be optionally registered by master-nodes</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1200999421FM"><span style="">Increases karma because the hub admin is verified</span></li><li class="basic" style="" id="FMFreemind_Link_1617168424FM"><span style="">Unregistered hubs does not receive negative votings</span></li></ul></li></ul></li><li class="exp" style="" id="FMFreemind_Link_1339348415FM"><span style="font-size:117%;font-weight:bold;">Bootstrapping</span><ul class="sub"><li class="col" style="" id="FMFreemind_Link_453620216FM"><span style="">At least one, better 3 to 4, master-nodes are required</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_265648584FM"><span style="">Aka. "Bootstrap-Nodes"</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_854375254FM"><span style="">Bootstrap-Nodes are working stand-alone</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_882684293FM"><span style="">No central "Super-Node" is required</span></li><li class="basic" style="" id="FMFreemind_Link_1661888163FM"><span style="">Too much traffic would have to flow through it</span></li><li class="basic" style="" id="FMFreemind_Link_1121780060FM"><span style="">Attacks on the network by censorship are reduced</span></li><li class="basic" style="" id="FMFreemind_Link_924004535FM"><span style="">Traffic does not increase network-overall load</span></li><li class="col" style="" id="FMFreemind_Link_1573570415FM"><span style="">Small disadvantage:</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1018217993FM"><span style="">Hubs must register with ...</span></li><li class="basic" style="" id="FMFreemind_Link_665965725FM"><span style="">... more than one master-node ...</span></li><li class="basic" style="" id="FMFreemind_Link_1849172644FM"><span style="">.. or connect with each other</span></li></ul></li></ul></li><li class="col" style="" id="FMFreemind_Link_608191462FM"><span style="">Hub is fetching a list of other hubs</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_195277951FM"><span style="">They must have at least X matching object types</span></li><li class="basic" style="" id="FMFreemind_Link_453619955FM"><span style="">Hashes of hub-lists should match</span></li><li class="col" style="" id="FMFreemind_Link_574241054FM"><span style="">If to much are inconsistent:</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_1253336655FM"><span style="">No connect can happen</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1412643595FM"><span style="">Hub list is rejected</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_1181650485FM"><span style="">Or the bootstrap-nodes are working as regular hubs</span></li><li class="basic" style="" id="FMFreemind_Link_1134140787FM"><span style="">Replication of the hub-list is required by all bootstrap-nodes</span></li></ul></li></ul></li></ul></li><li class="exp" style="" id="FM_FM"><span style="font-size:117%;font-weight:bold;">Karma</span><ul class="sub"><li class="col" style="" id="FMFreemind_Link_1190748575FM"><span style="">Karma is given for validating entries in the DHT</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_29494292FM"><span style="">Last activity in near past</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_254202732FM"><span style="">Does not affect karma</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_210971136FM"><span style="">Returned pings</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_1680521907FM"><span style="">Amount of sent pings</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_689172908FM"><span style="">If no reply it got dead-listed</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_612939095FM"><span style="">Failed pings reduce karma</span></li><li class="basic" style="" id="FMFreemind_Link_45314722FM"><span style="">Slow responses reduce karma</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_538248067FM"><span style="">Karma voting for other hubs is not to negative</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_511404921FM"><span style="">Reduces manipulation chances</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_801930369FM"><span style="">Prefer karma votes of trusted hubs</span></li><li class="basic" style="" id="FMFreemind_Link_45612508FM"><span style="">Negative karma votings for untrusted karma reduce own karma</span></li></ul></li></ul></li><li class="basic" style="" id="FMFreemind_Link_1507410448FM"><span style="">To much "spam packages" reduce karma</span></li><li class="basic" style="" id="FMFreemind_Link_993155795FM"><span style="">Validated packages increase karma</span></li><li class="col" style="" id="FMFreemind_Link_1606666417FM"><span style="">Protocol version should not be to old</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1094995324FM"><span style="">This affects karma only negativly</span></li><li class="basic" style="" id="FMFreemind_Link_344926416FM"><span style="">An up-to-date protocol does not increase karma</span></li><li class="basic" style="" id="FMFreemind_Link_473648942FM"><span style="">Does also serve as a "spam protection"</span></li><li class="col" style="" id="FMFreemind_Link_594554525FM"><span style="">Received protocol version of hub is older than stored</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_174968672FM"><span style="">Karma is reduced</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_1682037492FM"><span style="">Received protocol version is much than from master-nodes</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1255846244FM"><span style="">Karma is reduced</span></li></ul></li></ul></li><li class="col" style="" id="FMFreemind_Link_1260923814FM"><span style="">Provided object types by the peer hub</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1973981672FM"><span style="">This affectes karma only negativly</span></li><li class="basic" style="" id="FMFreemind_Link_936683200FM"><span style="">New types must first be known by masters</span></li><li class="col" style="" id="FMFreemind_Link_965874760FM"><span style="">This should be configurable:</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1804987507FM"><span style="">Karma should be reduced...</span></li><li class="basic" style="" id="FMFreemind_Link_1719378455FM"><span style="">... or peer hub should be black-listed</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_1318639621FM"><span style="">Because of every node can be a master-mode censorship is really hard</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_1158753702FM"><span style="">Correctly logging</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_571936771FM"><span style="">Does not affect karma</span></li><li class="col" style="" id="FMFreemind_Link_526838799FM"><span style="">Logout must be done by master hub and active hubs</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_961650790FM"><img src="Generic Object Sharing Protocol.html_files/icons/idea.png" alt="idea"/> <span style="">"Bye" message</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_548852073FM"><span style="">Rotating of dynamic IPs should be considered</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_1811539187FM"><span style="">Must be registered by master-node</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_589306378FM"><span style="">ID is registered as "Dynamic IP"</span></li><li class="basic" style="" id="FMFreemind_Link_1377338623FM"><span style="">So connects are still possible</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_1985410220FM"><span style="">No negative votings by other hubs</span></li><li class="col" style="" id="FMFreemind_Link_289837552FM"><span style="">Current IP does spread good in network</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_962702337FM"><span style="">Query of the master-node only in doubt</span></li></ul></li></ul></li></ul></li></ul></li></ul></li><li class="exp" style="" id="FMFreemind_Link_1204819150FM"><span style="font-size:117%;font-weight:bold;">Object Types</span><ul class="sub"><li class="basic" style="" id="FMFreemind_Link_1961919735FM"><span style="">New object types are only addable by updating the software</span></li><li class="col" style="" id="FMFreemind_Link_188591190FM"><span style="">It also possible by 3rd-party</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_385578906FM"><span style="">Must be known by master/bootstrap-nodes</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_1667260565FM"><span style="">Outdated object types are marked "deprecated" for a longer time</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1936301650FM"><span style="">Master-nodes may accept or reject them</span></li><li class="basic" style="" id="FMFreemind_Link_505959038FM"><span style="">A "deprecation message" is always being sent</span></li><li class="basic" style="" id="FMFreemind_Link_1001362763FM"><span style="">A note of a required update can optionally be added</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_259217829FM"><span style="">After deprecation time they are treated as "unknown"</span></li><li class="col" style="" id="FMFreemind_Link_1228871005FM"><span style="">Other hubs should ask bootstrap-nodes</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_887331476FM"><span style="">This compensate errors made by master-nodes</span></li><li class="basic" style="" id="FMFreemind_Link_1450229897FM"><span style="">Wrongly deprecated object types by the master-node result in bad karma by the bootstrap-node</span></li></ul></li></ul></li><li class="exp" style="" id="FMFreemind_Link_831929021FM"><span style="font-size:117%;font-weight:bold;">Update Messages</span><ul class="sub"><li class="basic" style="" id="FMFreemind_Link_71881649FM"><span style="">Will only be broadcasted from bootstrap- to master- and list-nodes</span></li><li class="col" style="" id="FMFreemind_Link_774046685FM"><span style="">No hub will receive update messages due to heavy network load</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1204404067FM"><img src="Generic Object Sharing Protocol.html_files/icons/xmag.png" alt="xmag"/> <img src="Generic Object Sharing Protocol.html_files/icons/help.png" alt="help"/> <span style="">Maybe only "good" hubs should receive this?</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_1584525818FM"><span style="">Contains update notes and importance level</span></li></ul></li><li class="exp" style="" id="FMFreemind_Link_168475853FM"><span style="font-size:117%;font-weight:bold;">"Client" Connections</span><ul class="sub"><li class="basic" style="" id="FMFreemind_Link_1154203316FM"><img src="Generic Object Sharing Protocol.html_files/icons/bell.png" alt="bell"/> <span style="">Should be interpreted as "application software"</span></li><li class="col" style="" id="FMFreemind_Link_1741675827FM"><span style="">Clients should also generate a "client id"</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_518254369FM"><span style="">Both id and sid</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_815708604FM"><span style="">Will also connect first to bootstrap-nodes</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_934296740FM"><span style="">Ask for a hub-list as well</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_480673349FM"><span style="">Do also receive karma from hubs</span></li><li class="basic" style="" id="FMFreemind_Link_692612491FM"><span style="">Dynamic IPs are also accepted and therefore must be registered</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_1445979240FM"><span style="font-size:117%;font-weight:bold;">Client&lt;-&gt;Hub Communication</span></li><li class="exp" style="" id="FMFreemind_Link_1372827895FM"><span style="font-size:117%;font-weight:bold;">Fault Tolerance / Reliability</span><ul class="sub"><li class="col" style="" id="FMFreemind_Link_28699698FM"><span style="">After X failed connection attempts a hub got removed</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1795377892FM"><span style="">Other hubs report this to the master-node</span></li><li class="basic" style="" id="FMFreemind_Link_1595372369FM"><span style="">The master-node probes the failed hub and removes it</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_468909888FM"><span style="">Failed list-node</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_192209809FM"><span style="">Hubs are reporting it to the master-node</span></li><li class="basic" style="" id="FMFreemind_Link_933570791FM"><span style="">The master-node probes the failed list-node and removes it</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_1309357086FM"><span style="">Failed master-node</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_1228535079FM"><span style="">List-nodes takeover the role of a master-node if no bootstrap-nodes are available</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1324885722FM"><img src="Generic Object Sharing Protocol.html_files/icons/messagebox_warning.png" alt="messagebox_warning"/> <img src="Generic Object Sharing Protocol.html_files/icons/desktop_new.png" alt="desktop_new"/> <span style="">This takeover should not be entirely and should be defined</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_489546245FM"><span style="">If there is no list-node, hubs look for an active master-node</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_496844314FM"><span style="">They report the failed master-node to it</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_1831877789FM"><span style="">If additionally no master-node is up, a hub will be elected as new master-node</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_1473765417FM"><span style="">Doing so, all hubs are identifying the hub with...</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_1849074808FM"><span style="">... the best karma</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1303674032FM"><span style="">This is known to many hubs</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_1087780155FM"><span style="">... most votings</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_585981486FM"><span style="">A "vote" is a positive karma</span></li><li class="basic" style="" id="FMFreemind_Link_616335445FM"><span style="">Also known to many hubs</span></li></ul></li></ul></li><li class="basic" style="" id="FMFreemind_Link_341438028FM"><span style="">The "election" should take place within a specific timeout</span></li><li class="basic" style="" id="FMFreemind_Link_515853064FM"><span style="">If no election is happening the hub with most connections got elected</span></li></ul></li></ul></li><li class="col" style="" id="FMFreemind_Link_694830716FM"><span style="">If one of the bootstrap-nodes is up</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1701914366FM"><span style="">The elected hubs notifies a some of it's fellow hubs that the bootstrap-node is back</span></li><li class="basic" style="" id="FMFreemind_Link_561336762FM"><span style="">The elected hub becomes a regular hub and notifies other hubs on connection attempts</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_1745751398FM"><span style="">Disadvantages:</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_1189063074FM"><span style="">A new hub with only knowlege about the bootstrap-nodes may not be able to connect to the hubs</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1581407665FM"><span style="">Additional bootstrap-nodes on other server and/or continent may help here</span></li></ul></li></ul></li></ul></li></ul></li></ul></div></body></html>