]> git.mxchange.org Git - hub-docs.git/commitdiff
Fixed all getSelfInstance
authorRoland Häder <roland@mxchange.org>
Sun, 22 Apr 2012 20:17:35 +0000 (20:17 +0000)
committerRoland Häder <roland@mxchange.org>
Sun, 22 Apr 2012 20:17:35 +0000 (20:17 +0000)
42 files changed:
.gitattributes
mindmaps/Generic Object Sharing Protocol.html
mindmaps/Generic Object Sharing Protocol.mm
mindmaps/Peer-State Rating.html [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/Mail.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/attach.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/back.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/bell.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/bookmark.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/button_cancel.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/button_ok.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/clanbomber.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/desktop_new.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/flag.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/forward.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/full-1.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/full-2.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/full-3.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/full-4.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/full-5.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/full-6.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/full-7.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/gohome.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/help.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/idea.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/kaddressbook.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/knotify.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/korn.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/ksmiletris.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/licq.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/messagebox_warning.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/password.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/pencil.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/penguin.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/stop.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/wizard.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/icons/xmag.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/marktree.js [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/minus.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/plus.png [new file with mode: 0644]
mindmaps/Peer-State Rating.html_files/treestyles.css [new file with mode: 0644]
mindmaps/Peer-State Rating.mm [new file with mode: 0644]

index 65a87fadd69fc06f9674044432393fc0d26dea9f..9b4663bcc28c9484f445997b6ff34f3d79d180ab 100644 (file)
@@ -77,6 +77,45 @@ mindmaps/Generic[!!-~]Object[!!-~]Sharing[!!-~]Protocol.html_files/minus.png -te
 mindmaps/Generic[!!-~]Object[!!-~]Sharing[!!-~]Protocol.html_files/plus.png -text svneol=unset#image/png
 mindmaps/Generic[!!-~]Object[!!-~]Sharing[!!-~]Protocol.html_files/treestyles.css -text svneol=unset#text/css
 mindmaps/Generic[!!-~]Object[!!-~]Sharing[!!-~]Protocol.mm -text
+mindmaps/Peer-State[!!-~]Rating.html svneol=native#text/html
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/Mail.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/attach.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/back.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/bell.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/bookmark.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/button_cancel.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/button_ok.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/clanbomber.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/desktop_new.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/flag.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/forward.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/full-1.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/full-2.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/full-3.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/full-4.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/full-5.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/full-6.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/full-7.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/gohome.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/help.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/idea.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/kaddressbook.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/knotify.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/korn.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/ksmiletris.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/licq.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/messagebox_warning.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/password.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/pencil.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/penguin.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/stop.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/wizard.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/icons/xmag.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/marktree.js svneol=native#text/javascript
+mindmaps/Peer-State[!!-~]Rating.html_files/minus.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/plus.png -text svneol=unset#image/png
+mindmaps/Peer-State[!!-~]Rating.html_files/treestyles.css -text
+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
index ac81166e1ff2b7df13cc78d24afaa870e9c9c32a..af9e8f876f17ff5e7cef33aa3fe7a94827f44a01 100644 (file)
@@ -1,3 +1,3 @@
 <?xml version="1.0" encoding="iso-8859-1"?><?xml-stylesheet href="treestyles.css" type="text/css"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-<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:167%;font-weight:bold;">Generic Object-Sharing Protocol</span><ul class="subexp"><li class="exp" style="" id="FMFreemind_Link_1660540085FM"><span style="font-size:133%;font-weight:bold;">Node Identification</span><ul class="sub"><li class="col" style="" id="FMFreemind_Link_780558731FM"><span style="">Every node generates an id string by random</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1498010716FM"><span style="">This is the node id (node 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 node'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="">Node'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 nodes</span></li><li class="col" style="" id="FMFreemind_Link_1633651159FM"><span style="">It stored together with the Node-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 Node-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 Node-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-nodes 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 node admin is verified</span></li><li class="basic" style="" id="FMFreemind_Link_1617168424FM"><span style="">Unregistered nodes does not receive negative votings</span></li></ul></li></ul></li><li class="col" style="" id="FMFreemind_Link_1339348415FM"><span style="font-size:133%;font-weight:bold;">Bootstrapping</span><ul class="subexp"><li class="exp" style="" id="FMFreemind_Link_453620216FM"><span style="">At least one, better 3 to 4, master-nodes are required</span><ul class="sub"><li class="basic" style="" id="FMFreemind_Link_265648584FM"><span style="">Aka. "Bootstrap-Nodes"</span></li><li class="basic" style="" id="FMFreemind_Link_1226811309FM"><span style="">They should be listed in the configuration for all applications</span></li><li class="basic" style="" id="FMFreemind_Link_979767017FM"><span style="">A comma-seperated list of node IPs with port numbers seperated by double-dot (:)</span></li></ul></li><li class="exp" style="" id="FMFreemind_Link_854375254FM"><span style="">Bootstrap-Nodes are working stand-alone</span><ul class="sub"><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="exp" style="" id="FMFreemind_Link_1225609057FM"><span style="">1. Node checks if there is a list of master nodes already stored</span><ul class="sub"><li class="basic" style="" id="FMFreemind_Link_712469416FM"><span style="">If so, it skips fetching the list of nodes step</span></li></ul></li><li class="exp" style="" id="FMFreemind_Link_934377424FM"><span style="">2. Node is announcing itself to the upper bootstrap hub(s)</span><ul class="sub"><li class="basic" style="" id="FMFreemind_Link_1716805408FM"><span style="">This should be done generic to keep things easy</span></li><li class="basic" style="" id="FMFreemind_Link_1472603257FM"><span style="">Recommended is maybe an XML with all neccessary data</span></li><li class="col" style="" id="FMFreemind_Link_207316718FM"><span style="">The session id will not be included here</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_772369973FM"><span style="">A bootstrap node will never try to connect clients with nodes</span></li><li class="basic" style="" id="FMFreemind_Link_1528083000FM"><img src="Generic Object Sharing Protocol.html_files/icons/desktop_new.png" alt="desktop_new"/> <img src="Generic Object Sharing Protocol.html_files/icons/messagebox_warning.png" alt="messagebox_warning"/> <span style="">It should only "bootstrap" (tell the node where it should start sharing its objects)</span></li></ul></li></ul></li><li class="exp" style="" id="FMFreemind_Link_608191462FM"><span style="">3. Node is fetching a list of other nodes</span><ul class="sub"><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_823475561FM"><span style="">If a bootstrap node is full it forwards the node to an other bootstrap hub</span></li><li class="basic" style="" id="FMFreemind_Link_1371102915FM"><span style="">If that node is again full the node will be forwarded to a list node</span></li><li class="basic" style="" id="FMFreemind_Link_897238975FM"><span style="">If wether no free bootstrap nor list node is available the node waits some time and tries it again</span></li><li class="col" style="" id="FMFreemind_Link_453619955FM"><span style="">Hashes of node-lists distributed over the bootstrap and list nodes should match</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_1552507439FM"><span style="">This can be ensured by a DHT</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1112603271FM"><span style="">DHT = Distributed Hash Table</span></li><li class="basic" style="" id="FMFreemind_Link_123842120FM"><img src="Generic Object Sharing Protocol.html_files/icons/xmag.png" alt="xmag"/> <span style="">Which format?</span></li></ul></li></ul></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="">Node 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 nodes</span></li><li class="basic" style="" id="FMFreemind_Link_1134140787FM"><span style="">Replication of the node-list is required by all bootstrap-nodes</span></li></ul></li></ul></li><li class="exp" style="" id="FMFreemind_Link_210978828FM"><span style="">4. Node connects to gathered master nodes</span><ul class="sub"><li class="basic" style="" id="FMFreemind_Link_1492702329FM"><span style="">It again announces its object types to the master nodes</span></li><li class="basic" style="" id="FMFreemind_Link_447040624FM"><span style="">Again it provides the session id so the master node can map session id -&gt; node id</span></li></ul></li><li class="exp" style="" id="FMFreemind_Link_1052054603FM"><span style="">5. If all authorization steps are completed:</span><ul class="sub"><li class="col" style="" id="FMFreemind_Link_1721222063FM"><span style="">The node starts to accept client connections</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_501632661FM"><span style="">(It already listens to them but rejects them)</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_663261299FM"><span style="">Objects will now be shared with other nodes which accepts the same object types</span></li></ul></li></ul></li><li class="exp" style="" id="FM_FM"><span style="font-size:133%;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 nodes 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 nodes</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 node 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 node 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 node and active nodes</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 nodes</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_831929021FM"><span style="font-size:133%;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 node 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" nodes 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:133%;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 node-list as well</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_480673349FM"><span style="">Do also receive karma from nodes</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="exp" style="" id="FMFreemind_Link_1445979240FM"><span style="font-size:133%;font-weight:bold;">Client&lt;-&gt;Node Communication</span><ul class="sub"><li class="col" style="" id="FMFreemind_Link_374257888FM"><span style="">After a client has bootstrapped it announces all it's object types to the nodes</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1014689893FM"><span style="">Including acceptance of broadcasts, poll-mode and Ping-POST</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_730901168FM"><span style="">By this the nodes know clients and their accepted object types</span></li><li class="col" style="" id="FMFreemind_Link_1981646811FM"><span style="">Clients may download a node-list for a specific object type</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_376278255FM"><span style="">Distinct-List-Mode</span></li><li class="basic" style="" id="FMFreemind_Link_481362981FM"><span style="">After selecting a node the client can request a list of clients from that hub</span></li><li class="col" style="" id="FMFreemind_Link_1444901526FM"><span style="">From these clients the client can accept objects from and send to</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_423939808FM"><span style="">E.g. news by broadcast</span></li></ul></li></ul></li><li class="col" style="" id="FMFreemind_Link_619530506FM"><span style="">Clients may send "broadcast" objects</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_104270656FM"><span style="">Broadcast-Mode</span></li><li class="col" style="" id="FMFreemind_Link_187831566FM"><span style="">Must be allowed by nodes</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_929863047FM"><span style="">This consumes traffic</span></li><li class="basic" style="" id="FMFreemind_Link_421479503FM"><span style="">Acceptance of broadcasts is known to list-/master- and bootstrap-nodes</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_20289741FM"><span style="">A client sends its broadcast to the master-nodes</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_751901694FM"><span style="">They are distribute it to their fellow nodes</span></li><li class="basic" style="" id="FMFreemind_Link_908440118FM"><span style="">A node knows which client accepts broadcasts and "deposits" it for the client</span></li><li class="col" style="" id="FMFreemind_Link_1381761729FM"><span style="">Clients are requesting such broadcasts by poll-mode or are "pinged"</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_816499858FM"><span style="">In poll-mode the client asks on a regular basis at the node for new broadcasts</span></li><li class="col" style="" id="FMFreemind_Link_1452667491FM"><span style="">A Ping-POST is being sent by the node as a regular HTTP-POST request to the client</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_873242294FM"><span style="">This also happens on a regular basis</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_1845481591FM"><span style="">A node-admin may allow both types independly</span></li><li class="col" style="" id="FMFreemind_Link_1607423256FM"><span style="">If none is allowed the node acts as a "relay"</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_297001287FM"><span style="">And therefore it cannot accept clients with broadcast-functionality enabled</span></li></ul></li></ul></li></ul></li></ul></li><li class="col" style="" id="FMFreemind_Link_144167856FM"><span style="font-size:117%;font-weight:bold;">Client-Client Communication</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_1642758810FM"><span style="">May be done "anonymously" over the node or directly with an other client</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1507061819FM"><span style="">Communication of the node is done in poll-mode or by Ping-POST</span></li><li class="basic" style="" id="FMFreemind_Link_1390010744FM"><span style="">Direct client-client communication client "A" sends a Ping-POST directly to client "B"</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_1445364933FM"><img src="Generic Object Sharing Protocol.html_files/icons/xmag.png" alt="xmag"/> <img src="Generic Object Sharing Protocol.html_files/icons/desktop_new.png" alt="desktop_new"/> <span style="">Wrongly sent Ping-POSTs (e.g. the admin doesn't allow them) may be answered with a regular HTTP status '4XX'</span></li></ul></li></ul></li><li class="exp" style="" id="FMFreemind_Link_329480665FM"><span style="font-size:133%;font-weight:bold;">Usage of low-level protocols</span><ul class="sub"><li class="col" style="" id="FMFreemind_Link_679379315FM"><span style="">Already existing low-level protocols like TCP/IP and UDP should be used</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1616250831FM"><span style="">TCP should be used for "inter-communication"</span></li><li class="col" style="" id="FMFreemind_Link_898295556FM"><span style="">UDP should be used for "streaming" the objects to other nodes</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_401089184FM"><span style="">Parties are generating hashes of chunks for validation</span></li><li class="col" style="" id="FMFreemind_Link_947570234FM"><span style="">Chunks should only be created for very big objects</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_912553641FM"><img src="Generic Object Sharing Protocol.html_files/icons/xmag.png" alt="xmag"/> <img src="Generic Object Sharing Protocol.html_files/icons/messagebox_warning.png" alt="messagebox_warning"/> <span style="">Total object size is larger than X KByte</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_1011335691FM"><span style="">The sender creates hashes and adds them to the chunk</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_64829706FM"><span style="">The receivers validates them</span></li><li class="basic" style="" id="FMFreemind_Link_1875786790FM"><span style="">No serial numbers a-la TCP are generated</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_99186455FM"><span style="">The last chunk package contains both hashes</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_398290140FM"><span style="">Hash of itself and the final hash</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_1741640397FM"><span style="">If a hash fails to validate it is being collected</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1930312770FM"><span style="">After the final chunk was sent, failed chunks a re-requested</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_681298548FM"><span style="">This is retried X times per hash</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1530992232FM"><span style="">But always at the end of the whole transaction and all together</span></li><li class="col" style="" id="FMFreemind_Link_766714583FM"><span style="">If still some hashes failed to transfer</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1262238289FM"><span style="">The object got dropped or fully requested</span></li><li class="basic" style="" id="FMFreemind_Link_1316903827FM"><span style="">This should be configurable by the admin</span></li><li class="col" style="" id="FMFreemind_Link_525157850FM"><span style="">To do so, the final hash and object type is submitted to the sender</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1316680608FM"><img src="Generic Object Sharing Protocol.html_files/icons/attach.png" alt="attach"/> <span style="">"Restransmit-Message"</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_9873596FM"><span style="">The sender is now trying smaller chunks</span></li></ul></li></ul></li><li class="col" style="" id="FMFreemind_Link_507679569FM"><span style="">If all was successfully received</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_566458700FM"><span style="">The receivers sends a "done-message" to the sender with final hash and object type</span></li></ul></li></ul></li><li class="col" style="" id="FMFreemind_Link_602435860FM"><span style="">There is also a "real" streaming mode</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1387836906FM"><span style="">This is e.g. used for chat</span></li><li class="basic" style="" id="FMFreemind_Link_1268993772FM"><span style="">For this TCP/IP is used and no hashes are generated</span></li><li class="basic" style="" id="FMFreemind_Link_602177505FM"><span style="">Also no chunks are generated</span></li><li class="basic" style="" id="FMFreemind_Link_191938147FM"><span style="">Only in this mode "multi-casting" is possible</span></li></ul></li></ul></li></ul></li><li class="exp" style="" id="FMFreemind_Link_1372827895FM"><span style="font-size:133%;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 node got removed</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1795377892FM"><span style="">Other nodes report this to the master-node</span></li><li class="basic" style="" id="FMFreemind_Link_1595372369FM"><span style="">The master-node probes the failed node 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, nodes 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 node will be elected as new master-node</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_1473765417FM"><span style="">Doing so, all nodes are identifying the node 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 nodes</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 nodes</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 node 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 nodes notifies a some of it's fellow nodes that the bootstrap-node is back</span></li><li class="basic" style="" id="FMFreemind_Link_561336762FM"><span style="">The elected node becomes a regular node and notifies other nodes 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 node with only knowlege about the bootstrap-nodes may not be able to connect to the nodes</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><li class="exp" style="" id="FMFreemind_Link_1204819150FM"><span style="font-size:133%;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 nodes 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></ul></li></ul></div></body></html>
\ No newline at end of file
+<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:167%;font-weight:bold;">Generic Object-Sharing Protocol</span><ul class="subexp"><li class="exp" style="" id="FMFreemind_Link_1660540085FM"><span style="font-size:133%;font-weight:bold;">Node Identification</span><ul class="sub"><li class="col" style="" id="FMFreemind_Link_780558731FM"><span style="">Every node generates an id string by random</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1498010716FM"><span style="">This is the node id (node 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 node'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="">Node'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 nodes</span></li><li class="col" style="" id="FMFreemind_Link_1633651159FM"><span style="">It stored together with the Node-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 Node-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 Node-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-nodes 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 node admin is verified</span></li><li class="basic" style="" id="FMFreemind_Link_1617168424FM"><span style="">Unregistered nodes does not receive negative votings</span></li></ul></li></ul></li><li class="col" style="" id="FMFreemind_Link_1339348415FM"><span style="font-size:133%;font-weight:bold;">Bootstrapping</span><ul class="subexp"><li class="exp" style="" id="FMFreemind_Link_453620216FM"><span style="">At least one, better 3 to 4, master-nodes are required</span><ul class="sub"><li class="basic" style="" id="FMFreemind_Link_265648584FM"><span style="">Aka. "Bootstrap-Nodes"</span></li><li class="basic" style="" id="FMFreemind_Link_1226811309FM"><span style="">They should be listed in the configuration for all applications</span></li><li class="basic" style="" id="FMFreemind_Link_979767017FM"><span style="">A comma-seperated list of node IPs with port numbers seperated by double-dot (:)</span></li></ul></li><li class="exp" style="" id="FMFreemind_Link_854375254FM"><span style="">Bootstrap-Nodes are working stand-alone</span><ul class="sub"><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="exp" style="" id="FMFreemind_Link_1225609057FM"><span style="">1. Node checks if there is a list of master nodes already stored</span><ul class="sub"><li class="basic" style="" id="FMFreemind_Link_712469416FM"><span style="">If so, it skips fetching the list of nodes step</span></li></ul></li><li class="exp" style="" id="FMFreemind_Link_934377424FM"><span style="">2. Node is announcing itself to the upper bootstrap hub(s)</span><ul class="sub"><li class="basic" style="" id="FMFreemind_Link_1716805408FM"><span style="">This should be done generic to keep things easy</span></li><li class="basic" style="" id="FMFreemind_Link_1472603257FM"><span style="">Recommended is maybe an XML with all neccessary data</span></li><li class="col" style="" id="FMFreemind_Link_207316718FM"><span style="">The session id will not be included here</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_772369973FM"><span style="">A bootstrap node will never try to connect clients with nodes</span></li><li class="basic" style="" id="FMFreemind_Link_1528083000FM"><img src="Generic Object Sharing Protocol.html_files/icons/desktop_new.png" alt="desktop_new"/> <img src="Generic Object Sharing Protocol.html_files/icons/messagebox_warning.png" alt="messagebox_warning"/> <span style="">It should only "bootstrap" (tell the node where it should start sharing its objects)</span></li></ul></li></ul></li><li class="exp" style="" id="FMFreemind_Link_608191462FM"><span style="">3. Node is fetching a list of other nodes</span><ul class="sub"><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_823475561FM"><span style="">If a bootstrap node is full it forwards the node to an other bootstrap hub</span></li><li class="basic" style="" id="FMFreemind_Link_1371102915FM"><span style="">If that node is again full the node will be forwarded to a list node</span></li><li class="basic" style="" id="FMFreemind_Link_897238975FM"><span style="">If wether no free bootstrap nor list node is available the node waits some time and tries it again</span></li><li class="col" style="" id="FMFreemind_Link_453619955FM"><span style="">Hashes of node-lists distributed over the bootstrap and list nodes should match</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_1552507439FM"><span style="">This can be ensured by a DHT</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1112603271FM"><span style="">DHT = Distributed Hash Table</span></li><li class="basic" style="" id="FMFreemind_Link_123842120FM"><img src="Generic Object Sharing Protocol.html_files/icons/xmag.png" alt="xmag"/> <span style="">Which format?</span></li></ul></li></ul></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="">Node 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 nodes</span></li><li class="basic" style="" id="FMFreemind_Link_1134140787FM"><span style="">Replication of the node-list is required by all bootstrap-nodes</span></li></ul></li></ul></li><li class="exp" style="" id="FMFreemind_Link_210978828FM"><span style="">4. Node connects to gathered master nodes</span><ul class="sub"><li class="basic" style="" id="FMFreemind_Link_1492702329FM"><span style="">It again announces its object types to the master nodes</span></li><li class="basic" style="" id="FMFreemind_Link_447040624FM"><span style="">Again it provides the session id so the master node can map session id -&gt; node id</span></li></ul></li><li class="exp" style="" id="FMFreemind_Link_1052054603FM"><span style="">5. If all authorization steps are completed:</span><ul class="sub"><li class="col" style="" id="FMFreemind_Link_1721222063FM"><span style="">The node starts to accept client connections</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_501632661FM"><span style="">(It already listens to them but rejects them)</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_663261299FM"><span style="">Objects will now be shared with other nodes which accepts the same object types</span></li></ul></li></ul></li><li class="col" style="" id="FM_FM"><span style="font-size:133%;font-weight:bold;">Karma</span><ul class="subexp"><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="exp" style="" id="FMFreemind_Link_29494292FM"><span style="">Last activity in near past</span><ul class="sub"><li class="basic" style="" id="FMFreemind_Link_254202732FM"><span style="">Does not affect karma</span></li></ul></li><li class="exp" style="" id="FMFreemind_Link_210971136FM"><span style="">Returned pings</span><ul class="sub"><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="exp" style="" id="FMFreemind_Link_538248067FM"><span style="">Karma voting for other nodes is not to negative</span><ul class="sub"><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 nodes</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="exp" style="" id="FMFreemind_Link_1606666417FM"><span style="">Protocol version should not be to old</span><ul class="sub"><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 node 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="exp" style="" id="FMFreemind_Link_1260923814FM"><span style="">Provided object types by the peer hub</span><ul class="sub"><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 node 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="exp" style="" id="FMFreemind_Link_1158753702FM"><span style="">Correctly logging</span><ul class="sub"><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 node and active nodes</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 nodes</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><li class="col" style="" id="FMFreemind_Link_1439794757FM"><span style="">Karma influences peer state scoring and vise versa</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_667972974FM"><span style=""><a href="Peer-State Scoring.mm">What is peer state scoring?</a> <a href="Peer-State Scoring.mm"><img src="Generic Object Sharing Protocol.html_files/icons/Link.png" alt="" style="border-width:0"/></a></span></li></ul></li></ul></li><li class="exp" style="" id="FMFreemind_Link_831929021FM"><span style="font-size:133%;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 node 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" nodes 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:133%;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 node-list as well</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_480673349FM"><span style="">Do also receive karma from nodes</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="exp" style="" id="FMFreemind_Link_1445979240FM"><span style="font-size:133%;font-weight:bold;">Client&lt;-&gt;Node Communication</span><ul class="sub"><li class="col" style="" id="FMFreemind_Link_374257888FM"><span style="">After a client has bootstrapped it announces all it's object types to the nodes</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1014689893FM"><span style="">Including acceptance of broadcasts, poll-mode and Ping-POST</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_730901168FM"><span style="">By this the nodes know clients and their accepted object types</span></li><li class="col" style="" id="FMFreemind_Link_1981646811FM"><span style="">Clients may download a node-list for a specific object type</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_376278255FM"><span style="">Distinct-List-Mode</span></li><li class="basic" style="" id="FMFreemind_Link_481362981FM"><span style="">After selecting a node the client can request a list of clients from that hub</span></li><li class="col" style="" id="FMFreemind_Link_1444901526FM"><span style="">From these clients the client can accept objects from and send to</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_423939808FM"><span style="">E.g. news by broadcast</span></li></ul></li></ul></li><li class="col" style="" id="FMFreemind_Link_619530506FM"><span style="">Clients may send "broadcast" objects</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_104270656FM"><span style="">Broadcast-Mode</span></li><li class="col" style="" id="FMFreemind_Link_187831566FM"><span style="">Must be allowed by nodes</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_929863047FM"><span style="">This consumes traffic</span></li><li class="basic" style="" id="FMFreemind_Link_421479503FM"><span style="">Acceptance of broadcasts is known to list-/master- and bootstrap-nodes</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_20289741FM"><span style="">A client sends its broadcast to the master-nodes</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_751901694FM"><span style="">They are distribute it to their fellow nodes</span></li><li class="basic" style="" id="FMFreemind_Link_908440118FM"><span style="">A node knows which client accepts broadcasts and "deposits" it for the client</span></li><li class="col" style="" id="FMFreemind_Link_1381761729FM"><span style="">Clients are requesting such broadcasts by poll-mode or are "pinged"</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_816499858FM"><span style="">In poll-mode the client asks on a regular basis at the node for new broadcasts</span></li><li class="col" style="" id="FMFreemind_Link_1452667491FM"><span style="">A Ping-POST is being sent by the node as a regular HTTP-POST request to the client</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_873242294FM"><span style="">This also happens on a regular basis</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_1845481591FM"><span style="">A node-admin may allow both types independly</span></li><li class="col" style="" id="FMFreemind_Link_1607423256FM"><span style="">If none is allowed the node acts as a "relay"</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_297001287FM"><span style="">And therefore it cannot accept clients with broadcast-functionality enabled</span></li></ul></li></ul></li></ul></li></ul></li><li class="col" style="" id="FMFreemind_Link_144167856FM"><span style="font-size:117%;font-weight:bold;">Client-Client Communication</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_1642758810FM"><span style="">May be done "anonymously" over the node or directly with an other client</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1507061819FM"><span style="">Communication of the node is done in poll-mode or by Ping-POST</span></li><li class="basic" style="" id="FMFreemind_Link_1390010744FM"><span style="">Direct client-client communication client "A" sends a Ping-POST directly to client "B"</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_1445364933FM"><img src="Generic Object Sharing Protocol.html_files/icons/xmag.png" alt="xmag"/> <img src="Generic Object Sharing Protocol.html_files/icons/desktop_new.png" alt="desktop_new"/> <span style="">Wrongly sent Ping-POSTs (e.g. the admin doesn't allow them) may be answered with a regular HTTP status '4XX'</span></li></ul></li></ul></li><li class="exp" style="" id="FMFreemind_Link_329480665FM"><span style="font-size:133%;font-weight:bold;">Usage of low-level protocols</span><ul class="sub"><li class="col" style="" id="FMFreemind_Link_679379315FM"><span style="">Already existing low-level protocols like TCP/IP and UDP should be used</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1616250831FM"><span style="">TCP should be used for "inter-communication"</span></li><li class="col" style="" id="FMFreemind_Link_898295556FM"><span style="">UDP should be used for "streaming" the objects to other nodes</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_401089184FM"><span style="">Parties are generating hashes of chunks for validation</span></li><li class="col" style="" id="FMFreemind_Link_947570234FM"><span style="">Chunks should only be created for very big objects</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_912553641FM"><img src="Generic Object Sharing Protocol.html_files/icons/xmag.png" alt="xmag"/> <img src="Generic Object Sharing Protocol.html_files/icons/messagebox_warning.png" alt="messagebox_warning"/> <span style="">Total object size is larger than X KByte</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_1011335691FM"><span style="">The sender creates hashes and adds them to the chunk</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_64829706FM"><span style="">The receivers validates them</span></li><li class="basic" style="" id="FMFreemind_Link_1875786790FM"><span style="">No serial numbers a-la TCP are generated</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_99186455FM"><span style="">The last chunk package contains both hashes</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_398290140FM"><span style="">Hash of itself and the final hash</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_1741640397FM"><span style="">If a hash fails to validate it is being collected</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1930312770FM"><span style="">After the final chunk was sent, failed chunks a re-requested</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_681298548FM"><span style="">This is retried X times per hash</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1530992232FM"><span style="">But always at the end of the whole transaction and all together</span></li><li class="col" style="" id="FMFreemind_Link_766714583FM"><span style="">If still some hashes failed to transfer</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1262238289FM"><span style="">The object got dropped or fully requested</span></li><li class="basic" style="" id="FMFreemind_Link_1316903827FM"><span style="">This should be configurable by the admin</span></li><li class="col" style="" id="FMFreemind_Link_525157850FM"><span style="">To do so, the final hash and object type is submitted to the sender</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1316680608FM"><img src="Generic Object Sharing Protocol.html_files/icons/attach.png" alt="attach"/> <span style="">"Restransmit-Message"</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_9873596FM"><span style="">The sender is now trying smaller chunks</span></li></ul></li></ul></li><li class="col" style="" id="FMFreemind_Link_507679569FM"><span style="">If all was successfully received</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_566458700FM"><span style="">The receivers sends a "done-message" to the sender with final hash and object type</span></li></ul></li></ul></li><li class="col" style="" id="FMFreemind_Link_602435860FM"><span style="">There is also a "real" streaming mode</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1387836906FM"><span style="">This is e.g. used for chat</span></li><li class="basic" style="" id="FMFreemind_Link_1268993772FM"><span style="">For this TCP/IP is used and no hashes are generated</span></li><li class="basic" style="" id="FMFreemind_Link_602177505FM"><span style="">Also no chunks are generated</span></li><li class="basic" style="" id="FMFreemind_Link_191938147FM"><span style="">Only in this mode "multi-casting" is possible</span></li></ul></li></ul></li></ul></li><li class="col" style="" id="FMFreemind_Link_1372827895FM"><span style="font-size:133%;font-weight:bold;">Fault Tolerance / Reliability</span><ul class="subexp"><li class="exp" style="" id="FMFreemind_Link_28699698FM"><span style="">After X failed connection attempts a node got removed</span><ul class="sub"><li class="basic" style="" id="FMFreemind_Link_1795377892FM"><span style="">Other nodes report this to the master-node</span></li><li class="basic" style="" id="FMFreemind_Link_1595372369FM"><span style="">The master-node probes the failed node and removes it</span></li></ul></li><li class="exp" style="" id="FMFreemind_Link_468909888FM"><span style="">Failed list-node</span><ul class="sub"><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="exp" style="" id="FMFreemind_Link_1309357086FM"><span style="">Failed master-node</span><ul class="sub"><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, nodes 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 node will be elected as new master-node</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_1473765417FM"><span style="">Doing so, all nodes are identifying the node 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 nodes</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 nodes</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 node with most connections got elected</span></li></ul></li></ul></li><li class="exp" style="" id="FMFreemind_Link_694830716FM"><span style="">If one of the bootstrap-nodes is up</span><ul class="sub"><li class="basic" style="" id="FMFreemind_Link_1701914366FM"><span style="">The elected nodes notifies a some of it's fellow nodes that the bootstrap-node is back</span></li><li class="basic" style="" id="FMFreemind_Link_561336762FM"><span style="">The elected node becomes a regular node and notifies other nodes on connection attempts</span></li></ul></li><li class="exp" style="" id="FMFreemind_Link_1745751398FM"><span style="">Disadvantages:</span><ul class="sub"><li class="col" style="" id="FMFreemind_Link_1189063074FM"><span style="">A new node with only knowlege about the bootstrap-nodes may not be able to connect to the nodes</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><li class="exp" style="" id="FMFreemind_Link_1204819150FM"><span style="font-size:133%;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 nodes 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></ul></li></ul></div></body></html>
\ No newline at end of file
index 74782ef562b798c12dc176b3f1aef5ecddc32179..3e7f7c332b84858060b3ee6f923e4443439e0408 100644 (file)
 <node CREATED="1253895363495" ID="Freemind_Link_663261299" MODIFIED="1253895380188" TEXT="Objects will now be shared with other nodes which accepts the same object types"/>
 </node>
 </node>
-<node CREATED="1236122378771" FOLDED="true" ID="_" MODIFIED="1236899597333" POSITION="right" TEXT="Karma">
+<node CREATED="1236122378771" ID="_" MODIFIED="1236899597333" POSITION="right" TEXT="Karma">
 <font BOLD="true" NAME="Dialog" SIZE="16"/>
 <node CREATED="1236122492566" ID="Freemind_Link_1190748575" MODIFIED="1236122514559" TEXT="Karma is given for validating entries in the DHT">
-<node CREATED="1236122431646" ID="Freemind_Link_29494292" MODIFIED="1236122473199" TEXT="Last activity in near past">
+<node CREATED="1236122431646" FOLDED="true" ID="Freemind_Link_29494292" MODIFIED="1236122473199" TEXT="Last activity in near past">
 <node CREATED="1236122473708" ID="Freemind_Link_254202732" MODIFIED="1236122479111" TEXT="Does not affect karma"/>
 </node>
-<node CREATED="1236122544359" ID="Freemind_Link_210971136" MODIFIED="1236122548222" TEXT="Returned pings">
+<node CREATED="1236122544359" FOLDED="true" ID="Freemind_Link_210971136" MODIFIED="1236122548222" TEXT="Returned pings">
 <node CREATED="1236122549203" ID="Freemind_Link_1680521907" MODIFIED="1236122582927" TEXT="Amount of sent pings">
 <node CREATED="1236122583437" ID="Freemind_Link_689172908" MODIFIED="1236122605188" TEXT="If no reply it got dead-listed"/>
 </node>
 <node CREATED="1236122613591" ID="Freemind_Link_612939095" MODIFIED="1236122684314" TEXT="Failed pings reduce karma"/>
 <node CREATED="1236122659986" ID="Freemind_Link_45314722" MODIFIED="1236122681829" TEXT="Slow responses reduce karma"/>
 </node>
-<node CREATED="1236122692603" ID="Freemind_Link_538248067" MODIFIED="1236122712165" TEXT="Karma voting for other nodes is not to negative">
+<node CREATED="1236122692603" FOLDED="true" ID="Freemind_Link_538248067" MODIFIED="1236122712165" TEXT="Karma voting for other nodes is not to negative">
 <node CREATED="1236122713693" ID="Freemind_Link_511404921" MODIFIED="1236122728530" TEXT="Reduces manipulation chances">
 <node CREATED="1236122730091" ID="Freemind_Link_801930369" MODIFIED="1236122743908" TEXT="Prefer karma votes of trusted nodes"/>
 <node CREATED="1236122744853" ID="Freemind_Link_45612508" MODIFIED="1236122776006" TEXT="Negative karma votings for untrusted karma reduce own karma"/>
 </node>
 <node CREATED="1236122783733" ID="Freemind_Link_1507410448" MODIFIED="1236122798272" TEXT="To much &quot;spam packages&quot; reduce karma"/>
 <node CREATED="1236122819786" ID="Freemind_Link_993155795" MODIFIED="1236122831449" TEXT="Validated packages increase karma"/>
-<node CREATED="1236122841763" ID="Freemind_Link_1606666417" MODIFIED="1236122851076" TEXT="Protocol version should not be to old">
+<node CREATED="1236122841763" FOLDED="true" ID="Freemind_Link_1606666417" MODIFIED="1236122851076" TEXT="Protocol version should not be to old">
 <node CREATED="1236122853153" ID="Freemind_Link_1094995324" MODIFIED="1236122869980" TEXT="This affects karma only negativly"/>
 <node CREATED="1236122870509" ID="Freemind_Link_344926416" MODIFIED="1236122884569" TEXT="An up-to-date protocol does not increase karma"/>
 <node CREATED="1236122885070" ID="Freemind_Link_473648942" MODIFIED="1236122902587" TEXT="Does also serve as a &quot;spam protection&quot;"/>
 <node CREATED="1236122969588" ID="Freemind_Link_1255846244" MODIFIED="1236122973470" TEXT="Karma is reduced"/>
 </node>
 </node>
-<node CREATED="1236123002722" ID="Freemind_Link_1260923814" MODIFIED="1236123013764" TEXT="Provided object types by the peer hub">
+<node CREATED="1236123002722" FOLDED="true" ID="Freemind_Link_1260923814" MODIFIED="1236123013764" TEXT="Provided object types by the peer hub">
 <node CREATED="1236123015319" ID="Freemind_Link_1973981672" MODIFIED="1236123025287" TEXT="This affectes karma only negativly"/>
 <node CREATED="1236123026356" ID="Freemind_Link_936683200" MODIFIED="1236123040623" TEXT="New types must first be known by masters"/>
 <node CREATED="1236123075821" ID="Freemind_Link_965874760" MODIFIED="1236123087086" TEXT="This should be configurable:">
 </node>
 <node CREATED="1236123041207" ID="Freemind_Link_1318639621" MODIFIED="1236123073229" TEXT="Because of every node can be a master-mode censorship is really hard"/>
 </node>
-<node CREATED="1236123176016" ID="Freemind_Link_1158753702" MODIFIED="1236123192038" TEXT="Correctly logging">
+<node CREATED="1236123176016" FOLDED="true" ID="Freemind_Link_1158753702" MODIFIED="1236123192038" TEXT="Correctly logging">
 <node CREATED="1236123192506" ID="Freemind_Link_571936771" MODIFIED="1236123197543" TEXT="Does not affect karma"/>
 <node CREATED="1236123201477" ID="Freemind_Link_526838799" MODIFIED="1236123218064" TEXT="Logout must be done by master node and active nodes">
 <node CREATED="1236123218463" ID="Freemind_Link_961650790" MODIFIED="1236123236943" TEXT="&quot;Bye&quot; message">
 </node>
 </node>
 </node>
+<node CREATED="1323839786853" ID="Freemind_Link_1439794757" MODIFIED="1323839954380" TEXT="Karma influences peer state scoring and vise versa">
+<node CREATED="1323839876619" ID="Freemind_Link_667972974" LINK="Peer-State Scoring.mm" MODIFIED="1323840272834" TEXT="What is peer state scoring?"/>
+</node>
 </node>
 <node CREATED="1236819279117" FOLDED="true" ID="Freemind_Link_831929021" MODIFIED="1236899597332" POSITION="left" TEXT="Update Messages">
 <font BOLD="true" NAME="Dialog" SIZE="16"/>
 </node>
 </node>
 </node>
-<node CREATED="1236804847687" FOLDED="true" ID="Freemind_Link_1372827895" MODIFIED="1236899597302" POSITION="right" TEXT="Fault Tolerance / Reliability">
+<node CREATED="1236804847687" ID="Freemind_Link_1372827895" MODIFIED="1236899597302" POSITION="right" TEXT="Fault Tolerance / Reliability">
 <font BOLD="true" NAME="Dialog" SIZE="16"/>
-<node CREATED="1236805031745" ID="Freemind_Link_28699698" MODIFIED="1236805057203" TEXT="After X failed connection attempts a node got removed">
+<node CREATED="1236805031745" FOLDED="true" ID="Freemind_Link_28699698" MODIFIED="1236805057203" TEXT="After X failed connection attempts a node got removed">
 <node CREATED="1236805060886" ID="Freemind_Link_1795377892" MODIFIED="1236805073614" TEXT="Other nodes report this to the master-node"/>
 <node CREATED="1236805074337" ID="Freemind_Link_1595372369" MODIFIED="1236805094304" TEXT="The master-node probes the failed node and removes it"/>
 </node>
-<node CREATED="1236805095936" ID="Freemind_Link_468909888" MODIFIED="1236805105212" TEXT="Failed list-node">
+<node CREATED="1236805095936" FOLDED="true" ID="Freemind_Link_468909888" MODIFIED="1236805105212" TEXT="Failed list-node">
 <node CREATED="1236805111066" ID="Freemind_Link_192209809" MODIFIED="1236805126866" TEXT="Hubs are reporting it to the master-node"/>
 <node CREATED="1236805135129" ID="Freemind_Link_933570791" MODIFIED="1236805143745" TEXT="The master-node probes the failed list-node and removes it"/>
 </node>
-<node CREATED="1236805147958" ID="Freemind_Link_1309357086" MODIFIED="1236805152648" TEXT="Failed master-node">
+<node CREATED="1236805147958" FOLDED="true" ID="Freemind_Link_1309357086" MODIFIED="1236805152648" TEXT="Failed master-node">
 <node CREATED="1236805160627" ID="Freemind_Link_1228535079" MODIFIED="1236805192366" TEXT="List-nodes takeover the role of a master-node if no bootstrap-nodes are available">
 <node CREATED="1236805194058" ID="Freemind_Link_1324885722" MODIFIED="1236805230236" TEXT="This takeover should not be entirely and should be defined">
 <icon BUILTIN="messagebox_warning"/>
 <node CREATED="1236805519338" ID="Freemind_Link_515853064" MODIFIED="1236805539978" TEXT="If no election is happening the node with most connections got elected"/>
 </node>
 </node>
-<node CREATED="1236805556971" ID="Freemind_Link_694830716" MODIFIED="1236805567605" TEXT="If one of the bootstrap-nodes is up">
+<node CREATED="1236805556971" FOLDED="true" ID="Freemind_Link_694830716" MODIFIED="1236805567605" TEXT="If one of the bootstrap-nodes is up">
 <node CREATED="1236805568757" ID="Freemind_Link_1701914366" MODIFIED="1236805604922" TEXT="The elected nodes notifies a some of it&apos;s fellow nodes that the bootstrap-node is back"/>
 <node CREATED="1236805612004" ID="Freemind_Link_561336762" MODIFIED="1236805631225" TEXT="The elected node becomes a regular node and notifies other nodes on connection attempts"/>
 </node>
-<node CREATED="1236805649317" ID="Freemind_Link_1745751398" MODIFIED="1236805654363" TEXT="Disadvantages:">
+<node CREATED="1236805649317" FOLDED="true" ID="Freemind_Link_1745751398" MODIFIED="1236805654363" TEXT="Disadvantages:">
 <node CREATED="1236805655355" ID="Freemind_Link_1189063074" MODIFIED="1236805688061" TEXT="A new node with only knowlege about the bootstrap-nodes may not be able to connect to the nodes">
 <node CREATED="1236805691077" ID="Freemind_Link_1581407665" MODIFIED="1236805728068" TEXT="Additional bootstrap-nodes on other server and/or continent may help here"/>
 </node>
diff --git a/mindmaps/Peer-State Rating.html b/mindmaps/Peer-State Rating.html
new file mode 100644 (file)
index 0000000..8e65579
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="iso-8859-1"?><?xml-stylesheet href="treestyles.css" type="text/css"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xml:lang="fi" xmlns="http://www.w3.org/1999/xhtml"><head><title>Peer-State Rating</title><link rel="stylesheet" href="Peer-State Rating.html_files/treestyles.css" type="text/css"/><script type="text/javascript" src="Peer-State Rating.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_637047933FM"><span style="font-size:167%;font-weight:bold;">Peer-State Rating</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_390755501FM"><span style="font-size:133%;font-weight:bold;">Basic conceptional ideas</span><ul class="subexp"><li class="basic" style="" id="FM_FM"><span style="font-size:100%;">Is given by peers to each other: ...</span></li><li class="col" style="" id="FMFreemind_Link_1895657184FM"><span style="font-size:100%;font-weight:bold;">... for peer-ping</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_967295702FM"><span style="font-size:100%;">A peer-ping is not a simple ICMP ping</span></li><li class="basic" style="" id="FMFreemind_Link_1866965980FM"><span style="font-size:100%;">It is a special message that has to be replied by the other peer</span></li><li class="basic" style="" id="FMFreemind_Link_1366418753FM"><span style="font-size:100%;">A time out is checked on sender side</span></li><li class="basic" style="" id="FMFreemind_Link_984208749FM"><span style="font-size:100%;">There must be some kind of protection against ping-flooding</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_569273294FM"><span style="font-size:100%;font-weight:bold;">...for reported upload/download compared to measured</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_948865152FM"><span style="font-size:100%;font-style:italic;">See bandwidth measuring</span></li><li class="basic" style="" id="FMFreemind_Link_1355356073FM"><span style="font-size:100%;">Should limit spam nodes (wrong bandwidth reported)</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_1058841046FM"><span style="font-size:100%;font-weight:bold;">.. for following the "protocol directives"</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1309213686FM"><span style="font-size:100%;">Up-to-date nodes should always show a good behavior to others</span></li><li class="basic" style="" id="FMFreemind_Link_230465910FM"><span style="font-size:100%;">Spam nodes may try to break/exploit the protocol for their own purposes</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_1789401828FM"><span style="font-size:100%;font-weight:bold;">...for sending validated(/signed?) content</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_746501474FM"><span style="font-size:100%;">This can be checked by hashes</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_449062465FM"><img src="Peer-State Rating.html_files/icons/help.png" alt="help"/> <span style="font-size:100%;">Should TTHs be used?</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1202975110FM"><span style="">TTH=Tiger Tree Hashes</span></li><li class="basic" style="" id="FMFreemind_Link_705063871FM"><span style="">Or own implementation</span></li></ul></li></ul></li><li class="basic" style="" id="FMFreemind_Link_273976105FM"><img src="Peer-State Rating.html_files/icons/idea.png" alt="idea"/> <span style="font-size:100%;">... or digital "signatures"</span></li></ul></li><li class="basic" style="" id="FMFreemind_Link_1767611320FM"><img src="Peer-State Rating.html_files/icons/idea.png" alt="idea"/> <span style="">Always small positive rating for good/passed "checks"</span></li><li class="basic" style="" id="FMFreemind_Link_458709057FM"><img src="Peer-State Rating.html_files/icons/idea.png" alt="idea"/> <span style="">Always larger negative rating for bad/failed "checks"</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_975621733FM"><span style="font-size:133%;font-weight:bold;">Software design</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_929744992FM"><span style="font-size:100%;">Rating for: ...</span></li><li class="col" style="" id="FMFreemind_Link_1271441491FM"><span style="font-size:100%;font-weight:bold;">... peer-ping</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_716383596FM"><span style="">Is an XML message to be sent in not regular times to other nodes</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_1689439887FM"><span style="">Should contain a serial number</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1672713608FM"><span style="">To distinguish from already sent pings</span></li><li class="basic" style="" id="FMFreemind_Link_560209724FM"><span style="">The serial number is maybe not known to other peers</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_914780939FM"><span style="">Some kind of "signature"</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_205178352FM"><span style="">To combat abusive/harmful peers</span></li></ul></li></ul></li><li class="col" style="" id="FMFreemind_Link_729695919FM"><span style="">Is not the actual ping time (ICMP ping), it is more a "virtual ping"</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_91726916FM"><span style="">Users with a slow Internet connection may be affected</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_533413433FM"><span style="">Is also used to determine ...</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_1554488715FM"><span style="">... if a node is still alive</span><ul class="subexp"><li class="col" style="" id="FMFreemind_Link_734412318FM"><span style="">An IP address hint (dyndns hostname) may help here</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1299120895FM"><span style="">This relies on an external DNS server</span></li><li class="basic" style="" id="FMFreemind_Link_742674552FM"><span style="">If that server is down, the node must still be found</span></li></ul></li><li class="col" style="" id="FMFreemind_Link_387549555FM"><span style="">...or some kind of "PEX" (Peer EXchange) may help here?</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1980920494FM"><span style="">May cause other abusive peers to send spoofed PEX data</span></li><li class="basic" style="" id="FMFreemind_Link_1323121006FM"><span style="">This requires addintional handling (e.g. negative karma for spoofed PEX data)</span></li></ul></li></ul></li><li class="col" style="" id="FMFreemind_Link_1367005180FM"><span style="">... if the node is not busy</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1555296108FM"><span style="">Slow ping responses could mean this</span></li><li class="basic" style="" id="FMFreemind_Link_1118367153FM"><span style="">Then the node needs to be marked as "busy"</span></li><li class="basic" style="" id="FMFreemind_Link_608994984FM"><span style="">Sending more packages to this node would make it more busy (DDoS)</span></li></ul></li></ul></li><li class="col" style="" id="FMFreemind_Link_1235076667FM"><span style="">If excessive pings are sent they need to be dealed</span><ul class="subexp"><li class="basic" style="" id="FMFreemind_Link_1988177267FM"><span style="">By giving negative karma</span></li><li class="basic" style="" id="FMFreemind_Link_1917809635FM"><span style="">Blocking the harmful node</span></li></ul></li></ul></li><li class="basic" style="" id="FMFreemind_Link_1866854566FM"><span style="font-size:100%;font-weight:bold;">... comparison of reported/measured transfer rates</span></li><li class="basic" style="" id="FMFreemind_Link_419579265FM"><span style="font-size:100%;font-weight:bold;">... no bad behavior (communication protocol)</span></li><li class="basic" style="" id="FMFreemind_Link_450728748FM"><span style="font-size:100%;font-weight:bold;">... validated "content"</span></li></ul></li></ul></li></ul></div></body></html>
\ No newline at end of file
diff --git a/mindmaps/Peer-State Rating.html_files/icons/Mail.png b/mindmaps/Peer-State Rating.html_files/icons/Mail.png
new file mode 100644 (file)
index 0000000..beea00e
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/Mail.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/attach.png b/mindmaps/Peer-State Rating.html_files/icons/attach.png
new file mode 100644 (file)
index 0000000..b03a77e
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/attach.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/back.png b/mindmaps/Peer-State Rating.html_files/icons/back.png
new file mode 100644 (file)
index 0000000..5a86cd8
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/back.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/bell.png b/mindmaps/Peer-State Rating.html_files/icons/bell.png
new file mode 100644 (file)
index 0000000..8afab9d
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/bell.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/bookmark.png b/mindmaps/Peer-State Rating.html_files/icons/bookmark.png
new file mode 100644 (file)
index 0000000..67f1832
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/bookmark.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/button_cancel.png b/mindmaps/Peer-State Rating.html_files/icons/button_cancel.png
new file mode 100644 (file)
index 0000000..a9c624a
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/button_cancel.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/button_ok.png b/mindmaps/Peer-State Rating.html_files/icons/button_ok.png
new file mode 100644 (file)
index 0000000..9a817fd
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/button_ok.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/clanbomber.png b/mindmaps/Peer-State Rating.html_files/icons/clanbomber.png
new file mode 100644 (file)
index 0000000..16679ba
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/clanbomber.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/desktop_new.png b/mindmaps/Peer-State Rating.html_files/icons/desktop_new.png
new file mode 100644 (file)
index 0000000..366368f
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/desktop_new.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/flag.png b/mindmaps/Peer-State Rating.html_files/icons/flag.png
new file mode 100644 (file)
index 0000000..e9defd1
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/flag.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/forward.png b/mindmaps/Peer-State Rating.html_files/icons/forward.png
new file mode 100644 (file)
index 0000000..b80d28a
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/forward.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/full-1.png b/mindmaps/Peer-State Rating.html_files/icons/full-1.png
new file mode 100644 (file)
index 0000000..80a6c66
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/full-1.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/full-2.png b/mindmaps/Peer-State Rating.html_files/icons/full-2.png
new file mode 100644 (file)
index 0000000..bc26aef
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/full-2.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/full-3.png b/mindmaps/Peer-State Rating.html_files/icons/full-3.png
new file mode 100644 (file)
index 0000000..e419464
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/full-3.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/full-4.png b/mindmaps/Peer-State Rating.html_files/icons/full-4.png
new file mode 100644 (file)
index 0000000..d82ee2f
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/full-4.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/full-5.png b/mindmaps/Peer-State Rating.html_files/icons/full-5.png
new file mode 100644 (file)
index 0000000..2860401
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/full-5.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/full-6.png b/mindmaps/Peer-State Rating.html_files/icons/full-6.png
new file mode 100644 (file)
index 0000000..10ef02a
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/full-6.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/full-7.png b/mindmaps/Peer-State Rating.html_files/icons/full-7.png
new file mode 100644 (file)
index 0000000..e55f3ff
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/full-7.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/gohome.png b/mindmaps/Peer-State Rating.html_files/icons/gohome.png
new file mode 100644 (file)
index 0000000..17bf02f
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/gohome.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/help.png b/mindmaps/Peer-State Rating.html_files/icons/help.png
new file mode 100644 (file)
index 0000000..d6391a2
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/help.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/idea.png b/mindmaps/Peer-State Rating.html_files/icons/idea.png
new file mode 100644 (file)
index 0000000..8d18b02
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/idea.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/kaddressbook.png b/mindmaps/Peer-State Rating.html_files/icons/kaddressbook.png
new file mode 100644 (file)
index 0000000..8bfe4ae
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/kaddressbook.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/knotify.png b/mindmaps/Peer-State Rating.html_files/icons/knotify.png
new file mode 100644 (file)
index 0000000..0104e72
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/knotify.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/korn.png b/mindmaps/Peer-State Rating.html_files/icons/korn.png
new file mode 100644 (file)
index 0000000..a4e9107
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/korn.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/ksmiletris.png b/mindmaps/Peer-State Rating.html_files/icons/ksmiletris.png
new file mode 100644 (file)
index 0000000..b95f903
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/ksmiletris.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/licq.png b/mindmaps/Peer-State Rating.html_files/icons/licq.png
new file mode 100644 (file)
index 0000000..34f8cce
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/licq.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/messagebox_warning.png b/mindmaps/Peer-State Rating.html_files/icons/messagebox_warning.png
new file mode 100644 (file)
index 0000000..afc9c9c
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/messagebox_warning.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/password.png b/mindmaps/Peer-State Rating.html_files/icons/password.png
new file mode 100644 (file)
index 0000000..5e86bbb
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/password.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/pencil.png b/mindmaps/Peer-State Rating.html_files/icons/pencil.png
new file mode 100644 (file)
index 0000000..575dd32
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/pencil.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/penguin.png b/mindmaps/Peer-State Rating.html_files/icons/penguin.png
new file mode 100644 (file)
index 0000000..0f61ec5
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/penguin.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/stop.png b/mindmaps/Peer-State Rating.html_files/icons/stop.png
new file mode 100644 (file)
index 0000000..981c4cf
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/stop.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/wizard.png b/mindmaps/Peer-State Rating.html_files/icons/wizard.png
new file mode 100644 (file)
index 0000000..93a1d91
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/wizard.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/icons/xmag.png b/mindmaps/Peer-State Rating.html_files/icons/xmag.png
new file mode 100644 (file)
index 0000000..32a4a15
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/icons/xmag.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/marktree.js b/mindmaps/Peer-State Rating.html_files/marktree.js
new file mode 100644 (file)
index 0000000..aa31b4d
--- /dev/null
@@ -0,0 +1,475 @@
+/* MarkTree JavaScript code
+ * 
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ * 
+ * Miika Nurminen, 12.7.2004.
+ */
+
+/* cross-browser (tested with ie5, mozilla 1 and opera 5) keypress detection */
+function get_keycode(evt) {
+  // IE
+    code = document.layers ? evt.which
+           : document.all ? event.keyCode // event.keyCode!=evt.keyCode!
+           : evt.keyCode;
+
+  if (code==0) 
+    code=evt.which; // for NS
+  return code;
+}
+
+var lastnode=null;
+var listnodes = null;
+var list_index=1;
+var lastnodetype=''; // determines if node is a link, input or text;
+
+// up, left, down, right, keypress codes
+//ijkl
+//var keys = new Array(105,106,107,108);
+//num arrows
+//var keys = new Array(56,52,50,54);
+//wasd
+// var press2 = new Array(119,97,115,100);
+ var press = new Array(47,45,42,43);
+
+// keydown codes
+  //  var keys2=new Array(87,65,83,68);
+  var keys= new Array(38,37,40,39);
+
+  // keyset 1 = keydown, otherwise press
+function checkup(keyset,n) {
+  if (keyset==1) return (n==keys[0]);
+  return ((n==press[0]) /*|| (n==press2[0])*/)
+}
+
+function checkdn(keyset,n) {
+  if (keyset==1) return (n==keys[2]);
+  return ((n==press[2]) /*|| (n==press2[2])*/)
+}
+
+function checkl(keyset,n) {
+  if (keyset==1) return (n==keys[1]);
+  return ((n==press[1]) /*|| (n==press2[1])*/)
+}
+
+function checkr(keyset,n) {
+  if (keyset==1) return (n==keys[3]);
+  return ((n==press[3]) /*|| (n==press2[3])*/)
+}
+
+
+
+
+
+function is_exp(n) {
+  if (n==null) return false;
+  return ((n.className=='exp') || (n.className=='exp_active'));
+}
+
+function is_col(n) {
+  if (n==null) return false;
+  return ((n.className=='col') || (n.className=='col_active'));
+}
+
+function is_basic(n) {
+  if (n==null) return false;
+  return ((n.className=='basic') || (n.className=='basic_active'));
+}
+
+
+
+/* returns i>=0 if true */
+function is_active(node) {
+  if (node.className==null) return false
+  return node.className.indexOf('_active');
+}
+
+function toggle_class(node) {
+  if ((node==null) || (node.className==null)) return;
+  str=node.className;
+  result="";
+  i = str.indexOf('_active');
+  if (i>0)
+    result= str.substr(0,i);
+  else
+    result= str+"_active";
+  node.className=result; 
+  return node;
+}
+
+function activate(node) {
+  node.style.backgroundColor='#eeeeff';
+}
+
+function deactivate(node) {
+   node.style.backgroundColor='#ffffff';
+}
+
+function is_list_node(n) {
+  if (n==null) return false;
+  if (n.className==null) return false;
+  if ( (is_exp(n)) || 
+       (is_col(n)) ||
+       (is_basic(n)) )
+   return true; else return false;
+}
+
+
+function get_href(n) {
+  alist=n.attributes;
+  if (alist!=null) {
+    hr = alist.getNamedItem('href');
+    if (hr!=null) return hr.nodeValue;
+  }
+  if (n.childNodes.length==0) return '';
+  for (var i=0; i<n.childNodes.length; i++) {
+    s = get_href(n.childNodes[i]);
+    if (s!='') return s;
+  }
+  return '';
+}
+
+function get_link(n) {
+  if (n==null) return null;
+  if (n.style==null) return null;
+
+ // disabling uncontrolled recursion to prevent error messages on IE
+ // when trying to focus to invisible links (readonly mode)
+//    alert(n.nodeName+' '+n.className);
+  if ((n.nodeName=='UL') && (n.className=='sub')) return null;
+
+  if (n.nodeName=='A') return n;
+  if (n.childNodes.length==0) return null;
+  for (var i=0; i<n.childNodes.length; i++) {
+    s = get_link(n.childNodes[i]);
+    if (s!=null) return s;
+  }
+  return null;
+}
+
+function set_lastnode(n) {
+/*var d = new Date();
+var t_mil = d.getMilliseconds();*/
+// testattu nopeuksia explorerilla, ei merkittäviä eroja
+  if (lastnode==n) return; 
+/*  deactivate(lastnode)
+  lastnode=n;
+  activate(lastnode);*/
+
+  if (is_active(lastnode)>=0)
+    toggle_class(lastnode);
+  lastnode=n;
+  if (!(is_active(lastnode)>=0))
+    toggle_class(lastnode);
+
+
+/*var d2 = new Date();
+var t_mil2 = d2.getMilliseconds();
+  window.alert(t_mil2-t_mil);*/
+}
+
+function next_list_node() {
+  tempIndex = list_index;
+  while (tempIndex<listnodes.length-1) {
+    tempIndex++;
+    var x = listnodes[tempIndex];
+    if (is_list_node(x)) {
+      list_index=tempIndex;
+      return;
+    }
+  }
+}
+
+function prev_list_node() {
+  tempIndex = list_index;
+  while (tempIndex>0) {
+    tempIndex--;
+    var x = listnodes[tempIndex];
+    if (is_list_node(x)) {
+      list_index=tempIndex;
+      return;
+    }
+  }
+}
+
+
+
+function getsub (li) {
+  if (li.childNodes.length==0) return null;
+  for (var c = 0; c < li.childNodes.length; c++)
+    if ( (li.childNodes[c].className == 'sub') || (li.childNodes[c].className == 'subexp') ) 
+      return li.childNodes[c];
+}
+
+function find_listnode_recursive (li) {
+  if (is_list_node(li)) return li; 
+  if (li.childNodes.length==0) return null;
+  result=null;
+  for (var c = 0; c < li.childNodes.length; c++) {
+    result=find_listnode_recursive(li.childNodes[c]);
+    if (result!=null) return result;
+  }
+  return null;
+}
+
+function next_child_listnode(li) {
+  var result=null;
+  for (var i=0; i<li.childNodes.length; i++) {
+    result=find_listnode_recursive(li.childNodes[i]);
+    if (result!=null) return result;
+  }
+  return null;  
+}
+
+function next_actual_sibling_listnode(li) {
+  if (li==null) return null;
+  var temp=li;
+  while (1) { 
+    var n = temp.nextSibling;
+    if (n==null) {
+      n=parent_listnode(temp);
+      return next_actual_sibling_listnode(n);
+    }
+    if (is_list_node(n)) return n;
+    temp=n;
+  }
+}
+
+function next_sibling_listnode(li) {
+if (li==null) return null; 
+ var result=null;
+  var temp=li;
+  if (is_col(temp)) return next_child_listnode(temp);
+  while (1) { 
+    var n = temp.nextSibling;
+    if (n==null) {
+      n=parent_listnode(temp);
+      return next_actual_sibling_listnode(n);
+    }
+    if (is_list_node(n)) return n;
+    temp=n;
+  }
+}
+
+function last_sibling_listnode(li) {
+  if (li==null) return null;
+  var temp=li;
+  var last=null;
+  while(1) {
+    var n = temp.nextSibling;
+    if (is_list_node(temp)) 
+      last = temp;
+    if (n==null) {
+      if (is_col(last)) return last_sibling_listnode(next_child_listnode(last));
+      else return last;
+    }
+    temp = n;
+  }
+}
+
+function prev_sibling_listnode(li) { 
+  if (li==null) return null;
+  var temp=li;
+  var n = null;
+  while (1) { 
+    n = temp.previousSibling;
+    if (n==null) {
+      return parent_listnode(li);
+    }
+    if (is_list_node(n)) {
+      if (is_col(n)) { 
+        return last_sibling_listnode(next_child_listnode(n));
+      }
+      else {
+        return n;
+      }
+    }
+    temp=n;
+  }
+}
+
+
+function parent_listnode(li) {
+  // added 12.7.2004 to prevent IE error when readonly mode==true
+  if (li==null) return null;
+  n=li;
+  while (1) {
+    n=n.parentNode;
+    if (n==null) return null;
+    if (is_list_node(n)) return n;
+  }
+}
+
+function getVisibleParents(id) {
+  var n = document.getElementById(id);
+  while(1) {
+    expand(n);
+    n = parent_listnode(n);
+    if (n==null) return;
+  }
+}
+
+function onClickHandler (evt) {
+if (lastnode==null) 
+{
+listnodes = document.getElementsByTagName('li');
+lastnode=listnodes[1];
+temp=listnodes[1];
+}
+
+
+  var target = evt ? evt.target : event.srcElement;
+  if (!is_list_node(target)) return;
+  toggle(target);
+  set_lastnode(target);
+}
+
+
+function expand(node) {
+    if (!is_exp(node)) return;
+    if (node.className=='exp_active') 
+      node.className='col_active';
+    else 
+        node.className='col';
+    setSubClass(node,'subexp');
+    //    getsub(node).className='subexp';
+}
+
+function collapse(node) {
+  if (!is_col(node)) return;
+  
+if (node.className=='col_active')
+    node.className='exp_active'
+  else 
+    node.className='exp';
+
+ setSubClass(node,'sub');
+//  getsub(node).className='sub';
+
+}
+
+function setSubClass(node,name) {
+  sub = getsub(node);
+  if (sub==null) return;
+  sub.className=name;  
+}
+
+function toggle(target) {
+  if (!is_list_node(target)) return;
+    if (is_col(target)) {
+      target.className='exp';
+      setSubClass(target,'sub');
+      //      getsub(target).className='sub';
+    }
+    else if (is_exp(target)) {
+      target.className='col';
+      setSubClass(target,'subexp');
+      //      getsub(target).className='subexp';
+    }
+}
+
+function expandAll(node) {
+    if (node.className=='exp') {
+        node.className='col';
+        setSubClass(node,'subexp');
+//        getsub(node).className='subexp';
+    }
+    var i;
+    if (node.childNodes!=null) 
+//    if (node.hasChildNodes()) 
+        for ( i = 0; i<node.childNodes.length; i++)
+            expandAll(node.childNodes[i]);
+}
+
+function collapseAll(node) {
+    if  (node.className=='col') {
+        node.className='exp';
+        setSubClass(node,'sub');
+//        getsub(node).className='sub';
+    }
+    var i;        
+    if (node.childNodes!=null) 
+// for opera   if (node.hasChildNodes()) 
+        for ( i = 0; i<node.childNodes.length; i++)
+            collapseAll(node.childNodes[i]);
+}
+
+
+
+function unFocus(node) {
+     // unfocuses potential link that is to be hidden (if a==null there is no link so it should not be blurred).
+     // tested with mozilla 1.7, 12.7.2004. /mn (
+      intemp=parent_listnode(node);  
+      a = get_link(intemp);     // added 6.4. to get keyboard working with
+      // moved before collapse to prevent an error message with IE when readonly==true      
+      if (a!=null) a.blur(); // netscape after collapsing a focused node
+      return intemp;
+}
+
+// mode: 0==keypress, 1==keyup
+function keyfunc(evt,mode) {
+ var c = get_keycode(evt);
+ var temp = null;
+ var a = null;
+
+  if (lastnode==null) {
+    listnodes = document.getElementsByTagName('li');
+    lastnode=listnodes[1];
+    temp=listnodes[1];
+  }
+
+  //window.alert(c);
+  if (checkup(mode,c)) { // i 
+   temp=prev_sibling_listnode(lastnode);
+  }
+  else if (checkdn(mode,c)) { // k
+    temp=next_sibling_listnode(lastnode);
+  }
+  else if (checkr(mode,c)) { // l
+    expand(lastnode);
+    //  temp=next_child_listnode(lastnode);
+    // if (temp==null) {
+      a = get_link(lastnode);
+        if (a!=null) a.focus(); else self.focus(); 
+      //}
+  }
+  else if (checkl(mode,c)) { // j
+    if (is_col(lastnode)) {
+      unFocus(lastnode);
+      collapse(lastnode);
+    }
+    else {
+      temp=unFocus(lastnode);
+      collapse(temp);
+    }
+   //    if (temp==null) lastnode.focus(); // forces focus to correct div (try mozilla typesearch) (doesn't seem to work -mn/6.4.2004)
+  }
+  else return;
+  if (temp!=null) set_lastnode(temp);
+
+  // alert('pressed ' + String.fromCharCode(c) + '(' + c + ')');
+  return true;
+}
+
+
+function keytest (evt) {
+  return keyfunc(evt,1);
+};
+
+
+function presstest (evt) {
+  return keyfunc(evt,0);
+};
+
+
+  document.onclick = onClickHandler;
+  document.onkeypress = presstest;
+  document.onkeyup = keytest;
diff --git a/mindmaps/Peer-State Rating.html_files/minus.png b/mindmaps/Peer-State Rating.html_files/minus.png
new file mode 100644 (file)
index 0000000..4956850
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/minus.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/plus.png b/mindmaps/Peer-State Rating.html_files/plus.png
new file mode 100644 (file)
index 0000000..e09ee95
Binary files /dev/null and b/mindmaps/Peer-State Rating.html_files/plus.png differ
diff --git a/mindmaps/Peer-State Rating.html_files/treestyles.css b/mindmaps/Peer-State Rating.html_files/treestyles.css
new file mode 100644 (file)
index 0000000..aecb6e1
--- /dev/null
@@ -0,0 +1,161 @@
+\r
+body {\r
+       background-color: #eeeeee;\r
+       color: #000000;\r
+       font-family:sans-serif;\r
+}\r
+\r
+:link { color: #0000ff; text-decoration:none;}\r
+:visited { color: #6666ff; text-decoration:none; }\r
+a:active { color: #0000ff; text-decoration:none;}\r
+a:hover {color: #0000ff; text-decoration:underline; }\r
+\r
+div.basetext {\r
+    background-color:#ffffff;\r
+        margin-top:11px;\r
+        margin-bottom:11px;\r
+       margin-left:1%;\r
+       margin-right:1%;\r
+       padding-top:11px;\r
+       padding-left:11px;\r
+       padding-right:11px;\r
+       padding-bottom:11px;\r
+       text-align:left;\r
+       font-weight:normal;\r
+  border-width:thin;\r
+  border-style:solid;\r
+  border-color:#dddddd;\r
+}\r
+\r
+div.basetop {\r
+  position: fixed;\r
+  width:auto;\r
+  height:auto;\r
+  right:0em;\r
+  top:0em;\r
+  left:auto; \r
+  top:0;\r
+    background-color:#ffffff;\r
+        margin-top:0;\r
+        margin-bottom:0;\r
+       margin-left:1%;\r
+       margin-right:1%;\r
+       padding-top:2px;\r
+       padding-left:11px;\r
+       padding-right:11px;\r
+       padding-bottom:2px;\r
+       text-align:left;\r
+       font-weight:normal;\r
+text-align:right;\r
+  border-width:thin;\r
+  border-style:solid;\r
+  border-color:#dddddd;\r
+}\r
+\r
+h1 {\r
+    text-align:center;\r
+}\r
+\r
+span.h2 {\r
+    font-family:sans-serif;\r
+    font-weight:bold;\r
+}\r
+\r
+div.year {\r
+       margin-right:2%;\r
+       background-color:#eeeeee;\r
+}\r
+\r
+div.form {\r
+}\r
+\r
+span.cpt {\r
+       color:#005500;\r
+       font-weight:bold;\r
+}\r
+\r
+span.cm {\r
+       color:#666666;\r
+}\r
+\r
+.fl {\r
+       color:#0000FF;  \r
+       font-style:italic;\r
+}\r
+\r
+ul {\r
+       margin-top:1px;\r
+        margin-bottom:1px;\r
+       margin-left:0px;\r
+       padding-left:3%;\r
+}\r
+\r
+li {\r
+       list-style:outside;\r
+  margin-top:10px;   \r
+  margin-bottom:10px;\r
+}\r
+\r
+ul li {\r
+       list-style:square;\r
+       font-family:sans-serif;\r
+       font-weight:normal;\r
+}\r
+\r
+li.basic {\r
+       list-style:square;\r
+       list-style-image:none;\r
+  margin-top:2px;\r
+  margin-bottom:2px;\r
+}\r
+\r
+span.links {\r
+}\r
+\r
+\r
+\r
+\r
+.sub { display: none; }\r
+.subexp {display: block; }\r
+.sub { display: none; } \r
+\r
+.subexp {display: block; } \r
+\r
+li.exp {\r
+  list-style-image:url("plus.png");\r
+  margin-top:10px;\r
+  margin-bottom:10px;\r
+  cursor:pointer;\r
+}\r
+\r
+li.col {\r
+  list-style-image:url("minus.png");\r
+  margin-top:10px;\r
+  margin-bottom:10px;\r
+  cursor:pointer;\r
+}\r
+\r
+li.exp_active {\r
+  list-style-image:url("plus.png");\r
+  margin-top:10px;  \r
+  margin-bottom:10px;\r
+  background-color:#eeeeff;\r
+  cursor:pointer;\r
+}\r
+\r
+li.col_active {\r
+  list-style-image:url("minus.png");\r
+  margin-top:10px;\r
+  margin-bottom:10px;\r
+  background-color:#eeeeff;\r
+  cursor:pointer; /* if not included, bullets are not shown right in moz*/\r
+}\r
+\r
+\r
+li.basic_active {\r
+  list-style:square;\r
+  list-style-image:none;\r
+  background-color:#eeeeff;\r
+  margin-top:2px;\r
+  margin-bottom:2px;\r
+}\r
diff --git a/mindmaps/Peer-State Rating.mm b/mindmaps/Peer-State Rating.mm
new file mode 100644 (file)
index 0000000..1fba1d8
--- /dev/null
@@ -0,0 +1,118 @@
+<map version="0.8.0">
+<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->
+<node CREATED="1323839984102" ID="Freemind_Link_637047933" MODIFIED="1324134090704" TEXT="Peer-State Rating">
+<font BOLD="true" NAME="Dialog" SIZE="20"/>
+<node CREATED="1324092368594" ID="Freemind_Link_390755501" MODIFIED="1324092407949" POSITION="right" TEXT="Basic conceptional ideas">
+<font BOLD="true" NAME="Dialog" SIZE="16"/>
+<node CREATED="1324092294940" ID="_" MODIFIED="1324123913288" TEXT="Is given by peers to each other: ...">
+<font NAME="Dialog" SIZE="12"/>
+</node>
+<node CREATED="1324092480671" ID="Freemind_Link_1895657184" MODIFIED="1324123715987" TEXT="... for peer-ping">
+<font BOLD="true" NAME="Dialog" SIZE="12"/>
+<node CREATED="1324092508064" ID="Freemind_Link_967295702" MODIFIED="1324123516473" TEXT="A peer-ping is not a simple ICMP ping">
+<font NAME="Dialog" SIZE="12"/>
+</node>
+<node CREATED="1324092529247" ID="Freemind_Link_1866965980" MODIFIED="1324123516472" TEXT="It is a special message that has to be replied by the other peer">
+<font NAME="Dialog" SIZE="12"/>
+</node>
+<node CREATED="1324092546805" ID="Freemind_Link_1366418753" MODIFIED="1324123516470" TEXT="A time out is checked on sender side">
+<font NAME="Dialog" SIZE="12"/>
+</node>
+<node CREATED="1324092565875" ID="Freemind_Link_984208749" MODIFIED="1324123516469" TEXT="There must be some kind of protection against ping-flooding">
+<font NAME="Dialog" SIZE="12"/>
+</node>
+</node>
+<node CREATED="1324092639056" ID="Freemind_Link_569273294" MODIFIED="1324123715986" TEXT="...for reported upload/download compared to measured">
+<font BOLD="true" NAME="Dialog" SIZE="12"/>
+<node CREATED="1324092687580" ID="Freemind_Link_948865152" MODIFIED="1324123516467" TEXT="See bandwidth measuring">
+<font ITALIC="true" NAME="Dialog" SIZE="12"/>
+</node>
+<node CREATED="1324092896632" ID="Freemind_Link_1355356073" MODIFIED="1324123516466" TEXT="Should limit spam nodes (wrong bandwidth reported)">
+<font NAME="Dialog" SIZE="12"/>
+</node>
+</node>
+<node CREATED="1324092980215" ID="Freemind_Link_1058841046" MODIFIED="1324123715985" TEXT=".. for following the &quot;protocol directives&quot;">
+<font BOLD="true" NAME="Dialog" SIZE="12"/>
+<node CREATED="1324093002045" ID="Freemind_Link_1309213686" MODIFIED="1324123516463" TEXT="Up-to-date nodes should always show a good behavior to others">
+<font NAME="Dialog" SIZE="12"/>
+</node>
+<node CREATED="1324093023634" ID="Freemind_Link_230465910" MODIFIED="1324123516462" TEXT="Spam nodes may try to break/exploit the protocol for their own purposes">
+<font NAME="Dialog" SIZE="12"/>
+</node>
+</node>
+<node CREATED="1324123340209" ID="Freemind_Link_1789401828" MODIFIED="1324123715984" TEXT="...for sending validated(/signed?) content">
+<font BOLD="true" NAME="Dialog" SIZE="12"/>
+<node CREATED="1324123358404" ID="Freemind_Link_746501474" MODIFIED="1324123516459" TEXT="This can be checked by hashes">
+<font NAME="Dialog" SIZE="12"/>
+<node CREATED="1324123386248" ID="Freemind_Link_449062465" MODIFIED="1324123516457" TEXT="Should TTHs be used?">
+<font NAME="Dialog" SIZE="12"/>
+<icon BUILTIN="help"/>
+<node CREATED="1324124018428" ID="Freemind_Link_1202975110" MODIFIED="1324124025943" TEXT="TTH=Tiger Tree Hashes"/>
+<node CREATED="1324124026587" ID="Freemind_Link_705063871" MODIFIED="1324124034313" TEXT="Or own implementation"/>
+</node>
+</node>
+<node CREATED="1324123368683" ID="Freemind_Link_273976105" MODIFIED="1324124011021" TEXT="... or digital &quot;signatures&quot;">
+<font NAME="Dialog" SIZE="12"/>
+<icon BUILTIN="idea"/>
+</node>
+</node>
+<node CREATED="1324123932345" ID="Freemind_Link_1767611320" MODIFIED="1324134107102" TEXT="Always small positive rating for good/passed &quot;checks&quot;">
+<icon BUILTIN="idea"/>
+</node>
+<node CREATED="1324123969655" ID="Freemind_Link_458709057" MODIFIED="1324134115144" TEXT="Always larger negative rating for bad/failed &quot;checks&quot;">
+<icon BUILTIN="idea"/>
+</node>
+</node>
+<node CREATED="1324123504304" ID="Freemind_Link_975621733" MODIFIED="1324123538507" POSITION="left" TEXT="Software design">
+<font BOLD="true" NAME="Dialog" SIZE="16"/>
+<node CREATED="1324123691404" ID="Freemind_Link_929744992" MODIFIED="1324134128018" TEXT="Rating for: ...">
+<font NAME="Dialog" SIZE="12"/>
+</node>
+<node CREATED="1324123740209" ID="Freemind_Link_1271441491" MODIFIED="1324123786704" TEXT="... peer-ping">
+<font BOLD="true" NAME="Dialog" SIZE="12"/>
+<node CREATED="1324554579587" ID="Freemind_Link_716383596" MODIFIED="1324554608690" TEXT="Is an XML message to be sent in not regular times to other nodes">
+<node CREATED="1324555252604" ID="Freemind_Link_1689439887" MODIFIED="1324555330736" TEXT="Should contain a serial number">
+<node CREATED="1324555331720" ID="Freemind_Link_1672713608" MODIFIED="1324555336039" TEXT="To distinguish from already sent pings"/>
+<node CREATED="1324555339866" ID="Freemind_Link_560209724" MODIFIED="1324555358226" TEXT="The serial number is maybe not known to other peers"/>
+</node>
+<node CREATED="1324555367580" ID="Freemind_Link_914780939" MODIFIED="1324555377025" TEXT="Some kind of &quot;signature&quot;">
+<node CREATED="1324555378532" ID="Freemind_Link_205178352" MODIFIED="1324555391258" TEXT="To combat abusive/harmful peers"/>
+</node>
+</node>
+<node CREATED="1324554843103" ID="Freemind_Link_729695919" MODIFIED="1324554865536" TEXT="Is not the actual ping time (ICMP ping), it is more a &quot;virtual ping&quot;">
+<node CREATED="1324555206882" ID="Freemind_Link_91726916" MODIFIED="1324555221320" TEXT="Users with a slow Internet connection may be affected"/>
+</node>
+<node CREATED="1324554877224" ID="Freemind_Link_533413433" MODIFIED="1324554896638" TEXT="Is also used to determine ...">
+<node CREATED="1324554898287" ID="Freemind_Link_1554488715" MODIFIED="1324554905943" TEXT="... if a node is still alive">
+<node CREATED="1324554977780" ID="Freemind_Link_734412318" MODIFIED="1324554993790" TEXT="An IP address hint (dyndns hostname) may help here">
+<node CREATED="1324555041199" ID="Freemind_Link_1299120895" MODIFIED="1324555042077" TEXT="This relies on an external DNS server"/>
+<node CREATED="1324555042582" ID="Freemind_Link_742674552" MODIFIED="1324555061524" TEXT="If that server is down, the node must still be found"/>
+</node>
+<node CREATED="1324555080154" ID="Freemind_Link_387549555" MODIFIED="1324555101714" TEXT="...or some kind of &quot;PEX&quot; (Peer EXchange) may help here?">
+<node CREATED="1324555132899" ID="Freemind_Link_1980920494" MODIFIED="1324555150224" TEXT="May cause other abusive peers to send spoofed PEX data"/>
+<node CREATED="1324555150938" ID="Freemind_Link_1323121006" MODIFIED="1324555179828" TEXT="This requires addintional handling (e.g. negative karma for spoofed PEX data)"/>
+</node>
+</node>
+<node CREATED="1324554906714" ID="Freemind_Link_1367005180" MODIFIED="1324554913822" TEXT="... if the node is not busy">
+<node CREATED="1324554928067" ID="Freemind_Link_1555296108" MODIFIED="1324554933963" TEXT="Slow ping responses could mean this"/>
+<node CREATED="1324554934537" ID="Freemind_Link_1118367153" MODIFIED="1324554948384" TEXT="Then the node needs to be marked as &quot;busy&quot;"/>
+<node CREATED="1324554949279" ID="Freemind_Link_608994984" MODIFIED="1324554969062" TEXT="Sending more packages to this node would make it more busy (DDoS)"/>
+</node>
+</node>
+<node CREATED="1324554609419" ID="Freemind_Link_1235076667" MODIFIED="1324554791349" TEXT="If excessive pings are sent they need to be dealed">
+<node CREATED="1324554792892" ID="Freemind_Link_1988177267" MODIFIED="1324554810739" TEXT="By giving negative karma"/>
+<node CREATED="1324554811216" ID="Freemind_Link_1917809635" MODIFIED="1324554824798" TEXT="Blocking the harmful node"/>
+</node>
+</node>
+<node CREATED="1324123750516" ID="Freemind_Link_1866854566" MODIFIED="1324123786702" TEXT="... comparison of reported/measured transfer rates">
+<font BOLD="true" NAME="Dialog" SIZE="12"/>
+</node>
+<node CREATED="1324123798416" ID="Freemind_Link_419579265" MODIFIED="1324123848503" TEXT="... no bad behavior (communication protocol)">
+<font BOLD="true" NAME="SansSerif" SIZE="12"/>
+</node>
+<node CREATED="1324123851626" ID="Freemind_Link_450728748" MODIFIED="1324123868060" TEXT="... validated &quot;content&quot;">
+<font BOLD="true" NAME="SansSerif" SIZE="12"/>
+</node>
+</node>
+</node>
+</map>