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

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                 W. Simpson, Editor Request for Comments: 1570                                    Daydreamer Updates: 1548                                               January 1994 Category: Standards Track 
  8.  
  9.                             PPP LCP Extensions 
  10.  
  11. Status of this Memo 
  12.  
  13.    This document specifies an Internet standards track protocol for the    Internet community, and requests discussion and suggestions for    improvements.  Please refer to the current edition of the "Internet    Official Protocol Standards" (STD 1) for the standardization state    and status of this protocol.  Distribution of this memo is unlimited. 
  14.  
  15. Abstract 
  16.  
  17.    The Point-to-Point Protocol (PPP) [1] provides a standard method for    transporting multi-protocol datagrams over point-to-point links.  PPP    defines an extensible Link Control Protocol (LCP) for establishing,    configuring, and testing the data-link connection.  This document    defines several additional LCP features which have been suggested    over the past few years. 
  18.  
  19.    This document is the product of the Point-to-Point Protocol Working    Group of the Internet Engineering Task Force (IETF).  Comments should    be submitted to the ietf-ppp@ucdavis.edu mailing list. 
  20.  
  21. Table of Contents 
  22.  
  23.      1.     Additional LCP Packets ................................    1         1.1       Identification ..................................    1         1.2       Time-Remaining ..................................    3      2.     Additional LCP Configuration Options ..................    6         2.1       FCS-Alternatives ................................    6            2.1.1  LCP considerations ..............................    7            2.1.2  Null FCS ........................................    8         2.2       Self-Describing-Padding .........................    9         2.3       Callback ........................................   11         2.4       Compound-Frames .................................   12            2.4.1  LCP considerations ..............................   14      APPENDICES ...................................................   15      A.     Fast Frame Check Sequence (FCS) Implementation ........   15         A.1       32-bit FCS Computation Method ...................   15      SECURITY CONSIDERATIONS ......................................   17      REFERENCES ...................................................   17      ACKNOWLEDGEMENTS .............................................   18      CHAIR'S ADDRESS ..............................................   18      EDITOR'S ADDRESS .............................................   18 
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  Simpson                                                         [Page i] 
  32. RFC 1570                   PPP LCP extensions               January 1994 
  33.  
  34.  1.  Additional LCP Packets 
  35.  
  36.    The Packet format and basic facilities are already defined for LCP    [1]. 
  37.  
  38.    Up-to-date values of the LCP Code field are specified in the most    recent "Assigned Numbers" RFC [2].  This specification concerns the    following values: 
  39.  
  40.       12      Identification       13      Time-Remaining 
  41.  
  42.  
  43.  
  44.  1.1.  Identification 
  45.  
  46.    Description 
  47.  
  48.       This Code provides a method for an implementation to identify       itself to its peer.  This Code might be used for many diverse       purposes, such as link troubleshooting, license enforcement, etc. 
  49.  
  50.       Identification is a Link Maintenance packet.  Identification       packets MAY be sent at any time, including before LCP has reached       the Opened state. 
  51.  
  52.       The sender transmits a LCP packet with the Code field set to 12       (Identification), the Identifier field set, the local Magic-Number       (if any) inserted, and the Message field filled with any desired       data, but not exceeding the default MRU minus eight. 
  53.  
  54.       Receipt of an Identification packet causes the RXR or RUC event.       There is no response to the Identification packet. 
  55.  
  56.       Receipt of a Code-Reject for the Identification packet SHOULD       generate the RXJ+ (permitted) event. 
  57.  
  58.       Rationale: 
  59.  
  60.          This feature is defined as part of LCP, rather than as a          separate PPP Protocol, in order that its benefits may be          available during the earliest possible stage of the Link          Establishment phase.  It allows an operator to learn the          identification of the peer even when negotiation is not          converging.  Non-LCP packets cannot be sent during the Link          Establishment phase. 
  61.  
  62.  
  63.  
  64.  Simpson                                                         [Page 1] 
  65. RFC 1570                   PPP LCP extensions               January 1994 
  66.  
  67.           This feature is defined as a separate LCP Code, rather than a          Configuration-Option, so that the peer need not include it with          other items in configuration packet exchanges, and handle          "corrected" values or "rejection", since its generation is both          rare and in one direction.  It is recommended that          Identification packets be sent whenever a Configure-Reject is          sent or received, as a final message when negotiation fails to          converge, and when LCP reaches the Opened state. 
  68.  
  69.    A summary of the Identification packet format is shown below.  The    fields are transmitted from left to right. 
  70.  
  71.     0                   1                   2                   3     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |     Code      |  Identifier   |            Length             |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |                         Magic-Number                          |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |    Message ...    +-+-+-+-+-+-+-+-+ 
  72.  
  73.     Code 
  74.  
  75.       12 for Identification 
  76.  
  77.    Identifier 
  78.  
  79.       The Identifier field MUST be changed for each Identification sent. 
  80.  
  81.    Length 
  82.  
  83.       >= 8 
  84.  
  85.    Magic-Number 
  86.  
  87.       The Magic-Number field is four octets and aids in detecting links       which are in the looped-back condition.  Until the Magic-Number       Configuration Option has been successfully negotiated, the Magic-       Number MUST be transmitted as zero.  See the Magic-Number       Configuration Option for further explanation. 
  88.  
  89.    Message 
  90.  
  91.       The Message field is zero or more octets, and its contents are       implementation dependent.  It is intended to be human readable,       and MUST NOT affect operation of the protocol.  It is recommended 
  92.  
  93.  
  94.  
  95. Simpson                                                         [Page 2] 
  96. RFC 1570                   PPP LCP extensions               January 1994 
  97.  
  98.        that the message contain displayable ASCII characters 32 through       126 decimal.  Mechanisms for extension to other character sets are       the topic of future research.  The size is determined from the       Length field. 
  99.  
  100.       Implementation Note: 
  101.  
  102.          The Message will usually contain such things as the sender's          hardware type, PPP software revision level, and PPP product          serial number, MIB information such as link speed and interface          name, and any other information that the sender thinks might be          useful in debugging connections.  The format is likely to be          different for each implementor, so that those doing serial          number tracking can validate their numbers.  A robust          implementation SHOULD treat the Message as displayable text,          and SHOULD be able to receive and display a very long Message. 
  103.  
  104.  
  105.  
  106. 1.2.  Time-Remaining 
  107.  
  108.    Description 
  109.  
  110.       This Code provides a mechanism for notifying the peer of the time       remaining in this session. 
  111.  
  112.       The nature of this information is advisory only.  It is intended       that only one side of the connection will send this packet       (generally a "network access server").  The session is actually       concluded by the Terminate-Request packet. 
  113.  
  114.       Time-Remaining is a Link Maintenance packet.  Time-Remaining       packets may only be sent in the LCP Opened state. 
  115.  
  116.       The sender transmits a LCP packet with the Code field set to 13       (Time-Remaining), the Identifier field set, the local Magic-Number       (if any) inserted, and the Message field filled with any desired       data, but not exceeding the peer's established MRU minus twelve. 
  117.  
  118.       Receipt of an Time-Remaining packet causes the RXR or RUC event.       There is no response to the Time-Remaining packet. 
  119.  
  120.       Receipt of a Code-Reject for the Time-Remaining packet SHOULD       generate the RXJ+ (permitted) event. 
  121.  
  122.       Rationale: 
  123.  
  124.          This notification is defined as a separate LCP Code, rather 
  125.  
  126.  
  127.  
  128. Simpson                                                         [Page 3] 
  129. RFC 1570                   PPP LCP extensions               January 1994 
  130.  
  131.           than a Configuration-Option, in order that changes and warning          messages may occur dynamically during the session, and that the          information might be determined after Authentication has          occurred.  Typically, this packet is sent when the link enters          Network-Layer Protocol phase, and at regular intervals          throughout the session, particularly near the end of the          session. 
  132.  
  133.    A summary of the Time-Remaining packet format is shown below.  The    fields are transmitted from left to right. 
  134.  
  135.     0                   1                   2                   3     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |     Code      |  Identifier   |            Length             |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |                         Magic-Number                          |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |                       Seconds-Remaining                       |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |    Message ...    +-+-+-+-+-+-+-+-+ 
  136.  
  137.     Code 
  138.  
  139.       13 for Time-Remaining 
  140.  
  141.    Identifier 
  142.  
  143.       The Identifier field MUST be changed for each Time-Remaining sent. 
  144.  
  145.    Length 
  146.  
  147.       >= 12 
  148.  
  149.    Magic-Number 
  150.  
  151.       The Magic-Number field is four octets and aids in detecting links       which are in the looped-back condition.  Until the Magic-Number       Configuration Option has been successfully negotiated, the Magic-       Number MUST be transmitted as zero.  See the Magic-Number       Configuration Option for further explanation. 
  152.  
  153.    Seconds-Remaining 
  154.  
  155.       The Seconds-Remaining field is four octets and indicates the       number of integral seconds remaining in this session.  This 32 bit 
  156.  
  157.  
  158.  
  159. Simpson                                                         [Page 4] 
  160. RFC 1570                   PPP LCP extensions               January 1994 
  161.  
  162.        unsigned value is sent most significant octet first.  A value of       0xffffffff (all ones) represents no timeout, or "forever". 
  163.  
  164.    Message 
  165.  
  166.       The Message field is zero or more octets, and its contents are       implementation dependent.  It is intended to be human readable,       and MUST NOT affect operation of the protocol.  It is recommended       that the message contain displayable ASCII characters 32 through       126 decimal.  Mechanisms for extension to other character sets are       the topic of future research.  The size is determined from the       Length field. 
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206. Simpson                                                         [Page 5] 
  207. RFC 1570                   PPP LCP extensions               January 1994 
  208.  
  209.  2.  Additional LCP Configuration Options 
  210.  
  211.    The Configuration Option format and basic options are already defined    for LCP [1]. 
  212.  
  213.    Up-to-date values of the LCP Option Type field are specified in the    most recent "Assigned Numbers" RFC [2].  This document concerns the    following values: 
  214.  
  215.       9       FCS-Alternatives       10      Self-Describing-Padding       13      Callback       15      Compound-Frames 
  216.  
  217.  
  218.  
  219.  2.1.  FCS-Alternatives 
  220.  
  221.    Description 
  222.  
  223.       This Configuration Option provides a method for an implementation       to specify another FCS format to be sent by the peer, or to       negotiate away the FCS altogether. 
  224.  
  225.       This option is negotiated separately in each direction.  However,       it is not required that an implementation be capable of       concurrently generating a different FCS on each side of the link. 
  226.  
  227.       The negotiated FCS values take effect only during Authentication       and Network-Layer Protocol phases.  Frames sent during any other       phase MUST contain the default FCS. 
  228.  
  229.    A summary of the FCS-Alternatives Configuration Option format is    shown below.  The fields are transmitted from left to right. 
  230.  
  231.     0                   1                   2     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |     Type      |    Length     |    Options    |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
  232.  
  233.     Type 
  234.  
  235.       9 
  236.  
  237.  
  238.  
  239.  
  240.  
  241. Simpson                                                         [Page 6] 
  242. RFC 1570                   PPP LCP extensions               January 1994 
  243.  
  244.     Length 
  245.  
  246.       3 
  247.  
  248.    Options 
  249.  
  250.       This field is one octet, and is comprised of the "logical or" of       the following values: 
  251.  
  252.           1   Null FCS           2   CCITT 16-bit FCS           4   CCITT 32-bit FCS 
  253.  
  254.     Implementation Note: 
  255.  
  256.       For most PPP HDLC framed links, the default FCS is the CCITT 16-       bit FCS.  Some framing techniques and high speed links may use       another format as the default FCS. 
  257.  
  258.  2.1.1.  LCP considerations 
  259.  
  260.    The link can be subject to loss of state, and the LCP can re-    negotiate at any time.  When the LCP begins renegotiation or    termination, it is recommended that the LCP Configure-Request or    Terminate-Request packet be sent with the last negotiated FCS, then    change to the default FCS, and a duplicate LCP packet is sent with    the default FCS.  The Identifier field SHOULD NOT be incremented for    each such duplicate packet. 
  261.  
  262.    On receipt of a LCP Configure-Request or Terminate-Request packet,    the implementation MUST change to the default FCS for both    transmission and reception.  If a Request packet is received which    contains a duplicate Identifier field, a new reply MUST be generated. 
  263.  
  264.    Implementation Notes: 
  265.  
  266.       The need to send two packets is only necessary after the       Alternative-FCS has already been negotiated.  It need not occur       during state transitions when there is a natural indication that       the default FCS is in effect, such as the Down and Up events.  It       is necessary to send two packets in the Ack-Sent and Opened       states, since the peer could mistakenly believe that the link has       Opened. 
  267.  
  268.       It is possible to send a single 48-bit FCS which is a combination       of the 16-bit and 32-bit FCS.  This may be sent instead of sending 
  269.  
  270.  
  271.  
  272. Simpson                                                         [Page 7] 
  273. RFC 1570                   PPP LCP extensions               January 1994 
  274.  
  275.        the two packets described above.  We have not standardized this       procedure because of intellectual property concerns.  If such a       48-bit FCS is used, it MUST only be used for LCP packets. 
  276.  
  277.  2.1.2.  Null FCS 
  278.  
  279.    The Null FCS SHOULD only be used for those network-layer and    transport protocols which have an end-to-end checksum available, such    as TCP/IP, or UDP/IP with the checksum enabled.  That is, the Null    FCS option SHOULD be negotiated together with another non-null FCS    option in a heterogeneous environment. 
  280.  
  281.    When a configuration (LCP or NCP) or authentication packet is sent,    the FCS MUST be included.  When a configuration (LCP or NCP) or    authentication packet is received, the FCS MUST be verified. 
  282.  
  283.    There are several cases to be considered: 
  284.  
  285.    Null FCS alone 
  286.  
  287.       The sender generates the FCS for those frames which require the       FCS before sending the frame. 
  288.  
  289.       When a frame is received, it is not necessary to check the FCS       before demultiplexing.  Any FCS is treated as padding. 
  290.  
  291.       Receipt of an Authentication or Control packet would be discovered       after passing the frame to the demultiplexer.  Verification of the       FCS can easily be accomplished using one of the software       algorithms defined in "PPP in HDLC Framing" [3] (16-bit FCS) and       Appendix A (32-bit FCS). 
  292.  
  293.    Null FCS with another FCS, using software 
  294.  
  295.       This is similar to the above case. 
  296.  
  297.       Those packets which are required to have the FCS (Authentication,       Control, or Network-Protocols lacking a checksum) are checked       using software after demultiplexing.  Packets which fail the FCS       test are discarded as usual. 
  298.  
  299.    Null FCS with another FCS, using hardware 
  300.  
  301.       A flag is passed with the frame, indicating whether or not it has       passed the hardware FCS check.  The incorrect FCS MUST be passed       with the rest of the data.  The frame MUST NOT be discarded until       after demultiplexing, and only those frames that require the FCS 
  302.  
  303.  
  304.  
  305. Simpson                                                         [Page 8] 
  306. RFC 1570                   PPP LCP extensions               January 1994 
  307.  
  308.        are discarded. 
  309.  
  310.    All three FCS forms (Null, 16 and 32) may be used concurrently on    different frames when using software.  That is probably not possible    with most current hardware. 
  311.  
  312.  
  313.  
  314. 2.2.  Self-Describing-Padding 
  315.  
  316.    Description 
  317.  
  318.       This Configuration Option provides a method for an implementation       to indicate to the peer that it understands self-describing pads       when padding is added at the end of the PPP Information field. 
  319.  
  320.       This option is most likely to be used when some protocols, such as       network-layer or compression protocols, are configured which       require detection and removal of any trailing padding.  Such       special protocols are identified in their respective documents. 
  321.  
  322.       If the option is Rejected, the peer MUST NOT add any padding to       the identified special protocols, but MAY add padding to other       protocols. 
  323.  
  324.       If the option is Ack'd, the peer MUST follow the procedures for       adding self-describing pads, but only to the specifically       identified protocols.  The peer is not required to add any padding       to other protocols. 
  325.  
  326.       Implementation Notes: 
  327.  
  328.          This is defined so that the Reject handles either case where          the peer does not generate self-describing pads.  When the peer          never generates padding, it may safely Reject the option.  When          the peer does not understand the option, it also will not          successfully configure a special protocol which requires          elimination of pads. 
  329.  
  330.          While some senders might only be capable of adding padding to          every protocol or not adding padding to any protocol, by design          the receiver need not examine those protocols which do not need          the padding stripped. 
  331.  
  332.          To avoid unnecessary configuration handshakes, an          implementation which generates padding, and has a protocol          configured which requires the padding to be known, SHOULD          include this Option in its Configure-Request, and SHOULD 
  333.  
  334.  
  335.  
  336. Simpson                                                         [Page 9] 
  337. RFC 1570                   PPP LCP extensions               January 1994 
  338.  
  339.           Configure-Nak with this Option when it is not present in the          peer's Request. 
  340.  
  341.       Each octet of self-describing pad contains the index of that       octet.  The first pad octet MUST contain the value one (1), which       indicates the Padding Protocol to the Compound-Frames option.       After removing the FCS, the final pad octet indicates the number       of pad octets to remove.  For example, three pad octets would       contain the values 1, 2, 3. 
  342.  
  343.       The Maximum-Pad-Value (MPV) is also negotiated.  Only the values 1       through MPV are used.  When no padding would otherwise be       required, but the final octet of the PPP Information field       contains the value 1 through MPV, at least one self-describing pad       octet MUST be added to the frame.  If the final octet is greater       than MPV, no additional padding is required. 
  344.  
  345.       Implementation Notes: 
  346.  
  347.          If any of the pad octets contain an incorrect index value, the          entire frame SHOULD be silently discarded.  This is intended to          prevent confusion with the FCS-Alternatives option, but might          not be necessary in robust implementations. 
  348.  
  349.          Since this option is intended to support compression protocols,          the Maximum-Pad-Value is specified to limit the likelihood that          a frame may actually become longer. 
  350.  
  351.    A summary of the Self-Describing-Padding Configuration Option format    is shown below.  The fields are transmitted from left to right. 
  352.  
  353.     0                   1                   2     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |     Type      |    Length     |    Maximum    |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
  354.  
  355.     Type 
  356.  
  357.       10 
  358.  
  359.    Length 
  360.  
  361.       3 
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  Simpson                                                        [Page 10] 
  368. RFC 1570                   PPP LCP extensions               January 1994 
  369.  
  370.     Maximum 
  371.  
  372.       This field specifies the largest number of padding octets which       may be added to the frame.  The value may range from 1 to 255, but       values of 2, 4, or 8 are most likely. 
  373.  
  374.  
  375.  
  376. 2.3.  Callback 
  377.  
  378.    Description 
  379.  
  380.       This Configuration Option provides a method for an implementation       to request a dial-up peer to call back.  This option might be used       for many diverse purposes, such as savings on toll charges. 
  381.  
  382.       When Callback is successfully negotiated, and authentication is       complete, the Authentication phase proceeds directly to the       Termination phase, and the link is disconnected. 
  383.  
  384.       Then, the peer re-establishes the link, without negotiating       Callback. 
  385.  
  386.       Implementation Notes: 
  387.  
  388.          A peer which agrees to this option SHOULD request the          Authentication-Protocol Configuration Option.  The user          information learned during authentication can be used to          determine the user location, or to limit a user to certain          locations, or merely to determine whom to bill for the service. 
  389.  
  390.          Authentication SHOULD be requested in turn by the          implementation when it is called back, if mutual authentication          is desired. 
  391.  
  392.    A summary of the Callback Option format is shown below.  The fields    are transmitted from left to right. 
  393.  
  394.     0                   1                   2                   3     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |     Type      |    Length     |   Operation   |  Message ...    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
  395.  
  396.     Type 
  397.  
  398.       13 
  399.  
  400.  
  401.  
  402. Simpson                                                        [Page 11] 
  403. RFC 1570                   PPP LCP extensions               January 1994 
  404.  
  405.     Length 
  406.  
  407.       >= 3 
  408.  
  409.    Operation 
  410.  
  411.       The Operation field is one octet and indicates the contents of the       Message field. 
  412.  
  413.       0       location is determined by user authentication 
  414.  
  415.       1       Dialing string, the format and contents of which assumes               configuration knowledge of the specific device which is               making the callback. 
  416.  
  417.       2       Location identifier, which may or may not be human               readable, to be used together with the authentication               information for a database lookup to determine the               callback location. 
  418.  
  419.       3       E.164 number. 
  420.  
  421.       4       Distinguished name. 
  422.  
  423.    Message 
  424.  
  425.       The Message field is zero or more octets, and its general contents       are determined by the Operation field.  The actual format of the       information is site or application specific, and a robust       implementation SHOULD support the field as undistinguished octets.       The size is determined from the Length field. 
  426.  
  427.       It is intended that only an authorized user will have correct site       specific information to make use of the Callback.  The       codification of the range of allowed usage of this field is       outside the scope of this specification. 
  428.  
  429.  
  430.  
  431. 2.4.  Compound-Frames 
  432.  
  433.    Description 
  434.  
  435.       This Configuration Option provides a method for an implementation       to send multiple PPP encapsulated packets within the same frame.       This option might be used for many diverse purposes, such as       savings on toll charges. 
  436.  
  437.  
  438.  
  439.  Simpson                                                        [Page 12] 
  440. RFC 1570                   PPP LCP extensions               January 1994 
  441.  
  442.        Only those PPP Protocols which have determinate lengths or       integral length fields may be aggregated into a compound frame. 
  443.  
  444.       When Compound-Frames is successfully negotiated, the sender MAY       add additional packets to the same frame.  Each packet is       immediately followed by another Protocol field, with its attendant       datagram. 
  445.  
  446.       When padding is added to the end of the Information field, the       procedure described in Self-Describing-Padding is used.       Therefore, this option MUST be negotiated together with the Self-       Describing-Padding option. 
  447.  
  448.       If the FCS-Alternatives option has been negotiated, self       describing padding MUST always be added.  That is, the final       packet MUST be followed by a series of octets, the first of which       contains the value one (1). 
  449.  
  450.       On receipt, the first Protocol field is examined, and the packet       is processed as usual.  For those datagrams which have a       determinate length, the remainder of the frame is returned to the       demultiplexor.  Each succeeding Protocol field is processed as a       separate packet.  This processing is complete when a packet is       processed which does not have a determinate length, when the       remainder of the frame is empty, or when the Protocol field is       determined to have a value of one (1). 
  451.  
  452.       The PPP Protocol value of one (1) is reserved as the Padding       Protocol.  Any following octets are removed as padding. 
  453.  
  454.    A summary of the Compound-Frames Option format is shown below.  The    fields are transmitted from left to right. 
  455.  
  456.     0                   1     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |     Type      |    Length     |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
  457.  
  458.     Type 
  459.  
  460.       15 
  461.  
  462.    Length 
  463.  
  464.       2 
  465.  
  466.  
  467.  
  468.  Simpson                                                        [Page 13] 
  469. RFC 1570                   PPP LCP extensions               January 1994 
  470.  
  471.  2.4.1.  LCP considerations 
  472.  
  473.    During initial negotiation, the Compound-Frames option can be used to    minimize the negotiation latency, by reducing the number of frames    exchanged. 
  474.  
  475.    The first LCP Configure-Request packet is sent as usual in a single    frame, including the Self-Describing-Padding and Compound-Frames    options. 
  476.  
  477.    The peer SHOULD respond with a Configure-Ack, followed in a compound    frame by its LCP Configure-Request, and any NCP Configure-Requests    desired. 
  478.  
  479.    Upon receipt, the local implementation SHOULD process the Configure-    Ack as usual.  Since the peer has agreed to send compound frames, the    implementation MUST examine the remainder of the frame for additional    packets.  If the peer also specified the Self-Describing-Padding and    Compound-Frames options in its Configure-Request, the local    implementation SHOULD retain its Configure-Ack, and further NCP    configuration packets SHOULD be added to the return frame. 
  480.  
  481.    Together with the peer's final return frame, the minimum number of    frames to complete configuration is 4. 
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509. Simpson                                                        [Page 14] 
  510. RFC 1570                   PPP LCP extensions               January 1994 
  511.  
  512.  A.  Fast Frame Check Sequence (FCS) Implementation 
  513.  
  514. A.1.  32-bit FCS Computation Method 
  515.  
  516.    The following code provides a table lookup computation for    calculating the 32-bit Frame Check Sequence as data arrives at the    interface. 
  517.  
  518.    /*     * u32 represents an unsigned 32-bit number.  Adjust the typedef for     * your hardware.     */    typedef unsigned long u32; 
  519.  
  520.    static u32 fcstab_32[256] =       {       0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,       0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,       0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,       0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,       0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,       0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,       0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,       0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,       0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,       0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,       0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,       0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,       0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,       0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,       0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,       0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,       0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,       0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,       0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,       0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,       0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,       0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,       0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,       0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,       0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,       0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,       0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,       0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,       0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,       0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,       0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,       0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 
  521.  
  522.  
  523.  
  524. Simpson                                                        [Page 15] 
  525. RFC 1570                   PPP LCP extensions               January 1994 
  526.  
  527.        0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,       0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,       0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,       0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,       0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,       0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,       0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,       0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,       0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,       0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,       0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,       0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,       0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,       0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,       0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,       0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,       0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,       0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,       0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,       0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,       0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,       0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,       0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,       0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,       0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,       0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,       0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,       0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,       0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,       0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,       0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,       0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d       }; 
  528.  
  529.    #define PPPINITFCS32  0xffffffff   /* Initial FCS value */    #define PPPGOODFCS32  0xdebb20e3   /* Good final FCS value */ 
  530.  
  531.    /*     * Calculate a new FCS given the current FCS and the new data.     */    u32 pppfcs32(fcs, cp, len)        register u32 fcs;        register unsigned char *cp;        register int len;        {        ASSERT(sizeof (u32) == 4);        ASSERT(((u32) -1) > 0);        while (len--) 
  532.  
  533.  
  534.  
  535. Simpson                                                        [Page 16] 
  536. RFC 1570                   PPP LCP extensions               January 1994 
  537.  
  538.             fcs = (((fcs) >> 8) ^ fcstab_32[((fcs) ^ (*cp++)) & 0xff]); 
  539.  
  540.        return (fcs);        } 
  541.  
  542.    /*     * How to use the fcs     */    tryfcs32(cp, len)        register unsigned char *cp;        register int len;    {        u32 trialfcs; 
  543.  
  544.        /* add on output */        trialfcs = pppfcs32( PPPINITFCS32, cp, len );        trialfcs ^= 0xffffffff;             /* complement */        cp[len] = (trialfcs & 0x00ff);      /* Least significant byte first */        cp[len+1] = ((trialfcs >>= 8) & 0x00ff);        cp[len+2] = ((trialfcs >>= 8) & 0x00ff);        cp[len+3] = ((trialfcs >> 8) & 0x00ff); 
  545.  
  546.        /* check on input */        trialfcs = pppfcs32( PPPINITFCS32, cp, len + 4 );        if ( trialfcs == PPPGOODFCS32 )            printf("Good FCS\n");    } 
  547.  
  548.  Security Considerations 
  549.  
  550.    Security issues are briefly discussed in sections concerning the    Callback Configuration Option. 
  551.  
  552.  References 
  553.  
  554.    [1]   Simpson, W., Editor, "The Point-to-Point Protocol (PPP)", RFC          1548, Daydreamer, December 1993. 
  555.  
  556.    [2]   Reynolds, J., and J. Postel, "Assigned Numbers", STD 2,           RFC 1340, USC/Information Sciences Institute, July 1992. 
  557.  
  558.    [3]   Simpson, W., Editor, "PPP in HDLC Framing", RFC 1549,           Daydreamer, December 1993. 
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  Simpson                                                        [Page 17] 
  565. RFC 1570                   PPP LCP extensions               January 1994 
  566.  
  567.  Acknowledgments 
  568.  
  569.    The Identification feature was suggested by Bob Sutterfield (Morning    Star Technologies). 
  570.  
  571.    The Time-Remaining feature was suggested by Brad Parker (FCR). 
  572.  
  573.    Some of the original text for FCS-Alternatives was provided by Arthur    Harvey (then of DEC).  The Null FCS was requested by Peter Honeyman    (UMich).  The 32-bit FCS example code was provided by Karl Fox    (Morning Star Technologies).     Self-Describing-Padding was suggested and named by Fred Baker (ACC). 
  574.  
  575.    Compound-Frames was suggested by Keith Sklower (Berkeley). 
  576.  
  577.    Special thanks to Morning Star Technologies for providing computing    resources and network access support for writing this specification. 
  578.  
  579.  Chair's Address 
  580.  
  581.    The working group can be contacted via the current chair: 
  582.  
  583.       Fred Baker       Advanced Computer Communications       315 Bollay Drive       Santa Barbara, California  93117 
  584.  
  585.       EMail: fbaker@acc.com 
  586.  
  587.  Editor's Address 
  588.  
  589.    Questions about this memo can also be directed to: 
  590.  
  591.       William Allen Simpson       Daydreamer       Computer Systems Consulting Services       1384 Fontaine       Madison Heights, Michigan  48071 
  592.  
  593.       EMail: Bill.Simpson@um.cc.umich.edu              bsimpson@MorningStar.com 
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601. Simpson                                                        [Page 18] 
  602.  
  603.  
  604.  
  605.