[Twg] Protocol interoperation issues

Eric Barton eeb at whamcloud.com
Fri Mar 11 19:18:45 UTC 2011


Lustre support for transparent rolling upgrade has been an assumption for some
time now.  However it comes at a cost.  I'd like to explain how it is
implemented so that we can all share a better understanding of this cost and
let that guide OpenSFS development decisions.

* LNET protocol version negotiation

  LNET has 2 levels of protocol - a generic LNET protocol is layered over an
  LND-specific protocol.  LNDs exchange protocol version on the first
  communication between any pair of NIDs and use the earlier version.  The
  generic LNET protocol version negotiation is implicit in the LND version
  negotiation.

* LNET rolling upgrade

  Peer-to-peer communication state in LNET and its LNDs is discarded on any
  error and re-established on subsequent communication attempts.  This allows
  LNET to be restarted or upgraded at any time, at the potential cost of a few
  dropped communications.  Protocols layered over LNET (e.g. Lustre) must be
  coded to allow for this.

  LND protocol changes require at least 1 interim version of the LND to support
  both protocol versions.  All LND instances must be upgraded to one of these
  interim versions before any can be upgraded to subsequent versions that
  remove support for the old protocol version.

  Changes to the LNET protocol affect all LNDs - i.e. all LNDs must be coded to
  support both old and new protocol versions.

* Lustre protocol version negotiation

  Lustre peers negotiate protocol versions on connection establishment.
  Protocol features supported by either peer are represented using a bitmap so
  that only features supported by both peers are used.

* Lustre Rolling Upgrade

  Lustre's recovery protocols make server restart/failover transparent to
  client applications.  This can be exploited to allow rolling upgrades - where
  the server is upgraded before it is restarted.

  Much of recovery is implemented simply by replaying RPCs that hadn't yet been
  committed to disk by the previous instance of the server.  This is a problem
  if there is a major server version change because the client's replay RPCs
  are now in an incompatible format.

  The solution to this is "Simplified Interoperation" which will provide an
  administrative server shutdown feature to force clients to minimize cached
  state.  This reduces the set of RPCs required for recovery to a tiny fraction
  which are regenerated when the new server's protocol version is known and
  avoids the need to replay uncommitted RPCs entirely.

  1.8/2.x upgrade

  The Lustre 1.8.5 client can talk the 2.x protocol, therefore servers may be
  upgraded to 2.x without requiring clients to upgrade immediately.  Until
  simplified interoperation is implemented the upgrade process cannot be
  transparent to clients.  They will be evicted and therefore applications
  running on them may see I/O errors during the server upgrade.

The biggest protocol change on the horizon is to support IPv6.  This cannot be
put off indefinitely, so when it comes, should we try to support transparent
rolling upgrade for it, or require a site-wide upgrade?

* IPv6

  Support for IPv6 requires a change in the NID format to accommodate a 128bit
  IPv6 address in the address-within-network field.  This affects all protocol
  levels; LNDs, LNET and Lustre.

  Rolling upgrade will require versions of LNET (and all its LNDs) and Lustre
  that can communicate in both small and large NID LND/LNET/Lustre protocol
  versions.  The version of Lustre will also have to be able to read and
  convert the small NID on-disk representation.  Transparent rolling upgrade
  will require Simplified Interoperation support.

  However, at the cost of a 1-time site-wide upgrade most of this cost can be
  avoided.  If IPv6 protocol version interoperation is not required, changing
  the protocols (LNET and Lustre) to use a large NID is relatively trivial since
  all that remains to be done after recompiling with the new NID format definition
  is to allow Lustre to read and convert any use of the binary small NID
  representation on disk.

          Cheers,
                   Eric

Eric Barton
CTO Whamcloud, Inc.
Tel: +44 (117) 330 1575
Mob: +44 (7920) 797 273






More information about the Twg mailing list