Re: [nfsv4] FedFS: Comment about fedfsFslPort

Chuck Lever <chuck.lever@oracle.com> Thu, 20 October 2011 15:58 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 77DFC21F8C9F for <nfsv4@ietfa.amsl.com>; Thu, 20 Oct 2011 08:58:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.297
X-Spam-Level:
X-Spam-Status: No, score=-6.297 tagged_above=-999 required=5 tests=[AWL=0.302, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4]
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 x-R8t7tNde-C for <nfsv4@ietfa.amsl.com>; Thu, 20 Oct 2011 08:58:18 -0700 (PDT)
Received: from acsinet15.oracle.com (acsinet15.oracle.com [141.146.126.227]) by ietfa.amsl.com (Postfix) with ESMTP id A77A721F8C92 for <nfsv4@ietf.org>; Thu, 20 Oct 2011 08:58:18 -0700 (PDT)
Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by acsinet15.oracle.com (Switch-3.4.4/Switch-3.4.4) with ESMTP id p9KFwFA9012657 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 20 Oct 2011 15:58:17 GMT
Received: from acsmt356.oracle.com (acsmt356.oracle.com [141.146.40.156]) by ucsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p9KFk6dn020071 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 20 Oct 2011 15:46:07 GMT
Received: from abhmt118.oracle.com (abhmt118.oracle.com [141.146.116.70]) by acsmt356.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p9KFw8is004675; Thu, 20 Oct 2011 10:58:08 -0500
Received: from [10.55.16.163] (/198.95.226.40) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 20 Oct 2011 08:58:08 -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.1110201010350.13132@jlentini-linux.nane.netapp.com>
Date: Thu, 20 Oct 2011 08:58:06 -0700
Content-Transfer-Encoding: quoted-printable
Message-Id: <B34D7100-FBAF-4476-B3FE-771ABA46DEDA@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>
To: James Lentini <jlentini@netapp.com>
X-Mailer: Apple Mail (2.1084)
X-Source-IP: ucsinet22.oracle.com [156.151.31.94]
X-CT-RefId: str=0001.0A090207.4EA04519.006B,ss=1,re=0.000,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 15:58:19 -0000

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