[AFS3-std] AFSVol Tag-Length-Value extensions I-D

Tom Keiser tkeiser@sinenomine.net
Thu, 2 Sep 2010 18:00:05 -0400


Tom Keiser <tkeiser@sinenomine.net> wrote:
> Greetings,
>
> I've published draft-tkeiser-afs3-volser-tlv-02; this new draft can be
> accessed via the following URLs and AFS paths:
>
> http://tools.ietf.org/html/draft-tkeiser-afs3-volser-tlv-02
> http://openafs.sinenomine.net/~tkeiser/i-d/draft-tkeiser-afs3-volser-tlv-=
02.html
> http://openafs.sinenomine.net/~tkeiser/i-d/draft-tkeiser-afs3-volser-tlv-=
02.xml
> http://openafs.sinenomine.net/~tkeiser/i-d/draft-tkeiser-afs3-volser-tlv-=
01-02.xml.diff
>
> /afs/sinenomine.net/user/tkeiser/public_html/i-d/draft-tkeiser-afs3-volse=
r-tlv-02.txt
> /afs/sinenomine.net/user/tkeiser/public_html/i-d/draft-tkeiser-afs3-volse=
r-tlv-02.html
> /afs/sinenomine.net/user/tkeiser/public_html/i-d/draft-tkeiser-afs3-volse=
r-tlv-02.xml
> /afs/sinenomine.net/user/tkeiser/public_html/i-d/draft-tkeiser-afs3-volse=
r-tlv-01-02.xml.diff
>
>
> Here is the change log for this revision:
>
> =A0- ERRATA: AFSCAPABILITIESMAX is actually defined to be 196, not 192
> =A0- add section re: cache coherence to the tag enumeration RPC
> =A0- add section re: day-of-week usage following discussion with mmeffie
> =A0- s/AFSVOL_TLV_TAG_VOL_DAY_USE/AFSVOL_TLV_TAG_VOL_STAT_USE_TODAY/
> =A0 =A0following discussion with mmeffie
> =A0- add AFSVOL_TLV_TAG_VOL_STAT_USE_TODAY_DATE following discussion with
> =A0 =A0mmeffie
> =A0- add section re: definition of each tlv payload type
> =A0- add section re: definition of each tlv flag
> =A0- add note soliciting comments to afs3-stds list
> =A0- s/GCO Registrar/AFS Assigned Numbers Registrar/
> =A0- s/afsint/AFSVol/ so that we keep our options open with respect to
> =A0 =A0wider standardization of TLV semantics
> =A0- add AFSVOL_TLV_TYPE_UINT64_VEC payload type
> =A0- convert various tags from AFSVOL_TLV_TYPE_OPAQUE to
> =A0 =A0AFSVOL_TLV_TYPE_UINT64_VEC
> =A0- add AFSVOL_TLV_FLAG_QUALIFIER_NO_MATCH flag
> =A0- write AFSVol TLV Payloads registry definition
> =A0- write AFSVol TLV Tags registry definition
> =A0- add registry for AFSVol_TLV.tlv_flags
> =A0- add registry for AFSVol_stat_use_per_dow.stat_flags
> =A0- write AFSVol Vol State Expls registry definition
> =A0- write AFSVol Program Types registry definition
> =A0- add numeric value assignments for newly created registries
> =A0- add RFC section references to new allocations
> =A0- add reference to Simon's AFS-STDS charter
> =A0- add an appendix with sample XDR for AFSVol Capabilities
> =A0- add an appendix with sample XDR for AFSVol TLV
> =A0- various cosmetic improvements (e.g. adding vspace tags)
>
>
> Moving forward, I propose making one change in -03. =A0Namely, I want to =
split
> type AFSVOL_TLV_TYPE_UINT64 up into a few types that embed some limited
> semantic knowledge into the TLV layer. =A0Specifically, I'm thinking of
> splitting AFSVOL_TLV_TYPE_UINT64 into the following six types:
>
> =A0* AFSVOL_TLV_TYPE_UINT64 =A0 =A0[generic unit-less type, as before]
> =A0* AFSVOL_TLV_TYPE_TIME_ABS =A0[Simon's rpc refresh 100ns unit; absolut=
e]
> =A0* AFSVOL_TLV_TYPE_TIME_REL =A0[Simon's rpc refresh 100ns unit; relativ=
e]
> =A0* AFSVOL_TLV_TYPE_BLOCKS =A0 =A0[storage in 1KiB units]
> =A0* AFSVOL_TLV_TYPE_VOLUME_ID
> =A0* AFSVOL_TLV_TYPE_PARTITION_ID
>
> All six would be backed by afs_uint64 in the AFSVol_TLV_value union. Whil=
e
> this change isn't strictly necessary, it's relatively straightforward to
> implement, and makes the resulting volume TLV data considerably more
> self-describing.
>

The other week I submitted a new draft to the IETF which implements
the aforementioned changes (as well as a few others).  The new draft
is available at the following URLs:

http://tools.ietf.org/html/draft-tkeiser-afs3-volser-tlv-03
http://openafs.sinenomine.net/~tkeiser/i-d/draft-tkeiser-afs3-volser-tlv-03=
.html
http://openafs.sinenomine.net/~tkeiser/i-d/draft-tkeiser-afs3-volser-tlv-03=
.xml
http://openafs.sinenomine.net/~tkeiser/i-d/draft-tkeiser-afs3-volser-tlv-02=
-03.xml.diff

/afs/sinenomine.net/user/tkeiser/public_html/i-d/draft-tkeiser-afs3-volser-=
tlv-03.txt
/afs/sinenomine.net/user/tkeiser/public_html/i-d/draft-tkeiser-afs3-volser-=
tlv-03.html
/afs/sinenomine.net/user/tkeiser/public_html/i-d/draft-tkeiser-afs3-volser-=
tlv-03.xml
/afs/sinenomine.net/user/tkeiser/public_html/i-d/draft-tkeiser-afs3-volser-=
tlv-02-03.xml.diff


The complete revision history is as follows:

- split unsigned 64-bit type down into several more descriptive types
that allow the TLV data stream to be more self-describing.
- add a signed 64-bit integer type to allow for relative timestamps
- now that we have more descriptive types, use them in a number of places
- change AFSVOL_TLV_TAG_VOL_TRANS_CALL_VALID into a boolean type payload
- make sure rxgen can parse the XDR in the appendix
- make sure generated C code compiles and links
- add in-text cites for AFS3-VVL, AFS3-FSCM, DAFS, and OSD.
- provide motivations for GetCapabilities RPC
- provide protocol semantic definitions for each newly allocated capability=
 bit
- allocate AFSVOL_TLV_FLAG_MORE bit to notify caller when we can't
send all tags due to AFSVOL_TLV_TAG_MAX length limit

Any comments or feedback are appreciated.

-Tom