Re: [nfsv4] Benjamin Kaduk's Discuss on draft-ietf-nfsv4-mv0-trunking-update-03: (with DISCUSS and COMMENT)

Benjamin Kaduk <kaduk@mit.edu> Sat, 26 January 2019 20:30 UTC

Return-Path: <kaduk@mit.edu>
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 6F8AA130FC1; Sat, 26 Jan 2019 12:30:40 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.001
X-Spam-Level:
X-Spam-Status: No, score=-2.001 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=mit.edu
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 iblx9wijoD02; Sat, 26 Jan 2019 12:30:36 -0800 (PST)
Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-eopbgr770125.outbound.protection.outlook.com [40.107.77.125]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 02C66130FBD; Sat, 26 Jan 2019 12:30:35 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mit.edu; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TNZBWLeV2DyQAbdBvnYEHc644lAyovNm6zvpfW51gpA=; b=FxinP4suPCHNB3rKFtsx19GGNR5nPSX5ugcHNIl4QiZQj4t9Mb3WovtCeMFS7OFezcl6ttWg+VSEMZJ+/D1WqSEVerR2VqOYVu8iWmdCMtNSCupyHZd6S3JSGBES/+S/ml1ZUPpIWuQUIsfMcnwlDo8hVXYqUn06c8RP9tpM/Rk=
Received: from SN2PR01CA0079.prod.exchangelabs.com (2603:10b6:800::47) by BN7PR01MB3745.prod.exchangelabs.com (2603:10b6:406:81::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1558.19; Sat, 26 Jan 2019 20:30:34 +0000
Received: from CO1NAM03FT055.eop-NAM03.prod.protection.outlook.com (2a01:111:f400:7e48::200) by SN2PR01CA0079.outlook.office365.com (2603:10b6:800::47) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1558.16 via Frontend Transport; Sat, 26 Jan 2019 20:30:33 +0000
Authentication-Results: spf=pass (sender IP is 18.9.28.11) smtp.mailfrom=mit.edu; gmail.com; dkim=none (message not signed) header.d=none; gmail.com; dmarc=bestguesspass action=none header.from=mit.edu;
Received-SPF: Pass (protection.outlook.com: domain of mit.edu designates 18.9.28.11 as permitted sender) receiver=protection.outlook.com; client-ip=18.9.28.11; helo=outgoing.mit.edu;
Received: from outgoing.mit.edu (18.9.28.11) by CO1NAM03FT055.mail.protection.outlook.com (10.152.81.162) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1580.10 via Frontend Transport; Sat, 26 Jan 2019 20:30:32 +0000
Received: from kduck.mit.edu (24-107-191-124.dhcp.stls.mo.charter.com [24.107.191.124]) (authenticated bits=56) (User authenticated as kaduk@ATHENA.MIT.EDU) by outgoing.mit.edu (8.14.7/8.12.4) with ESMTP id x0QKUSRu027189 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 26 Jan 2019 15:30:30 -0500
Date: Sat, 26 Jan 2019 14:30:28 -0600
From: Benjamin Kaduk <kaduk@mit.edu>
To: David Noveck <davenoveck@gmail.com>
CC: draft-ietf-nfsv4-mv0-trunking-update@ietf.org, nfsv4-chairs@ietf.org, The IESG <iesg@ietf.org>, NFSv4 <nfsv4@ietf.org>, Spencer Shepler <spencer.shepler@gmail.com>
Message-ID: <20190126203028.GG49072@kduck.mit.edu>
References: <154706146206.5038.389871557428840458.idtracker@ietfa.amsl.com> <CADaq8je-npyZmw3HcU=its5BcpOD-fhBqyZUmDETmFWhV_PxPw@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <CADaq8je-npyZmw3HcU=its5BcpOD-fhBqyZUmDETmFWhV_PxPw@mail.gmail.com>
User-Agent: Mutt/1.10.1 (2018-07-13)
X-EOPAttributedMessage: 0
X-Forefront-Antispam-Report: CIP:18.9.28.11; IPV:CAL; SCL:-1; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10019020)(346002)(376002)(39860400002)(396003)(136003)(2980300002)(189003)(199004)(356004)(1076003)(55016002)(8936002)(229853002)(246002)(97756001)(8676002)(486006)(50466002)(6916009)(15650500001)(47776003)(76176011)(33656002)(305945005)(2906002)(1411001)(7696005)(36906005)(4326008)(478600001)(54906003)(88552002)(316002)(26826003)(186003)(86362001)(786003)(106466001)(14444005)(26005)(30864003)(104016004)(46406003)(106002)(956004)(426003)(75432002)(53416004)(6246003)(11346002)(39060400002)(476003)(126002)(446003)(23726003)(58126008)(16586007)(336012)(18370500001); DIR:OUT; SFP:1102; SCL:1; SRVR:BN7PR01MB3745; H:outgoing.mit.edu; FPR:; SPF:Pass; LANG:en; PTR:outgoing-auth-1.mit.edu; MX:1; A:1;
X-Microsoft-Exchange-Diagnostics: 1; CO1NAM03FT055; 1:44I9VER/1m/+AYY4zpyY1XjXzPw4lhc65dm2vkihz9oRkrGS6usFVLVOi3EPOhL/9XNZGmUxUdCydw4Xo/z1duEkkCjv/U8B2CbSNFOtTX8wl0Mg/xsgS9KYrJDcWkh/bZOZ1VoXr54y7SRqR6sbwqhj6+dvo0zmYZ/XGz/baso=
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 57755433-48e8-4e38-58fc-08d683cd1f38
X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4608076)(4709027)(2017052603328)(7153060); SRVR:BN7PR01MB3745;
X-Microsoft-Exchange-Diagnostics: 1; BN7PR01MB3745; 3:yIq+hSe3O/CCYyutY4g/j91+o80Tki5HfAPdgt6XpnDZUOqSqlc+3f4LewqF8VZWUmOdbWr7YK5lpbobEbup9GnM8rXoBxW2oLOgh6cSh2oc1k/BC7MBDBCGnwVqoYFYF0LDSlH3Ub7GIx44r7Ehw2OlBXpgRLyB90ZBI1t96peqnpGZreZCwvWM3SI322H3eotHXVH7hIVV54PC/tY0ZYf8v8neQscq4/ECtNtVNf1OIe5WFqjxI3Sv0TtBeBAwu/Y1VJv4JfpQli5qMQEWrwpQhQGa6oCaQTZxag2AcNorGzJrZ/HY6BhaLL5wZDL3KUzyWnAh1LIrxyEyNOVe7LCXWJ9LagnNEWX4GnS/iYgb29p1RjGKgySCGZPUJOdU; 25:EJ5jzBfwB4HQ4GL130iCehTaqP3E+yHqo70trV0KP8QaVnZ0OcTAULa+KEx+K2aMq3W9vjU5X/E3QriWGK+HvKGfiaDXfIYfd1yTmiWubF7I34TkTtppwXcmWHHqV2a9kslynjm+XBf/9CT6PGgSQfr3uKv5QOcJBmrVzbgYJ3cOQzMWgQEKasl0WvQC9SxxFcB8HWw3TORnuziGncL8V6N6i4CrcQTtGvBFE+yD5heiWNXnS77uCxt/+v1GMHRFtvtda9lS/qh3YImbOTFlNwOYXuOmGwKm22JweYTmeHDd3r1ujX22mzJeGix1e/9JlHdUkv3Xq3WlmgmBpWuUVA==
X-MS-TrafficTypeDiagnostic: BN7PR01MB3745:
X-Microsoft-Exchange-Diagnostics: 1; BN7PR01MB3745; 31:VujS0RT7UpmJLaiphikT3jaBt4O47/HX22GxO9sK1Vm1gVJVIOcNB2IbTCfPlT1trcv2fQmr/wo+fMyNusw2UaJ0sTBCV8Ln1NFUQOd4w4j816mM9MI4sXGAyp0pJPzKxeOcCxeJcSJbGti8YLD+Dru6hl+uzvUPCW7lkObamxdWfkJl9hbDCDf8pJ3iSXwph7eWCImmkmAnNRfIFkWE20MGvA6eDMg5GpNQ/NrxBB0=; 20:E5ICma31Uh8XjyQcYyi9+DPsiuTSKAe+ooZ22IcAL5ujtU+dHSugI8x3U1W1NEQlhuAORVFryvlgbeRlqsMoKzsruB9vb2tPOaf/iwipIxlx2GtneB//NXbP6ImWAO3AnvqaydJ+wZU8JLbefSBrE2A1HgvnsQhbM58BaQ9OIJRCGnqECJD+pH4hbjp7/s6+AxbLf5zTrVv6+KX4G2HDeAv/mm12KH5emTBbrozinMH04wLWpy5UpBvYUKClpotlz855+1EZdBBBbz74AgOwBxNKvMpsVSUdwtAqkXj1sEWRo28rBVARQdoztaj+FB73cs/ZsEsi2lQw4ClmATu3xZQT2TykhkzSpvvjgiItO7Fy2uERFdVvom76XznotuvMlStojvyGkmkVsSlny69/AsiXRwqpcAS6VQuJp8Yo5SzXfp3qEfh0neqpxLRu5BH/H3/8DwSDFf2HqtfPIIyiC2TASucDr3BAbCyrjJtX7h03zgke3yOFvR8euo2pT3MlwyqMcwT31KCuOKqax4Vzf9iHKrPX2hRts+dty0Y7bcolJIFcZ80z+/VPyI44QV9b75UnrbPqtHpJyQ2xu4rfApW1ZNUNmZx6XrQoQUNsDSc=
X-Microsoft-Antispam-PRVS: <BN7PR01MB3745069539B26FFB5673504CA0940@BN7PR01MB3745.prod.exchangelabs.com>
X-Microsoft-Exchange-Diagnostics: 1; BN7PR01MB3745; 4:rGPbLsQFjwk7loaPrBSM+aIW4D+IsgM2tbluhlw6vH1DNArAZXlr9QmHzQ4aFjdfajxSVmzkdSunZOY5EslT6KL92B5Dy4SsrY7FS58n5Vbv/P7xXSgYh5lQtcioJejLcA2Uo1lHC0cqCdCvGwcscre1AkDT8cwP01QX0WdAHqnroQj6lnKpcp8wEkUXg0dEQIncK3EUzQTZIzqqwdHt8GaQpOX8O/Q0t19Hi+wd0HcCgonBksL1ZGq/VMmhl0sf1X00+oXa8ZgRTy5u+Lfs1/JRnp542US7wHdm0LtIP05Bv5QJX9PMbidcTS+h+syv
X-Forefront-PRVS: 0929F1BAED
X-Microsoft-Exchange-Diagnostics: 1; BN7PR01MB3745; 23:9uXBhKKEVosXlVFJGw34yKwF/WjUxXBfQV5J/vUScpRXC512yZDpnh/iQUG0nVwa98j+LnQXRW39WV20XRIYQferr8ScyA6dD1JXsdzhgIcBf+hZ50h8Ivygy8fkj7hfLESR8cR2wqzgxhMhaILMaubdyFcBum19b1ehJtOMqHPGmKuv65l7hAiOP/AWA5ukCmpYtWVLhW/MudZ5kR72E0YlQbxlaLoPLG/p8US+Q3RQoJDMNr4a9TVwcPIQYi28u2N1upFsn6+MszDreL6dejcsSIkwSDOA2XHuqORNO5oOn+yVrXU4gcU3iW/NK726clxLIT3qPd2S0WWqePR1bkwf0ihl1H/R36YVXNwdEg303sIFQhRC8DzHEWxx8lY+7sWNMf3aFLje1CV5MP603FWSLN9aKOc+b7lnRTlrTPZwn95VmiO5R6GocFGCkh9PE3DQ0B4OCSMmE85cUfrBx/7IPwnjhKOdaELpF2X0rmSn9dloCVh0dhCilcvRnl7UA4eTP+Url1oaR24f4N98ejadC+iPQ8vpffFLkgwZVg9FP8MrYAa688nM5XB+WCp94mg6e9cbWXIVKHxtc5eBNd24xMOijQIuHUlsDCMVwIobT6NP1FhUSjTRoAgMk4idB1O1UIHGXh970UARAi3hi8mzofRdGQ7nlwcLcERYEbllATo5yHuNtf6NKtFTMi8yxyFmkYdExOtDt/bu6DbTEUYxU29XYhX2AvnR2z+oxAJcW+uivX65rKB73TRUSBaEDlfAPRNXBTSUS8A6zTTYGdXU6OeBS9oVF46flNRESni85W4D6lkzMWqfto/ZjlvIe+7ox5plnkyz9KFeJA5kFJjJLVvaBhLHUzBdGhi5nAewOtKQ6Izl4oJ+HJcM5UuVzAfBs9xof39vk8bkSZCW8E4KtGJ+4/674XOoHpdB6kSsh7NnV/BQ36rJdANe6zLfYJv7YaamW0xv+YYcW4opPJdDiBV0IEYl5EYgjCn7RBKzpae6x8fdgy0yBwJ9NL+HHnnf9IXuN2UfAOILRvlPALj5K09cm0oVs3UhHtKtZGQvylYYr/JH4AtNkvmWGxPQdNOv7o/4Mc4tkTmAz6CJfnFDVYKA5fKkHxS/i8fHXQwpoD09QZtHkTY/7LBzRsMDLeWhxdxfTNreT26iXYwxvlEfTvYbJkqNlmhTfSSBRg9bgN6rnoxq6bbOEps4bVjvC5OiX2RcmQfoNEmDNl2ZUTRVvw2X21cpuo2QvtzHMIUKhJvcEmrdD5fUp5PdznA9R928Rwz4kpUjvWtho39WEQ==
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: jXO2uo8KgOGHebZHBpAUPM0OsadcFBZonKnfSBdIZB3b+noFh4S+fYMF515e9ZdavNiKraTi+KitVqk3T+62u2eQNdka3KouS2xmTtBLcRoWACZN2TKWNEWVVMFcJJ5hCxO/uQn12I+z/cQIch1vkpqMB0PQRw/HTGiqRXGHfcMuouFAh9enHKPVEPh9YtXwkiE1Ycv6oet31muDshosYt9ruJ17gHGIfL6wUzI087JPtw2c1+f9NFZcqWRMW9UDLgFBzQkx75iAd2XuJURNaJOfS4RMQ0o5ufj3p/J+030siGsLPHn5Nwhe3tXWjS8N9GAmOZQK1PatoffodfDjJhVzatrkMQHhVpM9uhoGR2Sx18qFNDkZ999NwZ9A95sAy8nx/wVrbIrvANHwgYpGRbGxomwY3yYfWb/ZiYfv89I=
X-Microsoft-Exchange-Diagnostics: 1; BN7PR01MB3745; 6:HMEZ1ohMlvGbJvwOTGcY2pEkFER5oYgFxfNpVP0j/PpOYeQTzNpicVzZXq1GSpJjawyoI8Oer9PnuOzXFdjdKTYwLeVy2xp0wtADZhyQx9xEysCJuf4GQ9xPy8bnU3QWu6CtPBJgu3aSHZByXHI36T5n+aOsF7QiCZs79FupWT5RZ/Ch7NqituU/NJpdGw05xYdugdbl84DJgT3PQLS5B/HdIJusi+RzNfxWbJaJoxjtj8JkWSFYC/IEDLW2SzVZkKcjRfYn70gof+m3ziMOR+KN1WXC3Zo8AIpcnfcyrgpU72rhrSLiXe8ZxIQFyZFmosdkqu5d27gZCYJc3p/NEJnsDEa52jPte/im5znoBf4MpYy7zeVRDa0xYZ+88jCTNo3Ab2cJuRx31synR6VGiEM3FVahx8PUwTOjdGgzWqs0urTD47Pp1tAGLwxn/QWuVq7Olc42g3iuZMqE3D0tlA==; 5:EatZrEv7+k7ElnJgGXAsO2AZIOw4PetSFxa4DjqCXsfqGTfb7kxxIay8ZoifXCe21rrYWw3jSrEhwlWIZPIYLCHWEvI8UeXW0TVVmf0MV+nWSLnFyYZUZKun/JXBLMXbCaa+qa0LvWd/6ZgnC6hMVhTYPv7uKbW0oKlNprEtomFBtPebWV1aO2zSadVLs6Phol7ic+mUVqsG8qrHR3a01Q==; 7:VKEnQYDNjKmVuRt/JIv17rmGe/d1q8R/+1pfLKQMZhfyburvMaOowguQHqzXP4FdMBwZCk4YrhOXw49Y8eYRrrCAqCnS8W0fmRVFIXPQVvn2oCbLVE2pXwvQl4nZ7NvlkwfgUARvIXAUfhrCKFTWzA==
X-OriginatorOrg: mit.edu
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jan 2019 20:30:32.8139 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 57755433-48e8-4e38-58fc-08d683cd1f38
X-MS-Exchange-CrossTenant-Id: 64afd9ba-0ecf-4acf-bc36-935f6235ba8b
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=64afd9ba-0ecf-4acf-bc36-935f6235ba8b; Ip=[18.9.28.11]; Helo=[outgoing.mit.edu]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PR01MB3745
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/NnS8487Xazyal4MQQ0iwu6XUgCg>
Subject: Re: [nfsv4] Benjamin Kaduk's Discuss on draft-ietf-nfsv4-mv0-trunking-update-03: (with DISCUSS and COMMENT)
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.29
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: <https://mailarchive.ietf.org/arch/browse/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: Sat, 26 Jan 2019 20:30:41 -0000

