home *** CD-ROM | disk | FTP | other *** search
/ Handbook of Infosec Terms 2.0 / Handbook_of_Infosec_Terms_Version_2.0_ISSO.iso / text / rfcs / rfc1025.txt < prev    next >
Text File  |  1996-05-07  |  12KB  |  230 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                          J. Postel Request for Comments: 1025                                           ISI                                                           September 1987 
  8.  
  9.                            TCP AND IP BAKE OFF 
  10.  
  11.  Status of This Memo 
  12.  
  13.    This memo describes some of the procedures, scoring, and tests used    in the TCP and IP bake offs held in the early development of these    protocols.  These procedures and tests may still be of use in testing    newly implemented TCP and IP modules.  Distribution of this memo is    unlimited. 
  14.  
  15. Introduction 
  16.  
  17.    In the early days of the development of TCP and IP, when there were    very few implementations and the specifications were still evolving,    the only way to determine if an implementation was "correct" was to    test it against other implementations and argue that the results    showed your own implementation to have done the right thing.  These    tests and discussions could, in those early days, as likely change    the specification as change the implementation. 
  18.  
  19.    There were a few times when this testing was focused, bringing    together all known implementations and running through a set of tests    in hopes of demonstrating the N squared connectivity and correct    implementation of the various tricky cases.  These events were called    "Bake Offs". 
  20.  
  21.    An early version of the list of tests included here appears in IEN-69    of October 1978.  A demonstration of four TCP implementations was    held at the Defense Communication Engineering Center in Reston,    Virginia on 4 December 1978, and reported in IEN-70 of December 1978.    A bake off of six implementations was held 27-28 January 1979 at    USC-Information Sciences Institute in Marina del Rey, California and    reported in IEN-77 of February 1979.  And a distributed bake off was    held in April 1980 over the network and reported in IEN-145 of May    1980. 
  22.  
  23.    The following section reproduces (with very slight editing) the    procedure, tests, and scoring of the April 1980 Bake Off. 
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31. Postel                                                          [Page 1] 
  32.  RFC 1025                  TCP and IP Bake Off             September 1987 
  33.  
  34.  Procedure 
  35.  
  36.    This is the procedure for the TCP and IP Bake Off.  Each implementor    of a TCP and IP is to perform the following tests and to report the    results.  In general, this is done by using a test program or user    Telnet program to open connections to your own or other TCP    implementations. 
  37.  
  38.    Some test are made more interesting by the use of a "flakeway".  A    flakeway is a purposely flakey gateway.  It should have control    parameters that can be adjusted while it is running to specify a    percentage of datagrams to be dropped, a percentage of datagrams to    be corrupted and passed on, and a percentage of datagrams to be    reordered so that they arrive in a different order than sent. 
  39.  
  40.    Many of the following apply for each distinct TCP contacted (for    example, in the Middleweight Division there is a possibility of 20    points for each other TCP in the Bake Off). 
  41.  
  42.    Note Bene: Checksums must be enforced.  No points will be awarded if    the checksum test is disabled. 
  43.  
  44.       Featherweight Division 
  45.  
  46.          1 point for talking to yourself (opening a connection). 
  47.  
  48.          1 point for saying something to yourself (sending and receiving          data). 
  49.  
  50.          1 point for gracefully ending the conversation (closing the          connection without crashing). 
  51.  
  52.          2 points for repeating the above without reinitializing the          TCP. 
  53.  
  54.          5 points for a complete conversation via the testing gateway. 
  55.  
  56.       Middleweight Division 
  57.  
  58.          2 points for talking to someone else (opening a connection). 
  59.  
  60.          2 points for saying something to someone else (sending and          receiving data). 
  61.  
  62.          2 points for gracefully ending the conversation (closing the          connection without crashing). 
  63.  
  64.  
  65.  
  66.  
  67.  
  68. Postel                                                          [Page 2] 
  69.  RFC 1025                  TCP and IP Bake Off             September 1987 
  70.  
  71.           4 points for repeating the above without reinitializing the          TCP. 
  72.  
  73.          10 points for a complete conversation via the testing gateway. 
  74.  
  75.       Heavyweight Division 
  76.  
  77.          10 points for being able to talk to more than one other TCP at          the same time (multiple connections open and active          simultaneously with different TCPs). 
  78.  
  79.          10 points for correctly handling urgent data. 
  80.  
  81.          10 points for correctly handling sequence number wraparound. 
  82.  
  83.          10 points for correctly being able to process a "Kamikaze"          packet (AKA nastygram, christmas tree packet, lamp test          segment, et al.).  That is, correctly handle a segment with the          maximum combination of features at once (e.g., a SYN URG PUSH          FIN segment with options and data). 
  84.  
  85.          30 points for KOing your opponent with legal blows.  (That is,          operate a connection until one TCP or the other crashes, the          surviving TCP has KOed the other.  Legal blows are segments          that meet the requirements of the specification.) 
  86.  
  87.          20 points for KOing your opponent with dirty blows.  (Dirty          blows are segments that violate the requirements of the          specification.) 
  88.  
  89.          10 points for showing your opponents checksum test is faulty or          disabled. 
  90.  
  91.       Host & Gateway IP Division 
  92.  
  93.          25 points for doing fragmentation and reassembly. 
  94.  
  95.          15 points for doing loose source route option. 
  96.  
  97.          15 points for doing strict source route option. 
  98.  
  99.          10 points for doing return route option. 
  100.  
  101.          10 points for using source quench messages. 
  102.  
  103.          10 points for using routing advice messages. 
  104.  
  105.          5 points for doing something with the type of service. 
  106.  
  107.  
  108.  
  109. Postel                                                          [Page 3] 
  110.  RFC 1025                  TCP and IP Bake Off             September 1987 
  111.  
  112.           5 points for doing something with the security option. 
  113.  
  114.          5 points for doing something with the timestamp option. 
  115.  
  116.          5 points for showing that a gateway forwards datagrams without          decreasing the time to live (showing a gateway is faulty). 
  117.  
  118.          5 points for showing that a gateway forwards datagrams with the          time to live equal zero (showing a gateway is faulty). 
  119.  
  120.          10 points for showing that a gateway or hosts checksum test is          faulty or disabled (showing a gateway is faulty). 
  121.  
  122.       Bonus Points 
  123.  
  124.          10 points for the best excuse. 
  125.  
  126.          20 points for the fewest excuses. 
  127.  
  128.          30 points for the longest conversation. 
  129.  
  130.          40 points for the most simultaneous connections. 
  131.  
  132.          50 points for the most simultaneous connections with distinct          TCPs. 
  133.  
  134.    Tests 
  135.  
  136.       The following tests have been identified for checking the       capabilities of a TCP implementation.  These may be useful in       attempting to KO an opponent. 
  137.  
  138.          1.  Single connection.  Open & close a single connection many              times. 
  139.  
  140.          2.  Multi connections.  Open several connections              simultaneously.  Two connections to the same socket              (i.e., a-b and a-c) check proper separation of data. 
  141.  
  142.          3.  Half Open Connection.  Open a connection, crash local TCP              and attempt to open same connection again. 
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  Postel                                                          [Page 4] 
  153.  RFC 1025                  TCP and IP Bake Off             September 1987 
  154.  
  155.           4.  Piggy-back Loop.  Open connections via Telnet. 
  156.  
  157.          user telnet--->TCP--->IP--->net--->IP--->TCP--->server telnet                                                                |                                                                V          server telnet<---TCP<---IP<---net<---IP<---TCP<---user telnet               |               V          user telnet--->... 
  158.  
  159.          5.  Maximum connections.  Open connections between a pair of              TCP until refused or worse. 
  160.  
  161.          6.  Refused connection.  Open a connection to a non-accepting              socket, does it get refused? 
  162.  
  163.          7.  Zero Window.  Try to send data to a TCP that is presenting              a zero window. 
  164.  
  165.          8.  Fire Hose.  Make many connections to data source ports, or              connections to a data sink and send as fast as you can. 
  166.  
  167.          9.  Urgent Test.  Try to send data to a user program that only              receives data when in urgent mode. 
  168.  
  169.          10. Kamikazi Segment.  Send and receive nastygrams.  A              nastygram is a segment with SYN, EOL, URG, and FIN on and              carrying one octet of data. 
  170.  
  171.          11. Sequence Wraparound.  Test proper functioning when sequence              numbers (a) pass 2**31 (i.e., go from plus to "minus") and              (b) pass 2**32 (i.e., go from 2**32-1 to 0). 
  172.  
  173.          12. Buffer size.  With buffer size not equal to one, send data              in segments of various sizes, use urgent occasionally. 
  174.  
  175.          13. Send a nastygram into a half open connection when the              sequence number is about to wrap around. 
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189. Postel                                                          [Page 5] 
  190.  RFC 1025                  TCP and IP Bake Off             September 1987 
  191.  
  192.  New Ideas 
  193.  
  194.    The above tests check for basic operation and handling of some of the    tricky cases.  They do not consider performance in any way, or check    to see if some of the recently developed ideas have been implemented. 
  195.  
  196.       New Mechanisms 
  197.  
  198.          1.  The John Nagel Procedures (RFC-896). 
  199.  
  200.          2.  The Van Jacobson Procedures (slow start, RTT measurements,              etc). 
  201.  
  202.          3.  The SQuID Procedures (RFC-1016). 
  203.  
  204.       Performance Tests 
  205.  
  206.          Performance tests are difficult to specify because the results          depend so much on the state of the environment of the test.          Here are a few possibilities: 
  207.  
  208.          1.  FTP Throughput:  Send a 1 megabyte file to a locally nearby              machine on an Ethernet measuring the elapsed time. 
  209.  
  210.          2.  FTP Throughput:  Send a 1 megabyte file to a locally nearby              machine on an ARPANET measuring the elapsed time. 
  211.  
  212.          3.  NETBLT Throughput:  Send a 1 megabyte file to a locally              nearby machine on an Ethernet measuring the elapsed time. 
  213.  
  214.          4.  NETBLT Throughput:  Send a 1 megabyte file to a locally              nearby machine on an ARPANET measuring the elapsed time. 
  215.  
  216.          5.  Character Test:  Use a test program to send a character via              TCP to the Echo Server (RFC-862), time the round trip (from              the time the character is sent until the echo is returned              to the test program). 
  217.  
  218. Appendix 
  219.  
  220.    For History Buffs Only: 
  221.  
  222.       The following item was in the original 1980 tests, but has been       moved to this appendix since it no longer applies. 
  223.  
  224.          10 points for correctly handling rubber baby buffer bumpers in          both directions (End of Letter sequence number adjustments). 
  225.  
  226.  
  227.  
  228.  Postel                                                          [Page 6] 
  229.  
  230.