Mr Spencer,

Again my responses are inline with each of your comment below.

Thanks
Avygdor Moise

----- Original Message ----- From: "Spencer Dawkins" <[email protected]> To: "Avygdor Moise" <[email protected]>; <[email protected]> Cc: "General Area Review Team" <[email protected]>; "Jonathan Brodkin" <[email protected]>
Sent: Tuesday, June 22, 2010 3:17 PM
Subject: Re: Gen-ART Review of draft-c1222-transport-over-ip-03


Hi, Avygdor,

Mr Spencer,

Thank you for the remarks. I will try to respond inline with each of your comment below.

I hope I did not miss anything.

We shall produce an update shortly (04) that includes the solutions described below.

Thanks
Avygdor Moise

Thanks for responding while I can still remember what I was thinking when I wrote the review :-)

I deleted anything that we already agree on, below.

1.2. Definitions

  Active-listen UDP

     Active-listen UDP is a temporary process used by a local C12.22
     IP Node to expect and receive incoming C12.22 Messages from a
     foreign C12.22 IP Node using the UDP protocol.  The local C12.22
     IP Node SHALL solicit the incoming C12.22 Messages from the
     foreign C12.22 IP Node using the foreign C12.22 IP Node's
     registered Native IP Address.  The local C12.22 IP Node MAY exit
     Active-listen UDP process when it has received all of the
     expected C12.22 Messages or a C12.22 Message timeout has
     occurred.  The local C12.22 IP Node SHALL receive all C12.22
     Response Messages solicited from the foreign C12.22 IP Node that
     arrive at the local port number that matches the source port
     number used to solicit the C12.22 Messages from the foreign
     C12.22 IP Node.

Spencer (minor): I'm not accustomed to seeing normative text in definitions (and there are several instances in this section). If the ADs are OK with that, I'm OK (don't change it unless someone raises it as a comment in the tracker), but I wanted to make sure Russ noticed this.

Note: In response to another comment we replaced the terms "Active-listen UDP" and "Passive-listen UDP" with "Active-Open UDP" and "Passive-Open UDP"

I agree with you that generally one does not place normative text in definitions. However, we applied the following editorial generalizations
1) Definitions are normative (i.e. they are binding)
2) If a definition describes a state (i.e. a condition that has an entry requirement and an exit requirement) and it can be summarized on a single paragraph then it does not merit the creation of a separate section for the elaborations 3) Removal of SHALLs and MAY words from definitions can lead to interoperability problem, so I place them anywhere were applicable.

So, I would rather leave this one alone and not apply a change.
I hope this does not cause problems

Yeah - like I said, I just wanted to call Russ's attention to this, because it's not a common situation. Whatever the ADs think is OK, is OK with me.


We'll cross our fingers...

2.2. Native IP Address

  The IP address of the C12.22 IP Node SHOULD be configured before the
  C12.22 IP Node attempts to send or receive any C12.22 Message on its
  C12.22 IP Network Segment.  If the port number is not explicitly
  configured by the controlling application, it SHALL be set to the
  default port number, 1153 (see Section 2.4. Standardized Port
  Numbers).

Spencer (minor): "SHOULD be configured"? OK, but at a minimum, you should say something about when it's acceptable to send C12.22 application-level messages without a configured IP address, and how that works (source IP address is all zeros? something else? I'm confused here). I'm kind of expecting that other reviewers would say MUST...

Note: The last paragraph in section 2.2 was changes to read
"It is beyond the scope of this specification to define the method of configuration, the configuration parameters, or any administrative controls that the system administrator may wish to implement to assign an IP address."

In regards to the paragraph in question it already states: "The IP address of the C12.22 IP Node SHOULD be configured before the C12.22 IP Node attempts to send or receive any C12.22 Message on its C12.22 IP Network Segment".

So it is never acceptable (or possible) any C12.22 Messages if C12.22 Node is not on the IP Network.

Clearly I miss something here. Can you elaborate?

"never acceptable" sounds like this ought to be a MUST. If it's a MUST, implementations that don't do it, don't conform. If it's a SHOULD, implementations can decide not to do it, and still conform. If this is a SHOULD, I would expect you to say what the node uses as a source IP address, at a minimum, if it decides to send packets before configuring the IP address.

My rule (for myself) is that when you don't do things you MUST do, it's your fault when it doesn't work, but when you don't do things you SHOULD do, somebody needs to describe what the other end should do in response - if it's going to fail in all cases, it really was a MUST.

I'm confused because the IP address is a SHOULD, and the port number is a SHALL. I would have thought that they were equally important. I'm not an expert in this field, of course.


O.k. I agree that MUST is better than SHOULD . The new text will state
"The IP address of the C12.22 IP Node MUST be configured before the C12.22 IP Node attempts to send or receive any C12.22 Message on its C12.22 IP Network Segment."

2.6. IP Multicast

  IPv6 C12.22 IP Nodes SHOULD use the minimum scope needed, when
  initiating IP multicast messages to reach another C12.22 IP Node on
  the C12.22 Network.  This practice is RECOMMENDED in order to limit

