Re: [dtn-interest] Comments on the bundling draft
Scott Burleigh <Scott.Burleigh@jpl.nasa.gov> Tue, 21 December 2004 23:54 UTC
Received: from eis-msg-012.jpl.nasa.gov (eis-msg-012.jpl.nasa.gov [137.78.160.40]) by webbie.berkeley.intel-research.net (8.11.6/8.11.6) with ESMTP id iBLNsY129499 for <dtn-interest@mailman.dtnrg.org>; Tue, 21 Dec 2004 15:54:34 -0800
Received: from creeper.jpl.nasa.gov (dhcp-79-37-245.jpl.nasa.gov [137.79.37.245]) by eis-msg-012.jpl.nasa.gov (8.12.10/8.12.10) with ESMTP id iBLNsSx6009979 for <dtn-interest@mailman.dtnrg.org>; Tue, 21 Dec 2004 15:54:28 -0800 (PST)
Message-Id: <6.1.2.0.2.20041221150753.02e395d8@mail2.jpl.nasa.gov>
X-Sender: scott@mail2.jpl.nasa.gov
X-Mailer: QUALCOMM Windows Eudora Version 6.1.2.0
Date: Tue, 21 Dec 2004 15:54:43 -0800
To: DTNRG <dtn-interest@mailman.dtnrg.org>
From: Scott Burleigh <Scott.Burleigh@jpl.nasa.gov>
Subject: Re: [dtn-interest] Comments on the bundling draft
In-Reply-To: <20041219220654.GD992@masaka.cs.ohiou.edu>
References: <20041219220654.GD992@masaka.cs.ohiou.edu>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"; format="flowed"
Sender: dtn-interest-admin@mailman.dtnrg.org
Errors-To: dtn-interest-admin@mailman.dtnrg.org
X-BeenThere: dtn-interest@mailman.dtnrg.org
X-Mailman-Version: 2.0.13
Precedence: bulk
List-Help: <mailto:dtn-interest-request@mailman.dtnrg.org?subject=help>
List-Post: <mailto:dtn-interest@mailman.dtnrg.org>
List-Subscribe: <http://mailman.dtnrg.org/mailman/listinfo/dtn-interest>, <mailto:dtn-interest-request@mailman.dtnrg.org?subject=subscribe>
List-Id: Delay Tolerant Networking Interest List <dtn-interest.mailman.dtnrg.org>
List-Unsubscribe: <http://mailman.dtnrg.org/mailman/listinfo/dtn-interest>, <mailto:dtn-interest-request@mailman.dtnrg.org?subject=unsubscribe>
List-Archive: <http://mailman.dtnrg.org/pipermail/dtn-interest/>
At 02:06 PM 12/19/2004, Manikantan Ramadas wrote: >Some thoughts/comments/suggestions on >draft-irtf-dtnrg-bundle-spec-02.txt : > >* Sec 2.3.2 We might need a RegistrationError.indication primitive to >serve the case (for example) if the default failure action requested >of deferring bundle delivery until a period of passive or active >reception by the application was unacceptable to the bundle agent (for >storage or other administrative considerations). A bundle-agent may >also choose to reject a request by the application to run a procedure >provided by the application while deferring bundles for security >reasons, say. Besides the Register.request, a >Change_registration.request requesting changes as in the above >examples, may also deserve a RegistrationError.indication. A good point, Mani, but it's a fine line: my preference is to limit prescriptions for error handling in a spec like this to those that pertain to the protocol itself, to indicate intent to the developer. Certainly there are wide range of other anomalies that a sound implementation is going to have to handle somehow, but I don't think it's our job as protocol designers to make all those rules, since none of this Service Description stuff affects interoperability anyway. We run the risk of over-specifying and unreasonably constraining the developer. >* Sec 2.5.2 II para, II line, may be you want to call this one >CancelBundle.request to be in Sync. with the title as we have with all >other request primitives? Just caught my eye, thats all. You mean in the "Semantics" paragraph, right? Absolutely, good catch. >* Sec 2.5.10 SendError.indication : Since the bundling application >uniquely refers to each Send request with a SendTokenBinding, isn't it >enough if we just return the SendTokenBinding parameter instead of all >those parameters we are returning? Good point; certainly simpler and more elegant. It forces the application to remember all the transmission parameters that were associated with that Send.request, though. I dunno, I could go either way on this question, but I'm leaning toward agreeing with you. >* Closing out Section 2, May be we need a table(s) of reason-codes to >be sent back as a parameter along with SendError.indication and >RegistrationError.indication primitives? Reason-codes for >SendError.indication could include reasons like : > > o No route to host (ever) > o Can't meet lifespan (if the bundle agent was aware of the link >schedules) Yes, a good idea. >While RegistrationError.indication could include reason-codes for >stuff like : > o Can't defer delivery > o Can't run user-specified procedure Again, though, I disagree on this one. >* This is just a curiosity question: Why have we left Reserved spaces >for bundle header type values interspersed like 0x03, 0x04, 0x06 >instead of having all the Reserved values towards the end? Well, the spec has gone through a lot of changes, and implementations have tracked those changes to some extent. Since the header type numbers are arbitrary anyway, I think it just seemed as if we'd be somewhat less likely to break something somewhere if, whenever we deleted a header type, we simply retired the number and left it Reserved rather than reassigning that number and all subsequent type numbers. >* Sec 3.3, ASCII diagrams illustrating bit allotment for Class of >Service Flags and Payload Security would be nice! You're right, a worthwhile picture to include. >* Sec 3.7. This has been raised in a recent thread on DTN Security. >But just for the sake of completeness : we need to clearly say what >happens under reactive fragmentation when bundles authentication >breaks at the receiver. Although reactive fragmentation is likely to >be a rather corner case (at least for links with relatively long >uptimes), we go thru' all this pain just to make sure NOT to lose bits >that made all this way but were corrupted just because the link went >down right in the middle of transmission, right? But this is all >useless if the receiving bundle agent is going to throw such a >fragmented bundle anyways since it was inauthentic. Right, that issue surfaced after this version of the spec was submitted. We clearly have to address this. >* Sec 4.2 Step 1, last-but-1 line : you mean the "sending bundle >agent" here right? Or, I don't understand whats going on here. Yes, it would be the sending bundle agent that was enforcing these rules. >* Sec 4.4 Bundle Fowarding : Before beginning with Step 2, how do we >handle cases such as > > o This bundle must have taken the wrong path to reach us because we >have no route to the destination region (ever) > > o We have a route to the destination region, but the link is down >now, and based on link schedules we know that we can't meet the >TTL when the link would become available next. In such a case, it >seems good not to bother saving the bundle, but rather send back an >error message. Yes, this is a place where we might want to beef up the anomaly handling procedures. In the first case, I think we discard the bundle and, if it was custodial, we send back a "Failed" custodial signal as described in Step 3 of 4.2 (using reason codes as defined in Table 7). In the second case, I would be inclined to simply hang on the bundle and see what happens, as sometimes we don't know all that we think we know. But this could be a management decision supported by an implementation-specific hook, and a rejection decision could again result in one of those "Failed" custodial signals. >* Sec 4.5.1 Bundle Fragmentation, towards the end when we discuss >reactive fragmentation. All of this discussion seems to assume that >reactive fragmentation happened while transmitting the final payload >section of the bundle. May be a few lines on what to do when the link >went down while transmitting say like the Dictionary Header could be >useful? We need to make it clear that this case does NOT result in reactive fragmentation: the receiver can't construct a fragmentary bundle unless it receives the entire bundle header and at least one byte of the payload. I think this is implied by the first bullet in the first paragraph of 4.5.1 but obviously it is possible to miss that. >* Sec 5.1 Table 5. This one is rather a matter of style. The table >only lists the value of status flag while the discussion below the >table uses clauses like "if the bundle fragment bit is set..", "if the >bundle-forwarded bit is set.." etc instead of saying "if the value was >0x80.." etc. While it is clear to me that the >bundle fragment bit is the MSB and the bundle-forwarded bit is the >third LSB, may be adding a "Bit" column by the side of the "Value" >column or having a simple ASCII diagram instead of the table >illustrating the flag assignment, would make me happy. But this is >certainly a low priority objection/comment. Sure, this is reasonable. >* Sec 5.2 Table 7 The values 0x03 - 0x06 clearly don't go with a >Status flag 0x01 (Custody Transfer Succeeded) (Table 6). May be we >need a Status flag assignment in Table 6 that stands for Custody >Transfer Failed (may be 0x00)? I think calling the bit identified by mask 0x01 the "custody transfer succeeded" bit, with implicitly Boolean semantics, is actually a pretty efficient way to convey this information. (Maybe that column heading should be "mask" instead of "value".) But I do think we need to add value 0x00 "No error" to Table 7. Scott
- Re: [dtn-interest] Comments on the bundling draft Scott Burleigh
- [dtn-interest] Comments on the bundling draft Manikantan Ramadas