home *** CD-ROM | disk | FTP | other *** search
/ Internet Core Protocols / Oreilly-InternetCoreProtocols.iso / RFCs / rfc2550.txt < prev    next >
Encoding:
Text File  |  1999-10-14  |  28.1 KB  |  788 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                       S. Glassman
  8. Request for Comments: 2550                                   M. Manasse
  9. Category: Stinkards Track                                      J. Mogul
  10.                                             Compaq Computer Corporation
  11.                                                            1 April 1999
  12.  
  13.  
  14.                             Y10K and Beyond
  15.  
  16. Status of this Memo
  17.  
  18.    This memo provides information for the Internet community.  It does
  19.    not specify an Internet standard of any kind.  Distribution of this
  20.    memo is unlimited.
  21.  
  22. Copyright Notice
  23.  
  24.    Copyright (C) The Internet Society (1999).  All Rights Reserved.
  25.  
  26. Abstract
  27.  
  28.    As we approach the end of the millennium, much attention has been
  29.    paid to the so-called "Y2K" problem.  Nearly everyone now regrets the
  30.    short-sightedness of the programmers of yore who wrote programs
  31.    designed to fail in the year 2000.  Unfortunately, the current fixes
  32.    for Y2K lead inevitably to a crisis in the year 10,000 when the
  33.    programs are again designed to fail.
  34.  
  35.    This specification provides a solution to the "Y10K" problem which
  36.    has also been called the "YAK" problem (hex) and the "YXK" problem
  37.    (Roman numerals).
  38.  
  39. 1. Introduction, Discussion, and Related Work
  40.  
  41.    Many programs and standards contain, manipulate and maintain dates.
  42.    Comparing and sorting dates is a common activity.  Many different
  43.    formats and standards for dates have been developed and all have been
  44.    found wanting.
  45.  
  46.    Early date formats reserved only two digits to represent the year
  47.    portion of a date.  Programs that use this format make mistakes when
  48.    dealing with dates after the year 2000.  This is the so-called Y2K
  49.    problem.
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. Glassman, et. al.            Informational                      [Page 1]
  59.  
  60. RFC 2550                    Y10K and Beyond                 1 April 1999
  61.  
  62.  
  63.    The most common fix for the Y2K problem has been to switch to 4-digit
  64.    years.  This fix covers roughly the next 8,000 years (until the year
  65.    9999) by which time, everyone seems convinced that all current
  66.    programs will have been retired.  This is exactly the faulty logic
  67.    and lazy programming practice that led to the current Y2K problem!
  68.    Programmers and designers always assume that their code will
  69.    eventually disappear, but history suggests that code and programs are
  70.    often used well past their intended circumstances.
  71.  
  72.    The 4-digit year leads directly to programs that will fail in the
  73.    year 10,000.  This proposal addresses the Y10K problem in a general
  74.    way that covers the full range of date and time format issues.
  75.  
  76. 1.1 Current approaches
  77.  
  78.    A large number of approaches exist for formatting dates and times.
  79.    All of them have limitations.  The 2-digit year runs into trouble
  80.    next year.  The 4-digit year hits the wall in the year 10,000.  A
  81.    16-bit year runs out in the year 65,536.  A 32-bit counter for the
  82.    number of seconds since 1970 [UNIX] wraps in 2038.  A 32-bit counter
  83.    for the number of milli-seconds since booting crashes a Windows (TM)
  84.    PC in 49.7 days [Microsoft].
  85.  
  86.    In this specification, we focus on the Y10K problems since they are
  87.    most common and a large number of existing standards and protocols
  88.    are susceptible to them (section 7).  These standards, and new
  89.    proposals on their way, will lead to a serious world-wide problem
  90.    unless efforts are made now to correct the computing, government, and
  91.    business communities.
  92.  
  93.    Already, a small cottage industry is popping up to deal with the Y10K
  94.    problem [YUCK].  We encourage these efforts and, in the coming years,
  95.    this effort can only grow in size and importance.
  96.  
  97. 1.2 A Fixed Format Y10K Fix
  98.  
  99.    At the time of this writing, only one proposal [Wilborne] directly
  100.    deals with the Y10K problem.  In that proposal, dates are represented
  101.    as decimal numbers with the dates compared numerically.  The proposed
  102.    format is simply YYYYYMMDD - i.e. 5-digit years.
  103.  
  104.    To allow numerical comparison of dates, this representation requires
  105.    a completely fixed representation for the date.  There can be no
  106.    optional fields, the date resolution is limited to the granularity of
  107.    one day, and this solution fails in the year 100,000 (Y100K).
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114. Glassman, et. al.            Informational                      [Page 2]
  115.  
  116. RFC 2550                    Y10K and Beyond                 1 April 1999
  117.  
  118.  
  119. 1.2.2 Limitations of Numerical Comparison
  120.  
  121.    While sufficient for the specific Y10K problem, this solution is
  122.    limited.  Even if extended for 6-digit years, it fails on 32-bit
  123.    systems (and future 32-bit system emulators) after the date
  124.    represented by the number 2147481231 (December 31, 214748) leading to
  125.    a Y214749 problem.  Similarly, 64-bit and 128-bit systems also will
  126.    fail, although somewhat later (after December 31, 922,337,203,685,477
  127.    and December 31, 17,014,118,346,046,923,173,168,730,371,588,410
  128.    respectively).
  129.  
  130. 1.2.3 Granularity Issues
  131.  
  132.    The granularity problems of a fixed format date can be improved by
  133.    extending the date format to include greater precision in the date.
  134.    However, since numerical comparison of dates requires a fixed
  135.    representation date, an extended format can not provide sufficient
  136.    resolution for all foreseeable needs.
  137.  
  138.    For instance, if the precision were extended to the femto-second
  139.    range the date format would become YYYYYMMDDHHMMSSmmmuuunnnpppfff
  140.    (year, month, day, hour, minute, second, milli-second, micro-second,
  141.    nano-second, pico-second, and femto-second).  The additional 21
  142.    digits of this format limit the set of representable dates.  Compared
  143.    to 1.2.2, the 32-bit and 64-bit forms of the date are instantly
  144.    exceeded, while the 128-bit version would be viable - expiring on
  145.    December 31, 17,014,118,346,046.
  146.  
  147. 1.2.3.1 Extrapolation of Future Granularity Issues
  148.  
  149.    However, a simple extrapolation of Moore's law shows that even
  150.    femto-second resolution will soon be inadequate.  Projecting current
  151.    CPU clock speeds forward, a femto-second clock speed will be achieved
  152.    in only 30 years.  And, by the year 10,000 the projected clock speed
  153.    of the Intel Pentium MMDCLXVI (TM) will be approximately 10 ** (-
  154.    1609) seconds.
  155.  
  156.    This discussion clearly shows that any fixed-format, integer
  157.    representation of a date is likely to be insufficiently precise for
  158.    future uses.
  159.  
  160. 1.2.3.2 Floating Point Is No Solution
  161.  
  162.    The temptation to use floating point numbers to represent dates
  163.    should be avoided.  Like the longer fixed-format, integer
  164.    representations of the date, floating point representations merely
  165.    delay the inevitable time when their range is exceeded.  In addition,
  166.  
  167.  
  168.  
  169.  
  170. Glassman, et. al.            Informational                      [Page 3]
  171.  
  172. RFC 2550                    Y10K and Beyond                 1 April 1999
  173.  
  174.  
  175.    the well known problems of real numbers - rounding, de-normalization,
  176.    non-uniform distribution, etc. - just add to the problems of dealing
  177.    with dates.
  178.  
  179. 2 Structure of Y10K Solution
  180.  
  181.    Any Y10K solution should have the following characteristics.
  182.  
  183. 2.1 Compatibility
  184.  
  185.    The format must be compatible with existing 4-digit date formats.
  186.    Y2K compliant programs and standards must continue to work with Y10K
  187.    dates before the year 10,000.  Y10K compliant programs can gradually
  188.    be developed over time and coexist with non-Y10K compliant programs.
  189.  
  190. 2.2 Simplicity and Efficiency
  191.  
  192.    Y10K dates must allow dates after 10,000 to be easily identified.
  193.    Within a program, there must be a simple procedure for recognizing
  194.    the Y10K dates and distinguishing them from legacy dates.
  195.  
  196. 2.3 Lexical Sorting
  197.  
  198.    Y10K dates must be sortable lexically based on their ASCII
  199.    representation.  The dates must not require specialized libraries or
  200.    procedures.
  201.  
  202. 2.4 Future Extensibility
  203.  
  204.    Y10K dates must support arbitrary precision dates, and should support
  205.    dates extending arbitrarily far into the future and past.  Y10K dates
  206.    from different eras and with different precisions must be directly
  207.    comparable and sortable.
  208.  
  209. 2.4.1 Environmental Considerations
  210.  
  211.    The known universe has a finite past and future.  The current age of
  212.    the universe is estimated in [Zebu] as between 10 ** 10 and 2 * 10 **
  213.    10 years.  The death of the universe is estimated in [Nigel] to occur
  214.    in 10 ** 11 - years and in [Drake] as occurring either in 10 ** 12
  215.    years for a closed universe (the big crunch) or 10 ** 14 years for an
  216.    open universe (the heat death of the universe).
  217.  
  218.    In any case, the prevailing belief is that the life of the universe
  219.    (and thus the range of possible dates) is finite.
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226. Glassman, et. al.            Informational                      [Page 4]
  227.  
  228. RFC 2550                    Y10K and Beyond                 1 April 1999
  229.  
  230.  
  231. 2.4.2 Transcending Environmental Considerations
  232.  
  233.    However, we might get lucky.  So, Y10K dates are able to represent
  234.    any possible time without any limits to their range either in the
  235.    past or future.
  236.  
  237.    Y10K compliant programs MAY choose to limit the range of dates they
  238.    support to those consistent with the expected life of the universe.
  239.    Y10K compliant systems MUST accept Y10K dates from 10 ** 12 years in
  240.    the past to 10 ** 20 years into the future.  Y10K compliant systems
  241.    SHOULD accept dates for at least 10 ** 29 years in the past and
  242.    future.
  243.  
  244. 3 Syntax Overview
  245.  
  246.    The syntax of Y10K dates consists of simple, printable ASCII
  247.    characters.  The syntax and the characters are chosen to support a
  248.    simple lexical sort order for dates represented in Y10K format.  All
  249.    Y10K dates MUST conform to these rules.
  250.  
  251.    Every Y10K date MUST begin with a Y10K year.  Following the year,
  252.    there MAY be an arbitrary sequence of digits.  The digits are
  253.    interpreted as MMDDHHMMSSmmmuuunnnpppfff...  (month, day, hour,
  254.    minute, second, milli-second, micro-second, nano-second pico-second,
  255.    femto-second, etc. - moving left to right in the date, digits always
  256.    decrease in significance).
  257.  
  258.    All dates and times MUST be relative to International Atomic Time
  259.    (TAI) [NRAO].
  260.  
  261.    When comparing dates, a date precedes every other date for which it
  262.    is a prefix.  So, the date "19990401000000" precedes the date
  263.    "19990401000000000".  In particular, dates with the format YYYYMMDD
  264.    are interpreted to represent the exact instant that the day begins
  265.    and precede any other date contained in that day.
  266.  
  267. 3.1 Years 1 - 9999
  268.  
  269.    The current 4-digit year syntax covers all years from 1000 - 9999.
  270.    These years are represented as 4 decimal digits.  Leading 0's MUST be
  271.    added to the years before 1000 to bring the year to 4 digits.  Files
  272.    containing legacy pre-Y1K [Mike] dates will have to be converted.
  273.  
  274. 3.2 Years 10,000 through 99,999
  275.  
  276.    Four digits are not sufficient to represent dates beyond the year
  277.    9999.  So, all years from 10,000 - 99,999 are represented by 5 digits
  278.    preceded by the letter 'A'.  So, 10,000 becomes "A10000" and 99,999
  279.  
  280.  
  281.  
  282. Glassman, et. al.            Informational                      [Page 5]
  283.  
  284. RFC 2550                    Y10K and Beyond                 1 April 1999
  285.  
  286.  
  287.    becomes "A99999".  Since 'A' follows '9' in the ASCII ordering, all
  288.    dates with 5-digit years will follow all dates with 4-digit years
  289.    (for example, "A10000" will sort after "9999").  This gives us the
  290.    sort and comparison behaviour we want.
  291.  
  292. 3.3 Years 100,000 up to 10 ** 30
  293.  
  294.    By a simple generalization of 3.2, 6-digit years are preceded by the
  295.    letter 'B', 7-digit years by 'C', etc.  Using just the 26 upper-case
  296.    ASCII characters, we can cover all years up to 10**30 (the last year
  297.    representable is "Z999999999999999999999999999999").  Again, since
  298.    the ASCII characters are sorted alphabetically, all dates sort
  299.    appropriately.
  300.  
  301. 3.4 Years 10 ** 30 and beyond (Y10**30)
  302.  
  303.    As discussed in 2.4.1, the end of the universe is predicted to occur
  304.    well before the year 10 ** 30.  However, if there is one single
  305.    lesson to be learned from the current Y2K problems, it is that
  306.    specifications and conventions have a way of out living their
  307.    expected environment.  Therefore we feel it is imperative to
  308.    completely solve the date representation problem once and for all.
  309.  
  310. 3.4.1 Naive Approach for Y10**30 Problem
  311.  
  312.    The naive solution is to prepend a single '^' (caret) - caret sorts
  313.    after all letters in the ASCII order) before all years from 10 ** 30
  314.    to 10 ** 56.  Thus the year "Z999999999999999999999999999999" is
  315.    followed by the year "^A1000000000000000000000000000000".  Similarly,
  316.    all years from 10 ** 56 to 10 ** 82 get one more caret.  So, the year
  317.    "^Z99999999999999999999999999999999999999999999999999999999" is
  318.    followed by the year
  319.    "^^A100000000000000000000000000000000000000000000000000000000".  This
  320.    scheme can be extended indefinitely by prepending one addition caret
  321.    for each additional factor of 10 ** 26 in the range of the year.
  322.  
  323.    In this approach, the number of digits in a date that are used to
  324.    represent the year is simply:
  325.  
  326.       26 * <number of '^'> + ASCII(<prefix letter>) - ASCII('A') + 5
  327.  
  328.    Note: this algorithm is provided for informational purposes only and
  329.    to show the path leading to the true solution.  Y10K dates MUST NOT
  330.    use this format.  They MUST use the format in the next section.
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338. Glassman, et. al.            Informational                      [Page 6]
  339.  
  340. RFC 2550                    Y10K and Beyond                 1 April 1999
  341.  
  342.  
  343. 3.4.2 Space Efficient Approach for Y10**30 Problem
  344.  
  345.    The solution in 3.4.1 is not a space efficient format for giving the
  346.    number of digits in the year.  The length of the prefix grows
  347.    linearly in the length of the year (which, itself, grows
  348.    logarithmically over time).  Therefore, Y10K format dates use an
  349.    improved, more compact encoding of the number of digits in the year.
  350.  
  351. 3.4.2.1 Years 10 ** 30 to 10 ** 56
  352.  
  353.    As in 3.4.1, a single '^' and letter precede the year.
  354.  
  355. 3.4.2.2 Years 10 ** 56 to 10 ** 732
  356.  
  357.    The year is preceded by two carets ("^^") and two letters.  The
  358.    letters create a two digit, base 26 number which is the number of
  359.    digits in the year minus 57.  So, the year
  360.    "^Z99999999999999999999999999999999999999999999999999999999" is
  361.    followed by the year
  362.    "^^AA100000000000000000000000000000000000000000000000000000000".  The
  363.    last representable year with two carets is the year (10 ** 732) - 1
  364.    and is "^^ZZ999..999" (i.e. two carets and two Z's, followed by 732
  365.    consecutive 9's).
  366.  
  367.    The formula for the number of digits in the year is, based on the two
  368.    digit prefix is:
  369.  
  370.     26 * (ASCII(<prefix letter1>) - ASCII('A')) +
  371.           ASCII(<prefix letter2>) - ASCII('A') + 57
  372.  
  373. 3.4.2.3 Years 10 ** 732 to 10 ** 18308
  374.  
  375.    The next block of years has the number of digits given by three
  376.    carets ("^^^") followed by three letters forming a three-digit, base
  377.    26 number.  The number of digits in the year is given by the formula:
  378.  
  379.     676 * (ASCII(<prefix letter1>) - ASCII('A')) +
  380.      26 * (ASCII(<prefix letter2>) - ASCII('A')) +
  381.            ASCII(<prefix letter3>) - ASCII('A') + 733
  382.  
  383. 3.4.2.4 General Format for Y10K Dates
  384.  
  385.    In general, if there is at least one letter in a Y10K year, the
  386.    number of the digits in the year portion of the date is given by the
  387.    formula:
  388.  
  389.        base26(fib(n) letters) + y10k(n)
  390.  
  391.  
  392.  
  393.  
  394. Glassman, et. al.            Informational                      [Page 7]
  395.  
  396. RFC 2550                    Y10K and Beyond                 1 April 1999
  397.  
  398.  
  399.    Where "n" is the number of leading carets and the fig, base26 and
  400.    y10k functions are defined with the following recurrence relations:
  401.  
  402.       fib(n) is the standard Fibonacci sequence with:
  403.  
  404.       fib(0) = 1
  405.  
  406.       fib(1) = 1
  407.  
  408.       fib(n+2) = fib(n) + fib(n+1)
  409.  
  410.       base26(m letters) is the base 26 number represented by m letters
  411.       A-Z:
  412.  
  413.       base26(letter) =  ASCII(<letter>) - ASCII('A')
  414.       base26(string letter) = 26 * base26(string) + base26(letter)
  415.  
  416.       y10k(n) is the necessary fudge factor to align the sequences
  417.  
  418.       properly:
  419.  
  420.       y10k(0) = 5
  421.       y10k(n+1) = 26 ** fib(n) + y10k(n)
  422.  
  423.    If the year does not have at least one letter in the year, then the
  424.    number of digits in the year is:
  425.  
  426.        4
  427.  
  428.    This year format is space-efficient.  The length of the prefix giving
  429.    number of digits in the year only grows logarithmically with the
  430.    number of digits in the year.  And, the number of carets preceding
  431.    the prefix only grows logarithmically with the number of digits in
  432.    the prefix.
  433.  
  434. 3.5 B.C.E. (Before Common Era) Years
  435.  
  436.    Now that have a format for all of the years in the future, we'll take
  437.    on the "negative" years.  A negative year is represented in "Y10K-
  438.    complement" form.  A Y10K-complement year is computed as follows:
  439.  
  440.     1) Calculate the non-negative Y10K year string as in 3.4.2.4.
  441.     2) Replace all letters by their base 26 complement.  I.E. A -> Z, B
  442.        -> Y, ... Z -> A.
  443.     3) Replace all digits in the year portion of the date by their base
  444.        10 complement.  I.E. 0 -> 9, 1 -> 8, ... 9 -> 0.
  445.     4) Replace carets by exclamation points ('!').
  446.     5) Four-digit years are pre-pended with a slash ('/')
  447.  
  448.  
  449.  
  450. Glassman, et. al.            Informational                      [Page 8]
  451.  
  452. RFC 2550                    Y10K and Beyond                 1 April 1999
  453.  
  454.  
  455.     6) Years that don't now begin with an exclamation point or slash are
  456.        pre-pended with a star ('*').  (This rule covers the negative 5-
  457.        31 digit years).
  458.  
  459.    For example, the year 1 BCE is represented by "/9998".  The
  460.    conversion is accomplished by applying rules:
  461.  
  462.     1) Calculate the non-negative Y10K year ("1" -> "0001")
  463.     2) Complement the digits ("0001" -> "9998")
  464.     3) Four-digit numbers get a leading slash.
  465.  
  466.    The earliest four-digit BCE year (9999 BCE) becomes "/0000" and the
  467.    year before that (10000 BCE) becomes "*Z89999".  The earliest 5-digit
  468.    BCE year (99999 BCE) is "*Z00000".  And the year before that (100000
  469.    BCE) is "*Y899999".  And so on.
  470.  
  471.    These rules give the desired sort order for BCE dates.  For example,
  472.    the following dates get translated and sorted as:
  473.      Jun 6, 200 BCE            /97990606
  474.      199 BCE                   /9800
  475.      Jan 1, 199 BCE            /98000101
  476.  
  477. 3.6 Restrictions on Y10K Dates
  478.  
  479.    There are no restrictions on legal values for Y10K dates.  Y10K
  480.    compliant programs MUST accept any syntactically legal Y10K date as a
  481.    valid date.  A '0' can be appended to the end of any Y10K date,
  482.    yielding an equivalent date that sorts immediately after the original
  483.    date and represents the instant after the original date.
  484.  
  485.    The following are all valid representations (in sorted order) of the
  486.    first instant of A10000:
  487.  
  488.      A1
  489.      A10000
  490.      A1000001
  491.      A100000101000000
  492.      A1000001010000000000000000000000
  493.  
  494.    Similarly, the following are all valid Y10K dates (in sorted order)
  495.    for the time after the last instant of the A99999 and before the
  496.    first instant of B100000:
  497.  
  498.      A999991231250000
  499.      A999991232
  500.      A999992
  501.      A9999999999
  502.      A99999999990000000000000
  503.  
  504.  
  505.  
  506. Glassman, et. al.            Informational                      [Page 9]
  507.  
  508. RFC 2550                    Y10K and Beyond                 1 April 1999
  509.  
  510.  
  511. 4 ABNF
  512.  
  513.    The following ABNF [Crocker] gives the formal syntax for Y10K years.
  514.  
  515.    The initial characters definitions are given in their lexical
  516.    collation (ASCII) order.
  517.  
  518.    exclamation = '!'
  519.    star        = '*'
  520.    slash       = '/'
  521.    digit       =  0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
  522.    letter      =  A | B | C | D | E | F | G | H | I | J | K | L | M |
  523.  
  524.                    N | O | P | Q | R | S | T | U | V | W | X | Y | Z
  525.    caret       = '^'
  526.  
  527.  
  528.    year     = [*(caret | exclamation) | star | slash ] [ *letter ]
  529.              *digit
  530.    month    = 2digit
  531.    day      = 2digit
  532.    hour     = 2digit
  533.    minute   = 2digit
  534.    second   = 2digit
  535.    fraction = *digit
  536.    date     = year [ month [ day [ hour [ minute [ second [ fraction
  537.              ]]]]]]
  538.  
  539. 5 Open Issues
  540.  
  541.    There are a number date comparison problems that are beyond the scope
  542.    of this specification.
  543.  
  544.    1) Dates from different calendar systems can not be directly
  545.       compared.  For instance, dates from the Aztec, Bhuddist, Jewish,
  546.       Muslim, and Hittite calendars must be converted to a common
  547.       calendar before comparisons are possible.
  548.  
  549.    2) Future re-numberings of years are not covered.  If, and when, a
  550.       new "Year 0" occurs and comes into general use, old dates will
  551.       have to be adjusted.
  552.  
  553.    3) Continued existence of Earth-centric time periods (year, day,
  554.       etc.) are problematical past the up-coming destruction of the
  555.       solar system (5-10 billion years or so).  The use of atomic-time
  556.       helps some since leap seconds are no longer an issue.
  557.  
  558.  
  559.  
  560.  
  561.  
  562. Glassman, et. al.            Informational                     [Page 10]
  563.  
  564. RFC 2550                    Y10K and Beyond                 1 April 1999
  565.  
  566.  
  567.    4) Future standards and methods of synchronization for inter-
  568.       planetary and inter-galactic time have not been agreed to.
  569.  
  570.    5) Survivability of dates past the end of the universe is uncertain.
  571.  
  572. 6 Affected Standards
  573.  
  574.    A number of standards currently and RFCs use 4-digit years and are
  575.    affected by this proposal:
  576.  
  577.      rfc2459: Internet X.509 Public Key Infrastructure
  578.               Certificate and CRL Profile
  579.      rfc2326: Real Time Streaming Protocol (RTSP)
  580.      rfc2311: ODETTE File Transfer Protocol
  581.      rfc2280: Routing Policy Specification Language (RPSL)
  582.      rfc2259: Simple Nomenclator Query Protocol (SNQP)
  583.      rfc2244: ACAP -- Application Configuration Access Protocol
  584.      rfc2167: Referral Whois (RWhois) Protocol V1.5
  585.      rfc2065: Domain Name System Security Extensions
  586.      rfc2060: Internet Message Access Protocol - Version 4rev1
  587.      rfc1922: Chinese Character Encoding for Internet Messages
  588.      rfc1912: Common DNS Operational and Configuration Errors
  589.      rfc1903: Textual Conventions for Version 2 of the
  590.               Simple Network Management Protocol (SNMPv2)
  591.      rfc1521: MIME (Multipurpose Internet Mail Extensions) Part One:
  592.  
  593.      rfc1123: Requirements for Internet hosts - application and support
  594.  
  595.    The following standards internally represent years as 16-bit numbers
  596.    (0..65536) and are affected by this proposal:
  597.  
  598.      rfc2021: Remote Network Monitoring Management Information Base
  599.               Version 2 using SMIv2
  600.      rfc1514: Host Resources MIB
  601.  
  602.    The following ISO standard is affected:
  603.      ISO8601: International Date Format
  604.  
  605. 8 Security Considerations
  606.  
  607.    Y10K dates will improve the security of all programs where they are
  608.    used.  Many errors in programs have been tracked to overflow while
  609.    parsing illegal input.  Programs allocating fixed size storage for
  610.    dates will exhibit errors when presented with larger dates.  These
  611.    errors can be exploited by wily hackers to compromise the security of
  612.    systems running these programs.  Since Y10K dates are arbitrary
  613.    length strings, there is no way to make them overflow.
  614.  
  615.  
  616.  
  617.  
  618. Glassman, et. al.            Informational                     [Page 11]
  619.  
  620. RFC 2550                    Y10K and Beyond                 1 April 1999
  621.  
  622.  
  623.    In addition, positive Y10K dates are easy to compare and less error-
  624.    prone for humans.  It is easier to compare the three projected end of
  625.    the universe dates - "H100000000000", "I1000000000000" and
  626.    "K100000000000000" - by looking at the leading letter than by
  627.    counting the 0's.  This will reduce inadvertent errors by people.
  628.    This advantage will become more noticeable when large dates are more
  629.    common.
  630.  
  631.    Unfortunately, negative Y10K dates are a bit more difficult to
  632.    decipher.  However, by comparing the current age of the universe to
  633.    its projected end, it is obvious that there will be many more
  634.    positive dates than negative dates.  And, while the number of
  635.    negative dates for human history is currently greater than the number
  636.    of positive dates, the number of negative dates is fixed and the
  637.    number of positive dates is unbounded.
  638.  
  639. 9 Conclusion
  640.  
  641.    It is not too early to aggressively pursue solutions for the Y10K
  642.    problem.  This specification presents a simple, elegant, and
  643.    efficient solution to this problem.
  644.  
  645. 10 References
  646.  
  647.    [Crocker]   Crocker, D. and P. Overell, "Augmented BNF for Syntax
  648.                Specifications: ABNF", RFC 2234, November 1997.
  649.  
  650.    [Drake]     Review for the Drake Equation
  651.                http://www.umsl.edu/~bwilking/assign/drake.html
  652.  
  653.    [Microsoft] SNMP SysUpTime Counter Resets After 49.7 Days
  654.                http://support.microsoft.com/support/kb/articles/Q169/
  655.                8/47.asp
  656.  
  657.    [Mike]      Y1K http://lonestar.texas.net/~mdlvas/y1k.htm
  658.  
  659.    [Nigel]     Nigel's (en)lighening tour of Thermodynamics for
  660.                Economists ;-) http://www.santafe.edu/~nigel/thermo-
  661.                primer.html
  662.  
  663.    [NRAO]      Astronomical Times
  664.                http://sadira.gb.nrao.edu/~rfisher/Ephemerides/times.html
  665.  
  666.    [RFC]       Here are all the online RFCs. Note: this is a LONG menu.
  667.                http://info.internet.isi.edu/1s/in-notes/rfc/files
  668.  
  669.    [UNIX]      Year 2000 Issues http://www.rdrop.com/users/caf/y2k.html
  670.  
  671.  
  672.  
  673.  
  674. Glassman, et. al.            Informational                     [Page 12]
  675.  
  676. RFC 2550                    Y10K and Beyond                 1 April 1999
  677.  
  678.  
  679.    [Wilborne]  PktCDateLig
  680.                http://www3.gamewood.net/mew3/pilot/pocketc/pktcdate/
  681.                index.html
  682.  
  683.    [YUCK]      Y10K Unlimited Consulting Knowledgebase
  684.                http://www.loyd.net/y10k/index.html
  685.  
  686.    [Zebu]      The Search for H0
  687.                http://zebu.uoregon.edu/1997/ph410/l6.html
  688.  
  689. 11 Authors' Addresses
  690.  
  691.    Steve Glassman
  692.    Compaq Systems Research Center
  693.    130 Lytton Avenue
  694.    Palo Alto, CA 94301 USA
  695.  
  696.    Phone: +1 650-853-2166
  697.    EMail: steveg@pa.dec.com
  698.  
  699.  
  700.    Mark Manasse
  701.    Compaq Systems Research Center
  702.    130 Lytton Avenue
  703.    Palo Alto, CA 94301 USA
  704.  
  705.    Phone: +1 650-853-2221
  706.    EMail: msm@pa.dec.com
  707.  
  708.  
  709.    Jeff Mogul
  710.    Compaq Western Resarch Lab
  711.    250 University Avenue
  712.    Palo Alto, CA 94301 USA
  713.  
  714.    Phone: +1 650-617-3300
  715.    EMail: mogul@pa.dec.com
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730. Glassman, et. al.            Informational                     [Page 13]
  731.  
  732. RFC 2550                    Y10K and Beyond                 1 April 1999
  733.  
  734.  
  735. 12.  Full Copyright Statement
  736.  
  737.    Copyright (C) The Internet Society (1999).  All Rights Reserved.
  738.  
  739.    This document and translations of it may be copied and furnished to
  740.    others, and derivative works that comment on or otherwise explain it
  741.    or assist in its implementation may be prepared, copied, published
  742.    and distributed, in whole or in part, without restriction of any
  743.    kind, provided that the above copyright notice and this paragraph are
  744.    included on all such copies and derivative works.  However, this
  745.    document itself may not be modified in any way, such as by removing
  746.    the copyright notice or references to the Internet Society or other
  747.    Internet organizations, except as needed for the purpose of
  748.    developing Internet standards in which case the procedures for
  749.    copyrights defined in the Internet Standards process must be
  750.    followed, or as required to translate it into languages other than
  751.    English.
  752.  
  753.    The limited permissions granted above are perpetual and will not be
  754.    revoked by the Internet Society or its successors or assigns.
  755.  
  756.    This document and the information contained herein is provided on an
  757.    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
  758.    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
  759.    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
  760.    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
  761.    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786. Glassman, et. al.            Informational                     [Page 14]
  787.  
  788.