Tuesday, March 29, 2011

pNFS v4.1: is bigger actually better? - a short study in big fat RFCs

So I heard a fascinating statistic today that pNFS was the largest RFC ever devised. I've been watching the growth of pNFS for six or so years now - sure is a fascinating protocol, in research computing we all want it to win, and win big.

If you want to know more about pNFS here is a really nice 10,000ft overview video: courtesy of our friend Brent Welch over at Panasas.

Anyway, so I thought I'd check into this "largest RFC ever" comment thing. If you think about it for about ten seconds, any "this is the biggest ever" is a pretty sketchy claim to fame no matter what you are talking about. For filesystems protocol specs, I'm thinking that you certainly don't ever actually want to win that contest!. So I started to wonder what the largest RFC of all time actually is and if there is any correlation to other "big" rfcs.

So first up - let's grab all the rfcs:
jcuff@srv:~/RFC$ wget ftp://ftp.rfc-editor.org/in-notes/tar/RFC-all.tar.gz
jcuff@srv:~/RFC$ tar zxvf RFC-all.tar.gz
jcuff@srv:~/RFC$ cat a/ftp/in-notes/tar/readme.txt
This tar file was updated/created at
Sat Mar 26 12:30:01 PDT 2011

Ok, so let's pull up all the .txt files, sort them and find out who has the largest block size. Points were awarded for the most twisted UNIX commands to do this. Well sure enough it is all rather amusing, here are the top 10 RFC's by their "size":
jcuff@srv:~/RFC/txt$ ls -ltra  | sort -nr -k5,5 | head -10 | awk '{print $8}' | sed 's/.txt//' | sed s'/rfc//' | xargs -i tcsh -c 'egrep -A2 ^"{}" ../rfc-index.txt'

5661 Network File System (NFS) Version 4 Minor Version 1 Protocol. S.
     Shepler, Ed., M. Eisler, Ed., D. Noveck, Ed.. January 2010. (Format:
     TXT=1517771 bytes) (Status: PROPOSED STANDARD)

4949 Internet Security Glossary, Version 2. R. Shirey. August 2007.
     (Format: TXT=867626 bytes) (Obsoletes RFC2828) (Also FYI0036)
     (Status: INFORMATIONAL)

3261 SIP: Session Initiation Protocol. J. Rosenberg, H. Schulzrinne,
     G. Camarillo, A. Johnston, J. Peterson, R. Sparks, M. Handley, E.
     Schooler. June 2002. (Format: TXT=647976 bytes) (Obsoletes RFC2543)

3530 Network File System (NFS) version 4 Protocol. S. Shepler, B.
     Callaghan, D. Robinson, R. Thurlow, C. Beame, M. Eisler, D. Noveck.
     April 2003. (Format: TXT=600988 bytes) (Obsoletes RFC3010) (Status:

2801 Internet Open Trading Protocol - IOTP Version 1.0. D. Burdett.
     April 2000. (Format: TXT=598794 bytes) (Status: INFORMATIONAL)

3720 Internet Small Computer Systems Interface (iSCSI). J. Satran, K.
     Meth, C. Sapuntzakis, M. Chadalapaka, E. Zeidner. April 2004.
     (Format: TXT=578468 bytes) (Updated by RFC3980, RFC4850, RFC5048)

2911 Internet Printing Protocol/1.1: Model and Semantics. T. Hastings,
     Ed., R. Herriot, R. deBry, S. Isaacson, P. Powell. September 2000.
     (Format: TXT=575805 bytes) (Obsoletes RFC2566) (Updated by RFC3380,

1166 Internet numbers. S. Kirkpatrick, M.K. Stahl, M. Recker. July
     1990. (Format: TXT=566778 bytes) (Obsoletes RFC1117, RFC1062,
     RFC1020) (Updated by RFC5737) (Status: INFORMATIONAL)

2626 The Internet and the Millennium Problem (Year 2000). P. Nesser
     II. June 1999. (Format: TXT=547560 bytes) (Status: INFORMATIONAL)

2328 OSPF Version 2. J. Moy. April 1998. (Format: TXT=447367 bytes)
     (Obsoletes RFC2178) (Updated by RFC5709) (Also STD0054) (Status:

Well there you go! rfc5661 (nfsv4.1) is currently the largest RFC on the planet, all 1.5megabytes of it! It goes alongside its friend rfc3530 who described nfsv4.0 that is now defunct in place of 4.1 - v4.1 is one whole one louder! Just in case you did not think the spec was quite large enough already, in true infomercial style - "But wait! There's more!"
5661 Network File System (NFS) Version 4 Minor Version 1 Protocol. S.
     Shepler, Ed., M. Eisler, Ed., D. Noveck, Ed.. January 2010. (Format:
     TXT=1517771 bytes) (Status: PROPOSED STANDARD)

5662 Network File System (NFS) Version 4 Minor Version 1 External Data
     Representation Standard (XDR) Description. S. Shepler, Ed., M.
     Eisler, Ed., D. Noveck, Ed.. January 2010. (Format: TXT=126581 bytes)

5663 Parallel NFS (pNFS) Block/Volume Layout. D. Black, S. Fridella,
     J. Glasgow. January 2010. (Format: TXT=68571 bytes) (Status: PROPOSED

5664 Object-Based Parallel NFS (pNFS) Operations. B. Halevy, B. Welch,
     J. Zelenka. January 2010. (Format: TXT=78200 bytes) (Status: PROPOSED

5667 Network File System (NFS) Direct Data Placement. T. Talpey, B.
     Callaghan. January 2010. (Format: TXT=83728 bytes) (Status: PROPOSED

Whoa! - that really is a metric shed load of RFC goodness! Maybe a ploy by our storage vendors to make sure we buy a big enough disk to actually store the protocol. hehe. Anyway, up next - the smallest RFCs I could find in that text dump? Well that would be beautiful little number rfc18:
Network Working Group               University of California Los Angeles
Request for Comments: 18                                       Vint Cerf
Category:                                                 September 1969

It is suggested that link 1 be used for the HOST-HOST control link
and link 0 be used for IMP-IMP control.

This will facilitate communication between Hosts and reduce delays
due to interference with IMP-IMP communications.

    [This RFC has been restored to on-line status by Elmar K. Bins]
just how cute were we back in the day?

Anyway, having said that, SIP (15K lines) did work out really well (make a telephone call if you don't believe me ;-)) Interesting that IOTP is up there as another "big" standard, but I heard that SSL/TLS won out that battle... Here's an RFC "danger zone" chart (comparing document size vs date of RFC issue) I just put together for grins - you can see that OSPF also took a while to get moving due to *ahem* "weight"...:

So what do we still think NFSv4.x is this going to be a big win?

"Help me, Obi NFS Four! You're my only hope!"

[any opinions here are all mine, and have absolutely nothing to do with my employer]
(c) 2011 James Cuff