gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r6332 - GNUnet-docs/WWW


From: gnunet
Subject: [GNUnet-SVN] r6332 - GNUnet-docs/WWW
Date: Sat, 16 Feb 2008 17:16:22 -0700 (MST)

Author: grothoff
Date: 2008-02-16 17:16:22 -0700 (Sat, 16 Feb 2008)
New Revision: 6332

Removed:
   GNUnet-docs/WWW/protocol_cs_testbed.php3
Modified:
   GNUnet-docs/WWW/protocol_cs_index.inc
   GNUnet-docs/WWW/protocol_p2p.php3
   GNUnet-docs/WWW/protocol_p2p_afs.php3
   GNUnet-docs/WWW/protocol_p2p_core.php3
   GNUnet-docs/WWW/protocol_p2p_dht.php3
   GNUnet-docs/WWW/protocol_p2p_tracekit.php3
   GNUnet-docs/WWW/protocol_transport_tcp.php3
   GNUnet-docs/WWW/protocol_transport_udp.php3
Log:
documenting P2P protocol changes

Modified: GNUnet-docs/WWW/protocol_cs_index.inc
===================================================================
--- GNUnet-docs/WWW/protocol_cs_index.inc       2008-02-17 00:08:16 UTC (rev 
6331)
+++ GNUnet-docs/WWW/protocol_cs_index.inc       2008-02-17 00:16:22 UTC (rev 
6332)
@@ -7,5 +7,4 @@
 <!-- li><?php intlink("protocol_cs_chat.php3","chat"); ?></li -->
 <!-- li><?php intlink("protocol_cs_tbench.php3","tbench"); ?></li -->
 <!-- li><?php intlink("protocol_cs_tracekit.php3","tracekit"); ?></li -->
-<!-- li><?php intlink("protocol_cs_testbed.php3","testbed"); ?></li -->
 </ol>