On Fri, Jan 18, 2019 at 12:47:42PM -0500, David Noveck wrote:
> The following is the response to your DISCUSS.   The response to your
> additional COMMENTs
> wIll be sent soon.
> 
> > That said, this document (along with the pieces of 7530 and 7931 that I
> > read along the way) still leave me uncertain about how some things are
> > supposed to work.
> 
> That's unfortunate.  It shouldn't happen.
> 
> > (If it's clarified in parts of those documents that I
> > didn't read, I'll happily clear and apologize for the disruption, of
> > course.)
> 
> There is no disruption.   This discussion seems to me fully in line with
> the way that the process needs to work.
> 
> I believe there are some relevant clarifications that derive from existing
> documents, but it does not appear to me, that you missed anything.   The
> relevant text does not, on its own, provide sufficient clarification, so it
> appears that we will need to clarify things so that future readers do not
> run into the difficulties that you saw.
> 
> > To start with, I'm still lacking a clear high-level picture of why a client
> > needs to care about trunking detection vs. just treating all listed
> > addresses as replicas.  There are some parts in the body where we talk
> > about, e.g., lock state and similar maintenance, but I don't have a clear
> > picture of what the risks and benefits of (not) tracking trunking are, and
> > this would be a fine opportunity to add some text.
> 
> The issues that arise when you are not aware of the trunking relationship
> between two paths do have to with management of locking state.   RFC7530
> (following on from similar text in RFC3530) cited the confusions regarding
> locking that would arise if a client thought it was talking to two
> different servers (i.e. replicas) when it was in fact talking to a single
> system over two different paths.   Basically, a client who is unaware of
> this distinction, might work successfully  sometimes, but in most cases you
> have to know about trunking relationships that exist and it would be
> extremely hard to write locking code that worked without being aware of
> trunking relationships.
> 
> In fact, this is why:
> 
>    - RFC5661 added a means of trunking detection to NFSv4.1
>    - RFCs7530 and 3530 advised NFSv4.0 clients to actively prevent the
>    occurrence of trunking by adopting what is described in RFC7931 as the
>    "non-uniform client string model".
>    - RFC7931 provided a means of trunking detection usable by NFSv4.0
> 
> -04 will need to clearly reference the importantance of state/locking
> considerations in making it necessary that the client and server agree as
> to trunking relationships.  I anticipate we will do this by replacing the
> third paragraph of the introduction by the following two paragraphs;
> 
> As part of addressing this need, [RFC7931] introduces trunking into
> NFS version 4.0 along with a trunking detection mechanism.  A trunking
> detection mechanism enables a client to determine whether two distinct
> network addresses are connected to the same NFS version 4.0 server
> instance.  This knowledge is necessary since, without it, a client
> unaware of a trnking relation ship between paths it is using

