-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Inline.
On 11/11/2011 02:03 AM, Songhaibin wrote: > Hi Marc, > > Thank you very much for the review. See reply in line. > >> -----Original Message----- From: [email protected] >> [mailto:[email protected]] On Behalf Of Marc Petit-Huguenin Sent: >> Monday, November 07, 2011 12:30 AM To: P2PSIP Mailing List Subject: >> [P2PSIP] Review of draft-ietf-p2psip-diagnostics-06 [...] > > struct { uint64 expiration; uint64 timestampInitiated; uint64 dMFlags; > DiagnosticExtension diagnostic_extensions<0..2^32-1>; // the length is > already here. } DiagnosticsRequest; > >> struct { uint64 expiration; uint64 timestampInitiated; uint32 length; >> select (length) { case 0: uint64 dMFlags; case > 0: uint64 dMFlags; >> DiagnosticExtension diagnostic_extensions<0..2^32-1>; } } >> DiagnosticsRequest; > >> By using structure, we mean that if the "length" field at the beginning of >> the request equals to "0", there is no other diagnostic information request >> except that contained in the dMFlags. If there are other extension types of >> diagnostic information are requested(as indicated by the length field), >> there will be DiagnosticEXtension field. But it seems there is something >> wrong here. Because in the draft it only allows at most 2^16 extension >> types, the diagnostic_extensions array should also be at most 2^16 long. >> Section 5.1.2 has the same problem. What I meant is that the explicit length field and the implicit length field in the diagnostic_extensions field carry the same value, so why not eliminate one of them. > >> That is to say, "length" is the number of requested extension diagnostic >> types. Really? I would have thought that it was the size, not the number of instances. > > > Also the authors should choose between the CamelCase convention > (timestampInitiated) or the underscore convention > (diagnostic_extension_contents) but not mix the two. > > >> That's to make it consistent with the base draft. For example, in the base >> draft section 5.3.3.1, the definition of ErrorResponse struct: > >> public struct { uint16 error_code; opaque >> error_info<0..2^16-1>; } ErrorResponse; > >> You see the structure name is in CamelCase, but the variable is in >> underscore convention. Yes, but my point was that timestampInitiated is not consistent with either the base draft or the other fields in this draft. [...] > > 3. Section 5.1.1, third field definition > > Is the request really allowed to set all dMFlags to '1', and so requesting > diagnostics types that are not yet defined? > > >> Only defined main diagnostics types are requested. From the extensibility >> consideration, it is good to classify the diagnostics types into two, one >> is the main types, the other is the extended types. We use 64 bits dMFlags >> to indicate the main diagnostics types that are requested. If there is >> requirement for more diagnostics types, they can define the extension types >> for use. The request will then contain the diagnostic_extensions<0..2^32-1> >> field as defined in section 5.1.1. That's not what I meant. On the 64 main diagnostics types possibles, only 15 are defined. But the text says that all dMFlags must be set to '1', so it would request types that are not defined yet. Is it the intent? > > > 4. Section 5.1.3 > > I would add an additional diagnostic kind that provide the OS (or modify > SOFTWARE_VERSION to provide the OS), for the purpose of evaluating if an > overlay as enough OS diversity to handle a bug in a specific OS. > > >> To understand it deeply, could you give an example of what a bug it might >> be and how it will impact the overlay? It's about diversity in an overlay. If all the nodes are using the same RELOAD implementation, then the overlay will not survive a bug in this implementation. So a node can use diagnostics to evaluate the diversity in software implementations. Because OS have bugs too, OS diversity in an overlay is also a good thing, but diagnostics cannot be used for this purpose. Which bring another thing that is missing in diagnostics: The draft should define an XML namespace for the sole purpose of adding it to a <mandatory-extension> element, to force all nodes of an overlay to support diagnostics. [...] > For error code 101, why using a fixed-length text string, instead of a > "opaque suberror<0..32>" > > >> There are several types when error 101 was returned. We want to make it >> machine readable than just human readable, so as to classify them. I think that a subcode + text with variable length is better than parsing an exact text, something like this: uint8 subcode; opaque reason<0..2^8-1> - -- Marc Petit-Huguenin Personal email: [email protected] Professional email: [email protected] Blog: http://blog.marc.petit-huguenin.org -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iEYEARECAAYFAk69PY4ACgkQ9RoMZyVa61eu4gCdEJkyC9YsRpCPutdBLlX6ayB5 xPMAn1PC0oNgCGt0w0ABMMpoMK8zNN9F =s463 -----END PGP SIGNATURE----- _______________________________________________ P2PSIP mailing list [email protected] https://www.ietf.org/mailman/listinfo/p2psip
