Re: [Taps] RFC 6458 etc. in draft-welzl-taps-transports
Karen Elisabeth Egede Nielsen <karen.nielsen@tieto.com> Wed, 04 November 2015 14:09 UTC
Return-Path: <karen.nielsen@tieto.com>
X-Original-To: taps@ietfa.amsl.com
Delivered-To: taps@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id EC79A1B3008 for <taps@ietfa.amsl.com>; Wed, 4 Nov 2015 06:09:57 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.379
X-Spam-Level:
X-Spam-Status: No, score=-1.379 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FM_FORGED_GMAIL=0.622, SPF_PASS=-0.001] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id tL4pmX-xAkm1 for <taps@ietfa.amsl.com>; Wed, 4 Nov 2015 06:09:55 -0800 (PST)
Received: from mail-io0-x234.google.com (mail-io0-x234.google.com [IPv6:2607:f8b0:4001:c06::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 60DEF1B3006 for <taps@ietf.org>; Wed, 4 Nov 2015 06:09:55 -0800 (PST)
Received: by iody8 with SMTP id y8so54266134iod.1 for <taps@ietf.org>; Wed, 04 Nov 2015 06:09:54 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tieto.com; s=google; h=from:references:in-reply-to:mime-version:thread-index:date :message-id:subject:to:cc:content-type; bh=rtTfmjwqk9btwQ6aos29jCcBhyFWLjMsZukBEWnO1r8=; b=kz8uSKCjWPO3pXZxYv+/oUbMSyO6Q/G51TwNqtQNyrFT7Ds5Q3pQVcDtBnLo+gB35m 6lJ3l28ztvxNP0M9Ben0iu7ipoqHhGcq1/Kw6eWRnl56lYajPR3NKpCmbLYpwLhfRwXZ Ll0KWfF+dGntn8l1fMJSUAvTOyubbNtkdLG7k=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:references:in-reply-to:mime-version :thread-index:date:message-id:subject:to:cc:content-type; bh=rtTfmjwqk9btwQ6aos29jCcBhyFWLjMsZukBEWnO1r8=; b=PgzvoPL9w0A7wwGI5USONT4ZVkFwXQRoZtz0r+k2Ps3stMWYlHsxYOMYCh+F1OmEkc /IQ/qiU0SGNwiz+D0tVRa5xBUQCigRMhpS6fTE9iHThpbxuP5rFhcnvqcs6bYk4yU1H6 38RBJYhGtfmebz7ch3OzejKYWc5S2nMxXLestd40UN914k/CU78geix5BiJnM6FzgFjX 6XN0hBrjh1r7iwLJeHeCTpyLY4nXXhD1KJKUt/KmnrqLE650wqcVDzgobHA9fLWWWkKh JrKRRoajl9+rxsVjAsANGiwU2v9a//YPyJD3tdbJuDJ2LhAfalywDPkV8r5wVzZ4b7ze ozYg==
X-Gm-Message-State: ALoCoQm0csPg4ExmyllnsOr9BHILw2JLwegC57qlnRSQc2sTQKCqM2BjwrRgs7RZtsE7TW4D3GdPPnAFOza08nwcGTmdIifniLVVUYehKG9t+LxLyWWyRyw=
X-Received: by 10.107.10.217 with SMTP id 86mr3195124iok.145.1446646194618; Wed, 04 Nov 2015 06:09:54 -0800 (PST)
From: Karen Elisabeth Egede Nielsen <karen.nielsen@tieto.com>
References: <945E755A-3EB4-4325-8257-9ECC2EE3FC4B@ifi.uio.no> <6f6d07994fde18062e39ced796f199a9.squirrel@erg.abdn.ac.uk> <168e06db09417654f64461f700a0d4f5@mail.gmail.com> <2B7D70A6-4675-40D0-AEE5-47D824A21A0A@ifi.uio.no> <675a044a04faf0c6f28f9f02416fbb84@mail.gmail.com> <88C880B9-4B26-44D6-A1BB-40C0FE377728@ifi.uio.no>
In-Reply-To: <88C880B9-4B26-44D6-A1BB-40C0FE377728@ifi.uio.no>
MIME-Version: 1.0
X-Mailer: Microsoft Outlook 15.0
Thread-Index: AQLqPZ7YNAMdgKXUwCSqRxv62pP6+wJmZ4dkAhiQoQkBo0RrLgHBFIkSAWlTB3GcDzQV4A==
Date: Wed, 04 Nov 2015 23:09:56 +0900
Message-ID: <cfe51395ee504bd562bd250d2e1c5d6a@mail.gmail.com>
To: Michael Welzl <michawe@ifi.uio.no>
Content-Type: text/plain; charset="UTF-8"
X-DomainID: tieto.com
Archived-At: <http://mailarchive.ietf.org/arch/msg/taps/cKAt-vizfLgkDBX7gAK7xZFryj4>
Cc: gorry@erg.abdn.ac.uk, taps@ietf.org
Subject: Re: [Taps] RFC 6458 etc. in draft-welzl-taps-transports
X-BeenThere: taps@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Discussions on Transport Services <taps.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/taps>, <mailto:taps-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/taps/>
List-Post: <mailto:taps@ietf.org>
List-Help: <mailto:taps-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/taps>, <mailto:taps-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 04 Nov 2015 14:09:58 -0000
Yes we agree ! :-) . Glad that ended here. Thanks a lot for the patience. BR, Karen > -----Original Message----- > From: Michael Welzl [mailto:michawe@ifi.uio.no] > Sent: 4. november 2015 21:39 > To: Karen Elisabeth Egede Nielsen <karen.nielsen@tieto.com> > Cc: <gorry@erg.abdn.ac.uk> Fairhurst <gorry@erg.abdn.ac.uk>; > taps@ietf.org > Subject: Re: [Taps] RFC 6458 etc. in draft-welzl-taps-transports > > Hi, > > I'm cutting the part about URG, because here we agree. I think we agree > about PUSH too, but I'll say it in line below :-) > > > >> and about PUSH: > >> > >> *** > >> The 'receive' > >> command can (under some conditions) yield the status of the PUSH flag > >> according to [RFC0793], but this TCP functionality is made optional > >> in [RFC1122] and hence not considered here. Generally, section > >> 4.2.2.2 of [RFC1122] says that PUSH on send calls MAY be implemented, > >> which could be a reason not to consider it here. However, the text > >> then explains that "an interactive application protocol must set the > >> PUSH flag at least in the last SEND call in each command or response > >> sequence", and most implementations provide some option to cause a > >> behavior that is in some way similar to PUSH. Therefore PUSH is > >> described as a part of SEND here. > >> *** > >> > > [Karen Elisabeth Egede Nielsen] There is a very clear distinction in > > between capitalized Keywords and non-capitalized must's and should's > > in section > > 4.2.2.2 of rfc1122. > > I know.... > > > > I have no problem with assuming that TCP implementations follow > > MUST set the PSH bit in > > the last buffered segment (i.e., when there is no more > > queued data to be sent). > > but it isn't a MUST, it's a "must". > > > > I have no problem with assuming that applications, if the MAY option > > is supported at the api, s Is assumed to set the PUSH flag at the > > occasions described in RFC1122. > > > > But I do have a problem with the following text - repeated from your > > paragraph above;: > > > >> and most implementations provide some option to cause a > >> behavior that is in some way similar to PUSH. Therefore PUSH is > >> described as a part of SEND here. > > > > You are referring to "most implementations provide some option" > > > > What do you mean by "most implementations" ? > > > > What do you mean by "option" ? > > GAAAAAAH !!!!!! Here you did catch me diverging from my own rules!!!!!!! > That must have come from looking at actual API implementations, and no it > REALLY shouldn't be there. I did intend to strictly only follow RFCs. Big > mistake, very sorry! > > > > My problem particularly with "the option" part, is that is to me in > > the context of an API description sounds as if this "option" is a > > function in the API (read an "API option") that the ULP can invoke. > > Based on what you said about capitalization and on the mistake in talking > about actual implementations I saw, I tend to erase PUSH from SEND > because it's only qualified as MAY, period. > Ok? > > > >> We can debate these decisions, but I did base them on RFC 1122 and > >> RFC 6093. > >> > >> More about PUSH: > >> > >>> [Karen Elisabeth Egede Nielsen] > >>> > >>> The PUSH bit as settable by application was recognized as being > >>> optional by RFC1122 (1989). > >>> > >>> Enforcing the PUSH bit set via Nagle off, does not mean that one can > >>> control the PUSH function (one do get Nagle off at the same time). > >> > >> Technically, I don't see a connection between Nagle and PUSH. It's > >> kind > > of > >> obvious though that if you want small messages to be delivered fast, > >> you don't want Nagle and you do want PUSH, but still these are > >> separate functions. > > > > [Karen Elisabeth Egede Nielsen] Perfect. I cound't agree more !! > > I was trying to understand which "API option" that you might be > > referring to, and as I have had many (in my opinion confused) > > discussions with certain TCP users which looking for the "API option" > > for setting of the PUSH, thought they had to use Nagle off for this. > > While in fact they didn't have to do anything because the stack will > > set the PUSH bit following the RFC1122 MUST. > > > >> This sounds exactly like the type of confusion we may end up with if > >> we follow actual API implementations and not what the spec says! > >> > > [Karen Elisabeth Egede Nielsen] GOOD. I am happy that we avoid this. > > So could we loose the text about that the TCP API provides an option > > to control the PUSH flag - :-) :-) !! > > See above - we're in agreement. I'll drop it. > > > >>> Possible certain implementations have certain tweeks so that one may > >>> control the PUSH bit from ULP. If that is consider to be the Defacto > >>> standard, even if RFC1122 says that it is optional, then I do not > >>> disagree, but is it so ? > >> > >> See my interpretation above: I think RFC 1122 is a bit ambiguous > >> here, > > once > >> saying it MAY be implemented, then saying "an interactive application > >> protocol must set the PUSH flag ...." ... though this isn't a > > capitalized MUST. > >> > > [Karen Elisabeth Egede Nielsen] For what it is worth (if anything) > > this is not how I interpret the text. I understand the text as saying > > that if the MAY option to set PUSH in the apu is implemented then > > applications must do what the text says. But as > > RFC1122 is not really specifying what applications should or must do., > > these musts or should are not capitalized. > > - right. > > > > But I should assume that we could get the people working with > > RFC793bis in tcpm provide the "right" interpretation ?! > > Nah I think this is clear enough already. I'll drop PUSH from SEND. > > > >>> The PUSH bit makes the data be available for read by the application > >>> (when > >>> in-line) but I am not sure this, as defacto, makes the data be > >>> pushed to the application in most common api's exposed to applications > today. > >>> In some implementations, a socket becomes readable based on the > >> amount > >>> of data that has arrived correlated with when the application has > >>> asked to be awaken (in number of bytes), but the PUSH flag makes no > >>> difference. Possibly that is a deficiency of such implementations. > >>> Not sure ? > >>> I know that in some implementations then a socket becomes readable > >>> only if the receive buffer is full or the PUSH flag has arrived. > >> > >> Yes, it's certainly implementation-dependent. The idea of PUSH is > >> that, > > when > >> not using it, the receiving process doesn't need to be woken up every > > time a > >> new handful of bytes arrive. > >> > > [Karen Elisabeth Egede Nielsen] Yes and certainly, as many TCP > > implementations simply always sets the PUSH flag following the MUST of > > rfc1122, section 4.2.2.2, > > > > then the PUSH flag ends up being set on a lot of segments just because > > the application is writing in small chunks.... > > > > Or even worse - the PUSH flag it is lost when the SEND buffer gets > > congested, which is terribly when the receiving side read operation > > has implemented trust on the PUSH for being waken up. This actually is > > something that we have seen resulting in outages (signaling network > > collapse) even recently. > > > > > >> > >>> Perhaps I should ask in tcpm, if TCP implementations generally > >>> pushes the data to the application (or notifies the application) > >>> when the PUSH bit is seen ? Or perhaps I will get an overwhelming - YES > SURE !! > >>> - response this to email, and then at least the receive part of the > >>> PUSH is then inline with RFC1122/RFC793. > >> > >> It's a mechanism of TCP, it's described in the spec, and it comes > >> with > > some > >> SHOULD's and MAY's. I think one can create a very efficient TCP > >> implementation that completely ignores PUSH, > > but, depending on your > >> system, it can also be helpful. > > [Karen Elisabeth Egede Nielsen] Perhaps - but it can also be very > > harmful to put trust in the PUSH flag, if the two ends to not agree on > > what controls it - the ULP or the TCP SND buffer congestion level... > > > > Based on my analysis above, I thought it makes > >> sense to assume that at least the sender can set it (I think it's > >> not > > explicit in > >> today's APIs but implicit... I did take a look (just out of > >> curiosity, > > not breaking > >> my own rules when writing the document! ;-) ) and I think I found > >> it > > in the > >> BSD API or in some older version thereof). > >> > > [Karen Elisabeth Egede Nielsen] But the implicit is what gets us into > > the confusion ! > > How is it implicitly implemented in API implementations ? > > > > (Despite that rfc1122 say that it need not be). > > ... we agree already. > > > > >> See, that's the point of trying to rely only on RFCs: we end up with > >> a > > view of > >> what really should be implemented by the APIs out there. If it isn't, > > well, > >> that's bad, but then it's really a breach of the spec. > >> > > [Karen Elisabeth Egede Nielsen] In this case then I am afraid that it > > is the spec that allowed the implementations to distroy the functions > > as it (rfc793 to rfc1122) has given some freedom in implementations. > > The uncertainty of which has made the function unreliable/not > trustworthy. > > (Or perhaps the function was never a good idea to begin with..) > > - which I why I want to drop parts of the protocol implementation that are > not at least qualified as SHOULD. > > > >> 2) SCTP: > >> -------------- > >> > >> > >>>>> 2) Reason two, more serious: RFC 6458 is Informational, and my > >>>>> understanding was that this is just one description of one API > >>>>> implementation, not a recommendation or even prescription of what > >>>>> all SCTP implementations must provide. However, my decision for > >>>>> draft-welzl-taps-transports was to *exclude* things that are only > >>>>> optional to implement - I don't think we want to end up with a > >>>>> TAPS system that provides services that, alas, on Operating System > >>>>> XY are not available because here only a subset of the API is > implemented. > >>>>> Therefore I went with a minimal set of functions that I thought we > >>>>> can assume are implemented everywhere (well, at least in every > >>>>> system that claims to "follow the spec"). Can we assume that > >>>>> every system that claims to implement SCTP in accordance with the > >>>>> spec fully implements > >>> RFC > >>>> 6458? > >>>>> > >>>> GF: From a TSVWG Chair perspective, beware here... *ALL* more > >>>> recent IETF SCTP API work from TSVWG is INFO. Each SCTP RFC is > >>>> expected to > >>> have > >>>> an informative section that describes the API together with the > >>> normative > >>>> protocol spec. That is not because there are expected to be > >>>> alternatives > >>> to > >>>> choose from: It's because, as I understand, the IETF is not the > >>>> formal standards body for specification of such normative APIs. > >>>>> > >>> [Karen Elisabeth Egede Nielsen] Not only that. RFC6458 was around as > >>> a tsvwg wg draft long before RFC4960 work was started. My > >>> understanding is that while going from RFC2960 to RFC4960 one did > >>> not bother "too much" with updating the API section of RFC2960 --> > >>> RFC4960, as the finer API details were being worked on in this wg draft. > >>> > >>> However I was not personally involved in IETF SCTP back then, so I > >>> like to ask others to confirm this. > >>> > >>> Something else: > >>> > >>> The implementation that I have worked with was initiated in the > >>> early > >>> 2000 and at that time we looked for RFC2960bis (RFC4960) for > >>> protocol specification and the socket api for api features. > >>> Yes there are particulars of the RFC6458 which represent > >>> implementations aspects. For example our API implementation > >> implements > >>> certain calls in the format they were specified in ver 14/15 of the > >>> socket api from draft from around 2007 and not the exact form the > >>> calls have in RFC6458 (version 30-some of the draft) from 2011, but > >>> the features available as controllable has not changed much during > >>> the years. And it is the features available, not the implementation > >>> aspects that we are focused on in Taps. > >> > >> I agree, I don't care much about the call format > >> > >> > >>> NB: > >>> But I have to admit that in our SCTP API implementation we > >>> implements the basic POSIX api functions of TCP/IP for SCTP simply > >>> when they makes as much sense for SCTP as they do for TCP/IP. For > >>> example DSCP is settable via a socket option per association, even > >>> if I think this cannot be found in RFC6458 nor in RFC4960 (which is > >>> a bit of a surprise to me). > >> > >> > >> Hm, this is about the only piece from RFC 6458 that I did cite in > > draft-welzl- > >> taps-transports, just as a comment, because I found it disturbingly > >> incoherent that TCP provides this but it's missing in RFC 4960: > >> > >> *** > >> o Change DSCP > >> Protocols: TCP > >> Comments: This is described to be changeable for SCTP too in > >> [RFC6458]. > >> *** > >> > >> In RFC 6458, "uint8_t spp_dscp;" is a part of the per-adress > > parameters, > >> struct sctp_paddrparams. > >> > >> > > [Karen Elisabeth Egede Nielsen] Great. I missed it yesterday. Couldn't > > understand it either. > > Perhaps I can blame the jetlag... > > > >>> So my view > >>> on the basic API functions of SCTP (as for TCP) is influenced by this. > >>> Which I have to recognize. > >> > >> Hm. This statement makes me feel a bit uneasy... > >> > > > > [Karen Elisabeth Egede Nielsen] Yes. :-(. > > > >> > >> So, if we have consensus that RFC 6458 reflects the services (not > > necessarily > >> the precise call format) that are supposed to be provided by any SCTP > >> implementation, I'm happy to include it. Let's hear some more voices > >> perhaps... > >> > > [Karen Elisabeth Egede Nielsen] Yes definitively. > > > Cheers, > Michael
- [Taps] RFC 6458 etc. in draft-welzl-taps-transpor… Michael Welzl
- Re: [Taps] RFC 6458 etc. in draft-welzl-taps-tran… gorry
- Re: [Taps] RFC 6458 etc. in draft-welzl-taps-tran… Joe Touch
- Re: [Taps] RFC 6458 etc. in draft-welzl-taps-tran… Karen Elisabeth Egede Nielsen
- Re: [Taps] RFC 6458 etc. in draft-welzl-taps-tran… Karen Elisabeth Egede Nielsen
- Re: [Taps] RFC 6458 etc. in draft-welzl-taps-tran… Joe Touch
- Re: [Taps] RFC 6458 etc. in draft-welzl-taps-tran… Michael Welzl
- Re: [Taps] RFC 6458 etc. in draft-welzl-taps-tran… Karen Elisabeth Egede Nielsen
- Re: [Taps] RFC 6458 etc. in draft-welzl-taps-tran… Michael Welzl
- Re: [Taps] RFC 6458 etc. in draft-welzl-taps-tran… Karen Elisabeth Egede Nielsen
- Re: [Taps] RFC 6458 etc. in draft-welzl-taps-tran… Joe Touch
- Re: [Taps] RFC 6458 etc. in draft-welzl-taps-tran… Michael Welzl
- Re: [Taps] RFC 6458 etc. in draft-welzl-taps-tran… Karen Elisabeth Egede Nielsen
- Re: [Taps] RFC 6458 etc. in draft-welzl-taps-tran… Michael Welzl
- Re: [Taps] RFC 6458 etc. in draft-welzl-taps-tran… Michael Tuexen
- Re: [Taps] RFC 6458 etc. in draft-welzl-taps-tran… Michael Welzl