Spencer (minor): I don't think this is a 2119 RECOMMENDED - it's just a statement of fact. "... allows the sender to limit unnecessary propagation ..."?

  unnecessary propagation of C12.22 IP multicast Messages.


We agree with your statements. This RFC helps the implementer by recommending an algorithm that helps implementers determine the minimum scope required to reach the closest C12.22 IP Relay on the C12.22 Node's IP Network Segment.

Is there any change to you wish to see happen as a follow-up to your comment?

My suggested change was "this practice allows the sender to limit unnecessary propagation of C12.22 IP multicast Messages". You've already got a normative SHOULD in the first sentence (same strength), you don't need another normative requirement to do the same thing in the second sentence.


Ok. The text will be changed to:
"This practice allows the sender to limit unnecessary propagation of C12.22 IP multicast Messages."

3.2.6. TCP and C12.22 Message Directionality

  Uni-directional use of TCP is a special mode of operation; it is NOT
  RECOMMENDED because multiple one-way channel communication is not
  described by ANSI C12.22, and it utilizes one-half of the TCP
  connection capability.  As a result it doubles the number of TCP
  connections used to communicate C12.22 Messages, and thus could
  become a burden when a large number of connections is required.
  While this mode of operation is not explicitly supported in the ANSI
  C12.22 standard, it MAY be made possible through mutual operating
  agreements.  The means by which nodes are configured to enact the
  uni-directional use of TCP is not defined in this specification or in
  the ANSI C12.22 standard; it is left for future consideration.

Spencer (nit, clarity): This is saying "NOT RECOMMENDED but might work", right? I would be more comfortable saying that than "MAY be made possible thought mutual operating agreements" ...

By stating that it is NOT RECOMMENDED is an indication that eventhough it MAY work we wish to discourage the practice. If we just say "MAY be made possible" it may decrease interoperability, by encouraging the practice, which highly undesired.

Ah - in that case, I suggest that you delete the sentence "While this mode of operation is not explicitly supported in the ANSI C12.22 standard, it MAY be made possible through mutual operating agreements".

You don't need to say this, and you're just calling the reader's attention to an undesirable practice that MIGHT work - that's enough to make some product managers say "oh, you can implement Uni-directional TCP for this, and tell people to make it work". :-(


Ok. Will delete the text
"While this mode of operation is not explicitly supported in the ANSI C12.22 standard, it MAY be made possible through mutual operating agreements. The means by which nodes are configured to enact the uni-directional use of TCP is not defined in this specification or in the ANSI C12.22 standard; it is left for future consideration."

3.4.2. Sending Large C12.22 APDUs Using UDP

  When sending a large C12.22 Message via UDP, whereby the ACSE PDU
  size exceeds the UDP datagram maximum data length (65527 bytes), the
  initiating C12.22 IP Node SHALL segment the ACSE PDU in accordance
  with ANSI C12.22 Datagram Segmentation and Reassembly algorithm, such
  that each APDU segment fits within the UDP data field.

Spencer (minor): If you're matching something that's already deployed, fine, but if you have an opportunity to set a lower bound than 65527 bytes for invoking application-level segmentation and reassembly, I'd suggest thinking about that. Losing fragments means you retransmit the entire IP packet (no surprise there), and more fragmentation means you're taking up more reassembly buffers on NATs, if this protocol is really intended to traverse the Internet...

This explains the upper limit that is imposed on to the Segmentation Algorithm of ANSI C12.22 by the IP Network. When a node pushes data above that size it must segment. However, nodes may choose to segment a much lower limits (which may be negotiated between peers by the C12.22 Protocol).

I'm not an expert in the application space where you're working, but if it's anything like the open Internet, there are a lot of reasons to avoid IP fragmentation when you can do so.

To name two, some NATs drop packets that don't have port numbers (subsequent fragments don't), and when one fragment is lost for an application that can't "lose" packets, the entire IP packet has to be retransmitted. Assuming a 1500-byte-ish 802 link layer, you're saying that applications don't have to worry until the Message size is bigger than 65527 bytes - that's 44 fragments. If you've already lost one fragment due to congestion, throwing 44 more packets onto the path seems wrong.

You might wish to consider encouraging use of the C12.22 Protocol to negotiate lower limits (probably at SHOULD strength), unless you're sure that the current text won't lead to problems in your application space (and that your application won't be used on the open Internet).

I see the problem. We are caught between a rock and a hard place.
Most payloads are very small (less than 100 bytes). The reason for the number 65527 is to instruct the user not to trip on UDP. The problem you indicate will need to be addressed in C12.22, since it originates there and if it is a defect in C12.22 then it will be common not just to IP but other transports that C12.22 may use as well. I will bring this to the attention of ANSI SC17 and IEEE SCC31 (the committees) for correction.


Thanks,

Spencer


_______________________________________________
Gen-art mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/gen-art

Reply via email to