[nfsv4] Stream transports that preserve boundaries, RPC, and Record Marking
"Mike Eisler" <mre-ietf@eisler.com> Fri, 19 December 2008 22:27 UTC
Return-Path: <nfsv4-bounces@ietf.org>
X-Original-To: nfsv4-archive@megatron.ietf.org
Delivered-To: ietfarch-nfsv4-archive@core3.amsl.com
Received: from [127.0.0.1] (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 6A13D28C130; Fri, 19 Dec 2008 14:27:44 -0800 (PST)
X-Original-To: nfsv4@core3.amsl.com
Delivered-To: nfsv4@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id A057028C130 for <nfsv4@core3.amsl.com>; Fri, 19 Dec 2008 14:27:43 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id qsl8qoV6LAyl for <nfsv4@core3.amsl.com>; Fri, 19 Dec 2008 14:27:42 -0800 (PST)
Received: from webmail3.sd.dreamhost.com (sd-green-dreamhost-133.dreamhost.com [208.97.187.133]) by core3.amsl.com (Postfix) with ESMTP id 9F76628C0EE for <nfsv4@ietf.org>; Fri, 19 Dec 2008 14:27:42 -0800 (PST)
Received: from webmail.eisler.com (localhost [127.0.0.1]) by webmail3.sd.dreamhost.com (Postfix) with ESMTP id CF2D7142F0 for <nfsv4@ietf.org>; Fri, 19 Dec 2008 14:27:34 -0800 (PST)
Received: from 198.95.226.230 (SquirrelMail authenticated user mre-ietf@eisler.com) by webmail.eisler.com with HTTP; Fri, 19 Dec 2008 14:27:34 -0800 (PST)
Message-ID: <433cca98a5fdbd50862d3f4f7306a4a5.squirrel@webmail.eisler.com>
Date: Fri, 19 Dec 2008 14:27:34 -0800
From: Mike Eisler <mre-ietf@eisler.com>
To: nfsv4@ietf.org
User-Agent: SquirrelMail/1.4.15
MIME-Version: 1.0
Subject: [nfsv4] Stream transports that preserve boundaries, RPC, and Record Marking
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: NFSv4 Working Group <nfsv4.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/pipermail/nfsv4>
List-Post: <mailto:nfsv4@ietf.org>
List-Help: <mailto:nfsv4-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: nfsv4-bounces@ietf.org
Errors-To: nfsv4-bounces@ietf.org
https://datatracker.ietf.org/idtracker/draft-ietf-nfsv4-rpc-netid/comment/89786/ has a comment regarding, http://tools.ietf.org/html/draft-ietf-nfsv4-rpc-netid-05.txt that notes that some connection oriented transports preserve message boundaries, and thus RPC record marking would technically not be needed. Thus I need to be explicit about each of netids specified for each transport that provided reliable, in-order deliver. But just because a transport supports boundary preservation doesn't mean we should necessarily dispose of it. For example SCTP. SCTP uses pretty much the same idea as RPC record marking, except that I find SCTP's approach to be much less error prone. I.e. in SCTP data chunks there are two bits: B and E. If B is set, the chunk in the SCTP packet is the beginning of the record. If E is set it is the end of the record. RPC record marking only has the equivalent of the E bit, and the result is that if an RPC sender is not careful. Given the number of data corruption issues I've found with NFS/TCP clients that mess up the record marking, if I ever wrote a explicit specification for NFS/SCTP I would state that the client and server MUST support the ability to use native SCTP record marking. The only advantage I can see to specifying a netid for sctp that has RPC record marking is for the case when the sender wants to send a really long record, and the in-kernel interfaces (e.g. some socket API) cannot cope with say a 5 Gigabyte message, due to overflow of 32 bit integers, or SCTP receiver implementations that try to buffer entire messages (perhaps because the receiver's receive APIs are not capable of marking boundaries across multiple calls to the receive interface). Three questions for the WG: 1. Do existing RPC/SCTP implementations use record marking? If so, I will specify a variant of a netid for SCTP that uses record marking in addition to one that does not. 2. Assuming the answer to 1 is no, how do people feel about specifying a netid for SCTP and another similar transports that has the "unnecessary" record marking option? 3. NFSv4 specifies port 2049 for TCP and UDP. We will want it to use 2049 for SCTP (right?). Is there any objection to using 2049 for the variant of RPC/SCTP that does NOT use RPC record marking? If we find that we need NFSv4/RPC/SCTP w/ RPC record marking, we would need a new port from IANA. This is because RPC requests do not include the netid, and thus there's no way, that I can see, to have on the same port, streams with record marking and streams without record marking. -- Mike Eisler, Senior Technical Director, NetApp, 719 599 9026, http://blogs.netapp.com/eislers_nfs_blog/ _______________________________________________ nfsv4 mailing list nfsv4@ietf.org https://www.ietf.org/mailman/listinfo/nfsv4
- [nfsv4] Stream transports that preserve boundarie… Mike Eisler
- Re: [nfsv4] Stream transports that preserve bound… Lars Eggert
- Re: [nfsv4] Stream transports that preserve bound… Mike Eisler