nit: "trunking relationship"

> simultaneous is likely to become confused in ways described in
> [RF7530].
> 
> NFSv4.1 was defined with an integral means of trunking detection
> described in [RFC5661], while NFSv4.0 initially did not have one, with
> it being added by [RFC7931].  Nevertheless, the use of the concept of
> server-trunkability is the same in both protocol versions.

That would be a big help; thanks.

> 
> > Specifically, in
> > Section 5.2.1, we just say  that "[a] client may use file system location
> > elements simultaneously to provide higher-performance access to the target
> > file system"; most of the focus of this document makes me think that this
> > statement was intended to apply only to trunking,
> 
> That was the intention and given that this is a trunking-motivated
> document, it seemed reasonable.  However, as you point out, there are cases
> in which those those words could reasonably be read as applying to
> replication.
> 
> > but I also think there
> > are supposed to be replication-only scenarios that provide performance
> > gains.  I'm not sure if we need to clarify the distinction in that location
> > as well as the high-level overview.
> 
> There are such scenarios but they are not as important because:
> 
>    - They only apply to a subset of workloads, basically read-only file
>    systems, and very low-change read-write filesystems where the application
>    takes special care to propagate updates to all replicas.
>    - The client (or the application) needs to be aware of the fact that
>    spcial state mangement actions need to be taken.  Foe example, if you are
>    to stripe your read from a given file between/amon a set of replicas, there
>    needs to be.
> 
> It's also relevant to consider the original purpose of the replication
> feature in NFSv4.0.   The intention was to provide alternative locations
> that could be used if the primary location became unavailable.   This has
> not prevented its use to provide parallel acces to multiple replicas to
> increase performance, in a limited set of contexts, primarily to provide
> read-only access, but it is important in deciding how to describe this
> option in -04.
> 
> I believe we can address this issue in -04 by replacing the current fourth
> paragraph of section 5.2.1 by the following two paragraphs:
> 
> A client may use file system location elements simultaneously to
> provide higher-performance access to the target file system.  This is
> most simply be done using trunling although the use of multiple

