Re: [sipcore] Comments on 3265bis-02 (CHH)
Adam Roach <adam@nostrum.com> Thu, 30 June 2011 20:57 UTC
Return-Path: <adam@nostrum.com>
X-Original-To: sipcore@ietfa.amsl.com
Delivered-To: sipcore@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 00E6F11E80C9 for <sipcore@ietfa.amsl.com>; Thu, 30 Jun 2011 13:57:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.449
X-Spam-Level:
X-Spam-Status: No, score=-102.449 tagged_above=-999 required=5 tests=[AWL=0.150, BAYES_00=-2.599, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4qN6sB4z2e-3 for <sipcore@ietfa.amsl.com>; Thu, 30 Jun 2011 13:57:36 -0700 (PDT)
Received: from nostrum.com (shaman.nostrum.com [72.232.179.90]) by ietfa.amsl.com (Postfix) with ESMTP id 115F111E80DF for <sipcore@ietf.org>; Thu, 30 Jun 2011 13:57:35 -0700 (PDT)
Received: from dn3-110.estacado.net (vicuna-alt.estacado.net [75.53.54.121]) (authenticated bits=0) by nostrum.com (8.14.3/8.14.3) with ESMTP id p5UKuFMM064491 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Thu, 30 Jun 2011 15:56:15 -0500 (CDT) (envelope-from adam@nostrum.com)
Message-ID: <4E0CE2F0.803@nostrum.com>
Date: Thu, 30 Jun 2011 15:56:16 -0500
From: Adam Roach <adam@nostrum.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:5.0) Gecko/20110624 Thunderbird/5.0
MIME-Version: 1.0
To: Christer Holmberg <christer.holmberg@ericsson.com>
References: <4C6C5147.7090304@nostrum.com> <7F2072F1E0DE894DA4B517B93C6A05851B7B8A@ESESSCMS0356.eemea.ericsson.se>
In-Reply-To: <7F2072F1E0DE894DA4B517B93C6A05851B7B8A@ESESSCMS0356.eemea.ericsson.se>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
Received-SPF: pass (nostrum.com: 75.53.54.121 is authenticated by a trusted mechanism)
Cc: "SIPCORE (Session Initiation Protocol Core) WG" <sipcore@ietf.org>
Subject: Re: [sipcore] Comments on 3265bis-02 (CHH)
X-BeenThere: sipcore@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: SIP Core Working Group <sipcore.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/sipcore>, <mailto:sipcore-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/sipcore>
List-Post: <mailto:sipcore@ietf.org>
List-Help: <mailto:sipcore-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/sipcore>, <mailto:sipcore-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 30 Jun 2011 20:57:37 -0000
On 8/23/10 4:05 AM, Christer Holmberg wrote: > > QE1: The docuements sometimes uses "message", sometimes "request", and sometimes nothing after the method name. We should be consistant. I changed them all to "request." > QE2: There are many instances of "as defined in SIP [ref]", "as describe in SIP [ref]", etc. I think it is enough to only use the reference. Fixed. > > QE3: Expand GRUU abbreviation on first occurance. Done. > QE4: Where the document talks about crating a dialog, should it be dialog usage instead? In a few places, yes. Fixed. > QE5: Section 4.1.2.2: When reading the text regarding RFC 5839 it seems like it's mandatory to support. Also, if we want to talk about 5839 in specific sections I think we will need text elsewhere also. I would suggest to remove the text from 4.1.2.2, and have a specific section where we talk about compatibility with 5839. There's nothing to be done for compatibility with 5839, except for not running timer N when you get a 204. I don't believe the document warrants an entire new section to say this one thing. I have added the word "optional" to the sentence to remove any implication that 5839 is mandatory to implement: "...such as the 204 response defined for use with the optional extension described in [RFC5839]..." > QE6: Section 3.1.1: "the implied default is defined" -> "the implied default MUST be defined" Okay. > QE7: Section 3.2.1: "header fields will contain a single" -> "header fields MUST contain a single" Okay. > QE8: Section 4.1.2.3: "the final NOTIFY may or may not". Remove "or may not". I think both possibilities are as important as each other, and I wouldn't want to de-emphasize either of them. > QE9: Section 4.1.2.4: "Documents which define new event packages MUST" -> "Event package specifications MUST" Okay. > FUNCTIONAL: > =========== > > QF1: Section 3.1.3 says that Event packages must define behavior for SUB requests without Accept header. 3261 says that, in case there is no Accept header, the default value is "application/sdp". I don't think 3265bis should change that. That text is from 3265, and I'm certain that implementations are out in the field that count on such a behavior. What you propose isn't backwards compatible. > QF2: The document contains lots of SHOULDs, without any explanation on when something applies, and when it doesn't. It makes it very difficult to specify and perform conformance tests, and in most of the 3265bis occurances it might also cause state unsynch among entities. So, I think we should have MUST - or explain when SHOULD applies, and when it doesn't. The vast, vast majority of these predate 3265bis. Blindly taking normative statements from SHOULD to MUST will arbitrarily make legacy implementations noncompliant -- and, in some cases, incompatible. Your alternate suggestion steps on one of the things that I think has gone very wrong with RAI in the past few years. Please bear with me while I vent my spleen for a moment on that topic. In terms of explaining when SHOULD-level normative statements can be violated -- I strongly disagree with the current (RAI-only) cultural bent that requires all SHOULD normative requirements to be accompanied by enumerated lists. Such an approach effectively removes "SHOULD" and "SHOULD NOT" completely from the lexicon, replacing them with "MUST... unless..." and "MUST NOT... unless...". If you go back 10 years, or step outside of RAI, there's a culture of *allowing* those things that don't break interoperability. All of the SHOULD-level statements in 3265/3265bis are statements of things that make the system work *better*; none of them are required for the system to *work*. I understand that some implementors will do profoundly stupid things, cut corners, and intentionally misread portions of specifications to suit their level of skill, motivation, and timelines. And I know that using "SHOULD" appears to give them some kind of a moral "out" to do so. But there's nothing we can say here that will change that kind of behavior: failing to implement a MUST is just as easy as failing to implement a SHOULD, and there's no armed force that's going to police the difference. But it's insulting to implementors and constraining to future extensions to place hard prohibitions in protocol specifications where they aren't necessary. Good implementors can determine when circumstances warrant violation of SHOULD-strength requirements, even if they fall outside circumstances we can presently enumerate. That said, I'm not opposed to adding *examples* of exceptions to SHOULD-strength statements. I just don't think they're necessary. So, if you'd like to see such examples added: send text. > QF2a: Section 4.1.2.2 says that if specific SUB responses are received, the subscriber should consider the subscription terminated. In this particular instance, I agree that a change may be helpful. I think it really should be a normative "MUST". > QF2b: Section 4.1.2.4 says that the subscriber SHOULD reject a NOT after Timer N expireation. This is a good example where failing to implement the SHOULD won't cause interop problems. I don't think a change is warranted. > QF2c: Section 4.2.1.4 says that the notifier SHOULD send a NOT with "terminated" state. This is a good example of legacy behavior that we can't change without potentially making existing deployment non-interoperable. Additionally, since both ends are running the same timers, this NOTIFY is really just a safety net. Failing to send it won't cause any problems unless something *else* has been mis-implemented. > QF2d: Section 4.2.2 says that the notifier SHOULD remove the subscription if NOT fails due to Timer F expireation. Again, no interop issues here. There's non-normative text that tells implementors why they *want* to do this. But failing to do it doesn't break the system. > QF2e: Section 4.2.3. I guess a notifier that doesn't support PINT MUST return 489 in case of SUB without an Event header field? What's really important here, from an interop perspective, is that the transaction fails. Exactly *how* it fails isn't important. And what's cool is that there's no hope of it succeeding, since there's no event package specified. So it's really just a Nice Thing [tm] for troubleshooting. > QF3: Section 4.3. Do we need to say that the Timer N expiration procedures etc also apply to stateless proxies? I'm confused. Stateless proxies don't maintain state. They don't need to run timer N. > QF4: Section 4.4.1 says that a subscription is terminated after a notifier sends a NOT with "terminated". I think we should add ", or when Timer N expires.", to cover the case when there is no NOT. > The statement wasn't meant to be exhaustive, but I can see how it might be confusing. Of course, those aren't the only two circumstances that can result in a subscription going away -- there are a wide variety of error situations that can cause that. I've added text: A subscription is destroyed after a notifier sends a NOTIFY request with a "Subscription-State" of "terminated," or in certain error situations. /a
- [sipcore] 3265bis-02 Adam Roach
- Re: [sipcore] 3265bis-02 Paul Kyzivat
- Re: [sipcore] 3265bis-02 Adam Roach
- Re: [sipcore] 3265bis-02 Paul Kyzivat
- [sipcore] Comments on 3265bis-02 (CHH) Christer Holmberg
- Re: [sipcore] 3265bis-02 Adam Roach
- Re: [sipcore] Comments on 3265bis-02 (CHH) Adam Roach