|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: iSCSI: Serial Number ArithmeticJulian, The suggested text: "A large absolute difference between StatSN and ExpStatSN may indicate a failed connection. Initiators undertake recovery actions if the difference is greater than an implementation defined constant that SHALL NOT exceed 2**31-1." is inconsistant with serial number arithmetic. Serial number arithmetic does not define a "difference" operation and is very specific about the operations which are defined. If we wanted to use difference to compare serial numbers, we could define "difference" in terms of the already defined serial number arithmetic operations. For instance, we could say something like the difference between A and B is equal to the value D which satisfies the following: For A < B, A + D = B or For A > B, B + A = D So the difference of A and B is greater than D if A < B and A + D < B or A > B and B + D > A However A < B and A > B are not defined for A and B when the integer value of A equals the integer value of B plus 2**31-1 or vice versa. The comparison may yield either result or it may yield an error. Therefore, this test doesn't work for difference greater than 2**31-1. Note also that there is exactly one value of StatSN for a given value of ExpStatSN that exceeds the distance 2**31-1. Mandating recovery actions to be initiated for only one value out of 2^32 possible values of StatSN doesn't seem useful. The connection could be failed without us ever seeing that particular value. If we want to initiate recovery for large differences between StatSN and ExpStatSN it would make sense to do it for a lower value of difference so that serial number arithmetic would still handle it. The alternative is to delete the text and rely on other tests to initiate recovery. Regards, Pat -----Original Message----- From: Julian Satran [mailto:Julian_Satran@il.ibm.com] Sent: Friday, October 05, 2001 10:11 PM To: ips@ece.cmu.edu Subject: Re: iSCSI: Serial Number Arithmetic Pat - Comments in text - Thanks, Julo _____________________ Julian, The draft says serial number arithmetic as defined in RFC 1982 is to be used for comparisons and arithmetic on CmdSN but but it uses operations which are inconsistant with that statement. 2.2.2.1 (bottom half of page 26) re: the processing for MaxCmdSN and ExpCmdSN - "and with a difference bounded by 2**31-1" should be deleted (3 places). The RFC 1982 Serial Number Arithmetic rules cover the meaning of addition of a positive integer of limited range and comparison (<, > and =) for serial numbers. "Only two operations are defined upon serial numbers, addition of a positive integer of limited range, and comparison with another serial number." The operation difference is not defined for Serial Numbers.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> +++ will fix - 2**31-1 is implied by serial arithmetic+++ 2.2.2.2 re: "difference is greater than 2**31-1" - The operation difference is not defined for Serial number arithmetic. Even if it was defined as the inverse of addition, addition is only defined for adding a value up to 2**31-1. Is the intent of the statement that it should cover only the value where the results of StatSN > ExpStatSN and StatSN < ExpStatSN are undefined or is the intent that it cover that value plus the values where ExpStat > StatSN? The former doesn't seem useful and the latter seems rather severe. Regards, Pat Thaler ++++ StatSN follows regular mod(2**32) arithmetic. 2**31 is meant to state the limit at which recovery action becomes mandatory Here is a new 2.2.2.2 that perhaps states this clearer+++ 1.1.1.1 Response/Status Numbering and Acknowledging Responses in transit from the target to the initiator are numbered. The StatSN (Status Sequence Number) is used for this purpose. StatSN is a counter maintained per connection. ExpStatSN is used by the initiator to acknowledge status. The status sequence number space is that of 32bit integers and the arithmetic operations are the regular mod(2**32) arithmetic. Status numbering starts with the Login response to the first Login request of the connection. The Login response includes an initial value for status numbering. To enable command recovery the target MAY maintain enough state information to enable data and status recovery after a connection failure. A target can discard all the state information maintained for recovery after the status delivery is acknowledged through ExpStatSN. A large absolute difference between StatSN and ExpStatSN may indicate a failed connection. Initiators undertake recovery actions if the difference is greater than an implementation defined constant that SHALL NOT exceed 2**31-1. Initiators and Targets MUST support the response-numbering scheme.
Home Last updated: Tue Oct 09 18:17:24 2001 7167 messages in chronological order |