nit: "is most simply done using trunking"

> replicas simultaneously is possible. To enable this simultaneous
> acces, the client utilizes trunking detection and/or discovery,

nit: "access"

> further described in Section 5.2.2 of the current document, to
> determine a set of network paths that are server-trunkable with the
> one currently being used to access the file system.   Once this
> determination is made, requests may be routed across multiple paths,
> using the existing state management mechanism
> 
> Multiple replicas may also be used simultaneously, typicalls in

nit: "typically"

> handling read-only file systems.   In this case, each replica has its
> own state management which the client needs to be aware of, doin

nit: "doing"

> multiple file opens to enable a file to be read simultaneoudly from
> multiple replicas.

SGTM.

> 
> > It's also unclear to me what parts of migration flows are under the control
> > of the client vs. the server.  It's clear that the server has to initiate
> > migration via NFS4ERR_MOVED,
> 
> The server has to precipitate the client's response to the migration event
> by informing it of the unusability of the (previously) current instance by
> returning NFS4ERR_MOVED.  However, in almost all cases, this is not the
> start of the server's work.
> 
> The server must, before informing the client of the shift, make sure that
> when the client acts on it, the successor server (or servers) are prepared
> to respond appropriately:
> 
>    - The destination server needs to have a fully up-to-date copy of the
>    source file system.  Where the file system is read-write, this means that
>    all update made to the sotrce file system must be propagated to the
>    destination(s).
>    - When transparent state migration is implemented, locking data needs to
>    be similarly propagated.
> 
> > but my current understanding is just that this
> > prompts the client to look at fs_locations, and the client has control over
> > which alternate location to move to.
> 
> When multiple locations are provided, the client has this choice.