Deleted: GNUnet-docs/WWW/protocol_cs_testbed.php3
===================================================================
--- GNUnet-docs/WWW/protocol_cs_testbed.php3    2008-02-17 00:08:16 UTC (rev 
6331)
+++ GNUnet-docs/WWW/protocol_cs_testbed.php3    2008-02-17 00:16:22 UTC (rev 
6332)
@@ -1,95 +0,0 @@
-<?php
-include("scripts.php3");
-$title = "GNUnet Documentation: Testbed Client-to-Node protocol";
-$description="GNUnet Documentation - the Testbed client-server protocol";
-include("html_header.php3");
-
-ANCHOR("CSprotocolTestbed");H3("GNUnet Protocol: client-to-node: testbed");
-BP();
-W("The testbed protocol encapsulates all of its messages within two global 
message types, <tt>CS_TESTBED_REQUEST</tt> and <tt>CS_TESTBED_REPLY</tt>.");
-W("Also note that the testbed module does not define peer-to-peer messages by 
itself.");
-W("The testbed protocol is used to instrument the peer-to-peer network, but 
does not use peer-to-peer protocols to achieve that.");
-W("The testbed setup itself is inherently client-server.");
-EP();
-
-ANCHOR("CS_TESTBED_REQUEST");H4("CS_TESTBED_REQUEST");
-BP();
-W("The CS_TESTBED_REQUEST message is used to request a specific action from 
the peer.");
-W("The action itself is specified in the <tt>message type</tt> field.");
-W("Depending on the message type, the testbed-request message is further 
parametrized by variable-size data.");
-W("Thus CS_TESTBED_REQUEST is inherently a variable-size message.");
-W("The general format of the CS_TESTBED_REQUEST message is:");
-EP();
-
-echo "<table class=\"border\" border=\"0\" cellspacing=\"0\" 
cellpadding=\"0\">\n";
-include("bittable.inc");
-rowSizeType("size","50");
-rowIntEntryNBO("message type");
-rowIntEntry("(size - 8) bytes of data");
-echo "</table>\n";
-
-BP();
-W("The possible parametrizations are (see also %s):",
-  extlink_("doxygen/html/testbed_8h.html", "testbed.h"));
-EP();
-echo "<ul>";
-$messages = ARRAY(1=>"ADD_PEER",
-                 2=>"DEL PEER",
-                 3=>"DEL_ALL_PEERS",
-                 4=>"GET_HELO",
-                 5=>"SET_TVALUE",
-                 6=>"GET_TVALUE",
-                 7=>"BLACKLIST",
-                 8=>"SET_IN_BW",
-                 9=>"SET_OUT_BW",
-                 10=>"SET_LOSS_RATE",
-                 11=>"LOAD_MODULE",
-                 12=>"UNLOAD_MODULE");
-foreach($messages as $i=>$b)
-  printf("<li><a href=\"#%s\">TESTBED_%s</a></li>",
-         $b, $b);
-echo "</ul>";
-
-ANCHOR("ADD_PEER"); H5("TESTBED_ADD_PEER");
-ANCHOR("DEL_PEER"); H5("TESTBED_DEL_PEER");
-ANCHOR("DEL_ALL_PEERS"); H5("TESTBED_DEL_ALL_PEERS");
-ANCHOR("GET_HELO"); H5("TESTBED_GET_HELO");
-ANCHOR("SET_TVALUE"); H5("TESTBED_SET_TVALUE");
-ANCHOR("GET_TVALUE"); H5("TESTBED_GET_TVALUE");
-ANCHOR("BLACKLIST"); H5("BLACKLIST");
-ANCHOR("SET_IN_BW"); H5("SET_IN_BW");
-ANCHOR("SET_OUT_BW"); H5("SET_OUT_BW");
-ANCHOR("SET_LOSS_RATE"); H5("SET_LOSS_RATE");
-ANCHOR("LOAD_MODULE"); H5("LOAD_MODULE");
-ANCHOR("UNLOAD_MODULE"); H5("UNLOAD_MODULE");
-
-ANCHOR("CS_TESTBED_REPLY");H4("CS_TESTBED_REPLY");
-BP();
-W("The CS_TESTBED_REPLY message is used as a response from the peer to some of 
the CS_TESTBED_REQUEST messages.");
-W("Specifics of the response are encoded in the <tt>message type</tt> field.");
-W("Depending on the message type, the testbed-reply message is further 
parametrized by variable-size data.");
-W("Overall, CS_TESTBED_REPLY is very similar to CS_TESTBED_REQUEST, only that 
it is send in the other direction.");
-W("The general format of the CS_TESTBED_REPLY message is:");
-EP();
-
-echo "<table class=\"border\" border=\"0\" cellspacing=\"0\" 
cellpadding=\"0\">\n";
-include("bittable.inc");
-rowSizeType("size","51");
-rowIntEntryNBO("message type");
-rowIntEntry("(size - 8) bytes of data");
-echo "</table>\n";
-
-BP();
-W("The possible parametrizations are:");
-EP();
-echo "<ul>";
-$messages = ARRAY(0=>"HELO_RESPONSE");
-foreach($messages as $i=>$b)
-  printf("<li><a href=\"#%s\">TESTBED_%s</a></li>",
-         $b, $b);
-echo "</ul>";
-
-ANCHOR("HELO_RESPONSE"); H5("TESTBED_HELO_RESPONSE");
-
-include("html_footer.php3");
-?>
\ No newline at end of file

Modified: GNUnet-docs/WWW/protocol_p2p.php3
===================================================================
--- GNUnet-docs/WWW/protocol_p2p.php3   2008-02-17 00:08:16 UTC (rev 6331)
+++ GNUnet-docs/WWW/protocol_p2p.php3   2008-02-17 00:16:22 UTC (rev 6332)
@@ -25,7 +25,7 @@
 W("Each of the messages in the plaintext packet has the following header:");
 EP();
 
-LAYOUT("MESSAGE_HEADER",
+LAYOUT("GNUNET_MessageHeader",
        F(ARRAY(N("message size", NBO_()) => 2,
               N("request type", NBO_()) => 2,
               N("(size - 4) bytes of data", "") => 0)));
@@ -37,6 +37,8 @@
 P();
 W("The following groups of peer-to-peer messages are documented:");
 include("protocol_p2p_index.inc");
+W("Note that peers are guaranteed to support the core protocols, but all 
others are optional.");
+W("Peers that do not support a protocol are expected to simply ignore those 
unsupported messages.");
 EP();
 
 include("html_footer.php3");

Modified: GNUnet-docs/WWW/protocol_p2p_afs.php3
===================================================================
--- GNUnet-docs/WWW/protocol_p2p_afs.php3       2008-02-17 00:08:16 UTC (rev 
6331)
+++ GNUnet-docs/WWW/protocol_p2p_afs.php3       2008-02-17 00:16:22 UTC (rev 
6332)
@@ -18,25 +18,16 @@
 W("GAP uses a time-to-live per query, which is a relative, possibly negative 
lifetime in milliseconds.");
 W("From this timestamp GAP computes an absolute time and compares it with its 
(finite) routing table.");
 W("If the query has less time to live than an existing query in the table, it 
is dropped.");
-W("Note that this is only an approximative description (lacking aspects like 
economics, queries with seen replies, multi-queries, and so on), for details 
see the %s.\n",
-  extlink_("doxygen/html/routing_8c.html#a31",
-           "code (routing.c, needsForwarding)"));
 P();
 
 W("Once GAP has decided that a query will be processed, it performs a local 
lookup.");
 W("Potential replies are sent back (with a random delay) if the bandwidth 
allocation code permits it.");
 W("The code then decides on forwarding the query (with decremented 
time-to-live) to a subset of the connected peers.");
-W("At most four peers are selected based on a biased random selection.");
+W("A number of peers is selected based on a biased random selection.");
 W("The selection is biased towards peers that have recently replied to other 
queries that had the same predecessor as the current query.");
 W("The exact code can be found %s.",
-  extlink_("doxygen/html/querymanager_8c.html#a21",
-           "here (querymanager.c, forwardQuery)"));
-W("Furthermore, queries may be forwarded to other peers if this is possible 
for free.");
-W("Sending queries for free typically happens when assembling a (uniform size) 
message has sufficient unused room for a query.");
-W("In that case, the bandwidth allocation code polls the %s for possible 
bandwidth-fillers.",
-  extlink_("doxygen/html/querymanager_8c.html#a16",
-          "query management code (querymanager.c, fillInQuery)"));     
-W("The query management system then selects suitable recent queries that have 
so far not been given to the peer in question.");
+  extlink_("doxygen/html/plan_8c.html",
+           "here (plan.c)"));
 P();
 
 W("If GAP receives a reply, it checks its routing table for a matching 
entry.");
@@ -44,8 +35,7 @@
 W("If there is a routing table entry, it is used to evaluate the economic 
importance of the reply, which again may or may not lead to replicating the 
reply in the local datastore.");
 W("Furthermore, the reply is scheduled for delivery to all peers (and local 
client processes) waiting for the response.");
 W("The response is delivered instantly to local clients and with a (random) 
delay to other peers.");
-W("The query stays in the routingtable since there is still a possibility for 
loops routing the query back to the peer.");
-W("Also some queries can yield multiple results.");
+W("The query stays in the routing table if there is a possibility that it may 
yield additional results.");
 W("In order to handle queries that can yield multiple results, each peer 
remembers which results have already been processed for a given query.");
 P();
 
@@ -74,14 +64,17 @@
 EP();
 
 LAYOUT("P2P_gap_query_MESSAGE",
-       F(ARRAY(N("message size", NBO_()) => 2,
+       F(ARRAY(N("message size (152 + (Q-1) * 64 + X)", NBO_()) => 2,
                V("request type", 16, NBO_()) => 2,
                N("ECRS block type", NBO_()) => 4,
                N("priority", NBO_()) => 4,
                N("time-to-live", NBO_()) => 4,
+               N("filter mutator", NBO_()) => 4,
+               N("number of queries (Q = 1 or 2)", NBO_()) => 4,
                N("return-to peer identity", NBO_()) => 64,
                N("query hash", NBO_()) => 64,
-               N("namespace (optional, depending on block type)", NBO_()) => 
64)));
+               N("namespace (optional, depending on block type, only if Q=2)", 
NBO_()) => 64,
+              N("Bloom filter", "") => 0)));
 BP();
 W("The priority is used to determine the value of the query.");
 W("Queries with lower priorities are more likely to be dropped.");
@@ -93,16 +86,21 @@
   extlink_("download/gap.ps", "GAP"));
 W("The type field and all hash codes after the first query are only passed 
along and used by the %s.",
   extlink_("download/ecrs.ps", "ECRS encoding"));
-W("The current protocol uses at most one additional hash code for the 
namespace, but the GAP code should allow for any number of additional hash 
codes to be passed around.");
+W("The current protocol uses at most one additional hash code for the 
namespace, but the GAP code should allow for any number of additional hash 
codes to be passed around (depending on the value of <tt>number of 
queries</tt>).");
+W("Finally, the query is optionally followed by a Bloom filter.");
+W("Its size can be determined from the size field of the request (and maybe 
zero).");
+W("The Bloom filter is used to communicate that certain results are not 
legal.");
+W("In order to determine if a result is not legal, the receiver is to hash the 
result, hash the <tt>filter mutator</tt>, XOR the two hash codes and test if 
the resulting value is matched by the Bloom filter.");
+W("If the Bloom filter matches the XOR'ed hash codes, the result is not 
acceptable.");
 
 EP();
 ANCHOR("RESULT");H4("RESULT");
 BP();
 W("A GAP RESULT message is a reply of a GNUnet node to a %s that was used to 
request a specific block of a file.",
   extlink_("#QUERY","QUERY"));
-W("The GAP RESULT message contains the first hash code from the respective 
QUERY (also called the primary key).");
-W("Note that the type is encoded by ECRS in the data portion.");
+W("Note that the type of the result is encoded by ECRS in the data portion (in 
the first four bytes).");
 W("The size of the data portion of the result depends on the query type and is 
again defined by ECRS.");
+W("The hash for checking against the bloomfilter of a query should be done 
only over the ECRS-encoded data.");
 W("See also the %s and the %s for the way data is transmitted in GNUnet.",
   ARRAY(extlink_("download/esed.ps","GNUnet encoding paper"),
        extlink_("encoding.php3","encoding page")));
@@ -110,7 +108,7 @@
 LAYOUT("P2P_gap_reply_MESSAGE",
        F(ARRAY(N("message size", NBO_()) => 2,
                V("request type", 17, NBO_()) => 2,
-               N("primary key", NBO_()) => 64,
+               N("expiration time (unsigned, relative, in ms)", NBO_()) => 8,
                N("ECRS-encoded data", NBO_()) => 0)));
 
 include("html_footer.php3");

Modified: GNUnet-docs/WWW/protocol_p2p_core.php3
===================================================================
--- GNUnet-docs/WWW/protocol_p2p_core.php3      2008-02-17 00:08:16 UTC (rev 
6331)
+++ GNUnet-docs/WWW/protocol_p2p_core.php3      2008-02-17 00:16:22 UTC (rev 
6332)
@@ -67,7 +67,7 @@
 W("The encryption, decryption and verification is done by the GNUnet core and 
neither the application nor the transport code need to worry about it.");
 W("The format of the header that is added by the GNUnet core to each message 
is the following:");
 EP();
-LAYOUT("P2P_PACKET_HEADER",
+LAYOUT("GNUNET_TransportPacket_HEADER",
        F(ARRAY(N("hash of the plaintext (SHA-512)", "") => 64,
                N("sequence number, 0 for plaintext", 11, NBO_()) => 4,
                N("timestamp (in seconds)", NBO_()) => 4,
@@ -92,7 +92,7 @@
 W("An SMTP transport implementation may choose to use an E-mail address.");
 W("GNUnet nodes can have multiple addresses and change addresses at any time, 
e.g. if the IP is dynamically assigned, like in DHCP or on dialup.");
 W("The %s is used to notify other hosts of a changed address.",
-  extlink_("doxygen/html/structHELLO__Message.html","HELLO message"));
+  extlink_("doxygen/html/structGNUNET__MessageHello.html","HELLO message"));
 P();
 W("<strong>Security considerations</strong>.");
 W("Malicious nodes could disrupt GNUnet by telling nodes fake addresses.");
@@ -116,7 +116,7 @@
   EXTLINK_("#SETKEY","SETKEY"));
 W("Once an encrypted channel was formed, nodes can exchange HELLOs via that 
channel.");
 EP();
-LAYOUT("P2P_hello_MESSAGE",
+LAYOUT("GNUNET_MessageHello",
        F(ARRAY(N("message size (600 + X)", NBO_()) => 2,
               V("request type", 0, NBO_()) => 2,
               N("RSA signature (signing data starting from sender id to end of 
HELLO)","") => 256,
@@ -162,15 +162,18 @@
 W("The format of an SETKEY message is the following:");
 EP();
 LAYOUT("P2P_setkey_MESSAGE",
-       F(ARRAY(N("message size (520 + X)", NBO_()) => 2,
+       F(ARRAY(N("message size (584 + X)", NBO_()) => 2,
               V("request type", 1, NBO_()) => 2,
               N("creation time (seconds)", NBO_()) => 4,
               N("RSA encrypted data", "") => 256,
+              N("Intended recipient", "") => 64,
               N("RSA signature", "") => 256,
               N("AES-512 encrypted PINGs and PONGs", "") => 0)));
 BP();
 W("Note that X is always either 72 or 144 bytes.");
 W("The RSA encrypted data decrypts with the hostkey of the receiver to an 
AES-256 session key.");
+W("Before decrypting, the recipient checks that its own identity matches the 
intended recpient field.");
+W("This helps avoid wasting CPU time if the sender is mistaken about the 
identity of the target.");
 W("Using the RSA signature as the initialization vector, this key can be used 
to decrypt the PINGs and PONGs (if present).");
 W("The sessionkey is also used for all future communication with the peer 
(until HANGUP or timeout).");
 W("If PINGs are transmitted, the peer should respond by sending an encrypted 
PONG.");
@@ -253,7 +256,7 @@
 W("Noise should only be used in encrypted traffic.");
 W("The format for noise is:");
 EP();
-LAYOUT("MESSAGE_HEADER",
+LAYOUT("GNUNET_MessageHeader",
        F(ARRAY(N("message size", NBO_()) => 2,
               V("request type", 6, NBO_()) => 2,
               N("(size - 4) random bytes", "") => 0)));

Modified: GNUnet-docs/WWW/protocol_p2p_dht.php3
===================================================================
--- GNUnet-docs/WWW/protocol_p2p_dht.php3       2008-02-17 00:08:16 UTC (rev 
6331)
+++ GNUnet-docs/WWW/protocol_p2p_dht.php3       2008-02-17 00:16:22 UTC (rev 
6332)
@@ -3,85 +3,73 @@
 $title = "GNUnet Documentation: The Peer-to-Peer Protocols: DHT";
 $description="The distributed hash table (DHT) protocol in GNUnet";
 include("html_header.php3");
-
 ANCHOR("protocol");H3("GNUnet Protocol: node-to-node: DHT");
-
 BP();
-W("DHT is a service that can be run by a subset of the GNUnet network.");
-W("In other words, not all GNUnet peers necessarily support this service.");
-W("The DHT service is implemented on top of the %s.",
-  intlink_("protocol_p2p_rpc.php3", "RPC service"));
-W("The DHT service provides an implementation of a distributed hash table.");
-W("It does provide anything that is directly useful to an end-user.");
-W("The DHT service is intended to be used by other GNUnet protocols that need 
this kind of primitive.");
-// link to 'hacking_dht' here (once that part is written).
 
-W("Since the DHT service uses RPC it does not define any new node-to-node 
network messages but rather defines five RPC functions:");
 EP();
-
-echo "<ul>\n";
-LIV(extlink_("#ping","DHT_ping"));
-LIV(extlink_("#findNode","DHT_findNode"));
-LIV(extlink_("#findValue","DHT_findValue"));
-LIV(extlink_("#store","DHT_store"));
-LIV(extlink_("#remove","DHT_remove"));
-echo "</ul>\n";
-
+ANCHOR("DHT_DISCOVERY");H4("DHT DISCOVERY");
 BP();
-W("GNUnets DHT implementation is based on ideas from %s.",
-  extlink_("http://en.wikipedia.org/wiki/Kademlia";, "Kademlia"));
-W("There are various differences between Kademlia and the implementation in  
GNUnet.");
-W("The primary difference results from the fact that GNUnet extends the 
protocol with subtables.");
-W("Other differences result from adaptations of the original work to GNUnet.");
-W("Finally, the Kademlia paper describes the basic idea behind a protocol 
whereas GNUnet provides a concrete implementation.");
-W("As such GNUnet needs to deal with some of the quirks and specific details 
that the paper does not address.");
+W("A DISCOVERY message is used to let another peer know that the sender 
supports the DHT protocol and also to exchange topology information.");
+W("A DISCOVERY message contains the amount of space available for the DHT at 
the sender as well as the identities of other DHT participants known to the 
sender.");
+W("The format of the DISCOVERY message is the following:");
 EP();
-
-ANCHOR("ping"); H4("DHT_ping");
+LAYOUT("P2P_DHT_Discovery",
+       F(ARRAY(N("message size (8 + N * 64)", NBO_()) => 2,
+              V("request type", 18, NBO_()) => 2,
+              N("available space (in bytes)", NBO_()) => 4,
+              N("known DHT participants", "") => 0)));
+ANCHOR("DHT_ASK_HELLO");H4("DHT ASK HELLO");
 BP();
-W("A <tt>ping</tt> message is used to determine if another peer participates 
in the DHT network and to find out which tables that peer supports.");
-W("The proper response to a <tt>ping</tt> is to send back the list of tables 
for which the responder is storing data for.");
-W("The <tt>ping</tt> request currently uses no arguments.");
-W("The resulting table list is stored in under the name <tt>tables</tt>.");
+W("ASK HELLO messages are used by DHT peers if they would like to contact 
another peer in the network but do not have the necessary address 
information.");
+W("If possible, other peers respond to ASK HELLO messages with the respective 
HELLO message.");
+W("The format of the ASK HELLO message is the following:");
 EP();
+LAYOUT("P2P_DHT_ASK_HELLO",
+       F(ARRAY(V("message size", 72, NBO_()) => 2,
+              V("request type", 19, NBO_()) => 2,
+              V("resreved", 0, NBO_()) => 4,
+              N("identity of peer", "") => 64)));
 
-ANCHOR("findNode"); H4("DHT_findNode");
+ANCHOR("DHT_GET");H4("DHT GET");
 BP();
-W("The <tt>findNode</tt> requests is used to find peers in the DHT overlay 
that participate in a particular table and that are close to a given key.");
-W("The arguments to <tt>findNode</tt> are the <tt>key</tt> and the specific 
<tt>table</tt> (both in the form of a hash code).");
-W("The response consists of a list of peer identities <tt>peers</tt> which are 
the best matching peers found by the responder for this query.");
-W("Optionally the response may have an entry <tt>list</tt> that lists the 
tables that the responder supports.");
+W("A DHT_GET message is used to ask other peers to find content matching a 
particular type and key.");
+W("Other peers should respond with the respective DHT RESULT message if they 
can find the data.");
 EP();
-
-ANCHOR("findValue"); H4("DHT_findValue");
+LAYOUT("DHT_MESSAGE",
+       F(ARRAY(V("message size", 80, NBO_()) => 2,
+              V("request type", 20, NBO_()) => 2,
+              N("type of requested content", NBO_()) => 4,
+              N("hop count", NBO_()) => 4,
+              N("network size estimate", NBO_()) => 4,
+              N("key", "") => 64)));
+ANCHOR("DHT_PUT");H4("DHT PUT");
 BP();
-W("The <tt>findValue</tt> requests asks the peer to perform a DHT lookup on a 
particular <tt>key</tt> in a particular <tt>table</tt>.");
-W("<tt>findValue</tt> requests are only transmitted to peers that have 
previously indicated that they participate in the given <tt>table</tt>.");
-W("Peers that participate in a table may only send <tt>findValue</tt> requests 
to peers that are closer to the given <tt>key</tt>.");
-W("The <tt>findValue</tt> request also specifies a <tt>timeout</tt> and the 
maximum number of results <tt>maxResults</tt>.");
-W("The RPC returns the result of the lookup operation in fields named 
<tt>data</tt>.");
-W("Optionally the response may have an entry <tt>list</tt> that lists the 
tables that the responder supports.");
-W("Peers that receive a <tt>findValue</tt> request and that do not have the 
data locally may forward the request to other peers that participate in the 
given <tt>table</tt> if those peers have an ID that is closer and if there is a 
good chance to obtain a result before the timeout.");
+W("A DHT PUT message is used to store data in the DHT.");
+W("Peers should make an effort to store the data either in their own datastore 
or in the datastore of other peers (by forwarding the request).");
+W("Peers do not send any response or confirmation to a DHT PUT request.");
+W("Peers can validate the success of a PUT by issuing the corresponding GET 
request and wainting for results.");
 EP();
-
-ANCHOR("store"); H4("DHT_store");
+LAYOUT("DHT_MESSAGE",
+       F(ARRAY(N("message size (80 + X)", NBO_()) => 2,
+              V("request type", 21, NBO_()) => 2,
+              N("type of requested content", NBO_()) => 4,
+              N("hop count", NBO_()) => 4,
+              N("network size estimate", NBO_()) => 4,
+              N("key", "") => 64,
+              N("data", NBO_()) => 0)));
+ANCHOR("DHT_RESULT");H4("DHT RESULT");
 BP();
-W("The <tt>store</tt> requests asks the peer to store a particular 
<tt>value</tt> under a particular <tt>key</tt> in a particular 
<tt>table</tt>.");
-W("<tt>store</tt> requests are only transmitted to peers that have previously 
indicated that they participate in the given <tt>table</tt>.");
-W("Peers that participate in a table may only send <tt>store</tt> requests to 
peers that are closer to the given <tt>key</tt>.");
-W("If the peer stores the data locally it returns its own peer identity.");
-W("If the peer forwards the store message and the storage is confirmed, it 
returns the identity of all peers that confirmed storing the data.");
-W("Optionally the response may have an entry <tt>list</tt> that lists the 
tables that the responder supports.");
-W("Peers that receive a <tt>store</tt> request and that do not have the 
capacity to store the data locally may forward the request to other peers that 
participate in the given <tt>table</tt> if those peers have an ID that is 
closer and if there is a good chance to obtain a confirmation for storing the 
data before the timeout.");
+W("A DHT RESULT message is transmitted in response to a DHT GET request.");
+W("Peers should forward the result to the previous peer in the request chain 
(or the respective local client for local requests).");
+W("Peers do not send any response or confirmation to a DHT RESULT request.");
 EP();
-
-ANCHOR("remove"); H4("DHT_remove");
-BP();
-W("The <tt>remove</tt> message works just like the <tt>store</tt> message, 
only that the content is removed.");
-W("If no content is specified with the <tt>remove</tt> message this indicates 
that any kind of content under the given key is to be removed.");
-W("The <tt>remove</tt> operation may not be supported by all tables.");
-
-EP();
-
+LAYOUT("DHT_MESSAGE",
+       F(ARRAY(N("message size (80 + X)", NBO_()) => 2,
+              V("request type", 22, NBO_()) => 2,
+              N("type of requested content", NBO_()) => 4,
+              N("hop count", NBO_()) => 4,
+              N("network size estimate", NBO_()) => 4,
+              N("key", "") => 64,
+              N("result data", NBO_()) => 0)));
 include("html_footer.php3");
-?>
\ No newline at end of file
+?>

Modified: GNUnet-docs/WWW/protocol_p2p_tracekit.php3
===================================================================
--- GNUnet-docs/WWW/protocol_p2p_tracekit.php3  2008-02-17 00:08:16 UTC (rev 
6331)
+++ GNUnet-docs/WWW/protocol_p2p_tracekit.php3  2008-02-17 00:16:22 UTC (rev 
6332)
@@ -27,7 +27,7 @@
 BP();
 W("The format of the %s is:",
   extlink_("doxygen/html/structTRACEKIT__p2p__PROBE.html", "PROBE message"));
-LAYOUT("TRACEKIT_p2p_PROBE",
+LAYOUT("P2P_tracekit_probe_MESSAGE",
        F(ARRAY(V("message size", 40, NBO_()) => 2,
                V("message type", 36, NBO_()) => 2,
                N("timestamp (unsigned)", NBO_()) => 4,
@@ -50,10 +50,9 @@
 ANCHOR("REPLY");H4("REPLY");
 
 BP();
-W("The format of the %s is:",
-  extlink_("doxygen/html/structTRACEKIT__p2p__REPLY.html", "REPLY message"));
-LAYOUT("TRACEKIT_p2p_REPLY",
-       F(ARRAY(N("message size", NBO_()) => 2,
+W("The format of the REPLY is:");
+LAYOUT("P2P_tracekit_reply_MESSAGE",
+       F(ARRAY(N("message size (140 + N * 64)", NBO_()) => 2,
                V("request type", 37, NBO_()) => 2,
                N("initiator peer identity", NBO_()) => 64,
                N("responder peer identity", NBO_()) => 64,

Modified: GNUnet-docs/WWW/protocol_transport_tcp.php3
===================================================================
--- GNUnet-docs/WWW/protocol_transport_tcp.php3 2008-02-17 00:08:16 UTC (rev 
6331)
+++ GNUnet-docs/WWW/protocol_transport_tcp.php3 2008-02-17 00:16:22 UTC (rev 
6332)
@@ -16,9 +16,9 @@
 BP();
 W("The individual messages exchanged over TCP then have the format:");
 EP();
-LAYOUT("TCPP2P_PACKET",
+LAYOUT("GNUNET_MessageHeader",
        F(ARRAY(N("size", NBO_()) => 2,
-               V("reserved", 0, NBO_()) => 2,
+               V("type", 0, NBO_()) => 2,
                N("data", "") => 0)));
 BP();
 W("Here, <tt>data</tt> is the message as passed down by the GNUnet core.");

Modified: GNUnet-docs/WWW/protocol_transport_udp.php3
===================================================================
--- GNUnet-docs/WWW/protocol_transport_udp.php3 2008-02-17 00:08:16 UTC (rev 
6331)
+++ GNUnet-docs/WWW/protocol_transport_udp.php3 2008-02-17 00:16:22 UTC (rev 
6332)
@@ -16,7 +16,7 @@
 BP();
 W("Note that the actual data appears before this struct.");
 P();
-W("For the UDP transport service, the sender address in the HELO has this 
format:");
+W("For the UDP transport service, the sender address in the HELLO has this 
format:");
 EP();
 LAYOUT("HostAddress",
        F(ARRAY(N("IPv6 address", "") => 16,





reply via email to

[Prev in Thread] Current Thread [Next in Thread]