Re: [nfsv4] FedFS: Comment about fedfsFslPort
Chuck Lever <chuck.lever@oracle.com> Thu, 20 October 2011 21:14 UTC
Return-Path: <chuck.lever@oracle.com>
X-Original-To: nfsv4@ietfa.amsl.com
Delivered-To: nfsv4@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B83D61F0C43 for <nfsv4@ietfa.amsl.com>; Thu, 20 Oct 2011 14:14:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.466
X-Spam-Level:
X-Spam-Status: No, score=-5.466 tagged_above=-999 required=5 tests=[AWL=-0.679, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4, SARE_SPEC_REPLICA_OBFU=1.812]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Km4pthShPGVh for <nfsv4@ietfa.amsl.com>; Thu, 20 Oct 2011 14:14:34 -0700 (PDT)
Received: from acsinet15.oracle.com (acsinet15.oracle.com [141.146.126.227]) by ietfa.amsl.com (Postfix) with ESMTP id 771CC1F0C3F for <nfsv4@ietf.org>; Thu, 20 Oct 2011 14:14:34 -0700 (PDT)
Received: from ucsinet21.oracle.com (ucsinet21.oracle.com [156.151.31.93]) by acsinet15.oracle.com (Switch-3.4.4/Switch-3.4.4) with ESMTP id p9KLESHa016263 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 20 Oct 2011 21:14:30 GMT
Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by ucsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p9KLERiO029090 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 20 Oct 2011 21:14:27 GMT
Received: from abhmt102.oracle.com (abhmt102.oracle.com [141.146.116.54]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p9KLEMov026980; Thu, 20 Oct 2011 16:14:22 -0500
Received: from [10.55.16.163] (/198.95.226.40) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 20 Oct 2011 14:14:21 -0700
Mime-Version: 1.0 (Apple Message framework v1084)
Content-Type: text/plain; charset="us-ascii"
From: Chuck Lever <chuck.lever@oracle.com>
In-Reply-To: <alpine.LFD.2.02.1110201336530.13132@jlentini-linux.nane.netapp.com>
Date: Thu, 20 Oct 2011 14:14:18 -0700
Content-Transfer-Encoding: quoted-printable
Message-Id: <3563255E-724D-4360-A4BD-ACAF64B36516@oracle.com>
References: <F2ECCB79-4742-4420-95F6-58ED2957A06F@oracle.com> <DA13BB29-39B4-436E-B7B5-F3C66C7F5808@netapp.com> <DDAF2679-A76D-459F-8B96-582576851D29@oracle.com> <A05BB310-57C0-4567-B6C3-82CAC4E5C50A@oracle.com> <4E9617AC.1080905@oracle.com> <alpine.LFD.2.02.1110191444250.13132@jlentini-linux.nane.netapp.com> <A2C68E1E-DE96-499B-9BDC-F5E527F4B11A@oracle.com> <474D25B5-42E3-4AA4-BC1C-789F88EA3593@oracle.com> <alpine.LFD.2.02.1110201010350.13132@jlentini-linux.nane.netapp.com> <B34D7100-FBAF-4476-B3FE-771ABA46DEDA@oracle.com> <alpine.LFD.2.02.1110201336530.13132@jlentini-linux.nane.netapp.com>
To: James Lentini <jlentini@netapp.com>
X-Mailer: Apple Mail (2.1084)
X-Source-IP: ucsinet21.oracle.com [156.151.31.93]
X-CT-RefId: str=0001.0A090206.4EA08F38.005D,ss=1,re=-2.300,fgs=0
Cc: Robert Thurlow <Robert.Thurlow@oracle.com>, nfsv4@ietf.org
Subject: Re: [nfsv4] FedFS: Comment about fedfsFslPort
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: NFSv4 Working Group <nfsv4.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/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>
X-List-Received-Date: Thu, 20 Oct 2011 21:14:35 -0000
On Oct 20, 2011, at 12:37 PM, James Lentini wrote: > > I understand your concern now. Point taken: when an FSL contain a DNS > name and port number, NFS does not allow the DNS name and port pair to > be included in a referral. > > I think there are two separate issues here: (a) what is the format of > server's name in an NFS referral? and (b) how does a FedFS fileserver > populate a referral's server name from an FSL that includes more > information than the referral format supports? One example of (b) is > the case we've been discussing of a DNS name and port, but there are > others. > > With regards to (a), the specifications define different formats for > the server's name. > > NFSv4.0 (RFC 3530) states that the server's name in an fs_locations > referral is either a DNS name or IP address, but NO port. The relevant > text from page 60: > > An entry in the server array is an UTF8 string and represents one > of a traditional DNS host name, IPv4 address, or IPv6 address > > NFSv4.0bis (draft-ietf-nfsv4-rfc3530bis-15) matches NFSv4.0. It states > that the server's name in an fs_locations referral can be a DNS name > or IP address with NO port. The relevant text from page 97: > > An entry in the server array is a UTF-8 string and represents one > of a traditional DNS host name, IPv4 address, IPv6 address, or an > zero-length string. A zero-length string SHOULD be used to > indicate the current address being used for the RPC call. > > NFSv4.1 (RFC 5661) states that the server's name in an fs_locations > can be a DNS name or IP address with optional port. The relevant text > from page 258: > > An entry in the server array is a UTF-8 string and represents one > of a traditional DNS host name, IPv4 address, IPv6 address, or a > zero-length string. An IPv4 or IPv6 address is represented as a > universal address (see Section 3.3.9 and [15]), minus the netid, > and either with or without the trailing ".p1.p2" suffix that > represents the port number. If the suffix is omitted, then the > default port, 2049, SHOULD be assumed. A zero-length string SHOULD > be used to indicate the current address being used for the RPC > call. > > When read literally, NFSv4.1 prescribes a more restrictive server name > for the more descriptive fs_locations_info referral. That's > counter-intuitive to me. RFC 5661 states that the server name in a > fs_locations_info referral can ONLY contain an IP address and optional > port (no DNS name). The relevant text from page 265: > > o The server string (fls_server). For the case of the replica > currently being accessed (via GETATTR), a zero-length string MAY > be used to indicate the current address being used for the RPC > call. The fls_server field can also be an IPv4 or IPv6 address, > formatted the same way as an IPv4 or IPv6 address in the "server" > field of the fs_location4 data type (see Section 11.9). > > NFSv4.2 (draft-ietf-nfsv4-minorversion2-05) uses the same formats at > NFSv4.1. > > My summary of a referral's server format is: > > | fs_locations | fs_locations_info > -------------------------------------------------------------------- > NFSv4.0 | DNS name, IP | N/A > --------------------------------------------------------------------- > NFSv4.0bis | DNS name, IP | N/A > -------------------------------------------------------------------- > NFSv4.1 | DNS name, IP (w/ optional port) | IP (w/ optional port) > -------------------------------------------------------------------- > NFSv4.2 | DNS name, IP (w/ optional port) | IP (w/ optional port) > > Note that some of these formats do not support all of the information > in an NFS FSL. > > With regards to question (b), there are at least the following > approaches to dealing with the problem of populating a referral's > server name from an FSL that includes more information than the > referral format supports: > > 1. The fileserver could follow the advice given in Section 2.8.3 of > draft-ietf-nfsv4-federated-fs-protocol-11 on "Generating A Referral > from Fileset Locations" and "convert or reduce the FSL record's > contents in a manner appropriate to the referral format". > > I'd classify translating the DNS name to an IP address when an FSL > contains both a DNS name and port as an example of a conversion. As > you've noted below, there are drawbacks to this approach. > > My approach would have been to drop the port and return the > DNS name unaltered in referral types that don't support both a DNS > name and port. > > Given that we pictured different approaches to the conversion > problem is a bad sign. > > 2. Define the NFS FSL's server name format to exactly match the NFS > referral format as you've proposed below. That is appealing, but > as you can see from my summary above, there isn't a single common > format. Very recently Tom Haynes proposed (on this list) updating 3530bis to allow a universal address with port to be used in fs_locations4. See: http://www.ietf.org/mail-archive/web/nfsv4/current/msg10307.html and a few subsequent comments on this from me. > The format could be the lowest common denominator (only IP > addresses with no port are allowed across all the different > referral formats), but the loss of expressivity would be > disappointing. > > Here's a strawman proposal for how to address these issues: > > - Remove the fedfsFslPort from the fedfsFsl object > > - Define a new fedfsNfsFslPort type with the same format as the > fedfsFslPort and add it to the fedfsNfsFsl object > > - Remove the fedfsFslHost from the fedfsFsl object > > - Define a new fedfsFslNfsHost type with the same format as the > current fedfsFslHost and add it to to the fedfsNfsFsl object > > - Explicitly define the conversion rules for all of the combinations > of fedfsNfsFslHost and fedfsNfsFslPort with NFS referral types This is going in the right direction, in my opinion. But I think we can define fedfsFslNfsHost to contain universal addresses with port numbers and leave off fedfsNfsFslPort, if 3530bis allows universal addresses in the fls_server field. In the event we can't put a universal address with a port into fedfsNfsFslHost, I'm not comfortable with simply "dropping the port number" for fs_locations4. During a referral or migration, a 3530(nonbis)-compliant client won't ever be able to connect to a server that uses a port other than 2049. Such records would therefore be useless to the client. Thus perhaps it would be better to have the server simply drop such records entirely for NFSv4.0? > Opinions? > > Sorry for the wordy email, > -james > > On Thu, 20 Oct 2011, Chuck Lever wrote: > >> Hi James- >> >> On Oct 20, 2011, at 7:17 AM, James Lentini wrote: >> >>> >>> >>> On Wed, 19 Oct 2011, Chuck Lever wrote: >>> >>>> >>>> On Oct 19, 2011, at 12:10 PM, Chuck Lever wrote: >>>> >>>>> >>>>> On Oct 19, 2011, at 11:54 AM, James Lentini wrote: >>>>> >>>>>> >>>>>> >>>>>> On Wed, 12 Oct 2011, Robert Thurlow wrote: >>>>>> >>>>>>> Chuck Lever wrote: >>>>>>> >>>>>>>> Thus there's no need for a separate FSL field to express a port value for >>>>>>>> NFS referrals. Regardless of whether 3530bis is changed as proposed, I >>>>>>>> think we should remove the fedfsFslPort field, and leave that detail to the >>>>>>>> subclasses of fedfsFsl where it is meaningful. >>>>>>> >>>>>>> Agreed. >>>>>> >>>>>> Removing the optional fedfsFslPort attribute from the fedfsFsl >>>>>> objectclass makes sense to me. Subclasses of fedfsFsl should include a >>>>>> port when necessary. >>>>>> >>>>>> However, I believe that an NFS FSL should include a port attribute. >>>>>> >>>>>> As defined in RFC 5661, NFSv4.1 allows for modified universal >>>>>> addresses to be included in a referral (see RFC 5661's definition of >>>>>> the fls_server field in Section 11.10.1). >>>>>> >>>>>> As defined in Section 4.2.1.2 of >>>>>> draft-ietf-nfsv4-federated-fs-protocol-11, the format of the >>>>>> fedfsFslHost attribute does not allow universal addresses or port >>>>>> values to be specified. >>>>>> >>>>>> The combination of a fedfsFslHost and fedfsFslPort (renamed to be a >>>>>> fedfsNfsFslPort?) provide enough information to generate the modified >>>>>> universal addresses used in NFSv4.1 referrals. >>>>> >>>>> My concern about this is that now the file server would have to >>>>> perform a DNS lookup to discover the address that is bound to the >>>>> fedfsFslHost. Can we guarantee that the client would get the same >>>>> results from a DNS lookup, given that hostname? Does that matter? >>>> >>>> I'll go a little further here, based on recent implementation >>>> experience. >>>> >>>> The intent as I understand it is that an NFS FSL stores information >>>> that the file server translates to either fs_locations4 or >>>> fs_locations_info4. The challenge of this translation has been >>>> dealing with information in an NFS FSL that is stored differently or >>>> is semantically different than what's in fs_locations{_info}4. >>>> >>>> This includes not just fedfsFslPort. fs_locations4, for instance >>>> has the possibility of transmitting a list of servernames that share >>>> the same export path. The NFS FSL, however, stores a single server >>>> name and a single export path. >>>> >>>> And before you mentioned it today, I didn't realize that >>>> fedfsFslHost could express only a DNS hostname, and not IP or >>>> universal addresses. /me slaps forehead. >>> >>> Actually a fedfsFslHost can store a DNS name, IPv4 address, or IPv6 >>> address. >>> >>> The fedfsFslHost attribute's format is defined by its superior >>> attribute's format, the fedfsNetAddr, which "is the locative name of a >>> network service in either IPv4, IPv6, or DNS name notation. See >>> section 4.2.1.2 of draft-ietf-nfsv4-federated-fs-protocol-11 for the >>> full definition. >> >> Got it. >> >>>> This is another translation complication for file server >>>> implementors. IMO we would be better off if NFS FSLs were a closer >>>> match to fs_locations{_info}4. >>> >>> I don't see any need to do a translation. >> >> Your proposal adds a new translation requirement by specifying the >> FslPort in a separate field, and requiring that the file server >> perform a DNS lookup to construct a universal address in order to >> communicate the port number to clients. (Understood that this would >> only be necessary if FslPort contains a port number other than >> 2049). The natural way to express server names for NFS, codified in >> RFC 5661, includes a universal address, and the server name data can >> be multi-valued. >> >> My quibble is not with the richness of the NFS FSL, but rather that >> this information is expressed in a particular way in existing NFS >> implementations, and we are not providing the same way to express it >> in FedFS. Is there a strong reason for this? Are we for instance >> trying to address some deficiency in the fs_locations_info4 data? >> >> I continue to believe the FSL subclasses, on principal, should >> reflect the data and types in native file system referral >> information as closely as possible, and currently the NFS FSL does >> not. The file server may _choose_ to implement some dynamic policy >> with this data, but I don't think it should be limited to that: it >> should also be allowed to simply copy the information from the NFS >> FSL and stuff it into the fs_locations_info4 struct, in all cases. >> That would be the least surprising/confusing behavior to admins. >> >> I'm willing to concede on the multi-valued server name point, as an >> FSL is supposed to represent a single location. Noted, however, >> that a file server MAY convert multiple FSLs that vary only in their >> server name field by compressing this FSL list to a single >> fs_locations_info4 record with a list of server names. Right? Are >> there exceptions? >> >>>> As an example, we could also move fedfsFslHost to the NFS FSL, and >>>> allow the NFS version of this attribute to be multi-valued and >>>> contain the full range of string values that are allowed in the >>>> fls_server field in fs_locations_info4. I think that would be more >>>> natural for administrators who have already set up NFS referrals >>>> using other administrative interfaces native to their platform. >>>> >>>> More generally, I don't think we should assume that the data in >>>> "FslHost" will be the same type for every network file system, and >>>> that this information, therefore, is also specific to subclasses of >>>> fedfsFsl. >> >> -- >> Chuck Lever >> chuck[dot]lever[at]oracle[dot]com >> >> >> >> -- Chuck Lever chuck[dot]lever[at]oracle[dot]com
- [nfsv4] FedFS: Comment about fedfsFslPort Chuck Lever
- Re: [nfsv4] FedFS: Comment about fedfsFslPort Thomas Haynes
- Re: [nfsv4] FedFS: Comment about fedfsFslPort david.noveck
- Re: [nfsv4] FedFS: Comment about fedfsFslPort Chuck Lever
- Re: [nfsv4] FedFS: Comment about fedfsFslPort Trond Myklebust
- Re: [nfsv4] FedFS: Comment about fedfsFslPort Chuck Lever
- Re: [nfsv4] FedFS: Comment about fedfsFslPort Everhart, Craig
- Re: [nfsv4] FedFS: Comment about fedfsFslPort Robert Thurlow
- Re: [nfsv4] FedFS: Comment about fedfsFslPort Chuck Lever
- Re: [nfsv4] FedFS: Comment about fedfsFslPort James Lentini
- Re: [nfsv4] FedFS: Comment about fedfsFslPort Chuck Lever
- Re: [nfsv4] FedFS: Comment about fedfsFslPort Spencer Shepler
- Re: [nfsv4] FedFS: Comment about fedfsFslPort James Lentini
- Re: [nfsv4] FedFS: Comment about fedfsFslPort James Lentini
- Re: [nfsv4] FedFS: Comment about fedfsFslPort Chuck Lever
- Re: [nfsv4] FedFS: Comment about fedfsFslPort James Lentini
- Re: [nfsv4] FedFS: Comment about fedfsFslPort Chuck Lever
- Re: [nfsv4] FedFS: Comment about fedfsFslPort James Lentini
- Re: [nfsv4] FedFS: Comment about fedfsFslPort Chuck Lever