Okay, thanks for confirming that.

> > But there's also a lot of discussion
> > in all three documents about the servers migrating state along with
> > migration, so it seems like the server should be controlling where the
> > client goes.  Is this just supposed to be by limiting the fs_locations data
> > to the specific migration target chosen by the server?
> 
> As a practical matter there are difficulties propagating locking state and
> other updates to multiple desinations so that I expect most implementations
> to designate a single successor, at least for a while.  However, the
> protocol does allow multiple choices to be provided.  If the server does
> so, then it would have to propagate information to multiple targets and be
> prepared for any valid choice the client might make.
> 
> > (If so, this would
> > probably have potential for poor interaction with the implicit filesystem
> > discovery described in Section 5.3.)
> 
> I'm not sure of what problems you foresee.  Perhaps I need to better understand
> your interpretation of section 5.3.

I don't have a detailed description of a problematic scenario, here, so my
"probably" is to be treated as speculative.

Basically, my reading of 5.3 is that it provides a way for a client to
know, implicitly, that server Y serves file system B because server Y and
server X are trunked, and the client knows that server X serves file system
B (because the client was already talking to server X for file system A and
got back a list of filesystems on X).  So if the client is currently
talking to server Z for file system B but then B tries to initiate
migration to server X, the client could well be within its rights to talk
to server Y instead.  This would be problematic if Z has only propagated
locking state to X and not Y.

I'm happy to learn what misunderstandings are present in the above :)

> > On the other hand, Section 5.2.6
> > talks about the server putting entries "that represent addresses usable
> > with the current server or a migration target before those associated with
> > replicas", which seems to imply that there is some other way to know what
> > the migration target is.
> 
> Not sure what you mean by "some other way".

I'm not sure either :)

The point being that if 5.2.6 allows a server to include both migration
targets and (non-migration-target) replicas in the filesystem location
attribute, a client trying migration would probably want to know where the
boundary between migration targets and non-migration-targets is.  From the
discussion above, it sounds like the client doesn't have "some other way"
of knowing this, and having the server list non-migration-targets is a bad
idea, at least when initiating migration.

> I think the server has to know what addresses are usable with current
> server because it is the one that provides the appropriate service.  With
> regard to migration targets, as we have seen, the sending server has to
> know this because he is typically involved in preparing (through
> information progation) the destination server to provide the needed
> service.
> 
> > Section 5.2.6 also tells the client to rely on that ordering:
> >
> >                                   To keep this process as short as
> >   possible, Servers are REQUIRED to place file system location entries
> >   that represent addresses usable with the current server or a
> >   migration target before those associated with replicas.  A client can
> >   then cease scanning for trunkable file system location entries once
> >   it encounters a file system location element whose fs_name differs
> >
> > but I don't think a client actually can do so, since the client has no way
> > to know that the server implements this document as opposed to stock
> > 7530+7931 (at least, no way that I saw).
> 
> The basic assumption behind this paragraph as written is that no previous
> document has provided guidance as to the use of the location attribute to
> provide information relevant to trunking discovery.   However, in
> considering interactions with previous servers as you have done (nice
> catch!) it appears that it would be possible for a server to present two
> trunkable aaddresses even without any awareness of the fact that they are
> trunkable, so that a client following the guidance above might deny himself
> knowledge of some piece of information related to trunking discovery.
> 
> In light of this, it appears that -04 will have to rewrite the material in
> the last paragraph of section 5.2.6 to be something like the following:
> 
> Because a file system location attribute may include entries relating
> to the current server, the migration destination, and possible
> replicas to use, scanning for available network addresses thst might
> be trunkable with addresses already seen could potentially be a long
> process.  In order keep this process as short as possible, Servers
> that provide infornation about trunkable network paths when the exist
> are REQUIRED to place file system location entries that represent
> addresses usable with the current server or a migration target before
> those associated with replicas.
> 
> This ordering allows a client to cease scanning for trunkable file
> system location entries once it encounters a file system location
> element whose fs_name differs from the current fs_name, or whose
> address is not server-trunkable with the one it is currently using.
> While the possibility exists, that a client might prematurely cease
> scanning for trunkable addresses when receiving a location attribute
> from a an older server not following the order constaint above, the
> harm is expected to be limited since such servers would not be
> expected to present infomation about trunkble server access paths.

Works for me.

> 
> > Finally, removing the last paragraph of Section 8.5 of RFC 7530 could have
> > negative operational impact if updated clients interact with non-updated
> > servers/environments that are misconfigured in the described fashion.  It's
> > probably worth stating in the top-level Section 5 that such misconfigured
> > servers are believed to no longer exist (if that's in fact true, of
> > course; if not, we'd need to reconsider the change).
> 
> It turns out this deletion was inadvertant.  The paragraph will be added
> back in -04.

That works too :)

-Benjamin